<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze pytania i odpowiedzi w Nasze projekty</title>
<link>https://forum.pasja-informatyki.pl/qa/nasze-projekty</link>
<description>Powered by Question2Answer</description>
<item>
<title>Chciałby ktoś porobić wspólnie open source? (wspólna nauka)</title>
<link>https://forum.pasja-informatyki.pl/599961/chcialby-ktos-porobic-wspolnie-open-source-wspolna-nauka</link>
<description>

&lt;p&gt;Cześć, od miesiąca, a dokładniej od 12 kwietnia 2026&amp;nbsp;rozwijam sobie wieczorami taki projekt&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Marcin99b/Storygame&quot;&gt;https://github.com/Marcin99b/Storygame&lt;/a&gt; i staram się robić wokół niego &quot;wyzwanie&quot; robienia codziennych commitów (piszę&amp;nbsp;to 10 maja i do tej pory tylko 3 dni się nie udały).&lt;/p&gt;



&lt;p&gt;Stack to .net + react + mongodb, ale w tym przypadku to nie ma dużego znaczenia&lt;/p&gt;



&lt;p&gt;Przejdę&amp;nbsp;od razu do tego jak ten projekt powstał i po co, kogo szukam i jaki jest cel&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;1. jak ten projekt powstał i po co&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;Programowaniem zajmuję&amp;nbsp;się&amp;nbsp;zawodowo od 8 lat, a licząc naukę przed startem pracy to wychodzi łącznie 10. Praktycznie w każdym roku próbowałem rozwijać jakieś projekty &quot;po godzinach&quot;, bo według mnie to najbardziej skuteczna forma nauki nowych rzeczy. Niektóre miały na celu przetestowanie jakiegoś pomysłu z programowania, niektóre były po prostu nauką jakiegoś narzędzia, niektóre były pomysłem na startup ale nie wyszło i skończyły jako open source itd.&lt;/p&gt;



&lt;p&gt;Oczywistością, ale o której łatwo zapomnieć, jest to że trudniejsze i bardziej niecodzienne projekty, rozwijają bardziej, niż te powszechne, bo nauka jest bardziej efektywna&amp;nbsp;podczas odkrywania nowych rzeczy, niż&amp;nbsp;przy wielokrotnym robieniu tego samego, co się już zna na pamięć. Przykładowo, jak w pracy pisaliśmy własną kolejkę&amp;nbsp;MQ&amp;nbsp;to czułem rozwój prawie każdego dnia, a przy pisaniu &quot;kolejnej aplikacji biznesowej podobnej do innych&quot;, czułem tylko raz na jakiś czas, ale rzadziej niż częściej. Kiedyś (ok 6 lat temu) z grupą ludzi rozwijaliśmy taki projekt&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Devscord-Team/Watchman&quot;&gt;https://github.com/Devscord-Team/Watchman&lt;/a&gt;&amp;nbsp;który wstępnie miał być typowo funkcjonalny (narzędzie do wsparcia adminów&amp;nbsp;na serwerach discord) a ostatecznie funkcjonalna część była tylko pretekstem do rozwijania &quot;ciekawszej&quot; części (własny routing, własny cache, własny rate limiter, własny parser komend, własne... dużo innych rzeczy). Projekt skończył tak że było tam więcej własnego frameworku niż funkcjonalności dla użytkowników, co na pierwszy rzut oka może brzmieć jak błąd, bo takie podejście jest odradzane w projektach komercyjnych, bo psuje plany biznesowe... ale w przypadku hobbystycznego projektu open source nie ma biznesu, można robić to co przynosi wartość programiście, a nie dochody firmie. Docelowo projekt bardzo pomógł w rozwoju ludziom, którzy byli w niego aktywnie zaangażowani. Poza tym, w&amp;nbsp;CV lepiej wygląda &quot;napisałem własny routing z parserem wiadomości&quot; niż &quot;napisałem kolejnego CRUDa&quot;.&lt;/p&gt;



&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Marcin99b/Storygame&quot;&gt;https://github.com/Marcin99b/Storygame&lt;/a&gt;&amp;nbsp;Docelowo ma być właśnie takim projektem do budowania wokół niego ciekawszych rzeczy. Aplikacja to prosty tracker książek, bo to coś co każdy jest w stanie zrozumieć i łatwo dojść do etapu w którym jest funkcjonalna i użyteczna, ale też nie jest przesadnie skomplikowana i można się skupić na budowaniu rzeczy wokół. Przykładowo, może jakieś własne narzędzie do event streamingu, może jakieś własne narzędzie do cache, może własna baza danych, może własne narzędzia do observability, może jakieś eksperymenty z architekturą na które nikt by się nie zgodził w komercyjnym projekcie. Obecnie projekt idzie w stronę architektury eventowej i możliwe że będę pisał narzędzie do event streamingu w Rust (kiedyś chciałem się nauczyć, nawet kupiłem książkę, ale odpadłem na nauce współbieżności, teraz chcę dać kolejną szansę).&lt;/p&gt;



&lt;p&gt;Nazwa &quot;storygame&quot; bo wstępnym pomysłem było zrobienie czegoś jak&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;https://habitica.com/&quot;&gt;https://habitica.com&lt;/a&gt;&amp;nbsp;ale w formie trackera książek (gamifikacja, grafika pasująca bardziej do gry niż narzędzia). Może aplikacja pójdzie w tą stronę, może nie, może nazwa się zmieni. Nie chciałem nazywać jej &quot;SampleApp&quot; bo to słabo brzmi. To nie ma być aplikacja z przykładami wymyślonymi na siłe pod testowanie aplikacji (typowe &quot;sample app&quot;), tylko rzeczywista aplikacja, która naturalnie wymaga użycia pewnych rozwiązań, ale można je stworzyć samodzielnie zamiast używania gotowców (np redis, kafka, openobserve itd).&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;2.&amp;nbsp;kogo szukam&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;Myślę że każdego kto chciałby wziąć w tym udział. Jeśli ktoś dopiero się uczy i chciałby pogrzebać przy prostszej logice (tracker książek) ale z dobrymi praktykami, to będzie wartościowy, bo większa aplikacja = więcej scenariuszy użycia narzędzi = można napisać je lepiej. Jeśli ktoś chciałby pisać własne lub wspólne narzędzie architektoniczne, ale chciałby mieć projekt bazowy na którym może je testować, to też będzie wartościowy, bo taki jest docelowy sens projektu.&lt;/p&gt;



&lt;p&gt;Główna aplikacja jest w .NET10, ale te poboczne mogą być w dowolnej technologii (najlepiej coś popularnego).
&lt;br&gt;
Baza to wstępnie MongoDB ale można zmienić na coś innego.&lt;/p&gt;



&lt;p&gt;W przeciwieństwie do wielu podobnych ogłoszeń, ten projekt nie jest konkretnym projektem z jasnym planem na&amp;nbsp; przyszłość i gotową listą zadań, przy których potrzebne jest wsparcie aby przyśpieszyć postęp. To bardziej środowisko do własnego rozwoju, które oryginalnie stworzyłem dla siebie, ale fajnie byłoby rozwijać je w grupie. Plany rozwoju będą zależne od tego, jakie osoby się zgłoszą i jakie będą miały cele, jaką ilość czasu w tygodniu.&amp;nbsp;Projekt żyje od miesiąca i będzie żył niezależnie od tego, czy zgłosi się 10 czy 0 osób, po prostu tempo i kierunek będą inne.&lt;/p&gt;



&lt;p&gt;Mój poziom zaangażowania jest różny, codziennie staram się zaglądać do projektu, ale czasami w ciągu dnia spędzę 3 godziny a czasami 15 minut, zależnie ile mam czasu i energii. Nie chcę traktować tego projektu jako drugą pracę, bo nią nie jest, nie oczekuję też tego od kogokolwiek innego.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Jeśli ktoś jest zainteresowany&lt;/strong&gt;, prośba o napisanie wiadomości prywatnej na forum, później przejdziemy na discorda. Nie chcę od razu dawać zaproszenia do discorda, żeby nie było na nim sztucznego tłumu. Nie mam problemu z osobami które chcą tylko obserwować projekt, ale nie chcę ludzi którzy przypadkiem kliknęli link, sami nawet nie wiedzą po co, a później przeszkadzają.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;3. jaki jest cel&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;W ramach podsumowania:&lt;/p&gt;



&lt;ul&gt;
	

&lt;li&gt;Zwykła aplikacja która jest &quot;generatorem&quot; problemów do rozwiązania&lt;/li&gt;
	

&lt;li&gt;Budowa własnych narzędzi które te problemy rozwiązują
&lt;br&gt;
	(tylko do tego co chcemy budować, żeby też nie popadać w skrajności)&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;Obecnie podstawowa funkcjonalność trackera (dodawanie książek z katalogu do prywatnej biblioteki + monitorowanie postępu) jest skończona, ale&amp;nbsp;jest jeszcze duży potencjał na dalszą rozbudowę aplikacji, bo &quot;podstawowa funkcjonalność&quot; znaczy tylko tyle, że da się jej realnie używać, ale dalej wszystko jest podstawowe.&lt;/p&gt;



&lt;p&gt;Od kilku dni zaczynam bawić się przetwarzaniem eventów + rośnie liczba sytuacji w których przydałby się zewnętrzny cache.&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599961/chcialby-ktos-porobic-wspolnie-open-source-wspolna-nauka</guid>
<pubDate>Sun, 10 May 2026 10:44:18 +0000</pubDate>
</item>
<item>
<title>Czy ktoś chciał by przetestować moją gre</title>
<link>https://forum.pasja-informatyki.pl/599929/czy-ktos-chcial-by-przetestowac-moja-gre</link>
<description>

&lt;p&gt;Cześć wszystkim!&lt;/p&gt;



&lt;p&gt;Chciałbym zaprezentować Wam mój projekt, nad którym obecnie pracuję. Gra jest w fazie rozwoju, ale podstawowe mechaniki są już zaimplementowane. Zależy mi na Waszych opiniach, wyłapaniu ewentualnych błędów oraz sugestiach, co mógłbym dodać w przyszłości.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Minecoz (Pre-classic)&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;Mój najnowszy projekt pisany w &lt;strong&gt;C++ przy użyciu biblioteki SDL3&lt;/strong&gt;. Skupiłem się tutaj na wydajności i nieskończonym świecie.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Co już działa:&lt;/strong&gt;&lt;/p&gt;



&lt;ul&gt;
	

&lt;li&gt;
	

&lt;p&gt;Nieskończona mapa.&lt;/p&gt;
	&lt;/li&gt;
	

&lt;li&gt;
	

&lt;p&gt;Dynamiczny generator drzew.&lt;/p&gt;
	&lt;/li&gt;
	

&lt;li&gt;
	

&lt;p&gt;Kamera podążająca za graczem.&lt;/p&gt;
	&lt;/li&gt;
	

&lt;li&gt;
	

&lt;p&gt;System animacji postaci.&lt;/p&gt;
	&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;Link do pobrania:&lt;/strong&gt;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;https://bug128.github.io/MinecraftCodeDealer/Pc_games.html&quot;&gt;Pobierz Minecoz&lt;/a&gt;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599929/czy-ktos-chcial-by-przetestowac-moja-gre</guid>
<pubDate>Sun, 26 Apr 2026 11:55:34 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Pomóż przetestować proszę moją aplikację/gierkę webową</title>
<link>https://forum.pasja-informatyki.pl/599824/pomoz-przetestowac-prosze-moja-aplikacje-gierke-webowa?show=599826#a599826</link>
<description>

&lt;p&gt;są przewidziane jakieś nagrody? :D&lt;/p&gt;



&lt;p&gt;/edit&lt;/p&gt;



&lt;p&gt;logika po stronie frontendu to raczej kiepski pomysł, wystarczy prosty skrypt i autokliker, już nie chciało mi się sprawdzać dalej bo animacja&amp;nbsp;konfetti zaczęła mi się ciąć&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=13650404251691010433&quot; style=&quot;height:835px; width:521px&quot;&gt;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599824/pomoz-przetestowac-prosze-moja-aplikacje-gierke-webowa?show=599826#a599826</guid>
<pubDate>Sun, 22 Mar 2026 19:32:40 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: UPDATE! Stario i AI</title>
<link>https://forum.pasja-informatyki.pl/599730/update-stario-i-ai?show=599772#a599772</link>
<description>

&lt;p&gt;Hm, jak to przetestować? Bez podania danych to jakiś landing page z ograniczoną treścią. Odnośniki &lt;em&gt;Dowiedz się więcej&lt;/em&gt;&amp;nbsp;nie działają.&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599730/update-stario-i-ai?show=599772#a599772</guid>
<pubDate>Tue, 03 Mar 2026 17:27:46 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Nowe gui dla linux</title>
<link>https://forum.pasja-informatyki.pl/599715/nowe-gui-dla-linux?show=599734#a599734</link>
<description>Patrząc na README, wygląda jak coś bardzo fajnego. Nie lubię tiling WM a to wygląda jak alternatywa dla openboxa. Fajny projekt imo</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599715/nowe-gui-dla-linux?show=599734#a599734</guid>
<pubDate>Thu, 26 Feb 2026 13:44:29 +0000</pubDate>
</item>
<item>
<title>Dominion of Darkness - symulator Mrocznego Władcy</title>
<link>https://forum.pasja-informatyki.pl/599720/dominion-of-darkness-symulator-mrocznego-wladcy</link>
<description>

&lt;p&gt;Jest to RPG/strategiczna gra tekstowa, w której gracz wciela się w postać Mrocznego Władcy, który podbija/niszczy świat fantasy przy użyciu intryg, siły militarnej i mrocznej magii. Gra jest bardzo nieliniowa, od decyzji gracza zależy zarówno przebieg rozgrywki pod względem mechaniki, jak i fabuła - żeby zobaczyć wszystkie sceny i spotkać wszystkie postacie, trzeba zagrać kilka razy.
&lt;br&gt;

&lt;br&gt;
&lt;img alt=&quot;[Obrazek: 1771681865672811s.jpg]&quot; class=&quot;mycode_img&quot; src=&quot;https://i.4cdn.org/tg/1771681865672811s.jpg&quot;&gt;
&lt;br&gt;

&lt;br&gt;
Gra jest dostępna za darmo, bez konieczności rejestracji lub ściągania, tutaj: &lt;a class=&quot;mycode_url&quot; href=&quot;https://adeptus7.itch.io/dominion&quot; rel=&quot;noopener nofollow&quot; target=&quot;_blank&quot;&gt;https://adeptus7.itch.io/dominion&lt;/a&gt;
&lt;br&gt;

&lt;br&gt;
Jeśli ktoś się boi, że to jakiś scam i gra nie istnieje, tutaj przykładowa recenzja:
&lt;br&gt;

&lt;br&gt;
&lt;a class=&quot;mycode_url&quot; href=&quot;https://www.youtube.com/watch?v=lgNpSKToOSg&quot; rel=&quot;noopener nofollow&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=lgNpSKToOSg&lt;/a&gt;
&lt;br&gt;

&lt;br&gt;
A tutaj fanowska piosenka stworzona przez jednego z graczy: &lt;a class=&quot;mycode_url&quot; href=&quot;https://www.youtube.com/watch?v=-mPcsUonuyo&quot; rel=&quot;noopener nofollow&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=-mPcsUonuyo&lt;/a&gt;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599720/dominion-of-darkness-symulator-mrocznego-wladcy</guid>
<pubDate>Mon, 23 Feb 2026 11:35:48 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Moje konto na GitHubie.</title>
<link>https://forum.pasja-informatyki.pl/311598/moje-konto-na-githubie?show=599712#a599712</link>
<description>Hej dalem ci gwiazdkę na GH bo też stworzyłem aplikacje i dopiero zaczynam na nim pracować &lt;br /&gt;
&lt;br /&gt;
Propo twojego pytania o ulepszenie to polecam ulepszenie readme bo to się przydaje i pokazuje że jesteś porządnym programistą oraz polecam robienie aktualizacji i dodawanie tagów oraz dodania wszystkiego co można jest taka zasada 80/20 to znaczy że 80% kodowania a 20% tworzenia strony i promowania aplikacji. Twoje projekty są bardzo inspirujące i mają potencjał polecam oglądnąć angielskie poradniki na temat promowania projektów git.&lt;br /&gt;
&lt;br /&gt;
Mam nadzieje że pomogłem i że ktoś przejrzy moje i twoje repozytoria. &lt;br /&gt;
&lt;br /&gt;
Powodzenia</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/311598/moje-konto-na-githubie?show=599712#a599712</guid>
<pubDate>Fri, 20 Feb 2026 18:17:35 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Mój nowy SaaS | Stario</title>
<link>https://forum.pasja-informatyki.pl/599680/moj-nowy-saas-stario?show=599702#a599702</link>
<description>Fajny landing page. zwłaszcza, że w większości (zapewne) kierowany do kobiet. Obawiam się jednak, że aby zebrać wartościowy feedback przydałoby się jednak demo konto, lub chociaż figma z wrzuconymi screeenami, wtedy możnabyy coś więcej powiedzieć. Techologie, z których korzytstacie jakie by nie były, jeżeli są dobrze utrzymane będą działać. Trzeba też brać poprawkę na to co umie zespół i jakie są możliwości i koszty. Łatwo jednak narobić sporego długu technologicznego na początku, a szkoda później orać. Nawet pracując z modelami można wyłuskać fajną architekturę i jakosciowo dobry kod pracując nad projektem w odpowiednim tempie.&lt;br /&gt;
&lt;br /&gt;
Nie przejmowałbym się wielką konkurencją. Booksy to bardzo duży gracz, ale też szansa, bo to pokazuje, że rynek jest tak duży, że nawet zbierając okruszki ze sołu można się najeść.</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599680/moj-nowy-saas-stario?show=599702#a599702</guid>
<pubDate>Thu, 19 Feb 2026 10:03:41 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: torenty - napisałem program do ich pobierania - SuperSeedTorent</title>
<link>https://forum.pasja-informatyki.pl/599515/torenty-napisalem-program-do-ich-pobierania-superseedtorent?show=599516#a599516</link>
<description>Z tym zrobiłem program to dużo powiedziane, nie lepiej było zgłosić poprawkę do repo qBitTorent?</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599515/torenty-napisalem-program-do-ich-pobierania-superseedtorent?show=599516#a599516</guid>
<pubDate>Sun, 28 Dec 2025 13:14:24 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Aplikacja do tworzenia map</title>
<link>https://forum.pasja-informatyki.pl/599489/aplikacja-do-tworzenia-map?show=599510#a599510</link>
<description>hej! też chcę tu dodać swój projekt, ale nie wiem jak. Nie mam przycisku &amp;quot;dodaj post&amp;quot;, ani innego.</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599489/aplikacja-do-tworzenia-map?show=599510#a599510</guid>
<pubDate>Thu, 25 Dec 2025 16:22:58 +0000</pubDate>
</item>
<item>
<title>Kalendarz adwentowy 2025</title>
<link>https://forum.pasja-informatyki.pl/599499/kalendarz-adwentowy-2025</link>
<description>

&lt;p&gt;Pod koniec listopada wpadłem na genialny pomysł zorganizowania na swoim blogu &lt;a rel=&quot;nofollow&quot; href=&quot;https://blog.comandeer.pl/kategorie/adwent-2025/&quot;&gt;kalendarza adwentowego&lt;/a&gt; – czyli wrzucać codziennie wpis od 1 do 24 grudnia. Chyba mogę już powiedzieć, że dowiozłem! Został bowiem ostatni artykuł do napisania.&lt;/p&gt;



&lt;p&gt;Jeśli lubicie czytać o niszowych standardach sieciowych i moich zmaganiach z blogiem, to zachęcam do lektury!&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599499/kalendarz-adwentowy-2025</guid>
<pubDate>Mon, 22 Dec 2025 22:20:49 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Problem Collatza - wątek do zabawy z aspektami słynnej hipotezy + nauka przetwarzania wielkich liczb</title>
<link>https://forum.pasja-informatyki.pl/599386/problem-collatza-watek-zabawy-aspektami-slynnej-hipotezy-przetwarzania-wielkich?show=599441#a599441</link>
<description>

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=14426116832091008521&quot; style=&quot;height:393px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Całość jest tutaj: &lt;a rel=&quot;nofollow&quot; href=&quot;https://ksetlak.pl/wp/dowod-ze-collatz-byl-geniuszem-trollingu/&quot;&gt;Dowód, że Collatz był geniuszem trollingu&lt;/a&gt;&lt;/p&gt;

</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599386/problem-collatza-watek-zabawy-aspektami-slynnej-hipotezy-przetwarzania-wielkich?show=599441#a599441</guid>
<pubDate>Sat, 06 Dec 2025 11:48:56 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Ej wiecie co...</title>
<link>https://forum.pasja-informatyki.pl/599371/ej-wiecie-co?show=599382#a599382</link>
<description>

&lt;p&gt;Nie wnikałem jakoś w detale, ale ogólne review&amp;nbsp;jeśli chcesz:&lt;/p&gt;



&lt;p&gt;- naucz się gita :P&lt;/p&gt;



&lt;p&gt;- nie będę się czepiał temu że masz zmienne globalne albo temu że nie walidujesz poprawności... czegokolwiek, jak piszesz to sam dla siebie to whatever :)&lt;/p&gt;



&lt;p&gt;- dużo kodu takiej postaci.&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
(get_variable_offset(temp2-&amp;gt;left-&amp;gt;left-&amp;gt;Text, tree-&amp;gt;right-&amp;gt;right-&amp;gt;Text) == -8) ? ' ' :
&amp;nbsp; (get_variable_offset(temp2-&amp;gt;left-&amp;gt;left-&amp;gt;Text, tree-&amp;gt;right-&amp;gt;right-&amp;gt;Text) == -4) ? 'd' :
&amp;nbsp; &amp;nbsp; (get_variable_offset(temp2-&amp;gt;left-&amp;gt;left-&amp;gt;Text, tree-&amp;gt;right-&amp;gt;right-&amp;gt;Text) == -2) ? 'w' : 'b');&lt;/pre&gt;



&lt;p&gt;- również kod typu&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
bool x = costam == costam ? true : false;
// to równie dobrze możesz napisać
bool x = costam == costam;&lt;/pre&gt;



&lt;p&gt;- dużo kodu gdzie deklarujesz globalną zmienną i funkcję `init` gdzie deklarujesz stałą i kopiujesz tą stałą do globalnej zmiennej. Czemu to nie mogła być po prostu globalna stała bez żadnej funkcji?&lt;/p&gt;



&lt;p&gt;- kompletny brak spójności czy nazywasz rzeczy jakos_tak, Jakos_tak, JakosTak czy Jakos_Tak.&lt;/p&gt;



&lt;p&gt;- za dużo skrótów - rozumiem że nie chcesz pisać dokumentacji, ale jak nazywasz zmienną `ss`, to nikt nie ma pojęcia co to robi, w tym Ty za kilka miesięcy :)&lt;/p&gt;



&lt;p&gt;- masz dużo fajnych enumów, po czym nagle rzucasz gołymi liczbami :c `New_Token_init(7, string, 0);`&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599371/ej-wiecie-co?show=599382#a599382</guid>
<pubDate>Sun, 23 Nov 2025 16:11:38 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Czy chciałby ktoś przetestować mój program i go ocenić?</title>
<link>https://forum.pasja-informatyki.pl/599360/czy-chcialby-ktos-przetestowac-moj-program-i-go-ocenic?show=599361#a599361</link>
<description>

&lt;p&gt;Taka moja rada- &lt;strong&gt;GitHub &lt;/strong&gt;jest po to, aby generalnie swój kod wrzucać, a nie aplikacje spakowaną w &lt;strong&gt;7z/zipa/tara &lt;/strong&gt;czy inne rozszerzenie, dlatego moja sugestia, jeśli chcesz realnie od kogoś uzyskać darmowy feedback i ocenę, to wrzucić kod aplikacji na &lt;strong&gt;GitHuba,&lt;/strong&gt;&amp;nbsp;bo wrzucanie spakowanego &lt;strong&gt;projektu/aplikacji&lt;/strong&gt; mija się z &lt;strong&gt;celem zdalnego repozytorium.&lt;/strong&gt;
&lt;br&gt;

&lt;br&gt;
Więc ten &lt;strong&gt;kod &lt;/strong&gt;powinieneś przygotować - nie musi być w postaci całego&lt;strong&gt; &lt;/strong&gt;flow &lt;strong&gt;comitowania, robienia branchów, PR ( co polecam bardzo w celu nauki - gita)&lt;/strong&gt;&amp;nbsp;itd., ale po prostu możesz go wrzucić jedynym &lt;strong&gt;commitem całościowo.&lt;/strong&gt;
&lt;br&gt;

&lt;br&gt;
W ten sposób też komuś ułatwisz pracę, kilka osób będzie mogło w łatwiejszy sposób odnieść się do kodu, a co więcej, może nawet ktoś pokusi się o utworzenie Taska/Issue, gdzie dokładnie wskaże Ci fragmenty i rzeczy do poprawy.&amp;nbsp;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599360/czy-chcialby-ktos-przetestowac-moj-program-i-go-ocenic?show=599361#a599361</guid>
<pubDate>Sun, 16 Nov 2025 21:56:34 +0000</pubDate>
</item>
<item>
<title>Biblioteka do projektowania interaktywnych menu</title>
<link>https://forum.pasja-informatyki.pl/599255/biblioteka-do-projektowania-interaktywnych-menu</link>
<description>

&lt;p&gt;Hejka, co myślicie o moim nowym programie testującym bibliotekę do projektowania interaktywnych menu w konsoli?&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;calc.py&lt;/strong&gt;&lt;/p&gt;



&lt;pre class=&quot;brush:python;&quot;&gt;
#!/usr/bin/env python3
import gettext
import os
from operator import add as op_add
from operator import mul, sub, truediv
from typing import Any, Callable

from ui.menu import Menu, MenuItem
from ui.user_input import read_number

# mypy and pylint don't work well with gettext.install
LOCALE = os.getenv('LANG', 'en')
_ = gettext.translation('python_misc',
                        localedir='locale',
                        languages=[LOCALE]).gettext


def make_binop(fn: Callable[[Any, Any], Any], name: str,
               nonzero_second=False) -&amp;gt; Callable[[], None]:
    def _op():
        a = read_number(_('Enter the first operand: '))
        b = read_number(_('Enter the second operand: '),
                        nonzero=nonzero_second)
        print(_('The result is {0}.').format(fn(a, b)))
    _op.__name__ = name
    return _op


if __name__ == '__main__':
    items = [MenuItem(_('Add'), make_binop(op_add, 'add'), _('a')),
             MenuItem(_('Subtract'), make_binop(sub, 'subtract'), _('s')),
             MenuItem(_('Multiply'), make_binop(mul, 'multiply'), _('m')),
             MenuItem(_('Divide'), make_binop(truediv, 'divide'), _('d'))]
    menu = Menu(_('Calculator'), items)
    menu.loop()
    print(_('Good bye!'))&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;ui/user_input.py&lt;/strong&gt;&lt;/p&gt;



&lt;pre class=&quot;brush:python;&quot;&gt;
import gettext
import os
import sys
from contextlib import contextmanager
from numbers import Number
from typing import IO, Any, Iterator, Optional, TextIO, overload

# mypy and pylint don't work well with gettext.install
LOCALE = os.getenv('LANG', 'en')
_ = gettext.translation('python_misc',
                        localedir='locale',
                        languages=[LOCALE]).gettext


@contextmanager
def redirect_stdio(stdin: IO[Any],
                   stdout: IO[Any],
                   stderr: IO[Any] = sys.stderr) -&amp;gt; Iterator[None]:
    old_stdin = sys.stdin
    old_stdout = sys.stdout
    old_stderr = sys.stderr
    sys.stdin = stdin
    sys.stdout = stdout
    sys.stderr = stderr

    yield

    sys.stdin = old_stdin
    sys.stdout = old_stdout
    sys.stderr = old_stderr


def read_str(prompt: str = '', *,
             stdin: TextIO = sys.stdin,
             stdout: TextIO = sys.stdout) -&amp;gt; str:
    stdout.write(prompt)
    stdout.flush()
    user_input = stdin.readline()
    if not user_input:
        raise EOFError
    return user_input


def wait_for_enter(*,
                   stdin: TextIO = sys.stdin,
                   stdout: TextIO = sys.stdout) -&amp;gt; None:
    read_str(_('\nPress ENTER to continue...\n'), stdin=stdin, stdout=stdout)


def print_input_error(message: str) -&amp;gt; None:
    print(_('Error: {0}. Try again...').format(message))


def _get_default_prompt(lower: Optional[Number], upper: Optional[Number],
                        nonzero: bool):
    prompt = _('Enter the number')
    if lower is not None or upper is not None or nonzero:
        prompt += ' ('
    if lower is not None:
        prompt += _('starting from {0}').format(lower)
    if upper is not None:
        prompt += _('up to {0}').format(upper)
    if nonzero:
        if lower is not None or upper is not None:
            prompt += ', '
        prompt += _('cannot be zero')
    if lower is not None or upper is not None or nonzero:
        prompt += ')'
    prompt += ': '
    return prompt


@overload
def read_number[T: Number](prompt: str = ..., *,
                           stdin: TextIO = ...,
                           stdout: TextIO = ...,
                           lower: Optional[T] = ...,
                           upper: Optional[T] = ...,
                           nonzero: bool = ...,
                           _type: type[T]) -&amp;gt; T: ...


@overload
def read_number[T: Number](prompt: str = ..., *,
                           stdin: TextIO = ...,
                           stdout: TextIO = ...,
                           lower: Optional[T] = ...,
                           upper: Optional[T] = ...,
                           nonzero: bool = ...) -&amp;gt; float: ...


def read_number[T: Number](prompt: str = '', *,
                           stdin: TextIO = sys.stdin,
                           stdout: TextIO = sys.stdout,
                           lower: Optional[T] = None,
                           upper: Optional[T] = None,
                           nonzero: bool = False,
                           _type: type = float):
    if not prompt:
        prompt = _get_default_prompt(lower, upper, nonzero)
    while True:
        try:
            number: Any = _type(read_str(prompt,
                                         stdin=stdin,
                                         stdout=stdout))
            if nonzero and number == 0:
                print_input_error(_('number is equal to zero'))
            if lower is not None and number &amp;lt; lower:
                print_input_error(_('number is too small'))
            if upper is not None and number &amp;gt; upper:
                print_input_error(_('number is too big'))
            return number
        except ValueError:
            print_input_error(_('not a number'))
        except (EOFError, KeyboardInterrupt):
            print(_('\nAborted by user.'))
            raise
&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;ui/menu.py&lt;/strong&gt;&lt;/p&gt;



&lt;pre class=&quot;brush:python;&quot;&gt;
from __future__ import annotations

import gettext
import os
import sys
from dataclasses import dataclass
from typing import Callable, Optional, TextIO

from .user_input import print_input_error, redirect_stdio, wait_for_enter

# mypy and pylint don't work well with gettext.install
LOCALE = os.getenv('LANG', 'en')
_ = gettext.translation('python_misc',
                        localedir='locale',
                        languages=[LOCALE]).gettext


@dataclass(frozen=True)
class MenuItem:
    name: str
    action: Callable[[], None]
    key: Optional[str] = None
    visible: bool = True
    enabled: bool = True

    def __str__(self):
        return self.name


class Menu:
    nesting_level = -1

    def __init__(self,
                 title: str,
                 items: list[MenuItem], *,
                 fin: TextIO = sys.stdin,
                 fout: TextIO = sys.stdout):
        self.title = title
        self.items = list(items)
        if Menu.nesting_level &amp;gt; 0:
            quit_item_title = _('Back')
        else:
            quit_item_title = _('Quit')
        quit_item = MenuItem(quit_item_title, self._quit, _('q'))
        self._check_for_duplicates(quit_item)
        self.items.append(quit_item)
        self.active = False
        self.stdin = fin
        self.stdout = fout

    @property
    def visible_items(self):
        return [item for item in self.items if item.visible]

    def add_item(self,
                 name: str,
                 action: Callable[[], None],
                 key: Optional[str] = None) -&amp;gt; None:
        item = MenuItem(name, action, key)
        self._check_for_duplicates(item)
        self.items.insert(-1, item)

    def remove_item(self, name: str) -&amp;gt; bool:
        for idx, item in enumerate(self.items):
            if item.name == name:
                del self.items[idx]
                return True
        return False

    def add_submenu(self,
                    name: str,
                    menu: Menu,
                    key: Optional[str] = None) -&amp;gt; None:
        item = MenuItem(name, menu.loop, key)
        self._check_for_duplicates(item)
        self.items.append(item)

    def loop(self) -&amp;gt; None:
        with redirect_stdio(self.stdin, self.stdout):
            Menu.nesting_level += 1
            self.active = True
            while self.active:
                user_choice = self._read_choice()
                if user_choice.action.__name__ == self._quit.__name__:
                    self._quit()
                else:
                    try:
                        user_choice.action()
                        wait_for_enter()
                    except (EOFError, KeyboardInterrupt):
                        pass

    def _check_for_duplicates(self, candidate: MenuItem) -&amp;gt; None:
        for item in self.items:
            if (candidate.name == item.name
                or candidate.action == item.action
                    or candidate.key == item.key):
                raise ValueError('duplicate menu item')

    def _print_title(self) -&amp;gt; None:
        line = '-' * (len(self.title) + 4)
        print(line, file=self.stdout)
        print(f'| {self.title} |', file=self.stdout)
        print(line, file=self.stdout)

    def _read_choice(self) -&amp;gt; MenuItem:
        with redirect_stdio(self.stdin, self.stdout):
            while True:
                self._print_title()
                for idx, item in enumerate(self.visible_items, start=1):
                    print(f'{idx}) {item}')
                try:
                    user_input = input(_('Your choice: ')).strip().lower()
                except (EOFError, KeyboardInterrupt):
                    print(_('\nExiting...'))
                    return self.items[-1]

                try:
                    if user_input.isdigit():
                        idx = int(user_input)
                        if not 1 &amp;lt;= idx &amp;lt;= len(self.visible_items):
                            raise ValueError
                        candidate = self.visible_items[idx - 1]
                    else:
                        for idx, item in enumerate(self.visible_items):
                            if user_input == item.key:
                                candidate = self.visible_items[idx]
                                break
                        else:
                            raise ValueError
                    if not candidate.enabled:
                        print_input_error(_('invalid operation'))
                        wait_for_enter()
                    else:
                        return candidate
                except ValueError:
                    print_input_error(_('invalid choice'))

    def _quit(self) -&amp;gt; None:
        self.active = False
        Menu.nesting_level -= 1&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;locale/en/LC_MESSAGES/python_misc.po&lt;/strong&gt;&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR &amp;lt;EMAIL@ADDRESS&amp;gt;, YEAR.
#
msgid &quot;&quot;
msgstr &quot;&quot;
&quot;Project-Id-Version: PACKAGE VERSION\n&quot;
&quot;POT-Creation-Date: 2025-10-12 16:57+0200\n&quot;
&quot;PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n&quot;
&quot;Last-Translator: FULL NAME &amp;lt;EMAIL@ADDRESS&amp;gt;\n&quot;
&quot;Language-Team: LANGUAGE &amp;lt;LL@li.org&amp;gt;\n&quot;
&quot;MIME-Version: 1.0\n&quot;
&quot;Content-Type: text/plain; charset=UTF-8\n&quot;
&quot;Content-Transfer-Encoding: 8bit\n&quot;
&quot;Generated-By: pygettext.py 1.5\n&quot;


#: calc.py:19
msgid &quot;Enter the first operand: &quot;
msgstr &quot;&quot;

#: calc.py:20
msgid &quot;Enter the second operand: &quot;
msgstr &quot;&quot;

#: calc.py:22
msgid &quot;The result is {0}.&quot;
msgstr &quot;&quot;

#: calc.py:28
msgid &quot;Add&quot;
msgstr &quot;&quot;

#: calc.py:28
msgid &quot;a&quot;
msgstr &quot;&quot;

#: calc.py:29
msgid &quot;Subtract&quot;
msgstr &quot;&quot;

#: calc.py:29
msgid &quot;s&quot;
msgstr &quot;&quot;

#: calc.py:30
msgid &quot;Multiply&quot;
msgstr &quot;&quot;

#: calc.py:30
msgid &quot;m&quot;
msgstr &quot;&quot;

#: calc.py:31
msgid &quot;Divide&quot;
msgstr &quot;&quot;

#: calc.py:31
msgid &quot;d&quot;
msgstr &quot;&quot;

#: calc.py:32
msgid &quot;Calculator&quot;
msgstr &quot;&quot;

#: calc.py:34
msgid &quot;Good bye!&quot;
msgstr &quot;&quot;

#: ui/menu.py:39
msgid &quot;Back&quot;
msgstr &quot;&quot;

#: ui/menu.py:41
msgid &quot;Quit&quot;
msgstr &quot;&quot;

#: ui/menu.py:42
msgid &quot;q&quot;
msgstr &quot;&quot;

#: ui/menu.py:73
msgid &quot;Your choice: &quot;
msgstr &quot;&quot;

#: ui/menu.py:75
msgid &quot;&quot;
&quot;\n&quot;
&quot;Exiting...&quot;
msgstr &quot;&quot;

#: ui/menu.py:92
msgid &quot;invalid operation&quot;
msgstr &quot;&quot;

#: ui/menu.py:97
msgid &quot;invalid choice&quot;
msgstr &quot;&quot;

#: ui/user_input.py:47
msgid &quot;&quot;
&quot;\n&quot;
&quot;Press ENTER to continue...\n&quot;
msgstr &quot;&quot;

#: ui/user_input.py:52
msgid &quot;Enter the number&quot;
msgstr &quot;&quot;

#: ui/user_input.py:56
msgid &quot;starting from {0}&quot;
msgstr &quot;&quot;

#: ui/user_input.py:58
msgid &quot;up to {0}&quot;
msgstr &quot;&quot;

#: ui/user_input.py:62
msgid &quot;cannot be zero&quot;
msgstr &quot;&quot;

#: ui/user_input.py:70
msgid &quot;Error: {0}. Try again...&quot;
msgstr &quot;&quot;

#: ui/user_input.py:107
msgid &quot;number is equal to zero&quot;
msgstr &quot;&quot;

#: ui/user_input.py:109
msgid &quot;number is too small&quot;
msgstr &quot;&quot;

#: ui/user_input.py:111
msgid &quot;number is too big&quot;
msgstr &quot;&quot;

#: ui/user_input.py:114
msgid &quot;not a number&quot;
msgstr &quot;&quot;

#: ui/user_input.py:116
msgid &quot;&quot;
&quot;\n&quot;
&quot;Aborted by user.&quot;
msgstr &quot;&quot;

&lt;/pre&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599255/biblioteka-do-projektowania-interaktywnych-menu</guid>
<pubDate>Sun, 12 Oct 2025 15:54:33 +0000</pubDate>
</item>
<item>
<title>Kalkulator w Pythonie + biblioteka menu v1</title>
<link>https://forum.pasja-informatyki.pl/599253/kalkulator-w-pythonie-biblioteka-menu-v1</link>
<description>

&lt;p&gt;Hej, napisałem pierwszą wersję kalkulatora wykorzystujący samodzielnie zrobiony przeze mnie interfejs menu.&lt;/p&gt;



&lt;p&gt;Co można poprawić w tym kodzie? Jakie bugi przeoczyłem? Czy dobrze robię robiąc z&amp;nbsp;MenuItem&amp;nbsp;data klasę czy lepiej przekazywać do konstruktora&amp;nbsp;Menu&amp;nbsp;słownik?&lt;/p&gt;



&lt;p&gt;Kod:&lt;/p&gt;



&lt;pre class=&quot;brush:python;&quot;&gt;
~/python_misc ❯ cat calc.py                                                                                                                           21:03:15
#!/usr/bin/env python3
from ui.menu import Menu, MenuItem
from ui.user_input import read_number


def add() -&amp;gt; None:
    first = read_number('Enter the first operand: ')
    second = read_number('Enter the second operand: ')
    print(f'The result is {first + second}.')


def subtract() -&amp;gt; None:
    first = read_number('Enter the first operand: ')
    second = read_number('Enter the second operand: ')
    print(f'The result is {first - second}.')


def multiply() -&amp;gt; None:
    first = read_number('Enter the first operand: ')
    second = read_number('Enter the second operand: ')
    print(f'The result is {first * second}.')


def divide() -&amp;gt; None:
    first = read_number('Enter the first operand: ')
    second = read_number('Enter the second operand (cannot be zero): ',
                         nonzero=True)
    print(f'The result is {first / second}.')


items = [MenuItem('Add', add),
         MenuItem('Subtract', subtract),
         MenuItem('Multiply', multiply),
         MenuItem('Divide', divide)]
menu = Menu('Calculator', items)
menu.loop()
~/python_misc ❯ cat ui/menu.py                                                                                                                        21:03:20
from dataclasses import dataclass
from typing import Callable


@dataclass
class MenuItem:
    name: str
    action: Callable[[], None]

    def __str__(self):
        return self.name


class Menu:
    nesting_level = -1
    _quit_choice = -1

    def __init__(self, title: str, items: list[MenuItem]):
        self.title = title
        self.items = items
        self.active = False

    def _print_title(self) -&amp;gt; None:
        print('-' * (len(self.title) + 4))
        print(f'| {self.title} |')
        print('-' * (len(self.title) + 4))

    def _read_choice(self) -&amp;gt; int:
        while True:
            self._print_title()
            for idx, item in enumerate(self.items):
                print(f'{idx + 1}) {item}')
            print('q)', 'Back' if Menu.nesting_level &amp;gt; 0 else 'Quit')
            user_input: int | str = input('Your choice: ').lower()
            if user_input == 'q':
                return Menu._quit_choice
            try:
                user_input = int(user_input)
                if user_input not in range(1, len(self.items) + 1):
                    raise ValueError()
                return user_input - 1
            except ValueError:
                print('Error: invalid choice. Try again...')

    def _quit(self) -&amp;gt; None:
        self.active = False
        Menu.nesting_level -= 1

    def add_item(self, name, action):
        self.items.append(MenuItem(name, action))

    def remove_item(self, name):
        for idx, item in enumerate(self.items):
            if item.name == name:
                del self.items[idx]

    def loop(self) -&amp;gt; None:
        Menu.nesting_level += 1
        self.active = True
        while self.active:
            user_choice: int = self._read_choice()
            if user_choice == self._quit_choice:
                self._quit()
            else:
                self.items[user_choice].action()
                input('\nPress any key and type ENTER...\n')
~/python_misc ❯ cat ui/user_input.py                                                                                                                  21:03:26
from typing import Any, Optional, overload


def get_default_prompt(lower: bool, upper: bool, nonzero: bool):
    prompt = 'Enter the number'
    if lower or upper or nonzero:
        prompt += ' ('
    if lower:
        prompt += f'starting from {lower}'
    if upper:
        prompt += f'up to {upper}'
    if nonzero:
        if lower or upper:
            prompt += ', '
        prompt += 'cannot be zero'
    if lower or upper or nonzero:
        prompt += ')'
    prompt += ': '
    return prompt


@overload
def read_number[T](prompt: str = ..., *,
                   lower: Optional[T] = ...,
                   upper: Optional[T] = ...,
                   nonzero: bool = ...,
                   _type: type[T]) -&amp;gt; T: ...


@overload
def read_number[T](prompt: str = ..., *,
                   lower: Optional[T] = ...,
                   upper: Optional[T] = ...,
                   nonzero: bool = ...) -&amp;gt; float: ...


def read_number[T](prompt: str = '', *,
                   lower: Optional[T] = None,
                   upper: Optional[T] = None,
                   nonzero: bool = False,
                   _type: type = float):
    if not prompt:
        prompt = get_default_prompt(bool(lower),
                                    bool(upper),
                                    bool(nonzero))
    while True:
        try:
            try:
                number: Any = _type(input(prompt))
            except ValueError as exc:
                raise ValueError('not a number') from exc
            if nonzero and number == 0:
                raise ValueError('number is equal to zero')
            if lower and number &amp;lt; lower:
                raise ValueError('number too small')
            if upper and number &amp;gt; upper:
                raise ValueError('number too big')
            return number
        except ValueError as exc:
            print(f'Error: {exc}. Try again...')
&lt;/pre&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599253/kalkulator-w-pythonie-biblioteka-menu-v1</guid>
<pubDate>Sat, 11 Oct 2025 19:05:40 +0000</pubDate>
</item>
<item>
<title>Mój blog z poradnikami do IT</title>
<link>https://forum.pasja-informatyki.pl/599230/moj-blog-z-poradnikami-do-it</link>
<description>

&lt;p&gt;Cześć, stworzyłem&amp;nbsp;stronę na której będę wrzucał jakieś poradniki,&amp;nbsp;czy tipy w zakresie szeroko pojętego IT. Zahaczam też o grafikę, krypto, czy webdev. Już jest trochę postów wstawionych, regularnie zamierzam dodawać kolejne :)&lt;/p&gt;



&lt;p&gt;Może komuś się przyda, link to:&amp;nbsp;&lt;a href=&quot;https://it-wrld.pl/&quot; rel=&quot;external nofollow noopener&quot; target=&quot;_blank&quot;&gt;https://it-wrld.pl/&lt;/a&gt;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599230/moj-blog-z-poradnikami-do-it</guid>
<pubDate>Sat, 04 Oct 2025 17:25:39 +0000</pubDate>
</item>
<item>
<title>Nasze projekty - po dłuższych przerwach projekt strony domowej i bloga został ukończony</title>
<link>https://forum.pasja-informatyki.pl/598899/nasze-projekty-dluzszych-przerwach-projekt-strony-domowej-bloga-zostal-ukonczony</link>
<description>

&lt;p&gt;Witam serdecznie,&lt;/p&gt;



&lt;p&gt;po bardzo długich przerwach udało mi się wreszcie ukończyć wersję RC1 bloga i strony domowej, którymi chciałem się pochwalić...&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Źródła strony i serwera umieszczam na githubie:&amp;nbsp;&lt;a href=&quot;https://github.com/lnkoc/myWebsite&quot; rel=&quot;nofollow&quot;&gt;https://github.com/lnkoc/myWebsite&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;A sama strona jest pod adresem:&amp;nbsp;&lt;a href=&quot;https://lnkocsite.pl&quot; rel=&quot;nofollow&quot;&gt;lnkocsite.pl&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Za Front End odpowiada Vue.js, style są napisane w SASS, za Back End node.js i MariaDB.&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Z góry dziękuję za konstruktywną krytykę :)&lt;/p&gt;



&lt;p&gt;Pozdawiam,&lt;/p&gt;



&lt;p&gt;Łukasz&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598899/nasze-projekty-dluzszych-przerwach-projekt-strony-domowej-bloga-zostal-ukonczony</guid>
<pubDate>Thu, 17 Jul 2025 12:53:48 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Ocenka Portfolio i feedback</title>
<link>https://forum.pasja-informatyki.pl/598695/ocenka-portfolio-i-feedback?show=598699#a598699</link>
<description>

&lt;p&gt;Nie wiem, czy teraz to już są te czasy...
&lt;br&gt;
Dużo kolorów, dużo się dzieje, wysyp ikonek/technologii/buziek etc. a naprawdę brak w tym konkretu i to co najważniejsze, trudno znaleźć, lub męczy się już człowiek, żeby do przez to przejść i wybrać to, co &quot;potencjalnie&quot; powinno interesować, kiedy zostaje zbombardowany kolorystyką i przepychem.
&lt;br&gt;

&lt;br&gt;
To już nie te czasy, że kogoś interesuje, że potrafisz zrobić kolorek, kształt, dodać jakieś logo, wkleić buźki, to można zrobić - bez kodowania z narzędziami &lt;strong&gt;low code / no code&lt;/strong&gt;
&lt;br&gt;

&lt;br&gt;

&lt;br&gt;
Wchodzę w stronę startową &quot;&lt;strong&gt; o mnie&quot;&lt;/strong&gt;, nie widzę ile masz doświadczenia, nie widzę&lt;strong&gt; specjalizacji ( stacku technologicznego)&lt;/strong&gt;, nie widzę,&lt;strong&gt; co oferujesz, w czym jesteś dobry, gdzie zmierza twoja kariera, albo generalnie kierunek rozwoju programistycznego.&amp;nbsp;&lt;/strong&gt;
&lt;br&gt;

&lt;br&gt;
Za to otrzymuje&lt;strong&gt; &quot; co lubisz&quot;&lt;/strong&gt;,&amp;nbsp; &quot;jak taktujesz programowanie, że&lt;strong&gt; widzisz w tym pasj&lt;/strong&gt;e&quot;- czyli, czym się pasjonujesz,
&lt;br&gt;
Jest wskazane, okej, że jesteś tutaj, żeby &quot;supportować w ...&quot;, ale naprawdę z punktu widzenia KLIENTA, to mnie interesuje mięso, nie Twoja osoba, ja nie muszę Cię lubić, nie muszę wiedzieć, jakie masz hobby, co lubisz etc.&amp;nbsp;
&lt;br&gt;

&lt;br&gt;
Nie traktuj tego jako atak, a wskazówki, mamy już inne czasy, to nie lata 2015 - kiedy takie rzeczy były na pożytku dziennym, teraz trudno się przebić, trudno pozyskać klienta, pracę etc. bo liczy się &quot;mięso&quot;, dużo rzeczy można już zrobić bez kodowania, szybko i prosto&amp;nbsp;lub z minimalnym jego wykorzystaniem, a kodowanie jest potrzebne do realnych problemów, w których właśnie pojawia się programista.&amp;nbsp;
&lt;br&gt;

&lt;br&gt;
- Projekty są, w miarę składne i opisane&amp;nbsp;to jest dobry plus, ale zanim do tego doszedłem w sumie, nie wiedziałem, co robię na tej stronie, stack dopiero na dole, powinno być coś w skrócie ' o mnie' .
&lt;br&gt;

&lt;br&gt;
Nie dodawaj instagramu do portfolio, jeśli nie jest to biznesowy instagram&amp;nbsp;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598695/ocenka-portfolio-i-feedback?show=598699#a598699</guid>
<pubDate>Mon, 19 May 2025 19:12:44 +0000</pubDate>
</item>
<item>
<title>Pomysł na stronę skupu</title>
<link>https://forum.pasja-informatyki.pl/598576/pomysl-na-strone-skupu</link>
<description>Cześć wszystkim,&lt;br /&gt;
&lt;br /&gt;
Mam stronę internetową opartą na Wordpress woocommerce na której sprzedaje podręczniki szkolne. Chce wprowadzić funkcję skupu podręczników na bazie arkusza Excel. Chce żeby użytkownik wpisał numer isbn podręcznika w wyszukiwarkę oraz przycisk stanu książki (bardzo dobry, dobry, średni ) a aplikacja wyciągnie cenę podręcznika z bazy. Aby zamówienie mogło zostać zrealizowane koszyk musi mieć wartość min. 40zl. Dodatkowo użytkownik musi zrobić zdjęcie każdej książki. Jeżeli wszystkie warunki są spełnione użytkownik dostaje na maila etykietę wysyłkową i wysyła paczkę. Kiedy do mnie dotrze zatwierdzam zamówienie i robię przelew. Czy ma ktoś pomysł jak to zrobić ?</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598576/pomysl-na-strone-skupu</guid>
<pubDate>Sat, 26 Apr 2025 14:08:24 +0000</pubDate>
</item>
<item>
<title>Szukam wspólnika/ów do projektu a'la 9gag &quot;Fleak&quot; open source</title>
<link>https://forum.pasja-informatyki.pl/598525/szukam-wspolnika-ow-do-projektu-ala-9gag-fleak-open-source</link>
<description>Hej!&lt;br /&gt;
&lt;br /&gt;
Szukam kogoś, kto chciałby ze mną współtworzyć stronę z memami w stylu 9gag &amp;quot;Fleak&amp;quot;– projekt robiony dla frajdy, społeczności i kreatywności. Strona już istnieje w jakiejś formie, ale wymaga na dłuższą metę albo gruntownego odświeżenia, albo nawet przepisania od zera – czyli idealna okazja, żeby wspólnie zbudować coś od podstaw i zrobić to po swojemu.&lt;br /&gt;
&lt;br /&gt;
To projekt open source, więc wszystko transparentnie i bez ciśnienia, ale z potencjałem, by zebrać fajny zespół i stworzyć coś, co naprawdę będzie żyć własnym życiem. Poszukuję osób, które pomogą zarówno technicznie (frontend, backend – zależnie od umiejętności), jak i w ogarnięciu dalszego rozwoju, planów, może nawet community.&lt;br /&gt;
&lt;br /&gt;
Nie oferuję kasy, ale oferuję:&lt;br /&gt;
&amp;nbsp;pełne współdecydowanie,&lt;br /&gt;
&amp;nbsp;kreatywną wolność,&lt;br /&gt;
&amp;nbsp;wspólne ogarnianie Fleak,&lt;br /&gt;
&amp;nbsp;szansę bycia częścią czegoś autentycznego od początku.&lt;br /&gt;
&lt;br /&gt;
Jeśli jara Cię idea budowania czegoś śmiesznego, społecznościowego, a przy okazji fajnego technicznie – odezwij się!&lt;br /&gt;
&lt;br /&gt;
link do github:[&lt;a href=&quot;https://github.com/FleakApp/Fleak&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://github.com/FleakApp/Fleak&lt;/a&gt;]&lt;br /&gt;
&lt;br /&gt;
link do strony(aktualnie nie działą i wyświetla pusty feed):&lt;a href=&quot;https://fleak.pl&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://fleak.pl&lt;/a&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598525/szukam-wspolnika-ow-do-projektu-ala-9gag-fleak-open-source</guid>
<pubDate>Sun, 20 Apr 2025 17:12:35 +0000</pubDate>
</item>
<item>
<title>Co sądzicie o moich stronach?</title>
<link>https://forum.pasja-informatyki.pl/598523/co-sadzicie-o-moich-stronach</link>
<description>

&lt;p&gt;Witam serdecznie,&lt;/p&gt;



&lt;p&gt;Zapewne kilka osób pamięta moje nieudane prototyp i beznadziejne wersje strony, ale każdy uczy się na błędach. Zaczynałem od zera (miałem mocne podstawy), ale nie chciałem czekać na ten moment i zacząłem tworzyć strony WWW i pomagać w aktualizacjach i utrzymaniu ich, do tej pory udało mi się pomóc kilku firmom a także dostać kilka ofert partnerstwa z innymi firmami, jednak się zastanawiam nad tym. Podaje wam linki do moich stron. Są 3. Blog, Kursy i strona główna. Pomyślałem sobie że jedna z lepszych promocji będzie przekazywanie wiedzy ludziom, prowadzenie warsztatów nawet dla dzieci o bezpieczeństwie w sieci, planuje takie organizować. Co myślicie?
&lt;br&gt;

&lt;br&gt;
Strony:&lt;/p&gt;



&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://courses.webnest.com.pl/&quot;&gt;Kursy Web Nest&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://webnest.com.pl/&quot;&gt;Web Nest&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://blog.webnest.com.pl/&quot;&gt;Blog - Web Nest&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Pozdrawiam serdecznie :).&lt;/p&gt;



&lt;p&gt;Piotr Domański&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598523/co-sadzicie-o-moich-stronach</guid>
<pubDate>Sat, 19 Apr 2025 14:39:35 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Interfejs menu w C++</title>
<link>https://forum.pasja-informatyki.pl/598204/interfejs-menu-w-c?show=598232#a598232</link>
<description>

&lt;p&gt;Twój kod jest całkiem czytelny i modularny – dobra robota! Zauważyłem jednak kilka obszarów, w których można by wprowadzić ulepszenia:&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;1. Walidacja indeksu w funkcji check_index&lt;/p&gt;



&lt;p&gt;Problem: Funkcja check_index oblicza maksymalny dozwolony indeks jako items.size() - 2. To może być problematyczne, gdy lista jest mała – na przykład przy dodawaniu lub usuwaniu elementów w menu. W praktyce poprawnym zakresem dla operacji na wektorze jest [0,&amp;nbsp;items.size()&amp;nbsp;–&amp;nbsp;1] (dla usuwania) lub [0,&amp;nbsp;items.size()] (dla wstawiania na końcu).&lt;/p&gt;



&lt;p&gt;Sugestia: Zastanów się nad wprowadzeniem osobnych walidacji dla operacji wstawiania i usuwania. Możesz np. dla usuwania sprawdzać, czy index &amp;lt; items.size(), a dla wstawiania czy index &amp;lt;= items.size(). Dzięki temu unikniesz sytuacji, gdy poprawny indeks zostanie błędnie odrzucony lub doprowadzi do nieoczekiwanych wyjątków.&lt;/p&gt;



&lt;p&gt;2. Obsługa wyboru użytkownika w read_choice&lt;/p&gt;



&lt;p&gt;Problem: Aktualnie wybór użytkownika jest odczytywany jako pojedynczy znak, a następnie odejmujesz wartość '0', aby uzyskać indeks. Jeśli użytkownik wprowadzi znak niebędący cyfrą (np. literę), konwersja może dawać nieoczekiwane rezultaty.&lt;/p&gt;



&lt;p&gt;Sugestia: Rozważ dodanie jawnej weryfikacji, czy wprowadzony znak jest cyfrą (np. przy pomocy std::isdigit) przed konwersją. Alternatywnie możesz wykorzystać funkcję, która próbuje przekonwertować cały ciąg znaków na liczbę (np. std::stoi), co może zwiększyć czytelność i bezpieczeństwo kodu.&lt;/p&gt;



&lt;p&gt;3. Komunikaty o błędach i obsługa wyjątków&lt;/p&gt;



&lt;p&gt;Problem: Wywołanie check_index w funkcjach takich jak add_item_at lub remove_item może rzucić wyjątek. W obecnej wersji programu nie ma mechanizmu, który łapałby te wyjątki ani nie informował użytkownika o błędzie w czytelny sposób.&lt;/p&gt;



&lt;p&gt;Sugestia: Rozważ dodanie obsługi wyjątków w miejscu, gdzie korzystasz z tych funkcji, aby w razie wystąpienia błędu program mógł bezpiecznie poinformować użytkownika lub zaproponować ponowienie operacji.&lt;/p&gt;



&lt;p&gt;4. Struktura kodu i organizacja&lt;/p&gt;



&lt;p&gt;Dobre praktyki: Podział funkcjonalności (np. pomocnicze funkcje do wczytywania liczb) do osobnego modułu, jak planowałeś, to dobry krok. Dzięki temu kod główny będzie bardziej przejrzysty.&lt;/p&gt;



&lt;p&gt;Sugestia: Możesz rozważyć także dodatkowe komentarze lub dokumentację (np. w formie Doxygen), aby łatwiej było utrzymać i rozwijać projekt w przyszłości.&lt;/p&gt;



&lt;p&gt;5. Drobne usprawnienia&lt;/p&gt;



&lt;p&gt;Nazwa menu: W main.cpp utworzyłeś submenu (menu menu2{&quot;test&quot;}), które nie zawiera żadnych elementów. Może warto dodać do niego jakieś przykładowe pozycje lub rozszerzyć przykład, aby pokazać pełnię funkcjonalności.&lt;/p&gt;



&lt;p&gt;Czyszczenie wejścia: Funkcja clear_console_input jest przydatna – upewnij się, że zawsze jest wywoływana w miejscach, gdzie może pozostać zalegający znak końca linii.&lt;/p&gt;



&lt;p&gt;Podsumowując, Twój interfejs menu prezentuje się bardzo dobrze, a zastosowanie lambd do obsługi submenu jest ciekawym rozwiązaniem. Kluczowe obszary do poprawy to walidacja indeksów oraz bezpieczna konwersja wyboru użytkownika. Wprowadzenie powyższych usprawnień zwiększy odporność Twojego programu na błędy i poprawi jego czytelność.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Poniżej przedstawiam zmodyfikowaną wersję fragmentów kodu – dodałem dwie osobne funkcje do walidacji indeksu (dla operacji odczytu/usuwania oraz dla wstawiania) oraz zmodyfikowałem funkcję read_choice(), aby przed konwersją sprawdzała, czy użytkownik wprowadził cyfrę przy użyciu std::isdigit.&lt;/p&gt;



&lt;p&gt;Zmiany w walidacji indeksów&lt;/p&gt;



&lt;p&gt;W oryginalnej wersji funkcja check_index obliczała maksymalny dozwolony indeks jako items.size() - 2, co może powodować problemy. Teraz wprowadzamy dwie oddzielne funkcje:&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
// W menu.cpp dodajemy dwie nowe funkcje walidujące indeksy:

// Dla operacji odczytu/usuwania – poprawny zakres: [0, items.size()-1]
void menu::check_index_access(std::size_t index) const {
    if (index &amp;gt;= items.size()) {
        std::ostringstream oss;
        oss &amp;lt;&amp;lt; &quot;Index &quot; &amp;lt;&amp;lt; index &amp;lt;&amp;lt; &quot; is out of range. Valid indices: [0, &quot; 
            &amp;lt;&amp;lt; (items.size() &amp;gt; 0 ? items.size() - 1 : 0) &amp;lt;&amp;lt; &quot;].&quot;;
        throw std::out_of_range(oss.str());
    }
}

// Dla operacji wstawiania – poprawny zakres: [0, items.size()]
void menu::check_index_insertion(std::size_t index) const {
    if (index &amp;gt; items.size()) {
        std::ostringstream oss;
        oss &amp;lt;&amp;lt; &quot;Index &quot; &amp;lt;&amp;lt; index &amp;lt;&amp;lt; &quot; is out of range for insertion. Valid indices: [0, &quot; 
            &amp;lt;&amp;lt; items.size() &amp;lt;&amp;lt; &quot;].&quot;;
        throw std::out_of_range(oss.str());
    }
}
&lt;/pre&gt;



&lt;p&gt;Dla operacji dostępu/usuwania: Poprawny indeks musi należeć do przedziału [0, items.size()-1].&lt;/p&gt;



&lt;p&gt;Dla operacji wstawiania: Dozwolone są indeksy w przedziale [0, items.size()].&lt;/p&gt;



&lt;p&gt;Następnie w funkcjach takich jak add_item_at, add_submenu_at oraz remove_item wywołujemy odpowiednią funkcję walidacyjną:&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
void menu::add_item_at(int index, const menu_item&amp;amp; item) {
    check_index_insertion(index);
    items.insert(items.begin() + index, item);
}

void menu::add_item_at(int index, const std::string&amp;amp; title_val, std::function&amp;lt;void()&amp;gt; action) {
    check_index_insertion(index);
    items.insert(items.begin() + index, menu_item{title_val, action});
}

void menu::remove_item(int index) {
    check_index_access(index);
    items.erase(items.begin() + index);
}

void menu::add_submenu_at(int index, const menu&amp;amp; menu_val) {
    check_index_insertion(index);
    items.insert(items.begin() + index, menu_item{menu_val.title, invoke_menu_loop(menu_val)});
}

void menu::add_submenu_at(int index, const std::string&amp;amp; title_val, const menu&amp;amp; menu_val) {
    check_index_insertion(index);
    items.insert(items.begin() + index, menu_item{title_val, invoke_menu_loop(menu_val)});
}
&lt;/pre&gt;



&lt;p&gt;Bezpieczna konwersja wyboru użytkownika&lt;/p&gt;



&lt;p&gt;W funkcji read_choice() dodałem dodatkową walidację – przed konwersją sprawdzamy, czy użytkownik wprowadził pojedynczy znak oraz czy jest to cyfra (lub znak q na wyjście). Dzięki temu unikamy nieoczekiwanych konwersji.&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
char menu::read_choice() const {
    std::string user_input;
    char choice;
    bool valid{false};

    std::cout &amp;lt;&amp;lt; &quot;What do you want to do?\n&quot;;
    do {
        print_choices();
        std::cout &amp;lt;&amp;lt; &quot;Your choice: &quot;;
        std::getline(std::cin, user_input);
        if (user_input.length() != 1) {
            std::cout &amp;lt;&amp;lt; &quot;Invalid input. Please enter exactly one character.\n&quot;;
            continue;
        }
        choice = std::tolower(user_input[0]);
        if (choice == quit_choice) {
            valid = true;
        } else if (std::isdigit(choice)) {
            int idx = choice - '0';
            if (static_cast&amp;lt;std::size_t&amp;gt;(idx) &amp;lt; items.size()) {
                valid = true;
            } else {
                std::cout &amp;lt;&amp;lt; &quot;Invalid choice! Please select a valid index.\n&quot;;
            }
        } else {
            std::cout &amp;lt;&amp;lt; &quot;Invalid input! Please enter a digit or '&quot; &amp;lt;&amp;lt; quit_choice &amp;lt;&amp;lt; &quot;'.\n&quot;;
        }
    } while (!valid);
    return choice;
}
&lt;/pre&gt;

</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598204/interfejs-menu-w-c?show=598232#a598232</guid>
<pubDate>Mon, 10 Mar 2025 23:25:33 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Monitorowanie dostępności stron - projekt &quot;po godzinach&quot;</title>
<link>https://forum.pasja-informatyki.pl/598201/monitorowanie-dostepnosci-stron-projekt-po-godzinach?show=598212#a598212</link>
<description>

&lt;ul&gt;
	

&lt;li&gt;Na pewno byłoby fajnie dodać 2FA – ostatecznie to narzędzie przechowuje informacje o dostępności konkretnych witryn, co w połączeniu z adresem e-mail już daje dość ciekawy zbiór danych (np. pozwala namierzyć freelancerów&amp;nbsp;zajmujących się utrzymaniem witryn klientów).&lt;/li&gt;
	

&lt;li&gt;Czym się różni tak dokładnie monitor HTTP od monitora przeglądarki? Skoro monitor HTTP również robi screenshota strony, to prawdopodobnie też leci na przeglądarce.&lt;/li&gt;
	

&lt;li&gt;Jak już przy tym jesteśmy – w jaki sposób identyfikuje się monitor (nagłówek &lt;strong&gt;User-Agent&lt;/strong&gt;)? Czy udaje przeglądarkę (jeśli tak, to jaką?), czy może ma swój własny user agent?&lt;/li&gt;
	

&lt;li&gt;Czy to zadziała w momencie, gdy monitorowana strona używa np. Cloudflare'a z włączonym zabezpieczeniem przed botami AI? Albo gdy strona ma jakikolwiek sposób zabezpieczenia przed botami, który może wykryć nietypowy ruch z konkretnego IP/konkretnym user agentem?&lt;/li&gt;
	

&lt;li&gt;Na dobrą sprawę można dodać jakąkolwiek stronę do monitorowania, niekoniecznie swoją. Co więcej, można ustawić więcej niż jeden monitor dla danego adresu. Przy obecnej niskiej cenie usługi na dobrą sprawę można ją wykorzystać do ataków DDoS (ustawiam se kilkaset monitorów na konkretną stronę z najniższym interwałem i najdłuższym czasem oczekiwania). Myślałeś nad jakąś formą weryfikacji dodawanych stron? Np. jakiś wpis w DNS albo plik z unikatową nazwą, który musi się znaleźć w root witryny.&lt;/li&gt;
	

&lt;li&gt;Swoją drogą, fajnie by było, gdyby przy tworzeniu monitora była prognozowana cena na miesiąc, czyli przesuwam suwaczek na 15 sekund i obok mi się wyświetla, ile to będzie kosztować. Na ten moment są podane ceny wyłącznie dla interwałów 1 minuta i 5 minut, nie ma informacji dla innych interwałów.&lt;/li&gt;
	

&lt;li&gt;Nie widzę nigdzie info, kto obsługuje karty kredytowe w tej usłudze, co niekoniecznie mnie nastraja do tego, żeby dane tej karty podać.&lt;/li&gt;
	

&lt;li&gt;W ustawieniach jest możliwość wybrania jednego z kilkuset języków. Obstawiałem, że będzie to tłumaczone maszynowo… ale zmieniłem na niemiecki i dalej wszystko jest po polsku. Nie bardzo rozumiem, czemu mogę zmienić język na jakiś, który nie jest w żaden sposób obsługiwany.&lt;/li&gt;
	

&lt;li&gt;Breadcrumbs w nawigacji nie bardzo działają – skoro już są, to zakładałbym, że kliknięcie na jakiś fragment w nich przeniesie na daną podstronę, np. gdy kliknę &quot;Monitory&quot; w &quot;Monitory /&amp;nbsp;&amp;lt;nazwa monitora&amp;gt;&quot; zostanę przeniesiony z powrotem do listy monitorów.&lt;/li&gt;
	

&lt;li&gt;Nie do końca rozumiem, jak działa opcja screenshotów. Jak na razie zrobiło tylko jednego screenshota, na początku monitorowania. Myślałem, że to będzie robić screenshota przy każdej wizycie? Zwłaszcza, że jest w UI info &quot;Historia wyglądu Twojej witryny&quot;.&lt;/li&gt;
&lt;/ul&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598201/monitorowanie-dostepnosci-stron-projekt-po-godzinach?show=598212#a598212</guid>
<pubDate>Fri, 07 Mar 2025 22:02:04 +0000</pubDate>
</item>
<item>
<title>Zacząłem pisać na medium</title>
<link>https://forum.pasja-informatyki.pl/597979/zaczalem-pisac-na-medium</link>
<description>

&lt;p&gt;Czołem Forum!&lt;/p&gt;



&lt;p&gt;W ramach dzielenia się wiedzą i rozwoju marki osobistej zacząłem pisać na Medium. Pierwszy wpis &lt;a rel=&quot;nofollow&quot; href=&quot;https://medium.com/@jaworski/promise-all-with-great-power-comes-great-responsibility-e36462b2ecf9&quot;&gt;na temat&amp;nbsp;Promise.all&lt;/a&gt;. Jeśli ktoś z was ma ochotę przeczytać, czy nawet zostawić claps/komentarz dla zasięgów, to będzie mi bardzo miło&amp;nbsp;&lt;img alt=&quot;laugh&quot; src=&quot;https://forum.pasja-informatyki.pl/qa-plugin/ckeditor4/plugins/smiley/images/teeth_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;laugh&quot;&gt;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597979/zaczalem-pisac-na-medium</guid>
<pubDate>Sun, 02 Feb 2025 21:45:21 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Ocena podstrony</title>
<link>https://forum.pasja-informatyki.pl/597913/ocena-podstrony?show=597971#a597971</link>
<description>

&lt;p&gt;W menu przy buttonie usunąłbym ten border bottom po najechaniu:
&lt;br&gt;
&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=16833642211108770685&quot; style=&quot;height:76px; width:194px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Tutaj zmniejszyłbym rozmiar tych ikon aby były mimo wszystko w jednym rzędzie albo parzyście w linii.&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=6651852973306810614&quot; style=&quot;height:143px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Jeżeli nie prowadzisz jakiegoś profilu po prostu to usuń.&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597913/ocena-podstrony?show=597971#a597971</guid>
<pubDate>Sat, 01 Feb 2025 09:11:41 +0000</pubDate>
</item>
<item>
<title>Ocena platformy do kursów. Prototyp</title>
<link>https://forum.pasja-informatyki.pl/597839/ocena-platformy-do-kursow-prototyp</link>
<description>

&lt;p&gt;Witam wszystkich,&lt;/p&gt;



&lt;p&gt;Od niedawna tworzę platformę do kursów, aktualnie jest używana raczej w mojej szkole. Są 2 kursy aktualnie, ale planuje robić ich więcej.&lt;/p&gt;



&lt;p&gt;Co sądzicie?&lt;/p&gt;



&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://courses.webnest.com.pl/&quot;&gt;https://courses.webnest.com.pl/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Pozdrawiam,&lt;/p&gt;



&lt;p&gt;Piotr Domański&amp;nbsp;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597839/ocena-platformy-do-kursow-prototyp</guid>
<pubDate>Sun, 19 Jan 2025 20:44:11 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Ocena Landing Page</title>
<link>https://forum.pasja-informatyki.pl/597700/ocena-landing-page?show=597702#a597702</link>
<description>

&lt;p&gt;Te cenniki w tych box-ach z przewijaniem, IMO &quot;słabo&quot; to wygląda.&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=15157791944812608898&quot; style=&quot;height:259px; width:550px&quot;&gt;&lt;/p&gt;



&lt;p&gt;w tym miejscu &lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://kulepszemu.pl/cennik/&quot;&gt;https://kulepszemu.pl/cennik/&lt;/a&gt; &lt;/strong&gt;wygląda dobrze&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=1201597294004860593&quot; style=&quot;height:292px; width:550px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Jest ich klika na stronie, nie zawierają jakieś dużej treści, żeby je umieszczać w przewijanych box-ach jeszcze o takiej małej wysokości.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Tła są losowane (zgaduję), ale na tym, napis w tym kolorze prawie niewidoczny.&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=8815770340349053818&quot; style=&quot;height:215px; width:550px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Ten obrazek w wersji mobilnej nieczytelny&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=6885832571659775817&quot; style=&quot;height:374px; width:354px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Nie lepiej zrobić osobne portrety pań i wrzuć w &lt;strong&gt;flex&lt;/strong&gt;-a lub &lt;strong&gt;grid&lt;/strong&gt;-a, tak żeby się czytelnie skalowały, bo teraz jako jeden obrazek skaluje się dobrze, tyle że w pewnej rozdzielczości&amp;nbsp;staje&amp;nbsp;się nieczytelny.&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597700/ocena-landing-page?show=597702#a597702</guid>
<pubDate>Sat, 11 Jan 2025 22:52:37 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Ocena strony WWW po zmianach</title>
<link>https://forum.pasja-informatyki.pl/597436/ocena-strony-www-po-zmianach?show=597451#a597451</link>
<description>Warto zmienić kolor czcionki z białego #fff na nieco ciemniejszy np #ddd który dalej zapewnia bardzo wysoki kontrast, jednak nie razi po oczach. Na stronach z białym tłem też unika się stosowania czarnego jako koloru czcionki ;) Może masz monitor z małym kontrastem ?? ale mając duży kontrast trudno się na to patrzy.&lt;br /&gt;
&lt;br /&gt;
Pod kątem użyteczności skończmy centrować tekst :P Wycentrowany tekst ładnie wygląda i nie nadaje się do czytania. Łatwiej się czyta tekst wyrównany do lewej ;) &lt;br /&gt;
&lt;br /&gt;
Strona nie oddycha moim zdaniem jest za mało przestrzeni miedzy elementami np w sekcji specjalizacji ;)&lt;br /&gt;
&lt;br /&gt;
Brak primary buttona. Wyceń projekt to najważniejszy element na stronie ja bym go wyróżnił np dodał taki styl jaki teraz jest na hover przez cały czas ;)</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597436/ocena-strony-www-po-zmianach?show=597451#a597451</guid>
<pubDate>Fri, 20 Dec 2024 20:55:51 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Ocena strony WWW</title>
<link>https://forum.pasja-informatyki.pl/596879/ocena-strony-www?show=596888#a596888</link>
<description>

&lt;p&gt;Krótki feedback ode mnie:
&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/sCtw-jsOsTE?feature=shared&quot;&gt;https://youtu.be/sCtw-jsOsTE?feature=shared&lt;/a&gt;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/596879/ocena-strony-www?show=596888#a596888</guid>
<pubDate>Mon, 18 Nov 2024 10:12:38 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Zrobiłem projekt do sprawdzania wspólnych gier na steam - What To Play Together</title>
<link>https://forum.pasja-informatyki.pl/596545/zrobilem-projekt-do-sprawdzania-wspolnych-gier-na-steam-what-to-play-together?show=596549#a596549</link>
<description>Generalnie bardzo mało korzystam ze Steam i nie prędko sprawdzę Twój projekt, ale krótko powiem, że sama idea bardzo mi się podoba! Nie wiem czy są inne, podobne serwisy, ale z tym trafiłeś w dziesiątkę!&lt;br /&gt;
&lt;br /&gt;
Good idea!&lt;br /&gt;
&lt;br /&gt;
Może kiedyś skorzystam :)</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/596545/zrobilem-projekt-do-sprawdzania-wspolnych-gier-na-steam-what-to-play-together?show=596549#a596549</guid>
<pubDate>Wed, 06 Nov 2024 17:11:40 +0000</pubDate>
</item>
<item>
<title>JS-projekt Znani Polacy - skrytykujcie</title>
<link>https://forum.pasja-informatyki.pl/596088/js-projekt-znani-polacy-skrytykujcie</link>
<description>

&lt;p&gt;Nie jestem profesjonalnym programistą, ale po dwóch latach pracy stworzyłem stronę internetową poświęconą znanym Polakom. Wszystko działa automatycznie dzięki JavaScript w przeglądarce, więc początkowe ładowanie strony głównej może zająć trochę czasu, ale nie powinno być to zbyt uciążliwe.&lt;/p&gt;



&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.znani-polacy.pl&quot;&gt;https://www.znani-polacy.pl/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Na stronie głównej wszystkie treści są zebrane razem przy użyciu technologii DataTables. Można również porównać siebie z znanymi Polakami oraz osobami polskiego pochodzenia.&lt;/p&gt;



&lt;p&gt;Na stronie quizu znajduje się konfigurator z ponad 400 opcjami testowymi, nie licząc możliwości wyboru liczby pytań w quizie.&lt;/p&gt;



&lt;p&gt;Proszę o opinie, czy jest to ciekawe i co można poprawić. Celem projektu była rozrywka oraz możliwość natychmiastowego zdobywania wiedzy.&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/596088/js-projekt-znani-polacy-skrytykujcie</guid>
<pubDate>Sat, 05 Oct 2024 12:56:57 +0000</pubDate>
</item>
<item>
<title>Projekt w Blazor do portfolio - zarządzanie dokumentami dot. szukania pracy</title>
<link>https://forum.pasja-informatyki.pl/596009/projekt-w-blazor-do-portfolio-zarzadzanie-dokumentami-dot-szukania-pracy</link>
<description>Rozwijam taki projekcik w Blazor do portfolio:&lt;br /&gt;
&lt;a href=&quot;https://github.com/rudolphreti/BewerbungMaster&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://github.com/rudolphreti/BewerbungMaster&lt;/a&gt; - zarządzanie dokumentami dot. szukania pracy.&lt;br /&gt;
&lt;br /&gt;
Proszę o opinie. Może ktoś chciałby się dołączyć?</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/596009/projekt-w-blazor-do-portfolio-zarzadzanie-dokumentami-dot-szukania-pracy</guid>
<pubDate>Tue, 24 Sep 2024 14:36:13 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Ocena strony internetowej - wersja poprawiona</title>
<link>https://forum.pasja-informatyki.pl/595995/ocena-strony-internetowej-wersja-poprawiona?show=595996#a595996</link>
<description>

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=7412704254029653376&quot; style=&quot;height:1333px; width:600px&quot;&gt;od 1500 złotych niezbyt zachęca i to się rzuca w oczy najbardziej&amp;nbsp;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/595995/ocena-strony-internetowej-wersja-poprawiona?show=595996#a595996</guid>
<pubDate>Mon, 23 Sep 2024 17:25:05 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Generator danych osobowych</title>
<link>https://forum.pasja-informatyki.pl/595815/generator-danych-osobowych?show=595866#a595866</link>
<description>

&lt;p&gt;Przy każdym naciśnięciu przycisku &quot;Wygeneruj inne dane&quot;&lt;/p&gt;



&lt;pre class=&quot;brush:jscript;&quot;&gt;
const data = await loadData();&lt;/pre&gt;



&lt;p&gt;pobierasz ponownie plik &lt;strong&gt;dane.txt&lt;/strong&gt;&amp;nbsp;i ponownie wykonuje się kod&lt;/p&gt;



&lt;pre class=&quot;brush:jscript;&quot;&gt;
text.split('\n').filter(line =&amp;gt; line.trim() !== '')

// i 

dataLines.map(line =&amp;gt; {
const [name, dob, pesel, address, city, email, phone] = line.split(',').map(item =&amp;gt; item.trim());
return { name, dob, pesel, address: `${address}, ${city}`, email, phone };
});&lt;/pre&gt;



&lt;p&gt;proponuje przepisać kod tak, aby tylko raz plik &lt;strong&gt;dane.txt&lt;/strong&gt;&amp;nbsp; był pobierany z serwera zaraz po załadowaniu strony, a każde kolejne naciśnięcie&amp;nbsp;przycisku &quot;Wygeneruj inne dane&quot;, losowało kolejny zestaw z utworzonej wcześniej tablicy.&lt;/p&gt;



&lt;p&gt;No i dopisz walidację czy plik&amp;nbsp;&lt;strong&gt;dane.txt&lt;/strong&gt;&amp;nbsp;w ogóle prawidłowo się pobrał (np. użyj &lt;strong&gt;If&lt;/strong&gt;-a lub bloku &lt;strong&gt;try ... catch&lt;/strong&gt;)&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;BTW, proponuje całe generowanie zestawu danych zrobić w &lt;strong&gt;backend&lt;/strong&gt;-dzie, a&amp;nbsp;przycisk&amp;nbsp;&quot;Wygeneruj inne dane&quot; pobierał by (tu &lt;strong&gt;fetch&lt;/strong&gt;) tylko gotowego &lt;strong&gt;json&lt;/strong&gt;-a z danymi do prezentacji na stronie.&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/595815/generator-danych-osobowych?show=595866#a595866</guid>
<pubDate>Mon, 09 Sep 2024 18:42:49 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Wstępna ocena strony internetowej</title>
<link>https://forum.pasja-informatyki.pl/595808/wstepna-ocena-strony-internetowej?show=595856#a595856</link>
<description>

&lt;p&gt;Gdy przeszedłem na podstronę Kontakt a następnie wróciłem na strone poprzednią to zawartość strony zaczęła nachodzić na menu strony&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=14243042387740555695&quot; style=&quot;height:544px; width:600px&quot;&gt;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/595808/wstepna-ocena-strony-internetowej?show=595856#a595856</guid>
<pubDate>Mon, 09 Sep 2024 12:39:01 +0000</pubDate>
</item>
<item>
<title>Ukończona strona</title>
<link>https://forum.pasja-informatyki.pl/595671/ukonczona-strona</link>
<description>Prace nad stroną ukończone i jest ona już świeżo po starcie(więc treści też nie ma żadnych) dostępna jest pod adresem &lt;a href=&quot;https://fleak.pl&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://fleak.pl&lt;/a&gt; można wejść założyć konto coś wrzucić i powiedzieć znajomym, rodzicom sąsiadom i psu że istnieje taka fajna strona;)</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/595671/ukonczona-strona</guid>
<pubDate>Tue, 27 Aug 2024 15:53:38 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Co myślicie o fiszkach z Java Script?</title>
<link>https://forum.pasja-informatyki.pl/589750/co-myslicie-o-fiszkach-z-java-script?show=595077#a595077</link>
<description>Ogólnie chciałem zrobić coś podobnego tylko że jako strona www.&lt;br /&gt;
&lt;br /&gt;
Takie coś jak duolingo ale właśnie z fiszkami kodu&lt;br /&gt;
&lt;br /&gt;
P.S Ja bym chętnie kupił ale cena 164 zł jednak trochę zbyt droga.&lt;br /&gt;
&lt;br /&gt;
100 zł to by była w sam raz cena.&lt;br /&gt;
&lt;br /&gt;
Pytanie po której znajdujecie się stronie krzywej Laffera</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/589750/co-myslicie-o-fiszkach-z-java-script?show=595077#a595077</guid>
<pubDate>Wed, 03 Jul 2024 09:43:57 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Dziennik spekulanta</title>
<link>https://forum.pasja-informatyki.pl/587655/dziennik-spekulanta?show=595001#a595001</link>
<description>

&lt;p&gt;Joker zaczyna raczkować &lt;img alt=&quot;laugh&quot; src=&quot;https://forum.pasja-informatyki.pl/qa-plugin/ckeditor4/plugins/smiley/images/teeth_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;laugh&quot;&gt;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=OeDWo7sWqRI&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=OeDWo7sWqRI&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/587655/dziennik-spekulanta?show=595001#a595001</guid>
<pubDate>Thu, 27 Jun 2024 07:26:17 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Lista zadań bez JS</title>
<link>https://forum.pasja-informatyki.pl/594806/lista-zadan-bez-js?show=594809#a594809</link>
<description>

&lt;p&gt;Dodaj &lt;strong&gt;placeholder&lt;/strong&gt; do &lt;strong&gt;input&lt;/strong&gt;-ów nawet pusty&lt;/p&gt;



&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;input type=&quot;text&quot; class=&quot;new-task&quot; placeholder=&quot;&quot;/&amp;gt;&lt;/pre&gt;



&lt;p&gt;a w css-ie&lt;/p&gt;



&lt;pre class=&quot;brush:css;&quot;&gt;
input:checked + label .new-task:not(:placeholder-shown)
{
    text-decoration-color: #06D001;
    border: 2px solid #06D001;
}&lt;/pre&gt;



&lt;p&gt;kod na obrazku&lt;/p&gt;



&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;input type=&quot;text&quot; class=&quot;new-task&quot; placeholder=&quot;&quot;/&amp;gt;
&amp;lt;input type=&quot;text&quot; class=&quot;new-task&quot;/&amp;gt;&lt;/pre&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=3950193668279373963&quot; style=&quot;height:146px; width:294px&quot;&gt;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/594806/lista-zadan-bez-js?show=594809#a594809</guid>
<pubDate>Fri, 21 Jun 2024 17:14:28 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Pomoc odnośnie uruchomienia stronki z github</title>
<link>https://forum.pasja-informatyki.pl/594777/pomoc-odnosnie-uruchomienia-stronki-z-github?show=594782#a594782</link>
<description>Możesz to uruchomić z poziomu &lt;a href=&quot;https://pages.github.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://pages.github.com/&lt;/a&gt;&lt;br /&gt;
Albo tworzysz obraz na kontenerze uruchamisz go i setup localhosta&lt;br /&gt;
&lt;a href=&quot;https://docs.docker.com/guides/workshop/02_our_app/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://docs.docker.com/guides/workshop/02_our_app/&lt;/a&gt;&lt;br /&gt;
jak nie wiesz jak używać, to &amp;nbsp;pierwsza apke pozostaje uruchomić na jakimś Apachu/ tomcat &amp;nbsp;mozna skorzystac z XAMP np. i skonfigurować localhost. &lt;br /&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=QnOAEArDt3Y&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=QnOAEArDt3Y&lt;/a&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/594777/pomoc-odnosnie-uruchomienia-stronki-z-github?show=594782#a594782</guid>
<pubDate>Thu, 20 Jun 2024 19:23:18 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: sztucznie dodawane konta sql</title>
<link>https://forum.pasja-informatyki.pl/594217/sztucznie-dodawane-konta-sql?show=594273#a594273</link>
<description>

&lt;p&gt;W kwesti rodo :&amp;nbsp;
&lt;br&gt;
&lt;strong&gt;mogą się znaleźć takie imiona i nazwiska, trzeba umiejętnie czytać to co w kodeksie jest napisane&amp;nbsp;&lt;/strong&gt;
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;



&lt;blockquote&gt;


&lt;p&gt;Przepis art. 4 ust. 1 rozporządzenia wskazuje jedynie, że dane osobowe to informacje o zidentyfikowanej lub możliwej do zidentyfikowania osobie fizycznej.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;Po imieniu i nazwisku nie jesteś wstanie jednoznacznie zidentyfikować osobę, gdyż imiona i nazwiska się powielają. wiele osób ma to samo Imie i nazwisko nawet.&amp;nbsp;
&lt;br&gt;

&lt;br&gt;
Dlatego w świetle tworzenia &quot;danych fejkowych&quot; można korzystać z Imion i nazwisk wymyślonych, lub generowanych.&amp;nbsp;
&lt;br&gt;

&lt;br&gt;
PESEL jest już np. daną wrażliwą.&amp;nbsp;
&lt;br&gt;

&lt;br&gt;
Dodatkowo sama informacja jest&amp;nbsp;&lt;/p&gt;



&lt;blockquote&gt;


&lt;p&gt;W związku z tym w zdecydowanej większości przypadków takie informacje jak samo imię, nazwisko, pełnione stanowisko w pracy, stopień naukowy czy numer konta bankowego&amp;nbsp;&lt;strong&gt;nie będą traktowane jako dane osobowe, gdyż pozostają bez związku z konkretną osobą fizyczną&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;źrdóło GOV:&amp;nbsp;&lt;a href=&quot;https://www.parp.gov.pl/component/content/article/81206:rodo-zabrania-przetwarzania-czyli-o-niektorych-nieporozumieniach-z-obszaru-ochrony-danych-osobowych#:~:text=W%20zwi%C4%85zku%20z%20tym%20w,zwi%C4%85zku%20z%20konkretn%C4%85%20osob%C4%85%20fizyczn%C4%85.&quot; rel=&quot;nofollow&quot;&gt;RODO_GOV&lt;/a&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/594217/sztucznie-dodawane-konta-sql?show=594273#a594273</guid>
<pubDate>Sat, 01 Jun 2024 17:02:17 +0000</pubDate>
</item>
<item>
<title>Przepisuje swoja starą 10 letnią gre na technologie webowe</title>
<link>https://forum.pasja-informatyki.pl/594235/przepisuje-swoja-stara-10-letnia-gre-na-technologie-webowe</link>
<description>

&lt;p&gt;Siemka! Około 10 lat temu byłem w trakcie pisania gry w technologii C# + XNA. Niestety nie dokończyłem jej przez zbyt duży bałagan w kodzie i zbyt małe doświadczenie. (Opublikowałem wersje 0.9.3 której brakowało kilku rzeczy które chciałem zrealizować) Chciałem wrócić do tego projektu jednak użyć innej technologii. Pomyślałem że zrobię równocześnie serie filmów w trakcie tworzenia gry na nowo. Oraz podzielę się swoimi doświadczeniami i przemyśleniami co można było zrobić inaczej a co zostało zaimplementowane dość fajnie.&amp;nbsp;
&lt;br&gt;

&lt;br&gt;
Całość będzie dostępna na github a nowy kod będę starał się dość dokładnie wyjaśnić więc może być to dobra okazja do poznania zagadnień związanych z tworzeniem gier lub biblioteki&amp;nbsp;Three.JSa która&amp;nbsp;chcę użyć mimo że będzie to gra &quot;2D&quot;&amp;nbsp;
&lt;br&gt;

&lt;br&gt;
Zapraszam na 1 odcinek i czekam na jakieś pytania lub krytykę ;D&amp;nbsp;
&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/fD1ChNUop0U&quot;&gt;https://youtu.be/fD1ChNUop0U&lt;/a&gt;
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/594235/przepisuje-swoja-stara-10-letnia-gre-na-technologie-webowe</guid>
<pubDate>Thu, 30 May 2024 08:13:57 +0000</pubDate>
</item>
<item>
<title>mój projekt - programowanie na stronie</title>
<link>https://forum.pasja-informatyki.pl/594177/moj-projekt-programowanie-na-stronie</link>
<description>i miałem wrócic z gotowym projektem wiec wracam &lt;a href=&quot;https://www.nighttree.c4ndy.pl/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.nighttree.c4ndy.pl/&lt;/a&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/594177/moj-projekt-programowanie-na-stronie</guid>
<pubDate>Wed, 29 May 2024 09:34:07 +0000</pubDate>
</item>
<item>
<title>moje portfolio</title>
<link>https://forum.pasja-informatyki.pl/593853/moje-portfolio</link>
<description>witam, napisałem i mam portfolio &lt;a href=&quot;https://mistmest.000webhostapp.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://mistmest.000webhostapp.com&lt;/a&gt; &amp;nbsp;jak oceniacie?</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/593853/moje-portfolio</guid>
<pubDate>Fri, 17 May 2024 21:17:43 +0000</pubDate>
</item>
<item>
<title>plan jezyka programowania do uzywania na stronie - czy to dobry pomysł</title>
<link>https://forum.pasja-informatyki.pl/593649/plan-jezyka-programowania-do-uzywania-na-stronie-czy-to-dobry-pomysl</link>
<description>witam, mam protse pytanie jestem w trakcie pisania strony i podstron &amp;nbsp;z moim własnym jezykiem programowania (pseudo jezyk) &amp;nbsp;gdyz nauczyłem sie juz sam pisac interpreter &amp;nbsp;strona ma byc bez logowania gdyz nie chce mi sie robic duzej polityki prywatnosci. tak to lenistwo . ale w trakcie pisania zaczełem sie zastanawiac czy to dobry pomysł i teraz mam pytanie co sądzice o tym pomysle ? (oczywiscie chodzi o strone udostepnioną a nie tak dla cwiczen )</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/593649/plan-jezyka-programowania-do-uzywania-na-stronie-czy-to-dobry-pomysl</guid>
<pubDate>Sat, 11 May 2024 17:40:55 +0000</pubDate>
</item>
<item>
<title>Zabawa z canvas i JavaScript - platformówka</title>
<link>https://forum.pasja-informatyki.pl/593469/zabawa-z-canvas-i-javascript-platformowka</link>
<description>

&lt;p&gt;To jest wątek ogłoszony w ósmym odcinku kursu JavaScript:
&lt;br&gt;

&lt;br&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=WbOFRc9bRc4&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=WbOFRc9bRc4&lt;/a&gt;
&lt;br&gt;

&lt;br&gt;
Można tutaj postować własne wersje gier platformowych, wykonane z wykorzystaniem canvas w HTML 5 lub korzystające z bibliotek okołocanvasowych lub WebGLowych. Dobrej zabawy!
&lt;br&gt;

&lt;br&gt;
Pliki do odcinka można pobrać tutaj:&lt;/p&gt;



&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://miroslawzelent.pl/pliki/kurs_js9.zip&quot;&gt;https://miroslawzelent.pl/pliki/kurs_js9.zip&lt;/a&gt;&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/593469/zabawa-z-canvas-i-javascript-platformowka</guid>
<pubDate>Thu, 02 May 2024 11:06:28 +0000</pubDate>
</item>
<item>
<title>Darmowe szablony stron WWW</title>
<link>https://forum.pasja-informatyki.pl/593386/darmowe-szablony-stron-www</link>
<description>

&lt;p&gt;Cześć, postanowiłem zrobić stronke z darmowymi szablonami stron WWW. Przyda się osobom które chciałyby mieć stronę ale nie umieją/nie mają czasu na jej zrobienie. Na &lt;a href=&quot;https://webszablony.xyz/&quot; rel=&quot;nofollow&quot;&gt;https://webszablony.xyz/&lt;/a&gt; znajdziesz template do niemal każdej strony - do portfolio, bloga, bio, sklepu i wiele więcej! Na co czekasz? Wbij na stronę i przejrzyj dostępne szablony!&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/593386/darmowe-szablony-stron-www</guid>
<pubDate>Sun, 28 Apr 2024 15:55:03 +0000</pubDate>
</item>
<item>
<title>spolszczenie starej gry</title>
<link>https://forum.pasja-informatyki.pl/593136/spolszczenie-starej-gry</link>
<description>Witam, planuje spolszczyć pewną starą grę singleplayer. Nie mogę się dostać do plików z tekstem na dysku, ale mam dwa pomysły, przy jednym potrzebuję pomocy, a więc tak:&lt;br /&gt;
&lt;br /&gt;
1. Pierwszy pomysł jest następujący: mogę robić screenshoty, kiedy gra jest uruchomiona, następnie wyciągać z nich tekst ocrem, a potem zrobić overlaya, który przesłoni oryginalny tekst po angielsku jakimś np prostokątami w odpowiednich kolorach i na nich wyrenderuje tekst po polsku. To mogę zrobić od razu bez żadnej pomocy, ale przechwytywanie ekranu (screenshoty), a następnie ocr to dosyć kosztowne operacje. Jak opublikuje gotowe spolszczenie w takiej formie i odpali je ktoś na słabszym laptopie to nie będzie to raczej działać zbyt dobrze.&lt;br /&gt;
&lt;br /&gt;
2. Mój drugi pomysł wymagał by już waszej pomocy, a także oceny czy jest to w ogóle możliwe. Kiedy podłączyłem do gry cheat engine to byłem w stanie znaleźć pewne teksty w pamięci ram. Np jak byłem w menu to udało mi się znaleźć &amp;quot;New game&amp;quot; i zmienić to na &amp;quot;Nowa gra&amp;quot; (zmiana zadziałała, tekst w grze uległ zmianie). Tak sobie myślę, że skoro t tekst jest w ramie pod postacią stringa to i musi być jakaś funkcja, która renderuje ten tekst na ekranie. Może dałoby się założyć jakiegoś hooka na odpowiednią funkcje i przechwytywać tekst, a następnie go zmieniać na przetłumaczoną polską wersję zanim jeszcze się pojawi na ekranie? Gra jest w opengl, nie wiem co to mogłaby być za funkcja. Ta metoda wydaje się lepsza, ale nie mam pojęcia jak się za to zabrać i czy ma to w ogóle jakiś sens.</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/593136/spolszczenie-starej-gry</guid>
<pubDate>Thu, 18 Apr 2024 19:28:57 +0000</pubDate>
</item>
<item>
<title>Moja strona - nowe funkcje :)</title>
<link>https://forum.pasja-informatyki.pl/592550/moja-strona-nowe-funkcje</link>
<description>

&lt;p&gt;Witam wszystkich,&lt;/p&gt;



&lt;p&gt;Ostatnio zamieściłem post, w którym ocenialiście moją&amp;nbsp;stronę.&lt;/p&gt;



&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://ctsoftpage.pythonanywhere.com/&quot;&gt;ctsoftpage&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Od tamtej pory dodałem nowe funkcje takie jak np: system ogłoszeń. Napisałem sam sobie panel administracyjny do&amp;nbsp;dodawania nowych ogłoszeń.&lt;/p&gt;



&lt;p&gt;Pojawił się także nowy projekt.&lt;/p&gt;



&lt;p&gt;Jest&amp;nbsp;także możliwość rejestracji, aby pobrać dostępne projekty za darmo :)&lt;/p&gt;



&lt;p&gt;Co o tym sądzicie, programowanie to moja pasja&amp;nbsp;(głównie C++). Stronę i backend napisałem sobie sam&amp;nbsp;dla przyjemności&amp;nbsp;także nie jestem mega w tym doświadczony ale krytyka&amp;nbsp;jest mile&amp;nbsp;widziana :). Co mogę jeszcze fajnego dodać do strony?&lt;/p&gt;



&lt;p&gt;Pozdrawiam,&lt;/p&gt;



&lt;p&gt;Piotr Domański&lt;/p&gt;</description>
<category>Nasze projekty</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/592550/moja-strona-nowe-funkcje</guid>
<pubDate>Wed, 03 Apr 2024 19:39:23 +0000</pubDate>
</item>
</channel>
</rss>