From 3ea754addf05c497cdb80b42a94bb68844d7310a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 19 Jun 2024 16:19:02 +0000 Subject: [PATCH] deploy: 64a520eca59e2477ff2f5c2fee2c43220e022525 --- 404.html | 4 ++-- .../postcondition-ambiguity/index.html | 4 ++-- .../algorithms-and-correctness/index.html | 4 ++-- .../index.html | 4 ++-- algorithms/category/graphs/index.html | 4 ++-- algorithms/category/hash-tables/index.html | 4 ++-- .../category/paths-in-graphs/index.html | 4 ++-- algorithms/category/recursion/index.html | 4 ++-- .../category/red-black-trees/index.html | 4 ++-- algorithms/graphs/bfs-tree/index.html | 4 ++-- .../graphs/iterative-and-iterators/index.html | 4 ++-- algorithms/hash-tables/breaking/index.html | 4 ++-- .../breaking/mitigations/index.html | 4 ++-- .../hash-tables/breaking/python/index.html | 4 ++-- algorithms/index.html | 6 +++--- algorithms/paths/bf-to-astar/astar/index.html | 4 ++-- algorithms/paths/bf-to-astar/bf/index.html | 4 ++-- .../paths/bf-to-astar/dijkstra/index.html | 4 ++-- algorithms/paths/bf-to-astar/index.html | 4 ++-- algorithms/rb-trees/applications/index.html | 4 ++-- algorithms/rb-trees/rules/index.html | 4 ++-- algorithms/recursion/karel/index.html | 4 ++-- .../recursion/karel/solution/index.html | 4 ++-- .../bottom-up-dp/index.html | 4 ++-- .../pyramid-slide-down/greedy/index.html | 4 ++-- .../recursion/pyramid-slide-down/index.html | 4 ++-- .../pyramid-slide-down/naive/index.html | 4 ++-- .../pyramid-slide-down/top-down-dp/index.html | 4 ++-- algorithms/tags/a-star/index.html | 4 ++-- algorithms/tags/applications/index.html | 4 ++-- algorithms/tags/astar/index.html | 4 ++-- algorithms/tags/backtracking/index.html | 4 ++-- algorithms/tags/balanced-trees/index.html | 4 ++-- algorithms/tags/bellman-ford/index.html | 4 ++-- algorithms/tags/bfs/index.html | 4 ++-- algorithms/tags/bottom-up-dp/index.html | 4 ++-- algorithms/tags/brute-force/index.html | 4 ++-- algorithms/tags/c/index.html | 4 ++-- algorithms/tags/cpp/index.html | 4 ++-- algorithms/tags/csharp/index.html | 4 ++-- algorithms/tags/dijkstra/index.html | 4 ++-- algorithms/tags/dynamic-array/index.html | 4 ++-- .../tags/dynamic-programming/index.html | 4 ++-- algorithms/tags/exponential/index.html | 4 ++-- algorithms/tags/graphs/index.html | 4 ++-- algorithms/tags/greedy/index.html | 4 ++-- algorithms/tags/hash-tables/index.html | 4 ++-- algorithms/tags/index.html | 4 ++-- algorithms/tags/iterative/index.html | 4 ++-- algorithms/tags/iterators/index.html | 4 ++-- algorithms/tags/java/index.html | 4 ++-- algorithms/tags/karel/index.html | 4 ++-- algorithms/tags/postconditions/index.html | 4 ++-- algorithms/tags/python/index.html | 4 ++-- algorithms/tags/recursion/index.html | 4 ++-- algorithms/tags/red-black-trees/index.html | 4 ++-- algorithms/tags/solution/index.html | 4 ++-- algorithms/tags/sorting/index.html | 4 ++-- algorithms/tags/testing/index.html | 4 ++-- algorithms/tags/time-complexity/index.html | 4 ++-- algorithms/tags/top-down-dp/index.html | 4 ++-- algorithms/time-complexity/extend/index.html | 4 ++-- ...5ede8.fa065562.js => 1535ede8.325cfecf.js} | 2 +- assets/js/2d2e3e59.3df3ae6c.js | 1 + assets/js/2d2e3e59.8602c0c2.js | 1 - assets/js/3716fece.604cd631.js | 1 + assets/js/3716fece.62d9d597.js | 1 - assets/js/4200b1a9.1ca93be5.js | 1 - assets/js/4200b1a9.5219df10.js | 1 + ...c7293.fd69129b.js => 595c7293.6b6976ac.js} | 2 +- ...2c0bc.81ee0b8a.js => 7052c0bc.c6270640.js} | 2 +- ...ef108.4d1fd72a.js => 794ef108.7d5bcd90.js} | 2 +- ...1e0d8.261de0bf.js => 84d1e0d8.8c95a966.js} | 2 +- ...88602.dbc27f32.js => b1288602.1ec913ee.js} | 2 +- ...e838c.7590759c.js => d05e838c.6307f3c6.js} | 2 +- .../js/{main.8dc1a0ec.js => main.7af15fef.js} | 4 ++-- ...CENSE.txt => main.7af15fef.js.LICENSE.txt} | 0 ...n.b26254cc.js => runtime~main.a26bb3ef.js} | 2 +- blog/2023/08/02/copr/index.html | 4 ++-- blog/2024/01/28/rust-opinion/index.html | 4 ++-- blog/2024/02/07/lts-distros/index.html | 4 ++-- blog/2024/06/19/devconf-2024/index.html | 10 +++++----- blog/aoc-2022/1st-week/index.html | 4 ++-- blog/aoc-2022/2nd-week/index.html | 4 ++-- blog/aoc-2022/3rd-week/index.html | 4 ++-- blog/aoc-2022/4th-week/index.html | 4 ++-- blog/aoc-2022/intro/index.html | 4 ++-- blog/archive/index.html | 4 ++-- blog/atom.xml | 6 +++--- blog/feed.json | 2 +- blog/index.html | 4 ++-- blog/leetcode/sort-diagonally/index.html | 4 ++-- blog/rss.xml | 6 +++--- blog/tags/admin/index.html | 4 ++-- blog/tags/advent-of-code-2022/index.html | 4 ++-- blog/tags/advent-of-code/index.html | 4 ++-- blog/tags/conferences/index.html | 4 ++-- blog/tags/copr/index.html | 4 ++-- blog/tags/cpp/index.html | 4 ++-- blog/tags/cult/index.html | 4 ++-- blog/tags/devconf/index.html | 4 ++-- blog/tags/fedora/index.html | 4 ++-- blog/tags/hype/index.html | 4 ++-- blog/tags/index.html | 4 ++-- blog/tags/iterators/index.html | 4 ++-- blog/tags/leetcode/index.html | 4 ++-- blog/tags/linux-distributions/index.html | 4 ++-- blog/tags/lts/index.html | 4 ++-- blog/tags/memory-safety/index.html | 4 ++-- blog/tags/paywall/index.html | 4 ++-- blog/tags/red-hat/index.html | 4 ++-- blog/tags/rust/index.html | 4 ++-- blog/tags/support/index.html | 4 ++-- blog/tags/vps/index.html | 4 ++-- blog/tags/🏭/index.html | 4 ++-- c/bonuses/seminar-03/index.html | 4 ++-- c/bonuses/seminar-04/index.html | 4 ++-- c/bonuses/seminar-05-06/index.html | 6 +++--- c/bonuses/seminar-08/index.html | 6 +++--- c/bonuses/seminar-10/index.html | 6 +++--- c/category/bonuses/index.html | 4 ++-- c/category/practice-exams/index.html | 4 ++-- c/index.html | 6 +++--- c/mr/index.html | 6 +++--- c/pexam/cams/index.html | 4 ++-- c/pexam/garbage_collect/index.html | 4 ++-- contributions/index.html | 4 ++-- cpp/category/exceptions-and-raii/index.html | 4 ++-- cpp/environment/index.html | 4 ++-- .../placeholders/index.html | 4 ++-- cpp/index.html | 6 +++--- .../graphs/iterative-and-iterators.tar.bz2 | Bin 1935 -> 1932 bytes .../graphs/iterative-and-iterators.tar.gz | Bin 1958 -> 1960 bytes files/algorithms/paths/bf-to-astar.tar.bz2 | Bin 3163 -> 3177 bytes files/algorithms/paths/bf-to-astar.tar.gz | Bin 2992 -> 2991 bytes files/algorithms/recursion/karel-1.tar.bz2 | Bin 5882 -> 5866 bytes files/algorithms/recursion/karel-1.tar.gz | Bin 6584 -> 6581 bytes .../recursion/pyramid-slide-down.tar.bz2 | Bin 1546 -> 1547 bytes .../recursion/pyramid-slide-down.tar.gz | Bin 1422 -> 1421 bytes .../algorithms/time-complexity/extend.tar.bz2 | Bin 4074 -> 4084 bytes .../algorithms/time-complexity/extend.tar.gz | Bin 3912 -> 3913 bytes files/c/bonuses/03.tar.bz2 | Bin 2651 -> 2641 bytes files/c/bonuses/03.tar.gz | Bin 2335 -> 2337 bytes files/c/bonuses/04.tar.bz2 | Bin 2530 -> 2521 bytes files/c/bonuses/04.tar.gz | Bin 2499 -> 2499 bytes files/c/bonuses/05-06.tar.bz2 | Bin 3642 -> 3625 bytes files/c/bonuses/05-06.tar.gz | Bin 3489 -> 3488 bytes files/c/bonuses/08.tar.bz2 | Bin 75886 -> 75833 bytes files/c/bonuses/08.tar.gz | Bin 106384 -> 106375 bytes files/c/bonuses/10.tar.bz2 | Bin 234807 -> 234834 bytes files/c/bonuses/10.tar.gz | Bin 230099 -> 230099 bytes index.html | 4 ++-- search/index.html | 4 ++-- talks/index.html | 4 ++-- 154 files changed, 260 insertions(+), 260 deletions(-) rename assets/js/{1535ede8.fa065562.js => 1535ede8.325cfecf.js} (99%) create mode 100644 assets/js/2d2e3e59.3df3ae6c.js delete mode 100644 assets/js/2d2e3e59.8602c0c2.js create mode 100644 assets/js/3716fece.604cd631.js delete mode 100644 assets/js/3716fece.62d9d597.js delete mode 100644 assets/js/4200b1a9.1ca93be5.js create mode 100644 assets/js/4200b1a9.5219df10.js rename assets/js/{595c7293.fd69129b.js => 595c7293.6b6976ac.js} (99%) rename assets/js/{7052c0bc.81ee0b8a.js => 7052c0bc.c6270640.js} (95%) rename assets/js/{794ef108.4d1fd72a.js => 794ef108.7d5bcd90.js} (95%) rename assets/js/{84d1e0d8.261de0bf.js => 84d1e0d8.8c95a966.js} (97%) rename assets/js/{b1288602.dbc27f32.js => b1288602.1ec913ee.js} (99%) rename assets/js/{d05e838c.7590759c.js => d05e838c.6307f3c6.js} (99%) rename assets/js/{main.8dc1a0ec.js => main.7af15fef.js} (98%) rename assets/js/{main.8dc1a0ec.js.LICENSE.txt => main.7af15fef.js.LICENSE.txt} (100%) rename assets/js/{runtime~main.b26254cc.js => runtime~main.a26bb3ef.js} (78%) diff --git a/404.html b/404.html index d56d25c..3c5e2e7 100644 --- a/404.html +++ b/404.html @@ -14,8 +14,8 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/algorithms/algorithms-correctness/postcondition-ambiguity/index.html b/algorithms/algorithms-correctness/postcondition-ambiguity/index.html index 9b787a4..9337596 100644 --- a/algorithms/algorithms-correctness/postcondition-ambiguity/index.html +++ b/algorithms/algorithms-correctness/postcondition-ambiguity/index.html @@ -16,8 +16,8 @@ - - + +
Skip to main content

Vague postconditions and proving correctness of algorithms

Introduction

diff --git a/algorithms/category/algorithms-and-correctness/index.html b/algorithms/category/algorithms-and-correctness/index.html index 0bc8c93..e543a7b 100644 --- a/algorithms/category/algorithms-and-correctness/index.html +++ b/algorithms/category/algorithms-and-correctness/index.html @@ -18,8 +18,8 @@ correctness. - - + +

Algorithms and Correctness

Materials related to basic ideas behind algorithms and proofs of their diff --git a/algorithms/category/asymptotic-notation-and-time-complexity/index.html b/algorithms/category/asymptotic-notation-and-time-complexity/index.html index be991b0..4efcdad 100644 --- a/algorithms/category/asymptotic-notation-and-time-complexity/index.html +++ b/algorithms/category/asymptotic-notation-and-time-complexity/index.html @@ -16,8 +16,8 @@ - - + +

Asymptotic Notation and Time Complexity

Materials related to asymptotic notation and time complexity. diff --git a/algorithms/category/graphs/index.html b/algorithms/category/graphs/index.html index b88436a..e0ea94f 100644 --- a/algorithms/category/graphs/index.html +++ b/algorithms/category/graphs/index.html @@ -16,8 +16,8 @@ - - + +

Graphs

Materials related to basic graph algorithms and graph problems. diff --git a/algorithms/category/hash-tables/index.html b/algorithms/category/hash-tables/index.html index 42888d7..afdf0ac 100644 --- a/algorithms/category/hash-tables/index.html +++ b/algorithms/category/hash-tables/index.html @@ -16,8 +16,8 @@ - - + +

Hash Tables

Materials related to hash tables. diff --git a/algorithms/category/paths-in-graphs/index.html b/algorithms/category/paths-in-graphs/index.html index 6bf3bd8..ee3e48d 100644 --- a/algorithms/category/paths-in-graphs/index.html +++ b/algorithms/category/paths-in-graphs/index.html @@ -16,8 +16,8 @@ - - + +

Paths in Graphs

Materials related to finding paths in graphs. diff --git a/algorithms/category/recursion/index.html b/algorithms/category/recursion/index.html index 6343812..c4ab50b 100644 --- a/algorithms/category/recursion/index.html +++ b/algorithms/category/recursion/index.html @@ -16,8 +16,8 @@ - - + +

Recursion

Materials related to recursive algorithms and their time complexity. diff --git a/algorithms/category/red-black-trees/index.html b/algorithms/category/red-black-trees/index.html index affad2e..178d71b 100644 --- a/algorithms/category/red-black-trees/index.html +++ b/algorithms/category/red-black-trees/index.html @@ -16,8 +16,8 @@ - - + +

Red-Black Trees

Materials related to red-black trees. diff --git a/algorithms/graphs/bfs-tree/index.html b/algorithms/graphs/bfs-tree/index.html index 805bbe1..799e504 100644 --- a/algorithms/graphs/bfs-tree/index.html +++ b/algorithms/graphs/bfs-tree/index.html @@ -16,8 +16,8 @@ - - + +

Distance boundaries from BFS tree on undirected graphs

Introduction

diff --git a/algorithms/graphs/iterative-and-iterators/index.html b/algorithms/graphs/iterative-and-iterators/index.html index 9a4c140..de575ed 100644 --- a/algorithms/graphs/iterative-and-iterators/index.html +++ b/algorithms/graphs/iterative-and-iterators/index.html @@ -16,8 +16,8 @@ - - + +

Iterative algorithms via iterators

Introduction

diff --git a/algorithms/hash-tables/breaking/index.html b/algorithms/hash-tables/breaking/index.html index e6b5bf3..3e8e50f 100644 --- a/algorithms/hash-tables/breaking/index.html +++ b/algorithms/hash-tables/breaking/index.html @@ -16,8 +16,8 @@ - - + +

Breaking hash table

We will try to break a hash table and discuss possible ways how to prevent such diff --git a/algorithms/hash-tables/breaking/mitigations/index.html b/algorithms/hash-tables/breaking/mitigations/index.html index d926898..3a63f77 100644 --- a/algorithms/hash-tables/breaking/mitigations/index.html +++ b/algorithms/hash-tables/breaking/mitigations/index.html @@ -16,8 +16,8 @@ - - + +

Possible Mitigations

There are multiple ways the issues created above can be mitigated. Still we can diff --git a/algorithms/hash-tables/breaking/python/index.html b/algorithms/hash-tables/breaking/python/index.html index e6ab778..e91e891 100644 --- a/algorithms/hash-tables/breaking/python/index.html +++ b/algorithms/hash-tables/breaking/python/index.html @@ -16,8 +16,8 @@ - - + +

Breaking the Hash Table in Python

diff --git a/algorithms/index.html b/algorithms/index.html index b0b4ef5..0edfb2e 100644 --- a/algorithms/index.html +++ b/algorithms/index.html @@ -14,8 +14,8 @@ - - + +

Introduction

In this part you can find “random” additional materials I have written over the @@ -23,6 +23,6 @@ course of teaching Algorithms and data structures I.

It is a various mix of stuff that may have been produced as a follow-up on some question asked at the seminar or spontanously.

If you have some ideas for posts, please do not hesitate to submit them as issues -in the linked GitLab.

+in the linked GitLab.

\ No newline at end of file diff --git a/algorithms/paths/bf-to-astar/astar/index.html b/algorithms/paths/bf-to-astar/astar/index.html index a9336d2..19dae16 100644 --- a/algorithms/paths/bf-to-astar/astar/index.html +++ b/algorithms/paths/bf-to-astar/astar/index.html @@ -16,8 +16,8 @@ - - + +

A* algorithm

Intro

diff --git a/algorithms/paths/bf-to-astar/bf/index.html b/algorithms/paths/bf-to-astar/bf/index.html index 0326d72..ced7bce 100644 --- a/algorithms/paths/bf-to-astar/bf/index.html +++ b/algorithms/paths/bf-to-astar/bf/index.html @@ -18,8 +18,8 @@ something. - - + +

BF

Basic idea

diff --git a/algorithms/paths/bf-to-astar/dijkstra/index.html b/algorithms/paths/bf-to-astar/dijkstra/index.html index 1af0984..67082b0 100644 --- a/algorithms/paths/bf-to-astar/dijkstra/index.html +++ b/algorithms/paths/bf-to-astar/dijkstra/index.html @@ -16,8 +16,8 @@ - - + +

Dijkstra's algorithm

Intro

diff --git a/algorithms/paths/bf-to-astar/index.html b/algorithms/paths/bf-to-astar/index.html index 551120b..bce689b 100644 --- a/algorithms/paths/bf-to-astar/index.html +++ b/algorithms/paths/bf-to-astar/index.html @@ -16,8 +16,8 @@ - - + +

From BF to A*

Intro

diff --git a/algorithms/rb-trees/applications/index.html b/algorithms/rb-trees/applications/index.html index 3c05b50..f8cac0e 100644 --- a/algorithms/rb-trees/applications/index.html +++ b/algorithms/rb-trees/applications/index.html @@ -16,8 +16,8 @@ - - + +

Použití červeno-černých stromů

Použití

diff --git a/algorithms/rb-trees/rules/index.html b/algorithms/rb-trees/rules/index.html index 121db5d..c673760 100644 --- a/algorithms/rb-trees/rules/index.html +++ b/algorithms/rb-trees/rules/index.html @@ -16,8 +16,8 @@ - - + +

On the rules of the red-black tree

Introduction

diff --git a/algorithms/recursion/karel/index.html b/algorithms/recursion/karel/index.html index 2c7cb4d..3c5e554 100644 --- a/algorithms/recursion/karel/index.html +++ b/algorithms/recursion/karel/index.html @@ -16,8 +16,8 @@ - - + +

Recursion and backtracking with Robot Karel

    diff --git a/algorithms/recursion/karel/solution/index.html b/algorithms/recursion/karel/solution/index.html index 617da11..82e59d3 100644 --- a/algorithms/recursion/karel/solution/index.html +++ b/algorithms/recursion/karel/solution/index.html @@ -16,8 +16,8 @@ - - + +

    Solving the maze problem

    diff --git a/algorithms/recursion/pyramid-slide-down/bottom-up-dp/index.html b/algorithms/recursion/pyramid-slide-down/bottom-up-dp/index.html index 32003ab..eeb6293 100644 --- a/algorithms/recursion/pyramid-slide-down/bottom-up-dp/index.html +++ b/algorithms/recursion/pyramid-slide-down/bottom-up-dp/index.html @@ -16,8 +16,8 @@ - - + +

    Bottom-up dynamic programming

    diff --git a/algorithms/recursion/pyramid-slide-down/greedy/index.html b/algorithms/recursion/pyramid-slide-down/greedy/index.html index 81befa4..d786643 100644 --- a/algorithms/recursion/pyramid-slide-down/greedy/index.html +++ b/algorithms/recursion/pyramid-slide-down/greedy/index.html @@ -16,8 +16,8 @@ - - + +

    Greedy solution

    We will try to optimize it a bit. Let's start with a relatively simple greedy diff --git a/algorithms/recursion/pyramid-slide-down/index.html b/algorithms/recursion/pyramid-slide-down/index.html index c5095c8..d1c7e0b 100644 --- a/algorithms/recursion/pyramid-slide-down/index.html +++ b/algorithms/recursion/pyramid-slide-down/index.html @@ -16,8 +16,8 @@ - - + +

    Introduction to dynamic programming

    In this series we will try to solve one problem in different ways.

    diff --git a/algorithms/recursion/pyramid-slide-down/naive/index.html b/algorithms/recursion/pyramid-slide-down/naive/index.html index c3fead4..8daf9f4 100644 --- a/algorithms/recursion/pyramid-slide-down/naive/index.html +++ b/algorithms/recursion/pyramid-slide-down/naive/index.html @@ -16,8 +16,8 @@ - - + +

    Naïve solution

    Our naïve solution consists of trying out all the possible slides and finding diff --git a/algorithms/recursion/pyramid-slide-down/top-down-dp/index.html b/algorithms/recursion/pyramid-slide-down/top-down-dp/index.html index f83bb8e..dc36a30 100644 --- a/algorithms/recursion/pyramid-slide-down/top-down-dp/index.html +++ b/algorithms/recursion/pyramid-slide-down/top-down-dp/index.html @@ -16,8 +16,8 @@ - - + +

    Top-down dynamic programming

    diff --git a/algorithms/tags/a-star/index.html b/algorithms/tags/a-star/index.html index d738775..836aea9 100644 --- a/algorithms/tags/a-star/index.html +++ b/algorithms/tags/a-star/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "a star"

    View All Tags

    From BF to A*

    Figuring out shortest-path problem from the BF to the A* algorithm. diff --git a/algorithms/tags/applications/index.html b/algorithms/tags/applications/index.html index e013458..b293210 100644 --- a/algorithms/tags/applications/index.html +++ b/algorithms/tags/applications/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "applications"

    View All Tags

    Použití červeno-černých stromů

    Ukázka použití červeno-černých stromů v standardních knižnicích známých jazyků. diff --git a/algorithms/tags/astar/index.html b/algorithms/tags/astar/index.html index 2d5b797..57fabbd 100644 --- a/algorithms/tags/astar/index.html +++ b/algorithms/tags/astar/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "astar"

    View All Tags

    A* algorithm

    Moving from Dijkstra's algorithm into the A* algorithm. diff --git a/algorithms/tags/backtracking/index.html b/algorithms/tags/backtracking/index.html index ae9d441..70b9d0a 100644 --- a/algorithms/tags/backtracking/index.html +++ b/algorithms/tags/backtracking/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "backtracking"

    View All Tags

    Recursion and backtracking with Robot Karel

    A problem with too many restrictions. diff --git a/algorithms/tags/balanced-trees/index.html b/algorithms/tags/balanced-trees/index.html index 59d6c8f..557aaee 100644 --- a/algorithms/tags/balanced-trees/index.html +++ b/algorithms/tags/balanced-trees/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "balanced trees"

    View All Tags

    On the rules of the red-black tree

    Shower thoughts on the rules of the red-black tree. diff --git a/algorithms/tags/bellman-ford/index.html b/algorithms/tags/bellman-ford/index.html index 0db787c..709c488 100644 --- a/algorithms/tags/bellman-ford/index.html +++ b/algorithms/tags/bellman-ford/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "bellman ford"

    View All Tags

    BF

    Solving the shortest path problem with a naïve approach that turns into diff --git a/algorithms/tags/bfs/index.html b/algorithms/tags/bfs/index.html index c8471f1..5105829 100644 --- a/algorithms/tags/bfs/index.html +++ b/algorithms/tags/bfs/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "bfs"

    View All Tags

    Distance boundaries from BFS tree on undirected graphs

    Short explanation of distance boundaries deduced from a BFS tree. diff --git a/algorithms/tags/bottom-up-dp/index.html b/algorithms/tags/bottom-up-dp/index.html index 1b8fbd9..bf08a91 100644 --- a/algorithms/tags/bottom-up-dp/index.html +++ b/algorithms/tags/bottom-up-dp/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "bottom-up-dp"

    View All Tags

    Bottom-up DP solution

    Bottom-up DP solution of the Pyramid Slide Down. diff --git a/algorithms/tags/brute-force/index.html b/algorithms/tags/brute-force/index.html index 99402b6..e78edc4 100644 --- a/algorithms/tags/brute-force/index.html +++ b/algorithms/tags/brute-force/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "brute force"

    View All Tags

    BF

    Solving the shortest path problem with a naïve approach that turns into diff --git a/algorithms/tags/c/index.html b/algorithms/tags/c/index.html index 2dc2c3b..0e47f72 100644 --- a/algorithms/tags/c/index.html +++ b/algorithms/tags/c/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "c"

    View All Tags

    Time complexity of ‹extend›

    How to make inefficient algorithm unknowingly. diff --git a/algorithms/tags/cpp/index.html b/algorithms/tags/cpp/index.html index 55248d4..4ff827f 100644 --- a/algorithms/tags/cpp/index.html +++ b/algorithms/tags/cpp/index.html @@ -14,8 +14,8 @@ - - + +

    7 docs tagged with "cpp"

    View All Tags

    A* algorithm

    Moving from Dijkstra's algorithm into the A* algorithm. diff --git a/algorithms/tags/csharp/index.html b/algorithms/tags/csharp/index.html index 331f6de..35197c5 100644 --- a/algorithms/tags/csharp/index.html +++ b/algorithms/tags/csharp/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "csharp"

    View All Tags

    Iterative algorithms via iterators

    Iterative DFS using iterators. diff --git a/algorithms/tags/dijkstra/index.html b/algorithms/tags/dijkstra/index.html index 5fbe7fe..0f6e3ec 100644 --- a/algorithms/tags/dijkstra/index.html +++ b/algorithms/tags/dijkstra/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "dijkstra"

    View All Tags

    Dijkstra's algorithm

    Moving from Bellman-Ford into the Dijsktra's algorithm. diff --git a/algorithms/tags/dynamic-array/index.html b/algorithms/tags/dynamic-array/index.html index ab148f6..7c9f1a8 100644 --- a/algorithms/tags/dynamic-array/index.html +++ b/algorithms/tags/dynamic-array/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "dynamic array"

    View All Tags

    Time complexity of ‹extend›

    How to make inefficient algorithm unknowingly. diff --git a/algorithms/tags/dynamic-programming/index.html b/algorithms/tags/dynamic-programming/index.html index ed413fb..da64338 100644 --- a/algorithms/tags/dynamic-programming/index.html +++ b/algorithms/tags/dynamic-programming/index.html @@ -14,8 +14,8 @@ - - + +

    7 docs tagged with "dynamic programming"

    View All Tags

    A* algorithm

    Moving from Dijkstra's algorithm into the A* algorithm. diff --git a/algorithms/tags/exponential/index.html b/algorithms/tags/exponential/index.html index 5afddfb..3901036 100644 --- a/algorithms/tags/exponential/index.html +++ b/algorithms/tags/exponential/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "exponential"

    View All Tags

    Introduction to dynamic programming

    Solving a problem in different ways. diff --git a/algorithms/tags/graphs/index.html b/algorithms/tags/graphs/index.html index 5e892ca..0a4ed7a 100644 --- a/algorithms/tags/graphs/index.html +++ b/algorithms/tags/graphs/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "graphs"

    View All Tags

    Distance boundaries from BFS tree on undirected graphs

    Short explanation of distance boundaries deduced from a BFS tree. diff --git a/algorithms/tags/greedy/index.html b/algorithms/tags/greedy/index.html index ea84002..9421b8d 100644 --- a/algorithms/tags/greedy/index.html +++ b/algorithms/tags/greedy/index.html @@ -14,8 +14,8 @@ - - + +

    4 docs tagged with "greedy"

    View All Tags

    Dijkstra's algorithm

    Moving from Bellman-Ford into the Dijsktra's algorithm. diff --git a/algorithms/tags/hash-tables/index.html b/algorithms/tags/hash-tables/index.html index 04a5445..1572b83 100644 --- a/algorithms/tags/hash-tables/index.html +++ b/algorithms/tags/hash-tables/index.html @@ -14,8 +14,8 @@ - - + +

    3 docs tagged with "hash-tables"

    View All Tags

    Breaking hash table

    How to get the linear time complexity in a hash table. diff --git a/algorithms/tags/index.html b/algorithms/tags/index.html index a374c31..cc4636b 100644 --- a/algorithms/tags/index.html +++ b/algorithms/tags/index.html @@ -14,8 +14,8 @@ - - + +

    diff --git a/algorithms/tags/iterative/index.html b/algorithms/tags/iterative/index.html index f6e8fd0..ab29c32 100644 --- a/algorithms/tags/iterative/index.html +++ b/algorithms/tags/iterative/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "iterative"

    View All Tags

    Iterative algorithms via iterators

    Iterative DFS using iterators. diff --git a/algorithms/tags/iterators/index.html b/algorithms/tags/iterators/index.html index bcdb3ba..c840a94 100644 --- a/algorithms/tags/iterators/index.html +++ b/algorithms/tags/iterators/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "iterators"

    View All Tags

    Iterative algorithms via iterators

    Iterative DFS using iterators. diff --git a/algorithms/tags/java/index.html b/algorithms/tags/java/index.html index d87dc06..664622d 100644 --- a/algorithms/tags/java/index.html +++ b/algorithms/tags/java/index.html @@ -14,8 +14,8 @@ - - + +

    5 docs tagged with "java"

    View All Tags

    Bottom-up DP solution

    Bottom-up DP solution of the Pyramid Slide Down. diff --git a/algorithms/tags/karel/index.html b/algorithms/tags/karel/index.html index 9394687..3b3978c 100644 --- a/algorithms/tags/karel/index.html +++ b/algorithms/tags/karel/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "karel"

    View All Tags

    Recursion and backtracking with Robot Karel

    A problem with too many restrictions. diff --git a/algorithms/tags/postconditions/index.html b/algorithms/tags/postconditions/index.html index 1f974ee..e2ba26d 100644 --- a/algorithms/tags/postconditions/index.html +++ b/algorithms/tags/postconditions/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "postconditions"

    View All Tags

    Vague postconditions and proving correctness of algorithms

    Debugging and testing with precise postconditions. diff --git a/algorithms/tags/python/index.html b/algorithms/tags/python/index.html index 60f3702..2f01c06 100644 --- a/algorithms/tags/python/index.html +++ b/algorithms/tags/python/index.html @@ -14,8 +14,8 @@ - - + +

    7 docs tagged with "python"

    View All Tags

    Breaking hash table

    How to get the linear time complexity in a hash table. diff --git a/algorithms/tags/recursion/index.html b/algorithms/tags/recursion/index.html index af08f0f..703aa06 100644 --- a/algorithms/tags/recursion/index.html +++ b/algorithms/tags/recursion/index.html @@ -14,8 +14,8 @@ - - + +

    5 docs tagged with "recursion"

    View All Tags

    Introduction to dynamic programming

    Solving a problem in different ways. diff --git a/algorithms/tags/red-black-trees/index.html b/algorithms/tags/red-black-trees/index.html index 3292777..3109e83 100644 --- a/algorithms/tags/red-black-trees/index.html +++ b/algorithms/tags/red-black-trees/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "red-black trees"

    View All Tags

    On the rules of the red-black tree

    Shower thoughts on the rules of the red-black tree. diff --git a/algorithms/tags/solution/index.html b/algorithms/tags/solution/index.html index ff90816..1508ec8 100644 --- a/algorithms/tags/solution/index.html +++ b/algorithms/tags/solution/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "solution"

    View All Tags

    Solution to the problem

    Solving the problem introduced in the previous post. diff --git a/algorithms/tags/sorting/index.html b/algorithms/tags/sorting/index.html index 0b1a052..eb36689 100644 --- a/algorithms/tags/sorting/index.html +++ b/algorithms/tags/sorting/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "sorting"

    View All Tags

    Vague postconditions and proving correctness of algorithms

    Debugging and testing with precise postconditions. diff --git a/algorithms/tags/testing/index.html b/algorithms/tags/testing/index.html index b011d05..5aca5a1 100644 --- a/algorithms/tags/testing/index.html +++ b/algorithms/tags/testing/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "testing"

    View All Tags

    Vague postconditions and proving correctness of algorithms

    Debugging and testing with precise postconditions. diff --git a/algorithms/tags/time-complexity/index.html b/algorithms/tags/time-complexity/index.html index 7591fdb..f6ffbc8 100644 --- a/algorithms/tags/time-complexity/index.html +++ b/algorithms/tags/time-complexity/index.html @@ -14,8 +14,8 @@ - - + +

    One doc tagged with "time complexity"

    View All Tags

    Time complexity of ‹extend›

    How to make inefficient algorithm unknowingly. diff --git a/algorithms/tags/top-down-dp/index.html b/algorithms/tags/top-down-dp/index.html index 2a7740f..415b6da 100644 --- a/algorithms/tags/top-down-dp/index.html +++ b/algorithms/tags/top-down-dp/index.html @@ -14,8 +14,8 @@ - - + +

    2 docs tagged with "top-down-dp"

    View All Tags

    Introduction to dynamic programming

    Solving a problem in different ways. diff --git a/algorithms/time-complexity/extend/index.html b/algorithms/time-complexity/extend/index.html index 9163928..8759cde 100644 --- a/algorithms/time-complexity/extend/index.html +++ b/algorithms/time-complexity/extend/index.html @@ -16,8 +16,8 @@ - - + +

    Time complexity of ‹extend›

    Introduction

    diff --git a/assets/js/1535ede8.fa065562.js b/assets/js/1535ede8.325cfecf.js similarity index 99% rename from assets/js/1535ede8.fa065562.js rename to assets/js/1535ede8.325cfecf.js index e1e31f4..b1e2e32 100644 --- a/assets/js/1535ede8.fa065562.js +++ b/assets/js/1535ede8.325cfecf.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[5376],{44969:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var s=t(85893),i=t(11151);const r={id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},o=void 0,a={id:"bonuses/seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n",source:"@site/c/bonuses/10.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-10",permalink:"/c/bonuses/seminar-10",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/10.md",tags:[],version:"current",lastUpdatedAt:1718801795,formattedLastUpdatedAt:"Jun 19, 2024",frontMatter:{id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},sidebar:"autogeneratedBar",previous:{title:"8th seminar",permalink:"/c/bonuses/seminar-08"},next:{title:"Practice Exams",permalink:"/c/category/practice-exams"}},c={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Project",id:"project",level:2},{value:"Summary of the gameplay",id:"summary-of-the-gameplay",level:3},{value:"Suggested workflow",id:"suggested-workflow",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Dictionary",id:"dictionary",level:2},{value:"Submitting",id:"submitting",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:(0,s.jsx)(n.a,{href:"pathname:///files/c/bonuses/10.tar.gz",children:"Source"})}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsx)(n.p,{children:"For this bonus you are given almost finished project - The Hangman Game. Your\ntask is to try the game, in case you find any bugs point them out and cover as\nmuch of the game as possible with tests."}),"\n",(0,s.jsx)(n.p,{children:"For this bonus you can get at maximum 2 K\u20a1."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Item"}),(0,s.jsx)(n.th,{children:"Bonus"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Fixing bugs from failing tests"}),(0,s.jsx)(n.td,{children:"0.25"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"word_guessed"})}),(0,s.jsx)(n.td,{children:"0.50"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Hidden bug"}),(0,s.jsx)(n.td,{children:"0.50"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Extending tests, undetectable bugs or evil bug"}),(0,s.jsx)(n.td,{children:"0.37"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Refactor"}),(0,s.jsx)(n.td,{children:"0.38"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"project",children:"Project"}),"\n",(0,s.jsxs)(n.p,{children:["Project consists of 2 source files - ",(0,s.jsx)(n.code,{children:"hangman.c"})," and ",(0,s.jsx)(n.code,{children:"main.c"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"main.c"})," is quite short and concise, there is nothing for you to do."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"hangman.c"})," contains implementation of the game. In case you feel lost, consult\nthe documentation in ",(0,s.jsx)(n.code,{children:"hangman.h"})," that represents an interface that can be used\nfor implementing the game."]}),"\n",(0,s.jsxs)(n.p,{children:["Apart from those sources this project is a bit more complicated. ",(0,s.jsx)(n.em,{children:"Game loop"})," is\nrealised via single encapsulated function that complicates the testing. Because\nof that, there are 2 kinds of tests:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Unit tests"})," - that are present in ",(0,s.jsx)(n.code,{children:"test_hangman.c"})," and can be run via:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check-unit\n"})}),"\n",(0,s.jsx)(n.p,{children:"They cover majorly functions that can be tested easily via testing framework."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Functional tests"})," - same as in ",(0,s.jsx)(n.code,{children:"seminar-08"})," and are focused on testing the\nprogram as whole. Basic smoke test is already included in ",(0,s.jsx)(n.code,{children:"usage"})," test case."]}),"\n",(0,s.jsx)(n.p,{children:"They can be run via:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check-functional\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When testing ",(0,s.jsx)(n.code,{children:"hangman"})," function (the game loop), it is suggested to create\nfunctional tests."]}),"\n",(0,s.jsx)(n.p,{children:"When submitting the files for review, please leave out functional tests that\nwere given as a part of the assignment, so that it is easier to navigate, I\nwill drag the common files myself. :)"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Whole test suite can be run via:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check\n"})}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"summary-of-the-gameplay",children:"Summary of the gameplay"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Secret word gets chosen from the file that's path is given as an argument."}),"\n",(0,s.jsx)(n.li,{children:"You get 8 guesses."}),"\n",(0,s.jsx)(n.li,{children:"Invalid characters don't count."}),"\n",(0,s.jsx)(n.li,{children:"Already guessed characters don't count, even if not included in the secret."}),"\n",(0,s.jsxs)(n.li,{children:["You can guess the whole word at once","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"If you get it right, you won, game ends."}),"\n",(0,s.jsx)(n.li,{children:"If you don't get it right, you get to see the secret, game ends."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.li,{children:"In case of end of input, game finishes via force."}),"\n",(0,s.jsx)(n.li,{children:"In case of invalid input, no guesses are subtracted, game carries on."}),"\n",(0,s.jsx)(n.li,{children:"Letters and words are not case sensitive."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"suggested-workflow",children:"Suggested workflow"}),"\n",(0,s.jsxs)(n.p,{children:["As we have talked about on the seminar, I suggest you to follow\n",(0,s.jsx)(n.em,{children:"Test-Driven Development"}),"\nin this case."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"TDD workflow",src:t(27420).Z+"",width:"2814",height:"1652"})}),"\n",(0,s.jsx)(n.p,{children:"In our current scenario we are already in the stage of refactoring and fixing the\nbugs. Therefore try to follow this succession of steps:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Try to reproduce the bug."}),"\n",(0,s.jsx)(n.li,{children:"Create a test that proves the presence of the bug."}),"\n",(0,s.jsx)(n.li,{children:"Fix the bug."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["In case you are submitting the bonus via GitLab, it is helpful to commit tests\nbefore commiting the fixes, so that it is apparent that the bug is manifested.\nExample of ",(0,s.jsx)(n.code,{children:"git log"})," (notice that the first line represents latest commit):"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"feat: Implement fizz_buzzer\ntest: Add tests for fizz_buzzer\nfix: Fix NULL-check in print_name\ntest: Add test for NULL in print_name\n"})}),"\n",(0,s.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,s.jsx)(n.p,{children:"As to your tasks, there are multiple things wrong in this project."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:'There are 2 "bugs" that cannot be detected via tests, i.e. they are not bugs\nthat affect functionality of the game.'}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["There is one evil bug in ",(0,s.jsx)(n.code,{children:"get_word"}),". It is not required to be fixed ;) Assign\nit the lowest priority."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"There are some tests failing. Please try to figure it out, so you have green\ntests for the rest :)"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["We have gotten a bug report for ",(0,s.jsx)(n.code,{children:"word_guessed"}),", all we got is"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["doesn't work when there are too many ",(0,s.jsx)(n.code,{children:"a"}),"s"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Please try to replicate the bug and create a tests, so we don't get any\nregression later on."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"One hidden bug :) Closely non-specified, we cannot reproduce it and we were\ndrunk while playing the game, so we don't remember a thing. :/"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Try to cover as much code via the tests as possible. We are not going to look\nat the metrics, but DRY is violated a lot, so as a last task try to remove as\nmuch of the duplicit code as possible."}),"\n",(0,s.jsx)(n.p,{children:"Tests should help you a lot in case there are some regressions."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.p,{children:["In case you wonder why there are always 3 same words in the file with words, it\nis because of the ",(0,s.jsx)(n.code,{children:"get_word"})," bug. It is not a bug that can be easily fixed, so\nit is a not requirement at all and you can still get all points for the bonus ;)"]}),"\n",(0,s.jsx)(n.h2,{id:"dictionary",children:"Dictionary"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Functional_testing",children:"Functional tests"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Smoke_testing_%28software%29",children:"Smoke test"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Don%27t_repeat_yourself",children:"DRY"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,s.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,s.jsx)(n.hr,{})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},27420:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/tdd_lifecycle-327ad9ee0ed8318ed11e19a28e02b2cc.png"},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>o});var s=t(67294);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[5376],{44969:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var s=t(85893),i=t(11151);const r={id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},o=void 0,a={id:"bonuses/seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n",source:"@site/c/bonuses/10.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-10",permalink:"/c/bonuses/seminar-10",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/10.md",tags:[],version:"current",lastUpdatedAt:1718813674,formattedLastUpdatedAt:"Jun 19, 2024",frontMatter:{id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},sidebar:"autogeneratedBar",previous:{title:"8th seminar",permalink:"/c/bonuses/seminar-08"},next:{title:"Practice Exams",permalink:"/c/category/practice-exams"}},c={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Project",id:"project",level:2},{value:"Summary of the gameplay",id:"summary-of-the-gameplay",level:3},{value:"Suggested workflow",id:"suggested-workflow",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Dictionary",id:"dictionary",level:2},{value:"Submitting",id:"submitting",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:(0,s.jsx)(n.a,{href:"pathname:///files/c/bonuses/10.tar.gz",children:"Source"})}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsx)(n.p,{children:"For this bonus you are given almost finished project - The Hangman Game. Your\ntask is to try the game, in case you find any bugs point them out and cover as\nmuch of the game as possible with tests."}),"\n",(0,s.jsx)(n.p,{children:"For this bonus you can get at maximum 2 K\u20a1."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Item"}),(0,s.jsx)(n.th,{children:"Bonus"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Fixing bugs from failing tests"}),(0,s.jsx)(n.td,{children:"0.25"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"word_guessed"})}),(0,s.jsx)(n.td,{children:"0.50"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Hidden bug"}),(0,s.jsx)(n.td,{children:"0.50"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Extending tests, undetectable bugs or evil bug"}),(0,s.jsx)(n.td,{children:"0.37"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Refactor"}),(0,s.jsx)(n.td,{children:"0.38"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"project",children:"Project"}),"\n",(0,s.jsxs)(n.p,{children:["Project consists of 2 source files - ",(0,s.jsx)(n.code,{children:"hangman.c"})," and ",(0,s.jsx)(n.code,{children:"main.c"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"main.c"})," is quite short and concise, there is nothing for you to do."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"hangman.c"})," contains implementation of the game. In case you feel lost, consult\nthe documentation in ",(0,s.jsx)(n.code,{children:"hangman.h"})," that represents an interface that can be used\nfor implementing the game."]}),"\n",(0,s.jsxs)(n.p,{children:["Apart from those sources this project is a bit more complicated. ",(0,s.jsx)(n.em,{children:"Game loop"})," is\nrealised via single encapsulated function that complicates the testing. Because\nof that, there are 2 kinds of tests:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Unit tests"})," - that are present in ",(0,s.jsx)(n.code,{children:"test_hangman.c"})," and can be run via:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check-unit\n"})}),"\n",(0,s.jsx)(n.p,{children:"They cover majorly functions that can be tested easily via testing framework."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.em,{children:"Functional tests"})," - same as in ",(0,s.jsx)(n.code,{children:"seminar-08"})," and are focused on testing the\nprogram as whole. Basic smoke test is already included in ",(0,s.jsx)(n.code,{children:"usage"})," test case."]}),"\n",(0,s.jsx)(n.p,{children:"They can be run via:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check-functional\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When testing ",(0,s.jsx)(n.code,{children:"hangman"})," function (the game loop), it is suggested to create\nfunctional tests."]}),"\n",(0,s.jsx)(n.p,{children:"When submitting the files for review, please leave out functional tests that\nwere given as a part of the assignment, so that it is easier to navigate, I\nwill drag the common files myself. :)"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Whole test suite can be run via:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"$ make check\n"})}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"summary-of-the-gameplay",children:"Summary of the gameplay"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Secret word gets chosen from the file that's path is given as an argument."}),"\n",(0,s.jsx)(n.li,{children:"You get 8 guesses."}),"\n",(0,s.jsx)(n.li,{children:"Invalid characters don't count."}),"\n",(0,s.jsx)(n.li,{children:"Already guessed characters don't count, even if not included in the secret."}),"\n",(0,s.jsxs)(n.li,{children:["You can guess the whole word at once","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"If you get it right, you won, game ends."}),"\n",(0,s.jsx)(n.li,{children:"If you don't get it right, you get to see the secret, game ends."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.li,{children:"In case of end of input, game finishes via force."}),"\n",(0,s.jsx)(n.li,{children:"In case of invalid input, no guesses are subtracted, game carries on."}),"\n",(0,s.jsx)(n.li,{children:"Letters and words are not case sensitive."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"suggested-workflow",children:"Suggested workflow"}),"\n",(0,s.jsxs)(n.p,{children:["As we have talked about on the seminar, I suggest you to follow\n",(0,s.jsx)(n.em,{children:"Test-Driven Development"}),"\nin this case."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"TDD workflow",src:t(27420).Z+"",width:"2814",height:"1652"})}),"\n",(0,s.jsx)(n.p,{children:"In our current scenario we are already in the stage of refactoring and fixing the\nbugs. Therefore try to follow this succession of steps:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Try to reproduce the bug."}),"\n",(0,s.jsx)(n.li,{children:"Create a test that proves the presence of the bug."}),"\n",(0,s.jsx)(n.li,{children:"Fix the bug."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["In case you are submitting the bonus via GitLab, it is helpful to commit tests\nbefore commiting the fixes, so that it is apparent that the bug is manifested.\nExample of ",(0,s.jsx)(n.code,{children:"git log"})," (notice that the first line represents latest commit):"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"feat: Implement fizz_buzzer\ntest: Add tests for fizz_buzzer\nfix: Fix NULL-check in print_name\ntest: Add test for NULL in print_name\n"})}),"\n",(0,s.jsx)(n.h2,{id:"tasks",children:"Tasks"}),"\n",(0,s.jsx)(n.p,{children:"As to your tasks, there are multiple things wrong in this project."}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:'There are 2 "bugs" that cannot be detected via tests, i.e. they are not bugs\nthat affect functionality of the game.'}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["There is one evil bug in ",(0,s.jsx)(n.code,{children:"get_word"}),". It is not required to be fixed ;) Assign\nit the lowest priority."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"There are some tests failing. Please try to figure it out, so you have green\ntests for the rest :)"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["We have gotten a bug report for ",(0,s.jsx)(n.code,{children:"word_guessed"}),", all we got is"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["doesn't work when there are too many ",(0,s.jsx)(n.code,{children:"a"}),"s"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Please try to replicate the bug and create a tests, so we don't get any\nregression later on."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"One hidden bug :) Closely non-specified, we cannot reproduce it and we were\ndrunk while playing the game, so we don't remember a thing. :/"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Try to cover as much code via the tests as possible. We are not going to look\nat the metrics, but DRY is violated a lot, so as a last task try to remove as\nmuch of the duplicit code as possible."}),"\n",(0,s.jsx)(n.p,{children:"Tests should help you a lot in case there are some regressions."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.p,{children:["In case you wonder why there are always 3 same words in the file with words, it\nis because of the ",(0,s.jsx)(n.code,{children:"get_word"})," bug. It is not a bug that can be easily fixed, so\nit is a not requirement at all and you can still get all points for the bonus ;)"]}),"\n",(0,s.jsx)(n.h2,{id:"dictionary",children:"Dictionary"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Functional_testing",children:"Functional tests"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Smoke_testing_%28software%29",children:"Smoke test"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Don%27t_repeat_yourself",children:"DRY"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,s.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,s.jsx)(n.hr,{})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},27420:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/tdd_lifecycle-327ad9ee0ed8318ed11e19a28e02b2cc.png"},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>o});var s=t(67294);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2d2e3e59.3df3ae6c.js b/assets/js/2d2e3e59.3df3ae6c.js new file mode 100644 index 0000000..6aba46e --- /dev/null +++ b/assets/js/2d2e3e59.3df3ae6c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[6689],{55268:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>r,toc:()=>l});var a=n(85893),s=n(11151);const o={title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:new Date("2024-06-19T00:00:00.000Z"),authors:[{key:"mf",title:"a.k.a. exhausted DevConf attendee"}],tags:["\ud83c\udfed","red-hat","fedora","devconf","conferences"]},i=void 0,r={permalink:"/blog/2024/06/19/devconf-2024",editUrl:"https://github.com/mfocko/blog/tree/main/blog/2024-06-19-devconf-2024.md",source:"@site/blog/2024-06-19-devconf-2024.md",title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:"2024-06-19T00:00:00.000Z",formattedDate:"June 19, 2024",tags:[{label:"\ud83c\udfed",permalink:"/blog/tags/\ud83c\udfed"},{label:"red-hat",permalink:"/blog/tags/red-hat"},{label:"fedora",permalink:"/blog/tags/fedora"},{label:"devconf",permalink:"/blog/tags/devconf"},{label:"conferences",permalink:"/blog/tags/conferences"}],readingTime:5.36,hasTruncateMarker:!0,authors:[{name:"Matej Focko",email:"me+blog@mfocko.xyz",title:"a.k.a. exhausted DevConf attendee",url:"https://gitlab.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mf"}],frontMatter:{title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:"2024-06-19T00:00:00.000Z",authors:[{key:"mf",title:"a.k.a. exhausted DevConf attendee"}],tags:["\ud83c\udfed","red-hat","fedora","devconf","conferences"]},unlisted:!1,nextItem:{title:"LTS distributions",permalink:"/blog/2024/02/07/lts-distros"}},h={authorsImageUrls:[void 0]},l=[{value:"Day 1",id:"day-1",level:2},{value:"Day 2",id:"day-2",level:2},{value:"Day 3",id:"day-3",level:2},{value:"Picks from the Packit Team",id:"picks-from-the-packit-team",level:2},{value:"Wrap up",id:"wrap-up",level:2}];function c(e){const t={a:"a",blockquote:"blockquote",em:"em",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",section:"section",strong:"strong",sup:"sup",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.p,{children:"I'd like to share my experience and views on some of the talks that I've\nattended on the DevConf.cz 2024."}),"\n",(0,a.jsx)(t.h2,{id:"day-1",children:"Day 1"}),"\n",(0,a.jsx)(t.p,{children:"Let's start with the first day which was Thursday this year as opposed to the\nprevious years when the conference started on Friday and finished on Sunday."}),"\n",(0,a.jsxs)(t.p,{children:["Let's start with the ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/AD3HWR/",children:"keynote"})}),". The keynote wasn't very interesting, at some of\nthe slides actually felt like advertisement for other talks on the topic of the\nAI\u2026"]}),"\n",(0,a.jsxs)(t.p,{children:["Next talk about ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/3UKGLB/",children:"event-driven Ansible"})})," was way more interesting. It allows you\nto run Ansible playbooks after provisioning hosts, or on certain events, such as\ndiscovered vulnerabilities. On one hand it feels like a very nice thing, but on\nthe other one I can't help but to think how you need to write the playbooks, so\nthat they are generic enough. One more example that's been given comes from the\npossibility to react to tickets, e.g., outages and this feels like something\nthat could be abused to cause DoS."]}),"\n",(0,a.jsxs)(t.p,{children:["Afterwards we've seen two lightning talks, one about\n",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/KSDRWL/",children:"choosing the right OpenShift size"})})," which was a pretty quick, but listed all\nof the possible ways you can deploy OpenShift in detail. This lightning talk\nwas followed by the first AI (lightning) talk I've attended about\n",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/H9QFLM/",children:"rapid prototyping"})})," of the open-source AI models."]}),"\n",(0,a.jsxs)(t.p,{children:["As someone who's involved in the automation of the RPM packaging and testing, of\ncourse, we had to attend ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/NNKT3F/",children:"Learning from Nix"})}),". Nix has a very intriguing\nconcept which is pretty powerful, but painful at the same time. This can be\nsummed up pretty nicely by ",(0,a.jsx)(t.a,{href:"https://twitch.tv/tsoding",children:"Tsoding"})," who got asked about some tips & tricks for\nsomeone who wants to try out NixOS:"]}),"\n",(0,a.jsxs)(t.blockquote,{children:["\n",(0,a.jsx)(t.p,{children:"Just don't."}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:"And now we're moving into a section where everything revolves about the Packit\nTeam :)"}),"\n",(0,a.jsxs)(t.p,{children:["First talk about ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/ECU7QS/",children:"changelogs"})})," was an interactive session that was (probably)\nmeant to share different approaches we take to handle this rather convoluted\ntopic that involves changelogs on both upstream and also on downstream with no\nrules",(0,a.jsx)(t.sup,{children:(0,a.jsx)(t.a,{href:"#user-content-fn-1-ba1b92",id:"user-content-fnref-1-ba1b92","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})}),"."]}),"\n",(0,a.jsx)(t.p,{children:(0,a.jsx)(t.img,{src:"https://i.imgur.com/YHstMAt.jpg",alt:"changelogs"})}),"\n",(0,a.jsxs)(t.p,{children:["Next one was about ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/7C38GJ/",children:"static analysis"})})," done by ",(0,a.jsx)(t.a,{href:"https://openscanhub.dev/",children:"OpenScanHub"}),". I like the idea of\nrunning the static analysis that can uncover nasty bugs (as it has been even\nshowed in the talk) at the same time as they are introduced. I gotta admit that\nafter seeing the UI of the ",(0,a.jsx)(t.a,{href:"https://openscanhub.fedoraproject.org/",children:"deployed OpenScanHub"})," on the Fedora Infra, I couldn't\nhelp but to think about the ",(0,a.jsx)(t.a,{href:"https://x.com/usgraphics",children:"United States Graphics Company"})," ","\ud83d\ude04"," The UI is\nto the point, no fancy annoying shit, you get what you need, it's hard to get\nlost. ",(0,a.jsx)(t.strong,{children:"Just simplicity."})," Best kind of UI/UX in my opinion."]}),"\n",(0,a.jsxs)(t.p,{children:["After the OpenScanHub talk we're getting to talks that were taken in a totally\ndifferent direction from the usual talks you're used to ","\ud83d\ude09"," First one was\ngiven title of ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/X8SYDG/",children:"\u201cIndiana Jones and obsoleted projects\u201d"})})," by ",(0,a.jsx)(t.a,{href:"https://rodina-sucha.cz/@mirek",children:"Mirek"}),". He talked\nabout projects that got obsoleted, but started with projects that had no\nrelation to IT field at all. I'd mark this talk as a ",(0,a.jsx)(t.em,{children:"stand up"})," without any\nhesitation."]}),"\n",(0,a.jsxs)(t.p,{children:["And finally we will wrap up the first day with the talk where speakers spoke the\nleast\u2026 ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/BDMWF3/",children:"\u201cLet the users speak!\u201d"})})," that involved users of both Packit and\nTesting Farm who spoke about their use case and benefits they gained from using\nboth services in a symbiosis."]}),"\n",(0,a.jsx)(t.h2,{id:"day-2",children:"Day 2"}),"\n",(0,a.jsxs)(t.p,{children:["On the second day I've attended less talks to not burn myself out :) I've\nstarted with an AI-related talk with title ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/QSF9QQ/",children:"\u201cAI: Open source will save us!\u201d"})}),",\neven though this talk has been improvised, as the speakers from the schedule\ncouldn't have attended, it provided a nice overview what ",(0,a.jsx)(t.a,{href:"https://github.com/instructlab/instructlab",children:"InstructLab"})," can do\nand how can you \u201cfeed\u201d the relevant info into the language models by yourself."]}),"\n",(0,a.jsxs)(t.p,{children:["After that I attended a ",(0,a.jsx)(t.em,{children:"\u201ccoffee enthusiasts Meetup\u201d"})," which was very nice and,\nof course, an organized chaos ","\ud83d\ude09"]}),"\n",(0,a.jsxs)(t.p,{children:["Before attending the social event I wrapped up the second day with a lightning\ntalk about ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/SXWE7K/",children:"recent updates in Toolbx"})}),". I've used both ",(0,a.jsx)(t.a,{href:"https://containertoolbx.org/",children:"toolbx"})," and\n",(0,a.jsx)(t.a,{href:"https://distrobox.it/",children:"distrobox"}),", so it's nice to see the improvements in progress and also that both\nprojects are well and lively."]}),"\n",(0,a.jsx)(t.h2,{id:"day-3",children:"Day 3"}),"\n",(0,a.jsxs)(t.p,{children:["On the third day I've attended only in the afternoon. \u201cStarted\u201d my day with\na discussion ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/8PARM8/",children:"\u201cLeadership: Where people skills meet programmers\u201d"})})," which was\nvery nice for gaining an insight into how developer, manager and QE lead roles\noverlap."]}),"\n",(0,a.jsxs)(t.p,{children:["That talk has been followed up by a talk about ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/8T88MT/",children:"role rotation"})," in our Packit\nTeam. I would say it is a nice \u201cupgrade\u201d to the agile process which allows you\nto not create a single point of failure in the mundane and repetitive processes\nwithin your team."]}),"\n",(0,a.jsxs)(t.p,{children:["And this day has been finished off with a talk about ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/WVNJZS/",children:"shifting left"})," in Podman.\nIt's nice to see how other teams utilize our Packit Service and also the\nservices we rely on, such as ",(0,a.jsx)(t.a,{href:"https://copr.fedorainfracloud.org/",children:"Copr"})," or ",(0,a.jsx)(t.a,{href:"https://docs.testing-farm.io/Testing%20Farm/0.1/index.html",children:"Testing Farm"}),". With the help of Cockpit\ntests they can catch breaking changes early on, or even bugs that have been\nintroduced and break usage of the dependent projects."]}),"\n",(0,a.jsx)(t.p,{children:(0,a.jsx)(t.img,{src:"https://i.imgur.com/bp6FxT9.jpg",alt:"shifting left"})}),"\n",(0,a.jsx)(t.h2,{id:"picks-from-the-packit-team",children:"Picks from the Packit Team"}),"\n",(0,a.jsx)(t.p,{children:"On the Tuesday, during our Packit stand up, I have managed to abuse my\nKanban Lead role to collect some of the talks that each of us would recommend:"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/H9QFLM/",children:"Rapid Prototyping"})," with Open Source AI Models"]}),"\n",(0,a.jsxs)(t.li,{children:["Do you like your ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/ECU7QS/",children:"changelogs"}),"?"]}),"\n",(0,a.jsxs)(t.li,{children:["OpenScanHub - ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/7C38GJ/",children:"Static Analysis"})," of a Linux Distribution"]}),"\n",(0,a.jsxs)(t.li,{children:["Creating a ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/RXKMKA/",children:"Language Server"})," for RPM Spec Files"]}),"\n",(0,a.jsxs)(t.li,{children:["Containers and Kubernetes Made Easy: A 15-minute dive into ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/HKWP7V/",children:"Podman Desktop"})]}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/8PARM8/",children:"\u201cLeadership: Where people skills meet programmers\u201d"})}),"\n"]}),"\n",(0,a.jsx)(t.h2,{id:"wrap-up",children:"Wrap up"}),"\n",(0,a.jsxs)(t.p,{children:["I have to admit that these 3 days have been pretty exhaustive, including\ninformation overload ","\ud83d\ude04"," but at the same time it was really nice to meet\nwith the colleagues and at least some of our users who are not based in Brno."]}),"\n",(0,a.jsxs)(t.section,{"data-footnotes":!0,className:"footnotes",children:[(0,a.jsx)(t.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,a.jsxs)(t.ol,{children:["\n",(0,a.jsxs)(t.li,{id:"user-content-fn-1-ba1b92",children:["\n",(0,a.jsxs)(t.p,{children:["except for the Fedora's downstream ;) ",(0,a.jsx)(t.a,{href:"#user-content-fnref-1-ba1b92","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>r,a:()=>i});var a=n(67294);const s={},o=a.createContext(s);function i(e){const t=a.useContext(o);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),a.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2d2e3e59.8602c0c2.js b/assets/js/2d2e3e59.8602c0c2.js deleted file mode 100644 index 190d244..0000000 --- a/assets/js/2d2e3e59.8602c0c2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[6689],{55268:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>r,toc:()=>l});var a=n(85893),s=n(11151);const o={title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:new Date("2024-06-19T00:00:00.000Z"),authors:[{key:"mf",title:"a.k.a. exhausted DevConf attendee"}],tags:["\ud83c\udfed","red-hat","fedora","devconf","conferences"]},i=void 0,r={permalink:"/blog/2024/06/19/devconf-2024",editUrl:"https://github.com/mfocko/blog/tree/main/blog/2024-06-19-devconf-2024.md",source:"@site/blog/2024-06-19-devconf-2024.md",title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:"2024-06-19T00:00:00.000Z",formattedDate:"June 19, 2024",tags:[{label:"\ud83c\udfed",permalink:"/blog/tags/\ud83c\udfed"},{label:"red-hat",permalink:"/blog/tags/red-hat"},{label:"fedora",permalink:"/blog/tags/fedora"},{label:"devconf",permalink:"/blog/tags/devconf"},{label:"conferences",permalink:"/blog/tags/conferences"}],readingTime:5.355,hasTruncateMarker:!0,authors:[{name:"Matej Focko",email:"me+blog@mfocko.xyz",title:"a.k.a. exhausted DevConf attendee",url:"https://gitlab.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mf"}],frontMatter:{title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:"2024-06-19T00:00:00.000Z",authors:[{key:"mf",title:"a.k.a. exhausted DevConf attendee"}],tags:["\ud83c\udfed","red-hat","fedora","devconf","conferences"]},unlisted:!1,nextItem:{title:"LTS distributions",permalink:"/blog/2024/02/07/lts-distros"}},h={authorsImageUrls:[void 0]},l=[{value:"Day 1",id:"day-1",level:2},{value:"Day 2",id:"day-2",level:2},{value:"Day 3",id:"day-3",level:2},{value:"Picks from the Packit Team",id:"picks-from-the-packit-team",level:2},{value:"Wrap up",id:"wrap-up",level:2}];function c(e){const t={a:"a",blockquote:"blockquote",em:"em",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",section:"section",strong:"strong",sup:"sup",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.p,{children:"I'd like to share my experience and views on some of the talks that I've\nattended on the DevConf.cz 2024."}),"\n",(0,a.jsx)(t.h2,{id:"day-1",children:"Day 1"}),"\n",(0,a.jsx)(t.p,{children:"Let's start with the first day which was Thursday this year as opposed to the\nprevious years when the conference started on Friday and finished on Sunday."}),"\n",(0,a.jsxs)(t.p,{children:["Let's start with the ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/AD3HWR/",children:"keynote"})}),". The keynote wasn't very intersting, at some of\nthe slides actually felt like advertisement for other talks on the topic of the\nAI\u2026"]}),"\n",(0,a.jsxs)(t.p,{children:["Next talk about ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/3UKGLB/",children:"event-driven Ansible"})})," was way more interesting. It allows you\nto run Ansible playbooks after provisioning hosts, or on certain events, such as\ndiscovered vulnerabilities. On one hand it feels like a very nice thing, but on\nthe other one I can't help but to think how you need to write the playbooks, so\nthat they are generic enough. One more example that's been given comes from the\npossibility to react to tickets, e.g., outages and this feels like something\nthat could be abused to cause DoS."]}),"\n",(0,a.jsxs)(t.p,{children:["Afterwards we've seen two lightning talks, one about\n",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/KSDRWL/",children:"choosing the right OpenShift size"})})," which was a pretty quick, but detailly\nlisted all of the possible ways you can deploy OpenShift. This lightning talk\nwas followed by the first AI (lightning) talk I've attended about\n",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/H9QFLM/",children:"rapid prototyping"})})," of the open-source AI models."]}),"\n",(0,a.jsxs)(t.p,{children:["As someone who's involved in the automation of the RPM packaging and testing, of\ncourse, we had to attend ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/NNKT3F/",children:"Learning from Nix"})}),". Nix has a very intriguing\nconcept which is pretty powerful, but painful at the same time. This can be\nsummed up pretty nicely by ",(0,a.jsx)(t.a,{href:"https://twitch.tv/tsoding",children:"Tsoding"})," who got asked about some tips & tricks for\nsomeone who wants to try out NixOS:"]}),"\n",(0,a.jsxs)(t.blockquote,{children:["\n",(0,a.jsx)(t.p,{children:"Just don't."}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:"And now we're moving into a section where everything revolves about the Packit\nTeam :)"}),"\n",(0,a.jsxs)(t.p,{children:["First talk about ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/ECU7QS/",children:"changelogs"})})," was an interactive session that was (probably)\nmeant to share different approaches we take to handle this rather convoluted\ntopic that involves changelogs on both upstream and also on downstream with no\nrules",(0,a.jsx)(t.sup,{children:(0,a.jsx)(t.a,{href:"#user-content-fn-1-ba1b92",id:"user-content-fnref-1-ba1b92","data-footnote-ref":!0,"aria-describedby":"footnote-label",children:"1"})}),"."]}),"\n",(0,a.jsx)(t.p,{children:(0,a.jsx)(t.img,{src:"https://i.imgur.com/YHstMAt.jpg",alt:"changelogs"})}),"\n",(0,a.jsxs)(t.p,{children:["Next one was about ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/7C38GJ/",children:"static analysis"})})," done by ",(0,a.jsx)(t.a,{href:"https://openscanhub.dev/",children:"OpenScanHub"}),". I like the idea of\nrunning the static analysis that can uncover nasty bugs (as it has been even\nshowed in the talk) at the same time as they are introduced. I gotta admit that\nafter seeing the UI of the ",(0,a.jsx)(t.a,{href:"https://openscanhub.fedoraproject.org/",children:"deployed OpenScanHub"})," on the Fedora Infra, I couldn't\nhelp but to think about the ",(0,a.jsx)(t.a,{href:"https://x.com/usgraphics",children:"United States Graphics Company"})," ","\ud83d\ude04"," The UI is\nto the point, no fancy annoying shit, you get what you need, it's hard to get\nlost. ",(0,a.jsx)(t.strong,{children:"Just simplicity."})," Best kind of UI/UX in my opinion."]}),"\n",(0,a.jsxs)(t.p,{children:["After the OpenScanHub talk we're getting to talks that were taken in a totally\ndifferent direction from the usual talks you're used to ","\ud83d\ude09"," First one was\ngiven title of ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/X8SYDG/",children:"\u201cIndiana Jones and obsoleted projects\u201d"})})," by ",(0,a.jsx)(t.a,{href:"https://rodina-sucha.cz/@mirek",children:"Mirek"}),". He talked\nabout projects that got obsoleted, but started with projects that had no\nrelation to IT field at all. I'd mark this talk as a ",(0,a.jsx)(t.em,{children:"stand up"})," without any\nhesitation."]}),"\n",(0,a.jsxs)(t.p,{children:["And finally we will wrap up the first day with the talk where speakers spoke the\nleast\u2026 ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/BDMWF3/",children:"\u201cLet the users speak!\u201d"})})," that involved users of both Packit and\nTesting Farm who spoke about their use case and benefits they gained from using\nboth services in a symbiosis."]}),"\n",(0,a.jsx)(t.h2,{id:"day-2",children:"Day 2"}),"\n",(0,a.jsxs)(t.p,{children:["On the second day I've attended less talks to not burn myself out :) I've\nstarted with an AI-related talk with title ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/QSF9QQ/",children:"\u201cAI: Open source will save us!\u201d"})}),",\neven though this talk has been improvised, as the speakers from the schedule\ncouldn't have attended, it provided a nice overview what ",(0,a.jsx)(t.a,{href:"https://github.com/instructlab/instructlab",children:"InstructLab"})," can do\nand how can you \u201cfeed\u201d the relevant info into the language models by yourself."]}),"\n",(0,a.jsxs)(t.p,{children:["After that I attended a ",(0,a.jsx)(t.em,{children:"\u201ccoffee enthusiasts Meetup\u201d"})," which was very nice and,\nof course, an organized chaos ","\ud83d\ude09"]}),"\n",(0,a.jsxs)(t.p,{children:["Before attending the social event I wrapped up the second day with a lightning\ntalk about ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/SXWE7K/",children:"recent updates in Toolbx"})}),". I've used both ",(0,a.jsx)(t.a,{href:"https://containertoolbx.org/",children:"toolbx"})," and\n",(0,a.jsx)(t.a,{href:"https://distrobox.it/",children:"distrobox"}),", so it's nice to see the improvements in progress and also that both\nprojects are well and lively."]}),"\n",(0,a.jsx)(t.h2,{id:"day-3",children:"Day 3"}),"\n",(0,a.jsxs)(t.p,{children:["On the third day I've attended only in the afternoon. \u201cStarted\u201d my day with\na discussion ",(0,a.jsx)(t.em,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/8PARM8/",children:"\u201cLeadership: Where people skills meet programmers\u201d"})})," which was\nvery nice for gaining an insight into how developer, manager and QE lead roles\noverlap."]}),"\n",(0,a.jsxs)(t.p,{children:["That talk has been followed up by a talk about ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/8T88MT/",children:"role rotation"})," in our Packit\nTeam. I would say it is a nice \u201cupgrade\u201d to the agile process which allows you\nto not create a single point of failure in the mundane and repetitive processes\nwithin your team."]}),"\n",(0,a.jsxs)(t.p,{children:["And this day has been finished off with a talk about ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/WVNJZS/",children:"shifting left"})," in Podman.\nIt's nice to see how other teams utilize our Packit Service and also the\nservices we rely on, such as ",(0,a.jsx)(t.a,{href:"https://copr.fedorainfracloud.org/",children:"Copr"})," or ",(0,a.jsx)(t.a,{href:"https://docs.testing-farm.io/Testing%20Farm/0.1/index.html",children:"Testing Farm"}),". With the help of Cockpit\ntests they can catch breaking changes early on, or even bugs that have been\nintroduced and break usage of the dependent projects."]}),"\n",(0,a.jsx)(t.p,{children:(0,a.jsx)(t.img,{src:"https://i.imgur.com/bp6FxT9.jpg",alt:"shifting left"})}),"\n",(0,a.jsx)(t.h2,{id:"picks-from-the-packit-team",children:"Picks from the Packit Team"}),"\n",(0,a.jsx)(t.p,{children:"On the Tuesday, during our Packit stand up, I have managed to abuse my\nKanban Lead role to collect some of the talks that each of us would recommend:"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsxs)(t.li,{children:[(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/H9QFLM/",children:"Rapid Prototyping"})," with Open Source AI Models"]}),"\n",(0,a.jsxs)(t.li,{children:["Do you like your ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/ECU7QS/",children:"changelogs"}),"?"]}),"\n",(0,a.jsxs)(t.li,{children:["OpenScanHub - ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/7C38GJ/",children:"Static Analysis"})," of a Linux Distribution"]}),"\n",(0,a.jsxs)(t.li,{children:["Creating a ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/RXKMKA/",children:"Language Server"})," for RPM Spec Files"]}),"\n",(0,a.jsxs)(t.li,{children:["Containers and Kubernetes Made Easy: A 15-minute dive into ",(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/HKWP7V/",children:"Podman Desktop"})]}),"\n",(0,a.jsx)(t.li,{children:(0,a.jsx)(t.a,{href:"https://pretalx.com/devconf-cz-2024/talk/8PARM8/",children:"\u201cLeadership: Where people skills meet programmers\u201d"})}),"\n"]}),"\n",(0,a.jsx)(t.h2,{id:"wrap-up",children:"Wrap up"}),"\n",(0,a.jsxs)(t.p,{children:["I have to admit that these 3 days have been pretty exhaustive, including\ninformation overload ","\ud83d\ude04"," but at the same time it was really nice to meet\nwith the colleagues and at least some of our users who are not based in Brno."]}),"\n",(0,a.jsxs)(t.section,{"data-footnotes":!0,className:"footnotes",children:[(0,a.jsx)(t.h2,{className:"sr-only",id:"footnote-label",children:"Footnotes"}),"\n",(0,a.jsxs)(t.ol,{children:["\n",(0,a.jsxs)(t.li,{id:"user-content-fn-1-ba1b92",children:["\n",(0,a.jsxs)(t.p,{children:["except for the Fedora's downstream ;) ",(0,a.jsx)(t.a,{href:"#user-content-fnref-1-ba1b92","data-footnote-backref":"","aria-label":"Back to reference 1",className:"data-footnote-backref",children:"\u21a9"})]}),"\n"]}),"\n"]}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>r,a:()=>i});var a=n(67294);const s={},o=a.createContext(s);function i(e){const t=a.useContext(o);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),a.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3716fece.604cd631.js b/assets/js/3716fece.604cd631.js new file mode 100644 index 0000000..fc2020f --- /dev/null +++ b/assets/js/3716fece.604cd631.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[1511],{76225:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>f,frontMatter:()=>r,metadata:()=>s,toc:()=>l});var o=n(85893),a=n(11151);const r={title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:new Date("2024-06-19T00:00:00.000Z"),authors:[{key:"mf",title:"a.k.a. exhausted DevConf attendee"}],tags:["\ud83c\udfed","red-hat","fedora","devconf","conferences"]},c=void 0,s={permalink:"/blog/2024/06/19/devconf-2024",editUrl:"https://github.com/mfocko/blog/tree/main/blog/2024-06-19-devconf-2024.md",source:"@site/blog/2024-06-19-devconf-2024.md",title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:"2024-06-19T00:00:00.000Z",formattedDate:"June 19, 2024",tags:[{label:"\ud83c\udfed",permalink:"/blog/tags/\ud83c\udfed"},{label:"red-hat",permalink:"/blog/tags/red-hat"},{label:"fedora",permalink:"/blog/tags/fedora"},{label:"devconf",permalink:"/blog/tags/devconf"},{label:"conferences",permalink:"/blog/tags/conferences"}],readingTime:5.36,hasTruncateMarker:!0,authors:[{name:"Matej Focko",email:"me+blog@mfocko.xyz",title:"a.k.a. exhausted DevConf attendee",url:"https://gitlab.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mf"}],frontMatter:{title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:"2024-06-19T00:00:00.000Z",authors:[{key:"mf",title:"a.k.a. exhausted DevConf attendee"}],tags:["\ud83c\udfed","red-hat","fedora","devconf","conferences"]},unlisted:!1,nextItem:{title:"LTS distributions",permalink:"/blog/2024/02/07/lts-distros"}},i={authorsImageUrls:[void 0]},l=[];function d(e){const t={p:"p",...(0,a.a)(),...e.components};return(0,o.jsx)(t.p,{children:"I'd like to share my experience and views on some of the talks that I've\nattended on the DevConf.cz 2024."})}function f(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>c});var o=n(67294);const a={},r=o.createContext(a);function c(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:c(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3716fece.62d9d597.js b/assets/js/3716fece.62d9d597.js deleted file mode 100644 index e044bea..0000000 --- a/assets/js/3716fece.62d9d597.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[1511],{76225:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>f,frontMatter:()=>r,metadata:()=>s,toc:()=>l});var o=n(85893),a=n(11151);const r={title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:new Date("2024-06-19T00:00:00.000Z"),authors:[{key:"mf",title:"a.k.a. exhausted DevConf attendee"}],tags:["\ud83c\udfed","red-hat","fedora","devconf","conferences"]},c=void 0,s={permalink:"/blog/2024/06/19/devconf-2024",editUrl:"https://github.com/mfocko/blog/tree/main/blog/2024-06-19-devconf-2024.md",source:"@site/blog/2024-06-19-devconf-2024.md",title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:"2024-06-19T00:00:00.000Z",formattedDate:"June 19, 2024",tags:[{label:"\ud83c\udfed",permalink:"/blog/tags/\ud83c\udfed"},{label:"red-hat",permalink:"/blog/tags/red-hat"},{label:"fedora",permalink:"/blog/tags/fedora"},{label:"devconf",permalink:"/blog/tags/devconf"},{label:"conferences",permalink:"/blog/tags/conferences"}],readingTime:5.355,hasTruncateMarker:!0,authors:[{name:"Matej Focko",email:"me+blog@mfocko.xyz",title:"a.k.a. exhausted DevConf attendee",url:"https://gitlab.com/mfocko",imageURL:"https://github.com/mfocko.png",key:"mf"}],frontMatter:{title:"DevConf.cz 2024",description:"Sharing my experience on DevConf.cz 2024.\n",date:"2024-06-19T00:00:00.000Z",authors:[{key:"mf",title:"a.k.a. exhausted DevConf attendee"}],tags:["\ud83c\udfed","red-hat","fedora","devconf","conferences"]},unlisted:!1,nextItem:{title:"LTS distributions",permalink:"/blog/2024/02/07/lts-distros"}},i={authorsImageUrls:[void 0]},l=[];function d(e){const t={p:"p",...(0,a.a)(),...e.components};return(0,o.jsx)(t.p,{children:"I'd like to share my experience and views on some of the talks that I've\nattended on the DevConf.cz 2024."})}function f(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>c});var o=n(67294);const a={},r=o.createContext(a);function c(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:c(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4200b1a9.1ca93be5.js b/assets/js/4200b1a9.1ca93be5.js deleted file mode 100644 index bb7e7ae..0000000 --- a/assets/js/4200b1a9.1ca93be5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[866],{24612:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2024/06/19/devconf-2024","metadata":{"permalink":"/blog/2024/06/19/devconf-2024","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2024-06-19-devconf-2024.md","source":"@site/blog/2024-06-19-devconf-2024.md","title":"DevConf.cz 2024","description":"Sharing my experience on DevConf.cz 2024.\\n","date":"2024-06-19T00:00:00.000Z","formattedDate":"June 19, 2024","tags":[{"label":"\ud83c\udfed","permalink":"/blog/tags/\ud83c\udfed"},{"label":"red-hat","permalink":"/blog/tags/red-hat"},{"label":"fedora","permalink":"/blog/tags/fedora"},{"label":"devconf","permalink":"/blog/tags/devconf"},{"label":"conferences","permalink":"/blog/tags/conferences"}],"readingTime":5.355,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. exhausted DevConf attendee","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"DevConf.cz 2024","description":"Sharing my experience on DevConf.cz 2024.\\n","date":"2024-06-19T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. exhausted DevConf attendee"}],"tags":["\ud83c\udfed","red-hat","fedora","devconf","conferences"]},"unlisted":false,"nextItem":{"title":"LTS distributions","permalink":"/blog/2024/02/07/lts-distros"}},"content":"I\'d like to share my experience and views on some of the talks that I\'ve\\nattended on the DevConf.cz 2024.\\n\\n\x3c!--truncate--\x3e\\n\\n## Day 1\\n\\nLet\'s start with the first day which was Thursday this year as opposed to the\\nprevious years when the conference started on Friday and finished on Sunday.\\n\\nLet\'s start with the _[keynote]_. The keynote wasn\'t very intersting, at some of\\nthe slides actually felt like advertisement for other talks on the topic of the\\nAI\u2026\\n\\nNext talk about _[event-driven Ansible]_ was way more interesting. It allows you\\nto run Ansible playbooks after provisioning hosts, or on certain events, such as\\ndiscovered vulnerabilities. On one hand it feels like a very nice thing, but on\\nthe other one I can\'t help but to think how you need to write the playbooks, so\\nthat they are generic enough. One more example that\'s been given comes from the\\npossibility to react to tickets, e.g., outages and this feels like something\\nthat could be abused to cause DoS.\\n\\nAfterwards we\'ve seen two lightning talks, one about\\n_[choosing the right OpenShift size]_ which was a pretty quick, but detailly\\nlisted all of the possible ways you can deploy OpenShift. This lightning talk\\nwas followed by the first AI (lightning) talk I\'ve attended about\\n_[rapid prototyping]_ of the open-source AI models.\\n\\nAs someone who\'s involved in the automation of the RPM packaging and testing, of\\ncourse, we had to attend _[Learning from Nix]_. Nix has a very intriguing\\nconcept which is pretty powerful, but painful at the same time. This can be\\nsummed up pretty nicely by [Tsoding] who got asked about some tips & tricks for\\nsomeone who wants to try out NixOS:\\n\\n> Just don\'t.\\n\\nAnd now we\'re moving into a section where everything revolves about the Packit\\nTeam :)\\n\\nFirst talk about _[changelogs]_ was an interactive session that was (probably)\\nmeant to share different approaches we take to handle this rather convoluted\\ntopic that involves changelogs on both upstream and also on downstream with no\\nrules[^1].\\n\\n![changelogs](https://i.imgur.com/YHstMAt.jpg)\\n\\nNext one was about _[static analysis]_ done by [OpenScanHub]. I like the idea of\\nrunning the static analysis that can uncover nasty bugs (as it has been even\\nshowed in the talk) at the same time as they are introduced. I gotta admit that\\nafter seeing the UI of the [deployed OpenScanHub] on the Fedora Infra, I couldn\'t\\nhelp but to think about the [United States Graphics Company] :smile: The UI is\\nto the point, no fancy annoying shit, you get what you need, it\'s hard to get\\nlost. **Just simplicity.** Best kind of UI/UX in my opinion.\\n\\nAfter the OpenScanHub talk we\'re getting to talks that were taken in a totally\\ndifferent direction from the usual talks you\'re used to :wink: First one was\\ngiven title of _[\u201cIndiana Jones and obsoleted projects\u201d]_ by [Mirek]. He talked\\nabout projects that got obsoleted, but started with projects that had no\\nrelation to IT field at all. I\'d mark this talk as a _stand up_ without any\\nhesitation.\\n\\nAnd finally we will wrap up the first day with the talk where speakers spoke the\\nleast\u2026 _[\u201cLet the users speak!\u201d]_ that involved users of both Packit and\\nTesting Farm who spoke about their use case and benefits they gained from using\\nboth services in a symbiosis.\\n\\n## Day 2\\n\\nOn the second day I\'ve attended less talks to not burn myself out :) I\'ve\\nstarted with an AI-related talk with title _[\u201cAI: Open source will save us!\u201d]_,\\neven though this talk has been improvised, as the speakers from the schedule\\ncouldn\'t have attended, it provided a nice overview what [InstructLab] can do\\nand how can you \u201cfeed\u201d the relevant info into the language models by yourself.\\n\\nAfter that I attended a _\u201ccoffee enthusiasts Meetup\u201d_ which was very nice and,\\nof course, an organized chaos :wink:\\n\\nBefore attending the social event I wrapped up the second day with a lightning\\ntalk about _[recent updates in Toolbx]_. I\'ve used both [toolbx] and\\n[distrobox], so it\'s nice to see the improvements in progress and also that both\\nprojects are well and lively.\\n\\n## Day 3\\n\\nOn the third day I\'ve attended only in the afternoon. \u201cStarted\u201d my day with\\na discussion _[\u201cLeadership: Where people skills meet programmers\u201d]_ which was\\nvery nice for gaining an insight into how developer, manager and QE lead roles\\noverlap.\\n\\nThat talk has been followed up by a talk about [role rotation] in our Packit\\nTeam. I would say it is a nice \u201cupgrade\u201d to the agile process which allows you\\nto not create a single point of failure in the mundane and repetitive processes\\nwithin your team.\\n\\nAnd this day has been finished off with a talk about [shifting left] in Podman.\\nIt\'s nice to see how other teams utilize our Packit Service and also the\\nservices we rely on, such as [Copr] or [Testing Farm]. With the help of Cockpit\\ntests they can catch breaking changes early on, or even bugs that have been\\nintroduced and break usage of the dependent projects.\\n\\n![shifting left](https://i.imgur.com/bp6FxT9.jpg)\\n\\n## Picks from the Packit Team\\n\\nOn the Tuesday, during our Packit stand up, I have managed to abuse my\\nKanban Lead role to collect some of the talks that each of us would recommend:\\n\\n- [Rapid Prototyping] with Open Source AI Models\\n- Do you like your [changelogs]?\\n- OpenScanHub - [Static Analysis] of a Linux Distribution\\n- Creating a [Language Server] for RPM Spec Files\\n- Containers and Kubernetes Made Easy: A 15-minute dive into [Podman Desktop]\\n- [\u201cLeadership: Where people skills meet programmers\u201d]\\n\\n## Wrap up\\n\\nI have to admit that these 3 days have been pretty exhaustive, including\\ninformation overload :smile: but at the same time it was really nice to meet\\nwith the colleagues and at least some of our users who are not based in Brno.\\n\\n[^1]: except for the Fedora\'s downstream ;)\\n\\n[keynote]: https://pretalx.com/devconf-cz-2024/talk/AD3HWR/\\n[event-driven ansible]: https://pretalx.com/devconf-cz-2024/talk/3UKGLB/\\n[choosing the right openshift size]: https://pretalx.com/devconf-cz-2024/talk/KSDRWL/\\n[rapid prototyping]: https://pretalx.com/devconf-cz-2024/talk/H9QFLM/\\n[learning from nix]: https://pretalx.com/devconf-cz-2024/talk/NNKT3F/\\n[tsoding]: https://twitch.tv/tsoding\\n[changelogs]: https://pretalx.com/devconf-cz-2024/talk/ECU7QS/\\n[static analysis]: https://pretalx.com/devconf-cz-2024/talk/7C38GJ/\\n[openscanhub]: https://openscanhub.dev/\\n[deployed openscanhub]: https://openscanhub.fedoraproject.org/\\n[united states graphics company]: https://x.com/usgraphics\\n[\u201cindiana jones and obsoleted projects\u201d]: https://pretalx.com/devconf-cz-2024/talk/X8SYDG/\\n[mirek]: https://rodina-sucha.cz/@mirek\\n[\u201clet the users speak!\u201d]: https://pretalx.com/devconf-cz-2024/talk/BDMWF3/\\n[\u201cai: open source will save us!\u201d]: https://pretalx.com/devconf-cz-2024/talk/QSF9QQ/\\n[instructlab]: https://github.com/instructlab/instructlab\\n[recent updates in toolbx]: https://pretalx.com/devconf-cz-2024/talk/SXWE7K/\\n[toolbx]: https://containertoolbx.org/\\n[distrobox]: https://distrobox.it/\\n[\u201cleadership: where people skills meet programmers\u201d]: https://pretalx.com/devconf-cz-2024/talk/8PARM8/\\n[role rotation]: https://pretalx.com/devconf-cz-2024/talk/8T88MT/\\n[shifting left]: https://pretalx.com/devconf-cz-2024/talk/WVNJZS/\\n[copr]: https://copr.fedorainfracloud.org/\\n[testing farm]: https://docs.testing-farm.io/Testing%20Farm/0.1/index.html\\n[language server]: https://pretalx.com/devconf-cz-2024/talk/RXKMKA/\\n[podman desktop]: https://pretalx.com/devconf-cz-2024/talk/HKWP7V/"},{"id":"/2024/02/07/lts-distros","metadata":{"permalink":"/blog/2024/02/07/lts-distros","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2024-02-07-lts-distros.md","source":"@site/blog/2024-02-07-lts-distros.md","title":"LTS distributions","description":"Shower thoughts on the LTS Linux distributions.\\n","date":"2024-02-07T00:00:00.000Z","formattedDate":"February 7, 2024","tags":[{"label":"lts","permalink":"/blog/tags/lts"},{"label":"linux distributions","permalink":"/blog/tags/linux-distributions"},{"label":"support","permalink":"/blog/tags/support"},{"label":"paywall","permalink":"/blog/tags/paywall"}],"readingTime":14.515,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. small Fedora maintainer","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"LTS distributions","description":"Shower thoughts on the LTS Linux distributions.\\n","date":"2024-02-07T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. small Fedora maintainer"}],"tags":["lts","linux distributions","support","paywall"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"DevConf.cz 2024","permalink":"/blog/2024/06/19/devconf-2024"},"nextItem":{"title":"Mixed feelings on Rust","permalink":"/blog/2024/01/28/rust-opinion"}},"content":"Linux distributions are a common choice for running the servers. There\'s a wide\\nvariety of distributions, but on the servers majority is made by only a few.\\n\\nSome corporations also profit from the support of the \u201cbig\u201d distributions. Let\'s\\ndive into the pros, cons and peculiarities of such _business_.\\n\\nThis post is inspired/triggered by the following Mastodon post:\\n[![Mastodon post about Ubuntu Pro](https://i.imgur.com/mh5RAlV.png)](https://hackers.town/@antijingoist/111864760073049505)\\n\\n\x3c!--truncate--\x3e\\n\\n:::caution Disclaimer\\n\\nYou may take my opinion with a grain of salt, since I\'m affiliated with Red Hat,\\nbut at the same time I\'ve also seen the other side of the fence, so I know how\\nit works from the perspective of the provider/maintainer.\\n\\n:::\\n\\n:::tip\\n\\nIf you are not very oriented in the matters of Linux distributions and\\nmaintaining of packages, I suggest looking at the [glossary](#glossary) at the\\nend to have a better grasp of the terms that are used throughout the post.\\n\\n:::\\n\\n## Point of linux distributions\\n\\nFirst thing I\'d like to point out is the point of the Linux distributions. What\\nbenefit do they provide? And why there are so many of them\u2026\\n\\nAs it has been brought up many times by the _rms_[^1], Linux by itself is not\\nenough, it\'s just the kernel that does the underlying work. We need more\\nsoftware to utilize the hardware. That\'s the gap that Linux distributions bridge\\nby providing the Linux and much more other software that we need.\\n\\nEach distribution is unique in its own way. Some prefer different ways of\\nhandling the software (like Gentoo that allows you to compile it yourself) and\\nothers stable releases of software (like Debian).\\n\\nIn the end it mostly boils down to the packaging. I, as a user, want to do\\nsomething like\\n\\n```\\n$ sudo dnf5 install firefox\\n```\\n\\nand not bother about anything else. I don\'t want to open browser to look the\\nthing up, download it and then click mindlessly 500\xd7 \u201cNext\u201d. I just want to run\\none command and when the maintainers decide it\'s time to move on, another one to\\nupgrade the software to the newer version.\\n\\nOf course, for some use cases you want to minimize the latter. And even make\\nsure that it\'s safe to do it when you need to. You don\'t want to break your\\nproduction deployment just because someone decided it\'s time to push something\\nout.\\n\\nThat\'s when the _maintainers_ come in. They take upon themselves the\\nresponsibility of maintaining the packages. If you\'ve ever used the Debian, you\\nknow very well how _old_ the software is, but that\'s what you might need for\\nyour servers.\\n\\n## Pain of packaging\\n\\nPackaging software _is not_ cost-free. You may as well have 80 % of packages\\nthat don\'t need much care and it\'s rather easy to push them forward, but those\\nremaining, which are complicated and raise issues regularly, will make it up and\\ntake a lot of time and also pain.\\n\\nLibraries are the most common example that might not need much work to be done.\\nOn the other hand, Linux kernel itself is a rather complicated machinery that\\nis patched **a lot** and its build process is not simple either.\\n\\nEven if you consider just those _easily-maintainble_ packages, the process can\\nbe tedious, boring and overall time consuming.\\n\\n:::tip Shameless RHEL-based ecosystem plug\\n\\n[Packit] can help tremendously with the _easily-maintainable_ packages, since it\\n**can** be automated.\\n\\n:::\\n\\n### Packaging whole ecosystems\\n\\nNow it\'s time to talk about whole ecosystems that have some kind of a packaging\\nby themselves. Yes, I mean Python (with its continuous stream of different\\npackage managers), Rust, Go, etc.\\n\\nWhole point of packaging is to have some form of _gating_. In other words, you\\nwant some kind of _quality control_ when pushing changes into the Linux distros.\\n\\nIf you want to package some tool (or even library) from the aforementioned\\necosystems, you need to package all of the dependencies to make sure something\\ndoesn\'t get updated in the meantime (and also that you can safely reproduce the\\nbuilds, if need be).\\n\\nI\'ve tried to package some utilities for EPEL both in Rust and Go. Dependencies\\nform a DAG[^2] and in case of Rust, it\'s _very_ similar to the way `npm` does\\nits packaging.\\n\\n:::danger Spoiler alert\\n\\nYou get a lot of dependencies. And since it\'s a tree of dependencies, there may\\nbe **a lot** of them.\\n\\n:::\\n\\nI have no clue how do the Rust maintainers operate, but I\'m tipping my fedora in\\ntheir direction, since it must be a _pain in the ass_.\\n\\n## Paid distributions\\n\\nYou can find few Linux distributions that are \u201cpaid\u201d. I\'m very well aware of the\\nfact I\'ve used quotes around the word, cause it\'s not that easy and not even\\nsame for all of the distributions that involve some kind of a payment.\\n\\nOne of the first non-free distributions I\'ve come into contact was _[Zorin OS]_\\nwhich basically tries to be the best _transition_ solution when moving away from\\nthe Windows or macOS. If you have a look at the _perks_ of its _Pro_ version\\nthat\'s paid, you may as well decide they are rather questionable\u2026\\n\\nIt\'s time to move into the _Ubuntu Pro_, _RHEL_ and _SLE_ territory. What\'s the\\npoint of those? They definitely offer different kind of, let\'s say,\\n_non-free experience_.\\n\\nWith those you are paying mainly for the support and bug/security patches.\\n\\n:::tip Fun fact\\n\\nThere\'s no mention of any kind of support on the Zorin page\u2026 Apart from the fact\\nthat _you are supporting_ the Zorin development.\\n\\n:::\\n\\n## Repository structure\\n\\nAs I have mentioned above, the three _services_[^3] I mentioned are providing\\nsupport with regards to bugs and security vulnerabilites. Therefore it makes\\nsense to have some kind of a process in place when you\'re pushing changes\\n(either updates, patches or _security_ patches) to the distribution. And yes,\\nthese processes are _in place_.\\n\\nIf you think about the amount of packages that is present in the community\\ndistributions like _archLinux_ (14,830 packages) or _Fedora_ (74,309 packages),\\nit is safe to come to a conclusion that _there\'s no way_ to support all of them.\\n\\n:::tip archLinux\\n\\nIt may seem that archLinux contains rather small set of packages, but one of the\\n_killer features_ of archLinux lies in the AUR (archLinux User Repository) where\\nyou can find additional **93,283** packages.\\n\\n:::\\n\\nThat\'s why the Linux distributions have some structure to their repositories\\nthat contain packages. The way you go around this is rather simple, you choose\\nsome set of _critical_ packages that you guarantee support for (like Linux\\nkernel, openSSL, etc.) and maintain those with all the QA processes in place.\\n\\n:::caution Unpopular opinion\\n\\nThis is also one of the reasons why I\'m quite against packaging anything and\\neverything into the Linux distribution. In my opinion it is impossible to\\n**properly** maintain **huge** set of packages and enforce some kind of\\n**quality control**.\\n\\n:::\\n\\n### Ubuntu\\n\\nUbuntu has pretty granular structure of their repositories, namely:\\n\\n- `main` containing the \u201ccore\u201d of the Ubuntu that is maintained by the Canonical,\\n- `universe` containing literally the \u201cuniverse\u201d, packages that everyone likes,\\n but they\'re not crucial, this repo is maintained mostly by the community,\\n- `multiverse` containing packages with some license or copyright issues, and\\n- `restricted` containing _proprietary_ packages like nvidia drivers and such.\\n\\nBy briefly checking my Ubuntu 23.10 installation, here are stats of packages in\\ntheir respective repositories:\\n\\n- `main` with 6,128 packages,\\n- `universe` with 63,380 packages,\\n- `multiverse` with 997 packages, and finally\\n- `restricted` with 784 packages.\\n\\nAs you can see, if we sum them up, they are relatively similar to the Fedora\\nnumbers.\\n\\n### CentOS\\n\\nCentOS on the other hand has a bit simpler structure with BaseOS for the base\\nand AppStream for additional packages:\\n\\n- `baseos` with 1,058 packages,\\n- `appstream` with 5,646 packages, and\\n- `extras-common` with 42 packages.\\n\\nOverall they make up the similar number as the Ubuntu\'s `main` repository. And\\nyou can also notice that there are no additional repositories.\\n\\n:::tip\\n\\nThere\'s also a CRB (CodeReady Builder) repository with dev packages like headers\\nand such.\\n\\nAnd you can also enable EPEL (Extra Packages for Enterprise Linux) which is\\ncommunity-supported and provides another 19,903 packages.\\n\\n:::\\n\\n## Ubuntu Pro\\n\\nNow it\'s time to get back to the Ubuntu Pro. There are multiple points that need\\nto be taken in account to be either positive or negative about it\u2026\\n\\nWe can start with the way Ubuntu is released and maintained. Ubuntu has regular\\n6-month release cycle and biannual LTS release. Releases are normally supported\\nfor 9 months with the exception of the LTS releases being supported for 5 years.\\n\\nIf you check out the _[Ubuntu Pro]_ website, you can find the following\\nstatement:\\n\\n> **Ubuntu Pro**\\n>\\n> The most comprehensive subscription for open-source software security\\n>\\n> 30-day trial for enterprises. Always free for personal use.\\n\\n:::tip Personal use\\n\\nUbuntu Pro for _personal use_ consists of 5 installations and in case of the\\ncommunity _ambassadors_ 50.\\n\\n:::\\n\\nOverall if you try to find what is included in the Ubuntu Pro:\\n\\n- high and critical patches,\\n- 10 years of maintenance, and\\n- (optional) 24/7 enterprise-grade support.\\n\\nIf we get back to the screenshot all the way at the beginning of the post:\\n[![Mastodon post about Ubuntu Pro](https://i.imgur.com/mh5RAlV.png)](https://hackers.town/@antijingoist/111864760073049505)\\n\\nand try to look up to which repository the packages mentioned in the screenshot\\nbelong, we will find out that they belong to `universe` repository which is\\nmaintained by the community. Not to mention nature of the packages: multimedia.\\n\\nYou may think about this as a scam, but considering repository consisting of 70k\\npackages, it is not an easy task to do. And with LTS releases we\'re talking\\nabout 5+ years of support.\\n\\n:::info Fedora\\n\\nTry to compare this state to Fedora. It also has a 6-month release cycle, but\\nthere are no LTS releases and each release is supported only for a year.\\n\\n:::\\n\\nCommon strategy, at this point, is to pull out the _open-source_. Yes, we are\\nstill dealing with the open-source, but keep in mind that you\'re trying to patch\\nsome issue in a version that\'s 5 years old, upstream definitely doesn\'t care\\nanymore[^4], the development didn\'t stop 5 years ago, it\'s going on and fixing\\nthis issue in a release from 5 years is not the same as fixing it in the current\\nrelease. At this point, if you are paying for such support, you are actually\\npaying for someone to do _software archaeology_ which **can be** _non-trivial_\\nto do.\\n\\nIn the case of Ubuntu Pro we\'re talking about community support and best-effort\\nsupport by Canonical for the paying customers. And that makes sense to me,\\nrunning LTS distro for 5+ years on a desktop seems like an odd choice, even\\nwith the help of _[podman]_ and _[distrobox]_ or _[toolbx]_ that allow us to use\\nstable or LTS distro as a base and containerized development environments on top\\nof that.\\n\\n## RHEL ecosystem\\n\\nRHEL ecosystem is much more complicated in this matter. However it\'s very\\nsimilar to the way SUSE operates with few exceptions.\\n\\nYou can see a flow diagram here:\\n\\n```mermaid\\nflowchart LR;\\n U[upstream] --\x3e FR[Fedora Rawhide];\\n FR --\x3e F[Fedora release];\\n F --\x3e C[CentOS Stream];\\n C --\x3e R[RHEL];\\n```\\n\\nKey things to take and not to take from the flow diagram:\\n\\n- getting from one upstream to its respective downstream is not as simple as the\\n presence of an arrow and it\'s not the same process for all of them\\n- lengths of the arrows are not proportional, specifically:\\n - Fedora Rawhide is _supposed to_ consume updates as soon as possible,\\n - depending on the decision of the maintainer they can, but _don\'t have to_ be\\n included in the currently supported Fedora releases (you can take [Emacs] as\\n an example of such package), but Rawhide eventually becomes the next Fedora\\n release,\\n - CentOS Stream gets branched off a specific Fedora release, and then\\n - ultimately CentOS Stream becomes the next **minor** release of RHEL.\\n- this diagram is simplified by **a lot**\\n\\n:::tip SUSE flow for comparison\\n\\nI\'ll also include a SUSE flow, so you can compare:\\n\\n```mermaid\\nflowchart LR;\\n U[upstream] --\x3e T[openSUSE Tumbleweed];\\n T --\x3e L[openSUSE Leap];\\n L --\x3e S[SUSE Linux Enterprise];\\n S --\x3e L;\\n```\\n\\nYou can notice, as opposed to the RHEL ecosystem, some changes are being\\nbackported to the openSUSE Leap.\\n\\nHowever this is subject to change as there is a new [ALP] project arising which\\nis, more than likely, going to replace the Leap.\\n\\n:::\\n\\n### Change in the model\\n\\nThe flow I\'ve shown above is in effect since late \u201820 and early \u201821. I hope you\\ncan see that it is quite similar to the way SUSE operates too. Before late \u201820\\nthe flow was following:\\n\\n```mermaid\\nflowchart LR;\\n U[upstream] --\x3e FR[Fedora Rawhide];\\n FR --\x3e F[Fedora release];\\n F --\x3e R[RHEL];\\n R --- C[CentOS];\\n```\\n\\nCentOS was the last distribution in that \u201cchain\u201d. This provides some benefits\\nand some negatives.\\n\\n#### Before the change\\n\\nFrom the point of a developer, unless you have some kind of an early access to\\nRHEL, you don\'t see the changes until they land and are already released. This\\nimpairs your ability to test and verify your software before shipping it to your\\nclients that use RHEL.\\n\\nFrom the point of a user, there is one positive, you basically get \u201cfree RHEL\u201d\\nwithout the support. This also allowed you to report bugs against the RHEL,\\nsince they were 1:1 distros (minus the branding and support). So you\'d\\ntechnically get RHEL free of charge.\\n\\nBenefit of such project, except for the cost, is questionable. The main issue,\\nwhich actually became even more apparent after changing the flow, is someone\\nelse repackaging your own product and selling it again.\\n\\n#### After the change\\n\\nFirst of all, the current flow counters the issue mentioned above. You can test\\nyour projects against the _next minor RHEL release_. CentOS Stream is free, so\\nyou can freely incorporate it into your CI pipelines.\\n\\n:::tip Shameless plug pt. 2\\n\\nAgain, [Packit] can help you on upstream to verify that you\'re not breaking your\\nRPM builds and on top of that you can also use [Testing Farm] to run tests on a\\nspecific Fedora or CentOS Stream releases.\\n\\n> Green tests may not be green everywhere and catching such issues as soon as\\n> possible costs much less than catching them further down the chain.\\n\\n:::\\n\\nThere are many people thinking that RHEL has become closed-source. It is not.\\nThe development happens _out in the open_, it\'s more open that it was before.\\nHowever with the cost of not getting the exact same thing for free. You can get\\nthe next minor RHEL, not the same that\'s normally paid for. [Packit] is an\\nexample of a service that is deployed on the CentOS 9 Stream and even used to be\\ndeployed on Fedora, but the regular 6-month release cycle caused some minor\\nissues here and there.\\n\\n_Production-ready_ is something that heavily depends on the context\u2026\\n\\n:::tip Free \u201cclones\u201d\\n\\nAfter this change so-called _free \u201cclones\u201d_ emerged. I have to admit that in\\ncase of _[AlmaLinux]_ I can see some benefits e.g., pushing for live images and\\nsupport of various desktop environments, Raspberry Pi support or even WSL images\\nbeing present in the M$ Store and easy to install.\\n\\n:::\\n\\n## Open-source and paid support\\n\\nOverall I don\'t think that paying for the support of 5 years old _non-critical_\\npackages is going against the open-source. It is a non-trivial work that, in\\nmajority of cases, cannot be included in the upstream, therefore the benefit is\\nreapt only by the paying customers. I have to admit that in the case of the\\nUbuntu Pro it may seem a bit weird (hiding patches behind the paywall). However\\nwe\'re still talking about rather big set of packages that will affect a minority\\nof server workloads, if any.\\n\\n## Glossary\\n\\n- _rolling release_ - continuously released without \u201csignificant milestones\u201d\\n\\n :::tip\\n\\n As an example of rolling distribution you can take archLinux, openSUSE\\n Tumbleweed, Fedora Rawhide, or even CentOS 9 Stream.\\n\\n As en example of **not** rolling distribution you can take Ubuntu, openSUSE\\n Leap or Fedora.\\n\\n :::\\n\\n- _bleeding edge_ - contains the latest versions as they are released on the\\n upstream\\n\\n :::tip\\n\\n As an example you can take archLinux, openSUSE Tumbleweed or Fedora Rawhide.\\n You can also notice how common it is to combine _rolling release_ with\\n _bleeding edge_.\\n\\n :::\\n\\n- _upstream_ & _downstream_\\n\\n You\'re most likely to meet these terms in the meaning of upstream being the\\n project itself and downstream being the packaging of said project in some\\n distribution.\\n\\n However this can also apply to distributions like _openSUSE Tumbleweed_ with\\n _openSUSE Leap_, _Fedora_ with _CentOS Stream_, or even _CentOS Stream_ with\\n _RHEL_. This basically means that the packages/software is being released into\\n the upstream (Tumbleweed, Fedora, or even CentOS) and then after being tested\\n is taken further down into their respective downstreams (Leap, CentOS, RHEL).\\n\\n[almalinux]: https://almalinux.org/\\n[alp]: https://susealp.io/\\n[distrobox]: https://distrobox.it/\\n[emacs]: https://src.fedoraproject.org/rpms/emacs/\\n[packit]: https://packit.dev/\\n[podman]: https://podman.io/\\n[testing farm]: https://docs.testing-farm.io/Testing%20Farm/0.1/index.html\\n[toolbx]: https://containertoolbx.org/\\n[ubuntu pro]: https://ubuntu.com/pro/\\n[zorin os]: https://zorin.com/os/pro/\\n\\n[^1]: Richard Stallman\\n[^2]: directed acyclic graph\\n[^3]:\\n Ubuntu Pro is technically a service whereas the RHEL and SLE are distros\\n with the support included.\\n\\n[^4]:\\n There are upstream projects that keep LTS branches, such as Linux kernel,\\n but even in the case of the kernel itself, they\'re planning on ending it,\\n since the cost outweighs the benefits at this point."},{"id":"/2024/01/28/rust-opinion","metadata":{"permalink":"/blog/2024/01/28/rust-opinion","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2024-01-28-rust-opinion.md","source":"@site/blog/2024-01-28-rust-opinion.md","title":"Mixed feelings on Rust","description":"Discussing my mixed feelings about the Rust language.\\n","date":"2024-01-28T00:00:00.000Z","formattedDate":"January 28, 2024","tags":[{"label":"rust","permalink":"/blog/tags/rust"},{"label":"memory safety","permalink":"/blog/tags/memory-safety"},{"label":"cult","permalink":"/blog/tags/cult"},{"label":"hype","permalink":"/blog/tags/hype"}],"readingTime":15.395,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. passionate language hater","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Mixed feelings on Rust","description":"Discussing my mixed feelings about the Rust language.\\n","date":"2024-01-28T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. passionate language hater"}],"tags":["rust","memory safety","cult","hype"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"LTS distributions","permalink":"/blog/2024/02/07/lts-distros"},"nextItem":{"title":"How can Copr help with broken dependencies","permalink":"/blog/2023/08/02/copr"}},"content":"Rust has become a rather popular language these days. I\'ve managed to get my\\nhands dirty with it during _[Advent of Code]_ \u201822 and partially \u201823. I\'ve also\\nused it for few rounds of _[Codeforces]_ and I have to try very hard to maintain\\nsome variety of languages for LeetCode challenges along with the Rust. I\'ll\\ndisclaim up front that I won\'t be only positive, since this post is a result of\\nmultiple discussions about Rust and I stand by\\n_\u201cAll that glitters is not gold\u201d_, so if you can\'t stand your favorite language\\nbeing criticized in any way, don\'t even proceed. :wink:\\n\\n\x3c!--truncate--\x3e\\n\\n## Memory safety\\n\\nI\'ll start by kicking the biggest benefit of the language, the memory safety.\\nLet\'s be honest here, majority of the checks rely on the static analysis, cause\\nyou can\'t do anything else during the compile-time, right? Therefore we can\\nbasically say that we are relying on the compiler to \u201csolve\u201d all of our issues.\\n\\n:::warning\\n\\nI\'m not doubting the fact that compiler can prevent **a lot** of the memory\\nerrors, I\'m just saying it\'s not realistic to cover **everything**.\\n\\n:::\\n\\n### Compiler\\n\\nI guess we can safely[^2] agree on the fact that we 100% rely on the compiler to\\n_have our back_. Is the compiler bug-free? I doubt it. This is not meant in an\\noffensive way to the Rust compiler developers, but we need to be realistic here.\\nIt\'s a compiler, even older and larger projects like _gcc_ or _llvm_ can\'t avoid\\nbugs to appear.\\n\\nWhen I was trying out Rust for some of the LeetCode challenges I\'ve stumbled\\nupon the following warning:\\n![Example of a compiler bug](https://i.imgur.com/NfPLF6o.png)\\n\\n:::danger [Issue](https://github.com/rust-lang/rust/issues/59159)\\n\\nThe issue here comes from the fact that we have 2 simultaneous references to the\\nsame memory (one is mutable and one immutable). If you cannot think of any way\\nthis can break, I\'ll give you a rather simple example from C++ where this could\\ncause an issue.\\n\\nImagine a function that has some complex object and also calls a coroutine which\\nutilizes read-only reference to that object. When the coroutine suspends, the\\ncaller can modify the object. This can break the integrity of data read by the\\ncoroutine.\\n\\n- Yes, this **can** cause a memory error.\\n- Yes, this **hasn\'t** been handled until someone noticed it.\\n\\nFixing this bug is not backwards compatible, cause you\'re covering a case that\\nhasn\'t been covered before.\\n\\n:::\\n\\n### Enforcing the safety\\n\\nOne of the ways Rust enforces the safety is by restricting what you can do, like\\nthe example above. Aforementioned issue _can_ happen, but **doesn\'t have to**.\\nRule of the thumb in the Rust compiler is to _\u201cblock\u201d_ anything that can be an\\nissue, static analysis can\'t do much more, it cannot decide whether it\'s safe to\\ndo it or not.\\n\\nSatisfying the Rust compiler is sometimes a brutal pain in the ass, because you\\ncannot do things like you\'re used to, you need to work around them _somehow_.\\n\\n:::tip\\n\\nKey difference between Rust and C or C++ lies in the fact that Rust chooses to\\n_ban_ all \u201cpotentially offensive\u201d actions, C and C++ _relies_ on **you** to be\\nsure it\'s safe to do.\\n\\n![C++ v. Rust](https://i.imgur.com/0vbkYPp.png)\\n\\n:::\\n\\n### Consequences\\n\\nWhere are we heading with this approach of \u201cif it compiles, it runs\u201d though?\\nIn this aspect I have a rather similar opinion as with regards to the ChatGPT\\nand its derivatives.\\n\\nIf you teach people to 100% depend on the compiler, they will do it, cause it\'s\\n_easy_. All you need to do is make the compiler _shut up_[^3]. Giving up the\\n_intellectual masturbation_ about the memory safety will make you lose your edge\\nover the time. When we get to the point of everyone being in the mindset\\nmentioned above, who\'s going to maintain the compiler? This is the place where\\nyou **need to** think about the memory safety and furthermore in a much more\\ngeneral way than in your own projects, because it is the thing that everyone\\n_blindly believes in_ in the end.\\n\\nI\'m not saying that everyone should give up Rust and think about their memory\\nmanagement and potential memory issues. I\'m just saying that going the easy way\\nwill make people _dull_ and they should think about it anyways, that\'s how the\\nissue above has been discovered. If everyone walked past and didn\'t think about\\nit, no one would discover this issue till it bit them hard.\\n\\n:::tip Standard library\\n\\nEven the standard library is littered with `unsafe` blocks that are prefixed\\nwith comments in style:\\n\\n```rs\\n// SAFETY: \u2026\\n```\\n\\nThe fact that the _casual_ Rust dev doesn\'t have to think much about safety,\\ncause the compiler has their back, doesn\'t mean that the Rust compiler dev\\ndoesn\'t either.\\n\\nI gotta admit that I adopted this concept in other languages (even in Python),\\ncause you can encounter situations where it doesn\'t have to be clear _why_ you\\ncan do _what_ you\'re doing.\\n\\n:::\\n\\n## Development & design\\n\\nDevelopment of Rust is\u2026 very fast. One positive is that they\'re trying to be as\\nbackward compatible as possible at least by verifying against all the published\\ncrates in the process. Of course, you cannot be backward compatible about fixing\\nthe bugs that have been found, but such is life.\\n\\n### Fast development cycle\\n\\nOne of the negatives of the fast development cycle is the fact that they\'re\\nusing the latest features already in the next release of the Rust. Yes, it is\\nsomething that you can use for verifying and testing your own changes, but at\\nthe same time it places a requirement of the latest release to compile the next\\none.\\n\\n:::tip\\n\\nIf you check `gcc` for example, they have a requirement of minimal version of\\ncompiler that you need for the build. Though gcc\'s requirement is not so _needy_\\nas the Rust one.\\n\\n:::\\n\\nOne of the other negatives is the introduction of bugs. If you\'re pushing\\nchanges, somewhat mindlessly, at such a fast pace, it is inevitable to introduce\\na bunch bugs in the process. Checking the GitHub issue tracker with\\n\\n```\\nis:issue is:open label:C-bug label:T-compiler\\n```\\n\\nyields **2,224** open issues at the time of writing this post.\\n\\n### RFCs\\n\\nYou can find **a lot** of RFCs for the Rust. Some of them are more questionable\\nthan the others. Fun thing is that a lot of them make it to the nightly builds,\\nso they can be tested and polished off. Even the questionable ones\u2026 I\'ll leave\\nfew examples for a better understanding.\\n\\nOne of such features is the `do yeet` expression:\\n\\n```rust\\n#![feature(yeet_expr)]\\n\\nfn foo() -> Result {\\n do yeet 4;\\n}\\nassert_eq!(foo(), Err(4));\\n\\nfn bar() -> Option {\\n do yeet;\\n}\\nassert_eq!(bar(), None);\\n```\\n\\nIt allows you to \u201cyeet\u201d the errors out of the functions that return `Result` or\\n`Option`.\\n\\n[One](https://github.com/rust-lang/rfcs/pull/3503) of the more recent ones is\\nthe ability to include Cargo manifests into the sources, so you can do something\\nlike:\\n\\n```rust\\n#!/usr/bin/env cargo\\n---\\n[dependencies]\\nclap = { version = \\"4.2\\", features = [\\"derive\\"] }\\n---\\n\\nuse clap::Parser;\\n\\n#[derive(Parser, Debug)]\\n#[clap(version)]\\nstruct Args {\\n #[clap(short, long, help = \\"Path to config\\")]\\n config: Option,\\n}\\n\\nfn main() {\\n let args = Args::parse();\\n println!(\\"{:?}\\", args);\\n}\\n```\\n\\nI would say you can get almost anything into the language\u2026\\n\\n## Community and hype train\\n\\nRust community is a rather unique thing. A lot of people will hate me for this,\\nbut I can\'t help, but to compare them to _militant vegans_. I\'ll go through some\\nof the things related to it, so I can support my opinion at least.\\n\\n_Rust is the best language._ It is not. There is no best language, each has its\\nown positives and negatives, you need to choose the language that\'s **the most**\\n**suitable for your use case**. There are areas where Rust excels, though I have\\nto admit it\'s very close to being a universal hammer regardless of how suitable\\nit is. There is a very steep learning curve to it, beginnings in Rust are very\\npainful.\\n\\n_Rewrite everything in Rust._ Just no. There are multiple feedbacks on doing\\nrewrites, it is very common to fix _N_ bugs with a rewrite while introducing\\n_N + 1_ other bugs in the process. It doesn\'t solve anything unless there are\\nsome strong reasons to go with it. Majority of such suggested rewrites don\'t\\nhave those reasons though.\\n\\n_Language \u2039x\u203a is bad, though in Rust\u2026_ Cherry-picking one specific pain point of\\none language and reflecting how it is better in other language can go both ways.\\nFor example it is rather easy to pick the limitations imposed by Rust compiler\\nand show how it\'s possible in other languages :man_shrugging:\\n\\nI don\'t mind any of those opinions, you\'re free to have them, as long as you\\ndon\'t rub them in my face which is not the usual case\u2026 This experience makes it\\njust worse for me, part of this post may be also influenced by this fact.\\n\\n### Rust in Linux\\n\\n:::caution\\n\\nAs someone who has seen the way Linux kernel is built in the RHEL ecosystem, how\\ncomplex the whole thing is and how much resources you need to proceed, I have\\nvery strong opinions on this topic.\\n\\n:::\\n\\nIt took years of work to even \u201cincorporate\u201d Rust into the Linux codebase, just\\nto get the \u201cHello World!\u201d. I don\'t have anything against the idea of writing\\ndrivers in the Rust, I bet it can catch a lot of common mistakes, but still\\nintroducing Rust to the kernel is another step to enlarge the monster.\\n\\nI have to admit though that the _Apple GPU_ driver for Linux written in Rust is\\nquite impressive. Apart from that there are not so many benefits, yet\u2026\\n\\n## Packaging\\n\\nI\'ll divide the packaging into the packaging of the language itself and the\\nprograms written in Rust.\\n\\nLet\'s start with the `cargo` itself though. Package managers of the languages\\nusually get a lot of hate (you can take `npm` or `pip` as examples[^1]). If\\nyou\'ve ever tried out Rust, I bet you already know where I\'m going with this.\\nYes, I mean the compilation times, or even Cargo downloading _whole_ index of\\ncrates just so you can update that one dependency (and 3 millions of indirect\\ndeps). When I was doing AoC \u201822 in Rust, I\'ve set up `sccache` right away on the\\nfirst day.\\n\\nLet\'s move to the packaging of the Rust itself, it\'s tedious. Rust has a very\\nfast development cycle and doesn\'t even try to make the builds backward\\ncompatible. If there is a new release of Rust, there is a very high chance that\\nyou cannot build that release with anything other than **the latest** Rust\\nrelease. If you have ever touched the packaging, you know that this is something\\nthat can cause a lot of problems, cause you need the second-to-latest version to\\ncompile the latest version, don\'t forget that this applies inductively\u2026 People\\nrunning _Gentoo_ could tell you a lot about this.\\n\\n:::info\\n\\nCompiling the compilers takes usually more time than compiling the kernel\\nitself\u2026\\n\\n:::\\n\\nI cannot speak about packaging of Rust programs in other than RHEL-based\\ndistros, though I can speak about RHEL ecosystem. Fedora packaging guidelines\\nspecify that you need to build each and every dependency of the program\\nseparately. I wanted to try out _AlmaLinux_ and install Alacritty there and I\\nfailed miserably. The solution that worked, consisted of ignoring the packaging\\nguidelines, running `cargo build` and consuming the binaries afterwards.\\nDependencies of the Rust programs are of a similar nature as JS dependencies.\\n\\n> I\'m tipping my fedora[^2] in the general direction of the maintainers of Rust\\n> packages in RHEL ecosystem. I wouldn\'t be able to do this without losing my\\n> sanity.\\n\\n## Likes\\n\\nIf you\'ve come all the way here and you\'re a Rustacean, I believe I\'ve managed\\nto get your blood boiling, so it\'s time to finish this off by stuff I like about\\nRust. I doubt I will be able to cover everything, but I can try at least. You\\nhave to admit it\'s much easier to remember the bad stuff as opposed to the good.\\n:wink:\\n\\n### Workflow and toolchain\\n\\nI prefered using Rust for the _Advent of Code_ and _Codeforces_ as it provides\\na rather easy way to test the solutions before running them with the challenge\\ninput (or test runner). I can give an example from the _Advent of Code_:\\n\\n```rust\\nuse aoc_2023::*;\\n\\ntype Output1 = i32;\\ntype Output2 = Output1;\\n\\nstruct DayXX {}\\nimpl Solution for DayXX {\\n fn new>(pathname: P) -> Self {\\n let lines: Vec = file_to_lines(pathname);\\n\\n todo!()\\n }\\n\\n fn part_1(&mut self) -> Output1 {\\n todo!()\\n }\\n\\n fn part_2(&mut self) -> Output2 {\\n todo!()\\n }\\n}\\n\\nfn main() -> Result<()> {\\n DayXX::main()\\n}\\n\\ntest_sample!(day_XX, DayXX, 42, 69);\\n```\\n\\nThis was the skeleton I\'ve used and the macro at the end is my own creation that\\nexpands to:\\n\\n```rust\\n#[cfg(test)]\\nmod day_XX {\\n use super::*;\\n\\n #[test]\\n fn part_1() {\\n let path = DayXX::get_sample(1);\\n let mut day = DayXX::new(path);\\n assert_eq!(day.part_1(), 42);\\n }\\n\\n #[test]\\n fn part_2() {\\n let path = DayXX::get_sample(2);\\n let mut day = DayXX::new(path);\\n assert_eq!(day.part_2(), 69);\\n }\\n}\\n```\\n\\nWhen you\'re solving the problem, all you need to do is switch between\\n`cargo test` and `cargo run` to check the answer to either sample or the\\nchallenge input itself.\\n\\nIntroduce [bacon] and it gets even better. Bacon is a CLI tool that wraps around\\nthe `cargo` and allows you to check, run, lint or run tests on each file save.\\nIt\'s a very pleasant thing for a so-called _compiler-assisted_ development.\\n\\nSpeaking of linting from within the bacon, you cannot leave out the [clippy].\\nNot only it can whip your ass because of errors, but it can also produce a lot\\nof helpful suggestions, for example passing slices by borrow instead of\\nborrowing the `Vec` itself when you don\'t need it.\\n\\n### Standard library\\n\\nThere\'s **a lot** included in the standard library. It almost feels like you\\nhave all you need[^4]. I like placeholders (like `todo!()`, `unreachable!()`,\\n`unimplemented!()`) to the extent of\\n[implementing](/cpp/exceptions-and-raii/placeholders) them as exceptions in C++.\\n\\nYou can find almost anything. Though you can also hit some very weird issues\\nwith some of the nuances of the type system.\\n\\n### `unsafe`\\n\\nThis might be something that people like to avoid as much as possible. However I\\nthink that forming a habit of commenting posibly unsafe operations in **any**\\nlanguage is a good habit, as I\'ve mentioned above. You should be able to argue\\nwhy you can do something safely, even if the compiler is not kicking your ass\\nbecause of it.\\n\\nExcerpt of such comment from work:\\n\\n```py\\n# SAFETY: Taking first package instead of specific package should be\\n# safe, since we have put a requirement on \xbbone\xab \u2039upstream_project_url\u203a\\n# per Packit config, i.e. even if we\'re dealing with a monorepo, there\\n# is only \xbbone\xab upstream. If there is one upstream, there is only one\\n# set of GPG keys that can be allowed.\\nreturn self.downstream_config.packages[\\n self.downstream_config._first_package\\n].allowed_gpg_keys\\n```\\n\\n### Traits\\n\\nOne of the other things I like are the traits. They are more restrictive than\\ntemplates or concepts in C++, but they\'re doing their job pretty good. If you\\nare building library and require multiple traits to be satisfied it means a lot\\nof copy-paste, but that\'s soon to be fixed by the [trait aliases].\\n\\n:::tip Comparing to other languages\\n\\nOn Wikipedia I\'ve seen trait being defined as a more restrictive type class as\\nyou may know it from the Haskell for example. C++ isn\'t behind either with its\\n_constraints and concepts_. I would say that we can order them in the following\\norder based on the complexity they can express:\\n\\n```\\nRust\'s trait < Haskell\'s type class < C++\'s concept\\n```\\n\\n:::\\n\\nYou can also hit some issues, like me when trying to support conversions between\\nunderlying numeric types of a 2D vectors or support for using an operator from\\nboth sides (I couldn\'t get `c * u` to work in the same way as `u * c` because\\nthe first one requires you to implement the trait of a built-in type).\\n\\n:::warning Implementation\\n\\nImplementing traits lies in\\n\\n```rust\\nimpl SomeTrait for SomeStruct {\\n // implementation goes here\\n}\\n```\\n\\nOne of the things I **would love to** see is being able to define the helper\\nfunctions within the same block. As of now, the only things allowed are the ones\\nthat are required by the trait, which in the end results in a randomly lying\\nfunctions around (or in a implementation of the structure itself). I don\'t like\\nthis mess at all\u2026\\n\\n:::\\n\\n### Influence of functional paradigm\\n\\nYou can see a big influence of the functional paradigm. Not only in iterators,\\nbut also in the other parts of the language. For example I prefer `Option` or\\n`Result` to `null`s and exceptions. Pattern matching together with\\ncompiler both enforces handling of the errors and rather user-friendly way of\\ndoing it.\\n\\nNot to mention `.and_then()` and such. However spending most of the time with\\nthe AoC you get pretty annoyed of the repetitive `.unwrap()` during parsing,\\nsince you are guaranteed correct input.\\n\\n### Macros\\n\\nMacros are a very strong pro of the Rust. And no, we\'re not going to talk about\\nthe procedural macros\u2026\\n\\nAs I\'ve shown above I\'ve managed to \u201ctame\u201d a lot of copy-paste in the tests for\\nthe AoC by utilizing a macro that generated a very basic template for the tests.\\n\\nAs I have mentioned the traits above, I cannot forget to give props to `derive`\\nmacro that allows you to \u201cdeduce\u201d the default implementation. It is very helpful\\nfor a tedious tasks like implementing `Debug` (for printing out the structures)\\nor comparisons, though with the comparisons you need to be careful about the\\ndefault implementation, it has already bitten me once or twice.\\n\\n## Summary\\n\\nOverall there are many things about the Rust I like and would love to see them\\nimplemented in other languages. However there are also many things I don\'t like.\\nNothing is **exclusively** black and white.\\n\\n[advent of code]: https://adventofcode.com\\n[bacon]: https://dystroy.org/bacon/\\n[clippy]: https://github.com/rust-lang/rust-clippy\\n[codeforces]: https://codeforces.com\\n[trait aliases]: https://github.com/rust-lang/rfcs/blob/master/text/1733-trait-alias.md\\n\\n[^1]:\\n not to even mention multiple different packaging standards Python has, which\\n is borderline https://xkcd.com/927/\\n\\n[^2]: pun intended\\n[^3]: It\'s not that easy with the Rust compiler, but OK\u2026\\n[^4]:\\n unlike Python where there\'s whole universe in the language itself, yet there\\n are essential things not present\u2026"},{"id":"/2023/08/02/copr","metadata":{"permalink":"/blog/2023/08/02/copr","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2023-08-02-copr.md","source":"@site/blog/2023-08-02-copr.md","title":"How can Copr help with broken dependencies","description":"Copr comes to save you when maintainer doesn\'t care.","date":"2023-08-02T00:00:00.000Z","formattedDate":"August 2, 2023","tags":[{"label":"\ud83c\udfed","permalink":"/blog/tags/\ud83c\udfed"},{"label":"red-hat","permalink":"/blog/tags/red-hat"},{"label":"copr","permalink":"/blog/tags/copr"},{"label":"admin","permalink":"/blog/tags/admin"},{"label":"vps","permalink":"/blog/tags/vps"}],"readingTime":3.44,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. your opinionated admin","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"How can Copr help with broken dependencies","description":"Copr comes to save you when maintainer doesn\'t care.","date":"2023-08-02T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. your opinionated admin"}],"tags":["\ud83c\udfed","red-hat","copr","admin","vps"]},"unlisted":false,"prevItem":{"title":"Mixed feelings on Rust","permalink":"/blog/2024/01/28/rust-opinion"},"nextItem":{"title":"4th week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/4th-week"}},"content":"When you decide to run Fedora on your VPS, you might get screwed over by using\\nrandom repositories\u2026\\n\\n\x3c!--truncate--\x3e\\n\\nWhen I \u201creserved\u201d my VPS[^1] back in June \'20, I slapped Fedora on it without\\nthinking. I bet 99% of people would say that I\'m crazy for doing such thing[^2],\\n**BUT** I\'ve been using Fedora on my PCs for some time already and it felt very\\nstable and natural to just use, even for VPS.\\n\\nOne of the first things I\'ve done was setting up a mail server. You may guess\\nwhat\'s the fun part about having a mail server\u2026 Yes, it\'s all the spam you\\nreceive and only then you realize how much \u201ccrap\u201d gets filtered on free mail\\nservices. To battle this problem I chose to use\\n[rspamd](https://github.com/rspamd/rspamd) that had CentOS support, but someone\\nhad a [Copr](https://copr.fedorainfracloud.org/) repository that I used to\\ninstall it.\\n\\n## How does Copr repositories work?\\n\\nIf you have ever used Ubuntu, you might be familiar with the concept since it is\\nvery close to [PPAs](https://help.ubuntu.com/community/PPA).\\n\\ntl;dr of the whole process consists of\\n\\n1. enabling the Copr repository, and\\n2. installing the desired package.\\n\\nSo in shell you would do\\n\\n```\\n# dnf copr enable \u2039copr-repository\u203a\\n# dnf install \u2039package-from-the-repository\u203a\\n```\\n\\nAnd\u2026 that\'s it! Nothing else needed! Simple, right? And literally same process\\nas you would do for the PPA.\\n\\n:::tip AUR\\n\\nOn the other hand, if you are familiar with the archLinux, you definitely know\\nAUR and what it can do for you. Copr repository is pretty similar, but the\\npackages are prebuilt in Copr and Copr repositories can carry the required\\ndependencies for said packages, which simplifies the distribution, and can even\\nhelp with installing singular packages (when you just need the dependency, not\\neverything).\\n\\n:::\\n\\n## My issue\\n\\nNow you might wonder how would I use it on my VPS. It\'s rather simple, once in\\n6 months a new Fedora release comes out. And you need to upgrade to newer\\nrelease\u2026 You don\'t need to do it right away and for such setup it probably isn\'t\\neven recommended.\\n\\n:::tip\\n\\nFedora releases are supported for a year, i.e. they live 6 months till the next\\nrelease and then another 6 months till another release.\\n\\nSome people prefer to run one version \u201cbehind\u201d. If you ever decide to run it on\\nyour home server or in a similar setup, it might be a pretty good idea to\\nfollow. I\'m using the \u201clatest greatest\u201d, cause why not :smile:\\n\\nOne way or another, you still need to bump the release every six months, unless\\nyou\'d bump 2 releases at once every year, which would be a decision, since, at\\nleast I, cannot see any benefits in it\u2026 You don\'t go for \u201cstability\u201d, cause once\\na year you switch to the latest release and then, before you bump, you use one\\nyear old software, so you\'re not even using the latest.\\n\\n:::\\n\\nFast-forward 2 years in the future, new Fedora release came out (October \'22)\\nand I was doing an upgrade. Dependencies of the rspamd have been updated and\\nrspamd builds in Copr have failed and no one fixed it. Cool, so now I can\\nupgrade, but can either ignore the dependencies or uninstall the rspamd\u2026\\n\\n## How can Copr help?\\n\\nI have managed to find\\n[specfile](https://github.com/rspamd/rspamd/blob/master/rpm/rspamd.spec) for the\\nrspamd package that they use for CentOS. There were some files apart from the\\nspecfile, so I had to make an SRPM locally and then\u2026 I just uploaded the SRPM\\nto the Copr to\\n[build](https://copr.fedorainfracloud.org/coprs/mfocko/rspamd/build/5046567/)\\nan RPM.\\n\\nI have switched the previous Copr repository for rspamd with my own and happily\\nproceeded with the upgrade.\\n\\n## Conclusion\\n\\nCopr is heavily used for testing builds on the upstream with\\n[Packit](https://packit.dev). However, as you can see, it is possible to use it\\n**very well** for packaging your own stuff and avoiding issues (such as the one\\nI have described above), if need be.\\n\\n[^1]: [vpsFree.cz](https://vpsfree.cz)\\n[^2]:\\n Even though I\'ve been running archLinux on some Raspberry Pi\'s and also\\n on one of my \u201chome servers\u201d, before getting the VPS. You could say I like\\n to live on the edge\u2026"},{"id":"aoc-2022/4th-week","metadata":{"permalink":"/blog/aoc-2022/4th-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/04-week-4.md","source":"@site/blog/aoc-2022/04-week-4.md","title":"4th week of Advent of Code \'22 in Rust","description":"Surviving fourth week in Rust.","date":"2023-07-07T15:14:00.000Z","formattedDate":"July 7, 2023","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":15.175,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"4th week of Advent of Code \'22 in Rust","description":"Surviving fourth week in Rust.","date":"2023-07-07T15:14","slug":"aoc-2022/4th-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"How can Copr help with broken dependencies","permalink":"/blog/2023/08/02/copr"},"nextItem":{"title":"3rd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/3rd-week"}},"content":"Let\'s go through the fourth week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 22: Monkey Map](https://adventofcode.com/2022/day/22)\\n\\n:::info tl;dr\\n\\nSimulating a movement on a 2D map with given instructions. Map becomes a cube in\\nthe 2nd part\u2026\\n\\n:::\\n\\n:::caution Rant\\n\\nThis was the most obnoxious problem of this year\u2026 and a lot of Rust issues have\\nbeen hit.\\n\\n:::\\n\\n### Solution\\n\\nIt seems like a very simple problem to solve, but with very obnoxious changes in\\nthe 2nd part and also it\'s relatively hard to decompose \xbbproperly\xab.\\n\\n#### Column iterator\\n\\nIn the first part of the problem it was needed to know the boundaries of each\\nrow and column, since I stored them in `Vec>` and padded with spaces\\nto ensure I have a rectangular 2D \u201carray\u201d. However when you wanted to go through\\neach row and column to determine the boundaries, it was very easy to do for the\\nrows (cause each row is a `Vec` element), but not for the columns, since they\\nspan multiple rows.\\n\\nFor this use case I have implemented my own _column iterator_:\\n\\n```rust\\npub struct ColumnIterator<\'a, T> {\\n map: &\'a [Vec],\\n column: usize,\\n\\n i: usize,\\n}\\n\\nimpl<\'a, T> ColumnIterator<\'a, T> {\\n pub fn new(map: &\'a [Vec], column: usize) -> ColumnIterator<\'a, T> {\\n Self { map, column, i: 0 }\\n }\\n}\\n\\nimpl<\'a, T> Iterator for ColumnIterator<\'a, T> {\\n type Item = &\'a T;\\n\\n fn next(&mut self) -> Option {\\n if self.i >= self.map.len() {\\n return None;\\n }\\n\\n self.i += 1;\\n Some(&self.map[self.i - 1][self.column])\\n }\\n}\\n```\\n\\nGiven this piece of an iterator, it is very easy to factor out the common\\nfunctionality between the rows and columns into:\\n\\n```rust\\nlet mut find_boundaries = |constructor: fn(usize) -> Orientation,\\n iterator: &mut dyn Iterator,\\n upper_bound,\\n i| {\\n let mut first_non_empty = iterator.enumerate().skip_while(|&(_, &c)| c == \' \');\\n let start = first_non_empty.next().unwrap().0 as isize;\\n\\n let mut last_non_empty = first_non_empty.skip_while(|&(_, &c)| c != \' \');\\n let end = last_non_empty.next().unwrap_or((upper_bound, &\'_\')).0 as isize;\\n\\n boundaries.insert(constructor(i), start..end);\\n};\\n```\\n\\nAnd then use it as such:\\n\\n```rust\\n// construct all horizontal boundaries\\n(0..map.len()).for_each(|row| {\\n find_boundaries(\\n Orientation::horizontal,\\n &mut map[row].iter(),\\n map[row].len(),\\n row,\\n );\\n});\\n\\n// construct all vertical boundaries\\n(0..map[0].len()).for_each(|col| {\\n find_boundaries(\\n Orientation::vertical,\\n &mut ColumnIterator::new(&map, col),\\n map.len(),\\n col,\\n );\\n});\\n```\\n\\n#### Walking around the map\\n\\nOnce the 2nd part got introduced, you start to think about a way how not to\\ncopy-paste a lot of stuff (I haven\'t avoided it anyways\u2026). In this problem, I\'ve\\nchosen to introduce a trait (i.e. _interface_) for 2D and 3D walker.\\n\\n```rust\\ntrait Wrap: Clone {\\n type State;\\n\\n // simulation\\n fn is_blocked(&self) -> bool;\\n fn step(&mut self, steps: isize);\\n fn turn_left(&mut self);\\n fn turn_right(&mut self);\\n\\n // movement\\n fn next(&self) -> (Self::State, Direction);\\n\\n // final answer\\n fn answer(&self) -> Output;\\n}\\n```\\n\\nEach walker maintains its own state and also provides the functions that are\\nused during the simulation. The \u201cpromised\u201d methods are separated into:\\n\\n- _simulation_-related: that are used during the simulation from the `.fold()`\\n- _movement_-related: just a one method that holds most of the logic differences\\n between 2D and 3D\\n- _final answer_: which extracts the _proof of solution_ from the\\n implementation-specific walker\\n\\nBoth 2D and 3D versions borrow the original input and therefore you must\\nannotate the lifetime of it:\\n\\n```rust\\nstruct Wrap2D<\'a> {\\n input: &\'a Input,\\n position: Position,\\n direction: Direction,\\n}\\nimpl<\'a> Wrap2D<\'a> {\\n fn new(input: &\'a Input) -> Wrap2D<\'a> {\\n// \u2026\\n```\\n\\n#### Problems\\n\\nI have used a lot of closures for this problem and once I introduced a parameter\\nthat was of unknown type (apart from the fact it implements a specific trait), I\\ngot suggested a \u201cfix\u201d for the compilation error that resulted in something that\\nwas not possible to parse, cause it, more than likely, violated the grammar.\\n\\nIn a similar fashion, I have been suggested changes that led to a code that\\ndidn\'t make sense by just looking at it (there was no need to try the changes),\\nfor example one suggested change in the closure parameter caused disapperance of\\nthe parameter name. :smile:\\n\\n#### Clippy\\n\\nI have to admit that Clippy was rather helpful here, I\'ll include two examples\\nof rather smart suggestions.\\n\\nWhen writing the parsing for this problem, the first thing I have spotted on the\\n`char` was the `.is_digit()` function that takes a radix as a parameter. Clippy\\nnoticed that I use `radix = 10` and suggested switching to `.is_ascii_digit()`\\nthat does exactly the same thing:\\n\\n```diff\\n- .take_while(|c| c.is_digit(10))\\n+ .take_while(|c| c.is_ascii_digit())\\n```\\n\\nAnother useful suggestion appeared when working with the iterators and I wanted\\nto get the $n$-th element from it. You know the `.skip()`, you know the\\n`.next()`, just \u201cslap\u201d them together and we\'re done for :grin: Well, I got\\nsuggested to use `.nth()` that does exactly the combination of the two mentioned\\nmethods on iterators:\\n\\n```diff\\n- match it.clone().skip(skip).next().unwrap() {\\n+ match it.clone().nth(skip).unwrap() {\\n```\\n\\n## [Day 23: Unstable Diffusion](https://adventofcode.com/2022/day/23)\\n\\n:::info tl;dr\\n\\nSimulating movement of elves around with a set of specific rules.\\n\\n:::\\n\\n### Solution\\n\\nThere\'s not much to mention since it\'s just a cellular automaton simulation\\n(even though the AoC rules for cellular automatons usually get out of hand\\n:wink:).\\n\\nAlthough I had a need to determine boundaries of the elves\' positions and ended\\nup with a nasty DRY violation. Knowing that you you\'re looking for maximum and\\nminimum that are, of course, exactly the same except for initial values and\\ncomparators, it looks like a rather simple fix, but typing in Rust is something\\nelse, right? In the end I settled for a function that computes both boundaries\\nwithout any duplication while using a closure:\\n\\n```rust\\nfn get_bounds(positions: &Input) -> (Vector2D, Vector2D) {\\n let f = |init, cmp: &dyn Fn(isize, isize) -> isize| {\\n positions\\n .iter()\\n .fold(Vector2D::new(init, init), |acc, elf| {\\n Vector2D::new(cmp(acc.x(), elf.x()), cmp(acc.y(), elf.y()))\\n })\\n };\\n\\n (f(isize::MAX, &min::), f(isize::MIN, &max::))\\n}\\n```\\n\\nThis function returns a pair of 2D vectors that represent opposite points of the\\nbounding rectangle of all elves.\\n\\nYou might ask why would we need a closure and the answer is that `positions`\\ncannot be captured from within the nested function, only via closure. One more\\nfun fact on top of that is the type of the comparator\\n\\n```rust\\n&dyn Fn(isize, isize) -> isize\\n```\\n\\nOnce we remove the `dyn` keyword, compiler yells at us and also includes a way\\nhow to get a more thorough explanation of the error by running\\n\\n $ rustc --explain E0782\\n\\nwhich shows us\\n\\n Trait objects must include the `dyn` keyword.\\n\\n Erroneous code example:\\n\\n ```\\n trait Foo {}\\n fn test(arg: Box) {} // error!\\n ```\\n\\n Trait objects are a way to call methods on types that are not known until\\n runtime but conform to some trait.\\n\\n Trait objects should be formed with `Box`, but in the code above\\n `dyn` is left off.\\n\\n This makes it harder to see that `arg` is a trait object and not a\\n simply a heap allocated type called `Foo`.\\n\\n To fix this issue, add `dyn` before the trait name.\\n\\n ```\\n trait Foo {}\\n fn test(arg: Box) {} // ok!\\n ```\\n\\n This used to be allowed before edition 2021, but is now an error.\\n\\n:::danger Rant\\n\\nNot all of the explanations are helpful though, in some cases they might be even\\nmore confusing than helpful, since they address _very simple_ use cases.\\n\\nAs you can see, even in this case there are two sides to the explanations:\\n\\n- it explains why you need to use `dyn`, but\\n- it still mentions that trait objects need to be heap-allocated via `Box`\\n that, as you can see in my snippet, **does not** apply here :smile: IMO it\'s\\n caused by the fact that we are borrowing it and therefore we don\'t need to\\n care about the size or whereabouts of it.\\n\\n:::\\n\\n:::info C++ parallel\\n\\nIf you dive into the explanation above, you can notice that the `Box`\\npattern is very helpful for using types that are not known during compile-time.\\nYou would use a very similar approach in C++ when parsing some data structure\\nfrom input (let\'s say JSON for example).\\n\\nOn the other hand, in this case, it doesn\'t really make much sense, cause you\\ncan clearly see that the types **are known** during the compile-time, which in\\nC++ could be easily resolved by templating the helper function.\\n\\n:::\\n\\n## [Day 24: Blizzard Basin](https://adventofcode.com/2022/day/24)\\n\\n:::info tl;dr\\n\\nNavigating your way through a basin with series of blizzards that move around\\nyou as you move.\\n\\n:::\\n\\n:::caution\\n\\nIt\'s second to last day and I went \u201c_bonkers_\u201d on the Rust :smile: Proceed to\\nread _Solution_ part on your own risk.\\n\\n:::\\n\\n### Solution\\n\\nYou are given a map with blizzards all over the place and you\'re supposed to\\nfind the minimum time it requires you to walk through the basin without getting\\nin any of the blizzards.\\n\\n#### Breakdown\\n\\nRelatively simple, yet a bit annoying, approach can be taken. It\'s technically\\na shortest-path algorithm implementation with some relaxation restrictions and\\nbeing able to stay on one position for some time, so each _vertex_ of the graph\\nis determined by the position on the map and the _timestamp_. I have chosen to\\nuse `Vector3D`, since `x` and `y` attributes can be used for the position\\nand, well, let\'s use `z` for a timestamp, cause why not, right? :wink:\\n\\n#### Evaluating the blizzards\\n\\n:::caution\\n\\nI think that this is the most perverted abuse of the traits in the whole 4 weeks\\nof AoC in Rust\u2026\\n\\n:::\\n\\nThe blizzards move along their respective directions in time and loop around in\\ntheir respective row/column. Each vertex holds position **and** time, so we can\\n_just_ index the basin with the vertex itself, right? Yes, we can :smiling_imp:\\n\\n:::tip Fun fact\\n\\nWhile writing this part, I\'ve recognized unnecessary verbosity in the code and\\ncleaned it up a bit. The changed version is shown here and the original was just\\nmore verbose.\\n\\n:::\\n\\nI\'ll skip the boring parts of checking bounds and entry/exit of the basin :wink:\\nWe can easily calculate positions of the blizzards using a modular arithmetics:\\n\\n```rust\\nimpl Index for Basin {\\n type Output = char;\\n\\n fn index(&self, index: Position) -> &Self::Output {\\n // \u2039skipped boring parts\u203a\\n\\n // We need to account for the loops of the blizzards\\n let width = self.cols - 2;\\n let height = self.rows - 2;\\n\\n let blizzard_origin = |size, d, t, i| ((i - 1 + size + d * (t % size)) % size + 1) as usize;\\n [\\n (\\n index.y() as usize,\\n blizzard_origin(width, -1, index.z(), index.x()),\\n \'>\',\\n ),\\n (\\n index.y() as usize,\\n blizzard_origin(width, 1, index.z(), index.x()),\\n \'<\',\\n ),\\n (\\n blizzard_origin(height, -1, index.z(), index.y()),\\n index.x() as usize,\\n \'v\',\\n ),\\n (\\n blizzard_origin(height, 1, index.z(), index.y()),\\n index.x() as usize,\\n \'^\',\\n ),\\n ]\\n .iter()\\n .find_map(|&(y, x, direction)| {\\n if self.map[y][x] == direction {\\n Some(&self.map[y][x])\\n } else {\\n None\\n }\\n })\\n .unwrap_or(&\'.\')\\n }\\n}\\n```\\n\\nAs you can see, there is an expression for calculating the original position and\\nit\'s used multiple times, so why not take it out to a lambda, right? :wink:\\n\\nI couldn\'t get the `rustfmt` to format the `for`-loop nicely, so I\'ve just\\ndecided to go with iterating over an elements of a slice. I have used, once\\nagain, a combination of two functions (`find_map` in this case) to do 2 things\\nat once and at the end, if we haven\'t found any blizzard, we just return the\\nempty space.\\n\\nI think it\'s a very _nice_ (and naughty) way how to use the `Index` trait, don\'t\\nyou think?\\n\\n#### Shortest-path algorithm\\n\\nFor the shortest path you can choose and adjust any of the common shortest-path\\nalgorithms, in my case, I have decided to use [_A\\\\*_] instead of Dijkstra\'s\\nalgorithm, since it better reflects the _cost_ function.\\n\\n:::info Comparison of costs\\n\\nWith the Dijkstra\'s algorithm I would proceed with the `time` attribute used as\\na priority for the queue.\\n\\nWhereas with the _A\\\\*_, I have chosen to use both time and Manhattan distance\\nthat promotes vertices closer to the exit **and** with a minimum time taken.\\n\\n:::\\n\\nCost function is, of course, a closure :wink:\\n\\n```rust\\nlet cost = |p: Position| p.z() as usize + exit.y().abs_diff(p.y()) + exit.x().abs_diff(p.x());\\n```\\n\\nAnd also for checking the possible moves from the current vertex, I have\\nimplemented, yet another, closure that yields an iterator with the next moves:\\n\\n```rust\\nlet next_positions = |p| {\\n [(0, 0, 1), (0, -1, 1), (0, 1, 1), (-1, 0, 1), (1, 0, 1)]\\n .iter()\\n .filter_map(move |&(x, y, t)| {\\n let next_p = p + Vector3D::new(x, y, t);\\n\\n if basin[next_p] == \'.\' {\\n Some(next_p)\\n } else {\\n None\\n }\\n })\\n};\\n```\\n\\n#### Min-heap\\n\\nIn this case I had a need to use the priority queue taking the elements with the\\nlowest cost as the prioritized ones. Rust only offers you the [`BinaryHeap`] and\\nthat is a max-heap. One of the ways how to achieve a min-heap is to put the\\nelements in wrapped in a [`Reverse`] (as is even showed in the linked [docs of\\nthe `BinaryHeap`]). However the wrapping affects the type of the heap and also\\npopping the most prioritized elements yields values wrapped in the `Reverse`.\\n\\nFor this purpose I have just taken the max-heap and wrapped it as a whole in a\\nseparate structure providing just the desired methods:\\n\\n```rust\\nuse std::cmp::{Ord, Reverse};\\nuse std::collections::BinaryHeap;\\n\\npub struct MinHeap {\\n heap: BinaryHeap>,\\n}\\n\\nimpl MinHeap {\\n pub fn new() -> MinHeap {\\n MinHeap {\\n heap: BinaryHeap::new(),\\n }\\n }\\n\\n pub fn push(&mut self, item: T) {\\n self.heap.push(Reverse(item))\\n }\\n\\n pub fn pop(&mut self) -> Option {\\n self.heap.pop().map(|Reverse(x)| x)\\n }\\n}\\n\\nimpl Default for MinHeap {\\n fn default() -> Self {\\n Self::new()\\n }\\n}\\n```\\n\\nRest is just the algorithm implementation which is not that interesting.\\n\\n## [Day 25: Full of Hot Air](https://adventofcode.com/2022/day/25)\\n\\n:::info tl;dr\\n\\nPlaying around with a numbers in a _special_ base.\\n\\n:::\\n\\nGetting flashbacks to the _IB111 Foundations of Programming_\u2026 Very nice \u201cproblem\u201d\\nwith a rather easy solution, as the last day always seems to be.\\n\\n### Solution\\n\\nImplementing 2 functions, converting from the _SNAFU base_ and back to the _SNAFU_\\n_base_ representation. Let\'s do a bit more though! I have implemented two functions:\\n\\n- `from_snafu`\\n- `to_snafu`\\n\\nNow it is apparent that all I do is number to string and string to number. Hmm\u2026\\nthat sounds familiar, doesn\'t it? Let\'s introduce a structure for the SNAFU numbers\\nand implement the traits that we need.\\n\\nLet\'s start with a structure:\\n\\n```rust\\n#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]\\nstruct SNAFU {\\n value: i64,\\n}\\n```\\n\\n#### Converting from `&str`\\n\\nWe will start by implementing the `FromStr` trait that will help us parse our input.\\nThis is rather simple, I can just take the `from_snafu` function, copy-paste it\\ninto the `from_str` method and the number I get will be wrapped in `Result` and\\n`SNAFU` structure.\\n\\n#### Converting to `String`\\n\\nThis is more fun. In some cases you need to implement only one trait and others\\nare automatically implemented using that one trait. In our case, if you look in\\nthe documentation, you can see that `ToString` trait is automatically implemented\\nfor any type that implements `Display` trait.\\n\\nLet\'s implement the `Display` trait then. We should be able to use the `to_snafu`\\nfunction and just take the `self.value` from the `SNAFU` structure.\\n\\nAnd for the convenience of tests, we can also implement a rather simple `From`\\ntrait for the `SNAFU`.\\n\\n#### Adjusting the code\\n\\nAfter those changes we need to adjust the code and tests.\\n\\nParsing of the input is very easy, before we have used the lines, now we parse\\neverything:\\n\\n```diff\\n fn parse_input>(pathname: P) -> Input {\\n- file_to_lines(pathname)\\n+ file_to_structs(pathname)\\n }\\n```\\n\\nPart 1 needs to be adjusted a bit too:\\n\\n```diff\\n fn part_1(input: &Input) -> Output {\\n- to_snafu(input.iter().map(|s| from_snafu(s)).sum())\\n+ SNAFU::from(input.iter().map(|s| s.value).sum::()).to_string()\\n }\\n```\\n\\nYou can also see that it simplifies the meaning a bit and it is more explicit than\\nthe previous versions.\\n\\nAnd for the tests:\\n\\n```diff\\n #[test]\\n fn test_from() {\\n- for (n, s) in EXAMPLES.iter() {\\n- assert_eq!(from_snafu(s), *n);\\n+ for (&n, s) in EXAMPLES.iter() {\\n+ assert_eq!(s.parse::().unwrap().value, n);\\n }\\n }\\n\\n #[test]\\n fn test_to() {\\n- for (n, s) in EXAMPLES.iter() {\\n- assert_eq!(to_snafu(*n), s.to_string());\\n+ for (&n, s) in EXAMPLES.iter() {\\n+ assert_eq!(SNAFU::from(n).to_string(), s.to_string());\\n }\\n```\\n\\n## Summary\\n\\nLet\'s wrap the whole thing up! Keeping in mind both AoC and the Rust\u2026\\n\\n![Finished advent calendar :smile:](/img/blog/aoc-2022/04-week-4/calendar.png)\\n\\n### Advent of Code\\n\\nThis year was quite fun, even though most of the solutions and posts came in\\nlater on (_cough_ in \'23 _cough_). Day 22 was the most obnoxious one\u2026 And also\\nit feels like I used priority queues and tree data structures **a lot** :eyes:\\n\\n### with Rust\\n\\nI must admit that a lot of compiler warnings and errors were very useful. Even\\nthough I still found some instances where they didn\'t help at all or cause even\\nworse issues than I had. Compilation times have been addressed with the caching.\\n\\nBuilding my first tree data structure in Rust has been a very \u201cinteresting\u201d\\njourney. Being able to write a more generic BFS algorithm that allows you to not\\nduplicate code while still mantaining the desired functionality contributes to\\na very readable code.\\n\\nI am definitely much more aware of the basic things that bloated Python is\\nmissing, yet Rust has them\u2026\\n\\nUsing explicit types and writing down placeholder functions with `todo!()`\\nmacros is very pleasant, since it allows you to easily navigate the type system\\nduring the development when you don\'t even need to be sure how are you going to\\nput the smaller pieces together.\\n\\nI have used a plethora of traits and also implemented some of them to either be\\nidiomatic, or exploit the syntactic sugar they offer. Deriving the default trait\\nimplementation is also very helpful in a lot of cases, e.g. debugging output,\\ncopying, equality comparison, etc.\\n\\nI confess to touching more \u201ccursed\u201d parts of the Rust, such as macros to\\ndeclutter the copy-paste for tests or writing my own structures that need to\\ncarry a lifetime for their own fields.\\n\\ntl;dr Relatively pleasant language until you hit brick wall :wink:\\n\\n---\\n\\nSee you next year! Maybe in Rust, maybe not :upside_down_face:\\n\\n[_advent of code_]: https://adventofcode.com\\n[_a\\\\*_]: https://en.wikipedia.org/wiki/A*_search_algorithm\\n[`binaryheap`]: https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html\\n[`reverse`]: https://doc.rust-lang.org/std/cmp/struct.Reverse.html\\n[docs of the `binaryheap`]: https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html#min-heap"},{"id":"aoc-2022/3rd-week","metadata":{"permalink":"/blog/aoc-2022/3rd-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/03-week-3.md","source":"@site/blog/aoc-2022/03-week-3.md","title":"3rd week of Advent of Code \'22 in Rust","description":"Surviving third week in Rust.","date":"2023-07-06T21:00:00.000Z","formattedDate":"July 6, 2023","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":11.57,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"3rd week of Advent of Code \'22 in Rust","description":"Surviving third week in Rust.","date":"2023-07-06T21:00","slug":"aoc-2022/3rd-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"4th week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/4th-week"},"nextItem":{"title":"Sort the matrix diagonally","permalink":"/blog/leetcode/sort-diagonally"}},"content":"Let\'s go through the third week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 15: Beacon Exclusion Zone](https://adventofcode.com/2022/day/15)\\n\\n:::info tl;dr\\n\\nTriangulating a distress beacon based on the information from the sensors.\\n\\n:::\\n\\n### Solution\\n\\nRelatively easy thing to implement, no major Rust issues hit.\\n\\n## [Day 16: Proboscidea Volcanium](https://adventofcode.com/2022/day/16)\\n\\n:::info tl;dr\\n\\nFinding a max flow in a graph given some time constraints.\\n\\n:::\\n\\n### Solution\\n\\nI have used some interesting things to implement this and make it easier for me.\\n\\n#### Indexing in graph\\n\\nI have come across a situation where I needed to keep more information regarding\\nthe graph\u2026 In that case you can, of course, create a structure and keep it in,\\nbut once you have multiple members in the structure it gets harder to work with\\nsince you need to address the fields in the structure. When you work with graph,\\nyou frequently need to access the vertices and in this case it felt a lot easier\\nto implement the indexing in a graph, rather than explicitly access the\\nunderlying data structure.\\n\\nHere you can see a rather short snippet from the solution that allows you to\\n\u201cindex\u201d the graph:\\n\\n```rust\\nimpl Index<&str> for Graph {\\n type Output = Vertex;\\n\\n fn index(&self, index: &str) -> &Self::Output {\\n &self.g[index]\\n }\\n}\\n```\\n\\n#### Cartesian product\\n\\nDuring the implementation I had to utilize Floyd-Warshall algorithm for finding\\nthe shortest path between pairs of vertices and utilized the `iproduct!` macro\\nfrom the [`itertools`]. It is a very useful higher-order function that allows\\nyou to keep the nesting of the loops at a minimum level while still maintaining\\nthe same functionality.\\n\\n#### \u201cImplementing\u201d an iterator\\n\\nFor the second part, you get to split the work between 2 actors. That way you\\ncan achieve higher efficiency of the whole process that you\'re planning, but it\\nalso makes it harder to evaluate algorithmically, since you need to check the\\ndifferent ways the work can be split.\\n\\nBeing affected by _functional programming brain damage_:tm:, I have chosen to\\ndo this part by function that returns an iterator over the possible ways:\\n\\n```rust\\nfn pairings(\\n valves: &BTreeSet,\\n) -> impl Iterator, BTreeSet)> + \'_ {\\n let mapping = valves.iter().collect_vec();\\n\\n let max_mask = 1 << (valves.len() - 1);\\n\\n (0..max_mask).map(move |mask| {\\n let mut elephant = BTreeSet::new();\\n let mut human = BTreeSet::new();\\n\\n for (i, &v) in mapping.iter().enumerate() {\\n if (mask & (1 << i)) == 0 {\\n human.insert(v.clone());\\n } else {\\n elephant.insert(v.clone());\\n }\\n }\\n\\n (human, elephant)\\n })\\n}\\n```\\n\\n## [Day 17: Pyroclastic Flow](https://adventofcode.com/2022/day/17)\\n\\n:::info tl;dr\\n\\nSimulating an autonomous Tetris where pieces get affected by a series of jets of\\nhot gas.\\n\\n:::\\n\\n### Solution\\n\\nSimilarly to the previous day I have created some iterators :smile:\\n\\n#### Collision detection\\n\\nOnce you need to check for collisions it is very helpful to be able to just\\niterate through the positions that can actually collide with the wall or other\\npiece.\\n\\nTo get the desired behaviour, you can just compose few smaller functions:\\n\\n```rust\\nfn occupied(shape: &[Vec]) -> impl Iterator + \'_ {\\n shape.iter().enumerate().flat_map(|(y, row)| {\\n row.iter().enumerate().filter_map(move |(x, c)| {\\n if c == &\'#\' {\\n Some(Vector2D::new(x as isize, y as isize))\\n } else {\\n None\\n }\\n })\\n })\\n}\\n```\\n\\nIn the end, we get relative positions which we can adjust later when given the\\nspecific positions from iterator. You can see some interesting parts in this:\\n\\n- `.enumerate()` allows us to get both the indices (coordinates) and the line\\n or, later on, the character itself,\\n- `.flat_map()` flattens the iterator, i.e. when we return another iterator,\\n they just get chained instead of iterating over iterators (which sounds pretty\\n disturbing, doesn\'t it?),\\n- and finally `.filter_map()` which is pretty similar to the \u201cbasic\u201d `.map()`\\n with a one, key, difference that it expects the items of an iterator to be\\n mapped to an `Option` from which it ignores nothing (as in `None` :wink:)\\n and also unwraps the values from `Some(\u2026)`.\\n\\n#### Infinite iterator\\n\\nIn the solution we cycle through both Tetris-like shapes that fall down and the\\njets that move our pieces around. Initially I have implemented my own infinite\\niterator that just yields the indices. It is a very simple, yet powerful, piece\\nof code:\\n\\n```rust\\nstruct InfiniteIndex {\\n size: usize,\\n i: usize,\\n}\\n\\nimpl InfiniteIndex {\\n fn new(size: usize) -> InfiniteIndex {\\n InfiniteIndex { size, i: size - 1 }\\n }\\n}\\n\\nimpl Iterator for InfiniteIndex {\\n type Item = usize;\\n\\n fn next(&mut self) -> Option {\\n self.i = (self.i + 1) % self.size;\\n Some(self.i)\\n }\\n}\\n```\\n\\nHowever when I\'m looking at the code now, it doesn\'t really make much sense\u2026\\nGuess what, we can use a built-in function that is implemented on iterators for\\nthat! The function is called `.cycle()`\\n\\nOn the other hand, I am not going to switch to that function, since it would\\nintroduce an another myriad of issues caused by the fact that I create iterators\\nright away in the constructor of my structure and the iterators would borrow\\nboth the jets and shapes which would introduce a lifetime dependency into the\\nstructure.\\n\\n## [Day 18: Boiling Boulders](https://adventofcode.com/2022/day/18)\\n\\n:::info tl;dr\\n\\nLet\'s compute a surface area of some obsidian approximated via coordinates of\\ncubes.\\n\\n:::\\n\\n### Solution\\n\\nThis day is kinda interesting, because it shows how easily you can complicate the\\nproblem and also how much can you screw yourself over with the optimization and\\n\u201csmart\u201d approach.\\n\\nFor the first part you need to find the surface area of an obsidian that is\\napproximated by cubes. Now, that is a very easy thing to do, just keep the track\\nof already added cubes, and check if the newly added cube touches any face of any\\nother cube. Simple, and with a `BTreeSet` relatively efficient way to do it.\\n\\nHowever the second part lets you on a secret that there may be some surface area\\nfrom the \u201cinside\u201d too and you want to know only the one from the outside of the\\nobsidian. I have seen some solutions later, but if you check your data, you might\\nnotice that the bounding box of all the cubes isn\'t that big at all. Therefore I\\nchose to pre-construct the box beforehand, fill in the cubes and then just run a\\nBFS turning all the lava on the outside into the air. Now you just need to check\\ncubes and count how many of their faces touch the air.\\n\\n## [Day 19: Not Enough Minerals](https://adventofcode.com/2022/day/19)\\n\\n:::info tl;dr\\n\\nFinding out the best strategy for building robots to collect geodes.\\n\\n:::\\n\\n### Solution\\n\\nNot much interesting stuff to mention apart from the suggestion to never believe\\nthat the default implementation given by `derive` macro is what you want, it\\ndoesn\'t have to be. :smile:\\n\\n## [Day 20: Grove Positioning System](https://adventofcode.com/2022/day/20)\\n\\n:::info tl;dr\\n\\nShuffling around the _circular linked list_ to find the coordinates.\\n\\n:::\\n\\nNow, small rant for this day is in place. They\'ve never mentioned that coordinates\\ncan repeat and therefore the values are non-unique. This is something that did\\nnot happen in the given sample, but was present in the user input. It took \xbba lot\xab\\nto realize that this is the issue.\\n\\n### Solution\\n\\nI have tried implementing a circular linked list for this\u2026 and I have failed\\nmiserably. To be fair, I still have no clue why. It was \u201cfun\u201d to play around with\\nthe `Rc>`. In the end I failed on _wrong answer_. I have also encountered\\na rather interesting issue with `.borrow_mut()` method being used on `Rc>`.\\n\\n#### `.borrow_mut()`\\n\\nConsider the following snippet of the code (taken from the documentation):\\n\\n```rust\\nuse std::cell::{RefCell, RefMut};\\nuse std::collections::HashMap;\\nuse std::rc::Rc;\\n// use std::borrow::BorrowMut;\\n\\nfn main() {\\n let shared_map: Rc> = Rc::new(RefCell::new(HashMap::new()));\\n // Create a new block to limit the scope of the dynamic borrow\\n {\\n let mut map: RefMut<_> = shared_map.borrow_mut();\\n map.insert(\\"africa\\", 92388);\\n map.insert(\\"kyoto\\", 11837);\\n map.insert(\\"piccadilly\\", 11826);\\n map.insert(\\"marbles\\", 38);\\n }\\n\\n // Note that if we had not let the previous borrow of the cache fall out\\n // of scope then the subsequent borrow would cause a dynamic thread panic.\\n // This is the major hazard of using `RefCell`.\\n let total: i32 = shared_map.borrow().values().sum();\\n println!(\\"{total}\\");\\n}\\n```\\n\\nWe allocate a hash map on the heap and then in the inner block, we borrow it as\\na mutable reference, so that we can use it.\\n\\n:::note\\n\\nIt is a very primitive example for `Rc>` and mutable borrow.\\n\\n:::\\n\\nIf you uncomment the 4th line with `use std::borrow::BorrowMut;`, you cannot\\ncompile the code anymore, because of\\n\\n```\\n Compiling playground v0.0.1 (/playground)\\nerror[E0308]: mismatched types\\n --\x3e src/main.rs:10:34\\n |\\n10 | let mut map: RefMut<_> = shared_map.borrow_mut();\\n | --------- ^^^^^^^^^^^^^^^^^^^^^^^ expected struct `RefMut`, found mutable reference\\n | |\\n | expected due to this\\n |\\n = note: expected struct `RefMut<\'_, _>`\\n found mutable reference `&mut Rc>>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:11:13\\n |\\n11 | map.insert(\\"africa\\", 92388);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:12:13\\n |\\n12 | map.insert(\\"kyoto\\", 11837);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:13:13\\n |\\n13 | map.insert(\\"piccadilly\\", 11826);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:14:13\\n |\\n14 | map.insert(\\"marbles\\", 38);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nSome errors have detailed explanations: E0308, E0599.\\nFor more information about an error, try `rustc --explain E0308`.\\nerror: could not compile `playground` due to 5 previous errors\\n```\\n\\nIt might seem **a bit** ridiculous. However, I got to a point where the compiler\\nsuggested `use std::borrow::BorrowMut;` and it resulted in breaking parts of the\\ncode that worked previously. I think it may be a good idea to go over what is\\nhappening here.\\n\\n##### `.borrow_mut()` on `Rc>`\\n\\nLet\'s consider a variable `x` of type `Rc>`. What happens when you\\ncall `.borrow_mut()` on it? We can look at the `Rc` type, and\u2026 hang on! There is\\nneither `.borrow_mut()` method or `BorrowMut` trait implemented. How can we do it\\nthen?\\n\\nLet\'s go further and we can see that `RefCell` implements a `.borrow_mut()`\\nmethod. OK, but how can we call it on the `Rc`? Easily! `Rc` implements\\n`Deref` and therefore you can call methods on `Rc` objects as if they were\\n`T` objects. If we read on _`Deref` coercion_, we can see the following:\\n\\n> If `T` implements `Deref`, \u2026:\\n>\\n> - \u2026\\n> - `T` implicitly implements all the (immutable) methods of the type `U`.\\n\\nWhat is the requirement for the `.borrow_mut()` on `RefCell`? Well, it needs\\n`&self`, so the `Deref` implements the `.borrow_mut()` for the `Rc>`.\\n\\n##### `BorrowMut` trait\\n\\nI have not been able to find a lot on this trait. My guess is that it provides a\\nmethod instead of a syntactic sugar (`&mut x`) for the mutable borrow. And also\\nit provides default implementations for the types:\\n\\n```rust\\nimpl BorrowMut for String\\n\\nimpl BorrowMut for &mut T\\nwhere\\n T: ?Sized,\\n\\nimpl BorrowMut for T\\nwhere\\n T: ?Sized,\\n\\nimpl BorrowMut<[T]> for Vec\\nwhere\\n A: Allocator,\\n\\nimpl BorrowMut for Box\\nwhere\\n A: Allocator,\\n T: ?Sized,\\n\\nimpl BorrowMut<[T]> for [T; N]\\n```\\n\\n##### Conflict\\n\\nNow the question is why did it break the code\u2026 My first take was that the type\\n`Rc>` has some _specialized_ implementation of the `.borrow_mut()` and\\nthe `use` overrides it with the default, which is true **in a sense**. However\\nthere is no _specialized_ implementation. Let\'s have a look at the trait and the\\ntype signature on the `RefCell`:\\n\\n```rust\\n// trait\\npub trait BorrowMut: Borrow\\nwhere\\n Borrowed: ?Sized,\\n{\\n fn borrow_mut(&mut self) -> &mut Borrowed;\\n}\\n\\n// \u2039RefCell.borrow_mut()\u203a type signature\\npub fn borrow_mut(&self) -> RefMut<\'_, T>\\n```\\n\\nI think that we can definitely agree on the fact that `RefMut<\'_, T>` is not the\\n`RefCell`.\\n\\n**In my opinion**, `RefCell` implements a **separate** `.borrow_mut()` rather\\nthan implementing the interface, because it **cannot** satisfy the type requirements\\nof the trait.\\n\\n:::caution\\n\\nI wonder how are we expected to deal with this conflict, if and when, we need\\nboth the `.borrow_mut()` of the trait and `.borrow_mut()` of the `RefCell`.\\n\\n:::\\n\\n:::tip Fun fact\\n\\nI was suggested by the compiler to do `use std::borrow::BorrowMut;` and break the\\ncode.\\n\\nSo much for the _almighty_ and _helpful_ compiler\u2026\\n\\n:::\\n\\n## [Day 21: Monkey Math](https://adventofcode.com/2022/day/21)\\n\\n:::info tl;dr\\n\\nComputing an expression tree and then also finding ideal value for a node.\\n\\n:::\\n\\n### Solution\\n\\nRelatively simple, until you get to the 2nd part where you start to practice\\na lot of the copy-paste. I have managed to sneak some perverted stuff in there\\nthough :) Let\'s go through the details.\\n\\n#### `Default` trait\\n\\nFor the first time and twice I had a need to have a default value for my types,\\nenumerations in this case. Rust offers a very nice trait[^1] that is described\\nas:\\n\\n> A trait for giving a type a useful default value.\\n\\nI guess it sums it up nicely. The more interesting part about this is the fact\\nthat you can use the _macro machinery_ to save yourself some typing. If you have\\nenumeration of which the default value doesn\'t bear any parameter, you can just\\ndo[^2]:\\n\\n```rust\\n#[derive(Default)]\\nenum Color {\\n #[default]\\n White,\\n Gray,\\n Black,\\n}\\n```\\n\\n#### Abusing negation\\n\\nIf you want to use a _unary minus_ operator on your own type, you can implement\\na `Neg` trait[^3]. I was dealing with a binary tree and needed a way how to look\\nat the other side, so I have just implemented the negation for flipping between\\nleft and right :smile:\\n\\n[^1]: [`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) docs\\n[^2]: Pardon my example from the graph algorithms ;)\\n[^3]: [`Neg`](https://doc.rust-lang.org/std/ops/trait.Neg.html) docs\\n\\n[_advent of code_]: https://adventofcode.com\\n[`itertools`]: https://crates.io/crates/itertools\\n[this reddit post and the comment]: https://www.reddit.com/r/adventofcode/comments/zb98pn/comment/iyq0ono"},{"id":"leetcode/sort-diagonally","metadata":{"permalink":"/blog/leetcode/sort-diagonally","editUrl":"https://github.com/mfocko/blog/tree/main/blog/leetcode/sort-matrix-diagonally.md","source":"@site/blog/leetcode/sort-matrix-diagonally.md","title":"Sort the matrix diagonally","description":"Compiler assisted development.","date":"2023-03-04T23:15:00.000Z","formattedDate":"March 4, 2023","tags":[{"label":"cpp","permalink":"/blog/tags/cpp"},{"label":"leetcode","permalink":"/blog/tags/leetcode"},{"label":"iterators","permalink":"/blog/tags/iterators"}],"readingTime":16.99,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Sort the matrix diagonally","description":"Compiler assisted development.","date":"2023-03-04T23:15","slug":"leetcode/sort-diagonally","authors":"mf","tags":["cpp","leetcode","iterators"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"3rd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/3rd-week"},"nextItem":{"title":"2nd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/2nd-week"}},"content":"Let\'s try to solve one of the LeetCode challenges in easy and hard mode at the\\nsame time.\\n\\n\x3c!--truncate--\x3e\\n\\n- Link to the problem: https://leetcode.com/problems/sort-the-matrix-diagonally/\\n\\n## Problem description\\n\\nA **matrix diagonal** is a diagonal line of cells starting from some cell in\\neither the topmost row or leftmost column and going in the bottom-right direction\\nuntil reaching the matrix\'s end. For example, the **matrix diagonal** starting\\nfrom `mat[2][0]`, where `mat` is a `6 x 3` matrix, includes cells `mat[2][0]`,\\n`mat[3][1]`, and `mat[4][2]`.\\n\\nGiven an `m x n` matrix `mat` of integers, sort each matrix diagonal in ascending\\norder and return the resulting matrix.\\n\\n### Example\\n\\n![Image describing the problem](https://assets.leetcode.com/uploads/2020/01/21/1482_example_1_2.png)\\n\\n## Skeleton and initial adjustments\\n\\nWe are given the following skeleton for the C++ and the given challenge:\\n\\n```cpp\\nclass Solution {\\npublic:\\n vector> diagonalSort(vector>& mat) {\\n\\n }\\n};\\n```\\n\\nThe task is to sort the passed matrix diagonally and then return it. First of all,\\nI don\'t like to solve this in a web browser, so we\'ll need to adjust it accordingly\\nfor running it locally. We\'ll start by including the `vector` header and using\\nfully-qualified namespaces[^1] and also adding few tests:\\n\\n```cpp\\n#include \\n#include \\n\\nusing matrix = std::vector>;\\n\\nclass Solution {\\npublic:\\n matrix diagonalSort(matrix& mat)\\n {\\n }\\n};\\n\\nstatic void test_case_1()\\n{\\n // Input: mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]]\\n // Output: [[1,1,1,1],[1,2,2,2],[1,2,3,3]]\\n\\n Solution s;\\n assert((s.diagonalSort(std::vector { std::vector { 3, 3, 1, 1 },\\n std::vector { 2, 2, 1, 2 },\\n std::vector { 1, 1, 1, 2 } })\\n == std::vector { std::vector { 1, 1, 1, 1 },\\n std::vector { 1, 2, 2, 2 },\\n std::vector { 1, 2, 3, 3 } }));\\n}\\n\\nstatic void test_case_2()\\n{\\n // Input: mat =\\n // [[11,25,66,1,69,7],[23,55,17,45,15,52],[75,31,36,44,58,8],[22,27,33,25,68,4],[84,28,14,11,5,50]]\\n // Output:\\n // [[5,17,4,1,52,7],[11,11,25,45,8,69],[14,23,25,44,58,15],[22,27,31,36,50,66],[84,28,75,33,55,68]]\\n\\n Solution s;\\n assert((s.diagonalSort(std::vector { std::vector { 11, 25, 66, 1, 69, 7 },\\n std::vector { 23, 55, 17, 45, 15, 52 },\\n std::vector { 75, 31, 36, 44, 58, 8 },\\n std::vector { 22, 27, 33, 25, 68, 4 },\\n std::vector { 84, 28, 14, 11, 5, 50 } })\\n == std::vector { std::vector { 5, 17, 4, 1, 52, 7 },\\n std::vector { 11, 11, 25, 45, 8, 69 },\\n std::vector { 14, 23, 25, 44, 58, 15 },\\n std::vector { 22, 27, 31, 36, 50, 66 },\\n std::vector { 84, 28, 75, 33, 55, 68 } }));\\n}\\n\\nint main()\\n{\\n test_case_1();\\n test_case_2();\\n\\n return 0;\\n}\\n```\\n\\nWe need to return the matrix, but we\'re given a reference to the input matrix. We\\ncan easily abuse the C++ here and just switch the reference to value, this way\\nthe matrix will be copied when passed to the function, we can sort the copy and\\njust return it back. And we also get yelled by the compiler for the fact that the\\nmethod doesn\'t return anything yet, so to make it \u201cshut up\u201d we will just return\\nthe input for now:\\n\\n```diff\\n- matrix diagonalSort(matrix& mat)\\n+ matrix diagonalSort(matrix mat)\\n {\\n+ return mat;\\n }\\n```\\n\\nNow, we get the copy and we\'re good to go.\\n\\n## Na\xefve solution\\n\\nAs you may know, C++ offers a plethora of functions that can be used to your\\nadvantage, given that you know how to \u201cbend\u201d the data structures accordingly.\\n\\nWhat does that mean for us? Well, we have an `std::sort`, we can use it, right?\\nLet\'s have a look at it:\\n\\n```cpp\\ntemplate< class RandomIt >\\nvoid sort( RandomIt first, RandomIt last );\\n```\\n\\nThis overload is more than we need. What does it do? It just sorts the elements\\nin the range `[first, last)` using `operator<` on them. We can\'t sort the whole\\nmatrix using this, but\u2026 we can sort just \xbbone\xab diagonal without doing much work\\non our end.\\n\\nWhat is the `RandomIt` type though? If we look more into the documentation, we\\ncan easily find the requirements for it and also learn that it\'s a _random access_\\n_iterator_ and allows swapping its values at the same time.\\n\\n:::tip Random access iterator\\n\\nWhat is the _random access iterator_ though? We can find it in a documentation\\nand see the following description:\\n\\n> A **LegacyRandomAccessIterator** is a [LegacyBidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator)\\n> that can be moved to point to any element in constant time.\\n\\nAfter that we can see all the requirements for it being listed. I don\'t feel like\\nreading them right now, so we will just use it and see where the compilation blows\\nup, i.e. \u201c_compiler-assisted development_\u201d[^2] if you will ;)\\n\\n:::\\n\\nNow we know that we can use `std::sort` to sort the diagonal itself, but we also\\nneed to get the diagonals somehow. I\'m rather lazy, so I\'ll just delegate it to\\nsomeone else[^3]. And that way we get\\n\\n```cpp\\nmatrix diagonalSort(matrix mat)\\n{\\n // we iterate over the diagonals\\n for (auto d : diagonals(mat)) {\\n // and we sort each diagonal\\n std::sort(d.begin(), d.end());\\n }\\n\\n // we take the matrix by copy, so we can sort in-situ and return the copy\\n // that we sorted\\n return mat;\\n}\\n```\\n\\nThis solution looks very simple, doesn\'t it? Well, cause it is.\\nLet\'s try compiling it:\\n\\n```\\nmatrix-sort.cpp:11:23: error: use of undeclared identifier \'diagonals\' [clang-diagnostic-error]\\n for (auto d : diagonals(mat)) {\\n ^\\nFound compiler error(s).\\nmake: *** [makefile:14: tidy] Error 1\\n```\\n\\nOK, seems about right. We haven\'t implemented the `diagonals` yet. And based on\\nwhat we\'ve written so far, we need a function or a class `diagonals` that will\\ngive us the diagonals we need.\\n\\n## Implementing the `diagonals`\\n\\nCool, so we need the function that will let us go through each and every diagonal\\nin our matrix. We use the _for-range_ loop, so whatever we get back from the\\n`diagonals` must support `.begin()` and `.end()`. Since I am a masochist, we will\\ndo such functionality for a matrix of any type, not just the `int` from the challenge.\\n\\nAs I said, we need to be able to\\n\\n- construct the object\\n- get the beginning\\n- get the end (the \u201csentinel\u201d)\\n\\n```cpp\\ntemplate \\nclass diagonals {\\n using matrix_t = std::vector>;\\n\\n matrix_t& _matrix;\\n\\npublic:\\n diagonals(matrix_t& m)\\n : _matrix(m)\\n {\\n }\\n diagonals_iter begin()\\n {\\n /* TODO */\\n }\\n diagonals_iter end()\\n {\\n /* TODO */\\n }\\n};\\n```\\n\\nNow we have a `diagonals` that we can use to go through the diagonals. We haven\'t\\nimplemented the core of it yet. Let\'s go through what we have for now.\\n\\nWe have a templated class with templated `T` that is used as a placeholder for any\\ntype we would store in the matrix. Because I\'m lazy, I have defined the `matrix_t`\\ntype that is a \u201cshortcut\u201d for `std::vector>`, so I don\'t have to\\ntype it out all the time. Of course, we need to store the matrix, we are given,\\nas a private attribute. And then just have the constructor and the 2 methods we\\nneed for the _for-range_.\\n\\n### Iterating over diagonals\\n\\nNow that we have an object that will allow us to iterate through the diagonals,\\nwe need to implement the iterating itself. We need to go through all of them, so\\nwe have multiple options how to do so. I have decided to start from the \u201cmain\u201d\\ndiagonal that starts at `(0, 0)` index and then proceed with the diagonals starting\\nin the first row, followed by the rest of the diagonals in the first column.\\n\\nWe need to be able to tell that we\'ve iterated through all of them, and also we\\nneed to know which diagonal is next. For that purpose we will pass the indices\\nof the first cell on the diagonal. That way we can always tell how to move forward.\\n\\nWe will start by updating the `begin` and `end` to reflect our choice accordingly.\\n\\n```cpp\\ndiagonals_iter begin() { return diagonals_iter { _matrix, 0, 0 }; }\\ndiagonals_iter end() { return diagonals_iter { _matrix, 0, _matrix.size() }; }\\n```\\n\\nFor the `begin` we return the first diagonal that starts at `(0, 0)`. And because\\nwe have decided to do the diagonals in the first column at the end, the first\\ndiagonal that is not a valid one is the one at `(0, height)`. Apart from the\\nindices, we also need to pass reference to the matrix itself.\\n\\n:::note\\n\\nYou may have noticed that we also include the diagonals that have length 1,\\nspecifically the ones at `(0, height - 1)` and `(width - 1, 0)`. We are implementing\\nan iterator that **should not** care about the way it\'s being used. Therefore, we\\ndon\'t care about the fact they don\'t need to be sorted.\\n\\n:::\\n\\nCool, let\'s leave the iterator itself to someone else, right?[^4]\\n\\n### Implementing the iterator over diagonals\\n\\nWe can start with a simple skeleton based on the information that we pass from\\nthe `diagonals`. Also to utilize the `matrix_t` and also contain implementation\\ndetails hidden away, we will put this code into the `diagonals` class.\\n\\n```cpp\\nclass diagonals_iter {\\n matrix_t& m;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonals_iter(matrix_t& matrix, std::size_t x, std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n};\\n```\\n\\nIn this case we will be implementing a \u201csimple\u201d forward iterator, so we don\'t\\nneed to implement a lot. Notably it will be:\\n\\n- inequality operator (we need to know when we reach the end and have nothing to\\n iterate over)\\n- preincrementation operator (we need to be able to move around the iterable)\\n- dereference operator (we need to be able to retrieve the objects we iterate\\n over)\\n\\n```cpp\\nclass diagonals_iter {\\n matrix_t& m;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonals_iter(matrix_t& matrix, std::size_t x, std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator!=(const diagonals_iter& rhs) const\\n {\\n // iterators are not equal if they reference different matrices, or\\n // their positions differ\\n return m != rhs.m || x != rhs.x || y != rhs.y;\\n }\\n\\n diagonals_iter& operator++()\\n {\\n if (y != 0) {\\n // iterating through diagonals down the first column\\n y++;\\n return *this;\\n }\\n\\n // iterating the diagonals along the first row\\n x++;\\n if (x == m.front().size()) {\\n // switching to diagonals in the first column\\n x = 0;\\n y++;\\n }\\n\\n return *this;\\n }\\n\\n diagonal operator*() const { return diagonal { m, x, y }; }\\n};\\n```\\n\\nLet\'s go one-by-one. Inequality operator is rather simple, just compare iterator\'s\\nattributes field-by-field. If you think about it, checking inequality of two 2D\\nvectors may be a bit inefficient, therefore, we can swap around and check it as\\na last thing.\\n\\n```diff\\n- return m != rhs.m || x != rhs.x || y != rhs.y;\\n+ return x != rhs.x || y != rhs.y || m != rhs.m;\\n```\\n\\nPreincrementation is where the magic happens. If you have a better look, you can\\nsee two branches of this operation:\\n\\n1. When `y != 0` (we\'re iterating over the diagonals in the first column)\\n In this case, we just bump the row and we\'re done.\\n2. When `y == 0` (we\'re iterating over the diagonals in the first row)\\n In this case, we bump the column and check if we haven\'t gotten out of bounds,\\n i.e. the end of the first row. If we get out of the bounds, we\'re continuing\\n with the second diagonal in the first column.\\n\\nDereferencing the iterator must \u201cyield\u201d something. In our case it will be the\\ndiagonal that we want to sort. For sorting we need just the iterators that can\\nmove around said diagonal. The simplest thing, we can do, is to delegate it to\\nsomething else. In our case it will be a class called `diagonal`.\\n\\n## Implementing the `diagonal` itself\\n\\nAfter implementing the iterator over diagonals, we know that all we need to describe\\na diagonal is the matrix itself and the \u201cstart\u201d of the diagonal (row and column).\\nAnd we also know that the diagonal must provide some iterators for the `std::sort`\\nfunction. We can start with the following skeleton:\\n\\n```cpp\\ntemplate \\nclass diagonal {\\n using matrix_t = std::vector>;\\n\\n matrix_t& matrix;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonal(matrix_t& matrix, std::size_t x, std::size_t y)\\n : matrix(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n diagonal_iter begin() const { return diagonal_iter { matrix, x, y }; }\\n\\n diagonal_iter end() const\\n {\\n auto max_x = matrix[y].size();\\n auto max_y = matrix.size();\\n\\n // we need to find the distance in which we get out of bounds (either in\\n // column or row)\\n auto steps = std::min(max_x - x, max_y - y);\\n\\n return diagonal_iter { matrix, x + steps, y + steps };\\n }\\n};\\n```\\n\\nInitialization is rather simple, we just \u201ckeep\u201d the stuff we get, `begin` is the\\nsimplest, we just delegate.\\n\\nIn case of the `end`, it gets more complicated. We need to know where is the \u201cend\u201d\\nof the diagonal. Since `end` should point to the first element \u201cafter\u201d the iterable,\\nwe know that it\'s the first position of the iterator where either `y` becomes\\n`matrix.size()` or `x` becomes `matrix[y].size()`. Also we are moving along diagonal,\\nduh, therefore we can deduce the first \u201cposition\u201d afterwards by minimal amount of\\nsteps to get out of the any column or row, hence `std::min(max_x - x, max_y - y)`.\\nFinal position is then computed simply by adding the steps to the beginning of\\nthe diagonal.\\n\\nNow we just need to finish the iterator for the diagonal itself and we\'re done.\\n\\n### Implementing `diagonal_iter`\\n\\nThis part is the hardest from all we need to do. It\'s because of the requirements\\nof the `std::sort` that requires us to implement a _random access iterator_. I have\\nbriefly described it above, and \u201cin a nutshell\u201d it means that we need to implement\\nan iterator that can move in constant time along the diagonal in any amount of\\nsteps.\\n\\nLet\'s go through all of the functionality that our iterator needs to support to\\nbe used in `std::sort`. We need the usual operations like:\\n\\n- equality/inequality\\n- incrementation\\n- dereferencing\\n\\nWe will also add all the types that our iterator uses with the category of the\\niterator, i.e. what interface it supports:\\n\\n```cpp\\nclass diagonal_iter {\\n // we need to keep reference to the matrix itself\\n matrix_t& m;\\n\\n // we need to be able to tell our current position\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n using difference_type = std::ptrdiff_t;\\n using value_type = T;\\n using pointer = T*;\\n using reference = T&;\\n using iterator_category = std::random_access_iterator_tag;\\n\\n diagonal_iter(matrix_t& matrix,\\n std::size_t x,\\n std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator==(const diagonal_iter& rhs) const\\n {\\n return x == rhs.x && y == rhs.y && m == rhs.m;\\n }\\n\\n diagonal_iter& operator++()\\n {\\n // we are moving along the diagonal, so we increment both \u2039x\u203a and \u2039y\u203a at\\n // the same time\\n x++;\\n y++;\\n return *this;\\n }\\n\\n reference operator*() const { return m[y][x]; }\\n};\\n```\\n\\nThis is pretty similar to the previous iterator, but now we need to implement the\\nremaining requirements of the _random access iterator_. Let\'s see what those are:\\n\\n- decrementation - cause we need to be able to move backwards too, since _random _\\n _access iterator_ extends the interface of _bidirectional iterator_\\n- moving the iterator in either direction by steps given as an integer\\n- being able to tell the distance between two iterators\\n- define an ordering on the iterators\\n\\nLet\'s fill them in:\\n\\n```cpp\\nclass diagonal_iter {\\n // we need to keep reference to the matrix itself\\n matrix_t& m;\\n\\n // we need to be able to tell our current position\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n using difference_type = std::ptrdiff_t;\\n using value_type = T;\\n using pointer = T*;\\n using reference = T&;\\n using iterator_category = std::random_access_iterator_tag;\\n\\n diagonal_iter(matrix_t& matrix,\\n std::size_t x,\\n std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator==(const diagonal_iter& rhs) const\\n {\\n return x == rhs.x && y == rhs.y && m == rhs.m;\\n }\\n\\n diagonal_iter& operator++()\\n {\\n // we are moving along the diagonal, so we increment both \u2039x\u203a and \u2039y\u203a at\\n // the same time\\n x++;\\n y++;\\n return *this;\\n }\\n\\n reference operator*() const { return m[y][x]; }\\n\\n // exactly opposite to the incrementation\\n diagonal_iter operator--()\\n {\\n x--;\\n y--;\\n return *this;\\n }\\n\\n // moving \u2039n\u203a steps back is same as calling decrementation \u2039n\u203a-times, so we\\n // can just return a new iterator and subtract \u2039n\u203a from both coordinates in\\n // the matrix\\n diagonal_iter operator-(difference_type n) const\\n {\\n return diagonal_iter { m, x - n, y - n };\\n }\\n\\n // here we assume that we are given two iterators on the same diagonal\\n difference_type operator-(const diagonal_iter& rhs) const\\n {\\n assert(m == rhs.m);\\n return x - rhs.x;\\n }\\n\\n // counterpart of moving \u2039n\u203a steps backwards\\n diagonal_iter operator+(difference_type n) const\\n {\\n return diagonal_iter { m, x + n, y + n };\\n }\\n\\n // we compare the coordinates, and also assume that those 2 iterators are\\n // lying on the same diagonal\\n bool operator<(const diagonal_iter& rhs) const\\n {\\n assert(m == rhs.m);\\n return x < rhs.x && y < rhs.y;\\n }\\n};\\n```\\n\\nAt this point we could probably try and compile it, right? If we do so, we will\\nget yelled at by a compiler for the following reasons:\\n\\n```\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1792:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n __last = __next;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1817:11: note: in instantiation of function template specialization \'std::__unguarded_linear_insert::diagonal_iter, __gnu_cxx::__ops::_Val_less_iter>\' requested here\\n std::__unguarded_linear_insert(__i,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1849:9: note: in instantiation of function template specialization \'std::__insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__insertion_sort(__first, __first + int(_S_threshold), __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1940:9: note: in instantiation of function template specialization \'std::__final_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__final_insertion_sort(__first, __last, __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1830:2: error: no matching function for call to \'__unguarded_linear_insert\' [clang-diagnostic-error]\\n std::__unguarded_linear_insert(__i,\\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1850:9: note: in instantiation of function template specialization \'std::__unguarded_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1940:9: note: in instantiation of function template specialization \'std::__final_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__final_insertion_sort(__first, __last, __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1782:5: note: candidate template ignored: substitution failure [with _RandomAccessIterator = diagonal::diagonal_iter, _Compare = __gnu_cxx::__ops::_Val_less_iter]\\n __unguarded_linear_insert(_RandomAccessIterator __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1923:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n __last = __cut;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1937:9: note: in instantiation of function template specialization \'std::__introsort_loop::diagonal_iter, long, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__introsort_loop(__first, __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n```\\n\\nThat\'s a lot of noise, isn\'t it? Let\'s focus on the important parts:\\n\\n```\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1792:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n\u2026\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n```\\n\\nAh! We have a reference in our iterator, and this prevents us from having a copy\\nassignment operator (that is used \u201csomewhere\u201d in the sorting algorithm). Well\u2026\\nLet\'s just wrap it!\\n\\n```diff\\n# we need to keep a different type than reference\\n- matrix_t& m;\\n+ std::reference_wrapper m;\\n\\n# in comparison we need to get the reference out of the wrapper first\\n- return x == rhs.x && y == rhs.y && m == rhs.m;\\n+ return x == rhs.x && y == rhs.y && m.get() == rhs.m.get();\\n\\n# same when we return a reference to the \u201ccell\u201d in the matrix\\n- reference operator*() const { return m[y][x]; }\\n+ reference operator*() const { return m.get()[y][x]; }\\n\\n# and finally in the assertions that we set for the \u201cdistance\u201d and \u201cless than\u201d\\n- assert(m == rhs.m);\\n+ assert(m.get() == rhs.m.get());\\n```\\n\\nWe\'re done now! We have written an iterator over diagonals for a 2D `vector`. You can have a look at the final result [here](pathname:///files/blog/leetcode/sort-matrix-diagonally/matrix-sort.cpp).\\n\\n[^1]: just because I\'m used to it and don\'t care about your opinion ;)\\n[^2]: exercise at your own risk\\n[^3]: me in 5 minutes in fact, but don\'t make me scared\\n[^4]: me in the next section\u2026"},{"id":"aoc-2022/2nd-week","metadata":{"permalink":"/blog/aoc-2022/2nd-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/02-week-2.md","source":"@site/blog/aoc-2022/02-week-2.md","title":"2nd week of Advent of Code \'22 in Rust","description":"Surviving second week in Rust.","date":"2022-12-25T23:15:00.000Z","formattedDate":"December 25, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":20.875,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"2nd week of Advent of Code \'22 in Rust","description":"Surviving second week in Rust.","date":"2022-12-25T23:15","slug":"aoc-2022/2nd-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Sort the matrix diagonally","permalink":"/blog/leetcode/sort-diagonally"},"nextItem":{"title":"1st week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/1st-week"}},"content":"Let\'s go through the second week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 8: Treetop Tree House](https://adventofcode.com/2022/day/8)\\n\\n:::info tl;dr\\n\\nWe get a forest and we want to know how many trees are visible from the outside.\\nApart from that we want to find the best view.\\n\\n:::\\n\\nNothing interesting. We are moving around 2D map though. And indexing can get a\\nbit painful when doing so, let\'s refactor it a bit ;) During the preparation for\\nthe AoC, I have written `Vector2D` and now it\'s time to extend it with indexing\\nof `Vec` of `Vec`s. In my solution I was manipulating with indices in the following\\nway:\\n\\n- swapping them\\n- checking whether they are correct indices for the `Vec>`\\n- indexing `Vec>` with them\\n\\n:::caution\\n\\nI\'m getting familiar with Rust and starting to \u201cabuse\u201d it\u2026 While doing so, I\'m\\nalso uncovering some \u201cfeatures\u201d that I don\'t really like. Therefore I will mark\\nall of my rants with _thicc_ **\xab\u21af\xbb** mark and will try to \u201clock\u201d them into their\\nown \u201cbox of hell\u201d.\\n\\n:::\\n\\n#### Swapping indices\\n\\nRelatively simple implementation, just take the values, swap them and return new\\nvector.\\n\\n```rust\\nimpl Vector2D {\\n pub fn swap(&self) -> Self {\\n Self {\\n x: self.y,\\n y: self.x,\\n }\\n }\\n}\\n```\\n\\nPretty straight-forward implementation, but let\'s talk about the `T: Copy`. We\\nneed to use it, since we are returning a **new** vector, with swapped **values**.\\nIf we had values that cannot be copied, the only thing we could do, would be a\\nvector of references (and it would also introduce a lifetime, to which we\'ll get\\nlater on). This is pretty similar with the operations on sets from the first week.\\n\\n#### Indexing `Vec`\\n\\nI will start with the indexing, cause bound-checking is a bit more\u2026 complicated\\nthan I would like to.\\n\\n```rust\\npub fn index<\'a, T, U>(v: &\'a [Vec], idx: &Vector2D) -> &\'a U\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &v[y][x]\\n}\\n```\\n\\nLet\'s talk about this mess\u2026 Body of the function is probably the most easy part\\nand should not be hard to understand, we just take the `x` and `y` and convert\\nthem both to `usize` type that can be used later on for indexing.\\n\\nThe type signature of the function is where the fun is at :wink: We are trying\\nto convert unknown type to `usize`, so we must bound the `T` as a type that can\\nbe converted to `usize`, that\'s how we got `usize: TryFrom` which basically\\nsays that `usize` must implement `TryFrom` trait and therefore allows us to\\nconvert the indices to actual `usize` indices. Using `.unwrap()` also forces us\\nto bound the error that can occur when converting `T` into `usize`, that\'s how\\nwe get `>::Error: Debug` which loosely means\\n\\n> error during conversion of `T` into `usize` must implement `Debug`,\\n> i.e. can be printed in some way or other\\n\\n`T: Copy` is required by `.try_into()` which takes `T` by-value.\\n\\nAnd now we are left only with the first line of the definition.\\n\\n:::note\\n\\nSkilled Rustaceans might notice that this implementation is rather flaky and can\\nbreak in multiple places at once. I\'ll get back to it\u2026\\n\\n:::\\n\\nLet\'s split it in multiple parts:\\n\\n- `v: &\'a [Vec]` represents the 2D `Vec`, we are indexing, `Vec` implements\\n `Slice` trait and _clippy_ recommends using `&[T]` to `&Vec`, exact details\\n are unknown to me\\n- `idx: &Vector2D` represents the _indices_ which we use, we take them by\\n reference to avoid an unnecessary copy\\n- `-> &\'a U` means that we are returning a _reference_ to some value of type `U`.\\n Now the question is what does the `\'a` mean, we can also see it as a generic\\n type declared along `T` and `U`. And the answer is _relatively_ simple, `\'a`\\n represents a _lifetime_. We take the `v` by a reference and return a reference,\\n borrow checker validates all of the _borrows_ (or references), so we need to\\n specify that our returned value has _the same lifetime_ as the vector we have\\n taken by a reference, i.e. returned reference must live at least as long as the\\n `v`. This way we can \u201cbe sure\u201d that the returned reference is valid.\\n\\n##### Issues\\n\\nFirst issue that our implementation has is the fact that we cannot get a mutable\\nreference out of that function. This could be easily resolved by introducing new\\nfunction, e.g. `index_mut`. Which I have actually done while writing this part:\\n\\n```rust\\npub fn index_mut<\'a, T, U>(v: &\'a mut [Vec], idx: &Vector2D) -> &\'a mut U\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &mut v[y][x]\\n}\\n```\\n\\n:::caution **\xab\u21af\xbb** Why can\'t we use one function?\\n\\nWhen we consider a `Vec`, we don\'t need to consider containers as `T`, Rust\\nimplements indexing as traits `Index` and `IndexMut` that do the dirty work\\nbehind syntactic sugar of `container[idx]`.\\n\\nHowever, implementing of traits is not allowed for _external_ types, i.e. types\\nthat you haven\'t defined yourself. This means that you can implement indexing\\nover containers that you have implemented yourself, but you cannot use your own\\ntypes for indexing \u201cbuilt-in\u201d types.\\n\\nAnother part of this rabbit hole is trait `SliceIndex` that is of a relevance\\nbecause of\\n\\n```rust\\nimpl Index for [T]\\nwhere\\n I: SliceIndex<[T]>\\n\\nimpl Index for Vec\\nwhere\\n I: SliceIndex<[T]>,\\n A: Allocator\\n\\nimpl Index for [T; N]\\nwhere\\n [T]: Index\\n```\\n\\nIn other words, if your type implements `SliceIndex` trait, it can be used\\nfor indexing. As of now, this trait has all of its required methods experimental\\nand is marked as `unsafe`.\\n\\n:::\\n\\nAnother problem is a requirement for indexing either `[Vec]` or `Vec>`.\\nThis requirement could be countered by removing inner type `Vec` and constraining\\nit by a trait `Index` (or `IndexMut` respectively) in a following way\\n\\n```rust\\npub fn index<\'a, C, T>(v: &\'a [C], idx: &Vector2D) -> &\'a C::Output\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n C: Index\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &v[y][x]\\n}\\n```\\n\\nGiven this, we can also give a more meaningful typename for indexing type, such\\nas `I`.\\n\\n#### Checking bounds\\n\\nNow we can get to the boundary checks, it is very similar, but a more\u2026 dirty.\\nFirst approach that came up was to convert the indices in `Vector2D` to `usize`,\\nbut when you add the indices up, e.g. when checking the neighbors, you can end\\nup with negative values which, unlike in C++, causes an error (instead of underflow\\nthat you can use to your advantage; you can easily guess how).\\n\\nSo how can we approach this then? Well\u2026 we will convert the bounds instead of\\nthe indices and that lead us to:\\n\\n```rust\\npub fn in_range(v: &[Vec], idx: &Vector2D) -> bool\\nwhere\\n usize: TryInto,\\n >::Error: Debug,\\n T: PartialOrd + Copy,\\n{\\n idx.y >= 0.try_into().unwrap()\\n && idx.y < v.len().try_into().unwrap()\\n && idx.x >= 0.try_into().unwrap()\\n && idx.x\\n < v[TryInto::::try_into(idx.y).unwrap()]\\n .len()\\n .try_into()\\n .unwrap()\\n}\\n```\\n\\nYou can tell that it\'s definitely a shitty code. Let\'s improve it now! We will\\nget back to the original idea, but do it better. We know that we cannot convert\\nnegative values into `usize`, **but** we also know that conversion like that\\nreturns a `Result` which we can use to our advantage.\\n\\n```rust\\npub fn in_range(v: &[Vec], idx: &Vector2D) -> bool\\nwhere\\n T: Copy,\\n usize: TryFrom,\\n{\\n usize::try_from(idx.y)\\n .and_then(|y| usize::try_from(idx.x).map(|x| y < v.len() && x < v[y].len()))\\n .unwrap_or(false)\\n}\\n```\\n\\n`Result` is a type similar to `Either` in Haskell and it allows us to chain\\nmultiple operations on correct results or propagate the original error without\\ndoing anything. Let\'s dissect it one-by-one.\\n\\n`try_from` is a method implemented in `TryFrom` trait, that allows you to convert\\ntypes and either successfully convert them or fail (with a reasonable error). This\\nmethod returns `Result`.\\n\\nWe call `and_then` on that _result_, let\'s have a look at the type signature of\\n`and_then`, IMO it explains more than enough:\\n\\n```rust\\npub fn and_then(self, op: F) -> Result\\nwhere\\n F: FnOnce(T) -> Result\\n```\\n\\nOK\u2026 So it takes the result and a function and returns another result with\\ndifferent value and different error. However we can see that the function, which\\nrepresents an operation on a result, takes just the value, i.e. it doesn\'t care\\nabout any previous error. To make it short:\\n\\n> `and_then` allows us to run an operation, which can fail, on the correct result\\n\\nWe parsed a `y` index and now we try to convert the `x` index with `try_from`\\nagain, but on that result we use `map` rather than `and_then`, why would that be?\\n\\n```rust\\npub fn map(self, op: F) -> Result\\nwhere\\n F: FnOnce(T) -> U\\n```\\n\\nHuh\u2026 `map` performs an operation that **cannot** fail. And finally we use\\n`unwrap_or` which takes the value from result, or in case of an error returns the\\ndefault that we define.\\n\\nHow does this work then? If `y` is negative, the conversion fails and the error\\npropagates all the way to `unwrap_or`, if `y` can be a correct `usize` value, then\\nwe do the same with `x`. If `x` is negative, we propagate the error as with `y`,\\nand if it\'s not, then we check whether it exceeds the higher bounds or not.\\n\\n### Solution\\n\\nRelatively simple, you just need follow the rules and not get too smart, otherwise\\nit will get back at you.\\n\\n## [Day 9: Rope Bridge](https://adventofcode.com/2022/day/9)\\n\\n:::info tl;dr\\n\\nWe get a rope with knots and we want to track how many different positions are\\nvisited with the rope\'s tail.\\n\\n:::\\n\\nBy this day, I have come to a conclusion that current skeleton for each day\\ngenerates a lot of boilerplate. And even though it can be easily copied, it\'s\\njust a waste of space and unnecessary code. Let\'s \u201csimplify\u201d this (on one end\\nwhile creating monster on the other end). I\'ve gone through what we need in the\\npreparations for the AoC. Let\'s sum up our requirements:\\n\\n- parsing\\n- part 1 & 2\\n- running on sample / input\\n- tests\\n\\nParsing and implementation of both parts is code that changes each day and we\\ncannot do anything about it. However running and testing can be simplified!\\n\\nLet\'s introduce and export a new module `solution` that will take care of all of\\nthis. We will start by introducing a trait for each day.\\n\\n```rust\\npub trait Solution {\\n fn parse_input>(pathname: P) -> Input;\\n\\n fn part_1(input: &Input) -> Output;\\n fn part_2(input: &Input) -> Output;\\n}\\n```\\n\\nThis does a lot of work for us already, we have defined a trait and for each day\\nwe will create a structure representing a specific day. That structure will also\\nimplement the `Solution` trait.\\n\\nNow we need to get rid of the boilerplate, we can\'t get rid of the `main` function,\\nbut we can at least move out the functionality.\\n\\n```rust\\nfn run(type_of_input: &str) -> Result<()>\\nwhere\\n Self: Sized,\\n{\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = Self::parse_input(format!(\\"{}s/{}.txt\\", type_of_input, Self::day()));\\n\\n info!(\\"Part 1: {}\\", Self::part_1(&input));\\n info!(\\"Part 2: {}\\", Self::part_2(&input));\\n\\n Ok(())\\n}\\n\\nfn main() -> Result<()>\\nwhere\\n Self: Sized,\\n{\\n Self::run(\\"input\\")\\n}\\n```\\n\\nThis is all part of the `Solution` trait, which can implement methods while being\\ndependent on what is provided by the implementing types. In this case, we just\\nneed to bound the `Output` type to implement `Display` that is necessary for the\\n`info!` and format string there.\\n\\nNow we can get to first of the nasty things we are going to do\u2026 And it is the\\n`day()` method that you can see being used when constructing path to the input\\nfile. That method will generate a name of the file, e.g. `day01` and we know that\\nwe can _somehow_ deduce it from the structure name, given we name it reasonably.\\n\\n```rust\\nfn day() -> String {\\n let mut day = String::from(type_name::().split(\\"::\\").next().unwrap());\\n day.make_ascii_lowercase();\\n\\n day.to_string()\\n}\\n```\\n\\n:::caution `type_name`\\n\\nThis feature is still experimental and considered to be internal, it is not\\nadvised to use it any production code.\\n\\n:::\\n\\nAnd now we can get to the nastiest stuff :weary: We will **generate** the tests!\\n\\nWe want to be able to generate tests for sample input in a following way:\\n\\n```rust\\ntest_sample!(day_01, Day01, 42, 69);\\n```\\n\\nThere\'s not much we can do, so we will write a macro to generate the tests for us.\\n\\n```rust\\n#[macro_export]\\nmacro_rules! test_sample {\\n ($mod_name:ident, $day_struct:tt, $part_1:expr, $part_2:expr) => {\\n #[cfg(test)]\\n mod $mod_name {\\n use super::*;\\n\\n #[test]\\n fn test_part_1() {\\n let sample =\\n $day_struct::parse_input(&format!(\\"samples/{}.txt\\", $day_struct::day()));\\n assert_eq!($day_struct::part_1(&sample), $part_1);\\n }\\n\\n #[test]\\n fn test_part_2() {\\n let sample =\\n $day_struct::parse_input(&format!(\\"samples/{}.txt\\", $day_struct::day()));\\n assert_eq!($day_struct::part_2(&sample), $part_2);\\n }\\n }\\n };\\n}\\n```\\n\\nWe have used it in a similar way as macros in C/C++, one of the things that we\\ncan use to our advantage is defining \u201ctype\u201d of the parameters for the macro. All\\nparameters have their name prefixed with `$` sign and you can define various \u201cforms\u201d\\nof your macro. Let\'s go through it!\\n\\nWe have following parameters:\\n\\n- `$mod_name` which represents the name for the module with tests, it is typed\\n with `ident` which means that we want a valid identifier to be passed in.\\n- `$day_struct` represents the structure that will be used for tests, it is typed\\n with `tt` which represents a _token tree_, in our case it is a type.\\n- `$part_X` represents the expected output for the `X`th part and is of type `expr`\\n which literally means an _expression_.\\n\\nApart from that we need to use `#[macro_export]` to mark the macro as exported\\nfor usage outside of the module. Now our skeleton looks like:\\n\\n```rust\\nuse aoc_2022::*;\\n\\ntype Input = String;\\ntype Output = String;\\n\\nstruct DayXX;\\nimpl Solution for DayXX {\\n fn parse_input>(pathname: P) -> Input {\\n file_to_string(pathname)\\n }\\n\\n fn part_1(input: &Input) -> Output {\\n todo!()\\n }\\n\\n fn part_2(input: &Input) -> Output {\\n todo!()\\n }\\n}\\n\\nfn main() -> Result<()> {\\n // DayXX::run(\\"sample\\")\\n DayXX::main()\\n}\\n\\n// test_sample!(day_XX, DayXX, , );\\n```\\n\\n### Solution\\n\\nNot much to talk about, it is relatively easy to simulate.\\n\\n## [Day 10: Cathode-Ray Tube](https://adventofcode.com/2022/day/10)\\n\\n:::info tl;dr\\n\\nEmulating basic arithmetic operations on a CPU and drawing on CRT based on the\\nCPU\'s accumulator.\\n\\n:::\\n\\nIn this day I have discovered an issue with my design of the `Solution` trait.\\nAnd the issue is caused by different types of `Output` for the part 1 and part 2.\\n\\nProblem is relatively simple and consists of simulating a CPU, I have approached\\nit in a following way:\\n\\n```rust\\nfn evaluate_instructions(instructions: &[Instruction], mut out: Output) -> Output {\\n instructions\\n .iter()\\n .fold(State::new(), |state, instruction| {\\n state.execute(instruction, &mut out)\\n });\\n\\n out\\n}\\n```\\n\\nWe just take the instructions, we have some state of the CPU and we execute the\\ninstructions one-by-one. Perfect usage of the `fold` (or `reduce` as you may know\\nit from other languages).\\n\\nYou can also see that we have an `Output` type, so the question is how can we fix\\nthat problem. And the answer is very simple and _functional_. Rust allows you to\\nhave an `enumeration` that can _bear_ some other values apart from the type itself.\\n\\n:::tip\\n\\nWe could\'ve seen something like this with the `Result` type that can be\\ndefined as\\n\\n```rust\\nenum Result {\\n Ok(T),\\n Err(E)\\n}\\n```\\n\\n###### What does that mean though?\\n\\nWhen we have an `Ok` value, it has the result itself, and when we get an `Err`\\nvalue, it has the error. This also allows us to handle _results_ in a rather\\npretty way:\\n\\n```rust\\nmatch do_something(x) {\\n Ok(y) => {\\n println!(\\"SUCCESS: {}\\", y);\\n },\\n Err(y) => {\\n eprintln!(\\"ERROR: {}\\", y);\\n }\\n}\\n```\\n\\n:::\\n\\nMy solution has a following outline:\\n\\n```rust\\nfn execute(&self, i: &Instruction, output: &mut Output) -> State {\\n // execute the instruction\\n\\n // collect results if necessary\\n match output {\\n Output::Part1(x) => self.execute_part_1(y, x),\\n Output::Part2(x) => self.execute_part_2(y, x),\\n }\\n\\n // return the obtained state\\n new_state\\n}\\n```\\n\\nYou might think that it\'s a perfectly reasonable thing to do. Yes, **but** notice\\nthat the `match` statement doesn\'t _collect_ the changes in any way and also we\\npass `output` by `&mut`, so it is shared across each _iteration_ of the `fold`.\\n\\nThe dirty and ingenious thing is that `x`s are passed by `&mut` too and therefore\\nthey are directly modified by the helper functions. To sum it up and let it sit\\n\\n> We are **collecting** the result **into** an **enumeration** that is **shared**\\n> across **all** iterations of `fold`.\\n\\n### Solution\\n\\nSimilar to _Day 9_, but there are some technical details that can get you.\\n\\n## [Day 11: Monkey in the Middle](https://adventofcode.com/2022/day/11)\\n\\n:::info tl;dr\\n\\nSimulation of monkeys throwing stuff around and measuring your stress levels\\nwhile your stuff is being passed around.\\n\\n:::\\n\\nI think I decided to use regular expressions here for the first time, cause\\nparsing the input was a pain.\\n\\nAlso I didn\'t expect to implement Euclidean algorithm in Rust\u2026\\n\\n### Solution\\n\\nAgain, we\'re just running a simulation. Though I must admit it was very easy to\\nmake a small technical mistakes that could affect the final results very late.\\n\\n## [Day 12: Hill Climbing Algorithm](https://adventofcode.com/2022/day/12)\\n\\n:::info tl;dr\\n\\nFinding shortest path up the hill and also shortest path down to the ground while\\nalso rolling down the hill\u2026\\n\\n:::\\n\\nAs I have said in the _tl;dr_, we are looking for the shortest path, but the start\\nand goal differ for the part 1 and 2. So I have decided to refactor my solution\\nto a BFS algorithm that takes necessary parameters via functions:\\n\\n```rust\\nfn bfs(\\n graph: &[Vec], start: &Position, has_edge: F, is_target: G\\n) -> Option\\nwhere\\n F: Fn(&[Vec], &Position, &Position) -> bool,\\n G: Fn(&[Vec], &Position) -> bool\\n```\\n\\nWe pass the initial vertex from the caller and everything else is left to the BFS\\nalgorithm, based on the `has_edge` and `is_target` functions.\\n\\nThis was easy! And that is not very usual in Rust once you want to pass around\\nfunctions. :eyes:\\n\\n### Solution\\n\\nLooking for the shortest path\u2026 Must be Dijkstra, right? **Nope!** Half of the\\nReddit got jebaited though. In all fairness, nothing stops you from implementing\\nthe Dijkstra\'s algorithm for finding the shortest path, **but** if you know that\\nall connected vertices are in a unit (actually $d = 1$) distance from each other,\\nthen you know that running Dijkstra is equivalent to running BFS, only with worse\\ntime complexity, because of the priority heap instead of the queue.\\n\\n## [Day 13: Distress Signal](https://adventofcode.com/2022/day/13)\\n\\n:::info tl;dr\\n\\nProcessing packets with structured data from the distress signal.\\n\\n:::\\n\\nYou can implement a lot of traits if you want to. It is _imperative_ to implement\\nordering on the packets. I had a typo, so I also proceeded to implement a `Display`\\ntrait for debugging purposes:\\n\\n```rust\\nimpl Display for Packet {\\n fn fmt(&self, f: &mut std::fmt::Formatter<\'_>) -> std::fmt::Result {\\n match self {\\n Packet::Integer(x) => write!(f, \\"{x}\\"),\\n Packet::List(lst) => write!(f, \\"[{}]\\", lst.iter().map(|p| format!(\\"{p}\\")).join(\\",\\")),\\n }\\n }\\n}\\n```\\n\\n### Solution\\n\\nA lot of technical details\u2026 Parsing is nasty too\u2026\\n\\n## [Day 14: Regolith Reservoir](https://adventofcode.com/2022/day/14)\\n\\n:::info tl;dr\\n\\nLet\'s simulate falling sand grain-by-grain.\\n\\n:::\\n\\nAgain, both parts are relatively similar with minimal changes, so it is a good\\nidea to refactor it a bit. Similar approach to the [BFS above]. Also this is the\\nfirst day where I ran into efficiency issues and had to redo my solution to speed\\nit up just a bit.\\n\\n### Solution\\n\\nTedious.\\n\\n## Post Mortem\\n\\n### Indexing\\n\\nI was asked about the indexing after publishing the blog. And truly it is rather\\ncomplicated topic, especially after releasing `SliceIndex` trait. I couldn\'t\\nleave it be, so I tried to implement the `Index` and `IndexMut` trait.\\n\\n:::note\\n\\nI have also mentioned that the `SliceIndex` trait is `unsafe`, but truth be told,\\nonly _unsafe_ part are the 2 methods that are named `*unchecked*`. Anyways, I will\\nbe implementing the `Index*` traits for now, rather than the `SliceIndex`.\\n\\n:::\\n\\nIt\'s relatively straightforward\u2026\\n\\n```rust\\nimpl Index> for [C]\\nwhere\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: Index,\\n{\\n type Output = C::Output;\\n\\n fn index(&self, index: Vector2D) -> &Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &self[y][x]\\n }\\n}\\n\\nimpl IndexMut> for [C]\\nwhere\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: IndexMut,\\n{\\n fn index_mut(&mut self, index: Vector2D) -> &mut Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &mut self[y][x]\\n }\\n}\\n```\\n\\nWe can see a lot of similarities to the implementation of `index` and `index_mut`\\nfunctions. In the end, they are 1:1, just wrapped in the trait that provides a\\nsyntax sugar for `container[idx]`.\\n\\n:::note\\n\\nI have also switched from using the `TryFrom` to `TryInto` trait, since it better\\nmatches what we are using, the `.try_into` rather than `usize::try_from`.\\n\\nAlso implementing `TryFrom` automatically provides you with a `TryInto` trait,\\nsince it is relatively easy to implement. Just compare the following:\\n\\n```rust\\npub trait TryFrom: Sized {\\n type Error;\\n\\n fn try_from(value: T) -> Result;\\n}\\n\\npub trait TryInto: Sized {\\n type Error;\\n\\n fn try_into(self) -> Result;\\n}\\n```\\n\\n:::\\n\\nOK, so we have our trait implemented, we should be able to use `container[index]`,\\nright? Yes\u2026 but actually no :frowning:\\n\\n```\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:26:18\\n |\\n26 | if trees[pos] > tallest {\\n | ^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:30:28\\n |\\n30 | max(tallest, trees[pos])\\n | ^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:52:28\\n |\\n52 | let max_height = trees[position];\\n | ^^^^^^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n```\\n\\nWhy? We have it implemented for the slices (`[C]`), why doesn\'t it work? Well,\\nthe fun part consists of the fact that in other place, where we were using it,\\nwe were passing the `&[Vec]`, but this is coming from a helper functions that\\ntake `&Vec>` instead. And\u2026 we don\'t implement `Index` and `IndexMut` for\\nthose. Just for the slices. \ud83e\udd2f _What are we going to do about it?_\\n\\nWe can either start copy-pasting or be smarter about it\u2026 I choose to be smarter,\\nso let\'s implement a macro! The only difference across the implementations are\\nthe types of the outer containers. Implementation doesn\'t differ **at all**!\\n\\nImplementing the macro can be done in a following way:\\n\\n```rust\\nmacro_rules! generate_indices {\\n ($container:ty) => {\\n impl Index> for $container\\n where\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: Index,\\n {\\n type Output = C::Output;\\n\\n fn index(&self, index: Vector2D) -> &Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &self[y][x]\\n }\\n }\\n\\n impl IndexMut> for $container\\n where\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: IndexMut,\\n {\\n fn index_mut(&mut self, index: Vector2D) -> &mut Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &mut self[y][x]\\n }\\n }\\n };\\n}\\n```\\n\\nAnd now we can simply do\\n\\n```rust\\ngenerate_indices!(VecDeque);\\ngenerate_indices!([C]);\\ngenerate_indices!(Vec);\\n// generate_indices!([C; N], const N: usize);\\n```\\n\\nThe last type (I took the inspiration from the implementations of the `Index` and\\n`IndexMut` traits) is a bit problematic, because of the `const N: usize` part,\\nwhich I haven\'t managed to be able to parse. And that\'s how I got rid of the error.\\n\\n:::note\\n\\nIf I were to use 2D-indexing over `[C; N]` slices, I\'d probably just go with the\\ncopy-paste, cause the cost of this \u201cmonstrosity\u201d outweighs the benefits of no DRY.\\n\\n:::\\n\\n#### Cause of the problem\\n\\nThis issue is relatively funny. If you don\'t use any type aliases, just the raw\\ntypes, you\'ll get suggested certain changes by the _clippy_. For example if you\\nconsider the following piece of code\\n\\n```rust\\nfn get_sum(nums: &Vec) -> i32 {\\n nums.iter().sum()\\n}\\n\\nfn main() {\\n let nums = vec![1, 2, 3];\\n println!(\\"Sum: {}\\", get_sum(&nums));\\n}\\n```\\n\\nand you run _clippy_ on it, you will get\\n\\n```\\nChecking playground v0.0.1 (/playground)\\nwarning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do\\n --\x3e src/main.rs:1:18\\n |\\n1 | fn get_sum(nums: &Vec) -> i32 {\\n | ^^^^^^^^^ help: change this to: `&[i32]`\\n |\\n = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg\\n = note: `#[warn(clippy::ptr_arg)]` on by default\\n\\nwarning: `playground` (bin \\"playground\\") generated 1 warning\\n Finished dev [unoptimized + debuginfo] target(s) in 0.61s\\n```\\n\\nHowever, if you introduce a type alias, such as\\n\\n```rust\\ntype Numbers = Vec;\\n```\\n\\nThen _clippy_ won\'t say anything, cause there is literally nothing to suggest.\\nHowever the outcome is not the same\u2026\\n\\n[_advent of code_]: https://adventofcode.com\\n[bfs above]: #day-12-hill-climbing-algorithm"},{"id":"aoc-2022/1st-week","metadata":{"permalink":"/blog/aoc-2022/1st-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/01-week-1.md","source":"@site/blog/aoc-2022/01-week-1.md","title":"1st week of Advent of Code \'22 in Rust","description":"Surviving first week in Rust.","date":"2022-12-15T01:15:00.000Z","formattedDate":"December 15, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":12.4,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"1st week of Advent of Code \'22 in Rust","description":"Surviving first week in Rust.","date":"2022-12-15T01:15","slug":"aoc-2022/1st-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"2nd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/2nd-week"},"nextItem":{"title":"Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/intro"}},"content":"Let\'s go through the first week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n:::note\\n\\nIf you wish to have a look at the solutions, you can follow them on my [GitLab].\\nMore specifically in the [`/src/bin/`].\\n\\n:::\\n\\nI will try to summarize my experience with using Rust for the AoC. Trying it out\\nages ago, I believe it will be _pain and suffering_, but we will see. For each\\nday I will also try to give a tl;dr of the problem, so that you can better imagine\\nthe relation to my woes or :+1: moments.\\n\\n## [Day 1: Calorie Counting](https://adventofcode.com/2022/day/1)\\n\\n:::info tl;dr\\n\\nAs the name suggests, we get the calories of the food contained in the elves\\nbackpacks and we want to choose the elf that has the most food ;)\\n\\n:::\\n\\n> Wakey wakey!\\n\\nProgramming in Rust at 6am definitely hits. I\'ve also forgotten to mention how I\\nhandle samples. With each puzzle you usually get a sample input and expected\\noutput. You can use them to verify that your solution works, or usually doesn\'t.\\n\\nAt first I\'ve decided to put asserts into my `main`, something like\\n\\n```rust\\nassert_eq!(part_1(&sample), 24000);\\ninfo!(\\"Part 1: {}\\", part_1(&input));\\n\\nassert_eq!(part_2(&sample), 45000);\\ninfo!(\\"Part 2: {}\\", part_2(&input));\\n```\\n\\nHowever, once you get further, the sample input may take some time to run itself.\\nSo in the end, I have decided to turn them into unit tests:\\n\\n```rust\\n#[cfg(test)]\\nmod tests {\\n use super::*;\\n\\n #[test]\\n fn test_part_1() {\\n let sample = parse_input(\\"samples/day01.txt\\");\\n assert_eq!(part_1(&sample), 24000);\\n }\\n\\n #[test]\\n fn test_part_2() {\\n let sample = parse_input(\\"samples/day01.txt\\");\\n assert_eq!(part_2(&sample), 45000);\\n }\\n}\\n```\\n\\nAnd later on I have noticed, it\'s hard to tell the difference between the days,\\nso I further renamed the `mod` from generic `tests` to reflect the days.\\n\\nAlso after finishing the first day puzzle, I have installed an [`sccache`] to\\ncache the builds, so that the build time is lower, cause it was kinda unbearable.\\n\\n### Solution\\n\\nWell, it\'s a pretty simple problem. You just take the input, sum the calories and\\nfind the biggest one. However, if we try to generalize to more than the biggest\\none, the fun appears. We have few options:\\n\\n- keep all the calories, sort them, take what we need\\n- keep all the calories and use max heap\\n- use min heap and maintain at most N calories that we need\\n\\n## [Day 2: Rock Paper Scissors](https://adventofcode.com/2022/day/2)\\n\\n:::info tl;dr\\n\\nYou want to know what score did you achieve while playing _Rock Paper Scissors_.\\nAnd then you want to be strategic about it.\\n\\n:::\\n\\nApart from the technical details of the puzzle, it went relatively smooth.\\n\\n### Solution\\n\\nI took relatively na\xefve approach and then tried to simplify it.\\n\\n## [Day 3: Rucksack Reorganization](https://adventofcode.com/2022/day/3)\\n\\n:::info tl;dr\\n\\nLet\'s go reorganize elves\' backpacks! Each backpacks has 2 compartments and you\\nwant to find the common item among those compartments. Each of them has priority,\\nyou care only about the sum.\\n\\n:::\\n\\nThis is the day where I started to fight the compiler and neither of us decided\\nto give up. Let\'s dive into it \\\\o/\\n\\n:::tip Fun fact\\n\\nFighting the compiler took me 30 minutes.\\n\\n:::\\n\\nWe need to find a common item among 2 collections, that\'s an easy task, right?\\nWe can construct 2 sets and find an intersection:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3].iter().collect();\\nlet bottom: HashSet = [3, 4, 5].iter().collect();\\n```\\n\\nNow, the first issue that we encounter is caused by the fact that we are using\\na slice (the `[\u2026]`), iterator of that returns **references** to the numbers.\\nAnd we get immediately yelled at by the compiler, because the numbers are discarded\\nafter running the `.collect`. To fix this, we can use `.into_iter`:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5].into_iter().collect();\\n```\\n\\nThis way the numbers will get copied instead of referenced. OK, let\'s find the\\nintersection of those 2 collections:\\n\\n```rust\\nprintln!(\\"Common elements: {:?}\\", top.intersection(&bottom));\\n```\\n\\n```\\nCommon elements: [3]\\n```\\n\\n:::caution\\n\\nNotice that we need to do `&bottom`. It explicitly specifies that `.intersection`\\n**borrows** the `bottom`, i.e. takes an immutable reference to it.\\n\\n:::\\n\\nThat\'s what we want, right? Looks like it! \\\\o/\\n\\nNext part wants us to find the common element among all of the backpacks. OK, so\\nthat should be fairly easy, we have an intersection and we want to find intersection\\nover all of them.\\n\\nLet\'s have a look at the type of the `.intersection`\\n\\n```rust\\npub fn intersection<\'a>(\\n\xa0\xa0\xa0\xa0&\'a self,\\n\xa0\xa0\xa0\xa0other: &\'a HashSet\\n) -> Intersection<\'a, T, S>\\n```\\n\\nOK\u2026 Huh\u2026 But we have an example there!\\n\\n```rust\\nlet intersection: HashSet<_> = a.intersection(&b).collect();\\n```\\n\\nCool, that\'s all we need.\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\n```\\nIntersection: {3, 4}\\n```\\n\\nCool, so let\'s do the intersection with the `top_2`:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).collect();\\nlet intersection: HashSet<_> = intersection.intersection(&top_2).collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\nAnd we get yelled at by the compiler:\\n\\n```\\nerror[E0308]: mismatched types\\n --\x3e src/main.rs:10:58\\n |\\n10 | let intersection: HashSet<_> = intersection.intersection(&top_2).collect();\\n | ------------ ^^^^^^ expected `&i32`, found `i32`\\n | |\\n | arguments to this function are incorrect\\n |\\n = note: expected reference `&HashSet<&i32>`\\n found reference `&HashSet`\\n```\\n\\n/o\\\\ What the hell is going on here? Well, the funny thing is, that this operation\\ndoesn\'t return the elements themselves, but the references to them and when we pass\\nthe third set, it has just the values themselves, without any references.\\n\\n:::tip\\n\\nIt may seem as a very weird decision, but in fact it makes some sense\u2026 It allows\\nyou to do intersection of items that may not be possible to copy. Overall this is\\na \u201ctax\u201d for having a borrow checker ~~drilling your ass~~ having your back and\\nmaking sure you\'re not doing something naughty that may cause an **undefined**\\n**behavior**.\\n\\n:::\\n\\nTo resolve this we need to get an iterator that **clones** the elements:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).cloned().collect();\\nlet intersection: HashSet<_> = intersection.intersection(&top_2).cloned().collect();\\nlet intersection: HashSet<_> = intersection.intersection(&bottom_2).cloned().collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\n```\\nIntersection: {4}\\n```\\n\\n### Solution\\n\\nThe approach is pretty simple, if you omit the _1on1 with the compiler_. You just\\nhave some fun with the set operations :)\\n\\n## [Day 4: Camp Cleanup](https://adventofcode.com/2022/day/4)\\n\\n:::info tl;dr\\n\\nElves are cleaning up the camp and they got overlapping sections to clean up.\\nFind how many overlap and can take the day off.\\n\\n:::\\n\\n[`RangeInclusive`] is your friend not an enemy :)\\n\\n### Solution\\n\\nRelatively easy, you just need to parse the input and know what you want. Rust\'s\\n`RangeInclusive` type helped a lot, cause it took care of all abstractions.\\n\\n## [Day 5: Supply Stacks](https://adventofcode.com/2022/day/5)\\n\\n:::info tl;dr\\n\\nLet\'s play with stacks of crates.\\n\\n:::\\n\\nVery easy problem with very annoying input. You can judge yourself:\\n\\n```\\n [D]\\n[N] [C]\\n[Z] [M] [P]\\n 1 2 3\\n\\nmove 1 from 2 to 1\\nmove 3 from 1 to 3\\nmove 2 from 2 to 1\\nmove 1 from 1 to 2\\n```\\n\\nGood luck transforming that into something reasonable :)\\n\\n:::tip Fun fact\\n\\nTook me 40 minutes to parse this reasonably, including fighting the compiler.\\n\\n:::\\n\\n### Solution\\n\\nFor the initial solution I went with a manual solution (as in _I have done all_\\n_the work_. Later on I have decided to explore the `std` and interface of the\\n`std::vec::Vec` and found [`split_off`] which takes an index and splits (duh)\\nthe vector:\\n\\n```rust\\nlet mut vec = vec![1, 2, 3];\\nlet vec2 = vec.split_off(1);\\nassert_eq!(vec, [1]);\\nassert_eq!(vec2, [2, 3]);\\n```\\n\\nThis helped me simplify my solution a lot and also get rid of some _edge cases_.\\n\\n## [Day 6: Tuning Trouble](https://adventofcode.com/2022/day/6)\\n\\n:::info tl;dr\\n\\nFinding start of the message in a very weird protocol. Start of the message is\\ndenoted by $N$ unique consecutive characters.\\n\\n:::\\n\\n### Solution\\n\\nA lot of different approaches, knowing that we are dealing with input consisting\\nsolely of ASCII letters, I bit the bullet and went with sliding window and\\nconstructing sets from that window, checking if the set is as big as the window.\\n\\nOne possible optimization could consist of keeping a bit-vector (i.e. `usize`\\nvariable) of encountered characters and updating it as we go. However this has\\na different issue and that is removal of the characters from the left side of the\\nwindow. We don\'t know if the same character is not included later on.\\n\\nOther option is to do similar thing, but keeping the frequencies of the letters,\\nand again knowing we have only ASCII letters we can optimize by having a vector\\nof 26 elements that keeps count for each lowercase letter.\\n\\n## [Day 7: No Space Left On Device](https://adventofcode.com/2022/day/7)\\n\\n:::info tl;dr\\n\\nLet\'s simulate [`du`] to get some stats about our file system and then pinpoint\\ndirectories that take a lot of space and should be deleted.\\n\\n:::\\n\\n> I was waiting for this moment, and yet it got me!\\n> _imagine me swearing for hours_\\n\\n### Solution\\n\\nWe need to \u201c_build_\u201d a file system from the input that is given in a following form:\\n\\n```\\n$ cd /\\n$ ls\\ndir a\\n14848514 b.txt\\n8504156 c.dat\\ndir d\\n$ cd a\\n$ ls\\ndir e\\n29116 f\\n2557 g\\n62596 h.lst\\n$ cd e\\n$ ls\\n584 i\\n$ cd ..\\n$ cd ..\\n$ cd d\\n$ ls\\n4060174 j\\n8033020 d.log\\n5626152 d.ext\\n7214296 k\\n```\\n\\nThere are few ways in which you can achieve this and also you can assume some\\npreconditions, but why would we do that, right? :)\\n\\nYou can \u201cslap\u201d this in either [`HashMap`] or [`BTreeMap`] and call it a day.\\nAnd that would be boring\u2026\\n\\n:::tip\\n\\n`BTreeMap` is quite fitting for this, don\'t you think?\\n\\n:::\\n\\nI always wanted to try allocation on heap in Rust, so I chose to implement a tree.\\nI fought with the `Box` for some time and was losing\u2026\\n\\nThen I looked up some implementations of trees or linked lists and decided to try\\n`Rc>`. And I got my _ass whopped_ by the compiler once again. /o\\\\\\n\\n:::tip\\n\\n`Box` represents a dynamically allocated memory on heap. It is a single pointer,\\nyou can imagine this as `std::unique_ptr` in C++.\\n\\n`Rc` represents a dynamically allocated memory on heap. On top of that it is\\n_reference counted_ (that\'s what the `Rc` stands for). You can imagine this as\\n`std::shared_ptr` in C++.\\n\\nNow the fun stuff. Neither of them lets you **mutate** the contents of the memory.\\n\\n`Cell` allows you to mutate the memory. Can be used reasonably with types that\\ncan be copied, because the memory safety is guaranteed by copying the contents\\nwhen there is more than one **mutable** reference to the memory.\\n\\n`RefCell` is similar to the `Cell`, but the borrowing rules (how many mutable\\nreferences are present) are checked dynamically.\\n\\nSo in the end, if you want something like `std::shared_ptr` in Rust, you want\\nto have `Rc>`.\\n\\n:::\\n\\nSo, how are we going to represent the file system then? We will use an enumeration,\\nhehe, which is an algebraic data type that can store some stuff in itself :weary:\\n\\n```rust\\ntype FileHandle = Rc>;\\n\\n#[derive(Debug)]\\nenum AocFile {\\n File(usize),\\n Directory(BTreeMap),\\n}\\n```\\n\\nLet\'s go over it! `FileHandle` represents dynamically allocated `AocFile`, not\\nmuch to discuss. What does the `#[derive(Debug)]` do though? It lets us to print\\nout the value of that enumeration, it\'s derived, so it\'s not as good as if we had\\nimplemented it ourselves, but it\'s good enough for debugging, hence the name.\\n\\nNow to the fun part! `AocFile` value can be represented in two ways:\\n\\n- `File(usize)`, e.g. `AocFile::File(123)` and we can pattern match it, if we\\n need to\\n- `Directory(BTreeMap)` will represent the directory and will\\n contain map matching the name of the files (or directories) within to their\\n respective file handles\\n\\nI will omit the details about constructing this file system, cause there are a lot\\nof technicalities introduced by the nature of the input. However if you are\\ninterested, you can have a look at my solution.\\n\\nWe need to find small enough directories and also find the smallest directory that\\nwill free enough space. Now the question is, how could we do that. And there are\\nmultiple ways I will describe.\\n\\nI have chosen to implement [_tree catamorphism_] :weary:. It is basically a fold\\nover a tree data structure. We descent down into the leaves and propagate computed\\nresults all the way to the root. You can also notice that this approach is very\\nsimilar to _dynamic programming_, we find overlapping sections of the computation\\nand try to minimize the additional work (in this case: we need to know sizes of\\nour descendants, but we have already been there).\\n\\nAnother approach that has been suggested to me few days later is running DFS on\\nthe graph. And, funnily enough, we would still need to combine what we found in\\nthe branches where we descent. So in the end, it would work very similarly to my\\nsolution.\\n\\nOne of the more exotic options would be precomputing the required information at\\nthe same time as parsing. That could be done by adding additional fields to the\\nnodes which would allow storing such information and updating it as we construct\\nthe file system.\\n\\n## Post Mortem\\n\\nThings that have been brought up in the discussion later on.\\n\\n### `Rc` vs `Rc>`\\n\\nIt has been brought up that I have a contradicting statement regarding the\\ndynamically allocated memory. Specifically:\\n\\n- You can imagine `Rc` as an `std::shared_ptr` (in C++)\\n- When you want an equivalent of `std::shared_ptr`, you want to use\\n `Rc>`\\n\\nNow, in Rust it is a bit more complicated, because the type that represents the\\n\u201cshared pointer\u201d is `Rc`. What `RefCell` does is making sure that there is\\nonly one \u201cowner\u201d of a mutable reference at a time (and dynamically, as opposed\\nto the `Cell`).\\n\\nTherefore to be precise and correct about the equivalents of `std::shared_ptr`\\nin Rust, we can say that\\n\\n- `Rc` is an equivalent of a `const std::shared_ptr`,\\n- and `Rc>` is an equivalent of a `std::shared_ptr`.\\n\\nYou can easily see that they only differ in the mutability. (And even that is not\\nas simple as it seems, because there is also `Cell`)\\n\\n[_advent of code_]: https://adventofcode.com\\n[gitlab]: https://gitlab.com/mfocko/advent-of-code-2022\\n[`/src/bin/`]: https://gitlab.com/mfocko/advent-of-code-2022/-/tree/main/src/bin\\n[`sccache`]: https://github.com/mozilla/sccache\\n[`rangeinclusive`]: https://doc.rust-lang.org/std/ops/struct.RangeInclusive.html\\n[`split_off`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.split_off\\n[`du`]: https://www.man7.org/linux/man-pages/man1/du.1.html\\n[`hashmap`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html\\n[`btreemap`]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html\\n[_tree catamorphism_]: https://en.wikipedia.org/wiki/Catamorphism#Tree_fold"},{"id":"aoc-2022/intro","metadata":{"permalink":"/blog/aoc-2022/intro","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/00-intro.md","source":"@site/blog/aoc-2022/00-intro.md","title":"Advent of Code \'22 in Rust","description":"Preparing for Advent of Code \'22.","date":"2022-12-14T21:45:00.000Z","formattedDate":"December 14, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":8.665,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Advent of Code \'22 in Rust","description":"Preparing for Advent of Code \'22.","date":"2022-12-14T21:45","slug":"aoc-2022/intro","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"1st week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/1st-week"}},"content":"Let\'s talk about the preparations for this year\'s [_Advent of Code_].\\n\\n\x3c!--truncate--\x3e\\n\\n## Choosing a language\\n\\nWhen choosing a language for AoC, you usually want a language that gives you a\\nquick feedback which allows you to iterate quickly to the solution of the puzzle.\\nOne of the most common choices is Python, many people also use JavaScript or Ruby.\\n\\nGiven the competitive nature of the AoC and popularity among competitive programming,\\nC++ might be also a very good choice. Only if you are familiar with it, I guess\u2026\\n\\nIf you want a challenge, you might also choose to rotate the languages each day.\\nThough I prefer to use only one language.\\n\\nFor this year I have been deciding between _Rust_, _C++_ and _Pascal_ or _Ada_.\\n\\nI have tried Rust last year and have survived with it for 3 days and then gave\\nup and switched to _Kotlin_, which was pretty good given it is \u201cJava undercover\u201d.\\nI pretty much like the ideas behind Rust, I am not sure about the whole cult and\\nimplementation of those ideas though. After some years with C/C++, I would say\\nthat Rust feels _too safe_ for my taste and tries to \u201c_punish me_\u201d even for the\\nmost trivial things.\\n\\nC++ is a very robust, but also comes with a wide variety of options providing you\\nthe ability to shoot yourself in the leg. I have tried to solve few days of previous\\nAdvent of Code events, it was _relatively easy_ to solve the problems in C++, given\\nthat I do not admit writing my own iterator for `enumerate`\u2026\\n\\nPascal or Ada were meme choices :) Ada is heavily inspired by Pascal and has a\\npretty nice standard library that offers enough to be able to quickly solve some\\nproblems in it. However the toolkit is questionable :/\\n\\n## Choosing libraries\\n\\n## Preparations for Rust\\n\\nAll of the sources, later on including solutions, can be found at my\\n[GitLab].\\n\\n### Toolkit\\n\\nSince we are using Rust, we are going to use a [Cargo] and more than likely VSCode\\nwith [`rust-analyzer`]. Because of my choice of libraries, we will also introduce\\na `.envrc` file that can be used by [`direnv`], which allows you to set specific\\nenvironment variables when you enter a directory. In our case, we will use\\n\\n```bash\\n# to show nice backtrace when using the color-eyre\\nexport RUST_BACKTRACE=1\\n\\n# to catch logs generated by tracing\\nexport RUST_LOG=trace\\n```\\n\\nAnd for the one of the most obnoxious things ever, we will use a script to download\\nthe inputs instead of \u201c_clicking, opening and copying to a file_\u201d[^1]. There is\\nno need to be _fancy_, so we will adjust Python script by Martin[^2].\\n\\n```py\\n#!/usr/bin/env python3\\n\\nimport datetime\\nimport yaml\\nimport requests\\nimport sys\\n\\n\\ndef load_config():\\n with open(\\"env.yaml\\", \\"r\\") as f:\\n js = yaml.load(f, Loader=yaml.Loader)\\n return js[\\"session\\"], js[\\"year\\"]\\n\\n\\ndef get_input(session, year, day):\\n return requests.get(\\n f\\"https://adventofcode.com/{year}/day/{day}/input\\",\\n cookies={\\"session\\": session},\\n headers={\\n \\"User-Agent\\": \\"{repo} by {mail}\\".format(\\n repo=\\"gitlab.com/mfocko/advent-of-code-2022\\",\\n mail=\\"me@mfocko.xyz\\",\\n )\\n },\\n ).content.decode(\\"utf-8\\")\\n\\n\\ndef main():\\n day = datetime.datetime.now().day\\n if len(sys.argv) == 2:\\n day = sys.argv[1]\\n\\n session, year = load_config()\\n problem_input = get_input(session, year, day)\\n\\n with open(f\\"./inputs/day{day:>02}.txt\\", \\"w\\") as f:\\n f.write(problem_input)\\n\\n\\nif __name__ == \\"__main__\\":\\n main()\\n```\\n\\nIf the script is called without any arguments, it will deduce the day from the\\nsystem, so we do not need to change the day every morning. It also requires a\\nconfiguration file:\\n\\n```yaml\\n# env.yaml\\nsession: \u2039your session cookie\u203a\\nyear: 2022\\n```\\n\\n### Libraries\\n\\nLooking at the list of the libraries, I have chosen \u201ca lot\u201d of them. Let\'s walk\\nthrough each of them.\\n\\n[`tracing`] and [`tracing-subscriber`] are the crates that can be used for tracing\\nand logging of your Rust programs, there are also other crates that can help you\\nwith providing backtrace to the Sentry in case you have deployed your application\\nsomewhere and you want to watch over it. In our use case we will just utilize the\\nmacros for debugging in the terminal.\\n\\n[`thiserror`], [`anyhow`] and [`color-eyre`] are used for error reporting.\\n`thiserror` is a very good choice for libraries, cause it extends the `Error`\\nfrom the `std` and allows you to create more convenient error types. Next is\\n`anyhow` which kinda builds on top of the `thiserror` and provides you with simpler\\nerror handling in binaries[^3]. And finally we have `color-eyre` which, as I found\\nout later, is a colorful (_wink wink_) extension of `eyre` which is fork of `anyhow`\\nwhile supporting customized reports.\\n\\nIn the end I have decided to remove `thiserror` and `anyhow`, since first one is\\nsuitable for libraries and the latter was basically fully replaced by `{color-,}eyre`.\\n\\n[`regex`] and [`lazy_static`] are a very good and also, I hope, self-explanatory\\ncombination. `lazy_static` allows you to have static variables that must be initialized\\nduring runtime.\\n\\n[`itertools`] provides some nice extensions to the iterators from the `std`.\\n\\n### My own \u201clibrary\u201d\\n\\nWhen creating the crate for this year\'s Advent of Code, I have chosen a library\\ntype. Even though standard library is huge, some things might not be included and\\nalso we can follow _KISS_. I have 2 modules that my \u201clibrary\u201d exports, one for\\nparsing and one for 2D vector (that gets used quite often during Advent of Code).\\n\\nKey part is, of course, processing the input and my library exports following\\nfunctions that get used a lot:\\n\\n```rust\\n/// Reads file to the string.\\npub fn file_to_string>(pathname: P) -> String;\\n\\n/// Reads file and returns it as a vector of characters.\\npub fn file_to_chars>(pathname: P) -> Vec;\\n\\n/// Reads file and returns a vector of parsed structures. Expects each structure\\n/// on its own line in the file. And `T` needs to implement `FromStr` trait.\\npub fn file_to_structs, T: FromStr>(pathname: P) -> Vec\\nwhere\\n ::Err: Debug;\\n\\n/// Converts iterator over strings to a vector of parsed structures. `T` needs\\n/// to implement `FromStr` trait and its error must derive `Debug` trait.\\npub fn strings_to_structs(\\n iter: impl Iterator\\n) -> Vec\\nwhere\\n ::Err: std::fmt::Debug,\\n U: Deref;\\n\\n/// Reads file and returns it as a vector of its lines.\\npub fn file_to_lines>(pathname: P) -> Vec;\\n```\\n\\nAs for the vector, I went with a rather simple implementation that allows only\\naddition of the vectors for now and accessing the elements via functions `x()`\\nand `y()`. Also the vector is generic, so we can use it with any numeric type we\\nneed.\\n\\n### Skeleton\\n\\nWe can also prepare a template to quickly bootstrap each of the days. We know\\nthat each puzzle has 2 parts, which means that we can start with 2 functions that\\nwill solve them.\\n\\n```rust\\nfn part1(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn part2(input: &Input) -> Output {\\n todo!()\\n}\\n```\\n\\nBoth functions take reference to the input and return some output (in majority\\nof puzzles, it is the same type). `todo!()` can be used as a nice placeholder,\\nit also causes a panic when reached and we could also provide some string with\\nan explanation, e.g. `todo!(\\"part 1\\")`. We have not given functions a specific\\ntype and to avoid as much copy-paste as possible, we will introduce type aliases.\\n\\n```rust\\ntype Input = String;\\ntype Output = i32;\\n```\\n\\n:::tip\\n\\nThis allows us to quickly adjust the types only in one place without the need to\\ndo _regex-replace_ or replace them manually.\\n\\n:::\\n\\nFor each day we get a personalized input that is provided as a text file. Almost\\nall the time, we would like to get some structured type out of that input, and\\ntherefore it makes sense to introduce a new function that will provide the parsing\\nof the input.\\n\\n```rust\\nfn parse_input(path: &str) -> Input {\\n todo!()\\n}\\n```\\n\\nThis \u201cparser\u201d will take a path to the file, just in case we would like to run the\\nsample instead of input.\\n\\nOK, so now we can write a `main` function that will take all of the pieces and\\nrun them.\\n\\n```rust\\nfn main() {\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n println!(\\"Part 1: {}\\", part_1(&input));\\n println!(\\"Part 2: {}\\", part_2(&input));\\n}\\n```\\n\\nThis would definitely do :) But we have installed a few libraries and we want to\\nuse them. In this part we are going to utilize _[`tracing`]_ (for tracing, duh\u2026)\\nand _[`color-eyre`]_ (for better error reporting, e.g. from parsing).\\n\\n```rust\\nfn main() -> Result<()> {\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n info!(\\"Part 1: {}\\", part_1(&input));\\n info!(\\"Part 2: {}\\", part_2(&input));\\n\\n Ok(())\\n}\\n```\\n\\nThe first statement will set up tracing and configure it to print out the logs to\\nterminal, based on the environment variable. We also change the formatting a bit,\\nsince we do not need all the _fancy_ features of the logger. Pure initialization\\nwould get us logs like this:\\n\\n```\\n2022-12-11T19:53:19.975343Z INFO day01: Part 1: 0\\n```\\n\\nHowever after running that command, we will get the following:\\n\\n```\\n INFO src/bin/day01.rs:35: Part 1: 0\\n```\\n\\nAnd the `color_eyre::install()?` is quite straightforward. We just initialize the\\nerror reporting by _color eyre_.\\n\\n:::caution\\n\\nNotice that we had to add `Ok(())` to the end of the function and adjust the\\nreturn type of the `main` to `Result<()>`. It is caused by the _color eyre_ that\\ncan be installed only once and therefore it can fail, that is how we got the `?`\\nat the end of the `::install` which _unwraps_ the **\xbbresult\xab** of the installation.\\n\\n:::\\n\\nOverall we will get to a template like this:\\n\\n```rust\\nuse aoc_2022::*;\\n\\nuse color_eyre::eyre::Result;\\nuse tracing::info;\\nuse tracing_subscriber::EnvFilter;\\n\\ntype Input = String;\\ntype Output = i32;\\n\\nfn parse_input(path: &str) -> Input {\\n todo!()\\n}\\n\\nfn part1(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn part2(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn main() -> Result<()> {\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n info!(\\"Part 1: {}\\", part_1(&input));\\n info!(\\"Part 2: {}\\", part_2(&input));\\n\\n Ok(())\\n}\\n```\\n\\n[^1]:\\n Copy-pasting might be a relaxing thing to do, but you can also discover\\n nasty stuff about your PC. See [this Reddit post and the comment].\\n\\n[^2]: [GitHub profile](https://github.com/martinjonas)\\n[^3]:\\n Even though you can use it even for libraries, but handling errors from\\n libraries using `anyhow` is nasty\u2026 You will be the stinky one ;)\\n\\n[_advent of code_]: https://adventofcode.com\\n[gitlab]: https://gitlab.com/mfocko/advent-of-code-2022\\n[cargo]: https://doc.rust-lang.org/cargo/\\n[`rust-analyzer`]: https://rust-analyzer.github.io/\\n[`direnv`]: https://direnv.net/\\n[`tracing`]: https://crates.io/crates/tracing\\n[`tracing-subscriber`]: https://crates.io/crates/tracing-subscriber\\n[`thiserror`]: https://crates.io/crates/thiserror\\n[`anyhow`]: https://crates.io/crates/anyhow\\n[`color-eyre`]: https://crates.io/crates/color-eyre\\n[`regex`]: https://crates.io/crates/regex\\n[`lazy_static`]: https://crates.io/crates/lazy_static\\n[`itertools`]: https://crates.io/crates/itertools\\n[this reddit post and the comment]: https://www.reddit.com/r/adventofcode/comments/zb98pn/comment/iyq0ono"}]}')}}]); \ No newline at end of file diff --git a/assets/js/4200b1a9.5219df10.js b/assets/js/4200b1a9.5219df10.js new file mode 100644 index 0000000..7934eb5 --- /dev/null +++ b/assets/js/4200b1a9.5219df10.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[866],{24612:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2024/06/19/devconf-2024","metadata":{"permalink":"/blog/2024/06/19/devconf-2024","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2024-06-19-devconf-2024.md","source":"@site/blog/2024-06-19-devconf-2024.md","title":"DevConf.cz 2024","description":"Sharing my experience on DevConf.cz 2024.\\n","date":"2024-06-19T00:00:00.000Z","formattedDate":"June 19, 2024","tags":[{"label":"\ud83c\udfed","permalink":"/blog/tags/\ud83c\udfed"},{"label":"red-hat","permalink":"/blog/tags/red-hat"},{"label":"fedora","permalink":"/blog/tags/fedora"},{"label":"devconf","permalink":"/blog/tags/devconf"},{"label":"conferences","permalink":"/blog/tags/conferences"}],"readingTime":5.36,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. exhausted DevConf attendee","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"DevConf.cz 2024","description":"Sharing my experience on DevConf.cz 2024.\\n","date":"2024-06-19T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. exhausted DevConf attendee"}],"tags":["\ud83c\udfed","red-hat","fedora","devconf","conferences"]},"unlisted":false,"nextItem":{"title":"LTS distributions","permalink":"/blog/2024/02/07/lts-distros"}},"content":"I\'d like to share my experience and views on some of the talks that I\'ve\\nattended on the DevConf.cz 2024.\\n\\n\x3c!--truncate--\x3e\\n\\n## Day 1\\n\\nLet\'s start with the first day which was Thursday this year as opposed to the\\nprevious years when the conference started on Friday and finished on Sunday.\\n\\nLet\'s start with the _[keynote]_. The keynote wasn\'t very interesting, at some of\\nthe slides actually felt like advertisement for other talks on the topic of the\\nAI\u2026\\n\\nNext talk about _[event-driven Ansible]_ was way more interesting. It allows you\\nto run Ansible playbooks after provisioning hosts, or on certain events, such as\\ndiscovered vulnerabilities. On one hand it feels like a very nice thing, but on\\nthe other one I can\'t help but to think how you need to write the playbooks, so\\nthat they are generic enough. One more example that\'s been given comes from the\\npossibility to react to tickets, e.g., outages and this feels like something\\nthat could be abused to cause DoS.\\n\\nAfterwards we\'ve seen two lightning talks, one about\\n_[choosing the right OpenShift size]_ which was a pretty quick, but listed all\\nof the possible ways you can deploy OpenShift in detail. This lightning talk\\nwas followed by the first AI (lightning) talk I\'ve attended about\\n_[rapid prototyping]_ of the open-source AI models.\\n\\nAs someone who\'s involved in the automation of the RPM packaging and testing, of\\ncourse, we had to attend _[Learning from Nix]_. Nix has a very intriguing\\nconcept which is pretty powerful, but painful at the same time. This can be\\nsummed up pretty nicely by [Tsoding] who got asked about some tips & tricks for\\nsomeone who wants to try out NixOS:\\n\\n> Just don\'t.\\n\\nAnd now we\'re moving into a section where everything revolves about the Packit\\nTeam :)\\n\\nFirst talk about _[changelogs]_ was an interactive session that was (probably)\\nmeant to share different approaches we take to handle this rather convoluted\\ntopic that involves changelogs on both upstream and also on downstream with no\\nrules[^1].\\n\\n![changelogs](https://i.imgur.com/YHstMAt.jpg)\\n\\nNext one was about _[static analysis]_ done by [OpenScanHub]. I like the idea of\\nrunning the static analysis that can uncover nasty bugs (as it has been even\\nshowed in the talk) at the same time as they are introduced. I gotta admit that\\nafter seeing the UI of the [deployed OpenScanHub] on the Fedora Infra, I couldn\'t\\nhelp but to think about the [United States Graphics Company] :smile: The UI is\\nto the point, no fancy annoying shit, you get what you need, it\'s hard to get\\nlost. **Just simplicity.** Best kind of UI/UX in my opinion.\\n\\nAfter the OpenScanHub talk we\'re getting to talks that were taken in a totally\\ndifferent direction from the usual talks you\'re used to :wink: First one was\\ngiven title of _[\u201cIndiana Jones and obsoleted projects\u201d]_ by [Mirek]. He talked\\nabout projects that got obsoleted, but started with projects that had no\\nrelation to IT field at all. I\'d mark this talk as a _stand up_ without any\\nhesitation.\\n\\nAnd finally we will wrap up the first day with the talk where speakers spoke the\\nleast\u2026 _[\u201cLet the users speak!\u201d]_ that involved users of both Packit and\\nTesting Farm who spoke about their use case and benefits they gained from using\\nboth services in a symbiosis.\\n\\n## Day 2\\n\\nOn the second day I\'ve attended less talks to not burn myself out :) I\'ve\\nstarted with an AI-related talk with title _[\u201cAI: Open source will save us!\u201d]_,\\neven though this talk has been improvised, as the speakers from the schedule\\ncouldn\'t have attended, it provided a nice overview what [InstructLab] can do\\nand how can you \u201cfeed\u201d the relevant info into the language models by yourself.\\n\\nAfter that I attended a _\u201ccoffee enthusiasts Meetup\u201d_ which was very nice and,\\nof course, an organized chaos :wink:\\n\\nBefore attending the social event I wrapped up the second day with a lightning\\ntalk about _[recent updates in Toolbx]_. I\'ve used both [toolbx] and\\n[distrobox], so it\'s nice to see the improvements in progress and also that both\\nprojects are well and lively.\\n\\n## Day 3\\n\\nOn the third day I\'ve attended only in the afternoon. \u201cStarted\u201d my day with\\na discussion _[\u201cLeadership: Where people skills meet programmers\u201d]_ which was\\nvery nice for gaining an insight into how developer, manager and QE lead roles\\noverlap.\\n\\nThat talk has been followed up by a talk about [role rotation] in our Packit\\nTeam. I would say it is a nice \u201cupgrade\u201d to the agile process which allows you\\nto not create a single point of failure in the mundane and repetitive processes\\nwithin your team.\\n\\nAnd this day has been finished off with a talk about [shifting left] in Podman.\\nIt\'s nice to see how other teams utilize our Packit Service and also the\\nservices we rely on, such as [Copr] or [Testing Farm]. With the help of Cockpit\\ntests they can catch breaking changes early on, or even bugs that have been\\nintroduced and break usage of the dependent projects.\\n\\n![shifting left](https://i.imgur.com/bp6FxT9.jpg)\\n\\n## Picks from the Packit Team\\n\\nOn the Tuesday, during our Packit stand up, I have managed to abuse my\\nKanban Lead role to collect some of the talks that each of us would recommend:\\n\\n- [Rapid Prototyping] with Open Source AI Models\\n- Do you like your [changelogs]?\\n- OpenScanHub - [Static Analysis] of a Linux Distribution\\n- Creating a [Language Server] for RPM Spec Files\\n- Containers and Kubernetes Made Easy: A 15-minute dive into [Podman Desktop]\\n- [\u201cLeadership: Where people skills meet programmers\u201d]\\n\\n## Wrap up\\n\\nI have to admit that these 3 days have been pretty exhaustive, including\\ninformation overload :smile: but at the same time it was really nice to meet\\nwith the colleagues and at least some of our users who are not based in Brno.\\n\\n[^1]: except for the Fedora\'s downstream ;)\\n\\n[keynote]: https://pretalx.com/devconf-cz-2024/talk/AD3HWR/\\n[event-driven ansible]: https://pretalx.com/devconf-cz-2024/talk/3UKGLB/\\n[choosing the right openshift size]: https://pretalx.com/devconf-cz-2024/talk/KSDRWL/\\n[rapid prototyping]: https://pretalx.com/devconf-cz-2024/talk/H9QFLM/\\n[learning from nix]: https://pretalx.com/devconf-cz-2024/talk/NNKT3F/\\n[tsoding]: https://twitch.tv/tsoding\\n[changelogs]: https://pretalx.com/devconf-cz-2024/talk/ECU7QS/\\n[static analysis]: https://pretalx.com/devconf-cz-2024/talk/7C38GJ/\\n[openscanhub]: https://openscanhub.dev/\\n[deployed openscanhub]: https://openscanhub.fedoraproject.org/\\n[united states graphics company]: https://x.com/usgraphics\\n[\u201cindiana jones and obsoleted projects\u201d]: https://pretalx.com/devconf-cz-2024/talk/X8SYDG/\\n[mirek]: https://rodina-sucha.cz/@mirek\\n[\u201clet the users speak!\u201d]: https://pretalx.com/devconf-cz-2024/talk/BDMWF3/\\n[\u201cai: open source will save us!\u201d]: https://pretalx.com/devconf-cz-2024/talk/QSF9QQ/\\n[instructlab]: https://github.com/instructlab/instructlab\\n[recent updates in toolbx]: https://pretalx.com/devconf-cz-2024/talk/SXWE7K/\\n[toolbx]: https://containertoolbx.org/\\n[distrobox]: https://distrobox.it/\\n[\u201cleadership: where people skills meet programmers\u201d]: https://pretalx.com/devconf-cz-2024/talk/8PARM8/\\n[role rotation]: https://pretalx.com/devconf-cz-2024/talk/8T88MT/\\n[shifting left]: https://pretalx.com/devconf-cz-2024/talk/WVNJZS/\\n[copr]: https://copr.fedorainfracloud.org/\\n[testing farm]: https://docs.testing-farm.io/Testing%20Farm/0.1/index.html\\n[language server]: https://pretalx.com/devconf-cz-2024/talk/RXKMKA/\\n[podman desktop]: https://pretalx.com/devconf-cz-2024/talk/HKWP7V/"},{"id":"/2024/02/07/lts-distros","metadata":{"permalink":"/blog/2024/02/07/lts-distros","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2024-02-07-lts-distros.md","source":"@site/blog/2024-02-07-lts-distros.md","title":"LTS distributions","description":"Shower thoughts on the LTS Linux distributions.\\n","date":"2024-02-07T00:00:00.000Z","formattedDate":"February 7, 2024","tags":[{"label":"lts","permalink":"/blog/tags/lts"},{"label":"linux distributions","permalink":"/blog/tags/linux-distributions"},{"label":"support","permalink":"/blog/tags/support"},{"label":"paywall","permalink":"/blog/tags/paywall"}],"readingTime":14.515,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. small Fedora maintainer","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"LTS distributions","description":"Shower thoughts on the LTS Linux distributions.\\n","date":"2024-02-07T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. small Fedora maintainer"}],"tags":["lts","linux distributions","support","paywall"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"DevConf.cz 2024","permalink":"/blog/2024/06/19/devconf-2024"},"nextItem":{"title":"Mixed feelings on Rust","permalink":"/blog/2024/01/28/rust-opinion"}},"content":"Linux distributions are a common choice for running the servers. There\'s a wide\\nvariety of distributions, but on the servers majority is made by only a few.\\n\\nSome corporations also profit from the support of the \u201cbig\u201d distributions. Let\'s\\ndive into the pros, cons and peculiarities of such _business_.\\n\\nThis post is inspired/triggered by the following Mastodon post:\\n[![Mastodon post about Ubuntu Pro](https://i.imgur.com/mh5RAlV.png)](https://hackers.town/@antijingoist/111864760073049505)\\n\\n\x3c!--truncate--\x3e\\n\\n:::caution Disclaimer\\n\\nYou may take my opinion with a grain of salt, since I\'m affiliated with Red Hat,\\nbut at the same time I\'ve also seen the other side of the fence, so I know how\\nit works from the perspective of the provider/maintainer.\\n\\n:::\\n\\n:::tip\\n\\nIf you are not very oriented in the matters of Linux distributions and\\nmaintaining of packages, I suggest looking at the [glossary](#glossary) at the\\nend to have a better grasp of the terms that are used throughout the post.\\n\\n:::\\n\\n## Point of linux distributions\\n\\nFirst thing I\'d like to point out is the point of the Linux distributions. What\\nbenefit do they provide? And why there are so many of them\u2026\\n\\nAs it has been brought up many times by the _rms_[^1], Linux by itself is not\\nenough, it\'s just the kernel that does the underlying work. We need more\\nsoftware to utilize the hardware. That\'s the gap that Linux distributions bridge\\nby providing the Linux and much more other software that we need.\\n\\nEach distribution is unique in its own way. Some prefer different ways of\\nhandling the software (like Gentoo that allows you to compile it yourself) and\\nothers stable releases of software (like Debian).\\n\\nIn the end it mostly boils down to the packaging. I, as a user, want to do\\nsomething like\\n\\n```\\n$ sudo dnf5 install firefox\\n```\\n\\nand not bother about anything else. I don\'t want to open browser to look the\\nthing up, download it and then click mindlessly 500\xd7 \u201cNext\u201d. I just want to run\\none command and when the maintainers decide it\'s time to move on, another one to\\nupgrade the software to the newer version.\\n\\nOf course, for some use cases you want to minimize the latter. And even make\\nsure that it\'s safe to do it when you need to. You don\'t want to break your\\nproduction deployment just because someone decided it\'s time to push something\\nout.\\n\\nThat\'s when the _maintainers_ come in. They take upon themselves the\\nresponsibility of maintaining the packages. If you\'ve ever used the Debian, you\\nknow very well how _old_ the software is, but that\'s what you might need for\\nyour servers.\\n\\n## Pain of packaging\\n\\nPackaging software _is not_ cost-free. You may as well have 80 % of packages\\nthat don\'t need much care and it\'s rather easy to push them forward, but those\\nremaining, which are complicated and raise issues regularly, will make it up and\\ntake a lot of time and also pain.\\n\\nLibraries are the most common example that might not need much work to be done.\\nOn the other hand, Linux kernel itself is a rather complicated machinery that\\nis patched **a lot** and its build process is not simple either.\\n\\nEven if you consider just those _easily-maintainble_ packages, the process can\\nbe tedious, boring and overall time consuming.\\n\\n:::tip Shameless RHEL-based ecosystem plug\\n\\n[Packit] can help tremendously with the _easily-maintainable_ packages, since it\\n**can** be automated.\\n\\n:::\\n\\n### Packaging whole ecosystems\\n\\nNow it\'s time to talk about whole ecosystems that have some kind of a packaging\\nby themselves. Yes, I mean Python (with its continuous stream of different\\npackage managers), Rust, Go, etc.\\n\\nWhole point of packaging is to have some form of _gating_. In other words, you\\nwant some kind of _quality control_ when pushing changes into the Linux distros.\\n\\nIf you want to package some tool (or even library) from the aforementioned\\necosystems, you need to package all of the dependencies to make sure something\\ndoesn\'t get updated in the meantime (and also that you can safely reproduce the\\nbuilds, if need be).\\n\\nI\'ve tried to package some utilities for EPEL both in Rust and Go. Dependencies\\nform a DAG[^2] and in case of Rust, it\'s _very_ similar to the way `npm` does\\nits packaging.\\n\\n:::danger Spoiler alert\\n\\nYou get a lot of dependencies. And since it\'s a tree of dependencies, there may\\nbe **a lot** of them.\\n\\n:::\\n\\nI have no clue how do the Rust maintainers operate, but I\'m tipping my fedora in\\ntheir direction, since it must be a _pain in the ass_.\\n\\n## Paid distributions\\n\\nYou can find few Linux distributions that are \u201cpaid\u201d. I\'m very well aware of the\\nfact I\'ve used quotes around the word, cause it\'s not that easy and not even\\nsame for all of the distributions that involve some kind of a payment.\\n\\nOne of the first non-free distributions I\'ve come into contact was _[Zorin OS]_\\nwhich basically tries to be the best _transition_ solution when moving away from\\nthe Windows or macOS. If you have a look at the _perks_ of its _Pro_ version\\nthat\'s paid, you may as well decide they are rather questionable\u2026\\n\\nIt\'s time to move into the _Ubuntu Pro_, _RHEL_ and _SLE_ territory. What\'s the\\npoint of those? They definitely offer different kind of, let\'s say,\\n_non-free experience_.\\n\\nWith those you are paying mainly for the support and bug/security patches.\\n\\n:::tip Fun fact\\n\\nThere\'s no mention of any kind of support on the Zorin page\u2026 Apart from the fact\\nthat _you are supporting_ the Zorin development.\\n\\n:::\\n\\n## Repository structure\\n\\nAs I have mentioned above, the three _services_[^3] I mentioned are providing\\nsupport with regards to bugs and security vulnerabilites. Therefore it makes\\nsense to have some kind of a process in place when you\'re pushing changes\\n(either updates, patches or _security_ patches) to the distribution. And yes,\\nthese processes are _in place_.\\n\\nIf you think about the amount of packages that is present in the community\\ndistributions like _archLinux_ (14,830 packages) or _Fedora_ (74,309 packages),\\nit is safe to come to a conclusion that _there\'s no way_ to support all of them.\\n\\n:::tip archLinux\\n\\nIt may seem that archLinux contains rather small set of packages, but one of the\\n_killer features_ of archLinux lies in the AUR (archLinux User Repository) where\\nyou can find additional **93,283** packages.\\n\\n:::\\n\\nThat\'s why the Linux distributions have some structure to their repositories\\nthat contain packages. The way you go around this is rather simple, you choose\\nsome set of _critical_ packages that you guarantee support for (like Linux\\nkernel, openSSL, etc.) and maintain those with all the QA processes in place.\\n\\n:::caution Unpopular opinion\\n\\nThis is also one of the reasons why I\'m quite against packaging anything and\\neverything into the Linux distribution. In my opinion it is impossible to\\n**properly** maintain **huge** set of packages and enforce some kind of\\n**quality control**.\\n\\n:::\\n\\n### Ubuntu\\n\\nUbuntu has pretty granular structure of their repositories, namely:\\n\\n- `main` containing the \u201ccore\u201d of the Ubuntu that is maintained by the Canonical,\\n- `universe` containing literally the \u201cuniverse\u201d, packages that everyone likes,\\n but they\'re not crucial, this repo is maintained mostly by the community,\\n- `multiverse` containing packages with some license or copyright issues, and\\n- `restricted` containing _proprietary_ packages like nvidia drivers and such.\\n\\nBy briefly checking my Ubuntu 23.10 installation, here are stats of packages in\\ntheir respective repositories:\\n\\n- `main` with 6,128 packages,\\n- `universe` with 63,380 packages,\\n- `multiverse` with 997 packages, and finally\\n- `restricted` with 784 packages.\\n\\nAs you can see, if we sum them up, they are relatively similar to the Fedora\\nnumbers.\\n\\n### CentOS\\n\\nCentOS on the other hand has a bit simpler structure with BaseOS for the base\\nand AppStream for additional packages:\\n\\n- `baseos` with 1,058 packages,\\n- `appstream` with 5,646 packages, and\\n- `extras-common` with 42 packages.\\n\\nOverall they make up the similar number as the Ubuntu\'s `main` repository. And\\nyou can also notice that there are no additional repositories.\\n\\n:::tip\\n\\nThere\'s also a CRB (CodeReady Builder) repository with dev packages like headers\\nand such.\\n\\nAnd you can also enable EPEL (Extra Packages for Enterprise Linux) which is\\ncommunity-supported and provides another 19,903 packages.\\n\\n:::\\n\\n## Ubuntu Pro\\n\\nNow it\'s time to get back to the Ubuntu Pro. There are multiple points that need\\nto be taken in account to be either positive or negative about it\u2026\\n\\nWe can start with the way Ubuntu is released and maintained. Ubuntu has regular\\n6-month release cycle and biannual LTS release. Releases are normally supported\\nfor 9 months with the exception of the LTS releases being supported for 5 years.\\n\\nIf you check out the _[Ubuntu Pro]_ website, you can find the following\\nstatement:\\n\\n> **Ubuntu Pro**\\n>\\n> The most comprehensive subscription for open-source software security\\n>\\n> 30-day trial for enterprises. Always free for personal use.\\n\\n:::tip Personal use\\n\\nUbuntu Pro for _personal use_ consists of 5 installations and in case of the\\ncommunity _ambassadors_ 50.\\n\\n:::\\n\\nOverall if you try to find what is included in the Ubuntu Pro:\\n\\n- high and critical patches,\\n- 10 years of maintenance, and\\n- (optional) 24/7 enterprise-grade support.\\n\\nIf we get back to the screenshot all the way at the beginning of the post:\\n[![Mastodon post about Ubuntu Pro](https://i.imgur.com/mh5RAlV.png)](https://hackers.town/@antijingoist/111864760073049505)\\n\\nand try to look up to which repository the packages mentioned in the screenshot\\nbelong, we will find out that they belong to `universe` repository which is\\nmaintained by the community. Not to mention nature of the packages: multimedia.\\n\\nYou may think about this as a scam, but considering repository consisting of 70k\\npackages, it is not an easy task to do. And with LTS releases we\'re talking\\nabout 5+ years of support.\\n\\n:::info Fedora\\n\\nTry to compare this state to Fedora. It also has a 6-month release cycle, but\\nthere are no LTS releases and each release is supported only for a year.\\n\\n:::\\n\\nCommon strategy, at this point, is to pull out the _open-source_. Yes, we are\\nstill dealing with the open-source, but keep in mind that you\'re trying to patch\\nsome issue in a version that\'s 5 years old, upstream definitely doesn\'t care\\nanymore[^4], the development didn\'t stop 5 years ago, it\'s going on and fixing\\nthis issue in a release from 5 years is not the same as fixing it in the current\\nrelease. At this point, if you are paying for such support, you are actually\\npaying for someone to do _software archaeology_ which **can be** _non-trivial_\\nto do.\\n\\nIn the case of Ubuntu Pro we\'re talking about community support and best-effort\\nsupport by Canonical for the paying customers. And that makes sense to me,\\nrunning LTS distro for 5+ years on a desktop seems like an odd choice, even\\nwith the help of _[podman]_ and _[distrobox]_ or _[toolbx]_ that allow us to use\\nstable or LTS distro as a base and containerized development environments on top\\nof that.\\n\\n## RHEL ecosystem\\n\\nRHEL ecosystem is much more complicated in this matter. However it\'s very\\nsimilar to the way SUSE operates with few exceptions.\\n\\nYou can see a flow diagram here:\\n\\n```mermaid\\nflowchart LR;\\n U[upstream] --\x3e FR[Fedora Rawhide];\\n FR --\x3e F[Fedora release];\\n F --\x3e C[CentOS Stream];\\n C --\x3e R[RHEL];\\n```\\n\\nKey things to take and not to take from the flow diagram:\\n\\n- getting from one upstream to its respective downstream is not as simple as the\\n presence of an arrow and it\'s not the same process for all of them\\n- lengths of the arrows are not proportional, specifically:\\n - Fedora Rawhide is _supposed to_ consume updates as soon as possible,\\n - depending on the decision of the maintainer they can, but _don\'t have to_ be\\n included in the currently supported Fedora releases (you can take [Emacs] as\\n an example of such package), but Rawhide eventually becomes the next Fedora\\n release,\\n - CentOS Stream gets branched off a specific Fedora release, and then\\n - ultimately CentOS Stream becomes the next **minor** release of RHEL.\\n- this diagram is simplified by **a lot**\\n\\n:::tip SUSE flow for comparison\\n\\nI\'ll also include a SUSE flow, so you can compare:\\n\\n```mermaid\\nflowchart LR;\\n U[upstream] --\x3e T[openSUSE Tumbleweed];\\n T --\x3e L[openSUSE Leap];\\n L --\x3e S[SUSE Linux Enterprise];\\n S --\x3e L;\\n```\\n\\nYou can notice, as opposed to the RHEL ecosystem, some changes are being\\nbackported to the openSUSE Leap.\\n\\nHowever this is subject to change as there is a new [ALP] project arising which\\nis, more than likely, going to replace the Leap.\\n\\n:::\\n\\n### Change in the model\\n\\nThe flow I\'ve shown above is in effect since late \u201820 and early \u201821. I hope you\\ncan see that it is quite similar to the way SUSE operates too. Before late \u201820\\nthe flow was following:\\n\\n```mermaid\\nflowchart LR;\\n U[upstream] --\x3e FR[Fedora Rawhide];\\n FR --\x3e F[Fedora release];\\n F --\x3e R[RHEL];\\n R --- C[CentOS];\\n```\\n\\nCentOS was the last distribution in that \u201cchain\u201d. This provides some benefits\\nand some negatives.\\n\\n#### Before the change\\n\\nFrom the point of a developer, unless you have some kind of an early access to\\nRHEL, you don\'t see the changes until they land and are already released. This\\nimpairs your ability to test and verify your software before shipping it to your\\nclients that use RHEL.\\n\\nFrom the point of a user, there is one positive, you basically get \u201cfree RHEL\u201d\\nwithout the support. This also allowed you to report bugs against the RHEL,\\nsince they were 1:1 distros (minus the branding and support). So you\'d\\ntechnically get RHEL free of charge.\\n\\nBenefit of such project, except for the cost, is questionable. The main issue,\\nwhich actually became even more apparent after changing the flow, is someone\\nelse repackaging your own product and selling it again.\\n\\n#### After the change\\n\\nFirst of all, the current flow counters the issue mentioned above. You can test\\nyour projects against the _next minor RHEL release_. CentOS Stream is free, so\\nyou can freely incorporate it into your CI pipelines.\\n\\n:::tip Shameless plug pt. 2\\n\\nAgain, [Packit] can help you on upstream to verify that you\'re not breaking your\\nRPM builds and on top of that you can also use [Testing Farm] to run tests on a\\nspecific Fedora or CentOS Stream releases.\\n\\n> Green tests may not be green everywhere and catching such issues as soon as\\n> possible costs much less than catching them further down the chain.\\n\\n:::\\n\\nThere are many people thinking that RHEL has become closed-source. It is not.\\nThe development happens _out in the open_, it\'s more open that it was before.\\nHowever with the cost of not getting the exact same thing for free. You can get\\nthe next minor RHEL, not the same that\'s normally paid for. [Packit] is an\\nexample of a service that is deployed on the CentOS 9 Stream and even used to be\\ndeployed on Fedora, but the regular 6-month release cycle caused some minor\\nissues here and there.\\n\\n_Production-ready_ is something that heavily depends on the context\u2026\\n\\n:::tip Free \u201cclones\u201d\\n\\nAfter this change so-called _free \u201cclones\u201d_ emerged. I have to admit that in\\ncase of _[AlmaLinux]_ I can see some benefits e.g., pushing for live images and\\nsupport of various desktop environments, Raspberry Pi support or even WSL images\\nbeing present in the M$ Store and easy to install.\\n\\n:::\\n\\n## Open-source and paid support\\n\\nOverall I don\'t think that paying for the support of 5 years old _non-critical_\\npackages is going against the open-source. It is a non-trivial work that, in\\nmajority of cases, cannot be included in the upstream, therefore the benefit is\\nreapt only by the paying customers. I have to admit that in the case of the\\nUbuntu Pro it may seem a bit weird (hiding patches behind the paywall). However\\nwe\'re still talking about rather big set of packages that will affect a minority\\nof server workloads, if any.\\n\\n## Glossary\\n\\n- _rolling release_ - continuously released without \u201csignificant milestones\u201d\\n\\n :::tip\\n\\n As an example of rolling distribution you can take archLinux, openSUSE\\n Tumbleweed, Fedora Rawhide, or even CentOS 9 Stream.\\n\\n As en example of **not** rolling distribution you can take Ubuntu, openSUSE\\n Leap or Fedora.\\n\\n :::\\n\\n- _bleeding edge_ - contains the latest versions as they are released on the\\n upstream\\n\\n :::tip\\n\\n As an example you can take archLinux, openSUSE Tumbleweed or Fedora Rawhide.\\n You can also notice how common it is to combine _rolling release_ with\\n _bleeding edge_.\\n\\n :::\\n\\n- _upstream_ & _downstream_\\n\\n You\'re most likely to meet these terms in the meaning of upstream being the\\n project itself and downstream being the packaging of said project in some\\n distribution.\\n\\n However this can also apply to distributions like _openSUSE Tumbleweed_ with\\n _openSUSE Leap_, _Fedora_ with _CentOS Stream_, or even _CentOS Stream_ with\\n _RHEL_. This basically means that the packages/software is being released into\\n the upstream (Tumbleweed, Fedora, or even CentOS) and then after being tested\\n is taken further down into their respective downstreams (Leap, CentOS, RHEL).\\n\\n[almalinux]: https://almalinux.org/\\n[alp]: https://susealp.io/\\n[distrobox]: https://distrobox.it/\\n[emacs]: https://src.fedoraproject.org/rpms/emacs/\\n[packit]: https://packit.dev/\\n[podman]: https://podman.io/\\n[testing farm]: https://docs.testing-farm.io/Testing%20Farm/0.1/index.html\\n[toolbx]: https://containertoolbx.org/\\n[ubuntu pro]: https://ubuntu.com/pro/\\n[zorin os]: https://zorin.com/os/pro/\\n\\n[^1]: Richard Stallman\\n[^2]: directed acyclic graph\\n[^3]:\\n Ubuntu Pro is technically a service whereas the RHEL and SLE are distros\\n with the support included.\\n\\n[^4]:\\n There are upstream projects that keep LTS branches, such as Linux kernel,\\n but even in the case of the kernel itself, they\'re planning on ending it,\\n since the cost outweighs the benefits at this point."},{"id":"/2024/01/28/rust-opinion","metadata":{"permalink":"/blog/2024/01/28/rust-opinion","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2024-01-28-rust-opinion.md","source":"@site/blog/2024-01-28-rust-opinion.md","title":"Mixed feelings on Rust","description":"Discussing my mixed feelings about the Rust language.\\n","date":"2024-01-28T00:00:00.000Z","formattedDate":"January 28, 2024","tags":[{"label":"rust","permalink":"/blog/tags/rust"},{"label":"memory safety","permalink":"/blog/tags/memory-safety"},{"label":"cult","permalink":"/blog/tags/cult"},{"label":"hype","permalink":"/blog/tags/hype"}],"readingTime":15.395,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. passionate language hater","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Mixed feelings on Rust","description":"Discussing my mixed feelings about the Rust language.\\n","date":"2024-01-28T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. passionate language hater"}],"tags":["rust","memory safety","cult","hype"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"LTS distributions","permalink":"/blog/2024/02/07/lts-distros"},"nextItem":{"title":"How can Copr help with broken dependencies","permalink":"/blog/2023/08/02/copr"}},"content":"Rust has become a rather popular language these days. I\'ve managed to get my\\nhands dirty with it during _[Advent of Code]_ \u201822 and partially \u201823. I\'ve also\\nused it for few rounds of _[Codeforces]_ and I have to try very hard to maintain\\nsome variety of languages for LeetCode challenges along with the Rust. I\'ll\\ndisclaim up front that I won\'t be only positive, since this post is a result of\\nmultiple discussions about Rust and I stand by\\n_\u201cAll that glitters is not gold\u201d_, so if you can\'t stand your favorite language\\nbeing criticized in any way, don\'t even proceed. :wink:\\n\\n\x3c!--truncate--\x3e\\n\\n## Memory safety\\n\\nI\'ll start by kicking the biggest benefit of the language, the memory safety.\\nLet\'s be honest here, majority of the checks rely on the static analysis, cause\\nyou can\'t do anything else during the compile-time, right? Therefore we can\\nbasically say that we are relying on the compiler to \u201csolve\u201d all of our issues.\\n\\n:::warning\\n\\nI\'m not doubting the fact that compiler can prevent **a lot** of the memory\\nerrors, I\'m just saying it\'s not realistic to cover **everything**.\\n\\n:::\\n\\n### Compiler\\n\\nI guess we can safely[^2] agree on the fact that we 100% rely on the compiler to\\n_have our back_. Is the compiler bug-free? I doubt it. This is not meant in an\\noffensive way to the Rust compiler developers, but we need to be realistic here.\\nIt\'s a compiler, even older and larger projects like _gcc_ or _llvm_ can\'t avoid\\nbugs to appear.\\n\\nWhen I was trying out Rust for some of the LeetCode challenges I\'ve stumbled\\nupon the following warning:\\n![Example of a compiler bug](https://i.imgur.com/NfPLF6o.png)\\n\\n:::danger [Issue](https://github.com/rust-lang/rust/issues/59159)\\n\\nThe issue here comes from the fact that we have 2 simultaneous references to the\\nsame memory (one is mutable and one immutable). If you cannot think of any way\\nthis can break, I\'ll give you a rather simple example from C++ where this could\\ncause an issue.\\n\\nImagine a function that has some complex object and also calls a coroutine which\\nutilizes read-only reference to that object. When the coroutine suspends, the\\ncaller can modify the object. This can break the integrity of data read by the\\ncoroutine.\\n\\n- Yes, this **can** cause a memory error.\\n- Yes, this **hasn\'t** been handled until someone noticed it.\\n\\nFixing this bug is not backwards compatible, cause you\'re covering a case that\\nhasn\'t been covered before.\\n\\n:::\\n\\n### Enforcing the safety\\n\\nOne of the ways Rust enforces the safety is by restricting what you can do, like\\nthe example above. Aforementioned issue _can_ happen, but **doesn\'t have to**.\\nRule of the thumb in the Rust compiler is to _\u201cblock\u201d_ anything that can be an\\nissue, static analysis can\'t do much more, it cannot decide whether it\'s safe to\\ndo it or not.\\n\\nSatisfying the Rust compiler is sometimes a brutal pain in the ass, because you\\ncannot do things like you\'re used to, you need to work around them _somehow_.\\n\\n:::tip\\n\\nKey difference between Rust and C or C++ lies in the fact that Rust chooses to\\n_ban_ all \u201cpotentially offensive\u201d actions, C and C++ _relies_ on **you** to be\\nsure it\'s safe to do.\\n\\n![C++ v. Rust](https://i.imgur.com/0vbkYPp.png)\\n\\n:::\\n\\n### Consequences\\n\\nWhere are we heading with this approach of \u201cif it compiles, it runs\u201d though?\\nIn this aspect I have a rather similar opinion as with regards to the ChatGPT\\nand its derivatives.\\n\\nIf you teach people to 100% depend on the compiler, they will do it, cause it\'s\\n_easy_. All you need to do is make the compiler _shut up_[^3]. Giving up the\\n_intellectual masturbation_ about the memory safety will make you lose your edge\\nover the time. When we get to the point of everyone being in the mindset\\nmentioned above, who\'s going to maintain the compiler? This is the place where\\nyou **need to** think about the memory safety and furthermore in a much more\\ngeneral way than in your own projects, because it is the thing that everyone\\n_blindly believes in_ in the end.\\n\\nI\'m not saying that everyone should give up Rust and think about their memory\\nmanagement and potential memory issues. I\'m just saying that going the easy way\\nwill make people _dull_ and they should think about it anyways, that\'s how the\\nissue above has been discovered. If everyone walked past and didn\'t think about\\nit, no one would discover this issue till it bit them hard.\\n\\n:::tip Standard library\\n\\nEven the standard library is littered with `unsafe` blocks that are prefixed\\nwith comments in style:\\n\\n```rs\\n// SAFETY: \u2026\\n```\\n\\nThe fact that the _casual_ Rust dev doesn\'t have to think much about safety,\\ncause the compiler has their back, doesn\'t mean that the Rust compiler dev\\ndoesn\'t either.\\n\\nI gotta admit that I adopted this concept in other languages (even in Python),\\ncause you can encounter situations where it doesn\'t have to be clear _why_ you\\ncan do _what_ you\'re doing.\\n\\n:::\\n\\n## Development & design\\n\\nDevelopment of Rust is\u2026 very fast. One positive is that they\'re trying to be as\\nbackward compatible as possible at least by verifying against all the published\\ncrates in the process. Of course, you cannot be backward compatible about fixing\\nthe bugs that have been found, but such is life.\\n\\n### Fast development cycle\\n\\nOne of the negatives of the fast development cycle is the fact that they\'re\\nusing the latest features already in the next release of the Rust. Yes, it is\\nsomething that you can use for verifying and testing your own changes, but at\\nthe same time it places a requirement of the latest release to compile the next\\none.\\n\\n:::tip\\n\\nIf you check `gcc` for example, they have a requirement of minimal version of\\ncompiler that you need for the build. Though gcc\'s requirement is not so _needy_\\nas the Rust one.\\n\\n:::\\n\\nOne of the other negatives is the introduction of bugs. If you\'re pushing\\nchanges, somewhat mindlessly, at such a fast pace, it is inevitable to introduce\\na bunch bugs in the process. Checking the GitHub issue tracker with\\n\\n```\\nis:issue is:open label:C-bug label:T-compiler\\n```\\n\\nyields **2,224** open issues at the time of writing this post.\\n\\n### RFCs\\n\\nYou can find **a lot** of RFCs for the Rust. Some of them are more questionable\\nthan the others. Fun thing is that a lot of them make it to the nightly builds,\\nso they can be tested and polished off. Even the questionable ones\u2026 I\'ll leave\\nfew examples for a better understanding.\\n\\nOne of such features is the `do yeet` expression:\\n\\n```rust\\n#![feature(yeet_expr)]\\n\\nfn foo() -> Result {\\n do yeet 4;\\n}\\nassert_eq!(foo(), Err(4));\\n\\nfn bar() -> Option {\\n do yeet;\\n}\\nassert_eq!(bar(), None);\\n```\\n\\nIt allows you to \u201cyeet\u201d the errors out of the functions that return `Result` or\\n`Option`.\\n\\n[One](https://github.com/rust-lang/rfcs/pull/3503) of the more recent ones is\\nthe ability to include Cargo manifests into the sources, so you can do something\\nlike:\\n\\n```rust\\n#!/usr/bin/env cargo\\n---\\n[dependencies]\\nclap = { version = \\"4.2\\", features = [\\"derive\\"] }\\n---\\n\\nuse clap::Parser;\\n\\n#[derive(Parser, Debug)]\\n#[clap(version)]\\nstruct Args {\\n #[clap(short, long, help = \\"Path to config\\")]\\n config: Option,\\n}\\n\\nfn main() {\\n let args = Args::parse();\\n println!(\\"{:?}\\", args);\\n}\\n```\\n\\nI would say you can get almost anything into the language\u2026\\n\\n## Community and hype train\\n\\nRust community is a rather unique thing. A lot of people will hate me for this,\\nbut I can\'t help, but to compare them to _militant vegans_. I\'ll go through some\\nof the things related to it, so I can support my opinion at least.\\n\\n_Rust is the best language._ It is not. There is no best language, each has its\\nown positives and negatives, you need to choose the language that\'s **the most**\\n**suitable for your use case**. There are areas where Rust excels, though I have\\nto admit it\'s very close to being a universal hammer regardless of how suitable\\nit is. There is a very steep learning curve to it, beginnings in Rust are very\\npainful.\\n\\n_Rewrite everything in Rust._ Just no. There are multiple feedbacks on doing\\nrewrites, it is very common to fix _N_ bugs with a rewrite while introducing\\n_N + 1_ other bugs in the process. It doesn\'t solve anything unless there are\\nsome strong reasons to go with it. Majority of such suggested rewrites don\'t\\nhave those reasons though.\\n\\n_Language \u2039x\u203a is bad, though in Rust\u2026_ Cherry-picking one specific pain point of\\none language and reflecting how it is better in other language can go both ways.\\nFor example it is rather easy to pick the limitations imposed by Rust compiler\\nand show how it\'s possible in other languages :man_shrugging:\\n\\nI don\'t mind any of those opinions, you\'re free to have them, as long as you\\ndon\'t rub them in my face which is not the usual case\u2026 This experience makes it\\njust worse for me, part of this post may be also influenced by this fact.\\n\\n### Rust in Linux\\n\\n:::caution\\n\\nAs someone who has seen the way Linux kernel is built in the RHEL ecosystem, how\\ncomplex the whole thing is and how much resources you need to proceed, I have\\nvery strong opinions on this topic.\\n\\n:::\\n\\nIt took years of work to even \u201cincorporate\u201d Rust into the Linux codebase, just\\nto get the \u201cHello World!\u201d. I don\'t have anything against the idea of writing\\ndrivers in the Rust, I bet it can catch a lot of common mistakes, but still\\nintroducing Rust to the kernel is another step to enlarge the monster.\\n\\nI have to admit though that the _Apple GPU_ driver for Linux written in Rust is\\nquite impressive. Apart from that there are not so many benefits, yet\u2026\\n\\n## Packaging\\n\\nI\'ll divide the packaging into the packaging of the language itself and the\\nprograms written in Rust.\\n\\nLet\'s start with the `cargo` itself though. Package managers of the languages\\nusually get a lot of hate (you can take `npm` or `pip` as examples[^1]). If\\nyou\'ve ever tried out Rust, I bet you already know where I\'m going with this.\\nYes, I mean the compilation times, or even Cargo downloading _whole_ index of\\ncrates just so you can update that one dependency (and 3 millions of indirect\\ndeps). When I was doing AoC \u201822 in Rust, I\'ve set up `sccache` right away on the\\nfirst day.\\n\\nLet\'s move to the packaging of the Rust itself, it\'s tedious. Rust has a very\\nfast development cycle and doesn\'t even try to make the builds backward\\ncompatible. If there is a new release of Rust, there is a very high chance that\\nyou cannot build that release with anything other than **the latest** Rust\\nrelease. If you have ever touched the packaging, you know that this is something\\nthat can cause a lot of problems, cause you need the second-to-latest version to\\ncompile the latest version, don\'t forget that this applies inductively\u2026 People\\nrunning _Gentoo_ could tell you a lot about this.\\n\\n:::info\\n\\nCompiling the compilers takes usually more time than compiling the kernel\\nitself\u2026\\n\\n:::\\n\\nI cannot speak about packaging of Rust programs in other than RHEL-based\\ndistros, though I can speak about RHEL ecosystem. Fedora packaging guidelines\\nspecify that you need to build each and every dependency of the program\\nseparately. I wanted to try out _AlmaLinux_ and install Alacritty there and I\\nfailed miserably. The solution that worked, consisted of ignoring the packaging\\nguidelines, running `cargo build` and consuming the binaries afterwards.\\nDependencies of the Rust programs are of a similar nature as JS dependencies.\\n\\n> I\'m tipping my fedora[^2] in the general direction of the maintainers of Rust\\n> packages in RHEL ecosystem. I wouldn\'t be able to do this without losing my\\n> sanity.\\n\\n## Likes\\n\\nIf you\'ve come all the way here and you\'re a Rustacean, I believe I\'ve managed\\nto get your blood boiling, so it\'s time to finish this off by stuff I like about\\nRust. I doubt I will be able to cover everything, but I can try at least. You\\nhave to admit it\'s much easier to remember the bad stuff as opposed to the good.\\n:wink:\\n\\n### Workflow and toolchain\\n\\nI prefered using Rust for the _Advent of Code_ and _Codeforces_ as it provides\\na rather easy way to test the solutions before running them with the challenge\\ninput (or test runner). I can give an example from the _Advent of Code_:\\n\\n```rust\\nuse aoc_2023::*;\\n\\ntype Output1 = i32;\\ntype Output2 = Output1;\\n\\nstruct DayXX {}\\nimpl Solution for DayXX {\\n fn new>(pathname: P) -> Self {\\n let lines: Vec = file_to_lines(pathname);\\n\\n todo!()\\n }\\n\\n fn part_1(&mut self) -> Output1 {\\n todo!()\\n }\\n\\n fn part_2(&mut self) -> Output2 {\\n todo!()\\n }\\n}\\n\\nfn main() -> Result<()> {\\n DayXX::main()\\n}\\n\\ntest_sample!(day_XX, DayXX, 42, 69);\\n```\\n\\nThis was the skeleton I\'ve used and the macro at the end is my own creation that\\nexpands to:\\n\\n```rust\\n#[cfg(test)]\\nmod day_XX {\\n use super::*;\\n\\n #[test]\\n fn part_1() {\\n let path = DayXX::get_sample(1);\\n let mut day = DayXX::new(path);\\n assert_eq!(day.part_1(), 42);\\n }\\n\\n #[test]\\n fn part_2() {\\n let path = DayXX::get_sample(2);\\n let mut day = DayXX::new(path);\\n assert_eq!(day.part_2(), 69);\\n }\\n}\\n```\\n\\nWhen you\'re solving the problem, all you need to do is switch between\\n`cargo test` and `cargo run` to check the answer to either sample or the\\nchallenge input itself.\\n\\nIntroduce [bacon] and it gets even better. Bacon is a CLI tool that wraps around\\nthe `cargo` and allows you to check, run, lint or run tests on each file save.\\nIt\'s a very pleasant thing for a so-called _compiler-assisted_ development.\\n\\nSpeaking of linting from within the bacon, you cannot leave out the [clippy].\\nNot only it can whip your ass because of errors, but it can also produce a lot\\nof helpful suggestions, for example passing slices by borrow instead of\\nborrowing the `Vec` itself when you don\'t need it.\\n\\n### Standard library\\n\\nThere\'s **a lot** included in the standard library. It almost feels like you\\nhave all you need[^4]. I like placeholders (like `todo!()`, `unreachable!()`,\\n`unimplemented!()`) to the extent of\\n[implementing](/cpp/exceptions-and-raii/placeholders) them as exceptions in C++.\\n\\nYou can find almost anything. Though you can also hit some very weird issues\\nwith some of the nuances of the type system.\\n\\n### `unsafe`\\n\\nThis might be something that people like to avoid as much as possible. However I\\nthink that forming a habit of commenting posibly unsafe operations in **any**\\nlanguage is a good habit, as I\'ve mentioned above. You should be able to argue\\nwhy you can do something safely, even if the compiler is not kicking your ass\\nbecause of it.\\n\\nExcerpt of such comment from work:\\n\\n```py\\n# SAFETY: Taking first package instead of specific package should be\\n# safe, since we have put a requirement on \xbbone\xab \u2039upstream_project_url\u203a\\n# per Packit config, i.e. even if we\'re dealing with a monorepo, there\\n# is only \xbbone\xab upstream. If there is one upstream, there is only one\\n# set of GPG keys that can be allowed.\\nreturn self.downstream_config.packages[\\n self.downstream_config._first_package\\n].allowed_gpg_keys\\n```\\n\\n### Traits\\n\\nOne of the other things I like are the traits. They are more restrictive than\\ntemplates or concepts in C++, but they\'re doing their job pretty good. If you\\nare building library and require multiple traits to be satisfied it means a lot\\nof copy-paste, but that\'s soon to be fixed by the [trait aliases].\\n\\n:::tip Comparing to other languages\\n\\nOn Wikipedia I\'ve seen trait being defined as a more restrictive type class as\\nyou may know it from the Haskell for example. C++ isn\'t behind either with its\\n_constraints and concepts_. I would say that we can order them in the following\\norder based on the complexity they can express:\\n\\n```\\nRust\'s trait < Haskell\'s type class < C++\'s concept\\n```\\n\\n:::\\n\\nYou can also hit some issues, like me when trying to support conversions between\\nunderlying numeric types of a 2D vectors or support for using an operator from\\nboth sides (I couldn\'t get `c * u` to work in the same way as `u * c` because\\nthe first one requires you to implement the trait of a built-in type).\\n\\n:::warning Implementation\\n\\nImplementing traits lies in\\n\\n```rust\\nimpl SomeTrait for SomeStruct {\\n // implementation goes here\\n}\\n```\\n\\nOne of the things I **would love to** see is being able to define the helper\\nfunctions within the same block. As of now, the only things allowed are the ones\\nthat are required by the trait, which in the end results in a randomly lying\\nfunctions around (or in a implementation of the structure itself). I don\'t like\\nthis mess at all\u2026\\n\\n:::\\n\\n### Influence of functional paradigm\\n\\nYou can see a big influence of the functional paradigm. Not only in iterators,\\nbut also in the other parts of the language. For example I prefer `Option` or\\n`Result` to `null`s and exceptions. Pattern matching together with\\ncompiler both enforces handling of the errors and rather user-friendly way of\\ndoing it.\\n\\nNot to mention `.and_then()` and such. However spending most of the time with\\nthe AoC you get pretty annoyed of the repetitive `.unwrap()` during parsing,\\nsince you are guaranteed correct input.\\n\\n### Macros\\n\\nMacros are a very strong pro of the Rust. And no, we\'re not going to talk about\\nthe procedural macros\u2026\\n\\nAs I\'ve shown above I\'ve managed to \u201ctame\u201d a lot of copy-paste in the tests for\\nthe AoC by utilizing a macro that generated a very basic template for the tests.\\n\\nAs I have mentioned the traits above, I cannot forget to give props to `derive`\\nmacro that allows you to \u201cdeduce\u201d the default implementation. It is very helpful\\nfor a tedious tasks like implementing `Debug` (for printing out the structures)\\nor comparisons, though with the comparisons you need to be careful about the\\ndefault implementation, it has already bitten me once or twice.\\n\\n## Summary\\n\\nOverall there are many things about the Rust I like and would love to see them\\nimplemented in other languages. However there are also many things I don\'t like.\\nNothing is **exclusively** black and white.\\n\\n[advent of code]: https://adventofcode.com\\n[bacon]: https://dystroy.org/bacon/\\n[clippy]: https://github.com/rust-lang/rust-clippy\\n[codeforces]: https://codeforces.com\\n[trait aliases]: https://github.com/rust-lang/rfcs/blob/master/text/1733-trait-alias.md\\n\\n[^1]:\\n not to even mention multiple different packaging standards Python has, which\\n is borderline https://xkcd.com/927/\\n\\n[^2]: pun intended\\n[^3]: It\'s not that easy with the Rust compiler, but OK\u2026\\n[^4]:\\n unlike Python where there\'s whole universe in the language itself, yet there\\n are essential things not present\u2026"},{"id":"/2023/08/02/copr","metadata":{"permalink":"/blog/2023/08/02/copr","editUrl":"https://github.com/mfocko/blog/tree/main/blog/2023-08-02-copr.md","source":"@site/blog/2023-08-02-copr.md","title":"How can Copr help with broken dependencies","description":"Copr comes to save you when maintainer doesn\'t care.","date":"2023-08-02T00:00:00.000Z","formattedDate":"August 2, 2023","tags":[{"label":"\ud83c\udfed","permalink":"/blog/tags/\ud83c\udfed"},{"label":"red-hat","permalink":"/blog/tags/red-hat"},{"label":"copr","permalink":"/blog/tags/copr"},{"label":"admin","permalink":"/blog/tags/admin"},{"label":"vps","permalink":"/blog/tags/vps"}],"readingTime":3.44,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. your opinionated admin","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"How can Copr help with broken dependencies","description":"Copr comes to save you when maintainer doesn\'t care.","date":"2023-08-02T00:00:00.000Z","authors":[{"key":"mf","title":"a.k.a. your opinionated admin"}],"tags":["\ud83c\udfed","red-hat","copr","admin","vps"]},"unlisted":false,"prevItem":{"title":"Mixed feelings on Rust","permalink":"/blog/2024/01/28/rust-opinion"},"nextItem":{"title":"4th week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/4th-week"}},"content":"When you decide to run Fedora on your VPS, you might get screwed over by using\\nrandom repositories\u2026\\n\\n\x3c!--truncate--\x3e\\n\\nWhen I \u201creserved\u201d my VPS[^1] back in June \'20, I slapped Fedora on it without\\nthinking. I bet 99% of people would say that I\'m crazy for doing such thing[^2],\\n**BUT** I\'ve been using Fedora on my PCs for some time already and it felt very\\nstable and natural to just use, even for VPS.\\n\\nOne of the first things I\'ve done was setting up a mail server. You may guess\\nwhat\'s the fun part about having a mail server\u2026 Yes, it\'s all the spam you\\nreceive and only then you realize how much \u201ccrap\u201d gets filtered on free mail\\nservices. To battle this problem I chose to use\\n[rspamd](https://github.com/rspamd/rspamd) that had CentOS support, but someone\\nhad a [Copr](https://copr.fedorainfracloud.org/) repository that I used to\\ninstall it.\\n\\n## How does Copr repositories work?\\n\\nIf you have ever used Ubuntu, you might be familiar with the concept since it is\\nvery close to [PPAs](https://help.ubuntu.com/community/PPA).\\n\\ntl;dr of the whole process consists of\\n\\n1. enabling the Copr repository, and\\n2. installing the desired package.\\n\\nSo in shell you would do\\n\\n```\\n# dnf copr enable \u2039copr-repository\u203a\\n# dnf install \u2039package-from-the-repository\u203a\\n```\\n\\nAnd\u2026 that\'s it! Nothing else needed! Simple, right? And literally same process\\nas you would do for the PPA.\\n\\n:::tip AUR\\n\\nOn the other hand, if you are familiar with the archLinux, you definitely know\\nAUR and what it can do for you. Copr repository is pretty similar, but the\\npackages are prebuilt in Copr and Copr repositories can carry the required\\ndependencies for said packages, which simplifies the distribution, and can even\\nhelp with installing singular packages (when you just need the dependency, not\\neverything).\\n\\n:::\\n\\n## My issue\\n\\nNow you might wonder how would I use it on my VPS. It\'s rather simple, once in\\n6 months a new Fedora release comes out. And you need to upgrade to newer\\nrelease\u2026 You don\'t need to do it right away and for such setup it probably isn\'t\\neven recommended.\\n\\n:::tip\\n\\nFedora releases are supported for a year, i.e. they live 6 months till the next\\nrelease and then another 6 months till another release.\\n\\nSome people prefer to run one version \u201cbehind\u201d. If you ever decide to run it on\\nyour home server or in a similar setup, it might be a pretty good idea to\\nfollow. I\'m using the \u201clatest greatest\u201d, cause why not :smile:\\n\\nOne way or another, you still need to bump the release every six months, unless\\nyou\'d bump 2 releases at once every year, which would be a decision, since, at\\nleast I, cannot see any benefits in it\u2026 You don\'t go for \u201cstability\u201d, cause once\\na year you switch to the latest release and then, before you bump, you use one\\nyear old software, so you\'re not even using the latest.\\n\\n:::\\n\\nFast-forward 2 years in the future, new Fedora release came out (October \'22)\\nand I was doing an upgrade. Dependencies of the rspamd have been updated and\\nrspamd builds in Copr have failed and no one fixed it. Cool, so now I can\\nupgrade, but can either ignore the dependencies or uninstall the rspamd\u2026\\n\\n## How can Copr help?\\n\\nI have managed to find\\n[specfile](https://github.com/rspamd/rspamd/blob/master/rpm/rspamd.spec) for the\\nrspamd package that they use for CentOS. There were some files apart from the\\nspecfile, so I had to make an SRPM locally and then\u2026 I just uploaded the SRPM\\nto the Copr to\\n[build](https://copr.fedorainfracloud.org/coprs/mfocko/rspamd/build/5046567/)\\nan RPM.\\n\\nI have switched the previous Copr repository for rspamd with my own and happily\\nproceeded with the upgrade.\\n\\n## Conclusion\\n\\nCopr is heavily used for testing builds on the upstream with\\n[Packit](https://packit.dev). However, as you can see, it is possible to use it\\n**very well** for packaging your own stuff and avoiding issues (such as the one\\nI have described above), if need be.\\n\\n[^1]: [vpsFree.cz](https://vpsfree.cz)\\n[^2]:\\n Even though I\'ve been running archLinux on some Raspberry Pi\'s and also\\n on one of my \u201chome servers\u201d, before getting the VPS. You could say I like\\n to live on the edge\u2026"},{"id":"aoc-2022/4th-week","metadata":{"permalink":"/blog/aoc-2022/4th-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/04-week-4.md","source":"@site/blog/aoc-2022/04-week-4.md","title":"4th week of Advent of Code \'22 in Rust","description":"Surviving fourth week in Rust.","date":"2023-07-07T15:14:00.000Z","formattedDate":"July 7, 2023","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":15.175,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"4th week of Advent of Code \'22 in Rust","description":"Surviving fourth week in Rust.","date":"2023-07-07T15:14","slug":"aoc-2022/4th-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"How can Copr help with broken dependencies","permalink":"/blog/2023/08/02/copr"},"nextItem":{"title":"3rd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/3rd-week"}},"content":"Let\'s go through the fourth week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 22: Monkey Map](https://adventofcode.com/2022/day/22)\\n\\n:::info tl;dr\\n\\nSimulating a movement on a 2D map with given instructions. Map becomes a cube in\\nthe 2nd part\u2026\\n\\n:::\\n\\n:::caution Rant\\n\\nThis was the most obnoxious problem of this year\u2026 and a lot of Rust issues have\\nbeen hit.\\n\\n:::\\n\\n### Solution\\n\\nIt seems like a very simple problem to solve, but with very obnoxious changes in\\nthe 2nd part and also it\'s relatively hard to decompose \xbbproperly\xab.\\n\\n#### Column iterator\\n\\nIn the first part of the problem it was needed to know the boundaries of each\\nrow and column, since I stored them in `Vec>` and padded with spaces\\nto ensure I have a rectangular 2D \u201carray\u201d. However when you wanted to go through\\neach row and column to determine the boundaries, it was very easy to do for the\\nrows (cause each row is a `Vec` element), but not for the columns, since they\\nspan multiple rows.\\n\\nFor this use case I have implemented my own _column iterator_:\\n\\n```rust\\npub struct ColumnIterator<\'a, T> {\\n map: &\'a [Vec],\\n column: usize,\\n\\n i: usize,\\n}\\n\\nimpl<\'a, T> ColumnIterator<\'a, T> {\\n pub fn new(map: &\'a [Vec], column: usize) -> ColumnIterator<\'a, T> {\\n Self { map, column, i: 0 }\\n }\\n}\\n\\nimpl<\'a, T> Iterator for ColumnIterator<\'a, T> {\\n type Item = &\'a T;\\n\\n fn next(&mut self) -> Option {\\n if self.i >= self.map.len() {\\n return None;\\n }\\n\\n self.i += 1;\\n Some(&self.map[self.i - 1][self.column])\\n }\\n}\\n```\\n\\nGiven this piece of an iterator, it is very easy to factor out the common\\nfunctionality between the rows and columns into:\\n\\n```rust\\nlet mut find_boundaries = |constructor: fn(usize) -> Orientation,\\n iterator: &mut dyn Iterator,\\n upper_bound,\\n i| {\\n let mut first_non_empty = iterator.enumerate().skip_while(|&(_, &c)| c == \' \');\\n let start = first_non_empty.next().unwrap().0 as isize;\\n\\n let mut last_non_empty = first_non_empty.skip_while(|&(_, &c)| c != \' \');\\n let end = last_non_empty.next().unwrap_or((upper_bound, &\'_\')).0 as isize;\\n\\n boundaries.insert(constructor(i), start..end);\\n};\\n```\\n\\nAnd then use it as such:\\n\\n```rust\\n// construct all horizontal boundaries\\n(0..map.len()).for_each(|row| {\\n find_boundaries(\\n Orientation::horizontal,\\n &mut map[row].iter(),\\n map[row].len(),\\n row,\\n );\\n});\\n\\n// construct all vertical boundaries\\n(0..map[0].len()).for_each(|col| {\\n find_boundaries(\\n Orientation::vertical,\\n &mut ColumnIterator::new(&map, col),\\n map.len(),\\n col,\\n );\\n});\\n```\\n\\n#### Walking around the map\\n\\nOnce the 2nd part got introduced, you start to think about a way how not to\\ncopy-paste a lot of stuff (I haven\'t avoided it anyways\u2026). In this problem, I\'ve\\nchosen to introduce a trait (i.e. _interface_) for 2D and 3D walker.\\n\\n```rust\\ntrait Wrap: Clone {\\n type State;\\n\\n // simulation\\n fn is_blocked(&self) -> bool;\\n fn step(&mut self, steps: isize);\\n fn turn_left(&mut self);\\n fn turn_right(&mut self);\\n\\n // movement\\n fn next(&self) -> (Self::State, Direction);\\n\\n // final answer\\n fn answer(&self) -> Output;\\n}\\n```\\n\\nEach walker maintains its own state and also provides the functions that are\\nused during the simulation. The \u201cpromised\u201d methods are separated into:\\n\\n- _simulation_-related: that are used during the simulation from the `.fold()`\\n- _movement_-related: just a one method that holds most of the logic differences\\n between 2D and 3D\\n- _final answer_: which extracts the _proof of solution_ from the\\n implementation-specific walker\\n\\nBoth 2D and 3D versions borrow the original input and therefore you must\\nannotate the lifetime of it:\\n\\n```rust\\nstruct Wrap2D<\'a> {\\n input: &\'a Input,\\n position: Position,\\n direction: Direction,\\n}\\nimpl<\'a> Wrap2D<\'a> {\\n fn new(input: &\'a Input) -> Wrap2D<\'a> {\\n// \u2026\\n```\\n\\n#### Problems\\n\\nI have used a lot of closures for this problem and once I introduced a parameter\\nthat was of unknown type (apart from the fact it implements a specific trait), I\\ngot suggested a \u201cfix\u201d for the compilation error that resulted in something that\\nwas not possible to parse, cause it, more than likely, violated the grammar.\\n\\nIn a similar fashion, I have been suggested changes that led to a code that\\ndidn\'t make sense by just looking at it (there was no need to try the changes),\\nfor example one suggested change in the closure parameter caused disapperance of\\nthe parameter name. :smile:\\n\\n#### Clippy\\n\\nI have to admit that Clippy was rather helpful here, I\'ll include two examples\\nof rather smart suggestions.\\n\\nWhen writing the parsing for this problem, the first thing I have spotted on the\\n`char` was the `.is_digit()` function that takes a radix as a parameter. Clippy\\nnoticed that I use `radix = 10` and suggested switching to `.is_ascii_digit()`\\nthat does exactly the same thing:\\n\\n```diff\\n- .take_while(|c| c.is_digit(10))\\n+ .take_while(|c| c.is_ascii_digit())\\n```\\n\\nAnother useful suggestion appeared when working with the iterators and I wanted\\nto get the $n$-th element from it. You know the `.skip()`, you know the\\n`.next()`, just \u201cslap\u201d them together and we\'re done for :grin: Well, I got\\nsuggested to use `.nth()` that does exactly the combination of the two mentioned\\nmethods on iterators:\\n\\n```diff\\n- match it.clone().skip(skip).next().unwrap() {\\n+ match it.clone().nth(skip).unwrap() {\\n```\\n\\n## [Day 23: Unstable Diffusion](https://adventofcode.com/2022/day/23)\\n\\n:::info tl;dr\\n\\nSimulating movement of elves around with a set of specific rules.\\n\\n:::\\n\\n### Solution\\n\\nThere\'s not much to mention since it\'s just a cellular automaton simulation\\n(even though the AoC rules for cellular automatons usually get out of hand\\n:wink:).\\n\\nAlthough I had a need to determine boundaries of the elves\' positions and ended\\nup with a nasty DRY violation. Knowing that you you\'re looking for maximum and\\nminimum that are, of course, exactly the same except for initial values and\\ncomparators, it looks like a rather simple fix, but typing in Rust is something\\nelse, right? In the end I settled for a function that computes both boundaries\\nwithout any duplication while using a closure:\\n\\n```rust\\nfn get_bounds(positions: &Input) -> (Vector2D, Vector2D) {\\n let f = |init, cmp: &dyn Fn(isize, isize) -> isize| {\\n positions\\n .iter()\\n .fold(Vector2D::new(init, init), |acc, elf| {\\n Vector2D::new(cmp(acc.x(), elf.x()), cmp(acc.y(), elf.y()))\\n })\\n };\\n\\n (f(isize::MAX, &min::), f(isize::MIN, &max::))\\n}\\n```\\n\\nThis function returns a pair of 2D vectors that represent opposite points of the\\nbounding rectangle of all elves.\\n\\nYou might ask why would we need a closure and the answer is that `positions`\\ncannot be captured from within the nested function, only via closure. One more\\nfun fact on top of that is the type of the comparator\\n\\n```rust\\n&dyn Fn(isize, isize) -> isize\\n```\\n\\nOnce we remove the `dyn` keyword, compiler yells at us and also includes a way\\nhow to get a more thorough explanation of the error by running\\n\\n $ rustc --explain E0782\\n\\nwhich shows us\\n\\n Trait objects must include the `dyn` keyword.\\n\\n Erroneous code example:\\n\\n ```\\n trait Foo {}\\n fn test(arg: Box) {} // error!\\n ```\\n\\n Trait objects are a way to call methods on types that are not known until\\n runtime but conform to some trait.\\n\\n Trait objects should be formed with `Box`, but in the code above\\n `dyn` is left off.\\n\\n This makes it harder to see that `arg` is a trait object and not a\\n simply a heap allocated type called `Foo`.\\n\\n To fix this issue, add `dyn` before the trait name.\\n\\n ```\\n trait Foo {}\\n fn test(arg: Box) {} // ok!\\n ```\\n\\n This used to be allowed before edition 2021, but is now an error.\\n\\n:::danger Rant\\n\\nNot all of the explanations are helpful though, in some cases they might be even\\nmore confusing than helpful, since they address _very simple_ use cases.\\n\\nAs you can see, even in this case there are two sides to the explanations:\\n\\n- it explains why you need to use `dyn`, but\\n- it still mentions that trait objects need to be heap-allocated via `Box`\\n that, as you can see in my snippet, **does not** apply here :smile: IMO it\'s\\n caused by the fact that we are borrowing it and therefore we don\'t need to\\n care about the size or whereabouts of it.\\n\\n:::\\n\\n:::info C++ parallel\\n\\nIf you dive into the explanation above, you can notice that the `Box`\\npattern is very helpful for using types that are not known during compile-time.\\nYou would use a very similar approach in C++ when parsing some data structure\\nfrom input (let\'s say JSON for example).\\n\\nOn the other hand, in this case, it doesn\'t really make much sense, cause you\\ncan clearly see that the types **are known** during the compile-time, which in\\nC++ could be easily resolved by templating the helper function.\\n\\n:::\\n\\n## [Day 24: Blizzard Basin](https://adventofcode.com/2022/day/24)\\n\\n:::info tl;dr\\n\\nNavigating your way through a basin with series of blizzards that move around\\nyou as you move.\\n\\n:::\\n\\n:::caution\\n\\nIt\'s second to last day and I went \u201c_bonkers_\u201d on the Rust :smile: Proceed to\\nread _Solution_ part on your own risk.\\n\\n:::\\n\\n### Solution\\n\\nYou are given a map with blizzards all over the place and you\'re supposed to\\nfind the minimum time it requires you to walk through the basin without getting\\nin any of the blizzards.\\n\\n#### Breakdown\\n\\nRelatively simple, yet a bit annoying, approach can be taken. It\'s technically\\na shortest-path algorithm implementation with some relaxation restrictions and\\nbeing able to stay on one position for some time, so each _vertex_ of the graph\\nis determined by the position on the map and the _timestamp_. I have chosen to\\nuse `Vector3D`, since `x` and `y` attributes can be used for the position\\nand, well, let\'s use `z` for a timestamp, cause why not, right? :wink:\\n\\n#### Evaluating the blizzards\\n\\n:::caution\\n\\nI think that this is the most perverted abuse of the traits in the whole 4 weeks\\nof AoC in Rust\u2026\\n\\n:::\\n\\nThe blizzards move along their respective directions in time and loop around in\\ntheir respective row/column. Each vertex holds position **and** time, so we can\\n_just_ index the basin with the vertex itself, right? Yes, we can :smiling_imp:\\n\\n:::tip Fun fact\\n\\nWhile writing this part, I\'ve recognized unnecessary verbosity in the code and\\ncleaned it up a bit. The changed version is shown here and the original was just\\nmore verbose.\\n\\n:::\\n\\nI\'ll skip the boring parts of checking bounds and entry/exit of the basin :wink:\\nWe can easily calculate positions of the blizzards using a modular arithmetics:\\n\\n```rust\\nimpl Index for Basin {\\n type Output = char;\\n\\n fn index(&self, index: Position) -> &Self::Output {\\n // \u2039skipped boring parts\u203a\\n\\n // We need to account for the loops of the blizzards\\n let width = self.cols - 2;\\n let height = self.rows - 2;\\n\\n let blizzard_origin = |size, d, t, i| ((i - 1 + size + d * (t % size)) % size + 1) as usize;\\n [\\n (\\n index.y() as usize,\\n blizzard_origin(width, -1, index.z(), index.x()),\\n \'>\',\\n ),\\n (\\n index.y() as usize,\\n blizzard_origin(width, 1, index.z(), index.x()),\\n \'<\',\\n ),\\n (\\n blizzard_origin(height, -1, index.z(), index.y()),\\n index.x() as usize,\\n \'v\',\\n ),\\n (\\n blizzard_origin(height, 1, index.z(), index.y()),\\n index.x() as usize,\\n \'^\',\\n ),\\n ]\\n .iter()\\n .find_map(|&(y, x, direction)| {\\n if self.map[y][x] == direction {\\n Some(&self.map[y][x])\\n } else {\\n None\\n }\\n })\\n .unwrap_or(&\'.\')\\n }\\n}\\n```\\n\\nAs you can see, there is an expression for calculating the original position and\\nit\'s used multiple times, so why not take it out to a lambda, right? :wink:\\n\\nI couldn\'t get the `rustfmt` to format the `for`-loop nicely, so I\'ve just\\ndecided to go with iterating over an elements of a slice. I have used, once\\nagain, a combination of two functions (`find_map` in this case) to do 2 things\\nat once and at the end, if we haven\'t found any blizzard, we just return the\\nempty space.\\n\\nI think it\'s a very _nice_ (and naughty) way how to use the `Index` trait, don\'t\\nyou think?\\n\\n#### Shortest-path algorithm\\n\\nFor the shortest path you can choose and adjust any of the common shortest-path\\nalgorithms, in my case, I have decided to use [_A\\\\*_] instead of Dijkstra\'s\\nalgorithm, since it better reflects the _cost_ function.\\n\\n:::info Comparison of costs\\n\\nWith the Dijkstra\'s algorithm I would proceed with the `time` attribute used as\\na priority for the queue.\\n\\nWhereas with the _A\\\\*_, I have chosen to use both time and Manhattan distance\\nthat promotes vertices closer to the exit **and** with a minimum time taken.\\n\\n:::\\n\\nCost function is, of course, a closure :wink:\\n\\n```rust\\nlet cost = |p: Position| p.z() as usize + exit.y().abs_diff(p.y()) + exit.x().abs_diff(p.x());\\n```\\n\\nAnd also for checking the possible moves from the current vertex, I have\\nimplemented, yet another, closure that yields an iterator with the next moves:\\n\\n```rust\\nlet next_positions = |p| {\\n [(0, 0, 1), (0, -1, 1), (0, 1, 1), (-1, 0, 1), (1, 0, 1)]\\n .iter()\\n .filter_map(move |&(x, y, t)| {\\n let next_p = p + Vector3D::new(x, y, t);\\n\\n if basin[next_p] == \'.\' {\\n Some(next_p)\\n } else {\\n None\\n }\\n })\\n};\\n```\\n\\n#### Min-heap\\n\\nIn this case I had a need to use the priority queue taking the elements with the\\nlowest cost as the prioritized ones. Rust only offers you the [`BinaryHeap`] and\\nthat is a max-heap. One of the ways how to achieve a min-heap is to put the\\nelements in wrapped in a [`Reverse`] (as is even showed in the linked [docs of\\nthe `BinaryHeap`]). However the wrapping affects the type of the heap and also\\npopping the most prioritized elements yields values wrapped in the `Reverse`.\\n\\nFor this purpose I have just taken the max-heap and wrapped it as a whole in a\\nseparate structure providing just the desired methods:\\n\\n```rust\\nuse std::cmp::{Ord, Reverse};\\nuse std::collections::BinaryHeap;\\n\\npub struct MinHeap {\\n heap: BinaryHeap>,\\n}\\n\\nimpl MinHeap {\\n pub fn new() -> MinHeap {\\n MinHeap {\\n heap: BinaryHeap::new(),\\n }\\n }\\n\\n pub fn push(&mut self, item: T) {\\n self.heap.push(Reverse(item))\\n }\\n\\n pub fn pop(&mut self) -> Option {\\n self.heap.pop().map(|Reverse(x)| x)\\n }\\n}\\n\\nimpl Default for MinHeap {\\n fn default() -> Self {\\n Self::new()\\n }\\n}\\n```\\n\\nRest is just the algorithm implementation which is not that interesting.\\n\\n## [Day 25: Full of Hot Air](https://adventofcode.com/2022/day/25)\\n\\n:::info tl;dr\\n\\nPlaying around with a numbers in a _special_ base.\\n\\n:::\\n\\nGetting flashbacks to the _IB111 Foundations of Programming_\u2026 Very nice \u201cproblem\u201d\\nwith a rather easy solution, as the last day always seems to be.\\n\\n### Solution\\n\\nImplementing 2 functions, converting from the _SNAFU base_ and back to the _SNAFU_\\n_base_ representation. Let\'s do a bit more though! I have implemented two functions:\\n\\n- `from_snafu`\\n- `to_snafu`\\n\\nNow it is apparent that all I do is number to string and string to number. Hmm\u2026\\nthat sounds familiar, doesn\'t it? Let\'s introduce a structure for the SNAFU numbers\\nand implement the traits that we need.\\n\\nLet\'s start with a structure:\\n\\n```rust\\n#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]\\nstruct SNAFU {\\n value: i64,\\n}\\n```\\n\\n#### Converting from `&str`\\n\\nWe will start by implementing the `FromStr` trait that will help us parse our input.\\nThis is rather simple, I can just take the `from_snafu` function, copy-paste it\\ninto the `from_str` method and the number I get will be wrapped in `Result` and\\n`SNAFU` structure.\\n\\n#### Converting to `String`\\n\\nThis is more fun. In some cases you need to implement only one trait and others\\nare automatically implemented using that one trait. In our case, if you look in\\nthe documentation, you can see that `ToString` trait is automatically implemented\\nfor any type that implements `Display` trait.\\n\\nLet\'s implement the `Display` trait then. We should be able to use the `to_snafu`\\nfunction and just take the `self.value` from the `SNAFU` structure.\\n\\nAnd for the convenience of tests, we can also implement a rather simple `From`\\ntrait for the `SNAFU`.\\n\\n#### Adjusting the code\\n\\nAfter those changes we need to adjust the code and tests.\\n\\nParsing of the input is very easy, before we have used the lines, now we parse\\neverything:\\n\\n```diff\\n fn parse_input>(pathname: P) -> Input {\\n- file_to_lines(pathname)\\n+ file_to_structs(pathname)\\n }\\n```\\n\\nPart 1 needs to be adjusted a bit too:\\n\\n```diff\\n fn part_1(input: &Input) -> Output {\\n- to_snafu(input.iter().map(|s| from_snafu(s)).sum())\\n+ SNAFU::from(input.iter().map(|s| s.value).sum::()).to_string()\\n }\\n```\\n\\nYou can also see that it simplifies the meaning a bit and it is more explicit than\\nthe previous versions.\\n\\nAnd for the tests:\\n\\n```diff\\n #[test]\\n fn test_from() {\\n- for (n, s) in EXAMPLES.iter() {\\n- assert_eq!(from_snafu(s), *n);\\n+ for (&n, s) in EXAMPLES.iter() {\\n+ assert_eq!(s.parse::().unwrap().value, n);\\n }\\n }\\n\\n #[test]\\n fn test_to() {\\n- for (n, s) in EXAMPLES.iter() {\\n- assert_eq!(to_snafu(*n), s.to_string());\\n+ for (&n, s) in EXAMPLES.iter() {\\n+ assert_eq!(SNAFU::from(n).to_string(), s.to_string());\\n }\\n```\\n\\n## Summary\\n\\nLet\'s wrap the whole thing up! Keeping in mind both AoC and the Rust\u2026\\n\\n![Finished advent calendar :smile:](/img/blog/aoc-2022/04-week-4/calendar.png)\\n\\n### Advent of Code\\n\\nThis year was quite fun, even though most of the solutions and posts came in\\nlater on (_cough_ in \'23 _cough_). Day 22 was the most obnoxious one\u2026 And also\\nit feels like I used priority queues and tree data structures **a lot** :eyes:\\n\\n### with Rust\\n\\nI must admit that a lot of compiler warnings and errors were very useful. Even\\nthough I still found some instances where they didn\'t help at all or cause even\\nworse issues than I had. Compilation times have been addressed with the caching.\\n\\nBuilding my first tree data structure in Rust has been a very \u201cinteresting\u201d\\njourney. Being able to write a more generic BFS algorithm that allows you to not\\nduplicate code while still mantaining the desired functionality contributes to\\na very readable code.\\n\\nI am definitely much more aware of the basic things that bloated Python is\\nmissing, yet Rust has them\u2026\\n\\nUsing explicit types and writing down placeholder functions with `todo!()`\\nmacros is very pleasant, since it allows you to easily navigate the type system\\nduring the development when you don\'t even need to be sure how are you going to\\nput the smaller pieces together.\\n\\nI have used a plethora of traits and also implemented some of them to either be\\nidiomatic, or exploit the syntactic sugar they offer. Deriving the default trait\\nimplementation is also very helpful in a lot of cases, e.g. debugging output,\\ncopying, equality comparison, etc.\\n\\nI confess to touching more \u201ccursed\u201d parts of the Rust, such as macros to\\ndeclutter the copy-paste for tests or writing my own structures that need to\\ncarry a lifetime for their own fields.\\n\\ntl;dr Relatively pleasant language until you hit brick wall :wink:\\n\\n---\\n\\nSee you next year! Maybe in Rust, maybe not :upside_down_face:\\n\\n[_advent of code_]: https://adventofcode.com\\n[_a\\\\*_]: https://en.wikipedia.org/wiki/A*_search_algorithm\\n[`binaryheap`]: https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html\\n[`reverse`]: https://doc.rust-lang.org/std/cmp/struct.Reverse.html\\n[docs of the `binaryheap`]: https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html#min-heap"},{"id":"aoc-2022/3rd-week","metadata":{"permalink":"/blog/aoc-2022/3rd-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/03-week-3.md","source":"@site/blog/aoc-2022/03-week-3.md","title":"3rd week of Advent of Code \'22 in Rust","description":"Surviving third week in Rust.","date":"2023-07-06T21:00:00.000Z","formattedDate":"July 6, 2023","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":11.57,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"3rd week of Advent of Code \'22 in Rust","description":"Surviving third week in Rust.","date":"2023-07-06T21:00","slug":"aoc-2022/3rd-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"4th week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/4th-week"},"nextItem":{"title":"Sort the matrix diagonally","permalink":"/blog/leetcode/sort-diagonally"}},"content":"Let\'s go through the third week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 15: Beacon Exclusion Zone](https://adventofcode.com/2022/day/15)\\n\\n:::info tl;dr\\n\\nTriangulating a distress beacon based on the information from the sensors.\\n\\n:::\\n\\n### Solution\\n\\nRelatively easy thing to implement, no major Rust issues hit.\\n\\n## [Day 16: Proboscidea Volcanium](https://adventofcode.com/2022/day/16)\\n\\n:::info tl;dr\\n\\nFinding a max flow in a graph given some time constraints.\\n\\n:::\\n\\n### Solution\\n\\nI have used some interesting things to implement this and make it easier for me.\\n\\n#### Indexing in graph\\n\\nI have come across a situation where I needed to keep more information regarding\\nthe graph\u2026 In that case you can, of course, create a structure and keep it in,\\nbut once you have multiple members in the structure it gets harder to work with\\nsince you need to address the fields in the structure. When you work with graph,\\nyou frequently need to access the vertices and in this case it felt a lot easier\\nto implement the indexing in a graph, rather than explicitly access the\\nunderlying data structure.\\n\\nHere you can see a rather short snippet from the solution that allows you to\\n\u201cindex\u201d the graph:\\n\\n```rust\\nimpl Index<&str> for Graph {\\n type Output = Vertex;\\n\\n fn index(&self, index: &str) -> &Self::Output {\\n &self.g[index]\\n }\\n}\\n```\\n\\n#### Cartesian product\\n\\nDuring the implementation I had to utilize Floyd-Warshall algorithm for finding\\nthe shortest path between pairs of vertices and utilized the `iproduct!` macro\\nfrom the [`itertools`]. It is a very useful higher-order function that allows\\nyou to keep the nesting of the loops at a minimum level while still maintaining\\nthe same functionality.\\n\\n#### \u201cImplementing\u201d an iterator\\n\\nFor the second part, you get to split the work between 2 actors. That way you\\ncan achieve higher efficiency of the whole process that you\'re planning, but it\\nalso makes it harder to evaluate algorithmically, since you need to check the\\ndifferent ways the work can be split.\\n\\nBeing affected by _functional programming brain damage_:tm:, I have chosen to\\ndo this part by function that returns an iterator over the possible ways:\\n\\n```rust\\nfn pairings(\\n valves: &BTreeSet,\\n) -> impl Iterator, BTreeSet)> + \'_ {\\n let mapping = valves.iter().collect_vec();\\n\\n let max_mask = 1 << (valves.len() - 1);\\n\\n (0..max_mask).map(move |mask| {\\n let mut elephant = BTreeSet::new();\\n let mut human = BTreeSet::new();\\n\\n for (i, &v) in mapping.iter().enumerate() {\\n if (mask & (1 << i)) == 0 {\\n human.insert(v.clone());\\n } else {\\n elephant.insert(v.clone());\\n }\\n }\\n\\n (human, elephant)\\n })\\n}\\n```\\n\\n## [Day 17: Pyroclastic Flow](https://adventofcode.com/2022/day/17)\\n\\n:::info tl;dr\\n\\nSimulating an autonomous Tetris where pieces get affected by a series of jets of\\nhot gas.\\n\\n:::\\n\\n### Solution\\n\\nSimilarly to the previous day I have created some iterators :smile:\\n\\n#### Collision detection\\n\\nOnce you need to check for collisions it is very helpful to be able to just\\niterate through the positions that can actually collide with the wall or other\\npiece.\\n\\nTo get the desired behaviour, you can just compose few smaller functions:\\n\\n```rust\\nfn occupied(shape: &[Vec]) -> impl Iterator + \'_ {\\n shape.iter().enumerate().flat_map(|(y, row)| {\\n row.iter().enumerate().filter_map(move |(x, c)| {\\n if c == &\'#\' {\\n Some(Vector2D::new(x as isize, y as isize))\\n } else {\\n None\\n }\\n })\\n })\\n}\\n```\\n\\nIn the end, we get relative positions which we can adjust later when given the\\nspecific positions from iterator. You can see some interesting parts in this:\\n\\n- `.enumerate()` allows us to get both the indices (coordinates) and the line\\n or, later on, the character itself,\\n- `.flat_map()` flattens the iterator, i.e. when we return another iterator,\\n they just get chained instead of iterating over iterators (which sounds pretty\\n disturbing, doesn\'t it?),\\n- and finally `.filter_map()` which is pretty similar to the \u201cbasic\u201d `.map()`\\n with a one, key, difference that it expects the items of an iterator to be\\n mapped to an `Option` from which it ignores nothing (as in `None` :wink:)\\n and also unwraps the values from `Some(\u2026)`.\\n\\n#### Infinite iterator\\n\\nIn the solution we cycle through both Tetris-like shapes that fall down and the\\njets that move our pieces around. Initially I have implemented my own infinite\\niterator that just yields the indices. It is a very simple, yet powerful, piece\\nof code:\\n\\n```rust\\nstruct InfiniteIndex {\\n size: usize,\\n i: usize,\\n}\\n\\nimpl InfiniteIndex {\\n fn new(size: usize) -> InfiniteIndex {\\n InfiniteIndex { size, i: size - 1 }\\n }\\n}\\n\\nimpl Iterator for InfiniteIndex {\\n type Item = usize;\\n\\n fn next(&mut self) -> Option {\\n self.i = (self.i + 1) % self.size;\\n Some(self.i)\\n }\\n}\\n```\\n\\nHowever when I\'m looking at the code now, it doesn\'t really make much sense\u2026\\nGuess what, we can use a built-in function that is implemented on iterators for\\nthat! The function is called `.cycle()`\\n\\nOn the other hand, I am not going to switch to that function, since it would\\nintroduce an another myriad of issues caused by the fact that I create iterators\\nright away in the constructor of my structure and the iterators would borrow\\nboth the jets and shapes which would introduce a lifetime dependency into the\\nstructure.\\n\\n## [Day 18: Boiling Boulders](https://adventofcode.com/2022/day/18)\\n\\n:::info tl;dr\\n\\nLet\'s compute a surface area of some obsidian approximated via coordinates of\\ncubes.\\n\\n:::\\n\\n### Solution\\n\\nThis day is kinda interesting, because it shows how easily you can complicate the\\nproblem and also how much can you screw yourself over with the optimization and\\n\u201csmart\u201d approach.\\n\\nFor the first part you need to find the surface area of an obsidian that is\\napproximated by cubes. Now, that is a very easy thing to do, just keep the track\\nof already added cubes, and check if the newly added cube touches any face of any\\nother cube. Simple, and with a `BTreeSet` relatively efficient way to do it.\\n\\nHowever the second part lets you on a secret that there may be some surface area\\nfrom the \u201cinside\u201d too and you want to know only the one from the outside of the\\nobsidian. I have seen some solutions later, but if you check your data, you might\\nnotice that the bounding box of all the cubes isn\'t that big at all. Therefore I\\nchose to pre-construct the box beforehand, fill in the cubes and then just run a\\nBFS turning all the lava on the outside into the air. Now you just need to check\\ncubes and count how many of their faces touch the air.\\n\\n## [Day 19: Not Enough Minerals](https://adventofcode.com/2022/day/19)\\n\\n:::info tl;dr\\n\\nFinding out the best strategy for building robots to collect geodes.\\n\\n:::\\n\\n### Solution\\n\\nNot much interesting stuff to mention apart from the suggestion to never believe\\nthat the default implementation given by `derive` macro is what you want, it\\ndoesn\'t have to be. :smile:\\n\\n## [Day 20: Grove Positioning System](https://adventofcode.com/2022/day/20)\\n\\n:::info tl;dr\\n\\nShuffling around the _circular linked list_ to find the coordinates.\\n\\n:::\\n\\nNow, small rant for this day is in place. They\'ve never mentioned that coordinates\\ncan repeat and therefore the values are non-unique. This is something that did\\nnot happen in the given sample, but was present in the user input. It took \xbba lot\xab\\nto realize that this is the issue.\\n\\n### Solution\\n\\nI have tried implementing a circular linked list for this\u2026 and I have failed\\nmiserably. To be fair, I still have no clue why. It was \u201cfun\u201d to play around with\\nthe `Rc>`. In the end I failed on _wrong answer_. I have also encountered\\na rather interesting issue with `.borrow_mut()` method being used on `Rc>`.\\n\\n#### `.borrow_mut()`\\n\\nConsider the following snippet of the code (taken from the documentation):\\n\\n```rust\\nuse std::cell::{RefCell, RefMut};\\nuse std::collections::HashMap;\\nuse std::rc::Rc;\\n// use std::borrow::BorrowMut;\\n\\nfn main() {\\n let shared_map: Rc> = Rc::new(RefCell::new(HashMap::new()));\\n // Create a new block to limit the scope of the dynamic borrow\\n {\\n let mut map: RefMut<_> = shared_map.borrow_mut();\\n map.insert(\\"africa\\", 92388);\\n map.insert(\\"kyoto\\", 11837);\\n map.insert(\\"piccadilly\\", 11826);\\n map.insert(\\"marbles\\", 38);\\n }\\n\\n // Note that if we had not let the previous borrow of the cache fall out\\n // of scope then the subsequent borrow would cause a dynamic thread panic.\\n // This is the major hazard of using `RefCell`.\\n let total: i32 = shared_map.borrow().values().sum();\\n println!(\\"{total}\\");\\n}\\n```\\n\\nWe allocate a hash map on the heap and then in the inner block, we borrow it as\\na mutable reference, so that we can use it.\\n\\n:::note\\n\\nIt is a very primitive example for `Rc>` and mutable borrow.\\n\\n:::\\n\\nIf you uncomment the 4th line with `use std::borrow::BorrowMut;`, you cannot\\ncompile the code anymore, because of\\n\\n```\\n Compiling playground v0.0.1 (/playground)\\nerror[E0308]: mismatched types\\n --\x3e src/main.rs:10:34\\n |\\n10 | let mut map: RefMut<_> = shared_map.borrow_mut();\\n | --------- ^^^^^^^^^^^^^^^^^^^^^^^ expected struct `RefMut`, found mutable reference\\n | |\\n | expected due to this\\n |\\n = note: expected struct `RefMut<\'_, _>`\\n found mutable reference `&mut Rc>>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:11:13\\n |\\n11 | map.insert(\\"africa\\", 92388);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:12:13\\n |\\n12 | map.insert(\\"kyoto\\", 11837);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:13:13\\n |\\n13 | map.insert(\\"piccadilly\\", 11826);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nerror[E0599]: no method named `insert` found for struct `RefMut<\'_, _>` in the current scope\\n --\x3e src/main.rs:14:13\\n |\\n14 | map.insert(\\"marbles\\", 38);\\n | ^^^^^^ method not found in `RefMut<\'_, _>`\\n\\nSome errors have detailed explanations: E0308, E0599.\\nFor more information about an error, try `rustc --explain E0308`.\\nerror: could not compile `playground` due to 5 previous errors\\n```\\n\\nIt might seem **a bit** ridiculous. However, I got to a point where the compiler\\nsuggested `use std::borrow::BorrowMut;` and it resulted in breaking parts of the\\ncode that worked previously. I think it may be a good idea to go over what is\\nhappening here.\\n\\n##### `.borrow_mut()` on `Rc>`\\n\\nLet\'s consider a variable `x` of type `Rc>`. What happens when you\\ncall `.borrow_mut()` on it? We can look at the `Rc` type, and\u2026 hang on! There is\\nneither `.borrow_mut()` method or `BorrowMut` trait implemented. How can we do it\\nthen?\\n\\nLet\'s go further and we can see that `RefCell` implements a `.borrow_mut()`\\nmethod. OK, but how can we call it on the `Rc`? Easily! `Rc` implements\\n`Deref` and therefore you can call methods on `Rc` objects as if they were\\n`T` objects. If we read on _`Deref` coercion_, we can see the following:\\n\\n> If `T` implements `Deref`, \u2026:\\n>\\n> - \u2026\\n> - `T` implicitly implements all the (immutable) methods of the type `U`.\\n\\nWhat is the requirement for the `.borrow_mut()` on `RefCell`? Well, it needs\\n`&self`, so the `Deref` implements the `.borrow_mut()` for the `Rc>`.\\n\\n##### `BorrowMut` trait\\n\\nI have not been able to find a lot on this trait. My guess is that it provides a\\nmethod instead of a syntactic sugar (`&mut x`) for the mutable borrow. And also\\nit provides default implementations for the types:\\n\\n```rust\\nimpl BorrowMut for String\\n\\nimpl BorrowMut for &mut T\\nwhere\\n T: ?Sized,\\n\\nimpl BorrowMut for T\\nwhere\\n T: ?Sized,\\n\\nimpl BorrowMut<[T]> for Vec\\nwhere\\n A: Allocator,\\n\\nimpl BorrowMut for Box\\nwhere\\n A: Allocator,\\n T: ?Sized,\\n\\nimpl BorrowMut<[T]> for [T; N]\\n```\\n\\n##### Conflict\\n\\nNow the question is why did it break the code\u2026 My first take was that the type\\n`Rc>` has some _specialized_ implementation of the `.borrow_mut()` and\\nthe `use` overrides it with the default, which is true **in a sense**. However\\nthere is no _specialized_ implementation. Let\'s have a look at the trait and the\\ntype signature on the `RefCell`:\\n\\n```rust\\n// trait\\npub trait BorrowMut: Borrow\\nwhere\\n Borrowed: ?Sized,\\n{\\n fn borrow_mut(&mut self) -> &mut Borrowed;\\n}\\n\\n// \u2039RefCell.borrow_mut()\u203a type signature\\npub fn borrow_mut(&self) -> RefMut<\'_, T>\\n```\\n\\nI think that we can definitely agree on the fact that `RefMut<\'_, T>` is not the\\n`RefCell`.\\n\\n**In my opinion**, `RefCell` implements a **separate** `.borrow_mut()` rather\\nthan implementing the interface, because it **cannot** satisfy the type requirements\\nof the trait.\\n\\n:::caution\\n\\nI wonder how are we expected to deal with this conflict, if and when, we need\\nboth the `.borrow_mut()` of the trait and `.borrow_mut()` of the `RefCell`.\\n\\n:::\\n\\n:::tip Fun fact\\n\\nI was suggested by the compiler to do `use std::borrow::BorrowMut;` and break the\\ncode.\\n\\nSo much for the _almighty_ and _helpful_ compiler\u2026\\n\\n:::\\n\\n## [Day 21: Monkey Math](https://adventofcode.com/2022/day/21)\\n\\n:::info tl;dr\\n\\nComputing an expression tree and then also finding ideal value for a node.\\n\\n:::\\n\\n### Solution\\n\\nRelatively simple, until you get to the 2nd part where you start to practice\\na lot of the copy-paste. I have managed to sneak some perverted stuff in there\\nthough :) Let\'s go through the details.\\n\\n#### `Default` trait\\n\\nFor the first time and twice I had a need to have a default value for my types,\\nenumerations in this case. Rust offers a very nice trait[^1] that is described\\nas:\\n\\n> A trait for giving a type a useful default value.\\n\\nI guess it sums it up nicely. The more interesting part about this is the fact\\nthat you can use the _macro machinery_ to save yourself some typing. If you have\\nenumeration of which the default value doesn\'t bear any parameter, you can just\\ndo[^2]:\\n\\n```rust\\n#[derive(Default)]\\nenum Color {\\n #[default]\\n White,\\n Gray,\\n Black,\\n}\\n```\\n\\n#### Abusing negation\\n\\nIf you want to use a _unary minus_ operator on your own type, you can implement\\na `Neg` trait[^3]. I was dealing with a binary tree and needed a way how to look\\nat the other side, so I have just implemented the negation for flipping between\\nleft and right :smile:\\n\\n[^1]: [`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) docs\\n[^2]: Pardon my example from the graph algorithms ;)\\n[^3]: [`Neg`](https://doc.rust-lang.org/std/ops/trait.Neg.html) docs\\n\\n[_advent of code_]: https://adventofcode.com\\n[`itertools`]: https://crates.io/crates/itertools\\n[this reddit post and the comment]: https://www.reddit.com/r/adventofcode/comments/zb98pn/comment/iyq0ono"},{"id":"leetcode/sort-diagonally","metadata":{"permalink":"/blog/leetcode/sort-diagonally","editUrl":"https://github.com/mfocko/blog/tree/main/blog/leetcode/sort-matrix-diagonally.md","source":"@site/blog/leetcode/sort-matrix-diagonally.md","title":"Sort the matrix diagonally","description":"Compiler assisted development.","date":"2023-03-04T23:15:00.000Z","formattedDate":"March 4, 2023","tags":[{"label":"cpp","permalink":"/blog/tags/cpp"},{"label":"leetcode","permalink":"/blog/tags/leetcode"},{"label":"iterators","permalink":"/blog/tags/iterators"}],"readingTime":16.99,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Sort the matrix diagonally","description":"Compiler assisted development.","date":"2023-03-04T23:15","slug":"leetcode/sort-diagonally","authors":"mf","tags":["cpp","leetcode","iterators"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"3rd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/3rd-week"},"nextItem":{"title":"2nd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/2nd-week"}},"content":"Let\'s try to solve one of the LeetCode challenges in easy and hard mode at the\\nsame time.\\n\\n\x3c!--truncate--\x3e\\n\\n- Link to the problem: https://leetcode.com/problems/sort-the-matrix-diagonally/\\n\\n## Problem description\\n\\nA **matrix diagonal** is a diagonal line of cells starting from some cell in\\neither the topmost row or leftmost column and going in the bottom-right direction\\nuntil reaching the matrix\'s end. For example, the **matrix diagonal** starting\\nfrom `mat[2][0]`, where `mat` is a `6 x 3` matrix, includes cells `mat[2][0]`,\\n`mat[3][1]`, and `mat[4][2]`.\\n\\nGiven an `m x n` matrix `mat` of integers, sort each matrix diagonal in ascending\\norder and return the resulting matrix.\\n\\n### Example\\n\\n![Image describing the problem](https://assets.leetcode.com/uploads/2020/01/21/1482_example_1_2.png)\\n\\n## Skeleton and initial adjustments\\n\\nWe are given the following skeleton for the C++ and the given challenge:\\n\\n```cpp\\nclass Solution {\\npublic:\\n vector> diagonalSort(vector>& mat) {\\n\\n }\\n};\\n```\\n\\nThe task is to sort the passed matrix diagonally and then return it. First of all,\\nI don\'t like to solve this in a web browser, so we\'ll need to adjust it accordingly\\nfor running it locally. We\'ll start by including the `vector` header and using\\nfully-qualified namespaces[^1] and also adding few tests:\\n\\n```cpp\\n#include \\n#include \\n\\nusing matrix = std::vector>;\\n\\nclass Solution {\\npublic:\\n matrix diagonalSort(matrix& mat)\\n {\\n }\\n};\\n\\nstatic void test_case_1()\\n{\\n // Input: mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]]\\n // Output: [[1,1,1,1],[1,2,2,2],[1,2,3,3]]\\n\\n Solution s;\\n assert((s.diagonalSort(std::vector { std::vector { 3, 3, 1, 1 },\\n std::vector { 2, 2, 1, 2 },\\n std::vector { 1, 1, 1, 2 } })\\n == std::vector { std::vector { 1, 1, 1, 1 },\\n std::vector { 1, 2, 2, 2 },\\n std::vector { 1, 2, 3, 3 } }));\\n}\\n\\nstatic void test_case_2()\\n{\\n // Input: mat =\\n // [[11,25,66,1,69,7],[23,55,17,45,15,52],[75,31,36,44,58,8],[22,27,33,25,68,4],[84,28,14,11,5,50]]\\n // Output:\\n // [[5,17,4,1,52,7],[11,11,25,45,8,69],[14,23,25,44,58,15],[22,27,31,36,50,66],[84,28,75,33,55,68]]\\n\\n Solution s;\\n assert((s.diagonalSort(std::vector { std::vector { 11, 25, 66, 1, 69, 7 },\\n std::vector { 23, 55, 17, 45, 15, 52 },\\n std::vector { 75, 31, 36, 44, 58, 8 },\\n std::vector { 22, 27, 33, 25, 68, 4 },\\n std::vector { 84, 28, 14, 11, 5, 50 } })\\n == std::vector { std::vector { 5, 17, 4, 1, 52, 7 },\\n std::vector { 11, 11, 25, 45, 8, 69 },\\n std::vector { 14, 23, 25, 44, 58, 15 },\\n std::vector { 22, 27, 31, 36, 50, 66 },\\n std::vector { 84, 28, 75, 33, 55, 68 } }));\\n}\\n\\nint main()\\n{\\n test_case_1();\\n test_case_2();\\n\\n return 0;\\n}\\n```\\n\\nWe need to return the matrix, but we\'re given a reference to the input matrix. We\\ncan easily abuse the C++ here and just switch the reference to value, this way\\nthe matrix will be copied when passed to the function, we can sort the copy and\\njust return it back. And we also get yelled by the compiler for the fact that the\\nmethod doesn\'t return anything yet, so to make it \u201cshut up\u201d we will just return\\nthe input for now:\\n\\n```diff\\n- matrix diagonalSort(matrix& mat)\\n+ matrix diagonalSort(matrix mat)\\n {\\n+ return mat;\\n }\\n```\\n\\nNow, we get the copy and we\'re good to go.\\n\\n## Na\xefve solution\\n\\nAs you may know, C++ offers a plethora of functions that can be used to your\\nadvantage, given that you know how to \u201cbend\u201d the data structures accordingly.\\n\\nWhat does that mean for us? Well, we have an `std::sort`, we can use it, right?\\nLet\'s have a look at it:\\n\\n```cpp\\ntemplate< class RandomIt >\\nvoid sort( RandomIt first, RandomIt last );\\n```\\n\\nThis overload is more than we need. What does it do? It just sorts the elements\\nin the range `[first, last)` using `operator<` on them. We can\'t sort the whole\\nmatrix using this, but\u2026 we can sort just \xbbone\xab diagonal without doing much work\\non our end.\\n\\nWhat is the `RandomIt` type though? If we look more into the documentation, we\\ncan easily find the requirements for it and also learn that it\'s a _random access_\\n_iterator_ and allows swapping its values at the same time.\\n\\n:::tip Random access iterator\\n\\nWhat is the _random access iterator_ though? We can find it in a documentation\\nand see the following description:\\n\\n> A **LegacyRandomAccessIterator** is a [LegacyBidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator)\\n> that can be moved to point to any element in constant time.\\n\\nAfter that we can see all the requirements for it being listed. I don\'t feel like\\nreading them right now, so we will just use it and see where the compilation blows\\nup, i.e. \u201c_compiler-assisted development_\u201d[^2] if you will ;)\\n\\n:::\\n\\nNow we know that we can use `std::sort` to sort the diagonal itself, but we also\\nneed to get the diagonals somehow. I\'m rather lazy, so I\'ll just delegate it to\\nsomeone else[^3]. And that way we get\\n\\n```cpp\\nmatrix diagonalSort(matrix mat)\\n{\\n // we iterate over the diagonals\\n for (auto d : diagonals(mat)) {\\n // and we sort each diagonal\\n std::sort(d.begin(), d.end());\\n }\\n\\n // we take the matrix by copy, so we can sort in-situ and return the copy\\n // that we sorted\\n return mat;\\n}\\n```\\n\\nThis solution looks very simple, doesn\'t it? Well, cause it is.\\nLet\'s try compiling it:\\n\\n```\\nmatrix-sort.cpp:11:23: error: use of undeclared identifier \'diagonals\' [clang-diagnostic-error]\\n for (auto d : diagonals(mat)) {\\n ^\\nFound compiler error(s).\\nmake: *** [makefile:14: tidy] Error 1\\n```\\n\\nOK, seems about right. We haven\'t implemented the `diagonals` yet. And based on\\nwhat we\'ve written so far, we need a function or a class `diagonals` that will\\ngive us the diagonals we need.\\n\\n## Implementing the `diagonals`\\n\\nCool, so we need the function that will let us go through each and every diagonal\\nin our matrix. We use the _for-range_ loop, so whatever we get back from the\\n`diagonals` must support `.begin()` and `.end()`. Since I am a masochist, we will\\ndo such functionality for a matrix of any type, not just the `int` from the challenge.\\n\\nAs I said, we need to be able to\\n\\n- construct the object\\n- get the beginning\\n- get the end (the \u201csentinel\u201d)\\n\\n```cpp\\ntemplate \\nclass diagonals {\\n using matrix_t = std::vector>;\\n\\n matrix_t& _matrix;\\n\\npublic:\\n diagonals(matrix_t& m)\\n : _matrix(m)\\n {\\n }\\n diagonals_iter begin()\\n {\\n /* TODO */\\n }\\n diagonals_iter end()\\n {\\n /* TODO */\\n }\\n};\\n```\\n\\nNow we have a `diagonals` that we can use to go through the diagonals. We haven\'t\\nimplemented the core of it yet. Let\'s go through what we have for now.\\n\\nWe have a templated class with templated `T` that is used as a placeholder for any\\ntype we would store in the matrix. Because I\'m lazy, I have defined the `matrix_t`\\ntype that is a \u201cshortcut\u201d for `std::vector>`, so I don\'t have to\\ntype it out all the time. Of course, we need to store the matrix, we are given,\\nas a private attribute. And then just have the constructor and the 2 methods we\\nneed for the _for-range_.\\n\\n### Iterating over diagonals\\n\\nNow that we have an object that will allow us to iterate through the diagonals,\\nwe need to implement the iterating itself. We need to go through all of them, so\\nwe have multiple options how to do so. I have decided to start from the \u201cmain\u201d\\ndiagonal that starts at `(0, 0)` index and then proceed with the diagonals starting\\nin the first row, followed by the rest of the diagonals in the first column.\\n\\nWe need to be able to tell that we\'ve iterated through all of them, and also we\\nneed to know which diagonal is next. For that purpose we will pass the indices\\nof the first cell on the diagonal. That way we can always tell how to move forward.\\n\\nWe will start by updating the `begin` and `end` to reflect our choice accordingly.\\n\\n```cpp\\ndiagonals_iter begin() { return diagonals_iter { _matrix, 0, 0 }; }\\ndiagonals_iter end() { return diagonals_iter { _matrix, 0, _matrix.size() }; }\\n```\\n\\nFor the `begin` we return the first diagonal that starts at `(0, 0)`. And because\\nwe have decided to do the diagonals in the first column at the end, the first\\ndiagonal that is not a valid one is the one at `(0, height)`. Apart from the\\nindices, we also need to pass reference to the matrix itself.\\n\\n:::note\\n\\nYou may have noticed that we also include the diagonals that have length 1,\\nspecifically the ones at `(0, height - 1)` and `(width - 1, 0)`. We are implementing\\nan iterator that **should not** care about the way it\'s being used. Therefore, we\\ndon\'t care about the fact they don\'t need to be sorted.\\n\\n:::\\n\\nCool, let\'s leave the iterator itself to someone else, right?[^4]\\n\\n### Implementing the iterator over diagonals\\n\\nWe can start with a simple skeleton based on the information that we pass from\\nthe `diagonals`. Also to utilize the `matrix_t` and also contain implementation\\ndetails hidden away, we will put this code into the `diagonals` class.\\n\\n```cpp\\nclass diagonals_iter {\\n matrix_t& m;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonals_iter(matrix_t& matrix, std::size_t x, std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n};\\n```\\n\\nIn this case we will be implementing a \u201csimple\u201d forward iterator, so we don\'t\\nneed to implement a lot. Notably it will be:\\n\\n- inequality operator (we need to know when we reach the end and have nothing to\\n iterate over)\\n- preincrementation operator (we need to be able to move around the iterable)\\n- dereference operator (we need to be able to retrieve the objects we iterate\\n over)\\n\\n```cpp\\nclass diagonals_iter {\\n matrix_t& m;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonals_iter(matrix_t& matrix, std::size_t x, std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator!=(const diagonals_iter& rhs) const\\n {\\n // iterators are not equal if they reference different matrices, or\\n // their positions differ\\n return m != rhs.m || x != rhs.x || y != rhs.y;\\n }\\n\\n diagonals_iter& operator++()\\n {\\n if (y != 0) {\\n // iterating through diagonals down the first column\\n y++;\\n return *this;\\n }\\n\\n // iterating the diagonals along the first row\\n x++;\\n if (x == m.front().size()) {\\n // switching to diagonals in the first column\\n x = 0;\\n y++;\\n }\\n\\n return *this;\\n }\\n\\n diagonal operator*() const { return diagonal { m, x, y }; }\\n};\\n```\\n\\nLet\'s go one-by-one. Inequality operator is rather simple, just compare iterator\'s\\nattributes field-by-field. If you think about it, checking inequality of two 2D\\nvectors may be a bit inefficient, therefore, we can swap around and check it as\\na last thing.\\n\\n```diff\\n- return m != rhs.m || x != rhs.x || y != rhs.y;\\n+ return x != rhs.x || y != rhs.y || m != rhs.m;\\n```\\n\\nPreincrementation is where the magic happens. If you have a better look, you can\\nsee two branches of this operation:\\n\\n1. When `y != 0` (we\'re iterating over the diagonals in the first column)\\n In this case, we just bump the row and we\'re done.\\n2. When `y == 0` (we\'re iterating over the diagonals in the first row)\\n In this case, we bump the column and check if we haven\'t gotten out of bounds,\\n i.e. the end of the first row. If we get out of the bounds, we\'re continuing\\n with the second diagonal in the first column.\\n\\nDereferencing the iterator must \u201cyield\u201d something. In our case it will be the\\ndiagonal that we want to sort. For sorting we need just the iterators that can\\nmove around said diagonal. The simplest thing, we can do, is to delegate it to\\nsomething else. In our case it will be a class called `diagonal`.\\n\\n## Implementing the `diagonal` itself\\n\\nAfter implementing the iterator over diagonals, we know that all we need to describe\\na diagonal is the matrix itself and the \u201cstart\u201d of the diagonal (row and column).\\nAnd we also know that the diagonal must provide some iterators for the `std::sort`\\nfunction. We can start with the following skeleton:\\n\\n```cpp\\ntemplate \\nclass diagonal {\\n using matrix_t = std::vector>;\\n\\n matrix_t& matrix;\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n diagonal(matrix_t& matrix, std::size_t x, std::size_t y)\\n : matrix(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n diagonal_iter begin() const { return diagonal_iter { matrix, x, y }; }\\n\\n diagonal_iter end() const\\n {\\n auto max_x = matrix[y].size();\\n auto max_y = matrix.size();\\n\\n // we need to find the distance in which we get out of bounds (either in\\n // column or row)\\n auto steps = std::min(max_x - x, max_y - y);\\n\\n return diagonal_iter { matrix, x + steps, y + steps };\\n }\\n};\\n```\\n\\nInitialization is rather simple, we just \u201ckeep\u201d the stuff we get, `begin` is the\\nsimplest, we just delegate.\\n\\nIn case of the `end`, it gets more complicated. We need to know where is the \u201cend\u201d\\nof the diagonal. Since `end` should point to the first element \u201cafter\u201d the iterable,\\nwe know that it\'s the first position of the iterator where either `y` becomes\\n`matrix.size()` or `x` becomes `matrix[y].size()`. Also we are moving along diagonal,\\nduh, therefore we can deduce the first \u201cposition\u201d afterwards by minimal amount of\\nsteps to get out of the any column or row, hence `std::min(max_x - x, max_y - y)`.\\nFinal position is then computed simply by adding the steps to the beginning of\\nthe diagonal.\\n\\nNow we just need to finish the iterator for the diagonal itself and we\'re done.\\n\\n### Implementing `diagonal_iter`\\n\\nThis part is the hardest from all we need to do. It\'s because of the requirements\\nof the `std::sort` that requires us to implement a _random access iterator_. I have\\nbriefly described it above, and \u201cin a nutshell\u201d it means that we need to implement\\nan iterator that can move in constant time along the diagonal in any amount of\\nsteps.\\n\\nLet\'s go through all of the functionality that our iterator needs to support to\\nbe used in `std::sort`. We need the usual operations like:\\n\\n- equality/inequality\\n- incrementation\\n- dereferencing\\n\\nWe will also add all the types that our iterator uses with the category of the\\niterator, i.e. what interface it supports:\\n\\n```cpp\\nclass diagonal_iter {\\n // we need to keep reference to the matrix itself\\n matrix_t& m;\\n\\n // we need to be able to tell our current position\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n using difference_type = std::ptrdiff_t;\\n using value_type = T;\\n using pointer = T*;\\n using reference = T&;\\n using iterator_category = std::random_access_iterator_tag;\\n\\n diagonal_iter(matrix_t& matrix,\\n std::size_t x,\\n std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator==(const diagonal_iter& rhs) const\\n {\\n return x == rhs.x && y == rhs.y && m == rhs.m;\\n }\\n\\n diagonal_iter& operator++()\\n {\\n // we are moving along the diagonal, so we increment both \u2039x\u203a and \u2039y\u203a at\\n // the same time\\n x++;\\n y++;\\n return *this;\\n }\\n\\n reference operator*() const { return m[y][x]; }\\n};\\n```\\n\\nThis is pretty similar to the previous iterator, but now we need to implement the\\nremaining requirements of the _random access iterator_. Let\'s see what those are:\\n\\n- decrementation - cause we need to be able to move backwards too, since _random _\\n _access iterator_ extends the interface of _bidirectional iterator_\\n- moving the iterator in either direction by steps given as an integer\\n- being able to tell the distance between two iterators\\n- define an ordering on the iterators\\n\\nLet\'s fill them in:\\n\\n```cpp\\nclass diagonal_iter {\\n // we need to keep reference to the matrix itself\\n matrix_t& m;\\n\\n // we need to be able to tell our current position\\n std::size_t x;\\n std::size_t y;\\n\\npublic:\\n using difference_type = std::ptrdiff_t;\\n using value_type = T;\\n using pointer = T*;\\n using reference = T&;\\n using iterator_category = std::random_access_iterator_tag;\\n\\n diagonal_iter(matrix_t& matrix,\\n std::size_t x,\\n std::size_t y)\\n : m(matrix)\\n , x(x)\\n , y(y)\\n {\\n }\\n\\n bool operator==(const diagonal_iter& rhs) const\\n {\\n return x == rhs.x && y == rhs.y && m == rhs.m;\\n }\\n\\n diagonal_iter& operator++()\\n {\\n // we are moving along the diagonal, so we increment both \u2039x\u203a and \u2039y\u203a at\\n // the same time\\n x++;\\n y++;\\n return *this;\\n }\\n\\n reference operator*() const { return m[y][x]; }\\n\\n // exactly opposite to the incrementation\\n diagonal_iter operator--()\\n {\\n x--;\\n y--;\\n return *this;\\n }\\n\\n // moving \u2039n\u203a steps back is same as calling decrementation \u2039n\u203a-times, so we\\n // can just return a new iterator and subtract \u2039n\u203a from both coordinates in\\n // the matrix\\n diagonal_iter operator-(difference_type n) const\\n {\\n return diagonal_iter { m, x - n, y - n };\\n }\\n\\n // here we assume that we are given two iterators on the same diagonal\\n difference_type operator-(const diagonal_iter& rhs) const\\n {\\n assert(m == rhs.m);\\n return x - rhs.x;\\n }\\n\\n // counterpart of moving \u2039n\u203a steps backwards\\n diagonal_iter operator+(difference_type n) const\\n {\\n return diagonal_iter { m, x + n, y + n };\\n }\\n\\n // we compare the coordinates, and also assume that those 2 iterators are\\n // lying on the same diagonal\\n bool operator<(const diagonal_iter& rhs) const\\n {\\n assert(m == rhs.m);\\n return x < rhs.x && y < rhs.y;\\n }\\n};\\n```\\n\\nAt this point we could probably try and compile it, right? If we do so, we will\\nget yelled at by a compiler for the following reasons:\\n\\n```\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1792:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n __last = __next;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1817:11: note: in instantiation of function template specialization \'std::__unguarded_linear_insert::diagonal_iter, __gnu_cxx::__ops::_Val_less_iter>\' requested here\\n std::__unguarded_linear_insert(__i,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1849:9: note: in instantiation of function template specialization \'std::__insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__insertion_sort(__first, __first + int(_S_threshold), __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1940:9: note: in instantiation of function template specialization \'std::__final_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__final_insertion_sort(__first, __last, __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1830:2: error: no matching function for call to \'__unguarded_linear_insert\' [clang-diagnostic-error]\\n std::__unguarded_linear_insert(__i,\\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1850:9: note: in instantiation of function template specialization \'std::__unguarded_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1940:9: note: in instantiation of function template specialization \'std::__final_insertion_sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__final_insertion_sort(__first, __last, __comp);\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1782:5: note: candidate template ignored: substitution failure [with _RandomAccessIterator = diagonal::diagonal_iter, _Compare = __gnu_cxx::__ops::_Val_less_iter]\\n __unguarded_linear_insert(_RandomAccessIterator __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1923:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n __last = __cut;\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1937:9: note: in instantiation of function template specialization \'std::__introsort_loop::diagonal_iter, long, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__introsort_loop(__first, __last,\\n ^\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization \'std::__sort::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>\' requested here\\n std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());\\n ^\\nmatrix-sort.cpp:161:18: note: in instantiation of function template specialization \'std::sort::diagonal_iter>\' requested here\\n std::sort(d.begin(), d.end());\\n ^\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n```\\n\\nThat\'s a lot of noise, isn\'t it? Let\'s focus on the important parts:\\n\\n```\\n/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1792:11: error: object of type \'diagonal::diagonal_iter\' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]\\n\u2026\\nmatrix-sort.cpp:17:19: note: copy assignment operator of \'diagonal_iter\' is implicitly deleted because field \'m\' is of reference type \'diagonal::matrix_t &\' (aka \'vector> &\')\\n matrix_t& m;\\n ^\\n```\\n\\nAh! We have a reference in our iterator, and this prevents us from having a copy\\nassignment operator (that is used \u201csomewhere\u201d in the sorting algorithm). Well\u2026\\nLet\'s just wrap it!\\n\\n```diff\\n# we need to keep a different type than reference\\n- matrix_t& m;\\n+ std::reference_wrapper m;\\n\\n# in comparison we need to get the reference out of the wrapper first\\n- return x == rhs.x && y == rhs.y && m == rhs.m;\\n+ return x == rhs.x && y == rhs.y && m.get() == rhs.m.get();\\n\\n# same when we return a reference to the \u201ccell\u201d in the matrix\\n- reference operator*() const { return m[y][x]; }\\n+ reference operator*() const { return m.get()[y][x]; }\\n\\n# and finally in the assertions that we set for the \u201cdistance\u201d and \u201cless than\u201d\\n- assert(m == rhs.m);\\n+ assert(m.get() == rhs.m.get());\\n```\\n\\nWe\'re done now! We have written an iterator over diagonals for a 2D `vector`. You can have a look at the final result [here](pathname:///files/blog/leetcode/sort-matrix-diagonally/matrix-sort.cpp).\\n\\n[^1]: just because I\'m used to it and don\'t care about your opinion ;)\\n[^2]: exercise at your own risk\\n[^3]: me in 5 minutes in fact, but don\'t make me scared\\n[^4]: me in the next section\u2026"},{"id":"aoc-2022/2nd-week","metadata":{"permalink":"/blog/aoc-2022/2nd-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/02-week-2.md","source":"@site/blog/aoc-2022/02-week-2.md","title":"2nd week of Advent of Code \'22 in Rust","description":"Surviving second week in Rust.","date":"2022-12-25T23:15:00.000Z","formattedDate":"December 25, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":20.875,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"2nd week of Advent of Code \'22 in Rust","description":"Surviving second week in Rust.","date":"2022-12-25T23:15","slug":"aoc-2022/2nd-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Sort the matrix diagonally","permalink":"/blog/leetcode/sort-diagonally"},"nextItem":{"title":"1st week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/1st-week"}},"content":"Let\'s go through the second week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n## [Day 8: Treetop Tree House](https://adventofcode.com/2022/day/8)\\n\\n:::info tl;dr\\n\\nWe get a forest and we want to know how many trees are visible from the outside.\\nApart from that we want to find the best view.\\n\\n:::\\n\\nNothing interesting. We are moving around 2D map though. And indexing can get a\\nbit painful when doing so, let\'s refactor it a bit ;) During the preparation for\\nthe AoC, I have written `Vector2D` and now it\'s time to extend it with indexing\\nof `Vec` of `Vec`s. In my solution I was manipulating with indices in the following\\nway:\\n\\n- swapping them\\n- checking whether they are correct indices for the `Vec>`\\n- indexing `Vec>` with them\\n\\n:::caution\\n\\nI\'m getting familiar with Rust and starting to \u201cabuse\u201d it\u2026 While doing so, I\'m\\nalso uncovering some \u201cfeatures\u201d that I don\'t really like. Therefore I will mark\\nall of my rants with _thicc_ **\xab\u21af\xbb** mark and will try to \u201clock\u201d them into their\\nown \u201cbox of hell\u201d.\\n\\n:::\\n\\n#### Swapping indices\\n\\nRelatively simple implementation, just take the values, swap them and return new\\nvector.\\n\\n```rust\\nimpl Vector2D {\\n pub fn swap(&self) -> Self {\\n Self {\\n x: self.y,\\n y: self.x,\\n }\\n }\\n}\\n```\\n\\nPretty straight-forward implementation, but let\'s talk about the `T: Copy`. We\\nneed to use it, since we are returning a **new** vector, with swapped **values**.\\nIf we had values that cannot be copied, the only thing we could do, would be a\\nvector of references (and it would also introduce a lifetime, to which we\'ll get\\nlater on). This is pretty similar with the operations on sets from the first week.\\n\\n#### Indexing `Vec`\\n\\nI will start with the indexing, cause bound-checking is a bit more\u2026 complicated\\nthan I would like to.\\n\\n```rust\\npub fn index<\'a, T, U>(v: &\'a [Vec], idx: &Vector2D) -> &\'a U\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &v[y][x]\\n}\\n```\\n\\nLet\'s talk about this mess\u2026 Body of the function is probably the most easy part\\nand should not be hard to understand, we just take the `x` and `y` and convert\\nthem both to `usize` type that can be used later on for indexing.\\n\\nThe type signature of the function is where the fun is at :wink: We are trying\\nto convert unknown type to `usize`, so we must bound the `T` as a type that can\\nbe converted to `usize`, that\'s how we got `usize: TryFrom` which basically\\nsays that `usize` must implement `TryFrom` trait and therefore allows us to\\nconvert the indices to actual `usize` indices. Using `.unwrap()` also forces us\\nto bound the error that can occur when converting `T` into `usize`, that\'s how\\nwe get `>::Error: Debug` which loosely means\\n\\n> error during conversion of `T` into `usize` must implement `Debug`,\\n> i.e. can be printed in some way or other\\n\\n`T: Copy` is required by `.try_into()` which takes `T` by-value.\\n\\nAnd now we are left only with the first line of the definition.\\n\\n:::note\\n\\nSkilled Rustaceans might notice that this implementation is rather flaky and can\\nbreak in multiple places at once. I\'ll get back to it\u2026\\n\\n:::\\n\\nLet\'s split it in multiple parts:\\n\\n- `v: &\'a [Vec]` represents the 2D `Vec`, we are indexing, `Vec` implements\\n `Slice` trait and _clippy_ recommends using `&[T]` to `&Vec`, exact details\\n are unknown to me\\n- `idx: &Vector2D` represents the _indices_ which we use, we take them by\\n reference to avoid an unnecessary copy\\n- `-> &\'a U` means that we are returning a _reference_ to some value of type `U`.\\n Now the question is what does the `\'a` mean, we can also see it as a generic\\n type declared along `T` and `U`. And the answer is _relatively_ simple, `\'a`\\n represents a _lifetime_. We take the `v` by a reference and return a reference,\\n borrow checker validates all of the _borrows_ (or references), so we need to\\n specify that our returned value has _the same lifetime_ as the vector we have\\n taken by a reference, i.e. returned reference must live at least as long as the\\n `v`. This way we can \u201cbe sure\u201d that the returned reference is valid.\\n\\n##### Issues\\n\\nFirst issue that our implementation has is the fact that we cannot get a mutable\\nreference out of that function. This could be easily resolved by introducing new\\nfunction, e.g. `index_mut`. Which I have actually done while writing this part:\\n\\n```rust\\npub fn index_mut<\'a, T, U>(v: &\'a mut [Vec], idx: &Vector2D) -> &\'a mut U\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &mut v[y][x]\\n}\\n```\\n\\n:::caution **\xab\u21af\xbb** Why can\'t we use one function?\\n\\nWhen we consider a `Vec`, we don\'t need to consider containers as `T`, Rust\\nimplements indexing as traits `Index` and `IndexMut` that do the dirty work\\nbehind syntactic sugar of `container[idx]`.\\n\\nHowever, implementing of traits is not allowed for _external_ types, i.e. types\\nthat you haven\'t defined yourself. This means that you can implement indexing\\nover containers that you have implemented yourself, but you cannot use your own\\ntypes for indexing \u201cbuilt-in\u201d types.\\n\\nAnother part of this rabbit hole is trait `SliceIndex` that is of a relevance\\nbecause of\\n\\n```rust\\nimpl Index for [T]\\nwhere\\n I: SliceIndex<[T]>\\n\\nimpl Index for Vec\\nwhere\\n I: SliceIndex<[T]>,\\n A: Allocator\\n\\nimpl Index for [T; N]\\nwhere\\n [T]: Index\\n```\\n\\nIn other words, if your type implements `SliceIndex` trait, it can be used\\nfor indexing. As of now, this trait has all of its required methods experimental\\nand is marked as `unsafe`.\\n\\n:::\\n\\nAnother problem is a requirement for indexing either `[Vec]` or `Vec>`.\\nThis requirement could be countered by removing inner type `Vec` and constraining\\nit by a trait `Index` (or `IndexMut` respectively) in a following way\\n\\n```rust\\npub fn index<\'a, C, T>(v: &\'a [C], idx: &Vector2D) -> &\'a C::Output\\nwhere\\n usize: TryFrom,\\n >::Error: Debug,\\n T: Copy,\\n C: Index\\n{\\n let (x, y): (usize, usize) = (idx.x.try_into().unwrap(), idx.y.try_into().unwrap());\\n &v[y][x]\\n}\\n```\\n\\nGiven this, we can also give a more meaningful typename for indexing type, such\\nas `I`.\\n\\n#### Checking bounds\\n\\nNow we can get to the boundary checks, it is very similar, but a more\u2026 dirty.\\nFirst approach that came up was to convert the indices in `Vector2D` to `usize`,\\nbut when you add the indices up, e.g. when checking the neighbors, you can end\\nup with negative values which, unlike in C++, causes an error (instead of underflow\\nthat you can use to your advantage; you can easily guess how).\\n\\nSo how can we approach this then? Well\u2026 we will convert the bounds instead of\\nthe indices and that lead us to:\\n\\n```rust\\npub fn in_range(v: &[Vec], idx: &Vector2D) -> bool\\nwhere\\n usize: TryInto,\\n >::Error: Debug,\\n T: PartialOrd + Copy,\\n{\\n idx.y >= 0.try_into().unwrap()\\n && idx.y < v.len().try_into().unwrap()\\n && idx.x >= 0.try_into().unwrap()\\n && idx.x\\n < v[TryInto::::try_into(idx.y).unwrap()]\\n .len()\\n .try_into()\\n .unwrap()\\n}\\n```\\n\\nYou can tell that it\'s definitely a shitty code. Let\'s improve it now! We will\\nget back to the original idea, but do it better. We know that we cannot convert\\nnegative values into `usize`, **but** we also know that conversion like that\\nreturns a `Result` which we can use to our advantage.\\n\\n```rust\\npub fn in_range(v: &[Vec], idx: &Vector2D) -> bool\\nwhere\\n T: Copy,\\n usize: TryFrom,\\n{\\n usize::try_from(idx.y)\\n .and_then(|y| usize::try_from(idx.x).map(|x| y < v.len() && x < v[y].len()))\\n .unwrap_or(false)\\n}\\n```\\n\\n`Result` is a type similar to `Either` in Haskell and it allows us to chain\\nmultiple operations on correct results or propagate the original error without\\ndoing anything. Let\'s dissect it one-by-one.\\n\\n`try_from` is a method implemented in `TryFrom` trait, that allows you to convert\\ntypes and either successfully convert them or fail (with a reasonable error). This\\nmethod returns `Result`.\\n\\nWe call `and_then` on that _result_, let\'s have a look at the type signature of\\n`and_then`, IMO it explains more than enough:\\n\\n```rust\\npub fn and_then(self, op: F) -> Result\\nwhere\\n F: FnOnce(T) -> Result\\n```\\n\\nOK\u2026 So it takes the result and a function and returns another result with\\ndifferent value and different error. However we can see that the function, which\\nrepresents an operation on a result, takes just the value, i.e. it doesn\'t care\\nabout any previous error. To make it short:\\n\\n> `and_then` allows us to run an operation, which can fail, on the correct result\\n\\nWe parsed a `y` index and now we try to convert the `x` index with `try_from`\\nagain, but on that result we use `map` rather than `and_then`, why would that be?\\n\\n```rust\\npub fn map(self, op: F) -> Result\\nwhere\\n F: FnOnce(T) -> U\\n```\\n\\nHuh\u2026 `map` performs an operation that **cannot** fail. And finally we use\\n`unwrap_or` which takes the value from result, or in case of an error returns the\\ndefault that we define.\\n\\nHow does this work then? If `y` is negative, the conversion fails and the error\\npropagates all the way to `unwrap_or`, if `y` can be a correct `usize` value, then\\nwe do the same with `x`. If `x` is negative, we propagate the error as with `y`,\\nand if it\'s not, then we check whether it exceeds the higher bounds or not.\\n\\n### Solution\\n\\nRelatively simple, you just need follow the rules and not get too smart, otherwise\\nit will get back at you.\\n\\n## [Day 9: Rope Bridge](https://adventofcode.com/2022/day/9)\\n\\n:::info tl;dr\\n\\nWe get a rope with knots and we want to track how many different positions are\\nvisited with the rope\'s tail.\\n\\n:::\\n\\nBy this day, I have come to a conclusion that current skeleton for each day\\ngenerates a lot of boilerplate. And even though it can be easily copied, it\'s\\njust a waste of space and unnecessary code. Let\'s \u201csimplify\u201d this (on one end\\nwhile creating monster on the other end). I\'ve gone through what we need in the\\npreparations for the AoC. Let\'s sum up our requirements:\\n\\n- parsing\\n- part 1 & 2\\n- running on sample / input\\n- tests\\n\\nParsing and implementation of both parts is code that changes each day and we\\ncannot do anything about it. However running and testing can be simplified!\\n\\nLet\'s introduce and export a new module `solution` that will take care of all of\\nthis. We will start by introducing a trait for each day.\\n\\n```rust\\npub trait Solution {\\n fn parse_input>(pathname: P) -> Input;\\n\\n fn part_1(input: &Input) -> Output;\\n fn part_2(input: &Input) -> Output;\\n}\\n```\\n\\nThis does a lot of work for us already, we have defined a trait and for each day\\nwe will create a structure representing a specific day. That structure will also\\nimplement the `Solution` trait.\\n\\nNow we need to get rid of the boilerplate, we can\'t get rid of the `main` function,\\nbut we can at least move out the functionality.\\n\\n```rust\\nfn run(type_of_input: &str) -> Result<()>\\nwhere\\n Self: Sized,\\n{\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = Self::parse_input(format!(\\"{}s/{}.txt\\", type_of_input, Self::day()));\\n\\n info!(\\"Part 1: {}\\", Self::part_1(&input));\\n info!(\\"Part 2: {}\\", Self::part_2(&input));\\n\\n Ok(())\\n}\\n\\nfn main() -> Result<()>\\nwhere\\n Self: Sized,\\n{\\n Self::run(\\"input\\")\\n}\\n```\\n\\nThis is all part of the `Solution` trait, which can implement methods while being\\ndependent on what is provided by the implementing types. In this case, we just\\nneed to bound the `Output` type to implement `Display` that is necessary for the\\n`info!` and format string there.\\n\\nNow we can get to first of the nasty things we are going to do\u2026 And it is the\\n`day()` method that you can see being used when constructing path to the input\\nfile. That method will generate a name of the file, e.g. `day01` and we know that\\nwe can _somehow_ deduce it from the structure name, given we name it reasonably.\\n\\n```rust\\nfn day() -> String {\\n let mut day = String::from(type_name::().split(\\"::\\").next().unwrap());\\n day.make_ascii_lowercase();\\n\\n day.to_string()\\n}\\n```\\n\\n:::caution `type_name`\\n\\nThis feature is still experimental and considered to be internal, it is not\\nadvised to use it any production code.\\n\\n:::\\n\\nAnd now we can get to the nastiest stuff :weary: We will **generate** the tests!\\n\\nWe want to be able to generate tests for sample input in a following way:\\n\\n```rust\\ntest_sample!(day_01, Day01, 42, 69);\\n```\\n\\nThere\'s not much we can do, so we will write a macro to generate the tests for us.\\n\\n```rust\\n#[macro_export]\\nmacro_rules! test_sample {\\n ($mod_name:ident, $day_struct:tt, $part_1:expr, $part_2:expr) => {\\n #[cfg(test)]\\n mod $mod_name {\\n use super::*;\\n\\n #[test]\\n fn test_part_1() {\\n let sample =\\n $day_struct::parse_input(&format!(\\"samples/{}.txt\\", $day_struct::day()));\\n assert_eq!($day_struct::part_1(&sample), $part_1);\\n }\\n\\n #[test]\\n fn test_part_2() {\\n let sample =\\n $day_struct::parse_input(&format!(\\"samples/{}.txt\\", $day_struct::day()));\\n assert_eq!($day_struct::part_2(&sample), $part_2);\\n }\\n }\\n };\\n}\\n```\\n\\nWe have used it in a similar way as macros in C/C++, one of the things that we\\ncan use to our advantage is defining \u201ctype\u201d of the parameters for the macro. All\\nparameters have their name prefixed with `$` sign and you can define various \u201cforms\u201d\\nof your macro. Let\'s go through it!\\n\\nWe have following parameters:\\n\\n- `$mod_name` which represents the name for the module with tests, it is typed\\n with `ident` which means that we want a valid identifier to be passed in.\\n- `$day_struct` represents the structure that will be used for tests, it is typed\\n with `tt` which represents a _token tree_, in our case it is a type.\\n- `$part_X` represents the expected output for the `X`th part and is of type `expr`\\n which literally means an _expression_.\\n\\nApart from that we need to use `#[macro_export]` to mark the macro as exported\\nfor usage outside of the module. Now our skeleton looks like:\\n\\n```rust\\nuse aoc_2022::*;\\n\\ntype Input = String;\\ntype Output = String;\\n\\nstruct DayXX;\\nimpl Solution for DayXX {\\n fn parse_input>(pathname: P) -> Input {\\n file_to_string(pathname)\\n }\\n\\n fn part_1(input: &Input) -> Output {\\n todo!()\\n }\\n\\n fn part_2(input: &Input) -> Output {\\n todo!()\\n }\\n}\\n\\nfn main() -> Result<()> {\\n // DayXX::run(\\"sample\\")\\n DayXX::main()\\n}\\n\\n// test_sample!(day_XX, DayXX, , );\\n```\\n\\n### Solution\\n\\nNot much to talk about, it is relatively easy to simulate.\\n\\n## [Day 10: Cathode-Ray Tube](https://adventofcode.com/2022/day/10)\\n\\n:::info tl;dr\\n\\nEmulating basic arithmetic operations on a CPU and drawing on CRT based on the\\nCPU\'s accumulator.\\n\\n:::\\n\\nIn this day I have discovered an issue with my design of the `Solution` trait.\\nAnd the issue is caused by different types of `Output` for the part 1 and part 2.\\n\\nProblem is relatively simple and consists of simulating a CPU, I have approached\\nit in a following way:\\n\\n```rust\\nfn evaluate_instructions(instructions: &[Instruction], mut out: Output) -> Output {\\n instructions\\n .iter()\\n .fold(State::new(), |state, instruction| {\\n state.execute(instruction, &mut out)\\n });\\n\\n out\\n}\\n```\\n\\nWe just take the instructions, we have some state of the CPU and we execute the\\ninstructions one-by-one. Perfect usage of the `fold` (or `reduce` as you may know\\nit from other languages).\\n\\nYou can also see that we have an `Output` type, so the question is how can we fix\\nthat problem. And the answer is very simple and _functional_. Rust allows you to\\nhave an `enumeration` that can _bear_ some other values apart from the type itself.\\n\\n:::tip\\n\\nWe could\'ve seen something like this with the `Result` type that can be\\ndefined as\\n\\n```rust\\nenum Result {\\n Ok(T),\\n Err(E)\\n}\\n```\\n\\n###### What does that mean though?\\n\\nWhen we have an `Ok` value, it has the result itself, and when we get an `Err`\\nvalue, it has the error. This also allows us to handle _results_ in a rather\\npretty way:\\n\\n```rust\\nmatch do_something(x) {\\n Ok(y) => {\\n println!(\\"SUCCESS: {}\\", y);\\n },\\n Err(y) => {\\n eprintln!(\\"ERROR: {}\\", y);\\n }\\n}\\n```\\n\\n:::\\n\\nMy solution has a following outline:\\n\\n```rust\\nfn execute(&self, i: &Instruction, output: &mut Output) -> State {\\n // execute the instruction\\n\\n // collect results if necessary\\n match output {\\n Output::Part1(x) => self.execute_part_1(y, x),\\n Output::Part2(x) => self.execute_part_2(y, x),\\n }\\n\\n // return the obtained state\\n new_state\\n}\\n```\\n\\nYou might think that it\'s a perfectly reasonable thing to do. Yes, **but** notice\\nthat the `match` statement doesn\'t _collect_ the changes in any way and also we\\npass `output` by `&mut`, so it is shared across each _iteration_ of the `fold`.\\n\\nThe dirty and ingenious thing is that `x`s are passed by `&mut` too and therefore\\nthey are directly modified by the helper functions. To sum it up and let it sit\\n\\n> We are **collecting** the result **into** an **enumeration** that is **shared**\\n> across **all** iterations of `fold`.\\n\\n### Solution\\n\\nSimilar to _Day 9_, but there are some technical details that can get you.\\n\\n## [Day 11: Monkey in the Middle](https://adventofcode.com/2022/day/11)\\n\\n:::info tl;dr\\n\\nSimulation of monkeys throwing stuff around and measuring your stress levels\\nwhile your stuff is being passed around.\\n\\n:::\\n\\nI think I decided to use regular expressions here for the first time, cause\\nparsing the input was a pain.\\n\\nAlso I didn\'t expect to implement Euclidean algorithm in Rust\u2026\\n\\n### Solution\\n\\nAgain, we\'re just running a simulation. Though I must admit it was very easy to\\nmake a small technical mistakes that could affect the final results very late.\\n\\n## [Day 12: Hill Climbing Algorithm](https://adventofcode.com/2022/day/12)\\n\\n:::info tl;dr\\n\\nFinding shortest path up the hill and also shortest path down to the ground while\\nalso rolling down the hill\u2026\\n\\n:::\\n\\nAs I have said in the _tl;dr_, we are looking for the shortest path, but the start\\nand goal differ for the part 1 and 2. So I have decided to refactor my solution\\nto a BFS algorithm that takes necessary parameters via functions:\\n\\n```rust\\nfn bfs(\\n graph: &[Vec], start: &Position, has_edge: F, is_target: G\\n) -> Option\\nwhere\\n F: Fn(&[Vec], &Position, &Position) -> bool,\\n G: Fn(&[Vec], &Position) -> bool\\n```\\n\\nWe pass the initial vertex from the caller and everything else is left to the BFS\\nalgorithm, based on the `has_edge` and `is_target` functions.\\n\\nThis was easy! And that is not very usual in Rust once you want to pass around\\nfunctions. :eyes:\\n\\n### Solution\\n\\nLooking for the shortest path\u2026 Must be Dijkstra, right? **Nope!** Half of the\\nReddit got jebaited though. In all fairness, nothing stops you from implementing\\nthe Dijkstra\'s algorithm for finding the shortest path, **but** if you know that\\nall connected vertices are in a unit (actually $d = 1$) distance from each other,\\nthen you know that running Dijkstra is equivalent to running BFS, only with worse\\ntime complexity, because of the priority heap instead of the queue.\\n\\n## [Day 13: Distress Signal](https://adventofcode.com/2022/day/13)\\n\\n:::info tl;dr\\n\\nProcessing packets with structured data from the distress signal.\\n\\n:::\\n\\nYou can implement a lot of traits if you want to. It is _imperative_ to implement\\nordering on the packets. I had a typo, so I also proceeded to implement a `Display`\\ntrait for debugging purposes:\\n\\n```rust\\nimpl Display for Packet {\\n fn fmt(&self, f: &mut std::fmt::Formatter<\'_>) -> std::fmt::Result {\\n match self {\\n Packet::Integer(x) => write!(f, \\"{x}\\"),\\n Packet::List(lst) => write!(f, \\"[{}]\\", lst.iter().map(|p| format!(\\"{p}\\")).join(\\",\\")),\\n }\\n }\\n}\\n```\\n\\n### Solution\\n\\nA lot of technical details\u2026 Parsing is nasty too\u2026\\n\\n## [Day 14: Regolith Reservoir](https://adventofcode.com/2022/day/14)\\n\\n:::info tl;dr\\n\\nLet\'s simulate falling sand grain-by-grain.\\n\\n:::\\n\\nAgain, both parts are relatively similar with minimal changes, so it is a good\\nidea to refactor it a bit. Similar approach to the [BFS above]. Also this is the\\nfirst day where I ran into efficiency issues and had to redo my solution to speed\\nit up just a bit.\\n\\n### Solution\\n\\nTedious.\\n\\n## Post Mortem\\n\\n### Indexing\\n\\nI was asked about the indexing after publishing the blog. And truly it is rather\\ncomplicated topic, especially after releasing `SliceIndex` trait. I couldn\'t\\nleave it be, so I tried to implement the `Index` and `IndexMut` trait.\\n\\n:::note\\n\\nI have also mentioned that the `SliceIndex` trait is `unsafe`, but truth be told,\\nonly _unsafe_ part are the 2 methods that are named `*unchecked*`. Anyways, I will\\nbe implementing the `Index*` traits for now, rather than the `SliceIndex`.\\n\\n:::\\n\\nIt\'s relatively straightforward\u2026\\n\\n```rust\\nimpl Index> for [C]\\nwhere\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: Index,\\n{\\n type Output = C::Output;\\n\\n fn index(&self, index: Vector2D) -> &Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &self[y][x]\\n }\\n}\\n\\nimpl IndexMut> for [C]\\nwhere\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: IndexMut,\\n{\\n fn index_mut(&mut self, index: Vector2D) -> &mut Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &mut self[y][x]\\n }\\n}\\n```\\n\\nWe can see a lot of similarities to the implementation of `index` and `index_mut`\\nfunctions. In the end, they are 1:1, just wrapped in the trait that provides a\\nsyntax sugar for `container[idx]`.\\n\\n:::note\\n\\nI have also switched from using the `TryFrom` to `TryInto` trait, since it better\\nmatches what we are using, the `.try_into` rather than `usize::try_from`.\\n\\nAlso implementing `TryFrom` automatically provides you with a `TryInto` trait,\\nsince it is relatively easy to implement. Just compare the following:\\n\\n```rust\\npub trait TryFrom: Sized {\\n type Error;\\n\\n fn try_from(value: T) -> Result;\\n}\\n\\npub trait TryInto: Sized {\\n type Error;\\n\\n fn try_into(self) -> Result;\\n}\\n```\\n\\n:::\\n\\nOK, so we have our trait implemented, we should be able to use `container[index]`,\\nright? Yes\u2026 but actually no :frowning:\\n\\n```\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:26:18\\n |\\n26 | if trees[pos] > tallest {\\n | ^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:30:28\\n |\\n30 | max(tallest, trees[pos])\\n | ^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n\\nerror[E0277]: the type `[std::vec::Vec]` cannot be indexed by `aoc_2022::Vector2D`\\n --\x3e src/bin/day08.rs:52:28\\n |\\n52 | let max_height = trees[position];\\n | ^^^^^^^^ slice indices are of type `usize` or ranges of `usize`\\n |\\n = help: the trait `std::slice::SliceIndex<[std::vec::Vec]>` is not implemented for `aoc_2022::Vector2D`\\n = note: required for `std::vec::Vec>` to implement `std::ops::Index>`\\n```\\n\\nWhy? We have it implemented for the slices (`[C]`), why doesn\'t it work? Well,\\nthe fun part consists of the fact that in other place, where we were using it,\\nwe were passing the `&[Vec]`, but this is coming from a helper functions that\\ntake `&Vec>` instead. And\u2026 we don\'t implement `Index` and `IndexMut` for\\nthose. Just for the slices. \ud83e\udd2f _What are we going to do about it?_\\n\\nWe can either start copy-pasting or be smarter about it\u2026 I choose to be smarter,\\nso let\'s implement a macro! The only difference across the implementations are\\nthe types of the outer containers. Implementation doesn\'t differ **at all**!\\n\\nImplementing the macro can be done in a following way:\\n\\n```rust\\nmacro_rules! generate_indices {\\n ($container:ty) => {\\n impl Index> for $container\\n where\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: Index,\\n {\\n type Output = C::Output;\\n\\n fn index(&self, index: Vector2D) -> &Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &self[y][x]\\n }\\n }\\n\\n impl IndexMut> for $container\\n where\\n I: Copy + TryInto,\\n >::Error: Debug,\\n C: IndexMut,\\n {\\n fn index_mut(&mut self, index: Vector2D) -> &mut Self::Output {\\n let (x, y): (usize, usize) =\\n (index.x.try_into().unwrap(), index.y.try_into().unwrap());\\n &mut self[y][x]\\n }\\n }\\n };\\n}\\n```\\n\\nAnd now we can simply do\\n\\n```rust\\ngenerate_indices!(VecDeque);\\ngenerate_indices!([C]);\\ngenerate_indices!(Vec);\\n// generate_indices!([C; N], const N: usize);\\n```\\n\\nThe last type (I took the inspiration from the implementations of the `Index` and\\n`IndexMut` traits) is a bit problematic, because of the `const N: usize` part,\\nwhich I haven\'t managed to be able to parse. And that\'s how I got rid of the error.\\n\\n:::note\\n\\nIf I were to use 2D-indexing over `[C; N]` slices, I\'d probably just go with the\\ncopy-paste, cause the cost of this \u201cmonstrosity\u201d outweighs the benefits of no DRY.\\n\\n:::\\n\\n#### Cause of the problem\\n\\nThis issue is relatively funny. If you don\'t use any type aliases, just the raw\\ntypes, you\'ll get suggested certain changes by the _clippy_. For example if you\\nconsider the following piece of code\\n\\n```rust\\nfn get_sum(nums: &Vec) -> i32 {\\n nums.iter().sum()\\n}\\n\\nfn main() {\\n let nums = vec![1, 2, 3];\\n println!(\\"Sum: {}\\", get_sum(&nums));\\n}\\n```\\n\\nand you run _clippy_ on it, you will get\\n\\n```\\nChecking playground v0.0.1 (/playground)\\nwarning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do\\n --\x3e src/main.rs:1:18\\n |\\n1 | fn get_sum(nums: &Vec) -> i32 {\\n | ^^^^^^^^^ help: change this to: `&[i32]`\\n |\\n = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg\\n = note: `#[warn(clippy::ptr_arg)]` on by default\\n\\nwarning: `playground` (bin \\"playground\\") generated 1 warning\\n Finished dev [unoptimized + debuginfo] target(s) in 0.61s\\n```\\n\\nHowever, if you introduce a type alias, such as\\n\\n```rust\\ntype Numbers = Vec;\\n```\\n\\nThen _clippy_ won\'t say anything, cause there is literally nothing to suggest.\\nHowever the outcome is not the same\u2026\\n\\n[_advent of code_]: https://adventofcode.com\\n[bfs above]: #day-12-hill-climbing-algorithm"},{"id":"aoc-2022/1st-week","metadata":{"permalink":"/blog/aoc-2022/1st-week","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/01-week-1.md","source":"@site/blog/aoc-2022/01-week-1.md","title":"1st week of Advent of Code \'22 in Rust","description":"Surviving first week in Rust.","date":"2022-12-15T01:15:00.000Z","formattedDate":"December 15, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":12.4,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"1st week of Advent of Code \'22 in Rust","description":"Surviving first week in Rust.","date":"2022-12-15T01:15","slug":"aoc-2022/1st-week","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"2nd week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/2nd-week"},"nextItem":{"title":"Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/intro"}},"content":"Let\'s go through the first week of [_Advent of Code_] in Rust.\\n\\n\x3c!--truncate--\x3e\\n\\n:::note\\n\\nIf you wish to have a look at the solutions, you can follow them on my [GitLab].\\nMore specifically in the [`/src/bin/`].\\n\\n:::\\n\\nI will try to summarize my experience with using Rust for the AoC. Trying it out\\nages ago, I believe it will be _pain and suffering_, but we will see. For each\\nday I will also try to give a tl;dr of the problem, so that you can better imagine\\nthe relation to my woes or :+1: moments.\\n\\n## [Day 1: Calorie Counting](https://adventofcode.com/2022/day/1)\\n\\n:::info tl;dr\\n\\nAs the name suggests, we get the calories of the food contained in the elves\\nbackpacks and we want to choose the elf that has the most food ;)\\n\\n:::\\n\\n> Wakey wakey!\\n\\nProgramming in Rust at 6am definitely hits. I\'ve also forgotten to mention how I\\nhandle samples. With each puzzle you usually get a sample input and expected\\noutput. You can use them to verify that your solution works, or usually doesn\'t.\\n\\nAt first I\'ve decided to put asserts into my `main`, something like\\n\\n```rust\\nassert_eq!(part_1(&sample), 24000);\\ninfo!(\\"Part 1: {}\\", part_1(&input));\\n\\nassert_eq!(part_2(&sample), 45000);\\ninfo!(\\"Part 2: {}\\", part_2(&input));\\n```\\n\\nHowever, once you get further, the sample input may take some time to run itself.\\nSo in the end, I have decided to turn them into unit tests:\\n\\n```rust\\n#[cfg(test)]\\nmod tests {\\n use super::*;\\n\\n #[test]\\n fn test_part_1() {\\n let sample = parse_input(\\"samples/day01.txt\\");\\n assert_eq!(part_1(&sample), 24000);\\n }\\n\\n #[test]\\n fn test_part_2() {\\n let sample = parse_input(\\"samples/day01.txt\\");\\n assert_eq!(part_2(&sample), 45000);\\n }\\n}\\n```\\n\\nAnd later on I have noticed, it\'s hard to tell the difference between the days,\\nso I further renamed the `mod` from generic `tests` to reflect the days.\\n\\nAlso after finishing the first day puzzle, I have installed an [`sccache`] to\\ncache the builds, so that the build time is lower, cause it was kinda unbearable.\\n\\n### Solution\\n\\nWell, it\'s a pretty simple problem. You just take the input, sum the calories and\\nfind the biggest one. However, if we try to generalize to more than the biggest\\none, the fun appears. We have few options:\\n\\n- keep all the calories, sort them, take what we need\\n- keep all the calories and use max heap\\n- use min heap and maintain at most N calories that we need\\n\\n## [Day 2: Rock Paper Scissors](https://adventofcode.com/2022/day/2)\\n\\n:::info tl;dr\\n\\nYou want to know what score did you achieve while playing _Rock Paper Scissors_.\\nAnd then you want to be strategic about it.\\n\\n:::\\n\\nApart from the technical details of the puzzle, it went relatively smooth.\\n\\n### Solution\\n\\nI took relatively na\xefve approach and then tried to simplify it.\\n\\n## [Day 3: Rucksack Reorganization](https://adventofcode.com/2022/day/3)\\n\\n:::info tl;dr\\n\\nLet\'s go reorganize elves\' backpacks! Each backpacks has 2 compartments and you\\nwant to find the common item among those compartments. Each of them has priority,\\nyou care only about the sum.\\n\\n:::\\n\\nThis is the day where I started to fight the compiler and neither of us decided\\nto give up. Let\'s dive into it \\\\o/\\n\\n:::tip Fun fact\\n\\nFighting the compiler took me 30 minutes.\\n\\n:::\\n\\nWe need to find a common item among 2 collections, that\'s an easy task, right?\\nWe can construct 2 sets and find an intersection:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3].iter().collect();\\nlet bottom: HashSet = [3, 4, 5].iter().collect();\\n```\\n\\nNow, the first issue that we encounter is caused by the fact that we are using\\na slice (the `[\u2026]`), iterator of that returns **references** to the numbers.\\nAnd we get immediately yelled at by the compiler, because the numbers are discarded\\nafter running the `.collect`. To fix this, we can use `.into_iter`:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5].into_iter().collect();\\n```\\n\\nThis way the numbers will get copied instead of referenced. OK, let\'s find the\\nintersection of those 2 collections:\\n\\n```rust\\nprintln!(\\"Common elements: {:?}\\", top.intersection(&bottom));\\n```\\n\\n```\\nCommon elements: [3]\\n```\\n\\n:::caution\\n\\nNotice that we need to do `&bottom`. It explicitly specifies that `.intersection`\\n**borrows** the `bottom`, i.e. takes an immutable reference to it.\\n\\n:::\\n\\nThat\'s what we want, right? Looks like it! \\\\o/\\n\\nNext part wants us to find the common element among all of the backpacks. OK, so\\nthat should be fairly easy, we have an intersection and we want to find intersection\\nover all of them.\\n\\nLet\'s have a look at the type of the `.intersection`\\n\\n```rust\\npub fn intersection<\'a>(\\n\xa0\xa0\xa0\xa0&\'a self,\\n\xa0\xa0\xa0\xa0other: &\'a HashSet\\n) -> Intersection<\'a, T, S>\\n```\\n\\nOK\u2026 Huh\u2026 But we have an example there!\\n\\n```rust\\nlet intersection: HashSet<_> = a.intersection(&b).collect();\\n```\\n\\nCool, that\'s all we need.\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\n```\\nIntersection: {3, 4}\\n```\\n\\nCool, so let\'s do the intersection with the `top_2`:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).collect();\\nlet intersection: HashSet<_> = intersection.intersection(&top_2).collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\nAnd we get yelled at by the compiler:\\n\\n```\\nerror[E0308]: mismatched types\\n --\x3e src/main.rs:10:58\\n |\\n10 | let intersection: HashSet<_> = intersection.intersection(&top_2).collect();\\n | ------------ ^^^^^^ expected `&i32`, found `i32`\\n | |\\n | arguments to this function are incorrect\\n |\\n = note: expected reference `&HashSet<&i32>`\\n found reference `&HashSet`\\n```\\n\\n/o\\\\ What the hell is going on here? Well, the funny thing is, that this operation\\ndoesn\'t return the elements themselves, but the references to them and when we pass\\nthe third set, it has just the values themselves, without any references.\\n\\n:::tip\\n\\nIt may seem as a very weird decision, but in fact it makes some sense\u2026 It allows\\nyou to do intersection of items that may not be possible to copy. Overall this is\\na \u201ctax\u201d for having a borrow checker ~~drilling your ass~~ having your back and\\nmaking sure you\'re not doing something naughty that may cause an **undefined**\\n**behavior**.\\n\\n:::\\n\\nTo resolve this we need to get an iterator that **clones** the elements:\\n\\n```rust\\nlet top: HashSet = [1, 2, 3, 4].into_iter().collect();\\nlet bottom: HashSet = [3, 4, 5, 6].into_iter().collect();\\nlet top_2: HashSet = [2, 3, 4, 5, 6].into_iter().collect();\\nlet bottom_2: HashSet = [4, 5, 6].into_iter().collect();\\n\\nlet intersection: HashSet<_> = top.intersection(&bottom).cloned().collect();\\nlet intersection: HashSet<_> = intersection.intersection(&top_2).cloned().collect();\\nlet intersection: HashSet<_> = intersection.intersection(&bottom_2).cloned().collect();\\nprintln!(\\"Intersection: {:?}\\", intersection);\\n```\\n\\n```\\nIntersection: {4}\\n```\\n\\n### Solution\\n\\nThe approach is pretty simple, if you omit the _1on1 with the compiler_. You just\\nhave some fun with the set operations :)\\n\\n## [Day 4: Camp Cleanup](https://adventofcode.com/2022/day/4)\\n\\n:::info tl;dr\\n\\nElves are cleaning up the camp and they got overlapping sections to clean up.\\nFind how many overlap and can take the day off.\\n\\n:::\\n\\n[`RangeInclusive`] is your friend not an enemy :)\\n\\n### Solution\\n\\nRelatively easy, you just need to parse the input and know what you want. Rust\'s\\n`RangeInclusive` type helped a lot, cause it took care of all abstractions.\\n\\n## [Day 5: Supply Stacks](https://adventofcode.com/2022/day/5)\\n\\n:::info tl;dr\\n\\nLet\'s play with stacks of crates.\\n\\n:::\\n\\nVery easy problem with very annoying input. You can judge yourself:\\n\\n```\\n [D]\\n[N] [C]\\n[Z] [M] [P]\\n 1 2 3\\n\\nmove 1 from 2 to 1\\nmove 3 from 1 to 3\\nmove 2 from 2 to 1\\nmove 1 from 1 to 2\\n```\\n\\nGood luck transforming that into something reasonable :)\\n\\n:::tip Fun fact\\n\\nTook me 40 minutes to parse this reasonably, including fighting the compiler.\\n\\n:::\\n\\n### Solution\\n\\nFor the initial solution I went with a manual solution (as in _I have done all_\\n_the work_. Later on I have decided to explore the `std` and interface of the\\n`std::vec::Vec` and found [`split_off`] which takes an index and splits (duh)\\nthe vector:\\n\\n```rust\\nlet mut vec = vec![1, 2, 3];\\nlet vec2 = vec.split_off(1);\\nassert_eq!(vec, [1]);\\nassert_eq!(vec2, [2, 3]);\\n```\\n\\nThis helped me simplify my solution a lot and also get rid of some _edge cases_.\\n\\n## [Day 6: Tuning Trouble](https://adventofcode.com/2022/day/6)\\n\\n:::info tl;dr\\n\\nFinding start of the message in a very weird protocol. Start of the message is\\ndenoted by $N$ unique consecutive characters.\\n\\n:::\\n\\n### Solution\\n\\nA lot of different approaches, knowing that we are dealing with input consisting\\nsolely of ASCII letters, I bit the bullet and went with sliding window and\\nconstructing sets from that window, checking if the set is as big as the window.\\n\\nOne possible optimization could consist of keeping a bit-vector (i.e. `usize`\\nvariable) of encountered characters and updating it as we go. However this has\\na different issue and that is removal of the characters from the left side of the\\nwindow. We don\'t know if the same character is not included later on.\\n\\nOther option is to do similar thing, but keeping the frequencies of the letters,\\nand again knowing we have only ASCII letters we can optimize by having a vector\\nof 26 elements that keeps count for each lowercase letter.\\n\\n## [Day 7: No Space Left On Device](https://adventofcode.com/2022/day/7)\\n\\n:::info tl;dr\\n\\nLet\'s simulate [`du`] to get some stats about our file system and then pinpoint\\ndirectories that take a lot of space and should be deleted.\\n\\n:::\\n\\n> I was waiting for this moment, and yet it got me!\\n> _imagine me swearing for hours_\\n\\n### Solution\\n\\nWe need to \u201c_build_\u201d a file system from the input that is given in a following form:\\n\\n```\\n$ cd /\\n$ ls\\ndir a\\n14848514 b.txt\\n8504156 c.dat\\ndir d\\n$ cd a\\n$ ls\\ndir e\\n29116 f\\n2557 g\\n62596 h.lst\\n$ cd e\\n$ ls\\n584 i\\n$ cd ..\\n$ cd ..\\n$ cd d\\n$ ls\\n4060174 j\\n8033020 d.log\\n5626152 d.ext\\n7214296 k\\n```\\n\\nThere are few ways in which you can achieve this and also you can assume some\\npreconditions, but why would we do that, right? :)\\n\\nYou can \u201cslap\u201d this in either [`HashMap`] or [`BTreeMap`] and call it a day.\\nAnd that would be boring\u2026\\n\\n:::tip\\n\\n`BTreeMap` is quite fitting for this, don\'t you think?\\n\\n:::\\n\\nI always wanted to try allocation on heap in Rust, so I chose to implement a tree.\\nI fought with the `Box` for some time and was losing\u2026\\n\\nThen I looked up some implementations of trees or linked lists and decided to try\\n`Rc>`. And I got my _ass whopped_ by the compiler once again. /o\\\\\\n\\n:::tip\\n\\n`Box` represents a dynamically allocated memory on heap. It is a single pointer,\\nyou can imagine this as `std::unique_ptr` in C++.\\n\\n`Rc` represents a dynamically allocated memory on heap. On top of that it is\\n_reference counted_ (that\'s what the `Rc` stands for). You can imagine this as\\n`std::shared_ptr` in C++.\\n\\nNow the fun stuff. Neither of them lets you **mutate** the contents of the memory.\\n\\n`Cell` allows you to mutate the memory. Can be used reasonably with types that\\ncan be copied, because the memory safety is guaranteed by copying the contents\\nwhen there is more than one **mutable** reference to the memory.\\n\\n`RefCell` is similar to the `Cell`, but the borrowing rules (how many mutable\\nreferences are present) are checked dynamically.\\n\\nSo in the end, if you want something like `std::shared_ptr` in Rust, you want\\nto have `Rc>`.\\n\\n:::\\n\\nSo, how are we going to represent the file system then? We will use an enumeration,\\nhehe, which is an algebraic data type that can store some stuff in itself :weary:\\n\\n```rust\\ntype FileHandle = Rc>;\\n\\n#[derive(Debug)]\\nenum AocFile {\\n File(usize),\\n Directory(BTreeMap),\\n}\\n```\\n\\nLet\'s go over it! `FileHandle` represents dynamically allocated `AocFile`, not\\nmuch to discuss. What does the `#[derive(Debug)]` do though? It lets us to print\\nout the value of that enumeration, it\'s derived, so it\'s not as good as if we had\\nimplemented it ourselves, but it\'s good enough for debugging, hence the name.\\n\\nNow to the fun part! `AocFile` value can be represented in two ways:\\n\\n- `File(usize)`, e.g. `AocFile::File(123)` and we can pattern match it, if we\\n need to\\n- `Directory(BTreeMap)` will represent the directory and will\\n contain map matching the name of the files (or directories) within to their\\n respective file handles\\n\\nI will omit the details about constructing this file system, cause there are a lot\\nof technicalities introduced by the nature of the input. However if you are\\ninterested, you can have a look at my solution.\\n\\nWe need to find small enough directories and also find the smallest directory that\\nwill free enough space. Now the question is, how could we do that. And there are\\nmultiple ways I will describe.\\n\\nI have chosen to implement [_tree catamorphism_] :weary:. It is basically a fold\\nover a tree data structure. We descent down into the leaves and propagate computed\\nresults all the way to the root. You can also notice that this approach is very\\nsimilar to _dynamic programming_, we find overlapping sections of the computation\\nand try to minimize the additional work (in this case: we need to know sizes of\\nour descendants, but we have already been there).\\n\\nAnother approach that has been suggested to me few days later is running DFS on\\nthe graph. And, funnily enough, we would still need to combine what we found in\\nthe branches where we descent. So in the end, it would work very similarly to my\\nsolution.\\n\\nOne of the more exotic options would be precomputing the required information at\\nthe same time as parsing. That could be done by adding additional fields to the\\nnodes which would allow storing such information and updating it as we construct\\nthe file system.\\n\\n## Post Mortem\\n\\nThings that have been brought up in the discussion later on.\\n\\n### `Rc` vs `Rc>`\\n\\nIt has been brought up that I have a contradicting statement regarding the\\ndynamically allocated memory. Specifically:\\n\\n- You can imagine `Rc` as an `std::shared_ptr` (in C++)\\n- When you want an equivalent of `std::shared_ptr`, you want to use\\n `Rc>`\\n\\nNow, in Rust it is a bit more complicated, because the type that represents the\\n\u201cshared pointer\u201d is `Rc`. What `RefCell` does is making sure that there is\\nonly one \u201cowner\u201d of a mutable reference at a time (and dynamically, as opposed\\nto the `Cell`).\\n\\nTherefore to be precise and correct about the equivalents of `std::shared_ptr`\\nin Rust, we can say that\\n\\n- `Rc` is an equivalent of a `const std::shared_ptr`,\\n- and `Rc>` is an equivalent of a `std::shared_ptr`.\\n\\nYou can easily see that they only differ in the mutability. (And even that is not\\nas simple as it seems, because there is also `Cell`)\\n\\n[_advent of code_]: https://adventofcode.com\\n[gitlab]: https://gitlab.com/mfocko/advent-of-code-2022\\n[`/src/bin/`]: https://gitlab.com/mfocko/advent-of-code-2022/-/tree/main/src/bin\\n[`sccache`]: https://github.com/mozilla/sccache\\n[`rangeinclusive`]: https://doc.rust-lang.org/std/ops/struct.RangeInclusive.html\\n[`split_off`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.split_off\\n[`du`]: https://www.man7.org/linux/man-pages/man1/du.1.html\\n[`hashmap`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html\\n[`btreemap`]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html\\n[_tree catamorphism_]: https://en.wikipedia.org/wiki/Catamorphism#Tree_fold"},{"id":"aoc-2022/intro","metadata":{"permalink":"/blog/aoc-2022/intro","editUrl":"https://github.com/mfocko/blog/tree/main/blog/aoc-2022/00-intro.md","source":"@site/blog/aoc-2022/00-intro.md","title":"Advent of Code \'22 in Rust","description":"Preparing for Advent of Code \'22.","date":"2022-12-14T21:45:00.000Z","formattedDate":"December 14, 2022","tags":[{"label":"advent-of-code","permalink":"/blog/tags/advent-of-code"},{"label":"advent-of-code-2022","permalink":"/blog/tags/advent-of-code-2022"},{"label":"rust","permalink":"/blog/tags/rust"}],"readingTime":8.665,"hasTruncateMarker":true,"authors":[{"name":"Matej Focko","email":"me+blog@mfocko.xyz","title":"a.k.a. @mf","url":"https://gitlab.com/mfocko","imageURL":"https://github.com/mfocko.png","key":"mf"}],"frontMatter":{"title":"Advent of Code \'22 in Rust","description":"Preparing for Advent of Code \'22.","date":"2022-12-14T21:45","slug":"aoc-2022/intro","authors":"mf","tags":["advent-of-code","advent-of-code-2022","rust"],"hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"1st week of Advent of Code \'22 in Rust","permalink":"/blog/aoc-2022/1st-week"}},"content":"Let\'s talk about the preparations for this year\'s [_Advent of Code_].\\n\\n\x3c!--truncate--\x3e\\n\\n## Choosing a language\\n\\nWhen choosing a language for AoC, you usually want a language that gives you a\\nquick feedback which allows you to iterate quickly to the solution of the puzzle.\\nOne of the most common choices is Python, many people also use JavaScript or Ruby.\\n\\nGiven the competitive nature of the AoC and popularity among competitive programming,\\nC++ might be also a very good choice. Only if you are familiar with it, I guess\u2026\\n\\nIf you want a challenge, you might also choose to rotate the languages each day.\\nThough I prefer to use only one language.\\n\\nFor this year I have been deciding between _Rust_, _C++_ and _Pascal_ or _Ada_.\\n\\nI have tried Rust last year and have survived with it for 3 days and then gave\\nup and switched to _Kotlin_, which was pretty good given it is \u201cJava undercover\u201d.\\nI pretty much like the ideas behind Rust, I am not sure about the whole cult and\\nimplementation of those ideas though. After some years with C/C++, I would say\\nthat Rust feels _too safe_ for my taste and tries to \u201c_punish me_\u201d even for the\\nmost trivial things.\\n\\nC++ is a very robust, but also comes with a wide variety of options providing you\\nthe ability to shoot yourself in the leg. I have tried to solve few days of previous\\nAdvent of Code events, it was _relatively easy_ to solve the problems in C++, given\\nthat I do not admit writing my own iterator for `enumerate`\u2026\\n\\nPascal or Ada were meme choices :) Ada is heavily inspired by Pascal and has a\\npretty nice standard library that offers enough to be able to quickly solve some\\nproblems in it. However the toolkit is questionable :/\\n\\n## Choosing libraries\\n\\n## Preparations for Rust\\n\\nAll of the sources, later on including solutions, can be found at my\\n[GitLab].\\n\\n### Toolkit\\n\\nSince we are using Rust, we are going to use a [Cargo] and more than likely VSCode\\nwith [`rust-analyzer`]. Because of my choice of libraries, we will also introduce\\na `.envrc` file that can be used by [`direnv`], which allows you to set specific\\nenvironment variables when you enter a directory. In our case, we will use\\n\\n```bash\\n# to show nice backtrace when using the color-eyre\\nexport RUST_BACKTRACE=1\\n\\n# to catch logs generated by tracing\\nexport RUST_LOG=trace\\n```\\n\\nAnd for the one of the most obnoxious things ever, we will use a script to download\\nthe inputs instead of \u201c_clicking, opening and copying to a file_\u201d[^1]. There is\\nno need to be _fancy_, so we will adjust Python script by Martin[^2].\\n\\n```py\\n#!/usr/bin/env python3\\n\\nimport datetime\\nimport yaml\\nimport requests\\nimport sys\\n\\n\\ndef load_config():\\n with open(\\"env.yaml\\", \\"r\\") as f:\\n js = yaml.load(f, Loader=yaml.Loader)\\n return js[\\"session\\"], js[\\"year\\"]\\n\\n\\ndef get_input(session, year, day):\\n return requests.get(\\n f\\"https://adventofcode.com/{year}/day/{day}/input\\",\\n cookies={\\"session\\": session},\\n headers={\\n \\"User-Agent\\": \\"{repo} by {mail}\\".format(\\n repo=\\"gitlab.com/mfocko/advent-of-code-2022\\",\\n mail=\\"me@mfocko.xyz\\",\\n )\\n },\\n ).content.decode(\\"utf-8\\")\\n\\n\\ndef main():\\n day = datetime.datetime.now().day\\n if len(sys.argv) == 2:\\n day = sys.argv[1]\\n\\n session, year = load_config()\\n problem_input = get_input(session, year, day)\\n\\n with open(f\\"./inputs/day{day:>02}.txt\\", \\"w\\") as f:\\n f.write(problem_input)\\n\\n\\nif __name__ == \\"__main__\\":\\n main()\\n```\\n\\nIf the script is called without any arguments, it will deduce the day from the\\nsystem, so we do not need to change the day every morning. It also requires a\\nconfiguration file:\\n\\n```yaml\\n# env.yaml\\nsession: \u2039your session cookie\u203a\\nyear: 2022\\n```\\n\\n### Libraries\\n\\nLooking at the list of the libraries, I have chosen \u201ca lot\u201d of them. Let\'s walk\\nthrough each of them.\\n\\n[`tracing`] and [`tracing-subscriber`] are the crates that can be used for tracing\\nand logging of your Rust programs, there are also other crates that can help you\\nwith providing backtrace to the Sentry in case you have deployed your application\\nsomewhere and you want to watch over it. In our use case we will just utilize the\\nmacros for debugging in the terminal.\\n\\n[`thiserror`], [`anyhow`] and [`color-eyre`] are used for error reporting.\\n`thiserror` is a very good choice for libraries, cause it extends the `Error`\\nfrom the `std` and allows you to create more convenient error types. Next is\\n`anyhow` which kinda builds on top of the `thiserror` and provides you with simpler\\nerror handling in binaries[^3]. And finally we have `color-eyre` which, as I found\\nout later, is a colorful (_wink wink_) extension of `eyre` which is fork of `anyhow`\\nwhile supporting customized reports.\\n\\nIn the end I have decided to remove `thiserror` and `anyhow`, since first one is\\nsuitable for libraries and the latter was basically fully replaced by `{color-,}eyre`.\\n\\n[`regex`] and [`lazy_static`] are a very good and also, I hope, self-explanatory\\ncombination. `lazy_static` allows you to have static variables that must be initialized\\nduring runtime.\\n\\n[`itertools`] provides some nice extensions to the iterators from the `std`.\\n\\n### My own \u201clibrary\u201d\\n\\nWhen creating the crate for this year\'s Advent of Code, I have chosen a library\\ntype. Even though standard library is huge, some things might not be included and\\nalso we can follow _KISS_. I have 2 modules that my \u201clibrary\u201d exports, one for\\nparsing and one for 2D vector (that gets used quite often during Advent of Code).\\n\\nKey part is, of course, processing the input and my library exports following\\nfunctions that get used a lot:\\n\\n```rust\\n/// Reads file to the string.\\npub fn file_to_string>(pathname: P) -> String;\\n\\n/// Reads file and returns it as a vector of characters.\\npub fn file_to_chars>(pathname: P) -> Vec;\\n\\n/// Reads file and returns a vector of parsed structures. Expects each structure\\n/// on its own line in the file. And `T` needs to implement `FromStr` trait.\\npub fn file_to_structs, T: FromStr>(pathname: P) -> Vec\\nwhere\\n ::Err: Debug;\\n\\n/// Converts iterator over strings to a vector of parsed structures. `T` needs\\n/// to implement `FromStr` trait and its error must derive `Debug` trait.\\npub fn strings_to_structs(\\n iter: impl Iterator\\n) -> Vec\\nwhere\\n ::Err: std::fmt::Debug,\\n U: Deref;\\n\\n/// Reads file and returns it as a vector of its lines.\\npub fn file_to_lines>(pathname: P) -> Vec;\\n```\\n\\nAs for the vector, I went with a rather simple implementation that allows only\\naddition of the vectors for now and accessing the elements via functions `x()`\\nand `y()`. Also the vector is generic, so we can use it with any numeric type we\\nneed.\\n\\n### Skeleton\\n\\nWe can also prepare a template to quickly bootstrap each of the days. We know\\nthat each puzzle has 2 parts, which means that we can start with 2 functions that\\nwill solve them.\\n\\n```rust\\nfn part1(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn part2(input: &Input) -> Output {\\n todo!()\\n}\\n```\\n\\nBoth functions take reference to the input and return some output (in majority\\nof puzzles, it is the same type). `todo!()` can be used as a nice placeholder,\\nit also causes a panic when reached and we could also provide some string with\\nan explanation, e.g. `todo!(\\"part 1\\")`. We have not given functions a specific\\ntype and to avoid as much copy-paste as possible, we will introduce type aliases.\\n\\n```rust\\ntype Input = String;\\ntype Output = i32;\\n```\\n\\n:::tip\\n\\nThis allows us to quickly adjust the types only in one place without the need to\\ndo _regex-replace_ or replace them manually.\\n\\n:::\\n\\nFor each day we get a personalized input that is provided as a text file. Almost\\nall the time, we would like to get some structured type out of that input, and\\ntherefore it makes sense to introduce a new function that will provide the parsing\\nof the input.\\n\\n```rust\\nfn parse_input(path: &str) -> Input {\\n todo!()\\n}\\n```\\n\\nThis \u201cparser\u201d will take a path to the file, just in case we would like to run the\\nsample instead of input.\\n\\nOK, so now we can write a `main` function that will take all of the pieces and\\nrun them.\\n\\n```rust\\nfn main() {\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n println!(\\"Part 1: {}\\", part_1(&input));\\n println!(\\"Part 2: {}\\", part_2(&input));\\n}\\n```\\n\\nThis would definitely do :) But we have installed a few libraries and we want to\\nuse them. In this part we are going to utilize _[`tracing`]_ (for tracing, duh\u2026)\\nand _[`color-eyre`]_ (for better error reporting, e.g. from parsing).\\n\\n```rust\\nfn main() -> Result<()> {\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n info!(\\"Part 1: {}\\", part_1(&input));\\n info!(\\"Part 2: {}\\", part_2(&input));\\n\\n Ok(())\\n}\\n```\\n\\nThe first statement will set up tracing and configure it to print out the logs to\\nterminal, based on the environment variable. We also change the formatting a bit,\\nsince we do not need all the _fancy_ features of the logger. Pure initialization\\nwould get us logs like this:\\n\\n```\\n2022-12-11T19:53:19.975343Z INFO day01: Part 1: 0\\n```\\n\\nHowever after running that command, we will get the following:\\n\\n```\\n INFO src/bin/day01.rs:35: Part 1: 0\\n```\\n\\nAnd the `color_eyre::install()?` is quite straightforward. We just initialize the\\nerror reporting by _color eyre_.\\n\\n:::caution\\n\\nNotice that we had to add `Ok(())` to the end of the function and adjust the\\nreturn type of the `main` to `Result<()>`. It is caused by the _color eyre_ that\\ncan be installed only once and therefore it can fail, that is how we got the `?`\\nat the end of the `::install` which _unwraps_ the **\xbbresult\xab** of the installation.\\n\\n:::\\n\\nOverall we will get to a template like this:\\n\\n```rust\\nuse aoc_2022::*;\\n\\nuse color_eyre::eyre::Result;\\nuse tracing::info;\\nuse tracing_subscriber::EnvFilter;\\n\\ntype Input = String;\\ntype Output = i32;\\n\\nfn parse_input(path: &str) -> Input {\\n todo!()\\n}\\n\\nfn part1(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn part2(input: &Input) -> Output {\\n todo!()\\n}\\n\\nfn main() -> Result<()> {\\n tracing_subscriber::fmt()\\n .with_env_filter(EnvFilter::from_default_env())\\n .with_target(false)\\n .with_file(true)\\n .with_line_number(true)\\n .without_time()\\n .compact()\\n .init();\\n color_eyre::install()?;\\n\\n let input = parse_input(\\"inputs/dayXX.txt\\");\\n\\n info!(\\"Part 1: {}\\", part_1(&input));\\n info!(\\"Part 2: {}\\", part_2(&input));\\n\\n Ok(())\\n}\\n```\\n\\n[^1]:\\n Copy-pasting might be a relaxing thing to do, but you can also discover\\n nasty stuff about your PC. See [this Reddit post and the comment].\\n\\n[^2]: [GitHub profile](https://github.com/martinjonas)\\n[^3]:\\n Even though you can use it even for libraries, but handling errors from\\n libraries using `anyhow` is nasty\u2026 You will be the stinky one ;)\\n\\n[_advent of code_]: https://adventofcode.com\\n[gitlab]: https://gitlab.com/mfocko/advent-of-code-2022\\n[cargo]: https://doc.rust-lang.org/cargo/\\n[`rust-analyzer`]: https://rust-analyzer.github.io/\\n[`direnv`]: https://direnv.net/\\n[`tracing`]: https://crates.io/crates/tracing\\n[`tracing-subscriber`]: https://crates.io/crates/tracing-subscriber\\n[`thiserror`]: https://crates.io/crates/thiserror\\n[`anyhow`]: https://crates.io/crates/anyhow\\n[`color-eyre`]: https://crates.io/crates/color-eyre\\n[`regex`]: https://crates.io/crates/regex\\n[`lazy_static`]: https://crates.io/crates/lazy_static\\n[`itertools`]: https://crates.io/crates/itertools\\n[this reddit post and the comment]: https://www.reddit.com/r/adventofcode/comments/zb98pn/comment/iyq0ono"}]}')}}]); \ No newline at end of file diff --git a/assets/js/595c7293.fd69129b.js b/assets/js/595c7293.6b6976ac.js similarity index 99% rename from assets/js/595c7293.fd69129b.js rename to assets/js/595c7293.6b6976ac.js index e1fb5dd..defbf2c 100644 --- a/assets/js/595c7293.fd69129b.js +++ b/assets/js/595c7293.6b6976ac.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[5634],{58396:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var i=t(85893),s=t(11151);const r={id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},o="8th seminar bonus assignment",c={id:"bonuses/seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n",source:"@site/c/bonuses/08.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-08",permalink:"/c/bonuses/seminar-08",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/08.md",tags:[],version:"current",lastUpdatedAt:1718801795,formattedLastUpdatedAt:"Jun 19, 2024",frontMatter:{id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},sidebar:"autogeneratedBar",previous:{title:"5th and 6th seminar",permalink:"/c/bonuses/seminar-05-06"},next:{title:"10th seminar",permalink:"/c/bonuses/seminar-10"}},a={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Warning",id:"warning",level:2},{value:"Testing",id:"testing",level:2},{value:"Task no. 1: Counting (0.75 K\u20a1)",id:"task-no-1-counting-075-k",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Bonus part (0.75 K\u20a1)",id:"bonus-part-075-k",level:3},{value:"Task no. 2: Weird trees (1 K\u20a1)",id:"task-no-2-weird-trees-1-k",level:2},{value:"Submitting",id:"submitting",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"8th-seminar-bonus-assignment",children:"8th seminar bonus assignment"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"pathname:///files/c/bonuses/08.tar.gz",children:"Source"})}),"\n",(0,i.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsx)(n.p,{children:"In this bonus you can implement two tasks, one of them has a bonus part with generic\nsolution."}),"\n",(0,i.jsx)(n.p,{children:"One is focused on counting ananas or in case of generic version any substring in\nthe file, but with a restriction on the function you use."}),"\n",(0,i.jsx)(n.p,{children:"Other one has a more algorithmic spirit."}),"\n",(0,i.jsx)(n.p,{children:"For this bonus you can get at maximum 2.5 K\u20a1."}),"\n",(0,i.jsx)(n.h2,{id:"warning",children:"Warning"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"DO NOT COMMIT test data"})," to your own git repository, since the tests include\nfiles that exceed 10MB by themselves. Even if they are on separate branch, they\ntake up the space."]}),"\n",(0,i.jsx)(n.h2,{id:"testing",children:"Testing"}),"\n",(0,i.jsxs)(n.p,{children:["For testing you are provided with python script (requires ",(0,i.jsx)(n.code,{children:"click"})," to be installed:\n",(0,i.jsx)(n.code,{children:"pip3 install --user click"}),") and ",(0,i.jsx)(n.code,{children:"Makefile"})," that provides following targets:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check-counting"})," - runs the ",(0,i.jsx)(n.code,{children:"counting"})," tests"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check-counting-bonus"})," - runs the ",(0,i.jsx)(n.code,{children:"counting"})," tests with bonus implemented"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check"})," - runs both ",(0,i.jsx)(n.code,{children:"counting"})," and ",(0,i.jsx)(n.code,{children:"counting-bonus"})," tests"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"clean"})," - removes output files from the test runs"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"task-no-1-counting-075-k",children:"Task no. 1: Counting (0.75 K\u20a1)"}),"\n",(0,i.jsx)(n.p,{children:"Your first task is to make smallish program that counts occurences of specific\n(or given) word from file and writes the number to other file."}),"\n",(0,i.jsx)(n.p,{children:"Usage of the program is:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"Usage: ./counting [string-to-be-counted]\n"})}),"\n",(0,i.jsx)(n.p,{children:"Arguments that are passed to the program represent:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:""})," - path to the file where we count the words"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:""})," - path to the file where we output the count"]}),"\n",(0,i.jsxs)(n.li,{children:["(optional argument) ",(0,i.jsx)(n.code,{children:"[string-to-be-counted]"})," - in case you implement bonus,\notherwise we default to word ",(0,i.jsx)(n.code,{children:"ananas"})," ;)"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In skeleton you are given 3 empty, but documented, functions to implement."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"count_anything"})," - function accepts input file and substring to be counted in\nthe file, returns the count."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"count_ananas"})," - same as ",(0,i.jsx)(n.code,{children:"count_anything"}),", but specialized for ananases, the\ndefault implementation from the skeleton expects you to implement ",(0,i.jsx)(n.code,{children:"count_anything"}),"\nand therefore it just calls the other function."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"write_number"})," - function that writes the number to the file, why would you\nneed the function is explained later :)"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"requirements",children:"Requirements"}),"\n",(0,i.jsxs)(n.p,{children:["For manipulation with the files you are only allowed to use ",(0,i.jsx)(n.code,{children:"fopen"}),", ",(0,i.jsx)(n.code,{children:"fclose"}),",\n",(0,i.jsx)(n.code,{children:"fgetc"})," and ",(0,i.jsx)(n.code,{children:"fputc"}),". Functions like ",(0,i.jsx)(n.code,{children:"fprintf"})," (except for ",(0,i.jsx)(n.code,{children:"stderr"})," or logging) and\n",(0,i.jsx)(n.code,{children:"fscanf"})," are ",(0,i.jsx)(n.strong,{children:"forbidden"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"In case you struggle and want to use one of those functions, the solution will be\npenalized by 50% of points."}),"\n",(0,i.jsx)(n.h3,{id:"bonus-part-075-k",children:"Bonus part (0.75 K\u20a1)"}),"\n",(0,i.jsxs)(n.p,{children:["Bonus part of this assignment is to implement ",(0,i.jsx)(n.code,{children:"count_anything"})," rather than ",(0,i.jsx)(n.code,{children:"count_ananas"}),"."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Smaller hint: This task does not need dynamic allocation :) You just need one\ngood helper function and the right idea ;)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"task-no-2-weird-trees-1-k",children:"Task no. 2: Weird trees (1 K\u20a1)"}),"\n",(0,i.jsxs)(n.p,{children:["In this task we are crossing our paths with ",(0,i.jsx)(n.em,{children:"algorithms and data structures"}),".\nYour task is to write a program that constructs tree from the file that is given\nas an argument and pretty-prints it."]}),"\n",(0,i.jsxs)(n.p,{children:["Input file consists of lines, that include ",(0,i.jsx)(n.code,{children:"key"})," and ",(0,i.jsx)(n.code,{children:"rank"})," in form ",(0,i.jsx)(n.code,{children:"key;rank"}),"\nor ",(0,i.jsx)(n.code,{children:"nil"}),". Why would we have ",(0,i.jsx)(n.code,{children:"nil"})," in a file? The file represents pre-order iteration\nthrough the tree. Leaves never have rank different than 0, so you can safely assume\n2 non-existing ",(0,i.jsx)(n.code,{children:"nil"}),"s in the input after you read such node ;)"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:"Example input file"}),(0,i.jsx)("th",{children:"Tree it represents"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"8;4\n5;3\n3;2\n2;1\n1;0\nnil\n4;0\n7;1\n6;0\nnil\n11;2\n10;1\n9;0\nnil\n12;0\n"})})}),(0,i.jsx)("td",{children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"tree",src:t(30073).Z+"",width:"633",height:"684"})})})]})]}),"\n",(0,i.jsxs)(n.p,{children:["In this task you are only provided with different trees in the ",(0,i.jsx)(n.code,{children:"test-trees"})," directory.\nImplementation and format of the pretty-print is totally up to you. :)"]}),"\n",(0,i.jsx)(n.p,{children:"Example of mine for the tree above:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"8 (rank = 4)\n+-- 5 (rank = 3)\n| +-- 3 (rank = 2)\n| | +-- 2 (rank = 1)\n| | | +-- 1 (rank = 0)\n| | +-- 4 (rank = 0)\n| +-- 7 (rank = 1)\n| +-- 6 (rank = 0)\n+-- 11 (rank = 2)\n +-- 10 (rank = 1)\n | +-- 9 (rank = 0)\n +-- 12 (rank = 0)\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Can you find out what are those trees? :)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,i.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,i.jsx)(n.hr,{})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},30073:(e,n,t)=>{t.d(n,{Z:()=>i});const i=t.p+"assets/images/tree-c9e37f87f9095c00fad33ea034485ce6.png"},11151:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>o});var i=t(67294);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[5634],{58396:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var i=t(85893),s=t(11151);const r={id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},o="8th seminar bonus assignment",c={id:"bonuses/seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n",source:"@site/c/bonuses/08.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-08",permalink:"/c/bonuses/seminar-08",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/08.md",tags:[],version:"current",lastUpdatedAt:1718813674,formattedLastUpdatedAt:"Jun 19, 2024",frontMatter:{id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},sidebar:"autogeneratedBar",previous:{title:"5th and 6th seminar",permalink:"/c/bonuses/seminar-05-06"},next:{title:"10th seminar",permalink:"/c/bonuses/seminar-10"}},a={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Warning",id:"warning",level:2},{value:"Testing",id:"testing",level:2},{value:"Task no. 1: Counting (0.75 K\u20a1)",id:"task-no-1-counting-075-k",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Bonus part (0.75 K\u20a1)",id:"bonus-part-075-k",level:3},{value:"Task no. 2: Weird trees (1 K\u20a1)",id:"task-no-2-weird-trees-1-k",level:2},{value:"Submitting",id:"submitting",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"8th-seminar-bonus-assignment",children:"8th seminar bonus assignment"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"pathname:///files/c/bonuses/08.tar.gz",children:"Source"})}),"\n",(0,i.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsx)(n.p,{children:"In this bonus you can implement two tasks, one of them has a bonus part with generic\nsolution."}),"\n",(0,i.jsx)(n.p,{children:"One is focused on counting ananas or in case of generic version any substring in\nthe file, but with a restriction on the function you use."}),"\n",(0,i.jsx)(n.p,{children:"Other one has a more algorithmic spirit."}),"\n",(0,i.jsx)(n.p,{children:"For this bonus you can get at maximum 2.5 K\u20a1."}),"\n",(0,i.jsx)(n.h2,{id:"warning",children:"Warning"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"DO NOT COMMIT test data"})," to your own git repository, since the tests include\nfiles that exceed 10MB by themselves. Even if they are on separate branch, they\ntake up the space."]}),"\n",(0,i.jsx)(n.h2,{id:"testing",children:"Testing"}),"\n",(0,i.jsxs)(n.p,{children:["For testing you are provided with python script (requires ",(0,i.jsx)(n.code,{children:"click"})," to be installed:\n",(0,i.jsx)(n.code,{children:"pip3 install --user click"}),") and ",(0,i.jsx)(n.code,{children:"Makefile"})," that provides following targets:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check-counting"})," - runs the ",(0,i.jsx)(n.code,{children:"counting"})," tests"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check-counting-bonus"})," - runs the ",(0,i.jsx)(n.code,{children:"counting"})," tests with bonus implemented"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"check"})," - runs both ",(0,i.jsx)(n.code,{children:"counting"})," and ",(0,i.jsx)(n.code,{children:"counting-bonus"})," tests"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"clean"})," - removes output files from the test runs"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"task-no-1-counting-075-k",children:"Task no. 1: Counting (0.75 K\u20a1)"}),"\n",(0,i.jsx)(n.p,{children:"Your first task is to make smallish program that counts occurences of specific\n(or given) word from file and writes the number to other file."}),"\n",(0,i.jsx)(n.p,{children:"Usage of the program is:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"Usage: ./counting [string-to-be-counted]\n"})}),"\n",(0,i.jsx)(n.p,{children:"Arguments that are passed to the program represent:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:""})," - path to the file where we count the words"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:""})," - path to the file where we output the count"]}),"\n",(0,i.jsxs)(n.li,{children:["(optional argument) ",(0,i.jsx)(n.code,{children:"[string-to-be-counted]"})," - in case you implement bonus,\notherwise we default to word ",(0,i.jsx)(n.code,{children:"ananas"})," ;)"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"In skeleton you are given 3 empty, but documented, functions to implement."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"count_anything"})," - function accepts input file and substring to be counted in\nthe file, returns the count."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"count_ananas"})," - same as ",(0,i.jsx)(n.code,{children:"count_anything"}),", but specialized for ananases, the\ndefault implementation from the skeleton expects you to implement ",(0,i.jsx)(n.code,{children:"count_anything"}),"\nand therefore it just calls the other function."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"write_number"})," - function that writes the number to the file, why would you\nneed the function is explained later :)"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"requirements",children:"Requirements"}),"\n",(0,i.jsxs)(n.p,{children:["For manipulation with the files you are only allowed to use ",(0,i.jsx)(n.code,{children:"fopen"}),", ",(0,i.jsx)(n.code,{children:"fclose"}),",\n",(0,i.jsx)(n.code,{children:"fgetc"})," and ",(0,i.jsx)(n.code,{children:"fputc"}),". Functions like ",(0,i.jsx)(n.code,{children:"fprintf"})," (except for ",(0,i.jsx)(n.code,{children:"stderr"})," or logging) and\n",(0,i.jsx)(n.code,{children:"fscanf"})," are ",(0,i.jsx)(n.strong,{children:"forbidden"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"In case you struggle and want to use one of those functions, the solution will be\npenalized by 50% of points."}),"\n",(0,i.jsx)(n.h3,{id:"bonus-part-075-k",children:"Bonus part (0.75 K\u20a1)"}),"\n",(0,i.jsxs)(n.p,{children:["Bonus part of this assignment is to implement ",(0,i.jsx)(n.code,{children:"count_anything"})," rather than ",(0,i.jsx)(n.code,{children:"count_ananas"}),"."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Smaller hint: This task does not need dynamic allocation :) You just need one\ngood helper function and the right idea ;)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"task-no-2-weird-trees-1-k",children:"Task no. 2: Weird trees (1 K\u20a1)"}),"\n",(0,i.jsxs)(n.p,{children:["In this task we are crossing our paths with ",(0,i.jsx)(n.em,{children:"algorithms and data structures"}),".\nYour task is to write a program that constructs tree from the file that is given\nas an argument and pretty-prints it."]}),"\n",(0,i.jsxs)(n.p,{children:["Input file consists of lines, that include ",(0,i.jsx)(n.code,{children:"key"})," and ",(0,i.jsx)(n.code,{children:"rank"})," in form ",(0,i.jsx)(n.code,{children:"key;rank"}),"\nor ",(0,i.jsx)(n.code,{children:"nil"}),". Why would we have ",(0,i.jsx)(n.code,{children:"nil"})," in a file? The file represents pre-order iteration\nthrough the tree. Leaves never have rank different than 0, so you can safely assume\n2 non-existing ",(0,i.jsx)(n.code,{children:"nil"}),"s in the input after you read such node ;)"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:"Example input file"}),(0,i.jsx)("th",{children:"Tree it represents"})]}),(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"8;4\n5;3\n3;2\n2;1\n1;0\nnil\n4;0\n7;1\n6;0\nnil\n11;2\n10;1\n9;0\nnil\n12;0\n"})})}),(0,i.jsx)("td",{children:(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"tree",src:t(30073).Z+"",width:"633",height:"684"})})})]})]}),"\n",(0,i.jsxs)(n.p,{children:["In this task you are only provided with different trees in the ",(0,i.jsx)(n.code,{children:"test-trees"})," directory.\nImplementation and format of the pretty-print is totally up to you. :)"]}),"\n",(0,i.jsx)(n.p,{children:"Example of mine for the tree above:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"8 (rank = 4)\n+-- 5 (rank = 3)\n| +-- 3 (rank = 2)\n| | +-- 2 (rank = 1)\n| | | +-- 1 (rank = 0)\n| | +-- 4 (rank = 0)\n| +-- 7 (rank = 1)\n| +-- 6 (rank = 0)\n+-- 11 (rank = 2)\n +-- 10 (rank = 1)\n | +-- 9 (rank = 0)\n +-- 12 (rank = 0)\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Can you find out what are those trees? :)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,i.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,i.jsx)(n.hr,{})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},30073:(e,n,t)=>{t.d(n,{Z:()=>i});const i=t.p+"assets/images/tree-c9e37f87f9095c00fad33ea034485ce6.png"},11151:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>o});var i=t(67294);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7052c0bc.81ee0b8a.js b/assets/js/7052c0bc.c6270640.js similarity index 95% rename from assets/js/7052c0bc.81ee0b8a.js rename to assets/js/7052c0bc.c6270640.js index b52fe4d..eaaff1c 100644 --- a/assets/js/7052c0bc.81ee0b8a.js +++ b/assets/js/7052c0bc.c6270640.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[9731],{42286:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var o=n(85893),r=n(11151);const i={id:"cpp-intro",title:"Introduction",slug:"/"},c=void 0,s={id:"cpp-intro",title:"Introduction",description:"",source:"@site/cpp/00-intro.md",sourceDirName:".",slug:"/",permalink:"/cpp/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/cpp/00-intro.md",tags:[],version:"current",lastUpdatedAt:1718801795,formattedLastUpdatedAt:"Jun 19, 2024",sidebarPosition:0,frontMatter:{id:"cpp-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Exceptions and RAII",permalink:"/cpp/category/exceptions-and-raii"}},a={},p=[];function u(t){return(0,o.jsx)(o.Fragment,{})}function d(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>s,a:()=>c});var o=n(67294);const r={},i=o.createContext(r);function c(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:c(t.components),o.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[9731],{42286:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var o=n(85893),r=n(11151);const i={id:"cpp-intro",title:"Introduction",slug:"/"},c=void 0,s={id:"cpp-intro",title:"Introduction",description:"",source:"@site/cpp/00-intro.md",sourceDirName:".",slug:"/",permalink:"/cpp/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/cpp/00-intro.md",tags:[],version:"current",lastUpdatedAt:1718813674,formattedLastUpdatedAt:"Jun 19, 2024",sidebarPosition:0,frontMatter:{id:"cpp-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Exceptions and RAII",permalink:"/cpp/category/exceptions-and-raii"}},a={},p=[];function u(t){return(0,o.jsx)(o.Fragment,{})}function d(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(u,{...t})}):u()}},11151:(t,e,n)=>{n.d(e,{Z:()=>s,a:()=>c});var o=n(67294);const r={},i=o.createContext(r);function c(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:c(t.components),o.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/794ef108.4d1fd72a.js b/assets/js/794ef108.7d5bcd90.js similarity index 95% rename from assets/js/794ef108.4d1fd72a.js rename to assets/js/794ef108.7d5bcd90.js index e74bc92..0f93a83 100644 --- a/assets/js/794ef108.4d1fd72a.js +++ b/assets/js/794ef108.7d5bcd90.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[3803],{86427:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>s,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var o=n(85893),r=n(11151);const i={id:"c-intro",title:"Introduction",slug:"/"},s=void 0,c={id:"c-intro",title:"Introduction",description:"",source:"@site/c/00-intro.md",sourceDirName:".",slug:"/",permalink:"/c/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/00-intro.md",tags:[],version:"current",lastUpdatedAt:1718801795,formattedLastUpdatedAt:"Jun 19, 2024",sidebarPosition:0,frontMatter:{id:"c-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Bonuses",permalink:"/c/category/bonuses"}},a={},u=[];function d(t){return(0,o.jsx)(o.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(d,{...t})}):d()}},11151:(t,e,n)=>{n.d(e,{Z:()=>c,a:()=>s});var o=n(67294);const r={},i=o.createContext(r);function s(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:s(t.components),o.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[3803],{86427:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>s,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var o=n(85893),r=n(11151);const i={id:"c-intro",title:"Introduction",slug:"/"},s=void 0,c={id:"c-intro",title:"Introduction",description:"",source:"@site/c/00-intro.md",sourceDirName:".",slug:"/",permalink:"/c/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/00-intro.md",tags:[],version:"current",lastUpdatedAt:1718813674,formattedLastUpdatedAt:"Jun 19, 2024",sidebarPosition:0,frontMatter:{id:"c-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Bonuses",permalink:"/c/category/bonuses"}},a={},u=[];function d(t){return(0,o.jsx)(o.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(d,{...t})}):d()}},11151:(t,e,n)=>{n.d(e,{Z:()=>c,a:()=>s});var o=n(67294);const r={},i=o.createContext(r);function s(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:s(t.components),o.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/84d1e0d8.261de0bf.js b/assets/js/84d1e0d8.8c95a966.js similarity index 97% rename from assets/js/84d1e0d8.261de0bf.js rename to assets/js/84d1e0d8.8c95a966.js index d56732a..a7bfbcc 100644 --- a/assets/js/84d1e0d8.261de0bf.js +++ b/assets/js/84d1e0d8.8c95a966.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[1885],{49713:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var o=n(85893),s=n(11151);const r={id:"algorithms-intro",title:"Introduction",slug:"/"},i=void 0,a={id:"algorithms-intro",title:"Introduction",description:"In this part you can find \u201crandom\u201d additional materials I have written over the",source:"@site/algorithms/00-intro.md",sourceDirName:".",slug:"/",permalink:"/algorithms/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/algorithms/00-intro.md",tags:[],version:"current",lastUpdatedAt:1718801795,formattedLastUpdatedAt:"Jun 19, 2024",sidebarPosition:0,frontMatter:{id:"algorithms-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Algorithms and Correctness",permalink:"/algorithms/category/algorithms-and-correctness"}},c={},d=[];function l(t){const e={a:"a",em:"em",p:"p",...(0,s.a)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(e.p,{children:["In this part you can find \u201crandom\u201d additional materials I have written over the\ncourse of teaching ",(0,o.jsx)(e.em,{children:"Algorithms and data structures I"}),"."]}),"\n",(0,o.jsx)(e.p,{children:"It is a various mix of stuff that may have been produced as a follow-up on some\nquestion asked at the seminar or spontanously."}),"\n",(0,o.jsxs)(e.p,{children:["If you have some ideas for posts, please do not hesitate to submit them as issues\nin the linked ",(0,o.jsx)(e.a,{href:"https://gitlab.fi.muni.cz/xfocko/kb/issues",children:"GitLab"}),"."]})]})}function u(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(l,{...t})}):l(t)}},11151:(t,e,n)=>{n.d(e,{Z:()=>a,a:()=>i});var o=n(67294);const s={},r=o.createContext(s);function i(t){const e=o.useContext(r);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),o.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[1885],{49713:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var o=n(85893),s=n(11151);const r={id:"algorithms-intro",title:"Introduction",slug:"/"},i=void 0,a={id:"algorithms-intro",title:"Introduction",description:"In this part you can find \u201crandom\u201d additional materials I have written over the",source:"@site/algorithms/00-intro.md",sourceDirName:".",slug:"/",permalink:"/algorithms/",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/algorithms/00-intro.md",tags:[],version:"current",lastUpdatedAt:1718813674,formattedLastUpdatedAt:"Jun 19, 2024",sidebarPosition:0,frontMatter:{id:"algorithms-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Algorithms and Correctness",permalink:"/algorithms/category/algorithms-and-correctness"}},c={},d=[];function l(t){const e={a:"a",em:"em",p:"p",...(0,s.a)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(e.p,{children:["In this part you can find \u201crandom\u201d additional materials I have written over the\ncourse of teaching ",(0,o.jsx)(e.em,{children:"Algorithms and data structures I"}),"."]}),"\n",(0,o.jsx)(e.p,{children:"It is a various mix of stuff that may have been produced as a follow-up on some\nquestion asked at the seminar or spontanously."}),"\n",(0,o.jsxs)(e.p,{children:["If you have some ideas for posts, please do not hesitate to submit them as issues\nin the linked ",(0,o.jsx)(e.a,{href:"https://gitlab.fi.muni.cz/xfocko/kb/issues",children:"GitLab"}),"."]})]})}function u(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(l,{...t})}):l(t)}},11151:(t,e,n)=>{n.d(e,{Z:()=>a,a:()=>i});var o=n(67294);const s={},r=o.createContext(s);function i(t){const e=o.useContext(r);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),o.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/b1288602.dbc27f32.js b/assets/js/b1288602.1ec913ee.js similarity index 99% rename from assets/js/b1288602.dbc27f32.js rename to assets/js/b1288602.1ec913ee.js index 8085183..33a7394 100644 --- a/assets/js/b1288602.dbc27f32.js +++ b/assets/js/b1288602.1ec913ee.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[59],{51456:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>a,toc:()=>h});var r=t(85893),s=t(11151);const o={title:"Submitting merge requests"},i="Submitting merge requests for review",a={id:"mr",title:"Submitting merge requests",description:"This tutorial aims to show you how to follow basic git workflow and submit changes",source:"@site/c/mr.md",sourceDirName:".",slug:"/mr",permalink:"/c/mr",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/mr.md",tags:[],version:"current",lastUpdatedAt:1718801795,formattedLastUpdatedAt:"Jun 19, 2024",frontMatter:{title:"Submitting merge requests"},sidebar:"autogeneratedBar",previous:{title:"Practice exam C",permalink:"/c/pexam/cams"}},c={},h=[{value:"Tutorial",id:"tutorial",level:2},{value:"Step #1 - Starting from the clean repository",id:"step-1---starting-from-the-clean-repository",level:3},{value:"Step #2 - Create new branch",id:"step-2---create-new-branch",level:3},{value:"Step #3 - Do the assignment",id:"step-3---do-the-assignment",level:3},{value:"Step #4 - Commit and upload the changes to GitLab",id:"step-4---commit-and-upload-the-changes-to-gitlab",level:3},{value:"Step #5 - Creating a merge request manually",id:"step-5---creating-a-merge-request-manually",level:3},{value:"Step #6 - Set assignees",id:"step-6---set-assignees",level:3},{value:"Step #7 - Return to default branch",id:"step-7---return-to-default-branch",level:3}];function l(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"submitting-merge-requests-for-review",children:"Submitting merge requests for review"}),"\n",(0,r.jsxs)(n.p,{children:["This tutorial aims to show you how to follow basic git workflow and submit changes\nthrough ",(0,r.jsx)(n.em,{children:"Merge Requests"})," for review."]}),"\n",(0,r.jsxs)(n.p,{children:["The rudimentary idea behind aims for changes to be present on a separate branch\nthat is supposedly ",(0,r.jsx)(n.em,{children:"merged"})," into the default branch. Till then changes can be reviewed\non ",(0,r.jsx)(n.em,{children:"Merge Request"})," and additional changes may be made based on the reviews. Once\nthe changes satisfy requirements, the merge request is merged."]}),"\n",(0,r.jsx)(n.h2,{id:"tutorial",children:"Tutorial"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["Use this tutorial only for bonus assignments ",(0,r.jsx)(n.strong,{children:"made by your tutors"})," or in case\nyou need to make up for the absence."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-1---starting-from-the-clean-repository",children:"Step #1 - Starting from the clean repository"}),"\n",(0,r.jsxs)(n.p,{children:["In your repository (either locally or on aisa) type ",(0,r.jsx)(n.code,{children:"git status"})," and check if your\nrepository is clean and you are present on the main branch (",(0,r.jsx)(n.code,{children:"master"}),", ",(0,r.jsx)(n.code,{children:"main"})," or\n",(0,r.jsx)(n.code,{children:"trunk"}),"). If you do not know what your default branch is, it is probably ",(0,r.jsx)(n.code,{children:"master"}),"\nand you should not be on any other branch."]}),"\n",(0,r.jsx)(n.p,{children:"Output of the command should look like this:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git status\nOn branch master # Or main or trunk.\nYour branch is up to date with 'origin/master'.\n\nnothing to commit, working tree clean\n"})}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["In case you are on different branch or there are uncommitted changes,\n",(0,r.jsx)(n.strong,{children:"do not continue!!!"})," Clean your repository (commit the changes or discard\nthem), before you continue."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-2---create-new-branch",children:"Step #2 - Create new branch"}),"\n",(0,r.jsx)(n.p,{children:"In your repository write command:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git checkout -b BRANCH\nSwitched to a new branch 'BRANCH'\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Instead of ",(0,r.jsx)(n.code,{children:"BRANCH"})," use some reasonable name for the branch. For example if you\nare working on the seminar from 3rd week, name the branch ",(0,r.jsx)(n.code,{children:"seminar-03"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"step-3---do-the-assignment",children:"Step #3 - Do the assignment"}),"\n",(0,r.jsx)(n.p,{children:"Download the skeleton for the seminar assignment, extract and program. For example\nif you are working on 3rd seminar, you can do so by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ wget https://www.fi.muni.cz/pb071/seminars/seminar-03/pb071-seminar-03.zip\naisa$ unzip pb071-seminar-03.zip\n# Now you should have directory 'seminar-03'.\naisa$ rm pb071-seminar-03.zip\naisa$ cd seminar-03\n# You can work on the assignment.\n"})}),"\n",(0,r.jsx)(n.h3,{id:"step-4---commit-and-upload-the-changes-to-gitlab",children:"Step #4 - Commit and upload the changes to GitLab"}),"\n",(0,r.jsxs)(n.p,{children:["The same way you ",(0,r.jsx)(n.em,{children:"add"})," and ",(0,r.jsx)(n.em,{children:"commit"})," files for the homework assignments, you do for\nthe seminar."]}),"\n",(0,r.jsxs)(n.p,{children:["Now you can upload the changes to GitLab. ",(0,r.jsx)(n.code,{children:"git push"})," is not enough, since repository\non GitLab does not know your new branch. You can solve this by adding arguments:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git push origin BRANCH\n...\nremote: To create a merge request for BRANCH, visit:\nremote: https://gitlab.fi.muni.cz/login/pb071/merge_requests/new?merge_request%5Bsource_branch%5D=BRANCH\n...\n"})}),"\n",(0,r.jsx)(n.p,{children:"In the output you should have a link for creating a merge request. If you see this\nlink, open it and skip next step."}),"\n",(0,r.jsx)(n.h3,{id:"step-5---creating-a-merge-request-manually",children:"Step #5 - Creating a merge request manually"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Open your repository on GitLab."}),"\n",(0,r.jsxs)(n.li,{children:["On the left panel click on ",(0,r.jsx)(n.em,{children:"Merge Requests"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Click on ",(0,r.jsx)(n.em,{children:"New Merge Request"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["In ",(0,r.jsx)(n.em,{children:"Source branch"})," select ",(0,r.jsx)(n.code,{children:"login/pb071"})," and ",(0,r.jsx)(n.code,{children:"BRANCH"}),", which you created."]}),"\n",(0,r.jsxs)(n.li,{children:["In ",(0,r.jsx)(n.em,{children:"Target branch"})," select ",(0,r.jsx)(n.code,{children:"login/pb071"})," and your default branch you have seen\nin the output of the first command. (most likely ",(0,r.jsx)(n.code,{children:"master"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:["Click on ",(0,r.jsx)(n.em,{children:"Compare branches and continue"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-6---set-assignees",children:"Step #6 - Set assignees"}),"\n",(0,r.jsxs)(n.p,{children:["On the page that is opened, please check at the top that you are creating merge\nrequest ",(0,r.jsx)(n.strong,{children:"from"})," your new branch ",(0,r.jsx)(n.strong,{children:"to"})," your default branch (one of ",(0,r.jsx)(n.code,{children:"master"}),", ",(0,r.jsx)(n.code,{children:"main"}),"\nor ",(0,r.jsx)(n.code,{children:"trunk"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Then in the field ",(0,r.jsx)(n.em,{children:"Assignees"})," set your tutors based on the seminar group. You can\nuse login for a quick look up."]}),"\n",(0,r.jsxs)(n.p,{children:["In the end click on ",(0,r.jsx)(n.em,{children:"Submit merge request"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"step-7---return-to-default-branch",children:"Step #7 - Return to default branch"}),"\n",(0,r.jsx)(n.p,{children:"Homework assignments can be submitted only from branches specified in the rules\nfor the course. Because of that, before you do anything else, you should switch\nback to your default branch."}),"\n",(0,r.jsxs)(n.p,{children:["First of all, same as in step #1, check that your repository is clean with ",(0,r.jsx)(n.code,{children:"git status"}),".\nFor the sake of safety, do not continue without clean repository. Then with command\n",(0,r.jsx)(n.code,{children:"git checkout BRANCH"})," switch to your default branch ",(0,r.jsx)(n.code,{children:"BRANCH"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["If you do not know which branch is your default, try ",(0,r.jsx)(n.code,{children:"git branch"})," that outputs all branches in your repository. Default branch is typically ",(0,r.jsx)(n.code,{children:"master"}),", but can\nbe ",(0,r.jsx)(n.code,{children:"main"})," or ",(0,r.jsx)(n.code,{children:"trunk"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git status\n# Check if repository is clean\n\n# If you know, what is your default branch, you can skip next command.\naisa$ git branch\n# Find the default branch in the list; should be one of the `master`, `main` or\n# `trunk` and you should not have more than one of those.\n# In case the list clears the terminal and you cannot see shell prompt, you can\n# press `q` to quit the pager.\n\naisa$ git checkout master\n"})}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["Adapted from: ",(0,r.jsx)(n.a,{href:"https://www.fi.muni.cz/~xlacko1/pb071/mr.html",children:"https://www.fi.muni.cz/~xlacko1/pb071/mr.html"})]})]})}function d(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>i});var r=t(67294);const s={},o=r.createContext(s);function i(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[59],{51456:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>a,toc:()=>h});var r=t(85893),s=t(11151);const o={title:"Submitting merge requests"},i="Submitting merge requests for review",a={id:"mr",title:"Submitting merge requests",description:"This tutorial aims to show you how to follow basic git workflow and submit changes",source:"@site/c/mr.md",sourceDirName:".",slug:"/mr",permalink:"/c/mr",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/mr.md",tags:[],version:"current",lastUpdatedAt:1718813674,formattedLastUpdatedAt:"Jun 19, 2024",frontMatter:{title:"Submitting merge requests"},sidebar:"autogeneratedBar",previous:{title:"Practice exam C",permalink:"/c/pexam/cams"}},c={},h=[{value:"Tutorial",id:"tutorial",level:2},{value:"Step #1 - Starting from the clean repository",id:"step-1---starting-from-the-clean-repository",level:3},{value:"Step #2 - Create new branch",id:"step-2---create-new-branch",level:3},{value:"Step #3 - Do the assignment",id:"step-3---do-the-assignment",level:3},{value:"Step #4 - Commit and upload the changes to GitLab",id:"step-4---commit-and-upload-the-changes-to-gitlab",level:3},{value:"Step #5 - Creating a merge request manually",id:"step-5---creating-a-merge-request-manually",level:3},{value:"Step #6 - Set assignees",id:"step-6---set-assignees",level:3},{value:"Step #7 - Return to default branch",id:"step-7---return-to-default-branch",level:3}];function l(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"submitting-merge-requests-for-review",children:"Submitting merge requests for review"}),"\n",(0,r.jsxs)(n.p,{children:["This tutorial aims to show you how to follow basic git workflow and submit changes\nthrough ",(0,r.jsx)(n.em,{children:"Merge Requests"})," for review."]}),"\n",(0,r.jsxs)(n.p,{children:["The rudimentary idea behind aims for changes to be present on a separate branch\nthat is supposedly ",(0,r.jsx)(n.em,{children:"merged"})," into the default branch. Till then changes can be reviewed\non ",(0,r.jsx)(n.em,{children:"Merge Request"})," and additional changes may be made based on the reviews. Once\nthe changes satisfy requirements, the merge request is merged."]}),"\n",(0,r.jsx)(n.h2,{id:"tutorial",children:"Tutorial"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["Use this tutorial only for bonus assignments ",(0,r.jsx)(n.strong,{children:"made by your tutors"})," or in case\nyou need to make up for the absence."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-1---starting-from-the-clean-repository",children:"Step #1 - Starting from the clean repository"}),"\n",(0,r.jsxs)(n.p,{children:["In your repository (either locally or on aisa) type ",(0,r.jsx)(n.code,{children:"git status"})," and check if your\nrepository is clean and you are present on the main branch (",(0,r.jsx)(n.code,{children:"master"}),", ",(0,r.jsx)(n.code,{children:"main"})," or\n",(0,r.jsx)(n.code,{children:"trunk"}),"). If you do not know what your default branch is, it is probably ",(0,r.jsx)(n.code,{children:"master"}),"\nand you should not be on any other branch."]}),"\n",(0,r.jsx)(n.p,{children:"Output of the command should look like this:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git status\nOn branch master # Or main or trunk.\nYour branch is up to date with 'origin/master'.\n\nnothing to commit, working tree clean\n"})}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["In case you are on different branch or there are uncommitted changes,\n",(0,r.jsx)(n.strong,{children:"do not continue!!!"})," Clean your repository (commit the changes or discard\nthem), before you continue."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-2---create-new-branch",children:"Step #2 - Create new branch"}),"\n",(0,r.jsx)(n.p,{children:"In your repository write command:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git checkout -b BRANCH\nSwitched to a new branch 'BRANCH'\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Instead of ",(0,r.jsx)(n.code,{children:"BRANCH"})," use some reasonable name for the branch. For example if you\nare working on the seminar from 3rd week, name the branch ",(0,r.jsx)(n.code,{children:"seminar-03"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"step-3---do-the-assignment",children:"Step #3 - Do the assignment"}),"\n",(0,r.jsx)(n.p,{children:"Download the skeleton for the seminar assignment, extract and program. For example\nif you are working on 3rd seminar, you can do so by:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ wget https://www.fi.muni.cz/pb071/seminars/seminar-03/pb071-seminar-03.zip\naisa$ unzip pb071-seminar-03.zip\n# Now you should have directory 'seminar-03'.\naisa$ rm pb071-seminar-03.zip\naisa$ cd seminar-03\n# You can work on the assignment.\n"})}),"\n",(0,r.jsx)(n.h3,{id:"step-4---commit-and-upload-the-changes-to-gitlab",children:"Step #4 - Commit and upload the changes to GitLab"}),"\n",(0,r.jsxs)(n.p,{children:["The same way you ",(0,r.jsx)(n.em,{children:"add"})," and ",(0,r.jsx)(n.em,{children:"commit"})," files for the homework assignments, you do for\nthe seminar."]}),"\n",(0,r.jsxs)(n.p,{children:["Now you can upload the changes to GitLab. ",(0,r.jsx)(n.code,{children:"git push"})," is not enough, since repository\non GitLab does not know your new branch. You can solve this by adding arguments:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git push origin BRANCH\n...\nremote: To create a merge request for BRANCH, visit:\nremote: https://gitlab.fi.muni.cz/login/pb071/merge_requests/new?merge_request%5Bsource_branch%5D=BRANCH\n...\n"})}),"\n",(0,r.jsx)(n.p,{children:"In the output you should have a link for creating a merge request. If you see this\nlink, open it and skip next step."}),"\n",(0,r.jsx)(n.h3,{id:"step-5---creating-a-merge-request-manually",children:"Step #5 - Creating a merge request manually"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Open your repository on GitLab."}),"\n",(0,r.jsxs)(n.li,{children:["On the left panel click on ",(0,r.jsx)(n.em,{children:"Merge Requests"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Click on ",(0,r.jsx)(n.em,{children:"New Merge Request"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["In ",(0,r.jsx)(n.em,{children:"Source branch"})," select ",(0,r.jsx)(n.code,{children:"login/pb071"})," and ",(0,r.jsx)(n.code,{children:"BRANCH"}),", which you created."]}),"\n",(0,r.jsxs)(n.li,{children:["In ",(0,r.jsx)(n.em,{children:"Target branch"})," select ",(0,r.jsx)(n.code,{children:"login/pb071"})," and your default branch you have seen\nin the output of the first command. (most likely ",(0,r.jsx)(n.code,{children:"master"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:["Click on ",(0,r.jsx)(n.em,{children:"Compare branches and continue"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"step-6---set-assignees",children:"Step #6 - Set assignees"}),"\n",(0,r.jsxs)(n.p,{children:["On the page that is opened, please check at the top that you are creating merge\nrequest ",(0,r.jsx)(n.strong,{children:"from"})," your new branch ",(0,r.jsx)(n.strong,{children:"to"})," your default branch (one of ",(0,r.jsx)(n.code,{children:"master"}),", ",(0,r.jsx)(n.code,{children:"main"}),"\nor ",(0,r.jsx)(n.code,{children:"trunk"}),")."]}),"\n",(0,r.jsxs)(n.p,{children:["Then in the field ",(0,r.jsx)(n.em,{children:"Assignees"})," set your tutors based on the seminar group. You can\nuse login for a quick look up."]}),"\n",(0,r.jsxs)(n.p,{children:["In the end click on ",(0,r.jsx)(n.em,{children:"Submit merge request"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"step-7---return-to-default-branch",children:"Step #7 - Return to default branch"}),"\n",(0,r.jsx)(n.p,{children:"Homework assignments can be submitted only from branches specified in the rules\nfor the course. Because of that, before you do anything else, you should switch\nback to your default branch."}),"\n",(0,r.jsxs)(n.p,{children:["First of all, same as in step #1, check that your repository is clean with ",(0,r.jsx)(n.code,{children:"git status"}),".\nFor the sake of safety, do not continue without clean repository. Then with command\n",(0,r.jsx)(n.code,{children:"git checkout BRANCH"})," switch to your default branch ",(0,r.jsx)(n.code,{children:"BRANCH"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["If you do not know which branch is your default, try ",(0,r.jsx)(n.code,{children:"git branch"})," that outputs all branches in your repository. Default branch is typically ",(0,r.jsx)(n.code,{children:"master"}),", but can\nbe ",(0,r.jsx)(n.code,{children:"main"})," or ",(0,r.jsx)(n.code,{children:"trunk"}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"aisa$ git status\n# Check if repository is clean\n\n# If you know, what is your default branch, you can skip next command.\naisa$ git branch\n# Find the default branch in the list; should be one of the `master`, `main` or\n# `trunk` and you should not have more than one of those.\n# In case the list clears the terminal and you cannot see shell prompt, you can\n# press `q` to quit the pager.\n\naisa$ git checkout master\n"})}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["Adapted from: ",(0,r.jsx)(n.a,{href:"https://www.fi.muni.cz/~xlacko1/pb071/mr.html",children:"https://www.fi.muni.cz/~xlacko1/pb071/mr.html"})]})]})}function d(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},11151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>i});var r=t(67294);const s={},o=r.createContext(s);function i(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d05e838c.7590759c.js b/assets/js/d05e838c.6307f3c6.js similarity index 99% rename from assets/js/d05e838c.7590759c.js rename to assets/js/d05e838c.6307f3c6.js index a5f5e92..cd5a7a9 100644 --- a/assets/js/d05e838c.7590759c.js +++ b/assets/js/d05e838c.6307f3c6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[6544],{63004:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>o,toc:()=>l});var s=r(85893),t=r(11151);const i={id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},c=void 0,o={id:"bonuses/seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n",source:"@site/c/bonuses/05-06.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-05-06",permalink:"/c/bonuses/seminar-05-06",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/05-06.md",tags:[],version:"current",lastUpdatedAt:1718801795,formattedLastUpdatedAt:"Jun 19, 2024",frontMatter:{id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},sidebar:"autogeneratedBar",previous:{title:"4th seminar",permalink:"/c/bonuses/seminar-04"},next:{title:"8th seminar",permalink:"/c/bonuses/seminar-08"}},d={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Task no. 1: Reverse (0.5 K\u20a1)",id:"task-no-1-reverse-05-k",level:3},{value:"Task no. 2: Vigen\xe8re (0.5 K\u20a1)",id:"task-no-2-vigen\xe8re-05-k",level:3},{value:"Bonus part (0.5 K\u20a1)",id:"bonus-part-05-k",level:4},{value:"Task no. 3: Bit madness (0.5 K\u20a1)",id:"task-no-3-bit-madness-05-k",level:3},{value:"Task no. 4: All combined to BMP (0.5 K\u20a1)",id:"task-no-4-all-combined-to-bmp-05-k",level:3},{value:"Submitting",id:"submitting",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"For this bonus you can get at maximum 2.5 K\u20a1."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.a,{href:"pathname:///files/c/bonuses/05-06.tar.gz",children:"Source"})}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsx)(n.p,{children:"In this bonus you will implement few functions that will be used together for\nimplementing a very special cipher."}),"\n",(0,s.jsx)(n.h3,{id:"task-no-1-reverse-05-k",children:"Task no. 1: Reverse (0.5 K\u20a1)"}),"\n",(0,s.jsxs)(n.p,{children:["Write a function ",(0,s.jsx)(n.code,{children:"char* reverse(const char* text)"})," that returns copy of the input\nstring in reversed order (also uppercase)."]}),"\n",(0,s.jsxs)(n.p,{children:["In case you are given ",(0,s.jsx)(n.code,{children:"NULL"}),", return ",(0,s.jsx)(n.code,{children:"NULL"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Example (more in tests):"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'char* reversed = reverse("Hello world!");\n\nprintf("%s\\n", reversed);\n// "!DLROW OLLEH"\n\nif (reversed != NULL) {\n free(reversed);\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"task-no-2-vigen\xe8re-05-k",children:"Task no. 2: Vigen\xe8re (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"Vigen\xe8re cipher is similar to the Caesar cipher, but you also have a key that is\nused for encrypting (or decrypting)."}),"\n",(0,s.jsx)(n.p,{children:"Your task is to write two functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"char* vigenere_encrypt(const char* key, const char* text)"})," for encrypting"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"char* vigenere_decrypt(const char* key, const char* text)"})," for decrypting"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In both of those you should return uppercase characters."}),"\n",(0,s.jsx)(n.p,{children:"Meaning of the parameters you are given:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"key"})," - String that represents key that is used for *crypting. It consists of\none word and can have only characters of the alphabet. Does not matter if they\nare uppercase or lowercase."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"text"})," - String that is to be *crypted."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Function returns address of the encrypted (or decrypted) string. Or ",(0,s.jsx)(n.code,{children:"NULL"})," in case\nerror occurs."]}),"\n",(0,s.jsx)(n.p,{children:"Example:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'char *encrypted = vigenere_encrypt("CoMPuTeR", "Hello world!");\n\nprintf("%s\\n", encrypted);\n// "JSXAI PSINR!"\n\nif (encrypted != NULL) {\n free(encrypted)\n}\n'})}),"\n",(0,s.jsx)(n.h4,{id:"bonus-part-05-k",children:"Bonus part (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"If you can utilize helper function that would do both encrypting and decrypting,\nyou can gain 0.5 K\u20a1."}),"\n",(0,s.jsxs)(n.p,{children:["Usage of ",(0,s.jsx)(n.code,{children:"true"}),"/",(0,s.jsx)(n.code,{children:"false"})," to decide path in code is prohibited. It leads to merging\nof both functions into one. Point of this part is to discover a way to do this\ngenerically in such way that there are no separate paths for one or the other. One\nfunction with no branching for both of them, parametrization is your friend :)"]}),"\n",(0,s.jsx)(n.h3,{id:"task-no-3-bit-madness-05-k",children:"Task no. 3: Bit madness (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"This is a state of the art crypto. Please do not share :)"}),"\n",(0,s.jsx)(n.p,{children:"For encrypting:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Split the character that is to be encrypted in halves (4 and 4 bits each)."}),"\n",(0,s.jsx)(n.li,{children:"Bits in 1st half are to be split into pairs. Swap bits in those pairs."}),"\n",(0,s.jsxs)(n.li,{children:["Then use the 4 bits that you created in the 2nd step for ",(0,s.jsx)(n.code,{children:"XOR"})," with the other\n4 bits."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["This simple and ingenious principle will be illustrated on the following example.\nString we want to encrypt is ",(0,s.jsx)(n.code,{children:"Hello world!"}),". We need to encrypt each letter separately,\nso we will demonstrate on letter ",(0,s.jsx)(n.code,{children:"H"}),":"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Letter ",(0,s.jsx)(n.code,{children:"H"})," is represented in ASCII as ",(0,s.jsx)(n.code,{children:"72"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"72"})," represented in binary is: ",(0,s.jsx)(n.code,{children:"01001000"}),". So first 4 bits are: ",(0,s.jsx)(n.code,{children:"0100"})," and last\n4 bits are ",(0,s.jsx)(n.code,{children:"1000"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["First half of bits (",(0,s.jsx)(n.code,{children:"0100"}),") consists of 2 pairs (",(0,s.jsx)(n.code,{children:"01"})," and ",(0,s.jsx)(n.code,{children:"00"}),") which we swap\n(",(0,s.jsx)(n.code,{children:"01 ~> 10"})," and ",(0,s.jsx)(n.code,{children:"00 ~> 00"}),"). That way we get ",(0,s.jsx)(n.code,{children:"1000"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"That half is used for xor with the other 4 bits:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:" 1000 // second half\nXOR 1000 // first half after 2nd step\n--------\n 0000\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Now we combine both halves (first one is ",(0,s.jsx)(n.code,{children:"1000"}),", which we got from the 2nd step\nand second one is ",(0,s.jsx)(n.code,{children:"0000"}),", which we got from the 3rd step) and get ",(0,s.jsx)(n.code,{children:"10000000"}),",\nwhich is encrypted character ",(0,s.jsx)(n.code,{children:"H"})," using this method."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In case of decryption, reverse those steps."}),"\n",(0,s.jsx)(n.p,{children:"Your task is to implement functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"unsigned char* bit_encrypt(const char* text)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"char* bit_decrypt(const unsigned char* text)"})}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Example:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'unsigned char* encrypted = bit_encrypt("Hello world!");\n\nfor (int i = 0; i < 12;i++) {\n printf("%x ", encrypted[i]);\n //80 9c 95 95 96 11 bc 96 b9 95 9d 10\n}\n\nif (encrypted != NULL) {\n free(encrypted);\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"task-no-4-all-combined-to-bmp-05-k",children:"Task no. 4: All combined to BMP (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"Authors of the BMP cipher are non-disclosed :)"}),"\n",(0,s.jsx)(n.p,{children:"Create pair of functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"unsigned char* bmp_encrypt(const char* key, const char* text)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"char* bmp_decrypt(const char* key, const unsigned char* text)"})}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"BMP cipher consists of following steps for encrypting:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Reverse the input string"}),"\n",(0,s.jsx)(n.li,{children:"Use Vigenere on the string you got from step #1"}),"\n",(0,s.jsx)(n.li,{children:"Use bit madness on the string you got from step #2"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"For decrypting, reverse the steps."}),"\n",(0,s.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,s.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,s.jsx)(n.hr,{})]})}function a(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},11151:(e,n,r)=>{r.d(n,{Z:()=>o,a:()=>c});var s=r(67294);const t={},i=s.createContext(t);function c(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[6544],{63004:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>o,toc:()=>l});var s=r(85893),t=r(11151);const i={id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},c=void 0,o={id:"bonuses/seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n",source:"@site/c/bonuses/05-06.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-05-06",permalink:"/c/bonuses/seminar-05-06",draft:!1,unlisted:!1,editUrl:"https://github.com/mfocko/blog/tree/main/c/bonuses/05-06.md",tags:[],version:"current",lastUpdatedAt:1718813674,formattedLastUpdatedAt:"Jun 19, 2024",frontMatter:{id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},sidebar:"autogeneratedBar",previous:{title:"4th seminar",permalink:"/c/bonuses/seminar-04"},next:{title:"8th seminar",permalink:"/c/bonuses/seminar-08"}},d={},l=[{value:"Introduction",id:"introduction",level:2},{value:"Task no. 1: Reverse (0.5 K\u20a1)",id:"task-no-1-reverse-05-k",level:3},{value:"Task no. 2: Vigen\xe8re (0.5 K\u20a1)",id:"task-no-2-vigen\xe8re-05-k",level:3},{value:"Bonus part (0.5 K\u20a1)",id:"bonus-part-05-k",level:4},{value:"Task no. 3: Bit madness (0.5 K\u20a1)",id:"task-no-3-bit-madness-05-k",level:3},{value:"Task no. 4: All combined to BMP (0.5 K\u20a1)",id:"task-no-4-all-combined-to-bmp-05-k",level:3},{value:"Submitting",id:"submitting",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"For this bonus you can get at maximum 2.5 K\u20a1."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.a,{href:"pathname:///files/c/bonuses/05-06.tar.gz",children:"Source"})}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsx)(n.p,{children:"In this bonus you will implement few functions that will be used together for\nimplementing a very special cipher."}),"\n",(0,s.jsx)(n.h3,{id:"task-no-1-reverse-05-k",children:"Task no. 1: Reverse (0.5 K\u20a1)"}),"\n",(0,s.jsxs)(n.p,{children:["Write a function ",(0,s.jsx)(n.code,{children:"char* reverse(const char* text)"})," that returns copy of the input\nstring in reversed order (also uppercase)."]}),"\n",(0,s.jsxs)(n.p,{children:["In case you are given ",(0,s.jsx)(n.code,{children:"NULL"}),", return ",(0,s.jsx)(n.code,{children:"NULL"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Example (more in tests):"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'char* reversed = reverse("Hello world!");\n\nprintf("%s\\n", reversed);\n// "!DLROW OLLEH"\n\nif (reversed != NULL) {\n free(reversed);\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"task-no-2-vigen\xe8re-05-k",children:"Task no. 2: Vigen\xe8re (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"Vigen\xe8re cipher is similar to the Caesar cipher, but you also have a key that is\nused for encrypting (or decrypting)."}),"\n",(0,s.jsx)(n.p,{children:"Your task is to write two functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"char* vigenere_encrypt(const char* key, const char* text)"})," for encrypting"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"char* vigenere_decrypt(const char* key, const char* text)"})," for decrypting"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In both of those you should return uppercase characters."}),"\n",(0,s.jsx)(n.p,{children:"Meaning of the parameters you are given:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"key"})," - String that represents key that is used for *crypting. It consists of\none word and can have only characters of the alphabet. Does not matter if they\nare uppercase or lowercase."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"text"})," - String that is to be *crypted."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Function returns address of the encrypted (or decrypted) string. Or ",(0,s.jsx)(n.code,{children:"NULL"})," in case\nerror occurs."]}),"\n",(0,s.jsx)(n.p,{children:"Example:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'char *encrypted = vigenere_encrypt("CoMPuTeR", "Hello world!");\n\nprintf("%s\\n", encrypted);\n// "JSXAI PSINR!"\n\nif (encrypted != NULL) {\n free(encrypted)\n}\n'})}),"\n",(0,s.jsx)(n.h4,{id:"bonus-part-05-k",children:"Bonus part (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"If you can utilize helper function that would do both encrypting and decrypting,\nyou can gain 0.5 K\u20a1."}),"\n",(0,s.jsxs)(n.p,{children:["Usage of ",(0,s.jsx)(n.code,{children:"true"}),"/",(0,s.jsx)(n.code,{children:"false"})," to decide path in code is prohibited. It leads to merging\nof both functions into one. Point of this part is to discover a way to do this\ngenerically in such way that there are no separate paths for one or the other. One\nfunction with no branching for both of them, parametrization is your friend :)"]}),"\n",(0,s.jsx)(n.h3,{id:"task-no-3-bit-madness-05-k",children:"Task no. 3: Bit madness (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"This is a state of the art crypto. Please do not share :)"}),"\n",(0,s.jsx)(n.p,{children:"For encrypting:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Split the character that is to be encrypted in halves (4 and 4 bits each)."}),"\n",(0,s.jsx)(n.li,{children:"Bits in 1st half are to be split into pairs. Swap bits in those pairs."}),"\n",(0,s.jsxs)(n.li,{children:["Then use the 4 bits that you created in the 2nd step for ",(0,s.jsx)(n.code,{children:"XOR"})," with the other\n4 bits."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["This simple and ingenious principle will be illustrated on the following example.\nString we want to encrypt is ",(0,s.jsx)(n.code,{children:"Hello world!"}),". We need to encrypt each letter separately,\nso we will demonstrate on letter ",(0,s.jsx)(n.code,{children:"H"}),":"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Letter ",(0,s.jsx)(n.code,{children:"H"})," is represented in ASCII as ",(0,s.jsx)(n.code,{children:"72"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"72"})," represented in binary is: ",(0,s.jsx)(n.code,{children:"01001000"}),". So first 4 bits are: ",(0,s.jsx)(n.code,{children:"0100"})," and last\n4 bits are ",(0,s.jsx)(n.code,{children:"1000"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["First half of bits (",(0,s.jsx)(n.code,{children:"0100"}),") consists of 2 pairs (",(0,s.jsx)(n.code,{children:"01"})," and ",(0,s.jsx)(n.code,{children:"00"}),") which we swap\n(",(0,s.jsx)(n.code,{children:"01 ~> 10"})," and ",(0,s.jsx)(n.code,{children:"00 ~> 00"}),"). That way we get ",(0,s.jsx)(n.code,{children:"1000"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"That half is used for xor with the other 4 bits:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:" 1000 // second half\nXOR 1000 // first half after 2nd step\n--------\n 0000\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Now we combine both halves (first one is ",(0,s.jsx)(n.code,{children:"1000"}),", which we got from the 2nd step\nand second one is ",(0,s.jsx)(n.code,{children:"0000"}),", which we got from the 3rd step) and get ",(0,s.jsx)(n.code,{children:"10000000"}),",\nwhich is encrypted character ",(0,s.jsx)(n.code,{children:"H"})," using this method."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In case of decryption, reverse those steps."}),"\n",(0,s.jsx)(n.p,{children:"Your task is to implement functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"unsigned char* bit_encrypt(const char* text)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"char* bit_decrypt(const unsigned char* text)"})}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Example:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-c",children:'unsigned char* encrypted = bit_encrypt("Hello world!");\n\nfor (int i = 0; i < 12;i++) {\n printf("%x ", encrypted[i]);\n //80 9c 95 95 96 11 bc 96 b9 95 9d 10\n}\n\nif (encrypted != NULL) {\n free(encrypted);\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"task-no-4-all-combined-to-bmp-05-k",children:"Task no. 4: All combined to BMP (0.5 K\u20a1)"}),"\n",(0,s.jsx)(n.p,{children:"Authors of the BMP cipher are non-disclosed :)"}),"\n",(0,s.jsx)(n.p,{children:"Create pair of functions:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"unsigned char* bmp_encrypt(const char* key, const char* text)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.code,{children:"char* bmp_decrypt(const char* key, const unsigned char* text)"})}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"BMP cipher consists of following steps for encrypting:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"Reverse the input string"}),"\n",(0,s.jsx)(n.li,{children:"Use Vigenere on the string you got from step #1"}),"\n",(0,s.jsx)(n.li,{children:"Use bit madness on the string you got from step #2"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"For decrypting, reverse the steps."}),"\n",(0,s.jsx)(n.h2,{id:"submitting",children:"Submitting"}),"\n",(0,s.jsx)(n.p,{children:"In case you have any questions, feel free to reach out to me."}),"\n",(0,s.jsx)(n.hr,{})]})}function a(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},11151:(e,n,r)=>{r.d(n,{Z:()=>o,a:()=>c});var s=r(67294);const t={},i=s.createContext(t);function c(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.8dc1a0ec.js b/assets/js/main.7af15fef.js similarity index 98% rename from assets/js/main.8dc1a0ec.js rename to assets/js/main.7af15fef.js index 6941ef8..ee14ecf 100644 --- a/assets/js/main.8dc1a0ec.js +++ b/assets/js/main.7af15fef.js @@ -1,2 +1,2 @@ -/*! For license information please see main.8dc1a0ec.js.LICENSE.txt */ -(self.webpackChunkfi=self.webpackChunkfi||[]).push([[179],{20830:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(67294);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(67294);var r=n(68356),a=n.n(r),o=n(16887);const i={"0123bc76":[()=>n.e(3734).then(n.t.bind(n,76554,19)),"~docs/algorithms/tag-algorithms-tags-c-e22.json",76554],"0178f9ad":[()=>n.e(9898).then(n.bind(n,35610)),"@site/algorithms/08-rb-trees/2022-04-05-applications.md",35610],"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,24524)),"@theme/BlogTagsListPage",24524],"0220f5fc":[()=>n.e(1378).then(n.t.bind(n,85804,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-plugin-content-blog/blog/plugin-route-context-module-100.json",85804],"0608d96f":[()=>n.e(7568).then(n.t.bind(n,77158,19)),"~blog/blog/blog-tags-vps-843-list.json",77158],"06c4a8fc":[()=>n.e(2125).then(n.t.bind(n,4697,19)),"~docs/algorithms/tag-algorithms-tags-testing-0c4.json",4697],"0816068a":[()=>n.e(2948).then(n.t.bind(n,17702,19)),"~blog/blog/blog-tags-hype-1ee.json",17702],"087808f1":[()=>n.e(3731).then(n.bind(n,48157)),"@site/algorithms/12-hash-tables/2023-11-28-breaking/index.md",48157],"08dfa3a2":[()=>n.e(2606).then(n.t.bind(n,32412,19)),"~docs/algorithms/tag-algorithms-tags-astar-f6e.json",32412],"0bfe45d5":[()=>n.e(4269).then(n.t.bind(n,13847,19)),"~blog/blog/blog-tags-rust-0c9-list.json",13847],"0fcbc6ca":[()=>Promise.all([n.e(532),n.e(1851)]).then(n.bind(n,39900)),"@site/src/pages/talks.tsx",39900],"146d9b84":[()=>n.e(9300).then(n.t.bind(n,96671,19)),"~blog/blog/blog-tags-admin-b05-list.json",96671],"14eb3368":[()=>Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,34228)),"@theme/DocCategoryGeneratedIndexPage",34228],"1535ede8":[()=>n.e(5376).then(n.bind(n,44969)),"@site/c/bonuses/10.md",44969],15966941:[()=>n.e(8326).then(n.bind(n,16721)),"@site/algorithms/12-hash-tables/2023-11-28-breaking/02-mitigations.md",16721],"16cbc838":[()=>n.e(1494).then(n.t.bind(n,98252,19)),"~docs/algorithms/tag-algorithms-tags-iterative-d5b.json",98252],"171c9bb5":[()=>n.e(5329).then(n.t.bind(n,27615,19)),"~blog/blog/blog-tags-devconf-979.json",27615],17896441:[()=>Promise.all([n.e(532),n.e(9365),n.e(7918)]).then(n.bind(n,15154)),"@theme/DocItem",15154],"182b5a8d":[()=>n.e(6048).then(n.bind(n,32582)),"@site/blog/2024-01-28-rust-opinion.md?truncated=true",32582],"19d7c045":[()=>n.e(4637).then(n.t.bind(n,67772,19)),"~blog/blog/blog-tags-advent-of-code-49f.json",67772],"1a2684fd":[()=>n.e(5688).then(n.t.bind(n,99303,19)),"~blog/blog/blog-tags-fedora-bd8.json",99303],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,48852)),"@theme/SearchPage",48852],"1a606400":[()=>n.e(494).then(n.t.bind(n,82400,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-plugin-content-docs/algorithms/plugin-route-context-module-100.json",82400],"1acf65cc":[()=>n.e(8529).then(n.bind(n,34568)),"@site/c/pexam/b-garbage_collect.md",34568],"1cd58e77":[()=>n.e(1547).then(n.bind(n,32090)),"@site/algorithms/04-recursion/2023-08-17-pyramid-slide-down/04-bottom-up-dp.md",32090],"22a175ec":[()=>Promise.all([n.e(532),n.e(6890)]).then(n.bind(n,40707)),"@site/src/pages/contributions.tsx",40707],"24fecc0a":[()=>n.e(3707).then(n.bind(n,69383)),"@site/algorithms/03-time-complexity/2021-03-31-extend.md",69383],"257fa000":[()=>n.e(9595).then(n.t.bind(n,35455,19)),"~blog/blog/blog-tags-cult-e97-list.json",35455],"28d80ff8":[()=>n.e(6435).then(n.t.bind(n,7465,19)),"~docs/algorithms/tag-algorithms-tags-sorting-d73.json",7465],29694455:[()=>n.e(3388).then(n.t.bind(n,39828,19)),"~blog/blog/blog-tags-iterators-977-list.json",39828],"2af5d0a7":[()=>n.e(3979).then(n.t.bind(n,53703,19)),"~docs/algorithms/tag-algorithms-tags-a-star-775.json",53703],"2b89902a":[()=>n.e(6342).then(n.t.bind(n,45443,19)),"~docs/algorithms/tag-algorithms-tags-recursion-1bd.json",45443],"2ca64e35":[()=>n.e(281).then(n.bind(n,99544)),"@site/algorithms/04-recursion/2022-11-29-karel/index.md",99544],"2d2e3e59":[()=>n.e(6689).then(n.bind(n,55268)),"@site/blog/2024-06-19-devconf-2024.md",55268],"2fcf0558":[()=>n.e(4638).then(n.t.bind(n,69470,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-hash-tables-062.json",69470],"3011a4c0":[()=>n.e(7926).then(n.t.bind(n,31670,19)),"~blog/blog/blog-tags-copr-70b-list.json",31670],30814625:[()=>n.e(115).then(n.bind(n,78416)),"@site/algorithms/04-recursion/2022-11-29-karel/2023-12-24-solution.md",78416],"3238adfd":[()=>n.e(7285).then(n.t.bind(n,16107,19)),"~blog/blog/blog-tags-lts-b6c.json",16107],"34ab65f4":[()=>n.e(3220).then(n.t.bind(n,28865,19)),"~docs/algorithms/tag-algorithms-tags-postconditions-1f3.json",28865],"34df9f28":[()=>n.e(9977).then(n.t.bind(n,59267,19)),"~blog/blog/blog-tags-paywall-11b.json",59267],"354a7b72":[()=>n.e(9414).then(n.bind(n,46617)),"@site/algorithms/10-graphs/2022-04-30-bfs-tree.md",46617],"3716fece":[()=>n.e(1511).then(n.bind(n,76225)),"@site/blog/2024-06-19-devconf-2024.md?truncated=true",76225],"3720c009":[()=>Promise.all([n.e(532),n.e(3751)]).then(n.bind(n,10727)),"@theme/DocTagsListPage",10727],"377f3aa1":[()=>n.e(1011).then(n.bind(n,7582)),"@site/blog/aoc-2022/02-week-2.md",7582],"3a0bc46c":[()=>n.e(7524).then(n.t.bind(n,80975,19)),"~blog/blog/blog-tags-fedora-bd8-list.json",80975],"3adcbc3a":[()=>n.e(5701).then(n.bind(n,62535)),"@site/algorithms/11-paths/2024-01-01-bf-to-astar/01-bf.md",62535],"3d92ba6e":[()=>n.e(8236).then(n.t.bind(n,77778,19)),"~docs/algorithms/tag-algorithms-tags-dijkstra-48e.json",77778],"3da4b779":[()=>n.e(2177).then(n.bind(n,28737)),"@site/blog/aoc-2022/04-week-4.md",28737],"4200b1a9":[()=>n.e(866).then(n.t.bind(n,24612,19)),"~blog/blog/blog-archive-80c.json",24612],"45c9e308":[()=>n.e(7084).then(n.bind(n,53181)),"@site/cpp/07-exceptions-and-raii/2023-11-24-placeholders.md",53181],"4621632b":[()=>n.e(3519).then(n.t.bind(n,29760,19)),"~blog/blog/blog-tags-cpp-7c7-list.json",29760],"48b268a6":[()=>n.e(1648).then(n.t.bind(n,35067,19)),"~docs/c/category-c-autogeneratedbar-category-bonuses-216.json",35067],"493c0536":[()=>n.e(7292).then(n.bind(n,45594)),"@site/algorithms/11-paths/2024-01-01-bf-to-astar/03-astar.md",45594],"4e546705":[()=>n.e(4327).then(n.t.bind(n,61795,19)),"~docs/c/version-current-metadata-prop-751.json",61795],"4edd2021":[()=>n.e(5975).then(n.t.bind(n,21705,19)),"~blog/blog/blog-tags-cpp-7c7.json",21705],"4f96b16e":[()=>n.e(6306).then(n.bind(n,24693)),"@site/c/pexam/c-cams.md",24693],"4fd4011a":[()=>n.e(565).then(n.t.bind(n,43050,19)),"~blog/blog/blog-tags-lts-b6c-list.json",43050],51624505:[()=>n.e(4394).then(n.bind(n,32609)),"@site/blog/aoc-2022/00-intro.md",32609],"520f8175":[()=>n.e(8058).then(n.t.bind(n,24353,19)),"~docs/algorithms/tag-algorithms-tags-cpp-0d2.json",24353],"52f2a5bf":[()=>n.e(5430).then(n.t.bind(n,61387,19)),"~blog/blog/blog-tags-red-hat-df4.json",61387],"534d4833":[()=>n.e(9771).then(n.bind(n,93019)),"@site/algorithms/02-algorithms-correctness/2021-03-18-postcondition-ambiguity.md",93019],"57ac6224":[()=>n.e(2698).then(n.t.bind(n,35340,19)),"~blog/blog/blog-tags-linux-distributions-991-list.json",35340],"595c7293":[()=>n.e(5634).then(n.bind(n,58396)),"@site/c/bonuses/08.md",58396],"5c15401e":[()=>n.e(9579).then(n.t.bind(n,43761,19)),"~docs/algorithms/tag-algorithms-tags-bellman-ford-731.json",43761],"5ca803d2":[()=>n.e(9173).then(n.t.bind(n,24890,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-plugin-content-docs/c/plugin-route-context-module-100.json",24890],"5e91a78c":[()=>n.e(1033).then(n.t.bind(n,82547,19)),"~blog/blog/blog-tags-linux-distributions-991.json",82547],"5e95c892":[()=>n.e(9661).then(n.bind(n,41892)),"@theme/DocsRoot",41892],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,36809)),"@generated/docusaurus.config",36809],"62d847b3":[()=>n.e(8520).then(n.t.bind(n,91901,19)),"~blog/blog/blog-tags-advent-of-code-2022-3db-list.json",91901],"66d5ef6c":[()=>n.e(9228).then(n.t.bind(n,4087,19)),"~blog/blog/blog-tags-tags-4c2.json",4087],"686a7a89":[()=>n.e(728).then(n.t.bind(n,77507,19)),"~docs/algorithms/tag-algorithms-tags-graphs-31d.json",77507],"6875c492":[()=>Promise.all([n.e(532),n.e(9365),n.e(130),n.e(8610)]).then(n.bind(n,41714)),"@theme/BlogTagsPostsPage",41714],"698e2076":[()=>n.e(3713).then(n.bind(n,38961)),"@site/algorithms/11-paths/2024-01-01-bf-to-astar/02-dijkstra.md",38961],"6bc697d0":[()=>n.e(5287).then(n.t.bind(n,68529,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-plugin-content-docs/cpp/plugin-route-context-module-100.json",68529],"6e3cbca1":[()=>n.e(3276).then(n.t.bind(n,29538,19)),"~docs/algorithms/version-current-metadata-prop-751.json",29538],"7052c0bc":[()=>n.e(9731).then(n.bind(n,42286)),"@site/cpp/00-intro.md",42286],"70a4540f":[()=>n.e(9249).then(n.bind(n,44493)),"@site/algorithms/04-recursion/2023-08-17-pyramid-slide-down/01-naive.md",44493],"75cccf44":[()=>n.e(4256).then(n.bind(n,98215)),"@site/blog/leetcode/sort-matrix-diagonally.md?truncated=true",98215],"765ea78b":[()=>n.e(3039).then(n.t.bind(n,83010,19)),"~blog/blog/blog-tags-\ud83c\udfed-551.json",83010],"769debb9":[()=>n.e(9931).then(n.t.bind(n,33792,19)),"~blog/blog/blog-tags-paywall-11b-list.json",33792],"794ef108":[()=>n.e(3803).then(n.bind(n,86427)),"@site/c/00-intro.md",86427],"7a5bb070":[()=>n.e(4582).then(n.t.bind(n,64863,19)),"~blog/blog/blog-tags-memory-safety-1ae.json",64863],"7ce7faac":[()=>n.e(6064).then(n.t.bind(n,12884,19)),"~docs/algorithms/tag-algorithms-tags-solution-61b.json",12884],"7e6d325b":[()=>n.e(3184).then(n.t.bind(n,26139,19)),"~docs/cpp/version-current-metadata-prop-751.json",26139],"84d1e0d8":[()=>n.e(1885).then(n.bind(n,49713)),"@site/algorithms/00-intro.md",49713],"86cd1460":[()=>n.e(1235).then(n.t.bind(n,38968,19)),"~blog/blog/blog-tags-leetcode-042.json",38968],"8a25f659":[()=>n.e(7728).then(n.bind(n,73212)),"@site/algorithms/04-recursion/2023-08-17-pyramid-slide-down/03-top-down-dp.md",73212],"8b1802c5":[()=>n.e(8480).then(n.t.bind(n,60832,19)),"~blog/blog/blog-tags-advent-of-code-49f-list.json",60832],"8c0e532b":[()=>n.e(822).then(n.t.bind(n,73968,19)),"~blog/blog/blog-tags-vps-843.json",73968],"8d31a880":[()=>n.e(9066).then(n.t.bind(n,72232,19)),"~docs/algorithms/tag-algorithms-tags-python-48f.json",72232],"8e6bb954":[()=>n.e(5775).then(n.t.bind(n,76206,19)),"~docs/algorithms/tag-algorithms-tags-exponential-60a.json",76206],"9287eafd":[()=>n.e(5521).then(n.t.bind(n,90716,19)),"~blog/blog/blog-tags-rust-0c9.json",90716],"933b95b3":[()=>n.e(3887).then(n.t.bind(n,7405,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-recursion-257.json",7405],"947341b7":[()=>n.e(1145).then(n.t.bind(n,2897,19)),"~docs/algorithms/tag-algorithms-tags-bfs-69f.json",2897],"95b96bb9":[()=>n.e(3561).then(n.t.bind(n,24577,19)),"~blog/blog/blog-post-list-prop-blog.json",24577],"95f41f0b":[()=>n.e(9385).then(n.bind(n,93195)),"@site/blog/aoc-2022/01-week-1.md?truncated=true",93195],"962da50c":[()=>n.e(2264).then(n.t.bind(n,9705,19)),"~docs/c/category-c-autogeneratedbar-category-practice-exams-e97.json",9705],"976c4f3b":[()=>n.e(4562).then(n.t.bind(n,69019,19)),"~docs/algorithms/tag-algorithms-tags-java-6c3.json",69019],"97a42631":[()=>n.e(1464).then(n.t.bind(n,77343,19)),"~docs/algorithms/tags-list-current-prop-15a.json",77343],"9a3dc578":[()=>n.e(655).then(n.t.bind(n,9916,19)),"~docs/algorithms/tag-algorithms-tags-dynamic-array-5d3.json",9916],"9ad42b04":[()=>n.e(8041).then(n.t.bind(n,41271,19)),"~blog/blog/blog-tags-devconf-979-list.json",41271],"9b91a88c":[()=>n.e(2545).then(n.bind(n,19466)),"@site/algorithms/04-recursion/2023-08-17-pyramid-slide-down/index.md",19466],"9df0e937":[()=>n.e(2210).then(n.t.bind(n,55256,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-graphs-2e2.json",55256],"9e4087bc":[()=>n.e(3608).then(n.bind(n,63169)),"@theme/BlogArchivePage",63169],a082abd3:[()=>n.e(8786).then(n.t.bind(n,73276,19)),"~blog/blog/blog-tags-admin-b05.json",73276],a2ba8888:[()=>n.e(8289).then(n.t.bind(n,55941,19)),"~docs/algorithms/tag-algorithms-tags-brute-force-3cb.json",55941],a4c10cf4:[()=>n.e(4382).then(n.t.bind(n,30685,19)),"~docs/algorithms/tag-algorithms-tags-time-complexity-c50.json",30685],a6a48ea2:[()=>n.e(3618).then(n.bind(n,1176)),"@site/blog/aoc-2022/02-week-2.md?truncated=true",1176],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(9365),n.e(130),n.e(3089)]).then(n.bind(n,80046)),"@theme/BlogListPage",80046],a7098721:[()=>n.e(1050).then(n.t.bind(n,26615,19)),"~blog/blog/blog-c06.json",26615],a7bd4aaa:[()=>n.e(8518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a80747a0:[()=>n.e(5824).then(n.t.bind(n,4464,19)),"~blog/blog/blog-tags-advent-of-code-2022-3db.json",4464],a94703ab:[()=>Promise.all([n.e(532),n.e(4368)]).then(n.bind(n,12674)),"@theme/DocRoot",12674],aa24fd5d:[()=>n.e(7257).then(n.bind(n,90251)),"@site/algorithms/12-hash-tables/2023-11-28-breaking/01-python.md",90251],aa635a28:[()=>n.e(2321).then(n.bind(n,72820)),"@site/blog/2024-02-07-lts-distros.md?truncated=true",72820],ab2721d4:[()=>n.e(7755).then(n.bind(n,53037)),"@site/blog/aoc-2022/04-week-4.md?truncated=true",53037],af8b72a7:[()=>n.e(5658).then(n.bind(n,10507)),"@site/blog/2023-08-02-copr.md?truncated=true",10507],b0291f37:[()=>n.e(6097).then(n.t.bind(n,7085,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7085],b1288602:[()=>n.e(59).then(n.bind(n,51456)),"@site/c/mr.md",51456],b25fbc58:[()=>n.e(9197).then(n.t.bind(n,75617,19)),"~blog/blog/blog-tags-\ud83c\udfed-551-list.json",75617],b45dccf0:[()=>n.e(9679).then(n.t.bind(n,58296,19)),"~blog/blog/blog-tags-copr-70b.json",58296],b5a32f14:[()=>n.e(2433).then(n.bind(n,31976)),"@site/blog/2023-08-02-copr.md",31976],b8cbf382:[()=>n.e(7438).then(n.t.bind(n,74632,19)),"~docs/algorithms/tag-algorithms-tags-greedy-02f.json",74632],b9f7f5c4:[()=>n.e(9179).then(n.bind(n,76699)),"@site/cpp/environment.md",76699],bb882650:[()=>n.e(8091).then(n.bind(n,66765)),"@site/blog/aoc-2022/03-week-3.md?truncated=true",66765],bb984793:[()=>n.e(6864).then(n.t.bind(n,82505,19)),"~docs/algorithms/tag-algorithms-tags-karel-df7.json",82505],bc0c9d90:[()=>n.e(354).then(n.bind(n,50476)),"@site/c/bonuses/04.md",50476],bc2d22bc:[()=>n.e(6519).then(n.t.bind(n,70428,19)),"~docs/algorithms/tag-algorithms-tags-bottom-up-dp-4f9.json",70428],c4c4056e:[()=>n.e(635).then(n.bind(n,61381)),"@site/algorithms/11-paths/2024-01-01-bf-to-astar/index.md",61381],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4195)]).then(n.bind(n,53261)),"@site/src/pages/index.js",53261],c580b66a:[()=>n.e(6573).then(n.t.bind(n,45021,19)),"~docs/algorithms/tag-algorithms-tags-top-down-dp-c2f.json",45021],c90b7ff3:[()=>n.e(3602).then(n.t.bind(n,44960,19)),"~blog/blog/blog-tags-hype-1ee-list.json",44960],ccc49370:[()=>Promise.all([n.e(532),n.e(9365),n.e(130),n.e(6103)]).then(n.bind(n,65203)),"@theme/BlogPostPage",65203],cfa2b263:[()=>n.e(3086).then(n.bind(n,34437)),"@site/blog/leetcode/sort-matrix-diagonally.md",34437],d05e838c:[()=>n.e(6544).then(n.bind(n,63004)),"@site/c/bonuses/05-06.md",63004],d255bd7f:[()=>n.e(6292).then(n.t.bind(n,60341,19)),"~docs/algorithms/tag-algorithms-tags-red-black-trees-c61.json",60341],d309b5b1:[()=>n.e(8908).then(n.t.bind(n,26102,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-algorithms-and-correctness-d51.json",26102],d309eaf6:[()=>n.e(6995).then(n.bind(n,54506)),"@site/blog/2024-02-07-lts-distros.md",54506],d4b1e057:[()=>n.e(1492).then(n.t.bind(n,12842,19)),"~docs/algorithms/tag-algorithms-tags-balanced-trees-b3e.json",12842],d57b4369:[()=>n.e(6179).then(n.t.bind(n,52715,19)),"~docs/algorithms/tag-algorithms-tags-csharp-d1d.json",52715],d675395f:[()=>n.e(2741).then(n.t.bind(n,15745,19)),"/home/runner/work/blog/blog/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",15745],d79dd549:[()=>n.e(5169).then(n.t.bind(n,29261,19)),"~blog/blog/blog-tags-red-hat-df4-list.json",29261],d7f7fb17:[()=>n.e(1171).then(n.bind(n,3455)),"@site/blog/aoc-2022/00-intro.md?truncated=true",3455],d8f4410e:[()=>n.e(2997).then(n.t.bind(n,41941,19)),"~docs/algorithms/tag-algorithms-tags-hash-tables-b36.json",41941],dd841e73:[()=>n.e(2482).then(n.t.bind(n,40155,19)),"~docs/algorithms/tag-algorithms-tags-dynamic-programming-3e6.json",40155],ddc7679f:[()=>n.e(569).then(n.bind(n,64322)),"@site/algorithms/10-graphs/2021-05-18-iterative-and-iterators.md",64322],dead8108:[()=>n.e(8807).then(n.bind(n,21431)),"@site/c/bonuses/03.md",21431],decbf9d1:[()=>n.e(2445).then(n.t.bind(n,88876,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-asymptotic-notation-and-time-complexity-e0d.json",88876],df078f58:[()=>n.e(7743).then(n.t.bind(n,88298,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-paths-in-graphs-202.json",88298],df0885f0:[()=>n.e(4343).then(n.t.bind(n,34175,19)),"~docs/algorithms/tag-algorithms-tags-iterators-13a.json",34175],df203c0f:[()=>Promise.all([n.e(532),n.e(9924)]).then(n.bind(n,40491)),"@theme/DocTagDocListPage",40491],dff2ebad:[()=>n.e(146).then(n.bind(n,42492)),"@site/blog/aoc-2022/01-week-1.md",42492],e0f0fdef:[()=>n.e(8404).then(n.t.bind(n,25240,19)),"~blog/blog/blog-tags-conferences-51c.json",25240],e1717305:[()=>n.e(70).then(n.t.bind(n,96377,19)),"~blog/blog/blog-tags-support-474-list.json",96377],e1d2ae23:[()=>n.e(1475).then(n.t.bind(n,36302,19)),"~docs/algorithms/tag-algorithms-tags-applications-020.json",36302],e31003e9:[()=>n.e(1960).then(n.t.bind(n,81695,19)),"~docs/cpp/category-cpp-autogeneratedbar-category-exceptions-and-raii-6e9.json",81695],e89da83e:[()=>n.e(8757).then(n.t.bind(n,97416,19)),"~blog/blog/blog-tags-leetcode-042-list.json",97416],eba2374c:[()=>n.e(8387).then(n.t.bind(n,47662,19)),"~docs/algorithms/tag-algorithms-tags-backtracking-bb2.json",47662],f44abc07:[()=>n.e(2204).then(n.t.bind(n,39006,19)),"~blog/blog/blog-tags-cult-e97.json",39006],f48be158:[()=>n.e(4064).then(n.bind(n,12326)),"@site/blog/aoc-2022/03-week-3.md",12326],f5d65bd1:[()=>n.e(5617).then(n.t.bind(n,66775,19)),"~blog/blog/blog-tags-support-474.json",66775],f7189688:[()=>n.e(4625).then(n.t.bind(n,9843,19)),"~blog/blog/blog-tags-conferences-51c-list.json",9843],f71d1f68:[()=>n.e(6069).then(n.bind(n,13068)),"@site/blog/2024-01-28-rust-opinion.md",13068],f75910c4:[()=>n.e(5934).then(n.bind(n,1910)),"@site/algorithms/04-recursion/2023-08-17-pyramid-slide-down/02-greedy.md",1910],f7d29e9b:[()=>n.e(7959).then(n.t.bind(n,89266,19)),"~blog/blog/blog-tags-memory-safety-1ae-list.json",89266],fb4361d3:[()=>n.e(6327).then(n.t.bind(n,9631,19)),"~docs/algorithms/category-algorithms-autogeneratedbar-category-red-black-trees-d8a.json",9631],ff472cd9:[()=>n.e(8643).then(n.t.bind(n,7122,19)),"~blog/blog/blog-tags-iterators-977.json",7122],ff82dde7:[()=>Promise.all([n.e(532),n.e(8472)]).then(n.bind(n,63935)),"@site/algorithms/08-rb-trees/2023-06-10-rules.md",63935]};var s=n(85893);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(99670),u=n(30226);function d(e,t){if("*"===e)return a()({loading:l,loader:()=>n.e(1772).then(n.bind(n,51772)),modules:["@theme/NotFound"],webpack:()=>[51772],render(e,t){const n=e.default;return(0,s.jsx)(u.z,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],g=(0,c.Z)(r);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;return delete a.__context,(0,s.jsx)(u.z,{value:i,children:(0,s.jsx)(o,{...a,...n})})}})}const p=[{path:"/blog/",component:d("/blog/","f83"),exact:!0},{path:"/blog/2023/08/02/copr/",component:d("/blog/2023/08/02/copr/","69d"),exact:!0},{path:"/blog/2024/01/28/rust-opinion/",component:d("/blog/2024/01/28/rust-opinion/","98d"),exact:!0},{path:"/blog/2024/02/07/lts-distros/",component:d("/blog/2024/02/07/lts-distros/","7f0"),exact:!0},{path:"/blog/2024/06/19/devconf-2024/",component:d("/blog/2024/06/19/devconf-2024/","427"),exact:!0},{path:"/blog/aoc-2022/1st-week/",component:d("/blog/aoc-2022/1st-week/","df4"),exact:!0},{path:"/blog/aoc-2022/2nd-week/",component:d("/blog/aoc-2022/2nd-week/","783"),exact:!0},{path:"/blog/aoc-2022/3rd-week/",component:d("/blog/aoc-2022/3rd-week/","7c5"),exact:!0},{path:"/blog/aoc-2022/4th-week/",component:d("/blog/aoc-2022/4th-week/","1ac"),exact:!0},{path:"/blog/aoc-2022/intro/",component:d("/blog/aoc-2022/intro/","ada"),exact:!0},{path:"/blog/archive/",component:d("/blog/archive/","22d"),exact:!0},{path:"/blog/leetcode/sort-diagonally/",component:d("/blog/leetcode/sort-diagonally/","d97"),exact:!0},{path:"/blog/tags/",component:d("/blog/tags/","f23"),exact:!0},{path:"/blog/tags/\ud83c\udfed/",component:d("/blog/tags/\ud83c\udfed/","381"),exact:!0},{path:"/blog/tags/admin/",component:d("/blog/tags/admin/","d3a"),exact:!0},{path:"/blog/tags/advent-of-code-2022/",component:d("/blog/tags/advent-of-code-2022/","7bd"),exact:!0},{path:"/blog/tags/advent-of-code/",component:d("/blog/tags/advent-of-code/","313"),exact:!0},{path:"/blog/tags/conferences/",component:d("/blog/tags/conferences/","77a"),exact:!0},{path:"/blog/tags/copr/",component:d("/blog/tags/copr/","959"),exact:!0},{path:"/blog/tags/cpp/",component:d("/blog/tags/cpp/","770"),exact:!0},{path:"/blog/tags/cult/",component:d("/blog/tags/cult/","73d"),exact:!0},{path:"/blog/tags/devconf/",component:d("/blog/tags/devconf/","602"),exact:!0},{path:"/blog/tags/fedora/",component:d("/blog/tags/fedora/","c8d"),exact:!0},{path:"/blog/tags/hype/",component:d("/blog/tags/hype/","d35"),exact:!0},{path:"/blog/tags/iterators/",component:d("/blog/tags/iterators/","2eb"),exact:!0},{path:"/blog/tags/leetcode/",component:d("/blog/tags/leetcode/","e31"),exact:!0},{path:"/blog/tags/linux-distributions/",component:d("/blog/tags/linux-distributions/","2be"),exact:!0},{path:"/blog/tags/lts/",component:d("/blog/tags/lts/","fa3"),exact:!0},{path:"/blog/tags/memory-safety/",component:d("/blog/tags/memory-safety/","d15"),exact:!0},{path:"/blog/tags/paywall/",component:d("/blog/tags/paywall/","9e7"),exact:!0},{path:"/blog/tags/red-hat/",component:d("/blog/tags/red-hat/","9b4"),exact:!0},{path:"/blog/tags/rust/",component:d("/blog/tags/rust/","bfd"),exact:!0},{path:"/blog/tags/support/",component:d("/blog/tags/support/","5f8"),exact:!0},{path:"/blog/tags/vps/",component:d("/blog/tags/vps/","1b8"),exact:!0},{path:"/contributions/",component:d("/contributions/","541"),exact:!0},{path:"/search/",component:d("/search/","c7b"),exact:!0},{path:"/talks/",component:d("/talks/","819"),exact:!0},{path:"/algorithms/",component:d("/algorithms/","c61"),routes:[{path:"/algorithms/",component:d("/algorithms/","b39"),routes:[{path:"/algorithms/tags/",component:d("/algorithms/tags/","bb8"),exact:!0},{path:"/algorithms/tags/a-star/",component:d("/algorithms/tags/a-star/","83e"),exact:!0},{path:"/algorithms/tags/applications/",component:d("/algorithms/tags/applications/","b32"),exact:!0},{path:"/algorithms/tags/astar/",component:d("/algorithms/tags/astar/","08b"),exact:!0},{path:"/algorithms/tags/backtracking/",component:d("/algorithms/tags/backtracking/","e2d"),exact:!0},{path:"/algorithms/tags/balanced-trees/",component:d("/algorithms/tags/balanced-trees/","591"),exact:!0},{path:"/algorithms/tags/bellman-ford/",component:d("/algorithms/tags/bellman-ford/","2bc"),exact:!0},{path:"/algorithms/tags/bfs/",component:d("/algorithms/tags/bfs/","334"),exact:!0},{path:"/algorithms/tags/bottom-up-dp/",component:d("/algorithms/tags/bottom-up-dp/","9e5"),exact:!0},{path:"/algorithms/tags/brute-force/",component:d("/algorithms/tags/brute-force/","99b"),exact:!0},{path:"/algorithms/tags/c/",component:d("/algorithms/tags/c/","cc5"),exact:!0},{path:"/algorithms/tags/cpp/",component:d("/algorithms/tags/cpp/","f5b"),exact:!0},{path:"/algorithms/tags/csharp/",component:d("/algorithms/tags/csharp/","7a9"),exact:!0},{path:"/algorithms/tags/dijkstra/",component:d("/algorithms/tags/dijkstra/","aa8"),exact:!0},{path:"/algorithms/tags/dynamic-array/",component:d("/algorithms/tags/dynamic-array/","00e"),exact:!0},{path:"/algorithms/tags/dynamic-programming/",component:d("/algorithms/tags/dynamic-programming/","f82"),exact:!0},{path:"/algorithms/tags/exponential/",component:d("/algorithms/tags/exponential/","a74"),exact:!0},{path:"/algorithms/tags/graphs/",component:d("/algorithms/tags/graphs/","d5b"),exact:!0},{path:"/algorithms/tags/greedy/",component:d("/algorithms/tags/greedy/","079"),exact:!0},{path:"/algorithms/tags/hash-tables/",component:d("/algorithms/tags/hash-tables/","ae4"),exact:!0},{path:"/algorithms/tags/iterative/",component:d("/algorithms/tags/iterative/","783"),exact:!0},{path:"/algorithms/tags/iterators/",component:d("/algorithms/tags/iterators/","1bc"),exact:!0},{path:"/algorithms/tags/java/",component:d("/algorithms/tags/java/","2b4"),exact:!0},{path:"/algorithms/tags/karel/",component:d("/algorithms/tags/karel/","79f"),exact:!0},{path:"/algorithms/tags/postconditions/",component:d("/algorithms/tags/postconditions/","a27"),exact:!0},{path:"/algorithms/tags/python/",component:d("/algorithms/tags/python/","eb2"),exact:!0},{path:"/algorithms/tags/recursion/",component:d("/algorithms/tags/recursion/","2b0"),exact:!0},{path:"/algorithms/tags/red-black-trees/",component:d("/algorithms/tags/red-black-trees/","9ca"),exact:!0},{path:"/algorithms/tags/solution/",component:d("/algorithms/tags/solution/","fa0"),exact:!0},{path:"/algorithms/tags/sorting/",component:d("/algorithms/tags/sorting/","7ca"),exact:!0},{path:"/algorithms/tags/testing/",component:d("/algorithms/tags/testing/","2af"),exact:!0},{path:"/algorithms/tags/time-complexity/",component:d("/algorithms/tags/time-complexity/","2d3"),exact:!0},{path:"/algorithms/tags/top-down-dp/",component:d("/algorithms/tags/top-down-dp/","779"),exact:!0},{path:"/algorithms/",component:d("/algorithms/","b7c"),routes:[{path:"/algorithms/",component:d("/algorithms/","9b0"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/algorithms-correctness/postcondition-ambiguity/",component:d("/algorithms/algorithms-correctness/postcondition-ambiguity/","c18"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/algorithms-and-correctness/",component:d("/algorithms/category/algorithms-and-correctness/","ea2"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/asymptotic-notation-and-time-complexity/",component:d("/algorithms/category/asymptotic-notation-and-time-complexity/","fba"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/graphs/",component:d("/algorithms/category/graphs/","a92"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/hash-tables/",component:d("/algorithms/category/hash-tables/","ddd"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/paths-in-graphs/",component:d("/algorithms/category/paths-in-graphs/","7c7"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/recursion/",component:d("/algorithms/category/recursion/","61f"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/category/red-black-trees/",component:d("/algorithms/category/red-black-trees/","0c0"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/graphs/bfs-tree/",component:d("/algorithms/graphs/bfs-tree/","2fb"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/graphs/iterative-and-iterators/",component:d("/algorithms/graphs/iterative-and-iterators/","bfd"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/hash-tables/breaking/",component:d("/algorithms/hash-tables/breaking/","319"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/hash-tables/breaking/mitigations/",component:d("/algorithms/hash-tables/breaking/mitigations/","4c2"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/hash-tables/breaking/python/",component:d("/algorithms/hash-tables/breaking/python/","3d1"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/paths/bf-to-astar/",component:d("/algorithms/paths/bf-to-astar/","050"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/paths/bf-to-astar/astar/",component:d("/algorithms/paths/bf-to-astar/astar/","b4d"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/paths/bf-to-astar/bf/",component:d("/algorithms/paths/bf-to-astar/bf/","e9c"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/paths/bf-to-astar/dijkstra/",component:d("/algorithms/paths/bf-to-astar/dijkstra/","fe4"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/rb-trees/applications/",component:d("/algorithms/rb-trees/applications/","46a"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/rb-trees/rules/",component:d("/algorithms/rb-trees/rules/","21a"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/karel/",component:d("/algorithms/recursion/karel/","4cf"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/karel/solution/",component:d("/algorithms/recursion/karel/solution/","115"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/pyramid-slide-down/",component:d("/algorithms/recursion/pyramid-slide-down/","236"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/pyramid-slide-down/bottom-up-dp/",component:d("/algorithms/recursion/pyramid-slide-down/bottom-up-dp/","00d"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/pyramid-slide-down/greedy/",component:d("/algorithms/recursion/pyramid-slide-down/greedy/","4bf"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/pyramid-slide-down/naive/",component:d("/algorithms/recursion/pyramid-slide-down/naive/","c1b"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/recursion/pyramid-slide-down/top-down-dp/",component:d("/algorithms/recursion/pyramid-slide-down/top-down-dp/","fe9"),exact:!0,sidebar:"autogeneratedBar"},{path:"/algorithms/time-complexity/extend/",component:d("/algorithms/time-complexity/extend/","250"),exact:!0,sidebar:"autogeneratedBar"}]}]}]},{path:"/c/",component:d("/c/","dae"),routes:[{path:"/c/",component:d("/c/","fc8"),routes:[{path:"/c/",component:d("/c/","1c4"),routes:[{path:"/c/",component:d("/c/","a0f"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/bonuses/seminar-03/",component:d("/c/bonuses/seminar-03/","aaa"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/bonuses/seminar-04/",component:d("/c/bonuses/seminar-04/","ffe"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/bonuses/seminar-05-06/",component:d("/c/bonuses/seminar-05-06/","4cd"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/bonuses/seminar-08/",component:d("/c/bonuses/seminar-08/","09a"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/bonuses/seminar-10/",component:d("/c/bonuses/seminar-10/","b9e"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/category/bonuses/",component:d("/c/category/bonuses/","17e"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/category/practice-exams/",component:d("/c/category/practice-exams/","009"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/mr/",component:d("/c/mr/","4c5"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/pexam/cams/",component:d("/c/pexam/cams/","a10"),exact:!0,sidebar:"autogeneratedBar"},{path:"/c/pexam/garbage_collect/",component:d("/c/pexam/garbage_collect/","44e"),exact:!0,sidebar:"autogeneratedBar"}]}]}]},{path:"/cpp/",component:d("/cpp/","269"),routes:[{path:"/cpp/",component:d("/cpp/","187"),routes:[{path:"/cpp/",component:d("/cpp/","102"),routes:[{path:"/cpp/",component:d("/cpp/","fcd"),exact:!0,sidebar:"autogeneratedBar"},{path:"/cpp/category/exceptions-and-raii/",component:d("/cpp/category/exceptions-and-raii/","cfa"),exact:!0,sidebar:"autogeneratedBar"},{path:"/cpp/environment/",component:d("/cpp/environment/","e0b"),exact:!0,sidebar:"autogeneratedBar"},{path:"/cpp/exceptions-and-raii/placeholders/",component:d("/cpp/exceptions-and-raii/placeholders/","9b3"),exact:!0,sidebar:"autogeneratedBar"}]}]}]},{path:"/",component:d("/","dfb"),exact:!0},{path:"*",component:d("*")}]},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>i});var r=n(67294),a=n(85893);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},97221:(e,t,n)=>{"use strict";var r=n(67294),a=n(20745),o=n(73727),i=n(70405),s=n(10412);const l=[n(32497),n(3310),n(18320),n(29268),n(7439)];var c=n(723),u=n(16550),d=n(18790),p=n(85893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var g=n(35742),h=n(52263),m=n(44996),b=n(86668),y=n(10833),v=n(94711),w=n(19727),k=n(43320),x=n(18780),S=n(90197);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.Z)(),r=(0,v.l)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(g.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,u.TH)();return e+(0,x.applyTrailingSlash)((0,m.Z)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,p.jsxs)(g.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,b.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(g.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(y.d,{image:n}),(0,p.jsx)(E,{}),(0,p.jsx)(_,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(g.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const T=new Map;function A(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var j=n(98934),N=n(58940),L=n(20469);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const I=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function R(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class O extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),R(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(I,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.AW,{location:t,render:()=>e})})}}const F=O,M="__docusaurus-base-url-issue-banner-container",D="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container";function z(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
    \n

    Your Docusaurus site did not load properly.

    \n

    A very common reason is a wrong site baseUrl configuration.

    \n

    Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

    \n

    We suggest trying baseUrl =

    \n
    \n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Y=n(99670);const Q=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Q.has(e))(e))return!1;Q.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Y.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?K(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),R(e))},te=Object.freeze(ee),ne=Boolean(!0);if(s.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(o.VK,{children:(0,p.jsx)(G,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(ne)r.startTransition((()=>{a.hydrateRoot(e,t,{onRecoverableError:n})}));else{const o=a.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{o.render(t)}))}};R(window.location.pathname).then(s)}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(67294),a=n(36809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"cpp":{"path":"/cpp","versions":[{"name":"current","label":"Next","isLast":true,"path":"/cpp","mainDocId":"cpp-intro","docs":[{"id":"cpp-intro","path":"/cpp/","sidebar":"autogeneratedBar"},{"id":"environment","path":"/cpp/environment","sidebar":"autogeneratedBar"},{"id":"exceptions-and-raii/2023-11-24-placeholders","path":"/cpp/exceptions-and-raii/placeholders","sidebar":"autogeneratedBar"},{"id":"/category/exceptions-and-raii","path":"/cpp/category/exceptions-and-raii","sidebar":"autogeneratedBar"}],"draftIds":[],"sidebars":{"autogeneratedBar":{"link":{"path":"/cpp/","label":"cpp-intro"}}}}],"breadcrumbs":true},"algorithms":{"path":"/algorithms","versions":[{"name":"current","label":"Next","isLast":true,"path":"/algorithms","mainDocId":"algorithms-intro","docs":[{"id":"algorithms-correctness/postcondition-ambiguity","path":"/algorithms/algorithms-correctness/postcondition-ambiguity","sidebar":"autogeneratedBar"},{"id":"algorithms-intro","path":"/algorithms/","sidebar":"autogeneratedBar"},{"id":"graphs/bfs-tree","path":"/algorithms/graphs/bfs-tree","sidebar":"autogeneratedBar"},{"id":"graphs/iterative-and-iterators","path":"/algorithms/graphs/iterative-and-iterators","sidebar":"autogeneratedBar"},{"id":"hash-tables/2023-11-28-breaking/breaking","path":"/algorithms/hash-tables/breaking","sidebar":"autogeneratedBar"},{"id":"hash-tables/2023-11-28-breaking/mitigations","path":"/algorithms/hash-tables/breaking/mitigations","sidebar":"autogeneratedBar"},{"id":"hash-tables/2023-11-28-breaking/python","path":"/algorithms/hash-tables/breaking/python","sidebar":"autogeneratedBar"},{"id":"paths/2024-01-01-bf-to-astar/astar","path":"/algorithms/paths/bf-to-astar/astar","sidebar":"autogeneratedBar"},{"id":"paths/2024-01-01-bf-to-astar/bf","path":"/algorithms/paths/bf-to-astar/bf","sidebar":"autogeneratedBar"},{"id":"paths/2024-01-01-bf-to-astar/dijkstra","path":"/algorithms/paths/bf-to-astar/dijkstra","sidebar":"autogeneratedBar"},{"id":"paths/2024-01-01-bf-to-astar/index","path":"/algorithms/paths/bf-to-astar","sidebar":"autogeneratedBar"},{"id":"rb-trees/applications","path":"/algorithms/rb-trees/applications","sidebar":"autogeneratedBar"},{"id":"rb-trees/rules","path":"/algorithms/rb-trees/rules","sidebar":"autogeneratedBar"},{"id":"recursion/2022-11-29-karel/karel","path":"/algorithms/recursion/karel","sidebar":"autogeneratedBar"},{"id":"recursion/2022-11-29-karel/solution","path":"/algorithms/recursion/karel/solution","sidebar":"autogeneratedBar"},{"id":"recursion/2023-08-17-pyramid-slide-down/bottom-up-dp","path":"/algorithms/recursion/pyramid-slide-down/bottom-up-dp","sidebar":"autogeneratedBar"},{"id":"recursion/2023-08-17-pyramid-slide-down/greedy","path":"/algorithms/recursion/pyramid-slide-down/greedy","sidebar":"autogeneratedBar"},{"id":"recursion/2023-08-17-pyramid-slide-down/naive","path":"/algorithms/recursion/pyramid-slide-down/naive","sidebar":"autogeneratedBar"},{"id":"recursion/2023-08-17-pyramid-slide-down/pyramid-slide-down","path":"/algorithms/recursion/pyramid-slide-down","sidebar":"autogeneratedBar"},{"id":"recursion/2023-08-17-pyramid-slide-down/top-down-dp","path":"/algorithms/recursion/pyramid-slide-down/top-down-dp","sidebar":"autogeneratedBar"},{"id":"time-complexity/extend","path":"/algorithms/time-complexity/extend","sidebar":"autogeneratedBar"},{"id":"/category/algorithms-and-correctness","path":"/algorithms/category/algorithms-and-correctness","sidebar":"autogeneratedBar"},{"id":"/category/asymptotic-notation-and-time-complexity","path":"/algorithms/category/asymptotic-notation-and-time-complexity","sidebar":"autogeneratedBar"},{"id":"/category/recursion","path":"/algorithms/category/recursion","sidebar":"autogeneratedBar"},{"id":"/category/red-black-trees","path":"/algorithms/category/red-black-trees","sidebar":"autogeneratedBar"},{"id":"/category/graphs","path":"/algorithms/category/graphs","sidebar":"autogeneratedBar"},{"id":"/category/paths-in-graphs","path":"/algorithms/category/paths-in-graphs","sidebar":"autogeneratedBar"},{"id":"/category/hash-tables","path":"/algorithms/category/hash-tables","sidebar":"autogeneratedBar"}],"draftIds":[],"sidebars":{"autogeneratedBar":{"link":{"path":"/algorithms/","label":"algorithms-intro"}}}}],"breadcrumbs":true},"c":{"path":"/c","versions":[{"name":"current","label":"Next","isLast":true,"path":"/c","mainDocId":"c-intro","docs":[{"id":"bonuses/seminar-03","path":"/c/bonuses/seminar-03","sidebar":"autogeneratedBar"},{"id":"bonuses/seminar-04","path":"/c/bonuses/seminar-04","sidebar":"autogeneratedBar"},{"id":"bonuses/seminar-05-06","path":"/c/bonuses/seminar-05-06","sidebar":"autogeneratedBar"},{"id":"bonuses/seminar-08","path":"/c/bonuses/seminar-08","sidebar":"autogeneratedBar"},{"id":"bonuses/seminar-10","path":"/c/bonuses/seminar-10","sidebar":"autogeneratedBar"},{"id":"c-intro","path":"/c/","sidebar":"autogeneratedBar"},{"id":"mr","path":"/c/mr","sidebar":"autogeneratedBar"},{"id":"pexam/b-garbage_collect","path":"/c/pexam/garbage_collect","sidebar":"autogeneratedBar"},{"id":"pexam/c-cams","path":"/c/pexam/cams","sidebar":"autogeneratedBar"},{"id":"/category/bonuses","path":"/c/category/bonuses","sidebar":"autogeneratedBar"},{"id":"/category/practice-exams","path":"/c/category/practice-exams","sidebar":"autogeneratedBar"}],"draftIds":[],"sidebars":{"autogeneratedBar":{"link":{"path":"/c/","label":"c-intro"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(57529);const l=JSON.parse('{"docusaurusVersion":"3.1.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.1.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.1.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.1.1"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.1.1"},"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.1.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.1.1"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.5"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.1.1"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.1.1"}}}');var c=n(85893);const u={siteConfig:a.default,siteMetadata:l,globalData:o,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},44763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),a=n(10412),o=n(35742),i=n(18780),s=n(80647),l=n(85893);function c(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,l.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,l.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,l.jsx)(u,{error:t})]})}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)(f,{fallback:()=>(0,l.jsx)(c,{error:t,tryAgain:n}),children:[(0,l.jsx)(o.Z,{children:(0,l.jsx)("title",{children:"Page Error"})}),(0,l.jsx)(s.Z,{children:(0,l.jsx)(c,{error:t,tryAgain:n})})]})}const p=e=>(0,l.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(67294);var r=n(70405),a=n(85893);function o(e){return(0,a.jsx)(r.ql,{...e})}},33692:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),a=n(73727),o=n(18780),i=n(52263),s=n(13919),l=n(10412),c=n(28138),u=n(44996),d=n(85893);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:g,isActive:h,"data-noBrokenLinkCheck":m,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,u.C)(),x=(0,c.Z)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const _=p||f;const E=(0,s.Z)(_),C=_?.replace("pathname://","");let T=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&E&&(T=(0,o.applyTrailingSlash)(T,{trailingSlash:v,baseUrl:w}));const j=(0,r.useRef)(!1),N=n?a.OL:a.rU,L=l.Z.canUseIntersectionObserver,P=(0,r.useRef)(),I=()=>{j.current||null==T||(window.docusaurus.preload(T),j.current=!0)};(0,r.useEffect)((()=>(!L&&E&&null!=T&&window.docusaurus.prefetch(T),()=>{L&&P.current&&P.current.disconnect()})),[P,T,L,E]);const R=T?.startsWith("#")??!1,O=!y.target||"_self"===y.target,F=!T||!E||!O||R;return m||!R&&F||x.collectLink(T),y.id&&x.collectAnchor(y.id),F?(0,d.jsx)("a",{ref:S,href:T,..._&&!E&&{target:"_blank",rel:"noopener noreferrer"},...y}):(0,d.jsx)(N,{...y,onMouseEnter:I,onTouchStart:I,innerRef:e=>{S.current=e,L&&e&&E&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),P.current.observe(e))},to:T,...n&&{isActive:h,activeClassName:g}})}const f=r.forwardRef(p)},95999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c,I:()=>l});var r=n(67294),a=n(85893);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(57529);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return o(s({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=s({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},13919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},44996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var r=n(67294),a=n(52263),o=n(13919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},28138:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(67294);n(85893);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},52263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(58940);function o(){return(0,r.useContext)(a._)}},72389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(98934);function o(){return(0,r.useContext)(a._)}},20469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(67294);const a=n(10412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const s=a?`${a}.${o}`:o;r(i)?e(i,s):t[s]=i}))}(e),t}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>i});var r=n(67294),a=n(85893);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:s,children:t})}},80143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>b,gA:()=>f,WS:()=>g,_r:()=>d,Jo:()=>y,zh:()=>p,yW:()=>m,gB:()=>h});var r=n(16550),a=n(52263),o=n(29935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function c(e,t){const n=l(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},d=()=>i("docusaurus-plugin-content-docs")??u,p=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function g(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:l(t.pluginData,n)}}function h(e){return p(e).versions}function m(e){const t=p(e);return s(t)}function b(e){const t=p(e),{pathname:n}=(0,r.TH)();return c(t,n)}function y(e){const t=p(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=s(e);return{latestDocSuggestion:c(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(74865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(14965),a=n(36809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(96854),n(30218)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},92503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(67294);var r=n(36905),a=n(95999),o=n(86668),i=n(33692),s=n(28138);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(85893);function u(e){let{as:t,id:n,...u}=e;const d=(0,s.Z)(),{navbar:{hideOnScroll:p}}=(0,o.L)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,a.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.Z)("anchor",p?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(67294);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(85893);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},80647:(e,t,n)=>{"use strict";n.d(t,{Z:()=>At});var r=n(67294),a=n(36905),o=n(44763),i=n(10833),s=n(16550),l=n(95999),c=n(85936),u=n(85893);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const g=(0,l.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??g,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":g,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var m=n(35281),b=n(19727);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(h,{className:y.skipToContent})}var w=n(86668),k=n(59689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:a,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function _(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.Z)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const E={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,a.Z)(E.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,u.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,u.jsx)("div",{className:T.announcementBarPlaceholder}),(0,u.jsx)(C,{className:T.announcementBarContent}),o&&(0,u.jsx)(_,{onClick:n,className:T.announcementBarClose})]})}var j=n(93163),N=n(12466);var L=n(902),P=n(13102);const I=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,j.e)(),t=(0,P.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,L.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,u.jsx)(I.Provider,{value:n,children:t})}function O(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function F(){const e=(0,r.useContext)(I);if(!e)throw new L.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:O(o)})),[a,o,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=F();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var D=n(92949),B=n(72389);function z(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function Z(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,B.Z)(),s=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,a.Z)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)(z,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)($,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(Z),V={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function W(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,D.I)();return r?null:(0,u.jsx)(H,{className:t,buttonClassName:"dark"===n?V.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var G=n(21327);function q(){return(0,u.jsx)(G.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,j.e)();return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(q,{}),(0,u.jsx)(W,{className:"margin-right--md"}),(0,u.jsx)(K,{})]})}var Q=n(33692),X=n(44996),J=n(13919),ee=n(98022),te=n(39471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...c}=e;const d=(0,X.Z)(r),p=(0,X.Z)(t),f=(0,X.Z)(a,{forcePrependBaseUrl:!0}),g=o&&a&&!(0,J.Z)(a),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[o,g&&(0,u.jsx)(te.Z,{...s&&{width:12,height:12}})]})};return a?(0,u.jsx)(Q.Z,{href:l?f:a,...c,...h}):(0,u.jsx)(Q.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,ee.F)(n,t.pathname):t.pathname.startsWith(p)},...c,...h})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,u.jsx)(ne,{className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,a.Z)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,u.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(86043),se=n(48596),le=n(52263);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,se.Mg)(e.to,t)||!!(0,ee.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const l=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,u.jsxs)("div",{ref:l,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(He,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:o,onClick:i,...l}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,le.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:g}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&g(!d)}),[c,d,g]),(0,u.jsxs)("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,a.Z)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,u.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(He,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var ge=n(94711);function he(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const me="iconLanguage_nlXk";var be=n(73935);function ye(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var ve=n(20830),we=["translations"];function ke(){return ke=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var Ee="Ctrl";var Ce=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=_e(e,we),i=a.buttonText,s=void 0===i?"Search":i,l=a.buttonAriaLabel,c=void 0===l?"Search":l,u=xe((0,r.useState)(null),2),d=u[0],p=u[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?p("\u2318"):p(Ee))}),[]),r.createElement("button",ke({type:"button",className:"DocSearch DocSearch-Button","aria-label":c},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(ve.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},s)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===Ee?r.createElement(ye,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),Te=n(35742),Ae=n(66177),je=n(239),Ne=n(43320);const Le={button:{buttonText:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,l.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,l.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,l.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,l.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,l.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,l.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,l.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,l.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Pe=null;function Ie(e){let{hit:t,children:n}=e;return(0,u.jsx)(Q.Z,{to:t.url,children:n})}function Re(e){let{state:t,onClose:n}=e;const r=(0,Ae.M)();return(0,u.jsx)(Q.Z,{to:r(t.query),onClick:n,children:(0,u.jsx)(l.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits},children:"See all {count} results"})})}function Oe(e){let{contextualSearch:t,externalUrlRegex:a,...o}=e;const{siteMetadata:i}=(0,le.Z)(),l=(0,je.l)(),c=function(){const{locale:e,tags:t}=(0,Ne._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),d=o.searchParameters?.facetFilters??[],p=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(c,d):d,f={...o.searchParameters,facetFilters:p},g=(0,s.k6)(),h=(0,r.useRef)(null),m=(0,r.useRef)(null),[b,y]=(0,r.useState)(!1),[v,w]=(0,r.useState)(void 0),k=(0,r.useCallback)((()=>Pe?Promise.resolve():Promise.all([n.e(1426).then(n.bind(n,61426)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,46945)),Promise.all([n.e(532),n.e(8894)]).then(n.bind(n,18894))]).then((e=>{let[{DocSearchModal:t}]=e;Pe=t}))),[]),x=(0,r.useCallback)((()=>{k().then((()=>{h.current=document.createElement("div"),document.body.insertBefore(h.current,document.body.firstChild),y(!0)}))}),[k,y]),S=(0,r.useCallback)((()=>{y(!1),h.current?.remove()}),[y]),_=(0,r.useCallback)((e=>{k().then((()=>{y(!0),w(e.key)}))}),[k,y,w]),E=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.F)(a,t)?window.location.href=t:g.push(t)}}).current,C=(0,r.useRef)((e=>o.transformItems?o.transformItems(e):e.map((e=>({...e,url:l(e.url)}))))).current,T=(0,r.useMemo)((()=>e=>(0,u.jsx)(Re,{...e,onClose:S})),[S]),A=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}({isOpen:b,onOpen:x,onClose:S,onInput:_,searchButtonRef:m}),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Te.Z,{children:(0,u.jsx)("link",{rel:"preconnect",href:`https://${o.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})}),(0,u.jsx)(Ce,{onTouchStart:k,onFocus:k,onMouseOver:k,onClick:x,ref:m,translations:Le.button}),b&&Pe&&h.current&&(0,be.createPortal)((0,u.jsx)(Pe,{onClose:S,initialScrollY:window.scrollY,initialQuery:v,navigator:E,transformItems:C,hitComponent:Ie,transformSearchClient:A,...o.searchPagePath&&{resultsFooterComponent:T},...o,searchParameters:f,placeholder:Le.placeholder,translations:Le.modal}),h.current)]})}function Fe(){const{siteConfig:e}=(0,le.Z)();return(0,u.jsx)(Oe,{...e.themeConfig.algolia})}const Me={navbarSearchContainer:"navbarSearchContainer_Bca1"};function De(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,a.Z)(n,Me.navbarSearchContainer),children:t})}var Be=n(80143),ze=n(53438);var $e=n(60373);const Ue=e=>e.docs.find((t=>t.id===e.mainDocId));const Ze={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,le.Z)(),p=(0,ge.l)(),{search:f,hash:g}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${g}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],m=t?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...o,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(he,{className:me}),m]}),items:h})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(De,{className:n,children:(0,u.jsx)(Fe,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,u.jsx)(i,{className:(0,a.Z)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,Be.Iw)(r),i=(0,ze.vY)(t,r),s=o?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>s||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,Be.Iw)(r),i=(0,ze.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,ze.lO)(r)[0],i=t??o.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,u.jsx)(oe,{...a,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:c,hash:d}=(0,s.TH)(),p=(0,Be.Iw)(n),f=(0,Be.gB)(n),{savePreferredVersionName:g}=(0,$e.J)(n),h=[...a,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Ue(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>g(e.name)}})),...o],m=(0,ze.lO)(n)[0],b=t&&h.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):m.label,y=t&&h.length>1?void 0:Ue(m).path;return h.length<=1?(0,u.jsx)(oe,{...i,mobile:t,label:b,to:y,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:b,to:y,items:h,isActive:r?()=>!1:void 0})}};function He(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Ze[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(a,{...n})}function Ve(){const e=(0,j.e)(),t=(0,w.L)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(He,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function We(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ge(){const e=0===(0,w.L)().navbar.items.length,t=F();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(We,{onClick:()=>t.hide()}),t.content]})}function qe(){const e=(0,j.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(M,{header:(0,u.jsx)(Y,{}),primaryMenu:(0,u.jsx)(Ve,{}),secondaryMenu:(0,u.jsx)(Ge,{})}):null}const Ke={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ye(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,a.Z)("navbar-sidebar__backdrop",e.className)})}function Qe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,j.e)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,N.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,l.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Ke.navbarHideable,!d&&Ke.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Ye,{onClick:i.toggle}),(0,u.jsx)(qe,{})]})}var Xe=n(69690);const Je="right";function et(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function tt(){const{toggle:e,shown:t}=(0,j.e)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,l.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(et,{})})}const nt={colorModeToggle:"colorModeToggle_DEke"};function rt(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(Xe.QW,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(He,{...e})},t)))})}function at(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function ot(){const e=(0,j.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Je)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,u.jsx)(at,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(tt,{}),(0,u.jsx)(q,{}),(0,u.jsx)(rt,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(rt,{items:r}),(0,u.jsx)(W,{className:nt.colorModeToggle}),!a&&(0,u.jsx)(De,{children:(0,u.jsx)(Fe,{})})]})})}function it(){return(0,u.jsx)(Qe,{children:(0,u.jsx)(ot,{})})}function st(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,s=(0,X.Z)(n),l=(0,X.Z)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Q.Z,{className:"footer__link-item",...r?{href:o?l:r}:{to:s},...i,children:[a,r&&!(0,J.Z)(r)&&(0,u.jsx)(te.Z,{})]})}function lt(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(st,{item:t})},t.href??t.to)}function ct(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(lt,{item:e},t)))})]})}function ut(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(ct,{column:e},t)))})}function dt(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function pt(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(st,{item:t})}function ft(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(pt,{item:e}),t.length!==n+1&&(0,u.jsx)(dt,{})]},n)))})})}function gt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(ut,{columns:t}):(0,u.jsx)(ft,{links:t})}var ht=n(19965);const mt={footerLogoLink:"footerLogoLink_BH7S"};function bt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(ht.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function yt(e){let{logo:t}=e;return t.href?(0,u.jsx)(Q.Z,{href:t.href,className:mt.footerLogoLink,target:t.target,children:(0,u.jsx)(bt,{logo:t})}):(0,u.jsx)(bt,{logo:t})}function vt(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function wt(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,u.jsx)("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function kt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,u.jsx)(wt,{style:a,links:n&&n.length>0&&(0,u.jsx)(gt,{links:n}),logo:r&&(0,u.jsx)(yt,{logo:r}),copyright:t&&(0,u.jsx)(vt,{copyright:t})})}const xt=r.memo(kt),St=(0,L.Qc)([D.S,k.pl,N.OC,$e.L5,i.VC,function(e){let{children:t}=e;return(0,u.jsx)(P.n2,{children:(0,u.jsx)(j.M,{children:(0,u.jsx)(R,{children:t})})})}]);function _t(e){let{children:t}=e;return(0,u.jsx)(St,{children:t})}var Et=n(92503);function Ct(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(Et.Z,{as:"h1",className:"hero__title",children:(0,u.jsx)(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(Xe.Cw,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(Xe.aG,{error:t})})]})})})}const Tt={mainWrapper:"mainWrapper_z2l0"};function At(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,b.t)(),(0,u.jsxs)(_t,{children:[(0,u.jsx)(i.d,{title:s,description:l}),(0,u.jsx)(v,{}),(0,u.jsx)(A,{}),(0,u.jsx)(it,{}),(0,u.jsx)("div",{id:d,className:(0,a.Z)(m.k.wrapper.main,Tt.mainWrapper,r),children:(0,u.jsx)(o.Z,{fallback:e=>(0,u.jsx)(Ct,{...e}),children:t})}),!n&&(0,u.jsx)(xt,{})]})}},21327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(67294);var r=n(33692),a=n(44996),o=n(52263),i=n(86668),s=n(19965),l=n(85893);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Z)(t.src),dark:(0,a.Z)(t.srcDark||t.src)},i=(0,l.jsx)(s.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,o.Z)(),{navbar:{title:n,logo:s}}=(0,i.L)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,a.Z)(s?.href||"/"),g=n?"":t,h=s?.alt??g;return(0,l.jsxs)(r.Z,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:h,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(67294);var r=n(35742),a=n(85893);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.Z,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},19965:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(67294),a=n(788),o=n(72389),i=n(92949);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(85893);function c(e){let{className:t,children:n}=e;const c=(0,o.Z)(),{colorMode:u}=(0,i.I)();return(0,l.jsx)(l.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.Z)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:o},e)}))})}function u(e){const{sources:t,className:n,alt:r,...a}=e;return(0,l.jsx)(c,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},86043:(e,t,n)=>{"use strict";n.d(t,{u:()=>c,z:()=>b});var r=n(67294),a=n(10412),o=n(20469),i=n(91442),s=n(85893);const l="ease-in-out";function c(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function g(e){if(!a.Z.canUseDOM)return e?u:d}function h(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),(0,s.jsx)(t,{ref:u,style:c?void 0:g(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:l,children:a})}function m(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[l,c]=(0,r.useState)(t);return(0,o.Z)((()=>{t||i(!0)}),[t]),(0,o.Z)((()=>{a&&c(t)}),[a,t]),a?(0,s.jsx)(h,{...n,collapsed:l}):null}function b(e){let{lazy:t,...n}=e;const r=t?m:h;return(0,s.jsx)(r,{...n})}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>g});var r=n(67294),a=n(72389),o=n(50012),i=n(902),s=n(86668),l=n(85893);const c=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function g(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>b,S:()=>m});var r=n(67294),a=n(10412),o=n(902),i=n(50012),s=n(86668),l=n(85893);const c=r.createContext(void 0),u="theme",d=(0,i.WA)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,g=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{d.set(f(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[a,o]=(0,r.useState)(g(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(c);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>b,Oh:()=>w});var r=n(67294),a=n(80143),o=n(29935),i=n(86668),s=n(53438),l=n(902),c=n(50012),u=n(85893);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const g=r.createContext(null);function h(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=h();return(0,u.jsx)(g.Provider,{value:n,children:t})}function b(e){let{children:t}=e;return s.cE?(0,u.jsx)(m,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function y(){const e=(0,r.useContext)(g);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=y(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function w(){const e=(0,a._r)(),[t]=y();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>c,b:()=>l});var r=n(67294),a=n(902),o=n(85893);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(s.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>s});var r=n(67294),a=n(902),o=n(85893);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new a.i6("DocsVersionProvider");return e}},93163:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(67294),a=n(13102),o=n(87524),i=n(91980),s=n(86668),l=n(902),c=n(85893);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,s.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[l,c]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(l)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:l})),[e,n,u,l])}function p(e){let{children:t}=e;const n=d();return(0,c.jsx)(u.Provider,{value:n,children:t})}function f(){const e=r.useContext(u);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>c,n2:()=>s});var r=n(67294),a=n(902),o=n(85893);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,s]=o,l=(0,a.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(67294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},66177:(e,t,n)=>{"use strict";n.d(t,{K:()=>s,M:()=>l});var r=n(67294),a=n(52263),o=n(91980);const i="q";function s(){return(0,o.Nc)(i)}function l(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,a.Z)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var r=n(67294),a=n(10412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,s]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){s(function(e){if(!a.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},91442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},53438:(e,t,n)=>{"use strict";n.d(t,{LM:()=>g,MN:()=>T,SN:()=>C,_F:()=>y,cE:()=>p,f:()=>w,jA:()=>h,lO:()=>S,oz:()=>_,s1:()=>x,vY:()=>E,xz:()=>f});var r=n(67294),a=n(16550),o=n(18790),i=n(80143),s=n(60373),l=n(74477),c=n(1116),u=n(67392),d=n(48596);const p=!!i._r;function f(e){const t=(0,l.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function g(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=g(t);if(e)return e}}(e):void 0:e.href}function h(){const{pathname:e}=(0,a.TH)(),t=(0,c.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=k({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const m=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>y(e,t)));function y(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||b(e.items,t))}function v(e,t){switch(e.type){case"category":return y(e,t)||e.items.some((e=>v(e,t)));case"link":return!e.unlisted||y(e,t);default:return!0}}function w(e,t){return(0,r.useMemo)((()=>e.filter((e=>v(e,t)))),[e,t])}function k(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function x(){const e=(0,c.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?k({sidebarItems:e.items,pathname:t}):null}function S(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,s.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,u.j)([t,n,a].filter(Boolean))),[t,n,a])}function _(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,u.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function C(e){let{route:t}=e;const n=(0,a.TH)(),r=(0,l.E)(),i=t.routes,s=i.find((e=>(0,a.LX)(n.pathname,e)));if(!s)return null;const c=s.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,o.H)(i),sidebarName:c,sidebarItems:u}}function T(e){return e.filter((e=>!("category"===e.type||"link"===e.type)||!!g(e)))}},69690:(e,t,n)=>{"use strict";n.d(t,{aG:()=>u,Ac:()=>c,Cw:()=>l,QW:()=>d});var r=n(67294),a=n(95999),o=n(18780);const i={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var s=n(85893);function l(e){return(0,s.jsx)("button",{type:"button",...e,children:(0,s.jsx)(a.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function c(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)("div",{className:i.errorBoundaryFallback,children:[(0,s.jsx)("p",{children:t.message}),(0,s.jsx)(l,{onClick:n})]})}function u(e){let{error:t}=e;const n=(0,o.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,s.jsx)("p",{className:i.errorBoundaryError,children:n})}class d extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},82128:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(52263);function a(e){const{siteConfig:t}=(0,r.Z)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},91980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>l,Rb:()=>i,_X:()=>s});var r=n(67294),a=n(16550),o=n(902);function i(e){!function(e){const t=(0,a.k6)(),n=(0,o.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,a.k6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function l(e){const t=s(e)??"",n=function(){const e=(0,a.k6)();return(0,r.useCallback)(((t,n,r)=>{const a=new URLSearchParams(e.location.search);n?a.set(t,n):a.delete(t),(r?.push?e.push:e.replace)({search:a.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},67392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},10833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>g});var r=n(67294),a=n(788),o=n(35742),i=n(30226);function s(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(44996),c=n(82128),u=n(85893);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const s=(0,c.p)(t),{withBaseUrl:d}=(0,l.C)(),p=a?d(a,{absolute:!0}):void 0;return(0,u.jsxs)(o.Z,{children:[t&&(0,u.jsx)("title",{children:s}),t&&(0,u.jsx)("meta",{property:"og:title",content:s}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,a.Z)(i,t);return(0,u.jsxs)(p.Provider,{value:s,children:[(0,u.jsx)(o.Z,{children:(0,u.jsx)("html",{className:s})}),n]})}function g(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,a.Z)(r,o),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>s,Qc:()=>u,Ql:()=>c,i6:()=>l,zX:()=>i});var r=n(67294),a=n(20469),o=n(85893);function i(e){const t=(0,r.useRef)(e);return(0,a.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,a.Z)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},98022:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>r})},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var r=n(67294),a=n(723),o=n(52263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>h,OC:()=>u,RF:()=>f,o5:()=>g});var r=n(67294),a=n(10412),o=n(72389),i=n(20469),s=n(902),l=n(85893);const c=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(c);if(null==e)throw new s.i6("ScrollControllerProvider");return e}const p=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),a=(0,r.useRef)(p()),o=(0,s.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=p();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function g(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.Z)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function h(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>l,os:()=>s});var r=n(80143),a=n(52263),o=n(60373);const i="default";function s(e,t){return`docs-${e}-${t}`}function l(){const{i18n:e}=(0,a.Z)(),t=(0,r._r)(),n=(0,r.WS)(),l=(0,o.Oh)();const c=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,a=l[e],o=t[e].versions.find((e=>e.isLast));return s(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:c}}},50012:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>u,WA:()=>c});var r=n(67294);const a="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=i(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function u(e,t){const n=(0,r.useRef)((()=>null===e?l:c(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(52263),a=n(16550),o=n(18780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.Z)(),{pathname:l}=(0,a.TH)(),c=(0,o.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),u=s===i?e:e.replace(`/${s}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(67294),a=n(16550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){return(0,r.Z)().siteConfig.themeConfig}},6278:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){const{siteConfig:{themeConfig:e}}=(0,r.Z)();return e}},239:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var r=n(67294),a=n(98022),o=n(44996),i=n(6278);function s(){const{withBaseUrl:e}=(0,o.C)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,r.useCallback)((r=>{const o=new URL(r);if((0,a.F)(t,o.href))return r;const i=`${o.pathname+o.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},54143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},18780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(54143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},99318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>A,Ep:()=>p});var r=n(87462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var g=i.join("/");return n&&"/"!==g.substr(-1)&&(g+="/"),g};var s=n(38776);function l(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function g(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,h(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(59864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,g=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(g){var a=f(n);a&&a!==g&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),h=l(n),m=0;m{"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},7439:(e,t,n)=>{"use strict";n.r(t)},32497:(e,t,n)=>{"use strict";n.r(t)},29268:(e,t,n)=>{"use strict";n.r(t)},74865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
    '};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){l(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),s=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},85795:()=>{Prism.languages.ada={comment:/--.*/,string:/"(?:""|[^"\r\f\n])*"/,number:[{pattern:/\b\d(?:_?\d)*#[\dA-F](?:_?[\dA-F])*(?:\.[\dA-F](?:_?[\dA-F])*)?#(?:E[+-]?\d(?:_?\d)*)?/i},{pattern:/\b\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:E[+-]?\d(?:_?\d)*)?\b/i}],attribute:{pattern:/\b'\w+/,alias:"attr-name"},keyword:/\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|or|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\b/i,boolean:/\b(?:false|true)\b/i,operator:/<[=>]?|>=?|=>?|:=|\/=?|\*\*?|[&+-]/,punctuation:/\.\.?|[,;():]/,char:/'.'/,variable:/\b[a-z](?:\w)*\b/i}},57874:()=>{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i{!function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,(function(e,n){return"(?:"+t[+n]+")"}))}function n(e,n,r){return RegExp(t(e,n),r||"")}function r(e,t){for(var n=0;n>/g,(function(){return"(?:"+e+")"}));return e.replace(/<>/g,"[^\\s\\S]")}var a="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",o="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",s="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var c=l(o),u=RegExp(l(a+" "+o+" "+i+" "+s)),d=l(o+" "+i+" "+s),p=l(a+" "+o+" "+s),f=r(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source,2),g=r(/\((?:[^()]|<>)*\)/.source,2),h=/@?\b[A-Za-z_]\w*\b/.source,m=t(/<<0>>(?:\s*<<1>>)?/.source,[h,f]),b=t(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[d,m]),y=/\[\s*(?:,\s*)*\]/.source,v=t(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[b,y]),w=t(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[f,g,y]),k=t(/\(<<0>>+(?:,<<0>>+)+\)/.source,[w]),x=t(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[k,b,y]),S={keyword:u,punctuation:/[<>()?,.:[\]]/},_=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,E=/"(?:\\.|[^\\"\r\n])*"/.source,C=/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;e.languages.csharp=e.languages.extend("clike",{string:[{pattern:n(/(^|[^$\\])<<0>>/.source,[C]),lookbehind:!0,greedy:!0},{pattern:n(/(^|[^@$\\])<<0>>/.source,[E]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:n(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[b]),lookbehind:!0,inside:S},{pattern:n(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[h,x]),lookbehind:!0,inside:S},{pattern:n(/(\busing\s+)<<0>>(?=\s*=)/.source,[h]),lookbehind:!0},{pattern:n(/(\b<<0>>\s+)<<1>>/.source,[c,m]),lookbehind:!0,inside:S},{pattern:n(/(\bcatch\s*\(\s*)<<0>>/.source,[b]),lookbehind:!0,inside:S},{pattern:n(/(\bwhere\s+)<<0>>/.source,[h]),lookbehind:!0},{pattern:n(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[v]),lookbehind:!0,inside:S},{pattern:n(/\b<<0>>(?=\s+(?!<<1>>|with\s*\{)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[x,p,h]),inside:S}],keyword:u,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:n(/([(,]\s*)<<0>>(?=\s*:)/.source,[h]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:n(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:n(/(\b(?:default|sizeof|typeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[g]),lookbehind:!0,alias:"class-name",inside:S},"return-type":{pattern:n(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[x,b]),inside:S,alias:"class-name"},"constructor-invocation":{pattern:n(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[x]),lookbehind:!0,inside:S,alias:"class-name"},"generic-method":{pattern:n(/<<0>>\s*<<1>>(?=\s*\()/.source,[h,f]),inside:{function:n(/^<<0>>/.source,[h]),generic:{pattern:RegExp(f),alias:"class-name",inside:S}}},"type-list":{pattern:n(/\b((?:<<0>>\s+<<1>>|record\s+<<1>>\s*<<5>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>|<<1>>\s*<<5>>|<<6>>)(?:\s*,\s*(?:<<3>>|<<4>>|<<6>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[c,m,h,x,u.source,g,/\bnew\s*\(\s*\)/.source]),lookbehind:!0,inside:{"record-arguments":{pattern:n(/(^(?!new\s*\()<<0>>\s*)<<1>>/.source,[m,g]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:u,"class-name":{pattern:RegExp(x),greedy:!0,inside:S},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var T=E+"|"+_,A=t(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[T]),j=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[A]),2),N=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,L=t(/<<0>>(?:\s*\(<<1>>*\))?/.source,[b,j]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:n(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[N,L]),lookbehind:!0,greedy:!0,inside:{target:{pattern:n(/^<<0>>(?=\s*:)/.source,[N]),alias:"keyword"},"attribute-arguments":{pattern:n(/\(<<0>>*\)/.source,[j]),inside:e.languages.csharp},"class-name":{pattern:RegExp(b),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var P=/:[^}\r\n]+/.source,I=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[A]),2),R=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[I,P]),O=r(t(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source,[T]),2),F=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[O,P]);function M(t,r){return{interpolation:{pattern:n(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[t]),lookbehind:!0,inside:{"format-string":{pattern:n(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[r,P]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:n(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[R]),lookbehind:!0,greedy:!0,inside:M(R,I)},{pattern:n(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[F]),lookbehind:!0,greedy:!0,inside:M(F,O)}],char:{pattern:RegExp(_),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism)},60397:()=>{!function(e){var t="(?:"+[/[a-zA-Z_\x80-\uFFFF][\w\x80-\uFFFF]*/.source,/-?(?:\.\d+|\d+(?:\.\d*)?)/.source,/"[^"\\]*(?:\\[\s\S][^"\\]*)*"/.source,/<(?:[^<>]|(?!)*>/.source].join("|")+")",n={markup:{pattern:/(^<)[\s\S]+(?=>$)/,lookbehind:!0,alias:["language-markup","language-html","language-xml"],inside:e.languages.markup}};function r(e,n){return RegExp(e.replace(//g,(function(){return t})),n)}e.languages.dot={comment:{pattern:/\/\/.*|\/\*[\s\S]*?\*\/|^#.*/m,greedy:!0},"graph-name":{pattern:r(/(\b(?:digraph|graph|subgraph)[ \t\r\n]+)/.source,"i"),lookbehind:!0,greedy:!0,alias:"class-name",inside:n},"attr-value":{pattern:r(/(=[ \t\r\n]*)/.source),lookbehind:!0,greedy:!0,inside:n},"attr-name":{pattern:r(/([\[;, \t\r\n])(?=[ \t\r\n]*=)/.source),lookbehind:!0,greedy:!0,inside:n},keyword:/\b(?:digraph|edge|graph|node|strict|subgraph)\b/i,"compass-point":{pattern:/(:[ \t\r\n]*)(?:[ewc_]|[ns][ew]?)(?![\w\x80-\uFFFF])/,lookbehind:!0,alias:"builtin"},node:{pattern:r(/(^|[^-.\w\x80-\uFFFF\\])/.source),lookbehind:!0,greedy:!0,inside:n},operator:/[=:]|-[->]/,punctuation:/[\[\]{};,]/},e.languages.gv=e.languages.dot}(Prism)},81295:()=>{Prism.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\\/].*|$)|\{-[\s\S]*?-\})/m,lookbehind:!0},char:{pattern:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|ACK|BEL|BS|CAN|CR|DC1|DC2|DC3|DC4|DEL|DLE|EM|ENQ|EOT|ESC|ETB|ETX|FF|FS|GS|HT|LF|NAK|NUL|RS|SI|SO|SOH|SP|STX|SUB|SYN|US|VT|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,alias:"string"},string:{pattern:/"(?:[^\\"]|\\(?:\S|\s+\\))*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,"import-statement":{pattern:/(^[\t ]*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:as|hiding|import|qualified)\b/,punctuation:/\./}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:[{pattern:/`(?:[A-Z][\w']*\.)*[_a-z][\w']*`/,greedy:!0},{pattern:/(\s)\.(?=\s)/,lookbehind:!0},/[-!#$%*+=?&@|~:<>^\\\/][-!#$%*+=?&@|~.:<>^\\\/]*|\.[-!#$%*+=?&@|~.:<>^\\\/]+/],hvariable:{pattern:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*/,inside:{punctuation:/\./}},constant:{pattern:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:]/},Prism.languages.hs=Prism.languages.haskell},52503:()=>{!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n=/(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,r={pattern:RegExp(/(^|[^\w.])/.source+n+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[r,{pattern:RegExp(/(^|[^\w.])/.source+n+/[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source),lookbehind:!0,inside:r.inside},{pattern:RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source+n+/[A-Z]\w*\b/.source),lookbehind:!0,inside:r.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":r,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(/(\bimport\s+)/.source+n+/(?:[A-Z]\w*|\*)(?=\s*;)/.source),lookbehind:!0,inside:{namespace:r.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp(/(\bimport\s+static\s+)/.source+n+/(?:\w+|\*)(?=\s*;)/.source),lookbehind:!0,alias:"static",inside:{namespace:r.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(//g,(function(){return t.source}))),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism)},96854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=o.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),g=p.indexOf(f);if(g>-1){++a;var h=p.substring(0,g),m=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(g+f.length),y=[];h&&y.push.apply(y,i([h])),y.push(m),b&&y.push.apply(y,i([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(y)):c.content=y}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},58704:()=>{Prism.languages.nix={comment:{pattern:/\/\*[\s\S]*?\*\/|#.*/,greedy:!0},string:{pattern:/"(?:[^"\\]|\\[\s\S])*"|''(?:(?!'')[\s\S]|''(?:'|\\|\$\{))*''/,greedy:!0,inside:{interpolation:{pattern:/(^|(?:^|(?!'').)[^\\])\$\{(?:[^{}]|\{[^}]*\})*\}/,lookbehind:!0,inside:null}}},url:[/\b(?:[a-z]{3,7}:\/\/)[\w\-+%~\/.:#=?&]+/,{pattern:/([^\/])(?:[\w\-+%~.:#=?&]*(?!\/\/)[\w\-+%~\/.:#=?&])?(?!\/\/)\/[\w\-+%~\/.:#=?&]*/,lookbehind:!0}],antiquotation:{pattern:/\$(?=\{)/,alias:"important"},number:/\b\d+\b/,keyword:/\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\b/,function:/\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:Tarball|url)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\b|\bfoldl'\B/,boolean:/\b(?:false|true)\b/,operator:/[=!<>]=?|\+\+?|\|\||&&|\/\/|->?|[?@]/,punctuation:/[{}()[\].,:;]/},Prism.languages.nix.string.inside.interpolation.inside=Prism.languages.nix},13210:()=>{Prism.languages.pascal={directive:{pattern:/\{\$[\s\S]*?\}/,greedy:!0,alias:["marco","property"]},comment:{pattern:/\(\*[\s\S]*?\*\)|\{[\s\S]*?\}|\/\/.*/,greedy:!0},string:{pattern:/(?:'(?:''|[^'\r\n])*'(?!')|#[&$%]?[a-f\d]+)+|\^[a-z]/i,greedy:!0},asm:{pattern:/(\basm\b)[\s\S]+?(?=\bend\s*[;[])/i,lookbehind:!0,greedy:!0,inside:null},keyword:[{pattern:/(^|[^&])\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:dispose|exit|false|new|true)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\b/i,lookbehind:!0},{pattern:/(^|[^&])\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\b/i,lookbehind:!0}],number:[/(?:[&%]\d+|\$[a-f\d]+)/i,/\b\d+(?:\.\d+)?(?:e[+-]?\d+)?/i],operator:[/\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=]/,{pattern:/(^|[^&])\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\b/,lookbehind:!0}],punctuation:/\(\.|\.\)|[()\[\]:;,.]/},Prism.languages.pascal.asm.inside=Prism.languages.extend("pascal",{asm:void 0,keyword:void 0,operator:void 0}),Prism.languages.objectpascal=Prism.languages.pascal},80366:()=>{Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python},59385:()=>{!function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var t={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var n="(?:"+[/([^a-zA-Z0-9\s{(\[<=])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S]|\((?:[^()\\]|\\[\s\S])*\))*\)/.source,/\{(?:[^{}\\]|\\[\s\S]|\{(?:[^{}\\]|\\[\s\S])*\})*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S]|\[(?:[^\[\]\\]|\\[\s\S])*\])*\]/.source,/<(?:[^<>\\]|\\[\s\S]|<(?:[^<>\\]|\\[\s\S])*>)*>/.source].join("|")+")",r=/(?:"(?:\\.|[^"\\\r\n])*"|(?:\b[a-zA-Z_]\w*|[^\s\0-\x7F]+)[?!]?|\$.)/.source;e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp(/%r/.source+n+/[egimnosux]{0,6}/.source),greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp(/(^|[^:]):/.source+r),lookbehind:!0,greedy:!0},{pattern:RegExp(/([\r\n{(,][ \t]*)/.source+r+/(?=:(?!:))/.source),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp(/%[qQiIwWs]?/.source+n),greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp(/%x/.source+n),greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism)},70767:()=>{!function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,(function(){return t}));t=t.replace(//g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(Prism)},30218:(e,t,n)=>{var r={"./prism-ada":85795,"./prism-bash":57874,"./prism-csharp":79016,"./prism-dot":60397,"./prism-haskell":81295,"./prism-java":52503,"./prism-nix":58704,"./prism-pascal":13210,"./prism-python":80366,"./prism-ruby":59385,"./prism-rust":70767};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=30218},92703:(e,t,n)=>{"use strict";var r=n(50414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var r=n(67294),a=n(63840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n

Submitting

In case you have any questions, feel free to reach out to me.

-
+
\ No newline at end of file diff --git a/c/category/bonuses/index.html b/c/category/bonuses/index.html index 61fdfe0..a058beb 100644 --- a/c/category/bonuses/index.html +++ b/c/category/bonuses/index.html @@ -16,8 +16,8 @@ - - + +

Bonuses

Bonus assignments for Kontr Coins. diff --git a/c/category/practice-exams/index.html b/c/category/practice-exams/index.html index 9893acc..2da489e 100644 --- a/c/category/practice-exams/index.html +++ b/c/category/practice-exams/index.html @@ -16,8 +16,8 @@ - - + +

Practice Exams

Practice exams for training for the final exam. diff --git a/c/index.html b/c/index.html index f1f8a6e..1e2cf6c 100644 --- a/c/index.html +++ b/c/index.html @@ -14,10 +14,10 @@ - - + + -

+ \ No newline at end of file diff --git a/c/mr/index.html b/c/mr/index.html index 15eebe5..607ed60 100644 --- a/c/mr/index.html +++ b/c/mr/index.html @@ -14,8 +14,8 @@ - - + +

Submitting merge requests for review

@@ -87,6 +87,6 @@ For the sake of safety, do not continue without clean repository. Then with comm be main or trunk.

aisa$ git status
# Check if repository is clean

# If you know, what is your default branch, you can skip next command.
aisa$ git branch
# Find the default branch in the list; should be one of the `master`, `main` or
# `trunk` and you should not have more than one of those.
# In case the list clears the terminal and you cannot see shell prompt, you can
# press `q` to quit the pager.

aisa$ git checkout master

-

Adapted from: https://www.fi.muni.cz/~xlacko1/pb071/mr.html

+

Adapted from: https://www.fi.muni.cz/~xlacko1/pb071/mr.html

\ No newline at end of file diff --git a/c/pexam/cams/index.html b/c/pexam/cams/index.html index bf2b316..076e30b 100644 --- a/c/pexam/cams/index.html +++ b/c/pexam/cams/index.html @@ -16,8 +16,8 @@ - - + +

Watching Cams

diff --git a/c/pexam/garbage_collect/index.html b/c/pexam/garbage_collect/index.html index fed99c6..052f5fc 100644 --- a/c/pexam/garbage_collect/index.html +++ b/c/pexam/garbage_collect/index.html @@ -16,8 +16,8 @@ - - + +

Garbage Collection

diff --git a/contributions/index.html b/contributions/index.html index 8e7d1bf..c21e069 100644 --- a/contributions/index.html +++ b/contributions/index.html @@ -14,8 +14,8 @@ - - + +

Contributions

Many of my contributions to open-source projects.

centpkg

Description

A tool for working with CentOS dist-git.

Contribution

I have fixed a bug that caused centpkg-sig to be unable to clone the dist-git repos from SIGs.

Fedora Messaging

Description

A library for sending AMQP messages with JSON schema in Fedora infrastructure.

Contribution

I contributed a small packaging fix that has been introduced by a new feature.

flexmock

Description

Flexmock is a testing library for Python that makes it easy to create mocks, stubs, and fakes.

Contribution

I've converted the interception for pytest after they've changed their internal design to use pytest's hook system.

tmt

Description

The tmt tool provides a user-friendly way to work with tests. You can comfortably create new tests, safely and easily run tests across different environments, review test results, debug test code and enable tests in the CI using a consistent and concise config.

Contribution

Just a smallish contribution to the docs related to the changes implemented on the Packit side.

Fedora Infrastructure Ansible

Description

Collection of Ansible playbooks that powers the Fedora Infrastructure.

Contribution

I have adjusted the groups in the Bodhi playbooks after Packit has been granted the privileges to propose updates without restrictions.

Bodhi

Description

Bodhi is a web-system that facilitates the process of publishing updates for a Fedora-based software distribution.

Contribution

I have adjusted the client, so that it doesn't show secrets in terminal when you log in to the Bodhi via browser.

Gluetool Modules Collection

Description

Modules for gluetool — a command line centric framework usable for glueing modules into a pipeline.

Contribution
  • I have proposed a possible implementation of git merging that was later on extended.
  • I have tried to help out with Copr module after they deprecated older version of their API.

Pagure

Description

Pagure is a git-centered forge, python based using pygit2.

Contribution

I have added an API endpoint for reopening pull requests.

Copr

Description

RPM build system - upstream for Copr.

Contribution
  • Supporting external repositories for custom SRPM build method.
  • Allowing admins of Copr repositories to build without the need to ask for explicit builder permissions.

python-gitlab

Description

A python wrapper for the GitLab API.

Contribution

I have contributed support for the merge_ref on merge requests that hasn't been supported, yet it was present in the GitLab API.

PatternFly React

Description

A set of React components for the PatternFly project.

Contribution

When working on Packit Dashboard, I have spotted smaller bugs that were present in this project and fixed them upstream to provide better experience for our users.

Fira Code

Description

Free monospaced font with programming ligatures.

Contribution

I have set up a GitHub Action for building the font on each push to the default branch allowing users to install bleeding edge version of the font.

nixpkgs

Description

Nixpkgs is a collection of over 80,000 software packages that can be installed with the Nix package manager. It also implements NixOS, a purely-functional Linux distribution.

Contribution

When I was trying out the nixpkgs, I have tried to bump .NET Core to the latest version. My changes haven't been accepted as they required bumping of multiple more packages that depended upon the .NET Core.

Darcula

Description

A theme for Visual Studio Code based on Darcula theme from Jetbrains IDEs.

Contribution

I have contributed support for diff files, though the project doesn't seem to be live anymore, so it hasn't been accepted as of now.

Packit

Description

An open source project aiming to ease the integration of your project with Fedora Linux, CentOS Stream and other distributions.

Contribution

Have a look at my pull requests.

Snitch

Description

Language agnostic tool that collects TODOs in the source code and reports them as Issues.

Contribution
  • Environment variable support for self-hosted GitLab instances
  • GitLab support

Karel the Robot

Description

Karel the robot is in general an educational programming language for beginners, created by Richard E. Pattis. This is implementation of Karel the Robot for C programming language.

This project is used for educational purposes at TUKE.

Contribution

I have contributed some refactoring tips to the author of the library.

diff --git a/cpp/category/exceptions-and-raii/index.html b/cpp/category/exceptions-and-raii/index.html index 0598cce..02df41d 100644 --- a/cpp/category/exceptions-and-raii/index.html +++ b/cpp/category/exceptions-and-raii/index.html @@ -16,8 +16,8 @@ - - + +

Exceptions and RAII

Materials related to the exceptions or RAII in C++. diff --git a/cpp/environment/index.html b/cpp/environment/index.html index 469c617..6b3e5c3 100644 --- a/cpp/environment/index.html +++ b/cpp/environment/index.html @@ -16,8 +16,8 @@ - - + +

Environment

Required tools per OS

diff --git a/cpp/exceptions-and-raii/placeholders/index.html b/cpp/exceptions-and-raii/placeholders/index.html index 5584789..306f5f2 100644 --- a/cpp/exceptions-and-raii/placeholders/index.html +++ b/cpp/exceptions-and-raii/placeholders/index.html @@ -16,8 +16,8 @@ - - + +

Placeholders

Here we will try to implement some placeholders that you can find in other diff --git a/cpp/index.html b/cpp/index.html index 1e047d2..07778bc 100644 --- a/cpp/index.html +++ b/cpp/index.html @@ -14,10 +14,10 @@ - - + + -

+ \ No newline at end of file diff --git a/files/algorithms/graphs/iterative-and-iterators.tar.bz2 b/files/algorithms/graphs/iterative-and-iterators.tar.bz2 index c144579ce8b0bf61d8a66c61207187e93455b02a..61a793e64d349a53fb3352fedc0fa3ff02601b88 100644 GIT binary patch delta 1920 zcmV-`2Y>jF4~!2ELRx4!F+o`-Q(3T)pf!;WBYzK`CD^hs0MT|00id7)kdm5-r1C>e z4^u~?ZA}1Z27oltpaVb+05lqEXcW^yGBRk&>Ar@8UO$h zD1RVC(@E)|Lq<~*5tP%yPZDEO5NYZSJxv;VfOiPH;JTcG9BCzRKtDADGIBy|!2pVN zC2F;5+e%}Am%1>(;fv&P|2Ovjmu#bijLQ78b!f`R@HNcV_HNXW2~3JnWE3fweP z-*xL~7cf{<8Wxm{s$bf$w^qVqkp*z zR5Z@HQiepiN8UDQUKAlHP;JFpn>Y=J4l$wIz@B&Ko?sC&Ss|ht_Qu2E2(A1DO1?)>4u1|>In>w{ zj`pPumy|U?4Vxcl2xrMPX?3_k@3UiBHN3rRgN5W9=+PGAM(0| z?{|ZC(3B}lO)o<$6fY(g#SchC9dS%4^7+k0&DcI1huJ{bPYUMwg?D|jBXM5;6f547{WpvhbKf>5(%u#DjgP? zc87#)L2*Z+3xA7|z=`N8l0O05#&OJt9L=OlS zMcJ&Xu?Z>#QjDPDHcJ8N*aeu9%z=m87=U64evvL7ZR+rxCIA`Mb~r1q+i*=vYY3q-VyB%5mifc;kUnxC#w1vkP&%5Y5;YtH zn4sy+Asw7NFPxBxX8`Ocqr#4(ogU~`9f4ul;x6DJo1l~ehz6dqECIPP2JYbVg*ii? ze=UL#p-_}+U%XgY7SajU*|7Xgjipi!-8F^7gMZA9pr~a=4nlNv5_prjQgsisFKIp- zH4!)_iM&3Ou)fj|zaCI2zO*3RXE}5XLl<&LWk8`na3AN4exqWvAN08i zv}ryhd@q3Y8%}rk>2q{o%ZU-1rYwoXiP9>PyoV3hVfJ_)s*%tRXArvn+BiV%i>WBp zDz!)f>tGa2Q=DFSu=1VpyZN+5Db5x7QPu}yg#nfe;Mw-ckC$$+iCmIj;_gVN3KA9) GGzOsRYE3Qx delta 1923 zcmV-}2YmR9504KHLRx4!F+o`-Q(3!FYrl~WBYz(rEtu@90nq5SQ$~sk04WHfh^F$9 zkrbbBLMD9*UB)InHuYoIEd@Zx%V& z)-zKio4R#3Hf66mi8-6Q*WUSy{xPB6z@{jTE%XaNtDG3QUTNwo$zr+f)FI*cBPuNAloM9 zn!V+=s4RvSO6OIkEE?j!74$4+(tp;@6jaxlMioI}5LkRn>VR_280uqUChSy$Hq$%z z;6=pjY)Ln5hJk_&qn?eWIB?|2xIq%PY(^_+%bg*S1y(UoNFw-+OtFPZ-NYhs@rr5` zzSDC~O9)@sEK$nn<&KG&gwV}%48;babDq&CC>s1jtGS1cUWCzowVv69GM9 zVkI}Qqw0!SNt#$oW9yXrGk+48mC}JP?0LmMjcR1qd<>MAU=0@$)RHW>B7* zz7cr$=!P+ljl1VeD+zAE9~tMnhSC)UK?Zqra|=}lf@}o$r_6EKOn^TPi&GS1zCqeB zG*C7x0Q^IR15xlqvM?$d?hzh==j3?2@(upAr3Q-o-7Fj z)@BtBdrZC|-+vnrTv6vj;^c24Zj>bJDfJs13c%W1ge`U}9gu{e0H*nH%j6@S)y}H< zG0-@}kT&uZM5JIr3McRaqxgYj>jJTa8IVLgeIOhT&5-TdJtjkN+x@nVwDToxaWDkL zb&n!pL8uvj+cN(Azse`)GnQua-WIfPi-E}F3n|Ch)GZ?lw}7IvRDs3z%0a;WDGx0VgZOH`UJRnc$MEb%m6eJ!%bw-GPzKo zL5+Aumrq|1oqI#+W07BiEk)20hU3p;mwSzbBncJ~3J1<+78l9}9AlwFa&4GK{e@w3 zMlu;V4u4UJLG77Qs$~N};7ttuIXA1X+i*=vYY3q-Vy9{mE$9!*K=cs?F(SmOfz;JF z5vbrCr3X$~2<+eAdr1hEa1P>myAjlLBhnRza9DSE3%Ceo=p_K60jH=-0B%fyySO_- zoPo{7$zX&iR3#dh@D>&Yw1RcEY(E=gX;g!^O@Co<-twcUDj89OkevMFo)quYokQ&l z+E0efL`~_UaR=6S7urG>;mQR#t3nOV9V|8iL^L8?GjJrAGET}^Mv6e;SA+^3Vw z|7=T;n?vJAvH4F)y%GNYoPF{`VzjXAnpUt{#jd705(;-Drf3Q^lyn1?#4f+Kju1P- z>Pj_Atx^Dbm<1CQ<`7Ewpi9oAC#jgZNy*6~V})P%yOJrw JgoWCRUHDv5S8f0R diff --git a/files/algorithms/graphs/iterative-and-iterators.tar.gz b/files/algorithms/graphs/iterative-and-iterators.tar.gz index 4a292a4587153a0edcd293647fccaeceadfd3be5..b7268446778b304252b8d08fc6b899c09fc7dfa6 100644 GIT binary patch delta 1956 zcmV;V2V3~252z1+ABzY80000000Zq>OLN*t5cZj>{D)a;528Y39tNsnn^e}=*{#ZJ z*Vs9va*$y#S__GcM%X09FWbZZr2PxqJtLt9BS9_1u{ZM_z|!>e^z>_b8rz&Qi`z5$ z%yNg%Z1LnVfB%|U)3I+3{3-MP+}jQ{K>OeTzw4b=T|C!+J00OcpBwfY{ZZMp772z+iaLiSkTx|HS94ZXol(fA|9(R;8j9dL3!yg4qvu?Niay%9Ix zp7u?6Rqj41Jt+}_WK+uc{1x+pX%}C?%Xa~v2E0F?((dUUJ=#w^hZKE_T~mI>tO>pK z*iF}^yk*v3j`p+fSV*wJQON@Po&Hk^O%;JBI^c`!&|&|7N?>$k@N#X*P9} zUI83`VX5RolJ=+8fD&00kgpi)Xz>r*dt82h0@;*lf#Utv)D_=`ls&`hc5FM87?SeD3&2;qq^43j zE*ijslC(!9(=0y(c!TtWD5*!@1)+6*d(OA7OiH=}Rq9S4Sa78kw+td?_5 z0)`4xNPs}sg7x09UZ_T4rYf0L)9$r@nY$sRoo7WhPGV_qF=P1@d?HUtJ%3v01!7W= zvo}QAxHClrAQp%7 zYrje^NC1zK`(Ij4Kr0!i#hibk%=rj3z2If`*&G%YEDT`k1zflh4pvmA4!4DWN+kn1DyGMYW0j9EFo|-m zl2aHcK{`+*r$uS8qq|N~{Rj6dNEnl?Yrr-2U!&FRtla+_9bNz32mbl%?_>#hSlYHA z44ozs)nW3HMUc-K@b8inC{;LrJ-xFgQ-_M7m2xJkVz6onkJ#4`o)L=`dPLbTS4sIZ zesKJl;|If!8GhX2#~prr!H=Mv&Mt}rKB~)b_0$el&fJ{pYgSNq$>aFtaCj-m)m2m` zV^clJ_A~TxJe8iKg{;nG?uWomfg)w|iz9vO7 z;k+L}&CBTUC6B^yQ6-~)EZv#y+Wt62Rms|9QA+={yF>aLqUikZ-B17LpiyhC^nV%$ z`ux8SY*AJ>gD%`P`9$*@vz!P zkZ&!=r{Ac1)Khkks^rS^9N^(o>&L3l$ zmdZ=KQfN^0TU1_uNGP~x%H0zphyAZjT_4ru!VaYvAjB%GoOV;vCt?oEy(M04<{fE` z3NMLyC|xBUu2gm&t@qlhQjA_cwnkQ5xaPI8LW;a*7V=3Hwn{G1cpi@j)5y~JPbjMY zMOm_g8^F5$U%j3E{lC*}>Hq(^7p$-UQxtHa{+xd$pimcog&85vg(BRmSpCndL>#fD zL|T)#h-Cr1$vxuSgA-_YPB~7nmhco$BIlQ>5nfb%LZS zE`_;wzad<4DMGfcR&Oe#zjCN~I+^mhaHf1lkEkK`gW&=E|JUmO|20~TT6>Sw??bpB z{QQ3azyB)i-)X?BV*Bq(IBoy$-Tzm{f4#BB{<{)8PTT)`-~SZ$Z#UWpYwW)(;eK%Y qYiMX_XlQ6?XlQ6?XlQ6?XlQ6?XlQ6?XlQ8sfABAH55O7#Pyhfc$j3kc delta 1954 zcmV;T2VMB652g=)ABzY80000000Zq>&2rjE5cZj>yu&QD2T>t1U;|Y#CY3dIcB}HY zYwR3SImj>=t%XEJBW#l5$@Z|1w6Cz;GZOk?B&dZr_GZ2VSel-mp8lJj#x|$S;`WR_ zv)th`TReHp-@j(obnKf0f6BZ+_qIa~&^kQC?|Qpg7ti&7c3XTS4(hGF`eEzfuvM$q z8;v~}Y_(f^q_*X{8zJzy#R%DBf$LJ1PdD@iH$~%*6rJ~AUpnCAe0XzQeq#@q=X)b= zzCG=m@T%N>QhHJ%1j(k9@%by}1=B9Rf|u_CJ`H$(KBe8$JKEV#Jcks0i(ONG#;ggw z_1I0&l^B>f%>tfB8a)v7eRWNlCoJEx^1bofH2) z8|?3D4UF-2vzZ(JfK2>1+s*bKY3@pZBK+X-Uu6GZ&d%Wg*nW*Q`TwBRZe;A=Y9G{e zlU)HEe^IIALX!5U)_@XO6p*hXRSz7?_X+q&r{5*FW6CJ$ljp?sxC<#eBtlG?J+n9^ zuW&XJ3pT(wOVG2$+7_F4`c-1PybG_uJT5GKOk8@apfD;&YxwkEbjf>*QI{*3!0>t= zpcs#J$vMX%6&Fc>jABl~m17T3K}LG#m4t2(e|&8FrWgU%p>CqFg^C|?`Xg|SETfUf zs5KZ9V+I~QgHw{;fsQ0g^Aeuz0rj(!5cY@|Vh8U=hMZR+$H#J0=7%w41=TDBh;hce zNi^$dg=kSqKcyZSddGobp2dZ40juSl zlYpVZ6cQlNwP3w>tQV?Ln5jx;)wFwUf97roY3Esyjgwf~Tg+HK1)s=MQqP|jdV!b} zbnE>>R2jRo<>esQe9&Cyl?6lOEnGz34nBuP_rE~@0RYa|kxctJ*v zb?sNl1qt9Wa{o)q31}tbw3zcRlsO-PrWd@-KAXeBf`tK0y?_fh!oiBl)Zw;pe>}T= z1zA$UqBH`>#nS$L57I~gZr4qz#E8bLxcOT0T#!8aFGA0NOsQlbN5%9wajfzY1}0I? zRdNagB}fN~?}>MnU4zZ?!P1-ZJ4 z%B1||96Z7ex!+kiGbckN^x`GLV<_S$x-@pJjBWUw%X&&k)M zNG6>31E_f!9lqpI_${hrf0U&=vt8RCr>H7fn=DG{zjk*>e?t_V|GoR^{~R`I2P^%b zMqQu(_knGX``!-wKUko1dy**Pi#tPMUC4D01u-seX)n?w2 z)~N83n1|9;;^9hV=h1qvtt!Rn8acrcADjsJwA z`d^eKJGcR?>;KhT+28-$@VBo2?*r@W{}csWs6Xdl2`JP>e_=+5bD;?LDpvpVDiKF) zDUsIXEn-;!Z*q?~_uvE?o>Pt!G7ZAyn5t}-J=*`3}LXlxJb!x~3+d=qqUTRQmM~+k#8mervwCFMQF@g8VEW0`$j&hNl z!;wbi!-evQe~gEPl-Xa<76tN&3jSBi|EBVVXLCZ#6VK(A?fME?Rj0bR+Z3reeVrhw zic4Yc-ERn2T#AsbtJRwd>8~7Wo=&EGE}SW!(IaYz{a|(?OZJ=9Y|6K{E?f<>||LXW}ud)BGgwyu_INtX^h5cKNR(*~AcO~2pZhs98 o4Gj$q4Gj$q4Gj$q4Gj$q4Gj$q4Gj$qjsFk+1yr*NG5}Bj0R7I-^Z)<= diff --git a/files/algorithms/paths/bf-to-astar.tar.bz2 b/files/algorithms/paths/bf-to-astar.tar.bz2 index 9a64f9be044e34a5bca2fdd27645c5fedaa09977..94cce249229a985c89e7dad4cbe6ee01678c5c28 100644 GIT binary patch delta 3175 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 delta 3161 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 diff --git a/files/algorithms/paths/bf-to-astar.tar.gz b/files/algorithms/paths/bf-to-astar.tar.gz index 316ee4e801cec9c106bd844fad9e51c94bc75b1a..712ef0bcaab65a048f8b4db00a963e005340178b 100644 GIT binary patch delta 2948 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 UdC5y&^77c_e-j6tkN{8s08+o&rT_o{ diff --git a/files/algorithms/recursion/karel-1.tar.bz2 b/files/algorithms/recursion/karel-1.tar.bz2 index ab40ff7495bbb7bb01e0329bb8ea43ec72e4f723..96986535954fadb12906eb63907b80d1ba184e50 100644 GIT binary patch literal 5866 zcmV*M7HqVx2hj#~P2cBbI(e2&b%CBd=jgFw&?06*TKQzC$bhr{0p0%wAjSXv5D1famM zzyQaNyF6re`8>XByRz=??(WOGySuwDGE3F3;103S6wDO3D(5n_>iOydnrN#e5hRNN zNGdWB1Zsg2D3MiDK+4nhiXTH*~KnDk;spQ@1mod;g}GP@#{C8JFZ|*?)~R$LK2^e$7Z7x;V{9CUPKbc3Jls_LJz&!60iVvs>10E0kMDyjuRRSq8Bj85#GfPYtVBddG-Q z81cL}^yT5{E+gv+*S>p2__o_o-g`#!dD3!Ogx|YxV;7@!SC3-}1k~zmMv`hx3v6%d zPbD3R<(<+?9eUrED+^N?&=bQFQ1p%6(VmRwI?xZ^ag~7W2<7{62PO4}gJ~A`)c@6$upy_6^3$hT4i6 z*+8^QP!Qy#f%J}Pzyqk_P)x?+`?d*`Qp4Z^J8ibxxY*&w&;+Oo5=f{>s87a*nhF|b zXsB3Fp+bcSayH@w2Zt_JHrGwI;!(qlV2L21AfY0mGgLFU37DY;42WJ z6f-&F7|SfQf`pLJkWi48R45JyVxiNgQC^&IE34Gt;TNX^tZ=svUS2oxO$vk8IN!Ur z`hG0_L1a$0VZ`m5nj{Y@mMouW$i>x}Ea>rVbu4unuou2?pj_($>fL)Z?w0VE7*-Xj zSV%}p=mIYNP``Lk(Nr{53RO_8Dkwohf`v+|7NtVPl?+1YCfV>dDD+(WTrxXs1b|Up zr{9!(w{e$|;g!c&GfcP6B8MeIkO|OGu%T2abQCXTLWK&jp#=uRIT;j4R4Fn z*rbP66DhA#-`zUo$>BB7H*nDIGc78~OAN8V3gCuyWFu(+*1FAfV!*DwFlZk3t!6~3 z4jH^cZsFe!>65x@W1upbwk#CPn@NHs^r)_0Te=(~DR_>r1Ea58F8TQhqoTuEyqOc? z*%*czchLfpxQN-cGLA4FksdKo9O`UI`K^^E3o&94kx;(GFRx>R<&H)MRudV_N18<;3Y-OhDM3gv}`V zY{Jx=4E~tb+W}JOjwGZY+8yx#=oCnepDZFYvUTrTNQa}-gWI%O6!oDSW0 z)b_dT%C2bMhc23U(ZH>1LDQN@B6caaZa5pKz~J7R*2(QX$ulTE$;dJYAVjr=a0h$>@HY&J!vMQr$UR<)lvFR9d z#;b4aSjRH&cyYU`whE$=u+G&{@RJDBW-KM2ppM$``8esSv9oBHD#wVHCH94o$J#hC zH=c+Z>tgE}IT|iVK}TB^wBoBXDveab3Z0eQVhEh#3IH6vT_Q4f(vz3Y4;F7uHixRr za-2JDF+KV~An~06$&iKtVxgTX+Kv}KGQK=@WnPh9tSv6zzh)5(s)+2P*^u|=n=>;i zo2M$OT`F0$N72ujqNiRtDzZ2i6xEo%=$E{^GwcWX4bV->ATm#DiU|za<^nVrO2bzbf~~E}uz=b3zUy+#6IXcvr3Zs;GS{-LwTS0-NQa2_qyZ3PWi01tQTBMEdFBW`m4Mfs@Y>c!wZTQTgJc zFGdJ_g(VUV_Rn0wNE+osn<#O%Wq}H85)?VYLny9TNLvDxl#gsa&g;g{f}s@OYEV(& zL`W0gw(M@x=a&U4g-&pg(h+Bn}SFA7Lkq0SeLOPpZet{q2Ug`syP z1Z_CTOWlP{(y}j3;6oNQpdJ=vO{eS6-YS6sDg;5&QqiWloT|zG~8f#&EpHp7W&!=u@y%_>_tjs=K#o@y7ZFy zVCSR?Hz!fCY^G#;UeyXN^5R&@xx&c#fdyN%d3y4VnUY2H+yoQD^gFHbNeqM4N&xV8h1kHh)(*fLt@cXM{k>_+qBa$2wM&w)+c`z^-Fc~*@@5l|rX82Kp)+FS%c5d!08fmL% zMhzrr&EAgA4K515!$*`t}syFHR;uBhm=T=VuyKNfK#0yzz(00PMuwkiUDW+ z^AnSP2W^UXKeZ=r13+!Lez5O`>EofZO5^eVEt$j;uQX}BQiTA%Y9R2yIq5VVN6~8ZePpFm>f{@K{8Yi_9 zm>DO&8vO7-4c#nFz;lB_Cy&91#Drdh1J4d@7@#u*{;2IHqq-O(S_)fujZYNvGa{1e2h#FXfE(;h60#GWD3q_06HfcQqeeFmIbzV?Gp(W zMLR*Es57|k4hqd&8aSBa;&8%MaZJf3;gzOy$4k;T(U>~4#g;P#1+>g$8YgYGmfcRd zg7HR)Gj%ZL2E-c_LnR2Iw1)>kPCgGpLF$owYaSpYaE-3{jA8R7(^v982YY6|Mh zAZCSMU<=sYbQ?uT5Q7C76wHDJ*El{m*#Tbj%s&6q{hTfs?MoeA$EQ&qV)>bw9t2}V zJS&=78O0pa6{(~#Vxe)?D!4&Sz$uj0rr6xpY8grbW?a!r5@>Ba9ULaw*Y6vfa9!Q`LT*SyG(W=|6A?7C&3~w|LF`T|nao`Y4^^HP{@Gc=c{Q zubcu4)CCXdOqtIBUq8~gg`zYId1W5}fm=tlWfRQAjmR>^) zRKpA~4oS6XWfbvEwNEgoaWkWoB#yvXxb|E;hmjvV5iU04CE2mr=3(8cQ$~VONU*C# z9sT3=%)ihG9j_-x^|Ju<>}FwwMA|AS!PI+l=*2EYK@iT9%=%PMz9v50e0>BBZWU_~ zDYXh!sHBRJfPo^cAVnc+8x{@U863UvX0EV1E{LqUYE)KrUb2{85A`tpyNel=ax#O4> zleU=m`A);YcHc2DB043X6+_;{>P{oL$@u5UKrS%XkmP|lnixDst{u`F_El4ywue~Y zhWZp(31o^r4nYE21jELZM3M@TD28?kXdHo)GdSW%L_I(|R?touqu|(2r4NH-uuROn zOUn6^dTKY8s6$CHG!ucbg7*w2>k**C!M~*gayJZ z!blPyn4mtIYeh$xy!SL3um}GD`)#;9#eq5uIXNDTR1jd6q!E-w%*Z(eDGqZXWWX3} zFtNqCl&OfdjUv&!Q_N67zNPkD=#?vIkX67q#j_oF<}BQ zGm6wy(mKNB@E@F@&tr3$?$69*5Fo<+beYXKbMj55if+M|;<_|hTT7-XMxaRT0H|D$ zLe%#|g>HD7gppQ6GEBhtDb#m?0?(DuxOXg6+@aEd{o^QZb0JR_*!6nIc~voANO4UA)HCh*SH3>uXUy!p$TUVV!2vGs&mG-KnZYk*FujvE zB0QzO7;|B~IcQzDekNl$#xy@8DFrPKM_qzKnMM{xKv582h;q5jbTTNxPhpe|N~~e! zNtr1WvDuSGk*8itZUF=xPA56`Qwg0&FQ|OfhQY!fNltKum@q=I%(I*84fPy%1 z9@Rb33VDESfR_EzzwCW!5fqB*Mr#Cs&_FmE;mIHPT%aBRRRv^$_)PosfNi82jMsY}h)k2SYtU!~A{ zAgnAL%aH_IOgVHDSHet)BL`e)3K07FENaN@S~6fhKH?HkPDgcvsfL!FnMmV-#6$u# znjy7DP=qmpF8hpdC~=@}*0JLSa-122)uE9$OQEn;it1XlwMfEBIUsX@Ci6K$ z9cmJQ_%0fC8i!Y?_$NCcs;doM*YTaq+>TJam+j!#=)!s zCyeZ{j?J{sF**hr@<_Z!3;geweCjXT87csYJ7BE0E%yBMF z9bi+4n<7DN37}=}a}A&d*Fej*M7ejyTJML@f>0)`q97MA2VpKG#hMa;(xCcfc~_>{ zNJ2Tj3Klyob7nTY$PUAr_7eh35YFx-cWza31hVD2xm5<q2|BvKhQtmP&NaI7zH_mQGfhh$rRy2Lh>MFunU{R At^fc4 literal 5882 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 Q6kq&Z$rRy2LNGSkjEPdIe*gdg diff --git a/files/algorithms/recursion/karel-1.tar.gz b/files/algorithms/recursion/karel-1.tar.gz index 16ac7566b9950cc4a577792a6156ad075905796b..27b80e33c376c7f0d7cd035c2389692487c1c315 100644 GIT binary patch literal 6581 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 literal 6584 zcma)=RZt!5vZk?xYj76s65QS0-Q6X)ySq!!;K73vJU9dk5(w@R+!wNtHT=6~YVWB! zGv|C)U%eOoc0XNx(M^_s2=%WAdoH|^4&+S_KGf~^bc$_dh?gbPi8&@9Id8J`rjF_o z_P2ZZTqED8e_?@JRz&%xrY#TG@^2(4YK(*MkfeOhlEvh~RB+T}0 zVZ&$k8v2e$MsgByozVBH1WLc&FP3gnf~q#Dos~v=n!?Q1ldA+B#CY|fB*{xX2pS3; zsN5qISC78`G;fj4jIoKHKZ4v>{U!?x6m|vWD3Zc0xGXAoE;>KMh+4gq% zfYD_v33(8BEnI{sL;b!@%kPlfO0vvz@CU~m!VpbWHXjjO817e+4**Ss3K1ly)jm@C z;5D#O*5NEzQle1$?01TzmRcu13f<2s9|XZ#GM)XAzWFkJ9IG2w-RS+ zkDj(ixP;e}PqnchSNfB)qKQ^=fD?wxEp=4>N}fI-}qa7#AwFCS+( zg(9gZ;$u9nH8AnITc_!Q${4uvC*gg@r>;Zq& z!Z+*3z{#V#Oqq<*t6M_gISk464QLVOGOw!*_BU=MJvt$F{94!u3cO{R*Z25^n}(kq zR&Z^3>guQ+74-@y1yRc#mYA*ZWw_nF8Lf?YJ|FP@lq%`y6hBXu4*G93mP>IJJ|opH zTRUkx+78v>R8ltWkZkD6?J~I>hC=aO2MTzVSt~^KtB*2$d%n``{BdO5KB33&`R#5D z@5wb0gU%&H)#1vtCaymXj~;!sbg@Ow;j}@#G-4fm8lV^ZL&@(` zFI_50@0{ptVAbmM9R*?HaEnsS8p#N|9wFZ;A2+NBEjV}#=PsHj9e8zG=1Q7KwEd0C zSFjkjIP-EKEA7&dMmdYIQCbhLWGatmvIC$Z`a3bv^w_30M|KEFuaSa<#);-?wpRSZ zufsU2B^vs(VOWn$tQBh`l(CiIiG@Lj&E5%rYsb8KATXG{1@78~TdP{3HD!a(-n9FT z7_RFrs8?I#9PKeOqjfVR^Ut#wuIE;kj$jzGUi8Ik)r0oRSksw5;ovm+ z(7L+0BQnqaLMuG9J&dV>)DSAQKT1nGb;<)0FD%Fny;x4DF~{zR#PXe3C>Q|zjV3`Z zVJvE)99?U@4o~;K$TS01D<(!(>D`m4j$bz%GAg~P%zZ1F%f%wT1N2733|1f*R{7%z z3DSOaop$tEb^-y$Qk^|EIX!B{>!c1#xHrx5wZ{#-Az2Wf!%wEM3LV4e`Q= zZ31kP6QuZ2dc)_ySjZznTogDZL6W%X_qw?D;F7$xlutP5%u{5eUrT1v13sQMO)&IQ zH0%`;34XXcNJ#hYJ@M9tJvOs@w1qeAnGm+dx;-U zb-LCzjx$O>`bRzLsOVH{M{=tQ^LBVgdG}a6bP2Xy$&6dg+PRJ&yg>yZRMf6f&lIMS zu7mQb0yGG{G6YLD52)GIuCg8XI$UFPv!?*S1=c{{s@eoPGf1tJMJ$llh>qY zC>OS;?Y<9j>lWMX`9xWVm0ffFZZc`zm@I`H{FY+d#wlj`V~kvj0BQT_Z)DvFrw`B# zUL#Y=hSZ@Y-0}8H=>T}s=AB^a&6k&l?6FH#WO?pH`snZK5YJ89KUrRyMiqUB3W4sc zJbyNt{yv)((3(gjeXxJCXaTU9r*c%pZXC7y9#!8^g;ryg=sCuNxr)+V3_EwDv$0jG z^rZ7MF_Rb;?(&}IoqET!vodPpKML5pLKZ?db3f9ABgB_<(nCITw za73x5mo%&x8I@2NubzlB0S)sHFnN^`9I|*@X!uiIe^ZdO^K(h@8Sk6zV}Al<`o)5L zaTB4wK;PVQiUrqe-;FLa@m&ZD9h^e3$~wW_NQ>~W=%9I*A8kvZO~Ra3(D+BiEr=@; zm^iOsQEVQUsGmswwJ3%qZE>_Lt}9l&09FpqXm<=~)cZJ#%rWtk2XRFy z@D+t6&P5**+I=W(DIypZz(MgrknRF>)lW&u!K=oU4VAoIe=1fs zY`SCNj;}NoJGej;*gUEM#ZSke7d#Pnp4lVbWg();-yk;x} z>8cT%WamdX+f+cg@wQ;S#3?dtt>7@b3E@(svO&tlzFQSPIXiqouj-FtVx8C}un^KV z0N9=EQ%Xr{7iTG+JnxhaKTO)+GCu2T{Y)X|%yO4m@X3ykPWUr2S2>r&R$NAt0^i;3l)M>^~zEw?R+${cis2`pwy3`CI zU-}2@mRF@*QN2{&Ut1naYxF6#Z%4}a!xb9*0EXeyY08mjt{7fh^+*pBE3N282O10x zYNmr2uM$)R?y!kqJRaojbNdMMG$EF;D!82U35`aeK?L3-TNFd$GK;FT(*eL^q(R(l zGeR85I~bAAN#Fv*LMuS5%tIX*wkQ5_?t2&@UzVGI^0g$lph+R_D`B9J{dO(sWN>7Ayo()|EGTVIvmm^}e{a(bBh5@PB3J$Gb6z)wL>E3#0 ze*(uYBOkKTstXqPoby!#N-HM9oG_%IfGxg z8%NwbSZdS!#_L0~HqI7DnwRkBo(VPKIKay6(XN)z5-VmHoJYg%cb!se%=9IbGZQg{ z^=a*!-*?Vdw3vb&E=%sly%m-|7j*3CV5+h|vSqr#(GZ95VDh0Tm&U#(rrW_~C$~QO z7L%vqeKq$l@jc}y1D;7?S8y=a#8f8vkf=QBTpHoIUwK`u^P|fI5 z^bzu|HAOqjqmE@+H42w`nS0QF%t!qi&RYB}GH70YOSwE$e25(JMF)R6ilGkjVY_0Y z*F43+KeWkkr)i!moMI@)7xN2<=G-x!dQzXr>S108xS2>yyC%hcJLW^Xe)#n-bV0<* zQT}K>HvB|=$INInuX5+3o7ALDiSD<=*8Z6N$*&x_gRRsXtc&bs?lYP_M4y;TsL6WlN1d=DW zfl#wx*SW(Y1Y35YPzH1K#MyNqvf{-nJPR~u8=4L8Q#ci;(zMgPlRA^#FCA`N`D;p$ z=IRFzI6uqgoY~lu@r#^qm|8ikbF5S9@^_2`BNNqp21+W_sQ4+bwmO_D0P>CK&&&o- zS@@QL7V@q^>k}5;NKRjahrE{PE|P5PN(oS>+Bz!K2bms%OY&Qgx~{1^wAjO(~}bNsQ)T&*Q`dJM-fkJW4*%8)Xj)RTVxg|s+qVK z>wphKMU3kL8V%!1bBUa4+n0c}nxu&DFQ_d#%l1zQxJ0!$I(8p5hT!z8ZhIa>GR^(qn`a?IwWZrZp7$6k7n4X69^z9qWHyVyMajd0Y9 z!jcA#trQ0e1TKzV+P|_D9LrX{lnwHYw>k-<`D2aUBI=EZj_eM?MPt>Ks3A2b9evKW zPskH9E>}WXAZ9>dM~XRnPBge6_i9oFpjkD4CAS7FmH zXas)LY*!-CvbSTmb(5}mlr=&TwIK*Y7gHzW>>c1z3nRp;lzRg9e=9CZsu6sqTg^Nn=N{XEiBU+_!MIlp(of3 zS`iSfFMR{O%Cp-KCJ>1JDD?|;#Ex#LyR~w=?WKO+84jEf?xAo;mJgldxl^38v@FV&%T)dIma1wA2h4fwSot#j@|A9V zBc&{5zBlrh-&W`4kFXdgJjYw)o(n}**C5#q+LNx@fWQNg8VwHjhmRSH?h-Wx_;*)N=U$1{3XCM*xke98PUu}rfuOwJrJP&5v&lVt)IveK8 z8HYbF?E2FZn^AQ?#)#2KH{O>!JJJaUk^F#0qKB!6T`ry;(Xu9x7;lU8e~gD!X4gpj3>*k@Ka z9N9`#%iZ*YM9iIsP%L#Ue)nTAoHVR&Bhfk;S;CPX{cz1bF~7{i5+&pT#(opCOClCPsBYi|qff}`$8uNi z|8vK;=PhiGLo`|tYIqVK))P6gtA&{Kyk!G zFz1madtaaaq98smYfzcq`;xXN;66&5Wv67Y;}ApTpjgk~R+8bo$-7qW6}^VAoQ2Xx z!3iUS#r)7lLT@zNp-XqxQdy_qQ2Di2|Ee_;uvPxi%qEvs<#RA4?5{KI3XA5#*~n~5 zvq9yr_-*hSj#=lw z706xBsqBE#fkL}RI^bCX%LCvrNZq_B39SL4XBQecS){!83Emjew?X9;4RTsa39vsQ^@(QzHY6NzFr!>Zo%z?w%!$_cV&z8b*trHS@b1AEJu}`HwKAFQWO7miJQscP@R>Pa!-ITdLHh5FliWW)>8Za079An~~{XfC#@U4F6W% z>*jguQ!GA(;2l6#UW$^$Ody|LLbBh{oR33Vo<#G*dfwI^AuR8l4KpFOGZ5bYQ=u~C z`5y%o@?ZJ{{f~W^C;ssP{@*_T4N29vqIU$SIp7epJ%}LSzhe6iCE)F!{{IV#9k{Rk zor=!C)Bk@o=s(DEy^20&+(TZ2gCQA!=x?CoQBdNmx=b)ziW{P5jw? zUBD*g^(^SPc#HD=CyBF^vr|t0>-6^ zm=&q;k?!RaP0hQ(_$ZLXpu(45@X5iBRo~{ihu2wNYrLu&vBrxgJojn554{v9j9Q)*rA}{Nkoel zL_S3CiYkg!rsv~IQCGZ+7c4DesaC0KTE#=K!Ao6<*J~wQwlP&!Uc^|UN+^%|{q>te zS$`rnl@b$yNQoGcBz?b!tUiJFkK;8`d~`HRTHlQ+#&cIBmg7Ic%^%b0dtT{N1tk|K zlc1qO_^PE*V&xbtNW~W@f{G%A5=tnNiX>4*6e5ZWC`u@bD3nns_6|2EZE^DM`@an_ z!#;l}h{|ItH)!rZLBYClI_bfVddqL~rGKl4_q3Y-GSlSYN|u$v(*l~q5YBIIGMm_@ z=_xH+w^@0WDy*@Vr915YURNP6vMRYE^?MT4#LN1xkqV{gS4@O zLnAVb%}om#6j7nvXlhtkv5}FPk+8XgGeMa}jLaICH5V)_T-3ptu*k7u=A{-hFiI?D zT-aE_b5m0zL1P6Q3z#U>)Yxn^EPrZbQK3d=qUSqw+??{xS&mDce=x|o?dZx?G;_1; zSDziX+}jE_+p>H^%o*=&ewCIvPM&u;F6SzC)68ahOC3h1S=MA^Hi_bVJ|ADh10sqy z8rLDmKk<%2?jn-K7cwaH9A%0uFos!jmm7;%n~Dl9Sbb$k*O=H?+-)*4D1WiUZ(Q78 zbX+FVx8)Wn*jU;uSln(dZ8sZ*8Wd_UT-1~Hvn(o!gK3e21r#oim1VF|CV1@eu zz=Je02@x(Dfs(({ud~M^mVHm8Odnu=(X7*M`(?NO=e_^4zlYvhPJcQ@1w-n^FH$e_ z)(gF!!}nXF{`iZpO;v09@|oJ znoozwKN%Bjc-MAA)Liu{bkOgm>dVDa){jo@rGlg*#rGd!hi63|a+a=}z`?<^^bCd< zPKhGuc{iUUW78+ZRDUL+luzl+54`ame@15{lqW`wh2Z5Qyl-AgUbf422N9ujtYg3%Hz|V7Y$?NB@LrwoI%`r(*NXNcQ47+C| zxbz(nCEsnPka7ua6!$Bs@=BDbues13LLZ4I8B%`dQS&_qfT`8xmF}wCA0GvG{;3$+ z(lv@v{eQRS#N8@YW#MTSuh2P7i(ZPwRg8a=fN(J*Xlx&^babdqG{pu&VnU>q zB?lCfWTi;M*9Jptk>X#KxH?1F)2oo!ADNz^(&I{THW-6+N<^0GrgQ#p7kv5kTWcvv nBT38}5c3irlvuZU*gFSgtc#Ww5V0fsi@744C`fds;R5;qxtF<9 delta 1432 zcmV;J1!ww;42ld6LRx4!F+o`-Q&}ts>dcW2hJQ4m00000000004FCWYBp^ZpX{L-S zpP3U0sMOQ-O{mk_iRu9ILuz|XBTu~h4;f?hYO1IekrH+G_4f6bJ5JMkH4R6Il8F{9 zh{w1f)&q|h+&uM{8VTflqH|VO|U6-ucrkUuhiP4t0*4{37PggnJ&#RXN98(U{sJY5m>^ln`qU9Z?Mh?=( z4GfIRGc`0UWKl+kaiOVUV#Y>BW=6%#8JY~rEM{QT!Kk@mV& zWzCBiE^2CIXe?l(V&)1pH8wUhEPrZbQK3d=qUS?=-klQ8S&mDdZxG12?di%@G;}lU zSDziX-rWi~Te5tEtTW)*`qo(GJWmlU@fAC1)_G4UW2n^g9%CaRxKDZU`2C+842|WB z8sCuPpZMe~;wdaqnUP1J<1A5Ogf=tG<*W_m6C#3(79U|!GC7S+jppMsB7ch4W8kA8+<6}cHkw(-;bWBjOnW)&K2F0vZ3l_1&Q7uN4Mw=QII2oCn3>zAmnVZTk zVAx!-az_G%#S-SmrlzK5rhkUxLvgX8V`DH_)Ujh@BSQvd5;HR_Kg+&6JofPLv|gfj z)t~0Is{HmZj{G<8HJ*Qc|5&N*qSCJ)6_R)>!{B5Cm_(pSWJ%>SX3+qMApj^6uV64A zOAEr%B|}g~m-?0V`|>$w*7}6O_J{2n%{OqiTfgRfANxD`{{qr+(tju_A6_YXk$V)iPTWeg2q^1-W|$;xsO&Zt=Y?maodaMnIzP~0|?h*ad2 zRl(96OPi(ek}z;44ERH-AByrYR~(82CwHmu%#B z9)qSNyY95o4nZxVp5=8uX;PIH_qs#IL-Hi!Do@<%JWoO3Ds_2fd#bmG%fVg$+anvA zMzKmipY;70o8?NZye%Tt{ezU*YtdM$v5)Xc9yy)o7g_xt*}cqKl`AvQb_b|9+={0x zrK6&%#a8SK|9=U{T!La?CEkp!Pq+`WL&VYg^3^3UC9*TLO`%1s{t@E3dhC( diff --git a/files/algorithms/recursion/pyramid-slide-down.tar.gz b/files/algorithms/recursion/pyramid-slide-down.tar.gz index cd49eff84d25f6a2aba8dae50fe01bc950664b78..48c32c38307c19bf6446a525d6ec45c7cbbf256f 100644 GIT binary patch delta 49 zcmeCL F1^~bL5f1?&F@&#Ch1@Ec4w0+1r*IyDl;@Dou`IZf4S*KKUVYEK^MXW(O8mMvhQEZyAOF G1_l7!{ty}f diff --git a/files/algorithms/time-complexity/extend.tar.bz2 b/files/algorithms/time-complexity/extend.tar.bz2 index 113f90c2f22d98f9f0d44ffa9e50fd1cd41d66bd..7f5a7956454d3e74c503acc977a80a392c782584 100644 GIT binary patch delta 3971 zcmV-}4}9?IAM_s%LRx4!F+o`-Q&|N$dCHLv9)ErFJ;8@>aqkaNIoG^;at%Jc<^TWy z000A9<{Aj~rAaEjn24oSNTie~1f)GxH1!Wjnx3H3CPt4?4F;M6Kn(x@00LCfDZfur zlOY&rm}u0&?P@rNj8&IdPaw- znty{v(qsXk7@9Orj7)20(f?{c)YBbWGhp3)J-ln5N)D1LwOia{d+L@{91w{xz zKp=xvKT3N|G^WV|*ra)>9;Va{2c#R-4FlclPf`Bx`n@yMk$veC3Ne5p_4qq{G#O67 zJ5Ji##$sR&^+be1LP&*sy|Et$(-IPO7=M#D7))7pQr{hyMsbTR*;TLo=PcoroDCVF z7cH2xHb!6Avscw@%G}$S(%wVnE(LjZL-^>b--;Mh$wX=A|Z-^ z{eE+x7fKrJZ2(v8;6R=JSu}IrD;s|*3(BGQ7edL%MJ0n2sMRP7WwPOL!7des5GaIF zK?p(-NrPg1@uS}R)AqjS-!aYjyE?Mwh8Sg+9xNGmcrtT-pY4;x0Xcu>_aF88j~~?c z#?O_vbdo_{wUQ6h9t&cN;j3s_xCMKp=sdd&tEd&?uTvU4Qj3$%*`t^IH|!PNC6-L zAQAvb5Rw}$GR+v2WRzfH8OF;v7?fm`vfE`_UMfjG4jw7t;o;v}*0r4HI@YzVZD=3? z5fL3svonranVx@5&6_ZCWs{RSy2di*tY+&N%T1gVtT4i=l=4)#DJCYIrNJs%8AOPuF<(a?TclzF6J6z1n<|@ofD$4YGun)NH4ImH3 z0Q|tLg1W(8z*lf9h%1_cwipsP){Q&-bS-F$cUmY-Q=DF)tyLUq%@=62F$5QtS)#)| zwj8um_PdEGMr}5rvrR&66g$L)6J~kN@1y}*JG5n->bMoH1{_RCWe*-!FoYopLJ))q zfbs$yAvDA561HKMm7QCbO$@ZdEiilEos(GvB!8*{6|GB2EY{ZP+>%LaZn$K!(yL0t zhFqFy!;@r_bo<`wME)rg*C`X^{|HG^sucx7kr-h~6hqQbLghxF>=5OFZv<110Pl|n zOvRv>mW5=aSc7S>;Bydd72ZIvFdW97^O2L_=A7Fm6HPfB+?C0rMwkw4jnztW8D*lf zY=6qOLxN$tDa=(>N;JuX3Sij5Oc`NWD+;WcVN#ehWYT28g)k{fV7yhhR?1;gs$sm6 zQb{ds^4V;XNhG9IRaI4Cm0^;Ur7EW(vBAvYFl1FQ;HM*-nyZ*@!i9Ap0m0k>1GoZm z8R7tNcK|_dF^n!VIAGDS!ILe>(BaHwvVTBiU4(Y82cI@A55E~r`ZU868N(M1A~LbO zHo>esKqHB91rD-LI`K#Zd5@Hl1*q^mX=Qx`4oA#ELVyQd(Gd|9<22*hYg*Q|!q33- zX~XGuVU=N)m}U8ntT4en;*?U7ly&QF5XxY4RX1T(yR03^EE#`He0_hh|1BeU;D4Bm zM|`}T)s`4xh8<%CS5dNRre;p+!z`XDt?Xy+X!L00r>ENBuT8D)IVE;gcXC#q_vt(x zO_HZ#yiVpF6(r_=CmS8jlj(PS2y#;l7){NX9|oH{VCdN4rUuU^Y1!RcB%8NGsm-TD z+A9vt&S!(I>x^Quq;xiR=A0XqPDN&2w_#B?V}_M5*-b{sb&QMos=~HE-CL@u@Ni|5o0*emy*-uvPYk&*cpQ72)#0mo zS7#00CJo+37;gJhM^{x>mq#XzB~K@l35FSERa+6!DD!Z4P1~xtbTrA$v8dB_?Hj45 zqD0Fgs;aApGm}c$F!WD%aYG;rC?rjAjR({TR1 znMpF3ZlzUM(i2S)&Nz*Y8cCGhrBeq-!IqTxxJc8z;!7(d(0+howaSgH;iK(7;J>9lvG7~G_0mYNj7fXH1<_w_7rKSR_`Zgbgwr) zk<@fOxH{Kuj;Cc+Jx!gR)q}SOH89ghc9ROO4b*aFG|LB0$-9$Er-g7jDz{;l5T2>% zuUCsLoc&F@z0X&FCRkG^Mww-&W?EG}j|AX&w`}Cnd5Gpk7%EooY>n789hmO&VYgeHJvzD^mA9GHl6Ps~^I=>zWu};T9!8zqJlP}2d7RL$7-Z;aD5_J3H0p(U zr;@buW#;VUS7GPoXU^T7{HonLD=JpX^K)g{D=#OByLMP$;jS&NVD?efQ^DY^oed5K z90+g`5Gaj*L~)o!A@(#4zN>Ezmj(%Me>uO0-L^g-gzs&BWi zwlQFlN6dAaP65E_Dt!l8q`cyI4#OiXp{9f>NtxZ5+;QF6o!-QnQjDaMRg)zYmbBGm z$tn_^2}LqWgq0KEFQE(2gdhz8hy)>1`iJ@~Vt#6We($9rKQf_Tz5V52uEdiD6;-mn zc33J^RaB)aQmIOnRH{^^D>yK!rB~pr)>xnB6Yp^$GEIcgm0!Jw;zh9{H4(6=eI-c- z6c|;~jNoKVm_zlxxAZcSf4$n4D6p#)oWB+!81;Tn+~!F?7T;U${RS2GDTN&0_J0yd+7eI6&bjXTo`&z> zl5Q{se-exrl31uKhnT5A6_vmhg?y&rO#nCE3jKsAWc+1MVN?*9G!RrUK0=0r>lDoP z1_r|5D!sm>Q@A^0_e4sZ(6$B=MTH?=E;R~&6d{Hh8Xh75Nraj~pfsf>W|K6fDN7>w z(B)3lKA>0P1#$ZcC5Mw@zI9bo`K0qmERs*ikwWpG0nikD6z;* zh@PH|yo)-jsS8M@L2M|}$d3Y`r_u z#%O9Yd{M9iD|@`)MS!ey^@d)-im1aD^lmS%+a4lp^Aw_(51yE>t2F z91>1Qe)Ou9QmR&xN=TKJZs)S)&240oN=YP=NhMWVvp#*TTZ}G}WRiZl3C&`EC)utD zl_?fbQ)qUdkcjmta5JepA-&CzKC5$+EJu;7 z$eX_GTCLc^5l~me;x;Y~K&|J#d(6Tqb0N^BpMOnejC6FBAhXR`0-J zZw1xP`}%S>=JlB36a{vzAOS3Hf)B_Rc($I-Q@g7ip*$850RPM8Rc{1#hJx)}0bXNZh~EC*!t{;bH}}autoEHJ2?CzJ zr=gci9g{nfJCG8h!@Rq}xs*!)J%FqNx<;VMsNuvZ6AoC+wkhBff=Q&>VO9u`^+P(Y zpez6;8q&nQ|1{jL5E(dsrk&jhC!`M?qF^ONsVYchl2=Zn5LO3}C?RJMH2}#hu^=lW zEKSBr5$+yKBBYap+AxXkB$WuHl8E*Wy`=f%KOfO;wuERA(vkp@8V-O)`AEc6G#*e_ zq!rNMc7UwBQ!+|p+6vR&8kjvmu7Fo`W=1A>izVmKTpPz}*b4N23FsC@_<(3eoa7@R zA0{8k{F$BpNaY-_Vlk1G1sVdq0Ir}`qUsRoPn?4T1VGj}-qtlgWbmYm(oV7;k@2t) zLT^lmfSj1n{P3OhB6d!U8=@c5inbDLdo+@EjJeAB;4Y`p_GcMmmoIK6+S7N%!*<~f z;xa&u;IEMF#Du+n&x_t;8Ra3DNnfQ~zU1%V6u3hZ71LTzXB<_$g zK8DlA+7aZKgyfCRbRHuK;WkP@x)6818}%)q%BRp*(~k%b9L!i6nx!g0w{|Km_YhXAS5nbQ@Hi!uuEd9<$f$ dKJ)MIJIt37GcaKYA`uV%F64@Ep&$x!^OO(ZSxW!_ delta 3961 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 Tgb@e~hyNFHML1B9!u^C$>b*~n diff --git a/files/algorithms/time-complexity/extend.tar.gz b/files/algorithms/time-complexity/extend.tar.gz index 88b9405b9bdcc4ddb3433d9eaf84534c8a843707..4b2582ddd6275b82485e1c1d8ae71b2540bde96a 100644 GIT binary patch literal 3913 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 literal 3912 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 WsZV|CQ=j^@@9F=$$SsTjpa1|QBd`Ym diff --git a/files/c/bonuses/03.tar.bz2 b/files/c/bonuses/03.tar.bz2 index 0504060986e424d8a3acfb56be51b823579e39e0..b9dfc5d85db9ce17e2bfa169601f8277a762661f 100644 GIT binary patch delta 2608 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 SmMS6t;_gVN3KAL+2S@;q*cNsG delta 2611 zcmV-33e5G<6x$R#LRx4!F+o`-Q(3P9>?;5V@qdK;xB(D<|NsAg=l=fx|KIum0sshL z4Ssy30000AQjr9x6aWE0PynEjX)J%Cz|&1M8X6iI8Uc_7hJe#XKmZITAT&4{X{Lii zLqj7#G62xf8feG>0ffW`f+(gXX#uXk<&l>16jlSj;`!l&s|U()Q|llrFhRVti# za@1m!sg+hH7%Hl!W#KZJEknaM*8dIzszHcmHV*kyxOxg5ndK{S%3fe&ybxjrBGm0l zOeunyElKnS>hvQQ~51zXKtH9 z=-017mNFMjs_ODowK!`yv-A##n}|D zMlo$!rB7EQaf8TmIhx6F>h@xMCkkuk^yrvyo)2Qye@VOfvs;UivuKXBI@8AEl{}pJ zw3<1V-rFT@t90O*Dw=G2$G7q!?}~rAw`Sepha<-4ay2=O z=Wnl>z-L9N^D~?sZIn~HEnFM7HETMhP1u`G!APePq){r?+HUV=&ndLdTU0iW4hx;{ zp`v9;%M7E7Pa}^qbxuj#=eL_F)bOfhG-+)&&Z)V!qMl*zI{N>`{LWbLDLondU#n(w zKaQ)phVk{v4hnx#-lx$A_EeTv*t6*>YNbk6%5|f$D4oN#R92JP{tx2+BP_kMcb;uG zxf*tI7k2y@^yQ(JTm@xS;L93iv%UDAK2BX~w{u@pESQ+8{qMr>%g=rHUn84>Z_t^U%rT)*{{cp9h9R~LH4eB?yt&@9udwaP&u7;j{+m9Ul z^HkWT(%zIf}~0 zB}&q;t?hrKE$Yo*qQ4{1@gVn;bMQY{Qb+3cs+mt}{Lu8|^Uu}X#Jj6unwKY_(PpFr zQc9F4OGF?c49_3?$8gd68D-ev;=?GE z$G_|8%;t)J%Au+@HdJ+{QP1p0wCH8&M^ZG|Z^1LJh+OWI?@x)!j@hD&D3;K(@6`A0 zFGau2_F+Xi`o2f(VEgWv!Wp}#dORfmM0|hGLJrXgPBSwRIIRab5IBtn_6LM^5p`_C z9OnI3gd?#BuqeJF!#kH!JmA~kcTpdH2O5ea&@BONuqW~df||$>idG;4EimG0-DdqbNjy?$3*E-(CmL@ z2ji@>T`F3uspAv&&bU!b=Kkqvz6}{h*-J`{r68k5%?H~jigZDlS1`20C8gZ`-*VF> zNzYMQ52hJTCnWa<|GIf$mrg`)ZP!QT9^E)jxYSar94>f1qjEP%sgv?I4!DQc ztV5O6xgP>#?Hav0Ne-0kof9K`Z$!GP=+1@u>CVoQ+^NPkmcEI`UkgOu$@8Z2w?!Cy ziYCP-gy&C5MGBLPk6`jbQ_zx9ekUqM6A3akM}VPeQAqSZ3C!S0@9CtSCgXqFpuv)E zJWZUfsQ4kxbKxJ{p)B615?cz8vGUYv90c;xKKUGs&fb}DYbv2CZJ=c2BuO8D6_I2k1>VJbRgEhC}UZhMTJ z$ksl2nv=-Q#j;WK6p}SJ&m4b8e0E%}zAgFs=OFohNx^sGtfCsUi8r|(B;6)74p!R;-e+FvA|Wh9*#wo8|CQYs|j5_Opwn3a*1Y?m;sYcYtJ znZNN1VUnW|pv{`vGhS3ZN@|LXhe^8vg15F>u0*hfL8=5LmKY#_v08sc#uZ9Qf|BHo zlt{}cHgzT^SD8G@l|L%T^KN#@<2R(76L+8=oewWVrNVBKdZj^Akl`tXl!v_b#=LDv zl$pYlwtD;=5i#mKl4_sUd*g>J97Q5=Xx%%iswdL|qD)6MONlGsJw>S>0x7FzL)4VX zz2!|Oj8N=alJHg+F4BL+u3SZ`Qqq+p(#bNyTl8iV3-p92xT3XELKm9z%;gy;Z$kXZ zbM4MwICONgRaMu(%yXWHK_`je>CLBHmZ<7@yZYiup&m4BwMwX^A>x-8-y7a`<*7qD zlN8mKPGw?q+|e_WMlRS^GU~Yxq|Q~zhp}!BSxTGcZSHyLi!fkzDwT;k%^J;K>q#c1 zL#5>&wh`}C^CqfGCggE;MI(wT`6Uvj;%)gP*yU>?-Lqm>b*k=FtdzCz;OUGhIY~(^ zb0w@)Y^+a>Y?MZJRn(}WX$xypjoPYRMeeefaeii#stFx`@g<;dmZ@=#iIZe`SZ5Mc ziDAcp)k+m5NvoWi#^myNLPV&6@VX~FB1R& diff --git a/files/c/bonuses/03.tar.gz b/files/c/bonuses/03.tar.gz index 9db3c9ad8a6cd808f3d731b5696c8647ea24f6db..ec870f2f97feb1c68e9c68ed106c244b7096a0f9 100644 GIT binary patch delta 2332 zcmV+%3FG#k5}^`*ABzY80000000ZqC{ZrdIvcJCk6?@_OUJ@Kg2!$&U=JF`*W9GFm zBn)>~n2cj9iHbimmJP|h>HmH!$+BhV1Im?tdZ&$TX?L~SU9Gg*w$a*jP3mn}&z=q% z2s_)`{Mp=n(G=g!-Cgm-x1H9`*0bjJPHTIov9;Aiyk>KMcYF64G@ekV1R@ri0l>2$ z@;nkO$FqIwW>x=p3TxD}oX93{U@}I6aASN}O50dy4}9O5Yoz{MlS2pjwt#vg-d5VI z!O0M2egt=>7eeR*BLvJKFlP(~WatO@<=J2kLlOYDH$l4F|r{z_CxWgmi{UM z0xG?C`s$Q3_?Xwt8xjKbY%=8n4CrV?(s^NrkV%+FmwFNgD;1(9Ge>Co5%wO5-xwz` z$+E#RD$@0`i~wC_f@8S+EA&yqFYm=?RsozXBt z%W^w1G>aA1dC>T&oK=MdG5tQD{#W+6#J7}NUA{vf%lg*`-v74quambIZz~;?1=gWi zP5Zl-oiovHz=!IbFU|SPoR>(I5*hZn@kbsRxnCe)wWmvOpIB5VKBFlCgW(FL@UkCi-umL_226vQ^IEsX3h(b}}Jz?KUoFrqc zY1Ue^1wmh1P|XDkDx)fEjAK|_2{4#Jr+ajA0=K3Uk(D}0sP559iuZZ+!ufrwVmJ*< z`(jeihFVM{nrl^jzTW7#TP&YHl?+F4m_mCon%Em#jLWq59v4LLrZ zD66UJ)`(}*VLnivN0@^7E}pi3O@>m2c;Lq5%u9AunJg}KS)7f;sAxOkzcJzD+x{@X zY!fw$Ss$8UCgU5Bsp(D}49z?*b?A-oWUx#|GMOq8se_0#)g2AT;PR9e*BkDwjYR1N zAU{rT+8-jcpGX2_S{a{T#7nG6HGW^3u?;Vzj<_{c-}~$L&BitMrTYDU3+hb+UNj7R z;?EZTZQ)<}-GGlq2D2f%S}~>|k+fM%WVwZC25e)$0Xqil8t@MTUK)IYIi^UC$aTc7 zBYGY2>qt;XiaL_iUy5uXHHbkkpX<=BaqxMNnIbAG8i zHpu1d4=ahH(M4fXwW1h*JTfd=<9Rp#UEW^AcNTj}#sno!&#Up{>Or!-LbvK27X->a;@}FZ|cuy6O zVzC#5r1YqHUr+)U({j;@*!V6^68qI`$dViRJ%LN?*;?dM3dqK<@*l);e7N)j$NpP6 zjS=NB)xS)~ADeo^pT|A8=tB4Oyq9SvJ&3x%PJ>=~RWLc?!aYqS2?K|CnMks)yF88? z5_ck9BvnefYLJ0{XH9066w83j%1|`gO4B2PP8TmC4AHqH>5=gauFB8Z6)xy^+ur9Ak$*hAt&7?krHbmdpmfL{ky>};sXtmZSo6=g2q zGeABj=4cP+(*|n^AFImmIUdM}Yh{r@rWEMmjJQOLG&GPJdN?C%$<(aO)IRFB9=LWg z7at{VZ(inq6&byjA-yA196dz#=ra)TwZqpIen3+DWYz^Oqy;G5m6QG|1fYE_UDjT%S62>Ft^GSnSPu zVc~06T)!=7$ohZZ;rAR*^sfL`*Z&(kt?gE>{@-eUwziA<|CfM!>;FGYssE{q`+A*T z+^EUhM)4}I9KZ9z{O2r=3$4suEEiSoZ?Vd~pwj%A%=eW_#@|ioaaYBh5C{}#UzDDwX=07pmdk!6*RUjNy7({0x=yKh@BUqb!T zbR7J}WIQnWGYD{<*Doi;#?72sr4kPmd!=9gUO76d0{#jHRgnLg1nRzclW6jCX$i8r zc~T_uyHpZOdrvg!?Z4cb&M4p|%MEdHHP;XZ<9%(t7EqJ%2q6r7Y4{(b#a!h8Pyhhp ChkwNY literal 2335 zcmV+)3E=i0iwFP!000001MM6ASKBzUzi$4Dxp3W0f&&hra0SAg32N}qen80pI(OEDL3rl_aS7+bzzShVZ;1z%;{*if%fKJR zO^p7RYzXp+6z)Ou{_6)RQn+sSq`pIYQfyu=hy(#yE*dmJOCsk*=3z z1n4Rg9AnJCLLVg@p|vT4h!Ka2>kylwTl#@RxL@W4k*op|MuErRMCpd3KP*u1|#1gd!h;D zZl$1_P>PfD>IFD?4ej^z8V>Q1aJYuI22&ktwhU{Q z4JRhh0kUkhU}nHU{B^)T4o&cpFu0?P#8D))LKKP$?+JT$;v^YkO|#aTEeQJBf@&;S zP#IO(BOJr#N`U?h+MT156S%e9h^*8}LUoT;QoPTj7tZff6~k#@+7pw47Sv)Q(Oj#- zbU($KEybGc>snRZ>WbpgTIO-WLbkWqg#kb;`!A^ZLtXO+_iA3r`3;z0mY86wn*a}p zlfW8|xlV`F_n>>+>2~s_84>%2PdwgLm^gS6=O^1mV(SW9*<2+(I_ODFJk5q8Eh&!I zEv{hA?D8~=%@t*CZh&<$&VEVYVXgp`czBAK=04waVtwPjgP-f`Rggn*kZDbYi&v2c zXE8_>4v@GSbLAi;T5rXJsa7dbruifHu{Aot93-27Wc}+b;EM60ai1^vLEw)u$C)>x z^u8x|vaF#eT(({;TZPM66PQ^$D~qkt`JBE5>p`Uq&z-U%$Hx<8HC5dj@fsZ zQ!sywr)`U&lp!9tF*);+9aScaOI;RcBQYx4PWW$3IQh0e2r%13&0^MvCYZ_i24rfD zCoYC&o|n4xMtCyV79*KV6^YbAM4IZ3h9emBloi(-?yY8`bOVqdr?;FB5!z2AfikU( z&oAO7)}$K0C(YP`7g9&u8mjO8_4|f-jeV(p|AKnMfET8LPyE@!zfJrrzfJgPWH3$H z)r>I(iKNY9BFimAGhiG04cIYY*MNT*@Y3KD%rQlBM6M%t9ntHEUq^yEQq+;8{!)yS zC6Z#~|3iNeUJ$UV}o4I{-Ba58eJ4NRV#|Y zBg3LKo_F)#C1VY6ByiR{`Tf1Zz_i*4ji zjSrniTfcgF^fY2-SDv(1ejfS#<x!5DlL|X7scTwC;1VwrN%nP@$8ke4o=6u-m6EO+WZ>D8StZ3X zAhR+QjkePCh@jKOiwHw>E=hW1JcFz9b9RLbx}1?|!J5wokc3W9rV>6NC_HpJpB4)4 z@rh))|3uEQAdmYYykzmbKFwX$B9ALUDVOggdgQk}&&N-aNlqQY?0`-}OgIhTWfOEN z7P-kWI_G`QnV7Xk6-yasEHUx^GMN`_c8d?jTAHpz;b%;XM{X1pAL3YO%a_7v?`_aa?F+?qa#9 za(|0e?gf?R&t$%@R5Jd)%0sJ5G^;I<#38-Zl13!i$`$&5R#)U02Q3xpa%GkE^;|(k zH58?kqLfmUQi@W_w^B;^&Z;GkD2V*1w**DP|2Po&{|%;CE_u2!R_Fg_vuWn?|E=b> zS>*p;0*;PaL)$JLz5cWPrqilpcHgpJzJ&Uv<+}Kb$#`J#XAs~zuU}4xgPS?EOC=sC z_Da9}y>fI^1^g8Zsv!So5~%y)O`^%mr6tJf=1Gyr?@~!D?LE*`Xk-8Y0MIl50002Q&;cPNiK0D2WdlQM13+n@^#*_q00000 z0DmHol-WnBepK2`rl37Q0BAix00Teoj4FDbnuBOhQ%9uG zXc_=yVm6Q(eSg^>KgawT#S}3rh=HI^!2(_MJNtQgw+Cu0M|g{TBfyY~qXyW4fWdj% z5I~S#O%worbhO~d7WGWa5h(2~Uy!?sqknYRHrrs^ryia3g2^i|vuO>bj*6m*SCE8} zNSuibX@zP9NdcC(9-gl)Gtg-}^=OxeRhAk>*a90boIVyTQ*H+Jpu}UbA{@`r6-_7w zE@YBX5Za^yBIcj~cu#Zr=n5~23+Umox-Q$1?7bi#=7cq>U=NLT^1tT(n|z-CGJiK~ zMzA;DaPIN4n)2E@PSVsplq|5JI|P)x5aBbOJD96A758_j^)GrKu>a2dw-`paMkD8Z zXQV5bb{Fy8Cbk-#m2y?uLOzLw$2U^EM&S>U%s}xD4>2-TH_G?ovaZugEu4`N)ttG~ ztxzh?nUp!r5i^4xCvj^pzH!G0tbc{2*YL74<6@=UJu{4&!m2PoK8o!*s$RUE3WGtg_Q#{$q~kvhL41?L&j}X?L$aM7Gapr zO&Mmfze=la^ddm<`4`O(uzztMx^s~>s}u{L+DAwM_<^CJq;Fstv7>LdvAx)3lyE;E z;f?{J}SV5$W34iIZ)CvgNOhwGp zXr&n)v}Kw->I4i@DRIo(S(r~h|obxbT^AQYq@S%th_BtU_wj#t* zVssH7c14JHA)-0zC4XS8-4s=kAx^Jz=Dy*t6b(%vSR&6v?y{N}s2Mm}*ICZwU=$gt z%)z4}!x|FZEsTfY%0_J$vNGCPAy$fqpH%E=TGH$vgE_qVRxDwTWEX}Fl^$nI##FFY z*V5~+eEnp`G}t?qeB20DAxf&jua&pJYYqHZ1%Ye{txP_i)qgv>1LFi#sWWEy$rWv- z@qX(^;R9S~y0+8=<7UIUkpxPa6f`4J^9UKR&gp*C5Lu}Wi}8HkvNXn;xaLECgrN5-| z^=etF*GIy}F^x7OsT@NTkj2q!2cU?8+9}qS%Kh4^Fk7gwT!*dJ zsCdM0RHrpS6a{j^W+*nrBobAHh^=2Kr>q1jQ!L?ZiSJEgFZgYL+d6I z@{>jdvMT#WuHpo#QV>M!c8s)vxQ^$sjKF|UqJN-Q&vo)HoUIdL8en0C0i0vnpoRX7 zKtbVD(}NO=79A?-nkKXlCyiIT3vSKAp=dbtK`n^VkF%#zG--_EpQ1;#GUa?P zq6Cj#u}FUe(bJ1H80h7>Z9|5d5tl>OWy($t#$P9^fv{d1^T%~e213~Gz8hLNXFeRdbsKDJb zm2h&ZkxX_nEOa2c4yNr|9e*R+7hfRUQ%%Ouh=|2|3a~vQ6y4d`g2B*CW!HH;xs_E3 z8VH$$AXyv{;thgB8eH;$%u{Wk=~{3+zJFn1!-n#7{`$Mhrrzkx~oB6@VtPa9n*V1u_DIxP@*7HVt?eoz>}4dgl@O9w&5HOG^z#qLdE8UOsKrG;u4)~ zUu>xx3UwkPk#ZG!WHmC zc3Yk=CkmArJShrD&%e|?3Xw^XAbWtoeg#62HS<0j#0(^|$h{Iy(5T}9gH0wT*u^wd zxLBI=OnG{ZRu@u?KAxb75MBD{~T3lhUgozeLGgpw6QGh^1$;oe$ zl*#lmcsNi)p8f!ki(T>BK0m&^wE#^Un}`73ZiGm&GVgVU_hG})bm$bNYL@`qE+Gq7 gWoGlBN+Xn?9GLKAn!}371cUrt$rRy2Ky-;wgh>gOKL7v# delta 2527 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 diff --git a/files/c/bonuses/04.tar.gz b/files/c/bonuses/04.tar.gz index 7a8af0c0b709a34872ef06a289c5a8cd9c92631f..39ed9def63f4e289ab683aadfc4f722eea5a2d3d 100644 GIT binary patch delta 2497 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 Lw4*t708jt`OEdAd delta 2497 zcmV;y2|o726T=gb9DjDEC7GkdZJ8vH1Jd?Q-@{{U0lL@{C)uRwn|$|M$ry|=Hl<1K zuFpHuU`yIv?N9B>t<(;hm&OggAi@=8_nZ6d;h_TXs#cS~)z`;W^w_$pR{hT)oG)na;2EdJx5oZ{R^8eG8r9_vBwRUFq)hCqXmJ1fWa%Z{UM{C z*msQYxR?{zE%Z9q-KN$Uvju)>5 zxdi>~&pEw&Kz|`rQi?2dv2gY1T9^dhiz$f)yqa@SFbL&LiH$kBH8>@7EOKOo3eC&L zxu!SuX6N#%b)j|j))~5N^qU_+oThEiG3s=IOU$x+)a!S(e_l5((1-SQF^AA|Jf{8Pp|azL>+dz*5{aNiKVznqg5s z5#bp&Y}T^~L(P{jVGbf`j9q=MPu;>J@GI#l0?04zeUGlXtxt`397+O}C=T}aa%d0zW5@{}q2>geHv&O@ zF=dcKpu|$YFhT_ZOm~8jgB`}9*qLIJj0m>S@D6!XIOmZ;Eo8G>%q7Jk^Qcu;w5J9) z9Dg(-T)0qw7~Dl{q)0)H!%PDTra95@a@&B_?-dTzj2sIAD29uOK$O9cFN*~asidY% zpsTq&E?ZgPr$mA3CbRIV%RO8_P>;S2L?Az)g=GJ#WGSgV7E5zvNpEC8brw)yfWdEx zz>?KL4*V7>I3x{(Zizb~R989@1t`)%N`G?#e!VxR93GNfR!3lCK~6u|L;cQKM>4pN zTC;~?=Z9y2%D4puKUCC#=I7=OYsoRDtJVR`SY4`mEUZwa8Dkn=c1tXGfJP+ld9)D8G ziUDA6rKOsctR*DKcdWaLl@JyGy+$%bP0!=;C=lJUF<;x=S$wYCax)qLmsQWumFRLgL!cv(Y=NPKQ6ZCfw@T+9F zH+Qg?68n$0xfNX5b1raB7I`4bLV^HmnG;l4s3&fbX$Xv73|_ohn^C&*Tz|RE!i)Bc zxtgLdF)N>HD;kt}u6&;3s^C+Pe3TF8_Z*i$+1|9-hPWNvWw6E|96Uc$dcDexV~ zmX^)=F|!z$BPh~gj75?_XN#xh9-#Ug877ezx3c~OBKg6rewu%{iht_haqEUPeSg5N zG&53WUeO9NMzR>6fXp(5e4YvJpazRb3ZDSmz7D9=bK(`8o+{6%| z7z~P&cjdApu_RH)pno28wRgUwJ;7P}_Ln*+e^G$*KlEYjk$5DY|JB1h!n55%D0R$}!A`lOgx2yC{x$_f zy!iOAw!qJmCw?MRJ5Y^i!2gd@nD?CNB2!6 zU>C#xTrMX=ng|uyOC`d|m9L);X8F)PX~I?Ram+1l6eV(#d%WQmH;M*(^3mi&9o5uB zJem?GVpxEUmJLIG01LNVIq287U0JW!w_914D`Q+G4E`FukiRs^5Wy4 znvP9FVSiY?uU)>~r-rhQXP8RQwHR}valLJBJ57k*!Fhjk^p^Xxep1}WhxUU;_R6)@ zrgWQraz3pJ;%bXWR>3xB>l6FIwpH>2YGI3W_o=lIlRF+<3qk&HutB3qf_bjaM!}a= z!`0mh)))75sb$d*_7dAx)!X$Fane4-F5_(Szkj#O`T1W&`*A7t(f51W-*|8*b{m88 zVC!_Sd%KYw2!yKtR}79W|Nnb5B%tw3Yobq+tKkIUW3xbN7h5xNlJ)$x-TZTUx{+cb7?o+G8~n$ zS~}V`$;YJGn4x$r{aRo3Gsqx=3^K?dgA6jrAcG7t$RL9ZGRPo<3^K?dgA6kGtHOT( LMYw#708jt`wJ-AH diff --git a/files/c/bonuses/05-06.tar.bz2 b/files/c/bonuses/05-06.tar.bz2 index 93aca9f18bc353114909b495cac220181e9c81f9..148b63487918f0d736855cdff942659a28a4291f 100644 GIT binary patch literal 3625 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 literal 3642 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 Mk}1N3hb+~^Kw{j#3jhEB diff --git a/files/c/bonuses/05-06.tar.gz b/files/c/bonuses/05-06.tar.gz index 223d420742c9f05e44d854edb734328420abf7e5..92420342f93403ad45d71090a18e95abbd89e582 100644 GIT binary patch delta 3359 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 delta 3355 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 diff --git a/files/c/bonuses/08.tar.bz2 b/files/c/bonuses/08.tar.bz2 index 396f2a5d7d7b7fd595fcb955dd4773b9afded512..7b1786470cd736767cf755ed1040256693deed5c 100644 GIT binary patch literal 75833 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

$kvTa)NKb4@jZ1cCtHwpY0Np-BrJ zAgMBBg{xkl+IL{%K&y}HC$6OjCTexl@?g(NxaD~&@nl>^*5x>+8$KOt^Qso3$euvK z(m@B2_9E|@eTiO(+H*7>OzH2LX`{>ILPM{i)iMT1K#mA8Yz+t%T5yIQLLXRtnqH;0 zFqmeC+pkX6WC051)n-Eo&tVC-ey+=wxbsXGOYbg$c;WNuUt(HvpD89d=`^rw^)QS7 zC)fx}CHNO6=11WCb#=33Z)aqEFIa;_Nm`FwStj;O#w?6d7$-ofchSzZ>{$>|rtRb3(ref`3K%7HM< zA{oaTG(5KYdRNk(>0zGG8_Fkh@Gbz8TX>PID2iT}Ccq005m31~X!A*Fc>G>HYNl zXHO@2SA71i1|uPPSF=P30S*;TcE9!bNWICsDIZpJ@X=xuxY117lCx`FzYa^pK83(! zkoG3R^lqxE34u`nE|77X-kmAzHN|47u$0&y322!`Xl`z|@xJY#;>gn@&aU!28z6Mb9yYij*=PvCf5%A zM}69OycHBKJ z2i21Wzdfc?3vkrMIBℜ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 z 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 YBTB@33F)|@Pyg|EBvXY62DXOvFi0OpBme*a diff --git a/files/c/bonuses/10.tar.gz b/files/c/bonuses/10.tar.gz index ee9dc94b675bddbb767e58e7fb7ade789e578e3a..1d90fe42e4ca29761fa5145d2a7b1c283050edc7 100644 GIT binary patch literal 230099 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

nV)Q*z|3HYA(UNC3s-~!4IyCAo2;0{P`zYcoe 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


|@Pkc=0C_*$(4=%a=_>{a- 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∨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 O5ajv2Bz}c~{`xPh*qK@Y literal 230099 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

H|1=;3KY|MfY#17W5Fe}*r^yH2-$lE4H&Vn@# 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 z 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 Rykx!rYI8NefrUYV{TKNtcb@ - - + +

diff --git a/search/index.html b/search/index.html index 897ab32..84b3d93 100644 --- a/search/index.html +++ b/search/index.html @@ -14,8 +14,8 @@ - - + + diff --git a/talks/index.html b/talks/index.html index dc914f5..5ecd68f 100644 --- a/talks/index.html +++ b/talks/index.html @@ -14,8 +14,8 @@ - - + +

Talks

Featured talks I presented on various events.

Shift Left Testing with Packit and Testing Farm

In today's fast-paced software development landscape, ensuring the quality and reliability of upstream contributions is crucial. The traditional approach of testing at the end of the development cycle is no longer sufficient. To address this challenge, we present "Shift Left Your Testing with Packit and Testing Farm", a talk that introduces two powerful tools designed to simplify and enhance the testing process for the upstream contributions.

Packit and Testing Farm provide a dead simple way to build and test your upstream contributions against both public or internal Red Hat testing infrastructure. In this talk, we will explore the capabilities of both tools and demonstrate how they can be seamlessly integrated into your development workflow.

In addition to the current capabilities, we will share our plans for Packit and Testing.

  • QEcamp23
  • virtual
  • 11/2023

Packit: RPM integration, all in one

Do you want to automate how you build and test your RPM packages? Do you maintain any package in Fedora and want to automate the releases? Or are you just interested in CI/CD on GitHub or GitLab, Fedora and integration of upstream projects with RPM-based Linux distributions? In this session, we are going to deep-dive into features of Packit that can help you do your day-to-day job.
  • DevConf.cz
  • Brno, Czechia
  • 6/2023

Also presented on:

  • DevConf.cz Mini in Brno, Czechia (3/2023)

Credits to Paweł Kosiec for implementing his own React components for talks.

mf

blog and additional materials for courses at φ

About Me

I'm working in Red Hat in the Packit team and studying at FI MUNI while also tutoring some courses there.

Content

On this page you can find my blog or unofficial materials I have written over the course of teaching multiple courses at the FI.

Mastodon

Feel free to contact me on any of the following Mastodon accounts: Fosstodon or Hachyderm.io

gO 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 T-L5A`|M7PuQ-uitQs2YCq=(=i diff --git a/files/c/bonuses/08.tar.gz b/files/c/bonuses/08.tar.gz index 59caeab6ad8b74f766aafcd2fbab2819719d2915..4d2240c6e57a141c2d3c0348b190defb09fd5e88 100644 GIT binary patch delta 45856 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%0DW9cptPh{f1bwC?|EjZD4;wGhcqErLtY0 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 delta 45852 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%0AF({eIhS?()A{PGaZwJBLK6}BHR^z<@D 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