<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Przyszły Programista - Najnowsze pytania i odpowiedzi</title>
<link>http://forum.przyszlyprogramista.pl/?qa=qa</link>
<description>Powered by Question2Answer</description>
<item>
<title>Testowanie WeatherApp - testowanie serwisu</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2125/testowanie-weatherapp-testowanie-serwisu</link>
<description>&lt;p&gt;Cześć wszystkim!&lt;/p&gt;

&lt;p&gt;mam problem z testem aplikacji pogodowej. Mam 2 klasy: GetLocationService i GetLocationClient.&lt;br&gt;
GetLocationClient to klasa która konkretnie wysyła zapytanie do API i zwraca odpowiedź - jej nie chcę testować.&lt;br&gt;
GetLocationService.ma GetLocationClient jako pole i wywołuje go żeby za jego pomocą wysłać zapytanie:&lt;/p&gt;

&lt;pre class=&quot;brush:java;&quot;&gt;
public class GetLocationService extends Service&amp;lt;Location&amp;gt; {

    private final GetLocationAPIClient getLocationAPIClient;

    GetLocationService(GetLocationAPIClient getLocationAPIClient) {
        this.getLocationAPIClient = getLocationAPIClient;
    }

    @Override
    protected Task&amp;lt;Location&amp;gt; createTask() {
        return new Task&amp;lt;Location&amp;gt;() {
            @Override
            protected Location call() throws Exception {

                return getLocationAPIClient.getLocation();
            }
        };
    }
}&lt;/pre&gt;

&lt;p&gt;Chcę zamockować działanie&amp;nbsp;GetLocationClient i przetestować, czy&amp;nbsp;GetLocationService poprawnie przekazuje odpowiedź lub zgodnie z założeniem wyrzuca błąd.&lt;/p&gt;

&lt;p&gt;Alej jak przetestować createTask()? Czy ktoś testował Service?&lt;/p&gt;</description>
<category>Java</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2125/testowanie-weatherapp-testowanie-serwisu</guid>
<pubDate>Tue, 02 Jun 2026 18:35:43 +0000</pubDate>
</item>
<item>
<title>Poszukuję Front-end developera</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2124/poszukuj%C4%99-front-end-developera</link>
<description>&lt;p&gt;Szukam Front-end Developera (Angular) do ukończenia aplikacji webowej.&lt;/p&gt;

&lt;p&gt;Projekt jest w zaawansowanym etapie – większość logiki została już zaimplementowana. Potrzebuję wsparcia głównie w zakresie:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;dopracowania UI&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;wsparcia w testowaniu aplikacji&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Praca zdalna, forma współpracy oraz wysokość wynagrodzenia do ustalenia&lt;/p&gt;

&lt;p&gt;Mile widziane:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;doświadczenie w poprawianiu UI istniejących aplikacji&lt;/li&gt;
	&lt;li&gt;wyczucie estetyki i UX&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Jeśli jesteś zainteresowany/a, podeślij proszę portfolio lub przykłady realizacji.&lt;/p&gt;</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2124/poszukuj%C4%99-front-end-developera</guid>
<pubDate>Sun, 19 Apr 2026 10:59:46 +0000</pubDate>
</item>
<item>
<title>Praca jako C# .NET Developer</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2123/praca-jako-c%23-net-developer</link>
<description>Hej,&lt;br /&gt;
&lt;br /&gt;
Właśnie miałem rozmowę telefoniczną z jednym z absolwentów Modestem, który pracuje jako C# .NET Devloper w firmie w Bielsku Białej. Powiedział mi on, że szykują się do przyjęcia nowego osoby na poziomie Juniorskim, więc jeśli robisz właśnie specjalizację w tym kierunku lub chciałbyś zrobić w niedalekiej przyszłości, to napisz do nie na pw i prześlę Ci namiary na Modesta.&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam,&lt;br /&gt;
Artur</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2123/praca-jako-c%23-net-developer</guid>
<pubDate>Tue, 24 Mar 2026 13:37:07 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Nasze zarobki - chwalimy się :)</title>
<link>http://forum.przyszlyprogramista.pl/?qa=872/nasze-zarobki-chwalimy-si%C4%99&amp;show=2119#a2119</link>
<description>Update 07-2025&lt;br /&gt;
&lt;br /&gt;
Staż w IT 3.5 roku&lt;br /&gt;
&lt;br /&gt;
Pierwszy etat : Blockchain Developer + DevOps, branża krypto, Python, Docker, Kubernetes, Terraform, Kibana, MongoDB, &lt;br /&gt;
&lt;br /&gt;
220zl/h - czyste B2B (ok 150h/m-c)&lt;br /&gt;
&lt;br /&gt;
Drugi etat: Starszy Inżynier DevOps - stack bardzo podobny do tego wyżej &lt;br /&gt;
&lt;br /&gt;
145zl/h - czyste B2B (ok 100h/m-c)&lt;br /&gt;
&lt;br /&gt;
Sumarycznie wychodzi od 47k do 50k netto mc. W nawiasach godziny, które podaje - w rzeczywistości pracuje ok 9h dziennie co daje ok 180h/mc.&lt;br /&gt;
&lt;br /&gt;
Po podatkach oraz innych opłatach zostaje na koncie ok 40 000zl&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam.</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=872/nasze-zarobki-chwalimy-si%C4%99&amp;show=2119#a2119</guid>
<pubDate>Fri, 11 Jul 2025 18:31:31 +0000</pubDate>
</item>
<item>
<title>NAJWAŻNIEJSZY WEBINAR W ROKU: AI w pracy programisty</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2105/najwa%C5%BCniejszy-webinar-w-roku-ai-w-pracy-programisty</link>
<description>&lt;p&gt;Witam Cię bardzo serdecznie,&lt;/p&gt;

&lt;p&gt;Z całego serca chciałbym Cię zaprosić na najważniejszy webinar dla nas - programistów.&lt;/p&gt;

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

&lt;p&gt;Odpowiemy sobie na nim na pytanie, czy to co robimy (czyli to że uczymy się programowania) ma jakikolwiek sens w dobie AI.&lt;/p&gt;

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

&lt;p&gt;To jest webinar do którego przygotowuję się bardzo mocno od kilku miesięcy przerabiając wiele materiału na temat AI.&lt;/p&gt;

&lt;p&gt;Dodatkowo biorę teraz udział w szkoleniu, które bardzo głęboko podchodzi do tematu programowania ze sztuczną inteligencją:&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://www.10xdevs.pl/&quot; target=&quot;_blank&quot;&gt;www.10xdevs.pl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do tego słucham wszystkie odcinki podcastu:&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://opanuj.ai/podcast/&quot; target=&quot;_blank&quot;&gt;opanuj.ai/podcast/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do tego śledzę wszystkie nowości związane z premierą najnowszych modeli językowych takich jak claude 3.7 oraz chat gpt 4.5 i tego co one wnoszą nowego.&lt;/p&gt;

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

&lt;p&gt;Wszystko po to, aby trzymać rękę na pulsie i wiedzieć dokąd to wszystko zmierza, szczególnie w aspekcie programowania z AI.&lt;/p&gt;

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

&lt;p&gt;Po tych wszystkich analizach dochodzę do wniosku, że:&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;IDĄ ZŁOTE LATA DLA PROGRAMISTÓW&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Zapraszam Cię zatem na wspólny webinar na którym sobie o tym wszystkim porozmawiamy.&lt;/p&gt;

&lt;p&gt;Wyłożę Ci wszystkie&amp;nbsp;moje argumenty, wnioski i analizy.&lt;/p&gt;

&lt;p&gt;Chętnie też posłucham Twoich analiz i przemyśleń.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jeśli trafiłeś na jakiś materiał w internecie : film lub artykuł, który Cię martwi, daje do myślenia, to prześlij mi go przed rozmową, razem z Twoimi pytaniami odnośnie niego.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Zrób to najlepiej od razu, abym mógł się z nim zapoznać i jak najlepiej odpowiedzieć na Twoje pytanie.&lt;/p&gt;

&lt;p&gt;Chciałbym do tego tematu podejść maksymalnie rzetelnie i obiektywnie.&lt;/p&gt;

&lt;p&gt;Webinar odbędzie się już za tydzień w piątek 2 maja&amp;nbsp;o godzinie 19.00&lt;/p&gt;

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

&lt;p&gt;Poniżej podaję link do rozmowy:&lt;/p&gt;

&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://rozmowa.przyszlyprogramista.pl/&quot; target=&quot;_blank&quot;&gt;https://rozmowa.przyszlyprogramista.pl/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Do zobaczenia i Satysfakcjonujących Wyzwań!&amp;nbsp;&lt;br&gt;
Artur Nowakowski&lt;/p&gt;</description>
<category>Motywacja</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2105/najwa%C5%BCniejszy-webinar-w-roku-ai-w-pracy-programisty</guid>
<pubDate>Fri, 25 Apr 2025 13:01:36 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Nie mogę się zalogować do NGINX używając wartości domyślnych</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2100/nie-mog%C4%99-si%C4%99-zalogowa%C4%87-nginx-u%C5%BCywaj%C4%85c-warto%C5%9Bci-domy%C5%9Blnych&amp;show=2101#a2101</link>
<description>&lt;p&gt;&lt;code data-end=&quot;276&quot; data-start=&quot;254&quot;&gt;network_mode: &quot;host&quot;&lt;/code&gt; może powodować dziwne problemy, &lt;strong data-end=&quot;352&quot; data-start=&quot;309&quot;&gt;szczególnie na systemach nie-Linuxowych.&lt;/strong&gt;&amp;nbsp;Spróbuj go usunąć i zamiast tego określ porty ręcznie&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2100/nie-mog%C4%99-si%C4%99-zalogowa%C4%87-nginx-u%C5%BCywaj%C4%85c-warto%C5%9Bci-domy%C5%9Blnych&amp;show=2101#a2101</guid>
<pubDate>Thu, 24 Apr 2025 15:39:25 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: DevOps - docker/Magento2</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2098/devops-docker-magento2&amp;show=2099#a2099</link>
<description>Napisz bezpośrednio do Daniela Rudnika w tej sprawie.</description>
<category>Pozostałe tematy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2098/devops-docker-magento2&amp;show=2099#a2099</guid>
<pubDate>Thu, 27 Mar 2025 19:21:54 +0000</pubDate>
</item>
<item>
<title>WEBINAR - Porozmawiajmy o języku PHP</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2097/webinar-porozmawiajmy-o-j%C4%99zyku-php</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;Z całego serca chciałbym&amp;nbsp;Cię zaprosić na kolejną porcję MOTYWACJI I INSPIRACJI do nauki programowania, czyli na&amp;nbsp; najbliższy webinar, który odbędzie się już w najbliższy piątek 21 marca o godzinie 19.00&lt;/p&gt;

&lt;p&gt;Link do rozmowy:&lt;br&gt;
&lt;a href=&quot;https://rozmowa.przyszlyprogramista.pl/&quot; rel=&quot;noreferrer nofollow&quot; target=&quot;_blank&quot;&gt;https://rozmowa.przyszlyprogramista.pl/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Tematem tego webinaru będzie język php.&lt;/p&gt;

&lt;p&gt;Język PHP jest chyba najbardziej niedocenianym językiem w branży, jednak ja uważam, że jest on idealnym wyborem dla osoby, która chce pracować przy tworzeniu aplikacji internetowych.&lt;/p&gt;

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

&lt;p&gt;Szacuje się, że ok 70% stron internetowych wykorzystuje na backendzie język PHP.&lt;/p&gt;

&lt;p&gt;W języku PHP powstał serwis allegro, jak również facebook.&lt;/p&gt;

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

&lt;p&gt;Jego siła bierze się z masy gotowych aplikacji umożliwiających bardzo szybkie zbudowanie customowej aplikacji webowej, sklepu internetowego lub domowej strony internetowej.&lt;/p&gt;

&lt;p&gt;Wszystko za sprawą gotowych rozwiązań takich jak: Wordpress, prestashop, magento, i masy innych.&lt;/p&gt;

&lt;p&gt;PHP może też się poszczycić świetnymi frameworkami pozwalającymi szybko i dobrze budować rozbudowane aplikacje&amp;nbsp;internetowe jak Symfony lub Laravel.&lt;/p&gt;

&lt;p&gt;W rozmowie weźmie&amp;nbsp;udział dwóch absolwentów Projektu Przyszły Programista.&lt;/p&gt;

&lt;p&gt;Jeden świeżo upieczony: Mateusz, który niedawno dostał pracę w branży IT.&lt;/p&gt;

&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.linkedin.com/in/mateusz-wiktorowicz-95b09a206/&quot; target=&quot;_blank&quot;&gt;https://www.linkedin.com/in/mateusz-wiktorowicz-95b09a206/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Drugi Andrzej, który pracuje w branży od blisko 4 lat.&lt;/p&gt;

&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.linkedin.com/in/andrzej-guzowski-5018aa160/&quot; target=&quot;_blank&quot;&gt;https://www.linkedin.com/in/andrzej-guzowski-5018aa160/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Porozmawiamy sobie również o tym jak wygląda rekrutacja na php developera i co trzeba&amp;nbsp;umieć, aby otrzymać taką pracę.&lt;/p&gt;

&lt;p&gt;Zapraszam Cię gorąco w najbliższy&amp;nbsp;piątek o godzinie 19.00&lt;/p&gt;

&lt;p&gt;Do zobaczenia na żywo!&lt;/p&gt;

&lt;p&gt;Satysfakcjonujących Wyzwań!&amp;nbsp;&lt;br&gt;
Artur&lt;/p&gt;</description>
<category>Motywacja</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2097/webinar-porozmawiajmy-o-j%C4%99zyku-php</guid>
<pubDate>Mon, 17 Mar 2025 12:48:57 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: wyświetlanie opcji drop-down menu (mvc)</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2092/wy%C5%9Bwietlanie-opcji-drop-down-menu-mvc&amp;show=2093#a2093</link>
<description>&lt;p&gt;Cześć Natalia,&lt;/p&gt;

&lt;p&gt;Jeśli dobrze rozumiem twój plan, to rzucają mi się w oczy jedno miejsce.&lt;br&gt;
Przekazujesz kategorie go widoku:&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
public function createViewAddIncome()
  {
    echo $this-&amp;gt;view-&amp;gt;render(&quot;transactions/add_income.php&quot;, [
      'categories' =&amp;gt; $this-&amp;gt;transactionsService-&amp;gt;selectCategoriesIncomes()
    ]);
  }&lt;/pre&gt;

&lt;p&gt;a w widoku przechodzisz po nich w pętli i sprawdzasz $oldFormData (nie widzę, jak jest przekazana ta tablica, ale zakładam, że istnieje)&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
&amp;lt;select class=&quot;category&quot; name=&quot;category&quot;&amp;gt;
    &amp;lt;option selected disabled&amp;gt;Wybierz kategorię przychodu&amp;lt;/option&amp;gt;
        &amp;lt;?php foreach ($categories as $category): ?&amp;gt;
        &amp;lt;option value=&quot;&amp;lt;?php echo $oldFormData[$category] ? 'selected' : ''; ?&amp;gt;&quot;&amp;gt;
        &amp;lt;/option&amp;gt;
    &amp;lt;?php endforeach; ?&amp;gt;
&amp;lt;/select&amp;gt;&lt;/pre&gt;

&lt;p&gt;czy poniższa linijka na pewno ustawia value i oznacza ją jako selected?&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
&amp;lt;option value=&quot;&amp;lt;?php echo $oldFormData[$category] ? 'selected' : ''; ?&amp;gt;&quot;&amp;gt;&lt;/pre&gt;

&lt;p&gt;Być może powinno wyglądać to mniej więcej tak, zakładając, ze twoja funkcja&amp;nbsp;selectCategoriesIncomes() zwraca tablicę w postaci ['USA', 'Canada', Mexico' ...]&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
&amp;lt;select class=&quot;category&quot; name=&quot;category&quot;&amp;gt;
    &amp;lt;option selected disabled&amp;gt;Wybierz kategorię przychodu&amp;lt;/option&amp;gt;
        &amp;lt;?php foreach ($categories as $category): ?&amp;gt;
        &amp;lt;option value=&quot;&amp;lt;?php $category ?&amp;gt;&quot; &amp;lt;?php echo $oldFormData[$category] === $category ? 'selected' : ''; ?&amp;gt;&amp;gt;
&amp;nbsp;       &amp;lt;?php echo $category; ?&amp;gt;
        &amp;lt;/option&amp;gt;
    &amp;lt;?php endforeach; ?&amp;gt;
&amp;lt;/select&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2092/wy%C5%9Bwietlanie-opcji-drop-down-menu-mvc&amp;show=2093#a2093</guid>
<pubDate>Sat, 15 Mar 2025 19:09:47 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: dodawanie użytkownika do bazy (mvc)</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2089/dodawanie-u%C5%BCytkownika-do-bazy-mvc&amp;show=2090#a2090</link>
<description>&lt;p&gt;Pierwszy strzał - w pgadmin robisz:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:sql;&quot;&gt;
DESCRIBE users;&lt;/pre&gt;

&lt;p&gt;aby zobaczyć strukturę tabeli.&lt;/p&gt;

&lt;p&gt;Drugi - dodaj error handling aby zobaczyć co jest nie tak:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
public function create(array $formData)
{
    if (!isset($formData['name'])) {
        throw new \Exception('Pole &quot;name&quot; jest wymagane.');
    }
    try {
        $this-&amp;gt;db-&amp;gt;query(
            &quot;INSERT INTO users(name, password, email) VALUES(:name, :password, :email)&quot;,
            [
                'name' =&amp;gt; $formData['name'],
                'email' =&amp;gt; $formData['email'],
                'password' =&amp;gt; $formData['password'],
            ]
        );
    } catch (\Exception $e) {
        error_log($e-&amp;gt;getMessage());
        throw $e;
    }
}
&lt;/pre&gt;

&lt;p&gt;trzeci strzał - połączenie z db :&amp;nbsp; jeśli używasz niestandardowego obiektu do komunikacji z bazą danych (np. $this-&amp;gt;db), upewnij się, że obiekt ten działa poprawnie i połączenie do bazy jest aktywne. Jeśli masz dostęp do konfiguracji, sprawdź, czy połączenie jest prawidłowe i nie występują żadne problemy z dostępem do bazy&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2089/dodawanie-u%C5%BCytkownika-do-bazy-mvc&amp;show=2090#a2090</guid>
<pubDate>Sun, 02 Mar 2025 22:03:21 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: aplikacja budżetowa z MVC - wyświetlanie strony rejestracji</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2078/aplikacja-bud%C5%BCetowa-mvc-wy%C5%9Bwietlanie-strony-rejestracji&amp;show=2088#a2088</link>
<description>Zbudowałam ten framework od początku, dodałam poprawki i nadal mam ten sam problem.. . Mam prośbę, żeby ktoś przejrzał pliki z githuba (&lt;a href=&quot;https://github.com/NatKacz99/budget-app-MVC&quot; rel=&quot;nofollow&quot;&gt;https://github.com/NatKacz99/budget-app-MVC&lt;/a&gt;) i podpowiedział co poprawić.</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2078/aplikacja-bud%C5%BCetowa-mvc-wy%C5%9Bwietlanie-strony-rejestracji&amp;show=2088#a2088</guid>
<pubDate>Tue, 11 Feb 2025 19:29:04 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Błąd: &quot;Cannot modify header information - headers already sent&quot; - Aplikacja budżetowa PHP</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2084/cannot-modify-information-headers-already-aplikacja-bud%C5%BCetowa&amp;show=2085#a2085</link>
<description>&lt;p&gt;Pierwszy strzał to obstawiałbym, że brakuje:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
 else if ($_SESSION['form_period_of_time'] == &quot;current_month&quot; || $_SESSION['form_period_of_time'] == &quot;previous_month&quot; || $_SESSION['form_period_of_time'] == &quot;current_year&quot;) {
                        header('Location: balance.php');
                        exit();  // Dodaj exit() po przekierowaniu
                    }&lt;/pre&gt;

&lt;p&gt;Zobacz, że podobnie postępujesz na samej górze skryptu :&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php

session_start();

if (!isset($_SESSION['user_logged'])) {
    header('Location: index.php');
    exit();
}
... reszta kodu&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2084/cannot-modify-information-headers-already-aplikacja-bud%C5%BCetowa&amp;show=2085#a2085</guid>
<pubDate>Tue, 04 Feb 2025 21:59:43 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Dane z funkcji asynchronicznej</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2082/dane-z-funkcji-asynchronicznej&amp;show=2083#a2083</link>
<description>&lt;p&gt;Na pierwszy rzut oka widzę 3 ścieżki:&lt;br&gt;
- użycie async/await (jeśli masz wsparcie dla promes w swojej bazie danych). Np dla mysql2 możesz zrobić taki myk:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
app.post('/savetodatabase', async (req, res) =&amp;gt; {
    try {
        const note_id2 = 'SELECT MAX(note_id) AS idNote FROM notes WHERE user_id = ?';
        const [rows] = await db.promise().query(note_id2, [user_id]);
        const noteIdVar = rows[0].idNote;
        console.log(&quot;NOTE ID WYNOSI in: &quot;, noteIdVar); //tutaj normalna wartość

        // Możesz teraz wykonać inne operacje, np. zapisać noteIdVar do bazy
        res.json({ noteIdVar });

    } catch (err) {
        console.log(err);
        res.json({ Message: &quot;Server Side Error&quot; });
    }
});
&lt;/pre&gt;

&lt;p&gt;db.promise().query zwraca promesę, którą możesz użyć w połączeniu z await, co pozwala na synchronizację kodu i zapewnia, że operacje zależne od noteIdVar będą wykonywane po zakończeniu zapytania.&lt;/p&gt;

&lt;p&gt;- użycie funkcji callback w celu przetworzenia wartości:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
app.post('/savetodatabase', (req, res) =&amp;gt; {
    const note_id2 = 'SELECT MAX(note_id) AS idNote FROM notes WHERE user_id = ?';
    
    db.query(note_id2, [user_id], (err, data) =&amp;gt; {
        if (err) {
            return res.json({ Message: &quot;Server Side Error&quot; });
        } else {
            const noteIdVar = data[0].idNote;
            console.log(&quot;NOTE ID WYNOSI in: &quot;, noteIdVar);
            res.json({ noteIdVar });
        }
    });
});
&lt;/pre&gt;

&lt;p&gt;W tym przypadku cała logika związana z noteIdVar jest umieszczona w callbacku, który jest wywoływany po zakończeniu zapytania.&lt;/p&gt;

&lt;p&gt;- hybryda (tzn masz starszą wersję mysql, która nie wspiera promes) możesz ładnie opakować zapytanie w promesę:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
function getNoteId(user_id) {
    return new Promise((resolve, reject) =&amp;gt; {
        const note_id2 = 'SELECT MAX(note_id) AS idNote FROM notes WHERE user_id = ?';
        db.query(note_id2, [user_id], (err, data) =&amp;gt; {
            if (err) {
                reject(err);
            } else {
                resolve(data[0].idNote);
            }
        });
    });
}

app.post('/savetodatabase', async (req, res) =&amp;gt; {
    try {
        const noteIdVar = await getNoteId(user_id);
        console.log(&quot;NOTE ID WYNOSI: &quot;, noteIdVar);

        res.json({ noteIdVar });
    } catch (err) {
        res.json({ Message: &quot;Server Side Error&quot; });
    }
});
&lt;/pre&gt;

&lt;p&gt;W tej wersji zapytanie do bazy danych jest opakowane w promesę, którą można wykorzystać z async/await.&lt;/p&gt;

&lt;p&gt;Niemniej jednak wszystkie powyższe podejścia powinny Ci zapewnić, że noteIdVar będzie miało poprawną wartość po zakończeniu zapytania do bazy danych. Hope will halp.&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2082/dane-z-funkcji-asynchronicznej&amp;show=2083#a2083</guid>
<pubDate>Wed, 29 Jan 2025 22:27:15 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Current user id</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2073/current-user-id&amp;show=2076#a2076</link>
<description>&lt;p&gt;Chodzi mi o to, że mogę dostać się do id poprzez:&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
app.post('/login', (req, res) =&amp;gt; {

const sql = 'SELECT * FROM users WHERE email = ? AND password = ?';

db.query(sql, [req.body.email, req.body.password], (err, data) =&amp;gt; {

const id = data[0].id;

})

})&lt;/pre&gt;

&lt;p&gt;Ale moje pytanie jak teraz przekazać to id tutaj:&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
app.post('/savetodatabase', (req, res) =&amp;gt; {

//chciałbym użyć user_id tutaj

})&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2073/current-user-id&amp;show=2076#a2076</guid>
<pubDate>Thu, 23 Jan 2025 20:10:57 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Aplikacja Budżetowa obiektowo</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2068/aplikacja-bud%C5%BCetowa-obiektowo&amp;show=2072#a2072</link>
<description>Jeśli chodzi o zapisywanie do xml to u mnie było podobnie z tego co pamiętam (nie zapisywało liczb po przecinku).&lt;br /&gt;
&lt;br /&gt;
Pomogła zamiana double w str, ustawienie precyzji wyświetlania do 2 miejsc po przecinku i zapisanie stringa do xml (nie double bezpośrednio).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stringstream ss;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ss &amp;lt;&amp;lt; fixed &amp;lt;&amp;lt; setprecision(2) &amp;lt;&amp;lt; newOperation.amount;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string str = ss.str();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xml.AddElem(&amp;quot;Amount&amp;quot;, str);</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2068/aplikacja-bud%C5%BCetowa-obiektowo&amp;show=2072#a2072</guid>
<pubDate>Tue, 14 Jan 2025 13:55:25 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Szukam dwoje programistów do zbudowania razem STARTUPU</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2067/szukam-dwoje-programist%C3%B3w-do-zbudowania-razem-startupu&amp;show=2070#a2070</link>
<description>Dzięki Kochani za wszystkie zgłoszenia. &lt;br /&gt;
&lt;br /&gt;
Nawiązałem współpracę z Mateuszem i zobaczymy co z tego wyjdzie:)</description>
<category>Wspólne programowanie</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2067/szukam-dwoje-programist%C3%B3w-do-zbudowania-razem-startupu&amp;show=2070#a2070</guid>
<pubDate>Wed, 08 Jan 2025 22:02:27 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Junior/Mid Erlang Software Developer; znajomość Erlanga niekonieczna na wejście</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2061/software-developer-znajomo%C5%9B%C4%87-erlanga-niekonieczna-wej%C5%9Bcie&amp;show=2062#a2062</link>
<description>Hej Marta,&lt;br /&gt;
&lt;br /&gt;
Dzięki za umieszczenie tego ogłoszenia. Czy Ty też pracujesz jako programistka Erlanga?</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2061/software-developer-znajomo%C5%9B%C4%87-erlanga-niekonieczna-wej%C5%9Bcie&amp;show=2062#a2062</guid>
<pubDate>Mon, 25 Nov 2024 13:42:13 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: WEBINAR - Jak wygląda życie Legendarnego Senior Java Developera... i juniora też:)</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2057/webinar-wygl%C4%85da-%C5%BCycie-legendarnego-senior-developera-juniora&amp;show=2058#a2058</link>
<description>&lt;p&gt;Zawsze zastanawiało mnie to tabu dt zarobków. Dlaczego wstydzimy się o tym mówić głośno ile kto zarabia ? Nikt nam przecież ani nie dołoży ani nie zabierze…Dostęp do ogłoszeń na JJ lub NFJ ma każdy i przecież widać jaki jest zakres na Seniorów/Architektów oprogramowania lub jeszcze wyżej pozycji managerskich&amp;nbsp;&lt;img alt=&quot;smiley&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/regular_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;smiley&quot;&gt;&lt;/p&gt;

&lt;p&gt;Osobiście bardzo gratuluję Marcinowi wysokich zarobków ale na pewno nie będę o nie zazdrosny&lt;img alt=&quot;wink&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/wink_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;wink&quot;&gt;&lt;/p&gt;</description>
<category>Motywacja</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2057/webinar-wygl%C4%85da-%C5%BCycie-legendarnego-senior-developera-juniora&amp;show=2058#a2058</guid>
<pubDate>Wed, 20 Nov 2024 14:54:23 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Młodszy programista PHP</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2053/m%C5%82odszy-programista-php&amp;show=2056#a2056</link>
<description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;Dzięki za miłe słowa&amp;nbsp;&lt;img alt=&quot;smiley&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/regular_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;smiley&quot;&gt;&amp;nbsp;Fajnie was spotkać. Przymierzam się do obejrzenia wywiadu z Tobą Danielu. Tym bardziej, że mamy co nieco wspólnego z czarnym złotem&amp;nbsp;&lt;img alt=&quot;wink&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/wink_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;wink&quot;&gt;&lt;/p&gt;

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

&lt;p&gt;Przejdźmy już do rzeczy. Firma, gdzie pracuję, powstała jakieś 10 lat temu i&amp;nbsp;&amp;nbsp;współpracuje z salonami&amp;nbsp;sprzedaży (grupami sprzedażowymi)&amp;nbsp;samochodów&amp;nbsp; w różnych miejscach Polski.&lt;br&gt;
A sprzedaż wymaga przygotowywania raportów finansowych, wydajnościowych (np. praca działu serwisu), przypominania klientom, że zapomnieli zapłacić itp.&amp;nbsp;I&amp;nbsp;tu wkraczamy my, ponieważ robienie tego ręcznie jest czasochłonne, podatne na błędy no i nie zawsze spójne (np. pomiędzy oddziałami w różnych miastach).&lt;br&gt;
Firma wychodzi naprzeciw tym potrzebom,&amp;nbsp;przetwarzamy dane i prezentujemy w postaci raportów.&amp;nbsp;Dane pobieramy z różnych&amp;nbsp;baz&amp;nbsp;(MSSQL, MySQL, Firebird) - bezpośrednio lub poprzez API.&amp;nbsp;Czasem zaczytujemy coś z xls w samej aplikacji, a innym aplikacja sama łączy się do skrzynki pocztowej po ten pliczek.&lt;br&gt;
Do tego tworzymy tez aplikacje dedykowane dla klienta, np. weryfikującą BIK, do obsługi sprzedaży polis.&lt;/p&gt;

&lt;p&gt;Co ważne, klientów ciągle przybywa, bo działamy w ciągle niszowym obszarze i mamy już swoją renomę wśród dealerów, a ci polecają nas jeden drugiemu&amp;nbsp;&lt;img alt=&quot;smiley&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/regular_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;smiley&quot;&gt;&lt;br&gt;
&lt;br&gt;
Na co dzień utrzymujemy, rozszerzamy / dodajemy&amp;nbsp;raporty&amp;nbsp;i dostosowujemy aplikację do potrzeb klienta. Ale z racji, że zaczęła powstawać w okresie startupu firmy, chodzi na PHP5.6,&amp;nbsp;ma sporo kodu legacy i&amp;nbsp;odejdzie na zasłużoną emeryturę. To czasem nam generuje potrzebę postawienia jakiegoś kontenera Dockerowego.&lt;br&gt;
Aktualnie budujemy aplikację od nowa przy użyciu Symfony i planujemy ją ukończyć w okolicach połowy przyszłego roku.&lt;br&gt;
W nowym projekcie pracujemy z PHP8+, MySQL, Doctrine (o tym niżej), Twig, JS i&amp;nbsp;jQuery, Bootstrap i&amp;nbsp;Bootstrap Tables, GIT.&lt;br&gt;
&lt;br&gt;
Jeśli chodzi o ORM mamy tu pragmatyczne podejście. Są obszary, gdzie nie chcemy np. pobieranie konkretnych danych z baz klientów, a w innych&amp;nbsp;się nam nie sprawdził,&amp;nbsp;np. masowy zapis pobranych danych. Ale sprawdza się dobrze przy obsłudze pobierania&amp;nbsp;z jednego&amp;nbsp;API&amp;nbsp;&lt;img alt=&quot;laugh&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/teeth_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;laugh&quot;&gt;&amp;nbsp;W samej aplikacji też jest to tryb mieszany. Nieraz łączymy dane z rożnych tabel i tutaj nam po prostu wygodnie zrobić to SQLem z uwagi na pełną kontrolę nad tym, co wyciągamy. A klient potrafi zaskoczyć&amp;nbsp;&lt;img alt=&quot;wink&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/wink_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;wink&quot;&gt;&lt;br&gt;
&lt;br&gt;
Ja aktualnie pracuję tu ponad 3 lata. Pasuje mi atmosfera i to, że pracodawca ma normalne, ludzkie podejście. Mam wpływ na projekt i&amp;nbsp;technologie. Uczestniczę w omawianiu z klientami wymagań, co do ich specyficznych potrzeb czy dedykowanych aplikacji.&amp;nbsp;W nowym projekcie pracuję nad hurtownią danych.&lt;/p&gt;</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2053/m%C5%82odszy-programista-php&amp;show=2056#a2056</guid>
<pubDate>Sat, 09 Nov 2024 08:20:29 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: WEBINAR - Rekrutacja Junior Developera w 2024 roku - rozmowa z Karolem i Łukaszem</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2040/webinar-rekrutacja-junior-developera-rozmowa-karolem-%C5%82ukaszem&amp;show=2051#a2051</link>
<description>Bardzo ciekawe seminarium, dzięki któremu człowiek dostaje nowej energii do nauki i chęci do jeszcze szybciej ukończonego kursu. Fajnie, że są to ludzie, którzy wykonywali poprzednio podobne profesje i można porównać np zarobki w poprzedniej pracy do obecnej w IT :)</description>
<category>Motywacja</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2040/webinar-rekrutacja-junior-developera-rozmowa-karolem-%C5%82ukaszem&amp;show=2051#a2051</guid>
<pubDate>Mon, 21 Oct 2024 09:58:41 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: datepicker JavaScript</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2033/datepicker-javascript&amp;show=2034#a2034</link>
<description>A jak poprawisz literówkę w ostatniej linijce ? Zaczyna się od DATApicker zamiast datepicker</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2033/datepicker-javascript&amp;show=2034#a2034</guid>
<pubDate>Thu, 12 Sep 2024 16:31:53 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: [TESTER] QA w firmie z obszaru bankowości</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2023/tester-qa-w-firmie-z-obszaru-bankowo%C5%9Bci&amp;show=2025#a2025</link>
<description>Dzięki Szymonie za ogłoszenie:)</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2023/tester-qa-w-firmie-z-obszaru-bankowo%C5%9Bci&amp;show=2025#a2025</guid>
<pubDate>Fri, 06 Sep 2024 09:59:35 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Kurs PHP odc. 6: Wysyłanie maili z poziomu kodu. Funkcja mail, PHPMailer</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2015/kurs-php-wysy%C5%82anie-maili-poziomu-kodu-funkcja-mail-phpmailer&amp;show=2018#a2018</link>
<description>Hej Marcin,&lt;br /&gt;
&lt;br /&gt;
Wracam po urlopie. Jak obecnie wygląda sytuacja u Ciebie z tym problemem?&lt;br /&gt;
&lt;br /&gt;
Jeśli masz go nadal to zobacz czy czasem nie masz antywirusa lub firewalla, który blokuje Ci połączenie. Warto &amp;nbsp;wyłączyć go na chwilę i spróbować ponownie.&lt;br /&gt;
&lt;br /&gt;
Mogę też udostępnić Ci miejsce na naszym serwerze i tam możesz zobaczyć czy ten skrypt będzie działał jak należy.</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2015/kurs-php-wysy%C5%82anie-maili-poziomu-kodu-funkcja-mail-phpmailer&amp;show=2018#a2018</guid>
<pubDate>Thu, 22 Aug 2024 16:28:31 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Rozmowa Online Z Oskarem Białek - Team Leaderem i C# .NET Senior Developerem</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2010/rozmowa-online-oskarem-bia%C5%82ek-leaderem-senior-developerem&amp;show=2016#a2016</link>
<description>&lt;p&gt;Fajna rozmowa, szkoda, że taka krótka (tylko 3 godziny) bo jeszcze dużo tematów by można poruszyć. Rozmowa była przede wszystkim o:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;jak obecnie wygląda rynek,&lt;/li&gt;
	&lt;li&gt;jakie są wymagania na juniora i co prezentuje nasza konkurencja,&lt;/li&gt;
	&lt;li&gt;jak wygląda rekrutacja, w każdym razie u Oskara&lt;/li&gt;
	&lt;li&gt;czy studia mają duży wpływ,&lt;/li&gt;
	&lt;li&gt;czego się spodziewać na początku pracy,&lt;/li&gt;
	&lt;li&gt;jak pisać cv,&lt;/li&gt;
	&lt;li&gt;na co mogą zwracać uwagę rekruterzy, a przynajmniej na co zwraca uwagę Oskar,&lt;/li&gt;
	&lt;li&gt;preferowanym profilu pracownika i umiejętnościach miękkich&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mniej o technologii - może uda się w zorganizować jeszcze jedną?&lt;/p&gt;</description>
<category>Motywacja</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2010/rozmowa-online-oskarem-bia%C5%82ek-leaderem-senior-developerem&amp;show=2016#a2016</guid>
<pubDate>Fri, 09 Aug 2024 17:32:32 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Książka adresowa obiektowo -error: expected class-name before</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2006/ksi%C4%85%C5%BCka-adresowa-obiektowo-error-expected-class-name-before&amp;show=2007#a2007</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;Może brakuje odpowiednich nagłówków na początku w plikach PlikTekstowy albo są błędnie zapisane. Czyli w pliku .h powinnaś mieć:&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
#ifndef PLIKTEKSTOWY_H
#define PLIKTEKSTOWY_H&lt;/pre&gt;

&lt;p&gt;A w .cpp:&lt;/p&gt;

&lt;p&gt;#include &quot;PlikTekstowy.h&quot;&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2006/ksi%C4%85%C5%BCka-adresowa-obiektowo-error-expected-class-name-before&amp;show=2007#a2007</guid>
<pubDate>Mon, 08 Jul 2024 20:48:48 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: div wewnątrz hiperłącza</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2004/div-wewn%C4%85trz-hiper%C5%82%C4%85cza&amp;show=2005#a2005</link>
<description>&lt;p style=&quot;text-align: justify;&quot;&gt;Może nie do końca precyzyjnie to opisałam - nie chodzi o to, że stricte div się zmniejsza, bo jak najadę myszką na ten brakujący element pod tym niebieskim blokiem to też mogę w to kliknąć i otworzy nową kartę, ale właśnie ucina ten niebieski kolor ;)&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2004/div-wewn%C4%85trz-hiper%C5%82%C4%85cza&amp;show=2005#a2005</guid>
<pubDate>Mon, 08 Jul 2024 08:08:28 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: SPOJ - Lamacz GG</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2001/spoj-lamacz-gg&amp;show=2002#a2002</link>
<description>&lt;p&gt;Jeżeli program działa i zwraca co trzeba to where problem ? Wyglada na fajnie, przemyślanie napisany a jednocześnie kod jest czytelny i prosty - świetna robota.&lt;/p&gt;

&lt;p&gt;Zostawiam jako ciekawostkę:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;unordered_map&amp;gt;
#include &amp;lt;string_view&amp;gt;
#include &amp;lt;stdexcept&amp;gt;

void validateLength(const std::string_view input) {
    if (input.size() != 20) {
        throw std::invalid_argument(&quot;Password must contain exactly 20 characters.&quot;);
    }
}

void validateCharacters(const std::string_view input, const std::unordered_map&amp;lt;char, size_t&amp;gt;&amp;amp; alphabetMap) {
    for (char c : input) {
        if (alphabetMap.find(c) == alphabetMap.end()) {
            throw std::invalid_argument(&quot;Password contains invalid characters. Only 'A' to 'P' are allowed.&quot;);
        }
    }
}

void decodeGG(const std::string_view input) {
    constexpr std::string_view alphabet = &quot;ABCDEFGHIJKLMNOP&quot;;
    
    std::unordered_map&amp;lt;char, size_t&amp;gt; alphabetMap;
    for (size_t index = 0; index &amp;lt; alphabet.size(); ++index) {
        alphabetMap[alphabet[index]] = index;
    }

    validateLength(input);
    validateCharacters(input, alphabetMap);

    for (size_t index = 0; index &amp;lt; input.size(); index += 2) {
        size_t firstCharValue = alphabetMap[input[index]];
        size_t secondCharValue = alphabetMap[input[index + 1]] * 16;
        size_t result = firstCharValue + secondCharValue;
        
        std::cout &amp;lt;&amp;lt; static_cast&amp;lt;char&amp;gt;(result);
    }
    std::cout &amp;lt;&amp;lt; '\n';
}

int main() {
    std::string password{};
    while (std::cin &amp;gt;&amp;gt; password) {
        try {
            decodeGG(password);
        } catch (const std::invalid_argument&amp;amp; e) {
            std::cerr &amp;lt;&amp;lt; &quot;Error: &quot; &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; '\n';
        }
    }
    return 0;
}
&lt;/pre&gt;

&lt;p&gt;EDIT - Twój program dla przypadku nr 3 na SPOJ zwraca `obozoxisko` - zobacz, czy poprawnie mapujesz literki.&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2001/spoj-lamacz-gg&amp;show=2002#a2002</guid>
<pubDate>Mon, 01 Jul 2024 20:20:18 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Rozmowa Online Z Danielem Rudnik - specjalistą od CYBERBEZPIECZEŃSTWA</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1996/rozmowa-online-danielem-specjalist%C4%85-cyberbezpiecze%C5%84stwa&amp;show=1999#a1999</link>
<description>Cześć, moje pytanie jest takie: &lt;br /&gt;
&lt;br /&gt;
Jak wygląda praca z prespektywy zespołu? Ilu osobowe są zespoły, które pracują nad poszczególnymi projektami? Jak wygląda podział obowiązków? Jak w praktyce wygląda przeskakiwanie pomiędzy różnym projektami? Wykorzystujecie metodykę pracy SCRUM / AGILE?&lt;br /&gt;
&lt;br /&gt;
Podsumowując moje ogólne pytanie dotyczy nakreślenia jak w praktyce wygląda praca nad poszczególnymi projektami?</description>
<category>Motywacja</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1996/rozmowa-online-danielem-specjalist%C4%85-cyberbezpiecze%C5%84stwa&amp;show=1999#a1999</guid>
<pubDate>Thu, 13 Jun 2024 07:49:25 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: SPOJ PTROL-ROL</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1993/spoj-ptrol-rol&amp;show=1994#a1994</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;Mi się zdaje, że problem leży w funkcji przesunElementyTablicy . Bo zauważ, że najpierw przesuwasz wartości tablicy - tablica[i], a potem ostatni element zamieniasz na pierwszy, ale to jest pierwszy po tym przesunięciu, dlatego zamiast 1 masz 2. Więc może najpierw przed przesunięciem zadeklaruj pierwszą wartość.&lt;/p&gt;

&lt;p&gt;Można to np. tak zapisać:&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
int pierwszyElement = tablica[0]; 
    for (int i = 0; i &amp;lt; rozmiar - 1; i++)
    {
        tablica[i] = tablica[i + 1]; 
    }
    tablica[rozmiar - 1] = pierwszyElement;&lt;/pre&gt;

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

&lt;p&gt;Na marginesie, tutaj po usunięciu tablicy, przypisuje się jej wartość NULL.&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1993/spoj-ptrol-rol&amp;show=1994#a1994</guid>
<pubDate>Wed, 05 Jun 2024 13:10:20 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Dynamiczna obsługa tras na frameworku Express.js</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1989/dynamiczna-obs%C5%82uga-tras-na-frameworku-express-js&amp;show=1990#a1990</link>
<description>&lt;p&gt;Cześć, możesz wykorzystać react-router do obsługi nawigacji wg URL po stronie użytkownika.&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
import React from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import Home from './components/Home';
import About from './components/About';
import Posts from './components/Posts';
import CreatePost from './components/CreatePost';

function App() {
  return (
    &amp;lt;Router&amp;gt;
      &amp;lt;Switch&amp;gt;
        &amp;lt;Route exact path=&quot;/&quot; component={Home} /&amp;gt;
        &amp;lt;Route path=&quot;/about&quot; component={About} /&amp;gt;
        &amp;lt;Route path=&quot;/posts&quot; component={Posts} /&amp;gt;
        &amp;lt;Route path=&quot;/create-post&quot; component={CreatePost} /&amp;gt;
        &amp;lt;Route path=&quot;*&quot; component={NotFound} /&amp;gt;
      &amp;lt;/Switch&amp;gt;
    &amp;lt;/Router&amp;gt;
  );
}

export default App;&lt;/pre&gt;

&lt;p&gt;i po stronie express.js:&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
import express from &quot;express&quot;;
import bodyParser from &quot;body-parser&quot;;
import fs from &quot;fs&quot;;
import path from &quot;path&quot;;

const app = express();
const port = 3000;

var posts = [];
var paths = [];

app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'client/build')));

app.get(&quot;/&quot;, (req, res) =&amp;gt; {
  res.render(&quot;index.ejs&quot;);
});

for (var i = 0; i &amp;lt; posts.length; i++) {
  var path = paths[i];
  app.get(`/${path}`, (req, res) =&amp;gt; {
    res.render(`${path}.ejs`, { article: posts[i] });
  });
}

app.get(&quot;/posts&quot;, (req, res) =&amp;gt; {
  res.render(&quot;posts.ejs&quot;, { posts: posts });
});

app.post(&quot;/create-post&quot;, (req, res) =&amp;gt; {
  const article = {
    title: req.body[&quot;title&quot;],
    date: new Date().toLocaleDateString(&quot;en-US&quot;, {
      year: &quot;numeric&quot;,
      month: &quot;long&quot;,
      day: &quot;2-digit&quot;,
    }),
    htmlContent: req.body[&quot;content&quot;],
  };
  var path = article.title.replaceAll(&quot; &quot;, &quot;&quot;).toLowerCase();
  var data = `&amp;lt;%- include(&quot;partials/template.ejs&quot;) %&amp;gt;`;

  posts.push(article);
  paths.push(path);
  fs.writeFile(`./views/${path}.ejs`, data, (err) =&amp;gt; {
    if (err) throw err;
    console.log(&quot;The file has been saved!&quot;);
  });

  res.render(&quot;posts.ejs&quot;, { posts: posts });
});

app.get(&quot;/create-post&quot;, (req, res) =&amp;gt; {
  res.render(&quot;create-post.ejs&quot;);
});

app.get('*', (req, res) =&amp;gt; {
  res.sendFile(path.join(__dirname, 'client/build', 'index.html'));
});

app.listen(port, () =&amp;gt; {
  console.log(`Server running on port ${port}.`);
});&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1989/dynamiczna-obs%C5%82uga-tras-na-frameworku-express-js&amp;show=1990#a1990</guid>
<pubDate>Mon, 03 Jun 2024 12:33:13 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: id użytkowników w pliku xml</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1987/id-u%C5%BCytkownik%C3%B3w-w-pliku-xml&amp;show=1988#a1988</link>
<description>Spróbuj użyć debuggera - on najlepiej pokaże Ci jak działa program i gdzie leży błąd.</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1987/id-u%C5%BCytkownik%C3%B3w-w-pliku-xml&amp;show=1988#a1988</guid>
<pubDate>Sat, 01 Jun 2024 20:54:54 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: C++ SPOJ Glutton - Obżartuchy</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1984/c-spoj-glutton-ob%C5%BCartuchy&amp;show=1985#a1985</link>
<description>&lt;p&gt;W ostaniej linijce powinno być:&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
 cout &amp;lt;&amp;lt; result &amp;lt;&amp;lt; endl;&lt;/pre&gt;

&lt;p&gt;Hope will help.&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1984/c-spoj-glutton-ob%C5%BCartuchy&amp;show=1985#a1985</guid>
<pubDate>Mon, 27 May 2024 12:48:45 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: SPOJ - nie wykrywa zatwierdzonych programow.</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1976/spoj-nie-wykrywa-zatwierdzonych-programow&amp;show=1979#a1979</link>
<description>Potwierdzam, że nie działa zliczanie.&lt;br /&gt;
Jeśli chcesz wiedzieć, które zadania masz zaakceptowane, to wciąż działa segregowanie w odpowiedniej kategorii według kolumny S na stronie z listami zadań (łatwe, średnie itd.).</description>
<category>Pozostałe tematy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1976/spoj-nie-wykrywa-zatwierdzonych-programow&amp;show=1979#a1979</guid>
<pubDate>Tue, 21 May 2024 06:10:08 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Książka adresowa obiektowo - brak zapisanych zmian w pliku</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1972/ksi%C4%85%C5%BCka-adresowa-obiektowo-brak-zapisanych-zmian-w-pliku&amp;show=1973#a1973</link>
<description>Problem leży w tym, jak otwierasz plik - zdaje się, że oprócz ios::out powinno być również ios::in.&lt;br /&gt;
&lt;br /&gt;
Hope will help.</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1972/ksi%C4%85%C5%BCka-adresowa-obiektowo-brak-zapisanych-zmian-w-pliku&amp;show=1973#a1973</guid>
<pubDate>Mon, 13 May 2024 16:39:12 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Z Mechanika do .Net Developera</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1846/z-mechanika-do-net-developera&amp;show=1967#a1967</link>
<description>Gratulacje Karol! Jak Ci się podoba programowanie po kolejnych 3 miesiącach. U mnie już okrągłe 32 miesiące ;) ale w PHP,Ja,MSSQL ;) A początki przed pierwszą praca programisty były podobne jak u Ciebie :) Pozdrawiam</description>
<category>Chwalimy się</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1846/z-mechanika-do-net-developera&amp;show=1967#a1967</guid>
<pubDate>Fri, 10 May 2024 18:40:59 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Przeliczanie kursu walut - wyświetla wiele miejsc po przecinku</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1964/przeliczanie-kursu-walut-wy%C5%9Bwietla-wiele-miejsc-przecinku&amp;show=1965#a1965</link>
<description>&lt;p&gt;Nie bardzo rozumiem, co chcesz osiągnąć, ale może trafiłem:&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;sstream&amp;gt;
#include &amp;lt;iomanip&amp;gt;

std::string konwersjaDoubleNaString(double liczba) {
    std::ostringstream ss;
    ss &amp;lt;&amp;lt; std::fixed &amp;lt;&amp;lt; std::setprecision(2) &amp;lt;&amp;lt; liczba;
    return ss.str();
}

std::string konwertujKwoteNaEuro(std::string &amp;amp;zdanie, size_t pozycjaPocz, size_t pozycjaKon) {
    const double EUR = 4.12;
    double kwotaPLN = std::stod(zdanie.substr(pozycjaPocz, pozycjaKon - pozycjaPocz + 1));
    double kwotaEUR = kwotaPLN / EUR;
    zdanie.replace(pozycjaPocz, pozycjaKon - pozycjaPocz + 1, konwersjaDoubleNaString(kwotaEUR));
    return zdanie;
}

std::string zamienPLNnaEUR(std::string &amp;amp;zdanie) {
    size_t found = zdanie.find(&quot;PLN&quot;);
    while (found != std::string::npos) {
        zdanie.replace(found, 3, &quot;EUR&quot;);
        found = zdanie.find(&quot;PLN&quot;, found + 3);
    }
    return zdanie;
}

std::string przeliczNaEuroPoKursie(std::string &amp;amp;zdanie) {
    size_t pozycjaPocz = 0, pozycjaKon = 0;
    for (size_t i = 0; i &amp;lt; zdanie.length(); i++) {
        if (isdigit(zdanie[i]) != 0 &amp;amp;&amp;amp; !isdigit(zdanie[i - 1]) &amp;amp;&amp;amp; !isdigit(zdanie[i - 2])) {
            pozycjaPocz = i;
        }
        if (isdigit(zdanie[i]) != 0 &amp;amp;&amp;amp; !isdigit(zdanie[i + 1]) &amp;amp;&amp;amp; !isdigit(zdanie[i + 2])) {
            pozycjaKon = i;
            konwertujKwoteNaEuro(zdanie, pozycjaPocz, pozycjaKon);
            i = pozycjaKon + 10;
            pozycjaPocz = 0;
            pozycjaKon = 0;
        }
    }
    return zamienPLNnaEUR(zdanie);
}

int main() {
    std::string zdanie;
    std::getline(std::cin, zdanie);
    std::cout &amp;lt;&amp;lt; std::endl &amp;lt;&amp;lt; przeliczNaEuroPoKursie(zdanie);
    return 0;
}
&lt;/pre&gt;

&lt;p&gt;Jednocześnie podobny efekt można uzyskać znacznie skracając logikę Twojego kodu:&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;regex&amp;gt;
#include &amp;lt;sstream&amp;gt;
#include &amp;lt;iomanip&amp;gt;
#include &amp;lt;stdexcept&amp;gt;

constexpr double EXCHANGE_RATE = 4.12;

double convertPLNtoEUR(double amountPLN) {
    if (amountPLN &amp;lt; 0) {
        throw std::invalid_argument(&quot;PLN amount cannot be negative.&quot;);
    }
    return amountPLN / EXCHANGE_RATE;
}

std::string convertPLNtoEURString(const std::string&amp;amp; input) {
    static const std::regex regexPLN(R&quot;((\d+(\.\d+)?)PLN)&quot;);
    std::smatch match;
    if (std::regex_search(input, match, regexPLN)) {
        try {
            double amountPLN = std::stod(match[1]);
            double amountEUR = convertPLNtoEUR(amountPLN);
            std::ostringstream ss;
            ss &amp;lt;&amp;lt; std::fixed &amp;lt;&amp;lt; std::setprecision(2) &amp;lt;&amp;lt; amountEUR &amp;lt;&amp;lt; &quot;EUR&quot;;
            return ss.str();
        } catch (const std::invalid_argument&amp;amp; e) {
            return e.what();
        }
    }
    return &quot;Invalid input.&quot;;
}

int main() {
    std::string input{};
    std::getline(std::cin, input);
    try {
        std::cout &amp;lt;&amp;lt; convertPLNtoEURString(input) &amp;lt;&amp;lt; std::endl;
    } catch (const std::exception&amp;amp; e) {
        std::cerr &amp;lt;&amp;lt; &quot;Error: &quot; &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; std::endl;
    }
    return 0;
}
&lt;/pre&gt;

&lt;p&gt;Zostawiam jako ciekawostkę.&lt;br&gt;
Hope will help.&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1964/przeliczanie-kursu-walut-wy%C5%9Bwietla-wiele-miejsc-przecinku&amp;show=1965#a1965</guid>
<pubDate>Tue, 07 May 2024 20:36:41 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Oferty pracy - Jr Java Dev &amp; Jr Fe Dev</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1961/oferty-pracy-jr-java-dev-%26-jr-fe-dev&amp;show=1962#a1962</link>
<description>Dzięki Danielu, jednak u mnie te linki nie działają. Pojawia się błąd 404. Sprawdzałem na dwóch przeglądarkach i smartfonie.</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1961/oferty-pracy-jr-java-dev-%26-jr-fe-dev&amp;show=1962#a1962</guid>
<pubDate>Tue, 23 Apr 2024 12:53:20 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: undefined reference</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1957/undefined-reference&amp;show=1958#a1958</link>
<description>Chyba brakuje PlikZAdresatami::PobierzId….</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1957/undefined-reference&amp;show=1958#a1958</guid>
<pubDate>Tue, 16 Apr 2024 15:59:51 +0000</pubDate>
</item>
<item>
<title>Zadanie FLAMASTER - wersja odwrócona</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1944/zadanie-flamaster-wersja-odwr%C3%B3cona</link>
<description>Witajcie, proszę o pomoc z kodem. :) Próbowałam pisać ten kod zgodnie ze wskazówkami z zadania, ale wciąż &amp;nbsp;nie wiem dlaczego wyskakują mi takie dziwne wyniki i co robię nie tak?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
int konwersjaStringNaInt (string liczbaWyraz)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int liczba = stoi(liczbaWyraz);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return liczba;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string odtworzWyraz(string skroconyWyraz)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string odtworzonyWyraz, powtarzajacySieZnak, liczbaWyraz;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int dlugosc = skroconyWyraz.length();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int pozycja = 0;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i = 0; i &amp;lt; dlugosc ; i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (isdigit(skroconyWyraz[i])) // Jeśli znak jest cyfrą&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;powtarzajacySieZnak = skroconyWyraz [i-1];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (isdigit(skroconyWyraz[i+1]))&lt;br /&gt;
&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;br /&gt;
&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;liczbaWyraz += skroconyWyraz [i+1];&lt;br /&gt;
&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;pozycja ++ ;&lt;br /&gt;
&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;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// petla while zakonczy dzialanie gdy trafi na litere&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int iloscPowtorzenZnaku = konwersjaStringNaInt(liczbaWyraz);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int j = 1; j &amp;lt; iloscPowtorzenZnaku; j++)&lt;br /&gt;
&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;br /&gt;
&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;odtworzonyWyraz += powtarzajacySieZnak;&lt;br /&gt;
&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;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; powtarzajacySieZnak;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;liczbaWyraz = '0';&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return odtworzonyWyraz;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string skroconyWyraz;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Podaj skrocony wyraz: &amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cin &amp;gt;&amp;gt; skroconyWyraz;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Odtworzony wyraz: &amp;quot; &amp;lt;&amp;lt; odtworzWyraz(skroconyWyraz) &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam ciepło&lt;br /&gt;
&lt;br /&gt;
Paulina :)</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1944/zadanie-flamaster-wersja-odwr%C3%B3cona</guid>
<pubDate>Wed, 03 Apr 2024 18:12:05 +0000</pubDate>
</item>
<item>
<title>'PlikZAdresatami' does not name a type</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1933/plikzadresatami-does-not-name-a-type</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;Mam taki błąd jak w tytule przy obiekcie PlikZAdresatami:&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
#ifndef ADRESATMENEDZER_H
#define ADRESATMENEDZER_H

#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;windows.h&amp;gt;
#include &amp;lt;fstream&amp;gt;

#include &quot;Adresat.h&quot;
#include &quot;Uzytkownik.h&quot;
#include &quot;PlikZAdresatami.h&quot;

using namespace std;

class AdresatMenedzer
{
    int idAdresata;
    int idZalogowanegoUzytkownika;
    int idOstatniegoAdresata;
    vector &amp;lt;Adresat&amp;gt; adresaci;
    vector &amp;lt;Uzytkownik&amp;gt; uzytkownicy;
    PlikZAdresatami plikZAdresatami;

    Adresat podajDaneNowegoAdresata(int idZalogowanegoUzytkownika, int idOstatniegoAdresata);

public:
    AdresatMenedzer(string nazwaPlikuZAdresatami) : plikZAdresatami(nazwaPlikuZAdresatami) {};
    void ustawIdZalogowanegoUzytkownika(int noweIdZalogowanegoUzytkownika);
    void ustawIdOstatniegoAdresata(int noweIdOstatniegoAdresata);
    int pobierzIdOstatniegoAdresata();
    int dodajAdresata();
    Adresat pobierzDaneAdresata(string daneAdresataOddzielonePionowymiKreskami);
    int pobierzIdAdresataZDanychOddzielonychPionowymiKreskami(string daneJednegoAdresataOddzielonePionowymiKreskami);
    void wyswietlWszystkichAdresatow();
    void wyswietlDaneAdresata(Adresat adresat);
};

#endif&lt;/pre&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
#ifndef PLIKZADRESATAMI_H
#define PLIKZADRESATAMI_H

#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;fstream&amp;gt;
#include &amp;lt;cstdlib&amp;gt;
#include &amp;lt;sstream&amp;gt;

#include &quot;Adresat.h&quot;
#include &quot;MetodyPomocnicze.h&quot;
#include &quot;UzytkownikMenedzer.h&quot;

using namespace std;

class PlikZAdresatami
{
    vector &amp;lt;Adresat&amp;gt; adresaci;
    string nazwaPlikuZAdresatami;
    const string nazwaPlikuTymczasowego;
    string liniaZDanymiAdresata;
    int idOstatniegoAdresata;
    string zamienDaneAdresataNaLinieZDanymiOddzielonymiPionowymiKreskami(Adresat adresat);
    void usunPlik(string nazwaPlikuTymczasowego, string nazwaPlikuZAdresatami);
    int zwrocNumerLiniiSzukanegoAdresata(int idAdresata);
    void zmienNazwePliku(string nazwaPlikuTymczasowego, string nazwaPlikuZAdresatami);

public:
    PlikZAdresatami(string NAZWAPLIKUZADRESATAMI) : nazwaPlikuZAdresatami(NAZWAPLIKUZADRESATAMI) {
        nazwaPlikuZAdresatami = &quot;Adresaci.txt&quot;;
    };
    void dopiszAdresataDoPliku(Adresat adresat);
    int wczytajAdresatowZalogowanegoUzytkownikaZPliku();
    bool czyPlikJestPusty(fstream &amp;amp;plikZAdresatami);
    fstream plikTekstowy;
};

#endif
&lt;/pre&gt;

&lt;p style=&quot;text-align:justify&quot;&gt;Analogicznie odwołuję się do innego obiektu plikZUzytkownikami i nie mam w tym przypadku takiego błędu jak z tym plikiem z adresatami. Z czego to wynika?&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1933/plikzadresatami-does-not-name-a-type</guid>
<pubDate>Tue, 02 Apr 2024 16:07:48 +0000</pubDate>
</item>
<item>
<title>Problem z zadaniem: json/javaScript/chartJS</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1924/problem-z-zadaniem-json-javascript-chartjs</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;proszę o wskazówkę jak ruszyć dalej,&lt;/p&gt;

&lt;p&gt;mam problem z zadaniem na linii json - java script:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.frontendmentor.io/challenges/expenses-chart-component-e7yJBUdjwt&quot; rel=&quot;noopener nofollow&quot; target=&quot;_blank&quot;&gt;https://www.frontendmentor.io/challenges/expenses-chart-component-e7yJBUdjwt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;pojawia się komunikat i po wielu próbach nie wiem jak sobie poradzić z tym:&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;color:#ff0000&quot;&gt;index.html:1 Access to fetch at 'file:///E:/Web%20Development%20Projects/_28_wyzwania/02_expenses-chart-component-main/data.json' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Najprostszym rozwiązaniem było wykorzystanie &quot;live server&quot; w VS Code, ale nie wyświetla on poprawnej strony, a jedynie text zawierający &quot;lorem ipsum&quot;.&lt;/p&gt;

&lt;p&gt;Link do mojego dotychczasowego zadania:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/SylwiaNowak/Expenses-chart-component&quot; rel=&quot;nofollow&quot;&gt;https://github.com/SylwiaNowak/Expenses-chart-component&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Poniżej pliki:&lt;/p&gt;

&lt;p&gt;///////////////////////////////////////////////////////////////////////// index.js /////////////////////////////////////////////////////////////////////////////////////&lt;/p&gt;

&lt;p&gt;const ctx = document.getElementById('userChart');&lt;/p&gt;

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

&lt;p&gt;fetch(&quot;data.json&quot;)&lt;/p&gt;

&lt;p&gt;.then(function(response){&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; if(response.ok==true) {&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return response.json();&lt;/p&gt;

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

&lt;p&gt;})&lt;/p&gt;

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

&lt;p&gt;.then(function(data) {&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; createChart(data, 'bar');&lt;/p&gt;

&lt;p&gt;})&lt;/p&gt;

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

&lt;p&gt;function createChart(data, type) {&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; new Chart(ctx, {&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; type: type,&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; data: {&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; labels: data.map(row =&amp;gt; row.day),&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; datasets: [{&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; label: 'Spending - Last 7 days',&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; data: data.map(row =&amp;gt; row.amount),&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; backgroundColor: [&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '#ec775f',&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '#ec775f',&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '#ec775f',&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '#ec775f',&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '#ec775f',&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '#ec775f'&lt;/p&gt;

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

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; borderRadius: 5,&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; borderWidth: 1&lt;/p&gt;

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

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

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; options: {&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; scales: {&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y: {&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; beginAtZero: true&lt;/p&gt;

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

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

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; maintainAspectRatio: false&lt;/p&gt;

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

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

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;////////////////////////////////////////////////////// data.json ////////////////////////////////////////////////////////////////////////////////////////////////&lt;/p&gt;

&lt;p&gt;[&lt;/p&gt;

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

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;day&quot;: &quot;mon&quot;,&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;amount&quot;: 17.45&lt;/p&gt;

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

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

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;day&quot;: &quot;tue&quot;,&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;amount&quot;: 34.91&lt;/p&gt;

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

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

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;day&quot;: &quot;wed&quot;,&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;amount&quot;: 52.36&lt;/p&gt;

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

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

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;day&quot;: &quot;thu&quot;,&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;amount&quot;: 31.07&lt;/p&gt;

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

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

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;day&quot;: &quot;fri&quot;,&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;amount&quot;: 23.39&lt;/p&gt;

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

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

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;day&quot;: &quot;sat&quot;,&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;amount&quot;: 43.28&lt;/p&gt;

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

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

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;day&quot;: &quot;sun&quot;,&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &quot;amount&quot;: 25.48&lt;/p&gt;

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

&lt;p&gt;]&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1924/problem-z-zadaniem-json-javascript-chartjs</guid>
<pubDate>Mon, 25 Mar 2024 15:16:55 +0000</pubDate>
</item>
<item>
<title>WEBINAR - Kryzys w branży IT i sztuczna inteligencja, czyli czy jest sens nadal uczyć się programowania?</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1920/webinar-kryzys-bran%C5%BCy-sztuczna-inteligencja-programowania</link>
<description>&lt;p&gt;Witajcie Kochani,&lt;/p&gt;

&lt;p&gt;Poniżej umieszczam linki do nagrania z webinaru, który przeprowadziłem ze&amp;nbsp;studentami Projektu, w którym&amp;nbsp;dokładnie przyjrzeliśmy się wpływowi kryzysu&amp;nbsp;na polską branżę IT oraz wpływowi sztucznej inteligencji na ilość miejsc pracy.&lt;/p&gt;

&lt;p&gt;Przeanalizowaliśmy raporty i statystyki odnośnie branży IT oraz portale z ogłoszeniami o pracę, aby dojść do tego jak wygląda rzeczywistość.&lt;/p&gt;

&lt;p&gt;Na końcu doszliśmy do wniosku, że teraz jest najlepszy czas, aby wejść do branży IT:)&lt;/p&gt;

&lt;p&gt;Miłego oglądania:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://vimeo.com/przyszlyprogramista/webinar-kryzys&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;vimeo.com/przyszlyprogramista/webinar-kryzys&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://vimeo.com/przyszlyprogramista/webinar-sztuczna-inteligencja&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;vimeo.com/przyszlyprogramista/webinar-sztuczna-inteligencja&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jeśli chcesz, to możesz&amp;nbsp;śmiało wysyłać te linki do swoich znajomych/rodziny, aby pokazać im jak wygląda ta sytuacja w rzeczywistości, a nie przez pryzmat mediów, których głównym celem jest generowanie jak największego&amp;nbsp;ruchu na swoich stronach przez wzbudzanie kontrowersji.&lt;/p&gt;

&lt;p&gt;Zapraszam do dyskusji w komentarzach. Napisz jakie są Twoje przemyślenia po obejrzeniu webinaru.&lt;/p&gt;

&lt;p&gt;P.S.&lt;br&gt;
Poniżej zamieszczam link do programu nauki często pokazywanego&amp;nbsp;na filmie:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://projekt.przyszlyprogramista.pl/pliki/ELITARNY_PROJEKT_PP-PROGRAM_NAUKI.pdf&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;projekt.przyszlyprogramista.pl/pliki/ELITARNY_PROJEKT_PP-PROGRAM_NAUKI.pdf&lt;/a&gt;&lt;/p&gt;</description>
<category>Rozmowy o pracę</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1920/webinar-kryzys-bran%C5%BCy-sztuczna-inteligencja-programowania</guid>
<pubDate>Sat, 23 Mar 2024 16:12:29 +0000</pubDate>
</item>
<item>
<title>pobieranie id zalogowanego użytkownika</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1910/pobieranie-id-zalogowanego-u%C5%BCytkownika</link>
<description>&lt;p style=&quot;text-align:justify&quot;&gt;Hej,&lt;/p&gt;

&lt;p style=&quot;text-align:justify&quot;&gt;Mam kolejny problem z książką adresową.&amp;nbsp; Po skompilowaniu programu, zamiast menu głównego, gdzie powinna być opcja rejestracji użytkownika itd., pojawia się menu użytkownika, nawet jak żaden nie jest zarejestrowany. Na pewno wynika to z jakiegoś błędu z pobieraniem id zalogowanego użytkownika, bo idZalogowanegoUzytkownika nie zwraca mi żadnej wartości. Nie jestem pewna, czy dobrze pobieram to id w tej funkcji..:&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
int UzytkownikMenedzer::logowanieUzytkownika()
{
    Uzytkownik uzytkownik;
    string login = &quot;&quot;;
    string haslo = &quot;&quot;;

    cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; &quot;Podaj login: &quot;;
    login = MetodyPomocnicze::wczytajLinie();
    uzytkownik.ustawLogin(login);

    vector &amp;lt;Uzytkownik&amp;gt;::iterator itr = uzytkownicy.begin();
    while (itr != uzytkownicy.end())
    {
        if (itr -&amp;gt; pobierzLogin() == login)
        {
            for (int iloscProb = 3; iloscProb &amp;gt; 0; iloscProb--)
            {
                cout &amp;lt;&amp;lt; &quot;Podaj haslo. Pozostalo prob: &quot; &amp;lt;&amp;lt; iloscProb &amp;lt;&amp;lt; &quot;: &quot;;
                haslo = MetodyPomocnicze::wczytajLinie();
                uzytkownik.ustawHaslo(haslo);

                if (itr -&amp;gt; pobierzHaslo() == haslo)
                {
                    cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; &quot;Zalogowales sie.&quot; &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;
                    system(&quot;pause&quot;);
                    return pobierzIdZalogowanegoUzytkownika();
                }
            }
            cout &amp;lt;&amp;lt; &quot;Wprowadzono 3 razy bledne haslo.&quot; &amp;lt;&amp;lt; endl;
            system(&quot;pause&quot;);
            return 0;
        }
        itr++;
    }
    cout &amp;lt;&amp;lt; &quot;Nie ma uzytkownika z takim loginem&quot; &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;
    system(&quot;pause&quot;);
    return 0;
}&lt;/pre&gt;

&lt;p&gt;Chciałam to na początku zapisać tak:&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
return itr -&amp;gt; pobierzIdZalogowanegoUzytkownika(),&lt;/pre&gt;

&lt;p style=&quot;text-align:justify&quot;&gt;ale wtedy pojawiał się błąd. pobierzIdZalogowanegoUzytkownika() jest zadeklarowana w klasie UzytkownikMenedzer jako publiczna.&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1910/pobieranie-id-zalogowanego-u%C5%BCytkownika</guid>
<pubDate>Thu, 21 Mar 2024 17:03:27 +0000</pubDate>
</item>
<item>
<title>tworzenie obiektu klasy w funkcji main</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1900/tworzenie-obiektu-klasy-w-funkcji-main</link>
<description>&lt;p style=&quot;text-align:justify&quot;&gt;Hej,&lt;/p&gt;

&lt;p style=&quot;text-align:justify&quot;&gt;Pracuję nad zrozumieniem programowania obiektowego i podczas tworzenia książki adresowej pojawił mi się pewien błąd. Nie rozumiem z czego on wynika i może ktoś mi to wytłumaczy.. . W funkcji main utworzyłam obiekt klasy UzytkownikMenedzer, żeby móc wywołać funkcję wybierzOpcjeZMenuGlownego(), bo znajduje się ona w innym pliku w klasie UzytkownikMenedzer. Tak wygląda ten fragment kodu:&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
include &amp;lt;iostream&amp;gt;

#include &quot;KsiazkaAdresowa.h&quot;
#include &quot;UzytkownikMenedzer.h&quot;

using namespace std;

int main()
{
    vector &amp;lt;Uzytkownik&amp;gt; uzytkownicy;
    KsiazkaAdresowa ksiazkaAdresowa(&quot;Uzytkownicy.txt&quot;, &quot;Adresaci.txt&quot;);
    char wybor;
    UzytkownikMenedzer uzytkownikMenedzer;

    while (true)
    {
        int idZalogowanegoUzytkownika = ksiazkaAdresowa.pobierzIdZalogowanegoUzytkownika();
        if (idZalogowanegoUzytkownika == 0)
        {
            wybor = uzytkownikMenedzer.wybierzOpcjeZMenuGlownego();&lt;/pre&gt;

&lt;p&gt;I podczas próby kompilacji przy tej ostatniej linijce pojawia się taki błąd: error: no matching function for call to 'UzytkownikMenedzer::UzytkownikMenedzer()'.&lt;/p&gt;

&lt;p&gt;Dlaczego jeśli zrobimy podobnie, ale poza funkcją main, w jakimś pliku z rozszerzeniem .cpp, to ten sposób odwoływania się do funkcji z jakiejś klasy działa, a w funkcji głównej już nie??&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1900/tworzenie-obiektu-klasy-w-funkcji-main</guid>
<pubDate>Sat, 16 Mar 2024 17:21:40 +0000</pubDate>
</item>
<item>
<title>Oferta pracy - junior Java Dev</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1896/oferta-pracy-junior-java-dev</link>
<description>&lt;p&gt;Firma w której pracuje moja żona, poszukuje juniora, który umie w Jave i inne Springi czy tam Hibernejty. Ponizej link do oferty&lt;/p&gt;

&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.coi.gov.pl/oferty-pracy#/oferta/2865029&quot;&gt;https://www.coi.gov.pl/oferty-pracy#/oferta/2865029&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Powodzenia !&lt;/p&gt;</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1896/oferta-pracy-junior-java-dev</guid>
<pubDate>Fri, 15 Mar 2024 16:11:07 +0000</pubDate>
</item>
<item>
<title>Aplikacja budżetowa - błąd w konstruktorze</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1893/aplikacja-bud%C5%BCetowa-b%C5%82%C4%85d-w-konstruktorze</link>
<description>&lt;p&gt;Cześć,&lt;br&gt;
&lt;br&gt;
Podczas pisania aplikacji budżetowej w C++ napotkałem ostatnio następujący problem z konstruktorem.&lt;br&gt;
Dodam że wcześniej przy zapisie do pliku tylko wpływów aplikacja działała bez zarzutów a błąd pojawił się przy jej rozszerzeniu o plik wydatków (expenses).&lt;/p&gt;

&lt;p&gt;Tutaj dodaje zrzut ekranu błędu:&lt;br&gt;
&lt;img alt=&quot;&quot; src=&quot;https://ibb.co/qYWQYK1&quot;&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://ibb.co/qYWQYK1&quot;&gt;https://ibb.co/qYWQYK1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A tutaj link do github-a z całym kodem:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/KamKriKoz/BudgetApp&quot;&gt;https://github.com/KamKriKoz/BudgetApp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pozdrawiam&amp;nbsp;&lt;br&gt;
Kamil&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1893/aplikacja-bud%C5%BCetowa-b%C5%82%C4%85d-w-konstruktorze</guid>
<pubDate>Wed, 13 Mar 2024 17:09:38 +0000</pubDate>
</item>
<item>
<title>Zadanie SPOJ MWP2_1E - Szpieg - nie przyjęto rozwiązania</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1888/zadanie-spoj-mwp2_1e-szpieg-nie-przyj%C4%99to-rozwi%C4%85zania</link>
<description>&lt;p&gt;Hej, mogę liczyć na podpowiedź? Mimo zastosowania wskazówek z kursu, spoj nie przyjmuje rozwiązania zadania -&amp;nbsp;Szpieg.&amp;nbsp;Ideone działa bez zarzutu. Byłabym wdzięczna za podpowiedź. Tu zadanie:&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;https://pl.spoj.com/problems/MWP2_1E/&quot;&gt;https://pl.spoj.com/problems/MWP2_1E/&lt;/a&gt;&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

bool porownajWyrazy(const string &amp;amp;a, const string &amp;amp;b)
{
    return a[0] &amp;lt; b[0];
}
vector&amp;lt;string&amp;gt; podajPojedynczeWyrazy()
{
    string wyraz = &quot;&quot;;
    vector&amp;lt;string&amp;gt; wyrazy;

      while (getline (cin, wyraz))
    {
        wyrazy.push_back(wyraz);
        cin.clear();
        cin.sync();
    }
    return wyrazy;
}
void wypiszWyrazy(const vector&amp;lt;string&amp;gt; &amp;amp;wyrazy)
{
    for (const string &amp;amp;wyraz : wyrazy)
    {
        cout &amp;lt;&amp;lt; wyraz &amp;lt;&amp;lt; endl;
    }
}
int main()
{
   vector&amp;lt;string&amp;gt; wyrazy;
    wyrazy = podajPojedynczeWyrazy();

    sort(wyrazy.begin(), wyrazy.end(), porownajWyrazy);
    wypiszWyrazy(wyrazy);

    return 0;
}&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1888/zadanie-spoj-mwp2_1e-szpieg-nie-przyj%C4%99to-rozwi%C4%85zania</guid>
<pubDate>Tue, 12 Mar 2024 08:20:23 +0000</pubDate>
</item>
<item>
<title>JavaScript nie rozpoznaje składni Twig - wyświetlanie wykresu kołowego</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1884/javascript-rozpoznaje-sk%C5%82adni-wy%C5%9Bwietlanie-wykresu-ko%C5%82owego</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;W trakcie wyświetlania wykresu kołowego przy podsumowaniu bilansu korzystam z narzędzi Google do wizualizacji wykresów. Wymaga to dołączenia do sekcji HEAD skryptu języka Javy. Legendę wykresu wraz z danymi generuję za pomocą pętli wykorzystującej składnię silnika szablonów Twig. Wszystko działa mi bez zarzutu. Wykresy wyświetlają mi się poprawnie tzn. legenda i dane są wygenerowane właściwie.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Jedynie interpreter PHP podkreśla mi błędy tzn. nie rozpoznaje składni Twig w tym skrypcie co wygląda następująco:&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
  &amp;lt;!-- Google pie-chart --&amp;gt;
    &amp;lt;script type=&quot;text/javascript&quot; src=&quot;https://www.gstatic.com/charts/loader.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
        google.charts.load(&quot;current&quot;, { packages: [&quot;corechart&quot;] });
        google.charts.setOnLoadCallback(drawChart);
        function drawChart() {
        var income_data = google.visualization.arrayToDataTable([
            ['Income Category', 'Amount'],
              &lt;strong&gt;&lt;u&gt;{% for incomeItem in balance_load.income_data %}
                ['{{ incomeItem.category }}', {{ incomeItem.amount }}],
              {% endfor %}&lt;/u&gt;&lt;/strong&gt;
            ]);
        
        var expense_data = google.visualization.arrayToDataTable([
            ['Expense Category', 'Amount'],
            &lt;strong&gt;&lt;u&gt;{% for expenseItem in balance_load.expense_data %}
              ['{{ expenseItem.category }}', {{ expenseItem.amount }}],
            {% endfor %}&lt;/u&gt;&lt;/strong&gt;
            ]);
        
        var income_options = {
            backgroundColor: '#dff0d8',
            legend: { textStyle: { fontSize: '0.5rem', fontName: 'Montserrat' } },
            title: 'Your incomes over a selected period',
            titleTextStyle: {
              color: 'black',
              fontName: 'Montserrat',
              fontSize: '1rem',
              bold: true,
              italic: false
            },
            is3D: true,
          };
        &lt;em&gt;// Pozostały kod&lt;/em&gt;
    &amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;p&gt;Czy można sobie z tym jakoś poradzić, obejść to, aby uniknąć pojawienia się&amp;nbsp;tego typu błędów w moim przypadku? Nie rzutuje to na funkcjonowanie samej aplikacji. Testowałem to, jednak nie jest dobrze, że interpreter podkreśla mi te miejsca w kodzie nie rozpoznając tej składni, akceptując&amp;nbsp;jedynie składnię JavaScriptu.&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1884/javascript-rozpoznaje-sk%C5%82adni-wy%C5%9Bwietlanie-wykresu-ko%C5%82owego</guid>
<pubDate>Wed, 06 Mar 2024 19:20:19 +0000</pubDate>
</item>
<item>
<title>Aplikacja budżetowa w PHP/HTML. Refaktoryzacja kodu - zapytania SQL do bazy danych</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1883/aplikacja-bud%C5%BCetowa-html-refaktoryzacja-zapytania-danych</link>
<description>&lt;p&gt;Cześć,&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Jestem na etapie ukończenia mojej aplikacji budżetowej w PHP. Chciałbym stworzyć ogólną metodę, która po usunięciu jakiejść pozycji/rekordu z danej tabeli bazy danych numeruje pozycje ponownie od 1 w kolejności rosnącej tak, aby nie było wolnego numeru w tabeli. Dla przykładu jeśli usuwam pozycje 5-tą z tabeli zawierającej 10 rekordów to pozycja 6 wskakuje na piątą, 7 na szóstą i tak analogicznie do ostatniego rekordu.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Stworzyłem dla każdej z modyfikowanych tabel bazy danych odrębną metodę, która działa mi poprawnie.&lt;/p&gt;

&lt;p&gt;Poniżej przykładowa działająca metodę klasy DataSetup:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
public static function orderIncomeTableItems()
     {
         $sql = 'SELECT * FROM incomes ORDER BY id;
         SET @count = 0;
         UPDATE incomes SET id = @count:= @count + 1;
         ALTER TABLE incomes AUTO_INCREMENT = 1';
 
         $db = static::getDB();
         $stmt = $db-&amp;gt;prepare($sql);
 
         $stmt-&amp;gt;execute();
     }&lt;/pre&gt;

&lt;p&gt;W metodzie tej na sztywno podaję w zapytaniu SQL nazwę tabeli, którą zamierzam zmodyfikować przy zachowaniu spójności z pozostałymi tabelami pozostającymi w relacji. Nie mam tutaj żadnych błędów składni.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Z uwagi, że modyfikuję kilka tabel utworzyłem kilka metod dla każdej z tabel osobno. Generuje to niepotrzebne linijki kodu. Chciałem ujednolicić te metody do jednej ogólnej, w której jako argument przekazywałbym zmienną typu string z nazwą tabeli.&lt;/p&gt;

&lt;p&gt;Stworzyłem dwa warianty dla tej ogólnej metody, które moim zdaniem powinny być poprawne jednak obie nie działają, tzn. interpreter PHP wyrzuca błąd składni SQL.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Poniżej przedstawiam kod dla obu rozwiązań:&lt;/p&gt;

&lt;p&gt;1) wykorzystanie łączenia łańcuchów przez symbol kropki (konkatenacja)&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
public static function orderTableItems($tableName) {
        $sql = &quot;SELECT * FROM '&quot; . $tableName . &quot;' SET @count = 0;
        UPDATE '&quot; . $tableName . &quot;' SET id = @count:= @count + 1;
        ALTER TABLE '&quot; . $tableName . &quot;' AUTO_INCREMENT = 1&quot;;

    $db = static::getDB();
    $stmt = $db-&amp;gt;prepare($sql);
    $stmt-&amp;gt;execute();
    }&lt;/pre&gt;

&lt;p&gt;2) bindowanie zmiennej do placeholdera&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
public static function orderTableItems($tableName) {
        $sql = 'SELECT * FROM :tableName ORDER BY id;
        SET @count = 0;
        UPDATE :tableName  SET id = @count:= @count + 1;
        ALTER TABLE :tableName AUTO_INCREMENT = 1';

    $db = static::getDB();
    $stmt = $db-&amp;gt;prepare($sql);    
    $stmt-&amp;gt;bindValue(':tableName', $tableName, PDO::PARAM_STR);
    $stmt = $db-&amp;gt;prepare($sql);

    $stmt-&amp;gt;execute();
    }&lt;/pre&gt;

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

&lt;p&gt;W obu przypadkach otrzymuję błąd składni SQL tego typu:&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
Fatal error
Uncaught exception: 'PDOException'

Message: 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''incomes' SET @count = 0; UPDATE 'incomes' SET id = @count:= @count ...' at line 1'

Stack trace:

#0 D:\_PROJECTS\WebDevelopment\Projects\MyBudgetSite\DebugVersion\App\DataSetup.php(40): PDOStatement-&amp;gt;execute()
#1 D:\_PROJECTS\WebDevelopment\Projects\MyBudgetSite\DebugVersion\App\Models\Income.php(198): App\DataSetup::orderTableItems('incomes')
#2 D:\_PROJECTS\WebDevelopment\Projects\MyBudgetSite\DebugVersion\App\Controllers\Profit.php(171): App\Models\Income::removeUserIncomeSavedInDatabase('3')
#3 [internal function]: App\Controllers\Profit-&amp;gt;removeIncomeAction()
#4 D:\_PROJECTS\WebDevelopment\Projects\MyBudgetSite\DebugVersion\Core\Controller.php(47): call_user_func_array(Array, Array)
#5 D:\_PROJECTS\WebDevelopment\Projects\MyBudgetSite\DebugVersion\Core\Router.php(121): Core\Controller-&amp;gt;__call('removeIncome', Array)
#6 D:\_PROJECTS\WebDevelopment\Projects\MyBudgetSite\DebugVersion\public\index.php(53): Core\Router-&amp;gt;dispatch('profit/remove-i...')
#7 {main}
Thrown in 'D:\_PROJECTS\WebDevelopment\Projects\MyBudgetSite\DebugVersion\App\DataSetup.php' on line 40&lt;/pre&gt;

&lt;p&gt;Na czym polega mój błąd składni SQL i jak mogę go naprawić?&lt;/p&gt;

&lt;p&gt;Poniżej dołączam fragment kodu wywołania metody ogólnej.&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
$tableName = 'incomes';
DataSetup::orderTableItems($tableName);&lt;/pre&gt;

&lt;p&gt;Z góry dziękuję za wszelką pomoc i wskazówki&lt;/p&gt;

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

&lt;p&gt;Paweł&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1883/aplikacja-bud%C5%BCetowa-html-refaktoryzacja-zapytania-danych</guid>
<pubDate>Wed, 06 Mar 2024 18:41:20 +0000</pubDate>
</item>
<item>
<title>seminarium Książka adresowa obiektowo - plik .gitignore</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1880/seminarium-ksi%C4%85%C5%BCka-adresowa-obiektowo-plik-gitignore</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p style=&quot;text-align:justify&quot;&gt;Podczas wykonywania książki objektowo natrafiłam na pewien problem.&lt;/p&gt;

&lt;p style=&quot;text-align:justify&quot;&gt;W pierwszym nagraniu tego seminarium, w folderze, w którym jest projekt ksiązki adresowej objektowo od razu są te foldery bin i obj, a u mnie tak&amp;nbsp; nie było, w sensie dopiero jakoś w trakcie tworzenia projektu się pojawiły. Po użyciu polecenia git status były zapisane w taki sposób:&lt;/p&gt;

&lt;p&gt;obj/Debug/KsiazkaAdresowa.o&lt;/p&gt;

&lt;p&gt;obj/Debug/Uzytkownik.o&lt;/p&gt;

&lt;p&gt;obj/Debug/main.o&lt;/p&gt;

&lt;p style=&quot;text-align:justify&quot;&gt;Dlatego wtedy chciałam je zignorować, ale pomimo wprowadzenia odpowiednich zmian w pliku .gitignore, po użyciu polecenia git status, one tam nadal widniały, więc pomyślałam, że trzeba dodać ten plik jeszcze raz i zacommitować, ale po zrobieniu tego, to już w ogóle wszystkie te pliki się usunęły (to znaczy usunęły się jedynie w gicie), usunęły się też pliki projektu nad którymi pracowałam, czyli main.cpp, Uzytkownik.h, KsiazkaAdresowa.cpp itd.. Mogę to jakoś cofnąć/naprawić i jak usunąć ten folder object/Debug.., bo myślałam, że mogę wpisać w pliku .gitignore np. obj* albo obj/Debug/main.o/ itd., bo właśnie tak było przedstawione ignorowanie plików na tym nagraniu, ale właśnie mi to nie usunęło tych plików?&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1880/seminarium-ksi%C4%85%C5%BCka-adresowa-obiektowo-plik-gitignore</guid>
<pubDate>Tue, 05 Mar 2024 20:18:05 +0000</pubDate>
</item>
</channel>
</rss>