<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Przyszły Programista - Najnowsze pytania</title>
<link>http://forum.przyszlyprogramista.pl/?qa=questions</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>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>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</link>
<description>&lt;p&gt;Witam,&lt;br&gt;
&lt;br&gt;
Zrobiłem tak jak na kursie i nie mogę się zalogować do nginx proxy manager.&lt;br&gt;
&lt;br&gt;
Wpisuję localhost:8181 wyskakuje mi panel do logowania i jeśli wpiszę admin@example.com i changeme wyskakuje błąd &quot;Not Found&quot;. Jak można to naprawić&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;br&gt;
plik yml:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
services:
  app: 
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    network_mode: &quot;host&quot;
    volumes:
	- ./data:/data 
	- ./letsencrypt:/etc/letsencrypt&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&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</guid>
<pubDate>Thu, 24 Apr 2025 09:31:27 +0000</pubDate>
</item>
<item>
<title>DevOps - docker/Magento2</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2098/devops-docker-magento2</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
czy może ktoś z absolwentów zdecydował się na kierunek devops i byłby w stanie mi pomóc w postawieniu sklepu na magento2, żeby każda usługa była na osobnym kontenerze + do tego chcę zrobić multistore scandiPwa + luma? :)&lt;br /&gt;
&lt;br /&gt;
Ewentualnie jak znacie kogoś kto by się orientował w temacie to proszę o namiary - oczywiście za taką usługę/pomoc jestem w stanie zapłacić :)</description>
<category>Pozostałe tematy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2098/devops-docker-magento2</guid>
<pubDate>Thu, 27 Mar 2025 17:01:00 +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>wyświetlanie opcji drop-down menu (mvc)</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2092/wy%C5%9Bwietlanie-opcji-drop-down-menu-mvc</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;W aplikacji budżetowej jest kilka stron z formularzem, gdzie użytkownik może wybrać opcję&amp;nbsp;z rozwijanego menu. Autor kursu ustawia wszystkie te opcje ręcznie, a ja chcę je pobrać z bazy danych. Wzorując się na jego przykładowym zapisie takich opcji&amp;nbsp;z projektu i wyświetlania ewentualnego błędu:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;!-- Country --&amp;gt;
    &amp;lt;label class=&quot;block&quot;&amp;gt;
      &amp;lt;span class=&quot;text-gray-700&quot;&amp;gt;Country&amp;lt;/span&amp;gt;
      &amp;lt;select name=&quot;country&quot; class=&quot;block w-full mt-1 rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50&quot;&amp;gt;
        &amp;lt;option value=&quot;USA&quot;&amp;gt;USA&amp;lt;/option&amp;gt;
        &amp;lt;option value=&quot;Canada&quot; &amp;lt;?php echo $oldFormData['country'] === 'Canada' ? 'selected' : ''; ?&amp;gt;&amp;gt;Canada&amp;lt;/option&amp;gt;
        &amp;lt;option value=&quot;Mexico&quot; &amp;lt;?php echo $oldFormData['country'] === 'Mexico' ? 'selected' : ''; ?&amp;gt;&amp;gt;Mexico&amp;lt;/option&amp;gt;
        &amp;lt;option value=&quot;Invalid&quot;&amp;gt;Invalid Country&amp;lt;/option&amp;gt;
      &amp;lt;/select&amp;gt;
      &amp;lt;?php if (array_key_exists('country', $errors)) : ?&amp;gt;
        &amp;lt;div class=&quot;bg-gray-100 mt-2 p-2 text-red-500&quot;&amp;gt;
          &amp;lt;?php echo e($errors['country'][0]); ?&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;?php endif; ?&amp;gt;
    &amp;lt;/label&amp;gt;&lt;/pre&gt;

&lt;p&gt;próbuję ustawić kategorie wydatków. Tak to wygląda u mnie:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;div&amp;gt;
            &amp;lt;label for=&quot;category&quot;&amp;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;
            &amp;lt;/label&amp;gt;
          &amp;lt;/div&amp;gt;
          &amp;lt;?php if (array_key_exists('category', $errors)) : ?&amp;gt;
            &amp;lt;div class=&quot;error&quot;&amp;gt;
              &amp;lt;?php echo e($errors['category'][0]); ?&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;?php endif; ?&amp;gt;&lt;/pre&gt;

&lt;p&gt;W pliku TransactionController.php są odpowiednie funkcje do wyświetlania i renderowania błędów dla strony z przychodami:&lt;/p&gt;

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

declare(strict_types=1);

namespace App\Controllers;

use Framework\TemplateEngine;
use App\Services\{ValidatorService, TransactionsService};

class TransactionController
{
  public function __construct(
    private TemplateEngine $view,
    private ValidatorService $validatorService,
    private TransactionsService $transactionsService
  ) {}

  public function createViewAddIncome()
  {
    echo $this-&amp;gt;view-&amp;gt;render(&quot;transactions/add_income.php&quot;);
  }

  public function createAddIncome()
  {
    echo $this-&amp;gt;validatorService-&amp;gt;validateIncome($_POST);
  }&lt;/pre&gt;

&lt;p&gt;W pliku ValidatorService.php są ustawione odpowiednie reguły co do walidacji danych formularza:&lt;/p&gt;

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

declare(strict_types=1);

namespace App\Services;

use Framework\Validator;
use Framework\Rules\{
  NameRule,
  RequiredRule,
  EmailRule,
  MatchRule,
  PriceRule,
  CategoryIncomeRule,
  CategoryExpenseRule
};

class ValidatorService
{
  private Validator $validator;

  public function __construct()
  {
    $this-&amp;gt;validator = new Validator();

    $this-&amp;gt;validator-&amp;gt;add('name', new NameRule());
    $this-&amp;gt;validator-&amp;gt;add('required', new RequiredRule());
    $this-&amp;gt;validator-&amp;gt;add('email', new EmailRule());
    $this-&amp;gt;validator-&amp;gt;add('match', new MatchRule());
    $this-&amp;gt;validator-&amp;gt;add('price', new PriceRule());
    $this-&amp;gt;validator-&amp;gt;add('categoryIncome', new CategoryIncomeRule());
  }

  public function validateRegister(array $formData)
  {
    $this-&amp;gt;validator-&amp;gt;validate($formData, [
      'name' =&amp;gt; ['required', 'name'],
      'email' =&amp;gt; ['required', 'email'],
      'password' =&amp;gt; ['required'],
      'confirmPassword' =&amp;gt; ['required', 'match:password'],
    ]);
  }

  public function validateLogin(array $formData)
  {
    $this-&amp;gt;validator-&amp;gt;validate($formData, [
      'email' =&amp;gt; ['required', 'email'],
      'password' =&amp;gt; ['required']
    ]);
  }

  public function validateIncome(array $formData)
  {
    $this-&amp;gt;validator-&amp;gt;validate($formData, [
      'price' =&amp;gt; ['required', 'price'],
      'categoryIncome' =&amp;gt; ['required', 'categoryIncome']
    ]);
  }

  public function validateExpense(array $formData)
  {
    $this-&amp;gt;validator-&amp;gt;validate($formData, [
      'price' =&amp;gt; ['required', 'price'],
      'paymentMethod' =&amp;gt; ['required', 'paymentMethod'],
      'categoryExpense' =&amp;gt; ['required', 'categoryExpense']
    ]);
  }

  public function validateBalance(array $formData)
  {
    $this-&amp;gt;validator-&amp;gt;validate($formData, [
      'time-slot' =&amp;gt; ['required', 'timeSlot'],
    ]);
  }
}
&lt;/pre&gt;

&lt;p&gt;Dla strony z przychodami jest to CategoryIncomeRule.php:&lt;/p&gt;

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

declare(strict_types=1);

namespace Framework\Rules;

use Framework\Contracts\RuleInterface;

class CategoryIncomeRule implements RuleInterface
{
  public function validate(array $data, string $field, array $params): bool
  {
    return in_array($data[$field], $params);
  }

  public function getMessage(array $data, string $field, array $params): string
  {
    return &quot;Nieprawidłowy wybór.&quot;;
  }
}
&lt;/pre&gt;

&lt;p&gt;Do wykonywania zapytań związanych z transakcjami w folderze Services utworzyłam osobny plik TransactionsService.php. I tutaj pobieram nazwy kategorii przychodów z bazy danych.&lt;/p&gt;

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

declare(strict_types=1);

namespace App\Services;

use Framework\Database;

class TransactionsService
{
  public function __construct(private Database $db) {}

  public function selectCategoriesIncomes(): array
  {
    $categories = $this-&amp;gt;db-&amp;gt;query(
      &quot;SELECT name FROM incomes_category_default&quot;
    );
    return $categories-&amp;gt;fetchAllResults();
  }
}
&lt;/pre&gt;

&lt;p&gt;Próbowałam na różne sposoby przekazać te wartości z tablicy categories do pliku TransactionController.php, np. tak (co zdaje mi się najbardziej sensowne):&lt;/p&gt;

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

declare(strict_types=1);

namespace App\Controllers;

use Framework\TemplateEngine;
use App\Services\{ValidatorService, TransactionsService};

class TransactionController
{
  public function __construct(
    private TemplateEngine $view,
    private ValidatorService $validatorService,
    private TransactionsService $transactionsService
  ) {}

  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()
    ]);
  }

  public function createAddIncome()
  {
    echo $this-&amp;gt;validatorService-&amp;gt;validateIncome($_POST);
  }
}&lt;/pre&gt;

&lt;p&gt;ale za każdym razem nie wyświetlają się żadne opcje po rozwinięciu menu, tylko ta domyślna &quot;Wybierz kategorię przychodu&quot;. Dodatkowo, nie wiem czemu, ale przekazanie kategorii do&amp;nbsp;createViewAddIncome(), tak jak ja to wyżej przedstawiłam, powoduje że z formularza znika pole z komentarzem i przyciski &quot;Dodaj&quot; i &quot;Anuluj&quot;, które są pod spodem. Może jednak robię to w niewłaściwy sposób i/lub w niewłaściwym miejscu? Proszę o wskazówkę.&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</guid>
<pubDate>Sat, 08 Mar 2025 18:46:37 +0000</pubDate>
</item>
<item>
<title>dodawanie użytkownika do bazy (mvc)</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2089/dodawanie-u%C5%BCytkownika-do-bazy-mvc</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;Podczas rejestracji użytkownika i dodawania go do bazy pojawia mi się taki błąd, jak tutaj:&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://ibb.co/HfXZS8K6&quot; rel=&quot;nofollow&quot;&gt;https://ibb.co/HfXZS8K6&lt;/a&gt;. Program nie rozpoznaje kolumny name, mimo że ona jest w tabeli users w bazie phpmyadmin (dla pewności sprawdzałam też jej istnienie poprzez zapytanie w sql). Dodałam sprawdzenie var_dump($formData) i var_dump($_POST) we wszystkich możliwych miejscach aplikacji oraz samego zapytania query, żeby sprawdzić, czy dane z formularza prawidłowo przesyłają&amp;nbsp;wartość name, którą wpisuje użytkownik i za każdym razem jest prawidłowo. Myślałam, że może MySQL traktuje name jako słowo kluczowe, ale po zmianie zapytania na:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
$query = &quot;INSERT INTO users (`name`, email, password) VALUES (:name, :email, :password)&quot;;
&lt;/pre&gt;

&lt;p&gt;nadal jest ten sam problem.&lt;/p&gt;

&lt;p&gt;Pobrałam część plików autora&amp;nbsp;tego kursu php i dodałam do swojego projektu, żeby mieć pewność, że nie ma gdzieś jakiegoś drobnego błędu, którego nie zauważyłam, ale nadal jest ten błąd.&amp;nbsp;&lt;/p&gt;

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

declare(strict_types=1);

namespace App\Services;

use Framework\Database;
use Framework\Exceptions\ValidationException;

class UserService
{
  public function __construct(private Database $db) {}

  public function isEmailTaken(string $email)
  {
    $emailCount = $this-&amp;gt;db-&amp;gt;query(
      &quot;SELECT COUNT(*) FROM users WHERE email = :email&quot;,
      [
        'email' =&amp;gt; $email
      ]
    )-&amp;gt;count();

    if ($emailCount &amp;gt; 0) {
      throw new ValidationException(['email' =&amp;gt; ['Istnieje konto z podanym adresem email.']]);
    }
  }

  public function create(array $formData)
  {
    $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'],
      ]
    );
  }
}
&lt;/pre&gt;

&lt;p&gt;Nie mam już pomysłu co jest nie tak..&lt;br&gt;
&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2089/dodawanie-u%C5%BCytkownika-do-bazy-mvc</guid>
<pubDate>Sun, 02 Mar 2025 16:27:22 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Hej wszystkim!&lt;/p&gt;

&lt;p&gt;Mam pytanie dotyczące aplikacji budżetowej w wersji strukturalnej.&lt;/p&gt;

&lt;p&gt;Rozjechał mi się balans, ale reszta funkcjonalności działa jak należy.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Błąd jest prozaiczny:&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Warning: Cannot modify header information - headers already sent by (output started at /home/&lt;a rel=&quot;nofollow&quot; href=&quot;http://klient.dhosting.pl/ppp/budget.wiktor-gindorowicz.profesjonalny&quot; target=&quot;_blank&quot;&gt;klient.dhosting.pl/ppp/budget.wiktor-gindorowicz.profesjonalny&lt;/a&gt;&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;http://programista.pl/public_html/date_balance.php:61&quot; target=&quot;_blank&quot;&gt;programista.pl/public_html/date_balance.php:61&lt;/a&gt;) in&amp;nbsp;/home/&lt;a rel=&quot;nofollow&quot; href=&quot;http://klient.dhosting.pl/ppp/budget.wiktor-gindorowicz.profesjonalnyprogramista.pl/public_html/date_balance.php&quot; target=&quot;_blank&quot;&gt;klient.dhosting.pl/ppp/budget.wiktor-gindorowicz.profesjonalnyprogramista.pl/public_html/date_balance.php&lt;/a&gt;&amp;nbsp;on line&amp;nbsp;166&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Link do repozytorium: &lt;a href=&quot;https://github.com/mrcyclist777/Budget-App&quot; rel=&quot;nofollow&quot;&gt;https://github.com/mrcyclist777/Budget-App&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wiem co to oznacza, poczytałem o tym błędzie i jak temu zapobiec, ale nie mogę dojść do ładu.&lt;/p&gt;

&lt;p&gt;Teoretycznie powinno to działać, a nie działa:)&lt;/p&gt;

&lt;p&gt;Proszę Was o pomoc.&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</guid>
<pubDate>Tue, 04 Feb 2025 21:29:04 +0000</pubDate>
</item>
<item>
<title>Dane z funkcji asynchronicznej</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2082/dane-z-funkcji-asynchronicznej</link>
<description>&lt;p&gt;Witam,&lt;/p&gt;

&lt;p&gt;Mam następujący problem:&amp;nbsp; noteIdVar&amp;nbsp;jest undefined. czy jest możliwość pobrania aktualnej wartości noteIdVar&amp;nbsp;poza db.query?&lt;/p&gt;

&lt;p&gt;Przeczytałem, że jest to spowodowane tym, że db.query to funkcja/metoda asynchroniczna.&lt;/p&gt;

&lt;p&gt;Ale jest jakiś sposób na pobranie tej wartości?&lt;/p&gt;

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

	let noteIdVar;

    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({
            Massage: &quot;Server Side Error&quot;
        })
        else {
            noteIdVar = data[0].idNote;
            console.log(&quot;NOTE ID WYNOSI in: &quot;, data[0].idNote); //tutaj normalna wartość
        }
    })
    console.log(&quot;NOTE ID WYNOSI outside NOTEID: &quot;, noteIdVar); //undefined
})&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2082/dane-z-funkcji-asynchronicznej</guid>
<pubDate>Wed, 29 Jan 2025 11:35:07 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;Przechodząc ze strony głównej do rejestracji, mam problem z jej wyświetleniem, po prostu całkowicie pusta strona, żadne błędy się też nie pojawiają.&amp;nbsp;Nie mogę namierzyć co jest nie tak.., wydaje mi się, że logika dodawania tej strony jest taka sama jak dla strony głównej, z którą nie było problemu. Plik (register.php)&amp;nbsp;znajduje się w folderze src/App/views.&amp;nbsp; Na razie dodałam do niego tylko krótki tekst jako test.&lt;/p&gt;

&lt;p&gt;Tak wygląda plik Routes.php:&lt;/p&gt;

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

declare(strict_types=1);

namespace App\Config;

use Framework\App;
use App\Controllers\{HomeController, AuthController};

function registerRoutes(App $app)
{
  $app-&amp;gt;get('/', [HomeController::class, 'home']);
  $app-&amp;gt;get('/register', [AuthController::class, 'registerView']);
}
&lt;/pre&gt;

&lt;p&gt;Plik AuthController:&lt;/p&gt;

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

declare(strict_types=1);

namespace App\Controllers;

use Framework\TemplateEngine;

class AuthController
{
  public function __construct(private TemplateEngine $view) {}

  public function registerView()
  {
    echo $this-&amp;gt;view-&amp;gt;render(&quot;register.php&quot;);
  }
}
&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2078/aplikacja-bud%C5%BCetowa-mvc-wy%C5%9Bwietlanie-strony-rejestracji</guid>
<pubDate>Sun, 26 Jan 2025 20:12:06 +0000</pubDate>
</item>
<item>
<title>Current user id</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2073/current-user-id</link>
<description>Witam,&lt;br /&gt;
&lt;br /&gt;
chciałbym pobrać z bazy danych id aktualnie zalogowanego użytkownika z użyciem JavaScript.&lt;br /&gt;
&lt;br /&gt;
Jak to zrobić?</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2073/current-user-id</guid>
<pubDate>Wed, 22 Jan 2025 19:29:52 +0000</pubDate>
</item>
<item>
<title>Aplikacja Budżetowa obiektowo</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2068/aplikacja-bud%C5%BCetowa-obiektowo</link>
<description>&lt;p&gt;Hej, proszę o pomoc w namierzeniu błędu dotyczącym problemu z zapisywaniem kwot po kropce (do xml nie zapisuje niczego po kropce/przecinku)&amp;nbsp;funkcja stod nie zdaje egzaminu, a debuger mówi, że problem leży w wejściu właśnie do stod i zaprowadza mnie do biblioteki Markup załączonej z maila, kod niżej.&amp;nbsp;&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
void BudgetManager::addTransaction(Type type) {
    char choice;
    string date, description, amountStr;
    double amount;


    cout &amp;lt;&amp;lt; &quot;Does it concern today's date? (y/n): &quot;;
    cin &amp;gt;&amp;gt; choice;

    if (choice == 'y' || choice == 'Y') {
        date = DateMethods::getCurrentDateAsString();
    } else {
        cout &amp;lt;&amp;lt; &quot;Enter the date (YYYY-MM-DD): &quot;;
        cin &amp;gt;&amp;gt; date;
        while (!DateMethods::validateDate(date)) {
            cout &amp;lt;&amp;lt; &quot;Invalid date. Try again (YYYY-MM-DD): &quot;;
            cin &amp;gt;&amp;gt; date;
        }
    }

    cout &amp;lt;&amp;lt; &quot;Enter a description: &quot;;
    cin.ignore();
    getline(cin, description);

    cout &amp;lt;&amp;lt; &quot;Enter the amount: &quot;;
    getline(cin, amountStr);

     replace(amountStr.begin(), amountStr.end(), ',', '.');


  try {

        amount = stod(amountStr);
    } catch (const invalid_argument&amp;amp;) {
        cout &amp;lt;&amp;lt; &quot;Invalid amount. Please enter a numeric value.\n&quot;;
        return;
    } catch (const out_of_range&amp;amp;) {
        cout &amp;lt;&amp;lt; &quot;Amount is out of range. Please enter a valid number.\n&quot;;
        return;
    }

    Operation newOperation;
    newOperation.userId = LOGGED_USER_ID;
    newOperation.date = DateMethods::convertStringDateToInt(date);
    newOperation.item = description;
    newOperation.amount = amount;

        if (type == INCOME) {
        newOperation.id = incomes.size() + 1;
        incomes.push_back(newOperation);
        incomeFile.addOperationToFile(newOperation);
        cout &amp;lt;&amp;lt; &quot;Income added successfully.\n&quot;;
    } else {
        newOperation.id = expenses.size() + 1;
        expenses.push_back(newOperation);
        expenseFile.addOperationToFile(newOperation);
        cout &amp;lt;&amp;lt; &quot;Expense added successfully.\n&quot;;
    }
    system(&quot;pause&quot;);
}
&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2068/aplikacja-bud%C5%BCetowa-obiektowo</guid>
<pubDate>Sun, 05 Jan 2025 18:35:46 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
Szukam dwie osoby, które ukończyły moduł o technologiach webowych z naszego programu nauki:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://projekt.przyszlyprogramista.pl/pliki/ELITARNY_PROJEKT_PP-PROGRAM_NAUKI.pdf&quot; rel=&quot;nofollow&quot;&gt;https://projekt.przyszlyprogramista.pl/pliki/ELITARNY_PROJEKT_PP-PROGRAM_NAUKI.pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
i które polubiły programowanie webowe do zbudowania razem startupu, który będzie działał mając na backendzie język php, a na froncie standard, czyli javascript, html i css.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Czas jaki będzie potrzebny do przeznaczenia szacuje na 100 roboczogodzin, czyli pracując 2 godziny dziennie po pracy zajmie nam to ok 2 miesiące.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Jeśli biznes nie wypali to będziesz miał genialny wpis do portfolio, który pozwoli Ci zdobyć każdą pracę:)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Jeśli biznes wypali to dzielimy się zyskami po równo.&lt;br /&gt;
&lt;br /&gt;
Jeśli jesteś chętny to wystarczy napisać prywatną wiadomość.&lt;br /&gt;
&lt;br /&gt;
Satysfakcjonujących Wyzwań!&lt;br /&gt;
Artur</description>
<category>Wspólne programowanie</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2067/szukam-dwoje-programist%C3%B3w-do-zbudowania-razem-startupu</guid>
<pubDate>Mon, 02 Dec 2024 14:07:06 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>Cześć&lt;br /&gt;
&lt;br /&gt;
Mamy w Ericssonie otwartą ofertę pracy na stanowisko Junior/Mid Erlang Software Developer.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://jobs.ericsson.com/careers/755021&quot; rel=&quot;nofollow&quot;&gt;https://jobs.ericsson.com/careers/755021&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Znajomość Erlanga nie jest konieczna, nauczycie się na miejscu. Na rozmowie jest głównie algorytmika. Można też sobie zadeklarować z jakiego języka chcecie odpowiadać na rozmowie.&lt;br /&gt;
&lt;br /&gt;
Wszystko co w ofercie napisane to prawda. Niestety pracujemy 3 dni z biura, chyba że macie dziecko do lat 7, to wtedy przysługuje 100% zdalne. Praca jest ok. Przez 3 lata nie zdarzyły mi się nadgodziny ;).&lt;br /&gt;
&lt;br /&gt;
Jeśli ktoś ma ochotę spróbować, to zgłoście się do mnie na m.buchalska@gmail.com, zrobię polecajkę :). Polecajka daje tyle, że mój szef otworzy CV. Reszta zależy od kandydata.</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</guid>
<pubDate>Sun, 24 Nov 2024 15:16:59 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Witajcie kochani studenci,&lt;/p&gt;

&lt;p&gt;Zapraszam Was na kolejny webinar z cyklu comiesięcznej dawki Motywacji i Inspiracji:)&lt;/p&gt;

&lt;p&gt;Teraz mam dla Was bardzo ciekawy i interesujący pewnie wiele osób&amp;nbsp;temat, czyli:&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Jak wygląda życie Legendarnego Senior Developera :)&lt;/p&gt;

&lt;p&gt;Naszym gościem będzie Marcin Sendyka, który od 10 lat pracuje jako programista JAVA. Marcin dostał się do branży IT w 2013 roku, po tym jak ukończył Informatykę na Politechnice Krakowskiej.&lt;/p&gt;

&lt;p&gt;Marcin był jednym&amp;nbsp;z mentorów w Projekcie PP. Poniżej umieszczam link do jego profilu na LinkedIn:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/marcin-s-7b676682/&quot; rel=&quot;nofollow&quot;&gt;www.linkedin.com/in/marcin-s-7b676682/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Z Marcinem będziemy mogli porozmawiać o wszystkim za wyjątkiem tego ile zarabia:)&lt;/p&gt;

&lt;p&gt;Marcin prosił, aby nie zadawać tego pytania. Jednak nie ma nic przeciwko, aby opowiedzieć o tym w jakiej wysokości oferty pracy otrzymuje:)&lt;/p&gt;

&lt;p&gt;Drugim gościem będzie jeden z niedawnych absolwentów Projektu PP, który również pracuje jako Java Developer, jednak na poziomie&amp;nbsp; juniorskim.&lt;/p&gt;

&lt;p&gt;Tym gościem będzie&amp;nbsp;Bartek Zagórski:&lt;/p&gt;

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

&lt;p&gt;Bartek dostał pracę na początku 2024 roku i od tego czasu pracuje w polskiej firmie &lt;a href=&quot;https://9bits.com&quot; rel=&quot;nofollow&quot;&gt;9bits.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Także na webinarze porozmawiamy o tym jak wygląda życie Senior developera.&lt;/p&gt;

&lt;p&gt;Porozmawiamy też o technologii Java i z czym się wiąże praca w tej technologii.&lt;/p&gt;

&lt;p&gt;Od Bartka natomiast będziecie się mogli dowiedzieć jak wygląda rekrutacja na stanowisko Junior Java Developera.&lt;/p&gt;

&lt;p&gt;Bartek od samego początku pracuje zdalnie. Więc porozmawiamy też o tym jak się pracuje jako junior developer zdalnie od samego początku.&lt;/p&gt;

&lt;p&gt;Myślę, że szykuje się bardzo ciekawa rozmowa, także gorąco Cię zapraszam do jej uczestnictwa w najbliższy piątek 22 listopada o godzinie 19.00&lt;/p&gt;

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

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

&lt;p&gt;Satysfakcjonujących Wyzwań!&amp;nbsp;&lt;br&gt;
Artur&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&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</guid>
<pubDate>Tue, 19 Nov 2024 09:39:58 +0000</pubDate>
</item>
<item>
<title>Młodszy programista PHP</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2053/m%C5%82odszy-programista-php</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;Rzadko zaglądam na to forum, ale co zrobić. Czas nie jest z gumy&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;&amp;nbsp;Ale wiem, że tu znajdę wartościowych ludzi.&lt;/p&gt;

&lt;p&gt;Firma w której pracuję szuka nowego pracownika. Jeśli czujesz się dobrze w PHP i&amp;nbsp;umiesz odpytać bazę&amp;nbsp;za pomocą SQL&amp;nbsp;(te 2 rzeczy to nasze must have), np. policzyć ilość wystąpień produktów w tabeli, posortować, ograniczyć ilość rekordów, wyciągnąć unikalne rekordy z kolumny... to jesteś pro&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;&amp;nbsp;Piszę tak, bo dotychczasowi kandydaci potrafili w najlepszym przypadku napisać&amp;nbsp;SELECT * FROM. No i często nie wiedzieli, co robi ich kod&amp;nbsp;&lt;img alt=&quot;surprise&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/omg_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;surprise&quot;&gt;&lt;br&gt;
Smuteczek, bo każdy z nich miał powyżej roku stażu. Tłumaczyli się pokrętnie, że pomagał im ChatGPT. No i nie mamy nic przeciwko, bo to przydatne narzędzie. No ale ja na tym szkoleniu wyryłem sobie w pamięci zdanie Artura, że 'jak nie wiesz, jak działa jakiś kod, to go nie używaj' (parafrazuję, ale podpisuję się dwoma rękami). Ja bym chociaż poprosił tego chata, żeby mi wyjaśnił kod, który podrzuca...&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
Wiem, że szkolenie opracowane przez Artura świetnie uczy tych rzeczy.&amp;nbsp;Jeśli chcesz zacząć i nabyć praktyki i doświadczenia, link poniżej:&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;https://www.pracuj.pl/praca/programista-programistka-php-zory,oferta,1003716237?s=8d8f5da2&amp;amp;searchId=MTczMTA3MzIxODE4OC4zMDk=&quot; rel=&quot;nofollow&quot;&gt;Oferta pracy Programista / Programistka PHP, RUBICON CONTROLLING sp. z o.o., Żory&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
W ramach rekrutacji jest zadanie -&amp;nbsp;wczytanie danych z 3 różnych plików&amp;nbsp;do bazy i później wyciągnięcie SQLem wyników wg polecenia.&lt;/p&gt;

&lt;p&gt;Mamy dobrą atmosferę w pracy. Trochę legacy kodu z którego powoli wychodzimy i tworzymy nowy.&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;&amp;nbsp;Nasze sewery pracują na Ubuntu (będziesz logował się do konsoli), Bazy są MySQLowe. W nowszych projektach używamy GITa.&amp;nbsp;Pracujemy zdalnie w poniedziałki i piątki, pozostałe dni w biurze w Żorach.&lt;/p&gt;</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2053/m%C5%82odszy-programista-php</guid>
<pubDate>Fri, 08 Nov 2024 14:11:56 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>Witam Was moich kochani studenci,&lt;br /&gt;
&lt;br /&gt;
Nie było mnie z rozmowami przez 2 miesiące, wiec aby nadrobić zaległości wracam do Was z rozmowami z dwiema osobami: Karolem i Łukaszem.&lt;br /&gt;
&lt;br /&gt;
Obydwaj to Wasi koledzy, absolwenci Projektu Przyszły Programista.&lt;br /&gt;
&lt;br /&gt;
Karol skończył Projekt pod koniec ubiegłego roku i dostał pracę jako programista aplikacji komputerowych na system windows w języku C# i technologii WPF. Po 3-ech miesiącach postanowił jednak zmienić firmę i zacząć programować webowo w technologii .NET&lt;br /&gt;
&lt;br /&gt;
Natomiast Łukasz, to chłopak który WŁAŚNIE TERAZ szuka pracy i wysyła CV na stanowisko programisty .NET&lt;br /&gt;
&lt;br /&gt;
Łukasz otrzymał propozycję pracy w dwóch firmach.&lt;br /&gt;
&lt;br /&gt;
Na tej rozmowie skupimy się przede wszystkim na tym jak OBECNIE w 2024 roku wygląda rekrutacja z perspektywy Junior Developera.&lt;br /&gt;
&lt;br /&gt;
Porozmawiamy sobie też głębiej o technologii .NET i programowaniu w języku C# i omówimy to dlaczego jest to jedna z najciekawszych specjalizacji.&lt;br /&gt;
&lt;br /&gt;
Rozmowa odbędzie się już w najbliższy piątek 18 października o godzinie 19.00.&lt;br /&gt;
&lt;br /&gt;
Poniżej umieszczam link do rozmowy:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://rozmowa.przyszlyprogramista.pl&quot; rel=&quot;nofollow&quot;&gt;https://rozmowa.przyszlyprogramista.pl&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Rozmowa będzie nagrywana jednak możliwa do odsłuchania będzie na jesień razem z poprzednią rozmową z Danielem i Oskarem, kiedy to będzie miała premiera seria podcastów pt. Poznaj branże IT. Dlatego tym bardziej zachęcam do obecności w piątek na żywo!!!&lt;br /&gt;
&lt;br /&gt;
Satysfakcjonujących Wyzwań!&lt;br /&gt;
Artur</description>
<category>Motywacja</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2040/webinar-rekrutacja-junior-developera-rozmowa-karolem-%C5%82ukaszem</guid>
<pubDate>Mon, 14 Oct 2024 13:41:15 +0000</pubDate>
</item>
<item>
<title>datepicker JavaScript</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2033/datepicker-javascript</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;Próbuję dodać do aplikacji budżetowej kalendarz, czyli chciałabym, żeby po kliknięciu na pasek wyboru daty, pojawiało się okno z kalendarzem. Próbowałam to zrobić tak jak jest wyjaśnione na tej stronie &lt;a href=&quot;https://jqueryui.com/datepicker/&quot; rel=&quot;nofollow&quot;&gt;https://jqueryui.com/datepicker/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Czyli:&lt;/p&gt;

&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;div&amp;gt;&amp;lt;label for=&quot;datepicker&quot;&amp;gt;Wybierz datę:&amp;lt;/label&amp;gt;
                &amp;lt;input type=&quot;text&quot; id=&quot;datepicker&quot;&amp;gt;
 &amp;lt;/div&amp;gt;&lt;/pre&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
$(function () {
  $( function() {
    $( &quot;#datepicker&quot; ).datepicker();
});

$( &quot;#datepicker&quot; ).datepicker({
  dateFormat: &quot;yy-mm-dd&quot;
});

var dateFormat = $( &quot;.datepicker&quot; ).datepicker( &quot;option&quot;, &quot;dateFormat&quot; );
 
$( &quot;#datapicker&quot; ).datepicker( &quot;option&quot;, &quot;dateFormat&quot;, &quot;yy-mm-dd&quot; );&lt;/pre&gt;

&lt;p&gt;Niestety u mnie to nie działa, po kliknięciu w to pole mogę je wypełnić, ale nie pojawia się kalendarz. Z użyciem samego HTML i &amp;lt;input type=&quot;date&quot;&amp;gt; nie chcę tego robić, bo tam jest wstawiona domyślnie data jako mm/dd/yyyy, a ten format mi nie odpowiada i nie da się go zmienić. Oczywiście ścieżki do załadowania jQuery są poprawnie dodane do head w pliku html.. .&lt;/p&gt;

&lt;p&gt;Więc jak to inaczej zrobić?&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2033/datepicker-javascript</guid>
<pubDate>Thu, 12 Sep 2024 12:01:40 +0000</pubDate>
</item>
<item>
<title>[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</link>
<description>&lt;p&gt;Cześć, czy mamy tutaj testerów? Jeśli ktoś ma doświadczenie i spełniałby poniższy opis to mogę polecić. Firma z obszaru bankowości. Więcej info priv [niestety nie znam widełek, wiem że to rak w branży].&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Quality Assurance Engineer&lt;/strong&gt;&lt;br&gt;
Role Overview&lt;br&gt;
As a QA Engineer, you will play a crucial role in ensuring the quality and reliability of our software products. Your&lt;br&gt;
primary focus will be on manual testing, with an additional, strong emphasis on supporting and leveraging&lt;br&gt;
automated testing processes. You\ll work closely with developers, scrum masters and other stakeholders in an agile&lt;br&gt;
environment, participating actively in scrum events.&lt;br&gt;
&lt;strong&gt;Technical environment:&lt;/strong&gt;&lt;br&gt;
 Languages: PHP, Python, JavaScript (React)&lt;br&gt;
 Frameworks: Symfony&lt;br&gt;
 Databases: MySQL, MongoDB, PostgreSQL&lt;br&gt;
 Testing Tools: PHPUnit, Behave, Selenium, Postman, TestRail&lt;br&gt;
 BDD: Gherkin&lt;br&gt;
 CI/CD: Jenkins&lt;br&gt;
 Version Control: GitHub&lt;br&gt;
 Containerization: Docker&lt;br&gt;
 IDE: PyCharm&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Responsibilities&lt;/strong&gt;&lt;br&gt;
1. Lead manual testing efforts across our product suite, with a focus on thorough integration, system, E-2-E and&lt;br&gt;
exploratory testing.&lt;br&gt;
2. Effectively utilize and help develop the existing automated test suites and provide support in their&lt;br&gt;
maintenance and improvement.&lt;br&gt;
3. Collaborate with developers to create and execute test cases and test plans in coordination with the overall&lt;br&gt;
sprint calendar.&lt;br&gt;
4. Prepare clear, concise, and actionable bug reports&lt;br&gt;
5. Write and maintain Gherkin scenarios for behavior-driven development (BDD).&lt;br&gt;
6. Participate in business and dev refinements reviews to ensure adherence to quality standards and a good&lt;br&gt;
testability of discussed requirements.&lt;br&gt;
7. Contribute to the continuous improvement of our QA processes and methodologies&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Required Skills and Qualifications&lt;/strong&gt;&lt;br&gt;
 At least 1 year of proven &amp;amp;amp; battle-hardened experience in software quality assurance, with a focus on&lt;br&gt;
effective manual testing (backend, frontend, API).&lt;br&gt;
 Good understanding of automated testing concepts and practices.&lt;br&gt;
 Proficiency in test case design, execution, and defect management.&lt;br&gt;
 Solid understanding of software development life cycle and agile methodologies.&lt;br&gt;
 Familiarity with test management tools (e.g., Testrail) and version control systems (e.g., GitHub).&lt;br&gt;
 Experience with Gherkin syntax and behavior-driven development (BDD).&lt;br&gt;
 Good communication skills in English, both written and verbal&lt;br&gt;
 Ability to work effectively in a fast-paced, collaborative environment, with close everyday cooperation with&lt;br&gt;
the Dev team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Character Perks We're Looking For&lt;/strong&gt;&lt;br&gt;
While we value a wide range of skills and experiences, having these perks will make you shine in our team:&lt;br&gt;
 The eagle eye: Your knack for spotting the tiniest details others might miss;&lt;br&gt;
 The problem-solver: Your ability to approach challenges from multiple angles and find creative solutions;&lt;br&gt;
 The tech enthusiast: Your passion for staying on top of new technologies and testing methodologies;&lt;br&gt;
 The time wizard: Your talent for juggling multiple tasks and prioritizing effectively in a fast-paced&lt;br&gt;
environment;&lt;br&gt;
 The team player: Your gift for collaboration and ability to work seamlessly with developers, product&lt;br&gt;
managers, and stakeholders;&lt;br&gt;
 The quality advocate &amp;amp;amp; The curiosity engine: Your drive to champion best practices and continually improve&lt;br&gt;
our testing processes along with an insatiable desire to learn and to push the boundaries of what's possible&lt;br&gt;
in QA.&lt;br&gt;
 The bug whisperer: Your skill in crafting concise &amp;amp;amp; actionable bug reports that speak developers'39; language;&lt;br&gt;
 The container connoisseur: Your comfort with containerized environments and understanding of their&lt;br&gt;
impact on testing;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nice to have’s:&lt;/strong&gt;&lt;br&gt;
 Experience with utilising &amp;amp;amp;maintaining tests in automated testing frameworks &amp;amp;amp;tools (e.g., pytest, Behave, Behat).&lt;br&gt;
 Experience working with RESTful APIs and microservices architecture.&lt;br&gt;
 Knowledge of PHP, Python, and/or JavaScript/React.&lt;br&gt;
 Experience with database systems such as MySQL, MongoDB, and PostgreSQL.&lt;br&gt;
 Familiarity with CI/CD processes and tools (e.g., Jenkins).&lt;br&gt;
 Understanding of event sourcing patterns.&lt;br&gt;
 ISTQB certification.&lt;br&gt;
 Experience in the financial services industry.&lt;/p&gt;</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2023/tester-qa-w-firmie-z-obszaru-bankowo%C5%9Bci</guid>
<pubDate>Thu, 05 Sep 2024 20:15:11 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Cześć Wszystkim,&lt;/p&gt;

&lt;p&gt;Mam problem z 6. odcinkiem od Mirosława Zelenta, a konretnie z wysyłaniem maila - skonfigurowałem plik php.ini oraz sendemail.ini w taki sposób, jak omówiony w linkach pof filmikiem - w dalszym ciągu natomiast maile się nie wysyłają z gmaila - poniżej podrzucam logi oraz pliki .ini - może komuś z Was przydarzył się podobny problem i doradzicie, co zrobić w tej kwestii?&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
24/08/05 11:40:10 ** --- MESSAGE BEGIN ---
24/08/05 11:40:10 ** To: marcin.sochacki.programista@gmail.com
24/08/05 11:40:10 ** Subject: Darmowy, świetny ebook - HTML na przykładach
24/08/05 11:40:10 ** From: Ebooki uczące sztuki &amp;lt;no-replay@domena.pl&amp;gt;
24/08/05 11:40:10 ** Reply-To: Biuro &amp;lt;biuro@domena.pl&amp;gt;
24/08/05 11:40:10 ** 
24/08/05 11:40:10 ** &amp;lt;p&amp;gt;Dzień Dobry! 
24/08/05 11:40:10 ** 
24/08/05 11:40:10 **  Oto link do naszego świetnego ebooka: &amp;lt;a href = &quot;https://domena.pl/ebook.pdf&quot;&amp;gt;POBIERZ EBOOKA&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
24/08/05 11:40:10 ** --- MESSAGE END ---
24/08/05 11:40:11 ** Connecting to smtp.gmail.com:587
24/08/05 11:40:22 ** Disconnected.
24/08/05 11:40:22 ** Disconnected.
24/08/05 11:40:22 ** Disconnected.
24/08/05 11:40:22 ** Disconnected.
24/08/05 11:40:22 ** Connect timed out.&lt;/pre&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
[sendmail]

smtp_server = smtp.gmail.com
smtp_port = 587
error_logfile = error.log
debug_logfile = debug.log
auth_username = marcin.sochacki.programista@gmail.com
auth_password = xxx
force_sender = 	marcin.sochacki.programista@gmail.com&lt;/pre&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
[mail function]
SMTP = smtp.gmail.com
smtp_port = 587
sendmail_from = marcin.sochacki.programista@gmail.com
sendmail_path = &quot;C:\Users\SochackiMa\xampp\sendmail\sendmail.exe&quot;

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail().
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header=Off

; Use mixed LF and CRLF line separators to keep compatibility with some
; RFC 2822 non conformant MTA.
mail.mixed_lf_and_crlf=Off

; The path to a log file that will log all mail() calls. Log entries include
; the full path of the script, line number, To address and headers.
;mail.log =
; Log mail to syslog (Event Log on Windows).
;mail.log = syslog&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</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</guid>
<pubDate>Mon, 05 Aug 2024 10:03:22 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;Kontynuując cykl rozmów z&amp;nbsp;&lt;strong&gt;absolwentami&lt;/strong&gt;&amp;nbsp;Projektu w ramach dostarczania Ci regularnej dawki MOTYWACJI I INSPIRACJI do nauki programowania,&amp;nbsp;&lt;strong&gt;zapraszam Cię teraz na kolejną rozmowę z wyjątkowym gościem jakim będzie Oskar Białek.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rozmowa online obędzie się już w najbliższy &lt;strong&gt;piątek (2&amp;nbsp;sierpnia) o godzinie 18.00.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rozmowę przeprowadzimy tak jak ostatnio na google meets, więc i Ty będziesz mógł zadać swoje pytanie na żywo:)&lt;/p&gt;

&lt;p&gt;Oto link do rozmowy:&amp;nbsp;&lt;a href=&quot;https://rozmowa.przyszlyprogramista.pl/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;rozmowa.przyszlyprogramista.pl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Napisz tylko poniżej swoje pytanie, aby Oskar mógł się jak najlepiej przygotować.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A poniżej umieszczam kilka informacji o Oskarze i czym się w pracy zajmuje:&lt;/p&gt;

&lt;p&gt;Oskar ukończył Projekt Przyszły Programista w 2019 roku i od tego czasu pracuje w jednej i tej samej firmie BAKK (&lt;a href=&quot;https://bakk.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://bakk.com/&lt;/a&gt;), która zajmuje się Budowaniem Systemów IT dla Biznesu i która zatrudnia 60 programistów.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
Zaczął tam pracę na stanowisku C# .NET Developer.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Po dwóch latach doszedł on do stanowiska Team Leadera&lt;/strong&gt;, który prowadzi zespół oraz bierze udział w rekrutacjach nowych pracowników.&lt;/p&gt;

&lt;p&gt;Z rozmowy będziesz mógł poznać to jak przebiega rekrutacja z perspektywy rekrutera.&amp;nbsp;&lt;br&gt;
&lt;br&gt;
Będziesz mógł dowiedzieć się&amp;nbsp;&lt;strong&gt;jaki poziom reprezentują kandydaci do pracy&lt;/strong&gt;&amp;nbsp;na stanowisko młodszego programisty, ile CV spływa na jedno miejsce i jak to się zmieniło w ciągu ostatnich kilku lat.&lt;/p&gt;

&lt;p&gt;Będziesz mógł również dowiedzieć się wielu ciekawych informacji o technologii .NET i programowaniu w języku C#.&amp;nbsp;&lt;br&gt;
&lt;br&gt;
Myślę, że&amp;nbsp;rozmowa będzie równie ciekawa jak ostatnia z Danielem, dlatego gorąco Cię zapraszam do rozmowy na żywo, gdzie będziesz mógł osobiście poznać Oskara i zadać mu każde nurtujące Cię pytanie.&lt;/p&gt;

&lt;p&gt;Aby zadać pytanie Oskarowi wystarczy pojawić się na naszej rozmowie i zadać je na żywo.&lt;/p&gt;

&lt;p&gt;Jednak, aby Oskar mógł przygotować się do odpowiedzi to napisz poniżej swoje pytanie i jeśli nie Ty, to ja je zadam Oskarowi w trakcie naszej rozmowy.&lt;/p&gt;

&lt;p&gt;Poniżej umieszczam link do strony i profilu na linkedin Oskara:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/in/oskarowy/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;www.linkedin.com/in/oskarowy/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.oskarbialek.it/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;www.oskarbialek.it&lt;/a&gt;&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</guid>
<pubDate>Sat, 27 Jul 2024 13:51:02 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Cześć.&lt;/p&gt;

&lt;p&gt;Jestem na etapie tworzenia książki adresowej obiektowo i utknęłam z takim błędem w&amp;nbsp;klasie PlikZUzytkownikami:&lt;/p&gt;

&lt;p&gt;|19|error: expected class-name before '{' token| . Tak jakby kompilator w ogóle nie odczytywał tej jednej klasy.&amp;nbsp;&amp;nbsp;Może ktoś miał podobny problem i chciałby mi pomóc? Z góry dzięki, Natalia&lt;/p&gt;

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

#include &quot;Uzytkownicy.h&quot;
#include &quot;PlikTekstowy.h&quot;
#include &quot;MetodyPomocnicze.h&quot;


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



using namespace std;

class PlikZUzytkownikami : public PlikTekstowy
{
    const string NAZWA_PLIKU_Z_UZYTKOWNIKAMI;
    string zamienDaneUzytkownikaNaLinieZDanymiOddzielonaPionowymiKreskami(Uzytkownik uzytkownik);
    Uzytkownik pobierzDaneUzytkownika(string daneJednegoUzytkownikaOddzielonePionowymiKreskami);

 public:
    PlikZUzytkownikami(string nazwaPlikuZUzytkownikami) : PlikTekstowy(nazwaPlikuZUzytkownikami), NAZWA_PLIKU_Z_UZYTKOWNIKAMI(nazwaPlikuZUzytkownikami){};

    void dopiszUzytkownikaDoPliku(Uzytkownik uzytkownik);
    vector &amp;lt;Uzytkownik&amp;gt;  wczytajUzytkownikowZPliku();
    void zapiszWszytskichUzytkownikowDoPliku(vector &amp;lt;Uzytkownik&amp;gt; uzytkownicy);


};

#endif
&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
&amp;nbsp;&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</guid>
<pubDate>Mon, 08 Jul 2024 19:17:48 +0000</pubDate>
</item>
<item>
<title>div wewnątrz hiperłącza</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2004/div-wewn%C4%85trz-hiper%C5%82%C4%85cza</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;Uczę się HTML i chcę umieścić div wewnątrz hiperłącza. Docelowo ma to wyglądać tak jak na załączonym obrazku, gdzie jest ten blok z pytaniem &quot;Co oferuję?&quot;:&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;https://i.postimg.cc/rsZgTfS9/oferta.jpg&quot;&gt;https://i.postimg.cc/rsZgTfS9/oferta.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;Mam prośbę, żeby ktoś mi wytłumaczył, dlaczego u mnie&amp;nbsp;jest tak, że jak umieszczę div wewnątrz hiperłącza, to on się zmniejsza w taki sposób:&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;https://i.postimg.cc/15LcKnM4/Zrzut-ekranu-2024-07-07-144759.png&quot;&gt;https://i.postimg.cc/15LcKnM4/Zrzut-ekranu-2024-07-07-144759.png&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;To jest fragment kodu HTML:&lt;/p&gt;

&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;body&amp;gt;
  &amp;lt;div id=&quot;container&quot;&amp;gt;
    &amp;lt;div class=&quot;rectangle&quot;&amp;gt;
      &amp;lt;div id=&quot;logo&quot;&amp;gt;Jan Kowalski&amp;lt;/div&amp;gt;
      &amp;lt;div id=&quot;zegar&quot;&amp;gt;12:00:00&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;square&quot;&amp;gt;
      &amp;lt;div id=&quot;square1&quot;&amp;gt;
        &amp;lt;div class=&quot;tile1&quot;&amp;gt;
          &amp;lt;a href=&quot;kimjestem.html&quot; class=&quot;tilelink&quot;&amp;gt;&amp;lt;i class=&quot;icon-user&quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;Kim jestem?&amp;lt;/a&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;a href=&quot;oferta.html&quot;&amp;gt;
          &amp;lt;div class=&quot;tile1&quot;&amp;gt;
            &amp;lt;i class=&quot;icon-laptop&quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;Co oferuję?
          &amp;lt;/div&amp;gt;
        &amp;lt;/a&amp;gt;
        &amp;lt;div class=&quot;tile2&quot;&amp;gt;
          &amp;lt;i class=&quot;icon-graduation-cap&quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;CV
        &amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;tile3&quot;&amp;gt;
          &amp;lt;i class=&quot;icon-mail&quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt;Kontakt ze mną
        &amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;tile4&quot;&amp;gt;
          &amp;lt;i&amp;gt;Talk me cheap. Show me the code!&amp;lt;/i&amp;gt;&amp;lt;br /&amp;gt; - Linus Torvalds, twórca Linuxa
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div id=&quot;square2&quot;&amp;gt;
        &amp;lt;div class=&quot;tile5&quot;&amp;gt;
          Tytuł podstrony&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc gravida dictum odio non interdum. Pellentesque
          volutpat ultrices porttitor. Donec hendrerit lectus interdum, tristique mi a, feugiat dui. Fusce leo mi,
          mattis ornare efficitur sit amet, dapibus et odio. Mauris id facilisis neque, ut accumsan libero. Donec sed
          nunc quam.
        &amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;yt&quot;&amp;gt;
          &amp;lt;i class=&quot;icon-youtube&quot;&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;fb&quot;&amp;gt;
          &amp;lt;i class=&quot;icon-facebook&quot;&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;gplus&quot;&amp;gt;
          &amp;lt;i class=&quot;icon-gplus&quot;&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;tw&quot;&amp;gt;
          &amp;lt;i class=&quot;icon-twitter&quot;&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;rectangle&quot;&amp;gt; 2015 &amp;amp;copy; Jan Kowalski - portfolio. Programista webowy zaprasza do
      współpracy.&amp;lt;i class=&quot;icon-mail-alt&quot;&amp;gt;&amp;lt;/i&amp;gt;jan.kowalski@adres.com
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;&lt;/pre&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;To plik style.css:&lt;/p&gt;

&lt;pre class=&quot;brush:css;&quot;&gt;
body{
  background-color: #303030;
  color: #ffffff;
  font-family: &quot;Lato&quot;, sans-serif;
  font-size: 20px;
}
#container{
  width: 1000px;
  margin-left: auto;
	margin-right: auto;
  display: flex;
  flex-direction: column;
}
.rectangle{
  width: 960px;
  margin: 20px;
  display: flex;
  clear:both;
  text-align: center;
}
.square{
  display: flex;
  flex-direction: row;
  width: 50%;
  margin-bottom: 40px
}
#logo{
  font-family: &quot;Josefin Sans&quot;, sans-serif;
  font-size: 70px;
  width: 600px;
  text-align: left
}
#zegar{
  font-family: &quot;Josefin Sans&quot;, sans-serif;
  font-size: 70px;
  text-align: left
}
#square1{
  display: grid;
  grid-template-columns: 250px 250px;
  grid-template-rows: 162px 162px 172px;
}
.tile1{
  margin: 10px;
  background-color: #3095d3;
  text-align: center
}
.tile1:hover{
  background-color: #2084c2;
}
.tile2:hover{
  background-color: #555555;
}
.tile3:hover{
  background-color: #82b637;
}
.tile2{
  margin: 10px;
  background-color: #666666;
  text-align: center
}
.tile3{
  margin: 10px;
  background-color: #93c748;
  text-align: center
}
.tile4{
  margin: 10px;
  background-color: #ee5a32;
  grid-column: span 2;
  text-align: center;
  font-size: 26px;
  padding: 30px;
  line-height: 150%;
}
#square2{
  display: grid;
  grid-template: 324px 172px / repeat(4, 120px);
}
.tile5{
  margin: 10px;
  grid-column: span 4;
  background-color: #666666;
  text-align: center;
  text-align: justify;
  padding: 30px
}
.yt:hover{
  background-color: #c83237;
}
.fb:hover{
  background-color: #3557a2;
}
.gplus:hover{
  background-color: #c84222;
}
.tw:hover{
  background-color: #2084c2;
}
.yt{
  margin: 10px;
  background-color: #d94348;
}
.fb{
  margin: 10px;
  background-color: #4668b3;
}
.gplus{
  margin: 10px;
  background-color: #d95333;
}
.tw{
  margin: 10px;
  background-color: #3095d3;
}
a.tilelink{
  color: #ffffff;
  text-decoration: none;
  display: block;
  width: 100%;
  height: 100%;
}&lt;/pre&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&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</guid>
<pubDate>Sun, 07 Jul 2024 14:16:12 +0000</pubDate>
</item>
<item>
<title>SPOJ - Lamacz GG</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2001/spoj-lamacz-gg</link>
<description>Hej,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Proszę o pomoc z programem łamacz GG. Niestety nie działa mi dziś IDEONE (nie wiem dlaczego) i mam problem z odnalezieniem błędu. Generalnie program działa i zwraca takie wartości jakie trzeba.&lt;br /&gt;
&lt;br /&gt;
Kod programu:&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;unordered_map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
string odszyfruj(const string&amp;amp; zaszyfrowany) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unordered_map&amp;lt;string, char&amp;gt; translation = {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;quot;BG&amp;quot;, 'a'}, {&amp;quot;CG&amp;quot;, 'b'}, {&amp;quot;DG&amp;quot;, 'c'}, {&amp;quot;EG&amp;quot;, 'd'}, {&amp;quot;FG&amp;quot;, 'e'}, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;quot;GG&amp;quot;, 'f'}, {&amp;quot;HG&amp;quot;, 'g'}, {&amp;quot;IG&amp;quot;, 'h'}, {&amp;quot;JG&amp;quot;, 'i'}, {&amp;quot;KG&amp;quot;, 'j'}, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;quot;LG&amp;quot;, 'k'}, {&amp;quot;PG&amp;quot;, 'o'}, {&amp;quot;CH&amp;quot;, 'r'}, {&amp;quot;DH&amp;quot;, 's'}, {&amp;quot;EH&amp;quot;, 't'}, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;quot;HH&amp;quot;, 'x'}, {&amp;quot;KH&amp;quot;, 'z'}&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;string odszyfrowany;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (size_t i = 0; i &amp;lt; zaszyfrowany.length(); i += 2) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string pair = zaszyfrowany.substr(i, 2);&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;odszyfrowany += translation[pair];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return odszyfrowany;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string odszyfrowany;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (getline(cin, odszyfrowany)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (odszyfrowany.size() == 20) {&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; odszyfruj(odszyfrowany) &amp;lt;&amp;lt; endl;&lt;br /&gt;
&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;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;
}</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2001/spoj-lamacz-gg</guid>
<pubDate>Mon, 01 Jul 2024 19:52:46 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Cześć,&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Już w najbliższy czwartek (13 czerwca) odbędzie się rozmowa online z absolwentem Projektu Danielem Rudnik w której możesz wziąć udział i zadać swoje pytanie Danielowi.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Oto link do rozmowy:&amp;nbsp;&lt;a rel=&quot;nofollow&quot; href=&quot;https://rozmowa.przyszlyprogramista.pl/&quot;&gt;rozmowa.przyszlyprogramista.pl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Napisz tylko poniżej swoje pytanie, aby Daniel mógł się jak najlepiej przygotować.&lt;/p&gt;

&lt;p&gt;A poniżej umieszczam kilka informacji o Danielu i czym się w pracy zajmuje:&lt;/p&gt;

&lt;p&gt;Z wykształcenia jestem inżynierem mechanikiem, i przed podjęciem pracy w IT pracowałem pod ziemią - kopalnia węgla kamiennego, jako inżynier mechanik przez 10 lat. Do głównych zadań należało nadzorowanie pracy podległym pracownikom, opracowywanie instrukcji oraz technologii, wykonywanie obliczeń inżynierskich.&lt;/p&gt;

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

&lt;p&gt;Od 2 lat pracuję w NASK Państwowy Instytut Badawczy jako Test-Sec-Ops-Dev ( ) w pionie Systemów Cyberbezpieczeństwa, mój dział nosi nazwę Dział Systemów Bezpieczeństwa Sieci (wcześniej: Złożonych Systemów Bezpieczeństwa).&lt;/p&gt;

&lt;p&gt;Projekty w których pracuję dotyczą głównie cybersecurity (wraz z użyciem AI do tego procesu)&amp;nbsp; oraz uczenia maszynowego przez trenowanie głębokich sieci neuronowych.&lt;/p&gt;

&lt;p&gt;Do najważniejszych projektów należą:&lt;/p&gt;

&lt;p&gt;ARAKIS - jego zadaniem jest wykrywanie w ruchu sieciowym zdarzeń, które stwarzają zagrożenie dla usług cyfrowych oraz systemów automatyki przemysłowej.&lt;/p&gt;

&lt;p&gt;System obserwuje ruch sieciowy przy pomocy specjalnie zaprojektowanych sond i sensorów instalowanych w sieciach IT/OT. Zebrane w ten sposób informacje są poddawane analizie w centralnym klastrze obliczeniowym wykorzystującym najnowsze algorytmy uczenia maszynowego do przetwarzania wielkich zbiorów danych. Dodatkowo system analizuje logi systemowe oraz próbki złośliwego oprogramowania.&lt;/p&gt;

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

&lt;p&gt;FLDX&amp;nbsp; - to system do szybkiej i niezwykle skutecznej ochrony dostępności usług w sieci – niezależnie od tego, czy źródłem zagrożenia jest atak wolumetryczny typu DDoS, czy nagły wzrost aktywności użytkowników. Zachowanie sprawiedliwego podziału przepustowości sieci to naczelny cel systemu FLDX osiągany w bezkonkurencyjnym czasie nawet&amp;nbsp;10 sekund.&amp;nbsp;W przeciwieństwie do rozwiązań oferowanych obecnie na rynku antyDDoS, system FLDX nie opiera się bowiem na bazie sygnatur i statycznych reguł, lecz wykorzystując najnowsze algorytmy uczenia maszynowego, dynamicznie&amp;nbsp;samodzielnie dostosowuje filtry do aktualnej sytuacji.&lt;/p&gt;

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

&lt;p&gt;NLP Toolkit -&amp;nbsp; oferuje narzędzia do przetwarzania oraz analizy treści i stylu dokumentów tekstowych w języku polskim oraz angielskim, rosyjskim, niemieckim, francuskim.&lt;br&gt;
Narzędzia zarówno praktyczne, takie jak anonimizacja, streszczenie czy preprocessing tekstu o różnych formatach (txt, pdf), jak także naukowe, pozwalające na wykorzystanie metryk lingwistycznych i tworzenie stylometrycznych reprezentacji wektorowych.&lt;/p&gt;

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

&lt;p&gt;BotSense -System&amp;nbsp; wykrywa w czasie rzeczywistym próby przejęcia kont i nieautoryzowanych transakcji finansowych spowodowanych działaniem malwaru umieszczonego na komputerach Klientów banku korzystających z serwisu e-bankowości.&lt;/p&gt;

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

&lt;p&gt;W pracy używam głównie Pythona (wersje od 3.5 do 3.11) - który jest wiodącym językiem na BE w większości projektów w których uczestniczę. Wykorzystujemy głównie frameworki FastAPI oraz Flask a do walidacji danych używamy biblioteki Pydantic 2.0. Na własne potrzeby używam również C++(od wersji 17 do 20) - piszę w nim moduły obliczeniowe lub systemowe do Pythona. Mam również epizodyczne przygody z Frontendem - głównie React/TypeScript/Tailwind - ale staram się ich unikać.&lt;/p&gt;

&lt;p&gt;W pracy używam również narzędzi dev-opsowych jak Kubernetes, Docker, BuildPack, Ansible&lt;/p&gt;

&lt;p&gt;Jeżeli chodzi o bazy danych to głównie PostgreSQL oraz MongoDB&lt;/p&gt;

&lt;p&gt;Dodatkowych technologii jest cała masa więc wymienię tylko najbardziej znane:&lt;br&gt;
ElasticSearch,Redis, Kafka,Netflow,Netscope,Celery,Kibana,Logstash, oraz narzędzia do testów (Selenium, Cypress,Playwright).&lt;/p&gt;</description>
<category>Motywacja</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1996/rozmowa-online-danielem-specjalist%C4%85-cyberbezpiecze%C5%84stwa</guid>
<pubDate>Tue, 11 Jun 2024 16:23:19 +0000</pubDate>
</item>
<item>
<title>SPOJ PTROL-ROL</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1993/spoj-ptrol-rol</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Tak jak w temacie - problem dotyczy programu na SPOJu.&lt;br /&gt;
&lt;br /&gt;
Poniżej wklejam kod programu a problem jest następujący - na wyjściu program jako element 0 tablicy traktuje to co wyświetla na konsoli a nie to co jest na wejściu.&lt;br /&gt;
&lt;br /&gt;
Czyli:&lt;br /&gt;
&lt;br /&gt;
wejście: 1 2 3 4 5 6 7&lt;br /&gt;
&lt;br /&gt;
wyjście: 2 3 4 5 6 7 2 (a powinno być 2 3 4 5 6 7 1)&lt;br /&gt;
&lt;br /&gt;
Proszę o podpowiedz co moze byc 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;
void wczytajLiczbyDoTablicy(int tablica[], int rozmiar)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for (int i=0; i&amp;lt;rozmiar; 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;cin &amp;gt;&amp;gt; tablica[i];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void przesunElementyTablicy(int tablica[], int rozmiar)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for (int i = 0; i &amp;lt; rozmiar; 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;tablica[i] = tablica[i+1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;tablica[rozmiar-1] = tablica[0];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void wypiszElementyTablicy(int tablica[], int rozmiar)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for (int i = 0; i&amp;lt;rozmiar; 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;cout &amp;lt;&amp;lt; tablica[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
}&lt;br /&gt;
int main() {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;int iloscElementow, iloscTestow;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;int *tablica;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;cin &amp;gt;&amp;gt; iloscTestow;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for (int i=0; i&amp;lt;iloscTestow; 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;cin &amp;gt;&amp;gt; iloscElementow;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tablica = new int[iloscElementow];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wczytajLiczbyDoTablicy(tablica, iloscElementow);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;przesunElementyTablicy(tablica, iloscElementow);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wypiszElementyTablicy(tablica, iloscElementow);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;delete [] tablica;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
return 0;&lt;br /&gt;
&lt;br /&gt;
}</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1993/spoj-ptrol-rol</guid>
<pubDate>Wed, 05 Jun 2024 12:01:26 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;Obecnie tworzę aplikację internetową opartą na frameworku Express.js, która pozwala użytkownikom tworzyć, edytować i usuwać posty na swoim blogu.&lt;/p&gt;

&lt;p&gt;Mam problem z dynamicznym routingiem nowo utworzonych postów. Chcę, aby użytkownik po poprawnym przesłaniu danych (tj. tytułu i treści posta) poprzez formularz metodą POST, przechodził następnie do podstrony, gdzie endpointem jest nazwa utworzonego artykułu, np. &lt;em&gt;http://localhost:3000/nazwaposta&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Obecnie aplikacja poprawnie tworzy nowy plik EJS w folderze &lt;em&gt;/views&lt;/em&gt;, gdzie przechowuję wszystkie pliki dla każdej trasy. Jednak po kliknięciu na link&amp;nbsp;wskazujący na tę konkretną trasę, strona nie ładuje się i otrzymuję komunikat informujący, że serwer nie może obsłużyć tej strony.&lt;/p&gt;

&lt;pre&gt;
Nie można uzyskać GET /post name&lt;/pre&gt;

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

&lt;p&gt;W pliku index.js próbowałem załadować nowo utworzone trasy za pomocą pętli, ale nie przeszło to testu. Serwer nie rozpoznaje tych tras. Kiedy na sztywno&amp;nbsp;wpisuję nazwę, strona ładuje się poprawnie (patrz: zakomentowany fragment kodu).&amp;nbsp; Nazwy ścieżek i endpointów są zapisywane w tablicach: &lt;em&gt;paths&lt;/em&gt; oraz &lt;em&gt;posts&lt;/em&gt;.&amp;nbsp;Chciałbym&amp;nbsp;obsługiwać&amp;nbsp;te trasy dynamicznie, tak aby na przykład za pomocą pętli załadować wszystkie utworzone trasy za pomocą metody app.get(), a nie jak do tej pory na sztywno je wpisywać.&amp;nbsp;Jak mogę to zrobić?&lt;/p&gt;

&lt;p&gt;Poniżej zamieściłem&amp;nbsp;kod pliku index.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;;

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

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

app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(&quot;public&quot;));


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(&quot;/nazwaposta&quot;),
//   (req, res) =&amp;gt; {
//     res.render(&quot;nazwaposta.ejs&quot;, {article: posts[0]});
//   };

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

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

&lt;p&gt;Kod przykładowego pliku EJS utworzonego za pomocą formularza :&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
&amp;lt;%- include(&quot;header.ejs&quot;) %&amp;gt;

    &amp;lt;% if(article) { %&amp;gt;
        &amp;lt;h2&amp;gt;&amp;lt;%=article.title %&amp;gt;&amp;lt;/h2&amp;gt;
        &amp;lt;p&amp;gt;&amp;lt;%=article.htmlContent %&amp;gt;&amp;lt;/p&amp;gt;
    &amp;lt;% } %&amp;gt;

&amp;lt;%- include(&quot;footer.ejs&quot;) %&amp;gt;&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</guid>
<pubDate>Mon, 03 Jun 2024 09:57:05 +0000</pubDate>
</item>
<item>
<title>id użytkowników w pliku xml</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1987/id-u%C5%BCytkownik%C3%B3w-w-pliku-xml</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;Mam taki problem z aplikacją budżetową, że kiedy zarejestruję użytkownika i uruchomię program od nowa, to nie mogę się już nim zalogować, bo nie znajduje tego loginu i w pliku liczy od nowa od 1. Tak jest za każdym razem. Dopóki nie zresetuję programu, to wszystko jest ok. Czemu tak się dzieje, skoro dodaję każdego użytkownika do tego samego wektora users? Tutaj dodam jeszcze fragmenty kodu:&lt;/p&gt;

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

#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;cstdlib&amp;gt;
#include &quot;userFile.h&quot;
#include &quot;user.h&quot;
#include &quot;auxiliaryMethod.h&quot;

using namespace std;

class UserManager
{
    int loggedUserId;
    UserFile userFile;
    vector &amp;lt;User&amp;gt; users;

    User enterUserData();

public:
    UserManager(string userFileName) : userFile(userFileName) {
        loggedUserId = 0;
        users = userFile.loadUsersFromFile();
    }
    void registerUser();
    void loginUser();
    void changeUserPassword();
    void logoutUser();
    bool isUserLoggedIn();
    int getLoggedUserId();
    bool checkIfLoginExists(const string &amp;amp;login);
    int increaseUserIdAfterRegisterUser();
};

#endif&lt;/pre&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
User UserManager::enterUserData()
{
    User person;
    string firstPassword = &quot;&quot;, secondPassword = &quot;&quot;;

    cout &amp;lt;&amp;lt; &quot;Enter name: &quot; &amp;lt;&amp;lt; endl;
    person.name = AuxiliaryMethod::enterLine();
    if(!AuxiliaryMethod::validateInput(person.name)){
        cout &amp;lt;&amp;lt; &quot;Incorrect name. Try again&quot; &amp;lt;&amp;lt; endl;
        system(&quot;pause&quot;);
    }
    cout &amp;lt;&amp;lt; &quot;Enter surname: &quot; &amp;lt;&amp;lt; endl;
    person.surname = AuxiliaryMethod::enterLine();
    if(!AuxiliaryMethod::validateInput(person.surname)){
        cout &amp;lt;&amp;lt; &quot;Incorrect surname. Try again&quot; &amp;lt;&amp;lt; endl;
        system(&quot;pause&quot;);
    }
    while (true) {
        cout &amp;lt;&amp;lt; &quot;Enter login: &quot; &amp;lt;&amp;lt; endl;
        person.login = AuxiliaryMethod::enterLine();
        if (checkIfLoginExists(person.login)) {
            cout &amp;lt;&amp;lt; &quot;This login already exists. Please choose another one.&quot; &amp;lt;&amp;lt; endl;
        } else {
            break;
        }
    }
    while(1){
        cout &amp;lt;&amp;lt; &quot;Enter password: &quot; &amp;lt;&amp;lt; endl;
        firstPassword = AuxiliaryMethod::enterLine();
        cout &amp;lt;&amp;lt; &quot;Repeat password: &quot; &amp;lt;&amp;lt; endl;
        secondPassword = AuxiliaryMethod::enterLine();
        if(firstPassword == secondPassword){
            person.password = secondPassword;
            break;
        }
        else{
            cout &amp;lt;&amp;lt; &quot;Entered passwords are differ. Try again&quot; &amp;lt;&amp;lt; endl;
        }
    }
    return person;
}
void UserManager::registerUser()
{
    system (&quot;cls&quot;);
    User user = enterUserData();
    userFile.addUserToFile(user);
    users.push_back(user);
}&lt;/pre&gt;

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

#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &quot;Markup.h&quot;
#include &quot;File.h&quot;
#include &quot;user.h&quot;
using namespace std;

class UserFile :public File
{
    CMarkup xml;
public:
    UserFile (string userFileName) : File(userFileName){}
    vector &amp;lt;User&amp;gt; loadUsersFromFile();
    bool addUserToFile (User &amp;amp;user);
    bool changePasswordInFile(int id, const string &amp;amp;password);
};

#endif&lt;/pre&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &quot;userFile.h&quot;

vector &amp;lt;User&amp;gt; UserFile::loadUsersFromFile()
{
    vector &amp;lt;User&amp;gt; users;
    if(!xml.Load(getFileName())){
        cout &amp;lt;&amp;lt; &quot;File doesn't exist&quot; &amp;lt;&amp;lt; endl;
        return users;
    }
    else{
        User user;
        xml.ResetPos();
        xml.FindElem();
        xml.IntoElem();
        xml.FindElem();
        do{
            xml.IntoElem();

            xml.FindElem(&quot;id&quot;);
            user.id = stoi(xml.GetData());

            xml.FindElem(&quot;name&quot;);
            user.name = xml.GetData();

            xml.FindElem(&quot;surname&quot;);
            user.surname = xml.GetData();

            xml.FindElem(&quot;login&quot;);
            user.login = xml.GetData();

            xml.FindElem(&quot;password&quot;);
            user.password = xml.GetData();

            xml.OutOfElem();
        } while(xml.FindElem());
        users.push_back(user);
    }
    return users;
}
bool UserFile::addUserToFile (User &amp;amp;user)
{
    user.id = getLastId() + 1;
    if(!xml.Load(getFileName())){
        xml.SetDoc(&quot;&amp;lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&amp;gt;\r\n&quot;);
        xml.AddElem(&quot;Root&quot;);
    }
    xml.ResetPos();
    xml.FindElem(&quot;Root&quot;);
    xml.IntoElem();
    xml.AddElem(&quot;User&quot;);
    xml.IntoElem();
    xml.AddElem(&quot;id&quot;, to_string(user.id));
    xml.AddElem(&quot;name&quot;, user.name);
    xml.AddElem(&quot;surname&quot;, user.surname);
    xml.AddElem(&quot;login&quot;, user.login);
    xml.AddElem(&quot;password&quot;, user.password);

    if (!xml.Save(getFileName())){
        cerr &amp;lt;&amp;lt; &quot;Error: Unable to save the XML file&quot; &amp;lt;&amp;lt; endl;
        return false;
    }
    xml.Save(getFileName());
    lastId = user.id;
    xml.OutOfElem();
    cout &amp;lt;&amp;lt; &quot;User has been added successfully&quot; &amp;lt;&amp;lt; endl;
    system(&quot;pause&quot;);
    return true;
}&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1987/id-u%C5%BCytkownik%C3%B3w-w-pliku-xml</guid>
<pubDate>Fri, 31 May 2024 17:56:04 +0000</pubDate>
</item>
<item>
<title>C++ SPOJ Glutton - Obżartuchy</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1984/c-spoj-glutton-ob%C5%BCartuchy</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
Po przerobieniu materiału od Pana Mirosława Zelenta sugeruje on wykonanie programu Glutton - obżartuchy.&lt;br /&gt;
&lt;br /&gt;
Program mam gotowy i wynik tez jest dobry, natomiast SPOJ go nie przepuszcza.&lt;br /&gt;
&lt;br /&gt;
Mógłbym prosić o podpowiedz co może byc nie tak :&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 zestawy, gluttons, czas, czasLaczny, result;&lt;br /&gt;
int boxSize;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;cin &amp;gt;&amp;gt; zestawy;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for (int i=0; i &amp;lt; zestawy; 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;czasLaczny = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cin &amp;gt;&amp;gt; gluttons &amp;gt;&amp;gt; boxSize;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;for (int j=0; j &amp;lt; gluttons; j++)&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;cin &amp;gt;&amp;gt; czas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;czasLaczny += 86400/czas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if(czasLaczny % boxSize == 0) result = czasLaczny / boxSize;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else result = (czasLaczny/boxSize) + 1;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; result;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1984/c-spoj-glutton-ob%C5%BCartuchy</guid>
<pubDate>Mon, 27 May 2024 12:40:12 +0000</pubDate>
</item>
<item>
<title>SPOJ - nie wykrywa zatwierdzonych programow.</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1976/spoj-nie-wykrywa-zatwierdzonych-programow</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Czy ktoś miał taki problem na SPOJu, że programy są zaakceptowane natomiast nie pokazuje ich jako &amp;quot;Problems solved&amp;quot; ?</description>
<category>Pozostałe tematy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1976/spoj-nie-wykrywa-zatwierdzonych-programow</guid>
<pubDate>Sun, 19 May 2024 18:29:28 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Hej. Piszę funkcję zmiany hasła, jednak poza konsolą zmiany nie zapisują się w pliku.&amp;nbsp;&lt;br&gt;
Pomyślałam, że wywołam funkcję&amp;nbsp;zapiszWszystkichUzytkownikowDoPliku w main po wywołaniu funkcji zmiany hasła.&amp;nbsp;&lt;br&gt;
Zadeklarowałam funkcję&amp;nbsp;zapiszWszystkichUzytkownikowDoPliku zarówno w klasie KsiazkaAdresowa,&amp;nbsp;PlikZUzytkownikami i UzytkownikManager.&amp;nbsp;&lt;br&gt;
Czuję, że coś za mocno kombinuję i byłabym wdzięczna za podpowiedź o co chodzi z poprawnym zapisaniem do pliku nowego hasła.&lt;br&gt;
Tu main: (w moim pliku już są użytkownicy zarejestrowani więc pominęłam tu wywołanie)&lt;/p&gt;

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

#include &quot;KsiazkaAdresowa.h&quot;

using namespace std;

int main()
{
    KsiazkaAdresowa ksiazkaAdresowa(&quot;Uzytkownicy2.txt&quot;);

    ksiazkaAdresowa.logowanieUzytkownika();
    ksiazkaAdresowa.zmianaHaslaZalogowanegoUzytkownika();
    ksiazkaAdresowa.zapiszWszystkichUzytkownikowDoPliku();

    return 0;
}

&lt;/pre&gt;

&lt;p&gt;Tu nagłówkowy KsiazkaAdresowa&lt;/p&gt;

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

#include &amp;lt;iostream&amp;gt;

#include &quot;UzytkownikManager.h&quot;
#include &quot;AdresatManager.h&quot;


using namespace std;

class KsiazkaAdresowa
{
    UzytkownikManager uzytkownikManager;
public:
    KsiazkaAdresowa(string nazwaPlikuZUzytkownikami) : uzytkownikManager(nazwaPlikuZUzytkownikami)
    {
        uzytkownikManager.wczytajUzytkownikowZPliku();
    };

    void rejestracjaUzytkownika();
    void wypiszWszystkichUzytkownikow();
    void wczytajUzytkownikowZPliku ();
    void logowanieUzytkownika();
    int pobierzIdZalogowanegoUzytkownika();
    void zmianaHaslaZalogowanegoUzytkownika();
    void zapiszWszystkichUzytkownikowDoPliku(vector &amp;lt;Uzytkownik&amp;gt; &amp;amp;uzytkownicy);

};

#endif
&lt;/pre&gt;

&lt;p&gt;Tu KsiazkaAdresowa.cpp&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &quot;KsiazkaAdresowa.h&quot;
#include &quot;PlikZUzytkownikami.h&quot;

void KsiazkaAdresowa::rejestracjaUzytkownika()
{
    uzytkownikManager.rejestracjaUzytkownika();
}
void KsiazkaAdresowa::wypiszWszystkichUzytkownikow()
{
    uzytkownikManager.wypiszWszystkichUzytkownikow();
}
void KsiazkaAdresowa::logowanieUzytkownika()
{
    uzytkownikManager.logowanieUzytkownika();
}
int KsiazkaAdresowa::pobierzIdZalogowanegoUzytkownika()
{
    return uzytkownikManager.pobierzIdZalogowanegoUzytkownika();
}
void KsiazkaAdresowa::zmianaHaslaZalogowanegoUzytkownika()
{
    int idZalogowanegoUzytkownika = pobierzIdZalogowanegoUzytkownika();
    uzytkownikManager.zmianaHaslaZalogowanegoUzytkownika(idZalogowanegoUzytkownika);
}
void KsiazkaAdresowa::zapiszWszystkichUzytkownikowDoPliku(vector &amp;lt;Uzytkownik&amp;gt; &amp;amp;uzytkownicy)
{
     uzytkownikManager.zapiszWszystkichUzytkownikowDoPliku();
}
&lt;/pre&gt;

&lt;p&gt;PlikZUzytkownikami&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
#ifndef PLIKZUZYTKOWNIKAMI_H
#define PLIKZUZYTKOWNIKAMI_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 &quot;Uzytkownik.h&quot;
#include &quot;MetodyPomocnicze.h&quot;

using namespace std;

class PlikZUzytkownikami
{
    const string nazwaPlikuZUzytkownikami;
    fstream plikTekstowy;

    bool czyPlikJestPusty();
    string zamienDaneUzytkownikaNaLinieZDanymiOddzielonaPionowymiKreskami(Uzytkownik uzytkownik);
    Uzytkownik pobierzDaneUzytkownika(string daneJednegoUzytkownikaOddzielonePionowymiKreskami);

public:
    PlikZUzytkownikami(string NAZWAPLIKUZUZYTKOWNIKAMI) : nazwaPlikuZUzytkownikami (NAZWAPLIKUZUZYTKOWNIKAMI){};
    void dopiszUzytkownikaDoPliku(Uzytkownik uzytkownik);
    vector &amp;lt;Uzytkownik&amp;gt; wczytajUzytkownikowZPliku();
   void zapiszWszystkichUzytkownikowDoPliku(vector&amp;lt;Uzytkownik&amp;gt; &amp;amp;uzytkownicy);

};

#endif
&lt;/pre&gt;

&lt;p&gt;.cpp&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
#include &quot;PlikZUzytkownikami.h&quot;

void PlikZUzytkownikami::dopiszUzytkownikaDoPliku(Uzytkownik uzytkownik)
{
    string liniaZDanymiUzytkownika = &quot;&quot;;
    plikTekstowy.open(nazwaPlikuZUzytkownikami.c_str(), ios::app);

    if (plikTekstowy.good() == true)
    {
        liniaZDanymiUzytkownika = zamienDaneUzytkownikaNaLinieZDanymiOddzielonaPionowymiKreskami(uzytkownik);

        if (czyPlikJestPusty() == true)
        {
            plikTekstowy &amp;lt;&amp;lt; liniaZDanymiUzytkownika;
        }
        else
        {
            plikTekstowy &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; liniaZDanymiUzytkownika ;
        }
    }
    else
        cout &amp;lt;&amp;lt; &quot;Nie udalo sie otworzyc pliku &quot; &amp;lt;&amp;lt; nazwaPlikuZUzytkownikami &amp;lt;&amp;lt; &quot; i zapisac w nim danych.&quot; &amp;lt;&amp;lt; endl;
    plikTekstowy.close();
}

bool PlikZUzytkownikami::czyPlikJestPusty()
{
    plikTekstowy.seekg(0, ios::end);
    if (plikTekstowy.tellg() == 0)
        return true;
    else
        return false;
}
string PlikZUzytkownikami::zamienDaneUzytkownikaNaLinieZDanymiOddzielonaPionowymiKreskami(Uzytkownik uzytkownik)
{
    string liniaZDanymiUzytkownika = &quot;&quot;;

    liniaZDanymiUzytkownika += MetodyPomocnicze::konwerjsaIntNaString(uzytkownik.pobierzId())+ '|';
    liniaZDanymiUzytkownika += uzytkownik.pobierzLogin() + '|';
    liniaZDanymiUzytkownika += uzytkownik.pobierzHaslo() + '|';

    return liniaZDanymiUzytkownika;
}
vector &amp;lt;Uzytkownik&amp;gt; PlikZUzytkownikami::wczytajUzytkownikowZPliku()
{
    Uzytkownik uzytkownik;
    vector &amp;lt;Uzytkownik&amp;gt; uzytkownicy;
    string daneJednegoUzytkownikaOddzielonePionowymiKreskami = &quot;&quot;;

    plikTekstowy.open(nazwaPlikuZUzytkownikami.c_str(), ios::in);

    if (plikTekstowy.good() == true)
    {
        while (getline(plikTekstowy, daneJednegoUzytkownikaOddzielonePionowymiKreskami))
        {
            uzytkownik = pobierzDaneUzytkownika(daneJednegoUzytkownikaOddzielonePionowymiKreskami);
            uzytkownicy.push_back(uzytkownik);
        }
        plikTekstowy.close();
    }
    return uzytkownicy;

}
Uzytkownik PlikZUzytkownikami::pobierzDaneUzytkownika(string daneJednegoUzytkownikaOddzielonePionowymiKreskami)
{
    Uzytkownik uzytkownik;
    string pojedynczaDanaUzytkownika = &quot;&quot;;
    int numerPojedynczejDanejUzytkownika = 1;

    for (int pozycjaZnaku = 0; pozycjaZnaku &amp;lt; daneJednegoUzytkownikaOddzielonePionowymiKreskami.length(); pozycjaZnaku++)
    {
        if (daneJednegoUzytkownikaOddzielonePionowymiKreskami[pozycjaZnaku] != '|')
        {
            pojedynczaDanaUzytkownika += daneJednegoUzytkownikaOddzielonePionowymiKreskami[pozycjaZnaku];
        }
        else
        {
            switch(numerPojedynczejDanejUzytkownika)
            {
            case 1:
                uzytkownik.ustawId(atoi(pojedynczaDanaUzytkownika.c_str()));
                break;
            case 2:
                uzytkownik.ustawLogin(pojedynczaDanaUzytkownika);
                break;
            case 3:
                uzytkownik.ustawHaslo(pojedynczaDanaUzytkownika);
                break;
            }
            pojedynczaDanaUzytkownika = &quot;&quot;;
            numerPojedynczejDanejUzytkownika++;
        }
    }
    return uzytkownik;
}
void PlikZUzytkownikami::zapiszWszystkichUzytkownikowDoPliku(vector&amp;lt;Uzytkownik&amp;gt; &amp;amp;uzytkownicy)
{
    fstream plikTekstowy;
    string liniaZDanymiUzytkownika = &quot;&quot;;

    plikTekstowy.open(nazwaPlikuZUzytkownikami.c_str(), ios::out);

    if (plikTekstowy.good())
    {
        for (const auto &amp;amp;uzytkownik : uzytkownicy)
        {
            liniaZDanymiUzytkownika = zamienDaneUzytkownikaNaLinieZDanymiOddzielonaPionowymiKreskami(uzytkownik);
            plikTekstowy &amp;lt;&amp;lt; liniaZDanymiUzytkownika &amp;lt;&amp;lt; endl;
        }
    }
    else
    {
        cout &amp;lt;&amp;lt; &quot;Nie mozna otworzyc pliku &quot; &amp;lt;&amp;lt; nazwaPlikuZUzytkownikami &amp;lt;&amp;lt; &quot; do zapisu.&quot; &amp;lt;&amp;lt; endl;
    }

    plikTekstowy.close();
}
&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
&amp;nbsp;&lt;/p&gt;</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</guid>
<pubDate>Mon, 13 May 2024 16:17:35 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Cześć,&amp;nbsp;&lt;/p&gt;

&lt;p&gt;to mój pierwszy post wiec na wstępie witam&amp;nbsp; wszystkich serdecznie:)&lt;/p&gt;

&lt;p&gt;Mam problem przy programie z tytułu, mianowicie przy przeliczaniu kwoty z PLN n EUR program raz daje liczbę bez miejsc po przecinku a innym razem wkleja kwotę z kilkoma miejscami po przecinku. Ma ktoś pomysł jak to naprawić? Pierwsze co próbowałem z setprecision ale w żaden sposób nie udało mi się uzyskać jej działania w moim programie bo jeśli dobrze rozumiem można ta funkcja modyfikować tylko dane w strumieniach wejścia/wyjścia ?&lt;/p&gt;

&lt;p&gt;Chętnie usłyszę też rady co do całości kodu bo być może prze kombinowałem koncepcyjnie cały problem.&amp;nbsp;&lt;/p&gt;

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

using namespace std;

string konwersjaDoubleNaString (double liczba);
string konwertujKwoteNaEuro (string &amp;amp;zdanie, int pozycjaPocz, int pozycjaKon, int i);
string zamienPLNnaEUR (string &amp;amp;zdanie);
string przeliczNaEuroPoKursie (string &amp;amp;zdanie);

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

string konwersjaDoubleNaString (double liczba)
{
    ostringstream ss;
    ss &amp;lt;&amp;lt; liczba;
    string str = ss.str();
    return str;
}

string konwertujKwoteNaEuro (string &amp;amp;zdanie, int pozycjaPocz, int pozycjaKon, int i)
{
    string kwotaTekst;
    const double EUR=4.12;
    double kwotaPLN=0.00,kwotaEUR=0.00;
    cout&amp;lt;&amp;lt;fixed&amp;lt;&amp;lt;setprecision(3);
    kwotaTekst=zdanie.substr(pozycjaPocz,(pozycjaKon-pozycjaPocz)+1);
    kwotaPLN=stof(kwotaTekst);
    kwotaEUR=kwotaPLN/EUR;
    zdanie.replace(pozycjaPocz,(pozycjaKon-pozycjaPocz)+1,konwersjaDoubleNaString(kwotaEUR));
    kwotaEUR=0;
    kwotaPLN=0;
    return zdanie;
}

string zamienPLNnaEUR (string &amp;amp;zdanie)
{
    for (int i=0; i&amp;lt;zdanie.length(); i++)
    {
        if (zdanie[i]=='P' &amp;amp;&amp;amp; zdanie[i+1]=='L' &amp;amp;&amp;amp; zdanie[i+2]=='N' )
        {
            zdanie.replace(i,3,&quot;EUR&quot;);
        }
    }
    return zdanie;
}

string przeliczNaEuroPoKursie (string &amp;amp;zdanie)
{
    int iloscPozycji=0,pozycjaPocz=0,pozycjaKon=0;
    for (int i=0; i&amp;lt;zdanie.length(); i++)
    {
        if (isdigit(zdanie[i])!=0 &amp;amp;&amp;amp; isdigit(zdanie[i-1])==0 &amp;amp;&amp;amp; isdigit(zdanie[i-2])==0 ) //wyszukiwanie poczatku liczby
        {
            pozycjaPocz = i;
        }
        if (isdigit(zdanie[i])!=0 &amp;amp;&amp;amp; isdigit(zdanie[i+1])==0 &amp;amp;&amp;amp; isdigit(zdanie[i+2])==0 ) //wyszukiwanie konca liczby
        {
            pozycjaKon = i;
        }

        if (pozycjaPocz!=0 &amp;amp;&amp;amp; pozycjaKon!=0)
        {
            konwertujKwoteNaEuro(zdanie,pozycjaPocz,pozycjaKon,i);
            i=pozycjaKon+10;
            pozycjaKon=0;
            pozycjaPocz=0;
        }
    }
    return zamienPLNnaEUR(zdanie);
}&lt;/pre&gt;

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

&lt;p&gt;Arek&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</guid>
<pubDate>Tue, 07 May 2024 20:17:31 +0000</pubDate>
</item>
<item>
<title>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</link>
<description>&lt;p&gt;Jak w tytule - w firmie u żony kolejne rekrutacje - więcej info w linku (były dwa ale COI chyba aktualizuje oferty pracy przez co mają co chwile inne id). W podanym linku można znaleźć obie :&lt;/p&gt;

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

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Oferty pracy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1961/oferty-pracy-jr-java-dev-%26-jr-fe-dev</guid>
<pubDate>Sun, 21 Apr 2024 17:35:00 +0000</pubDate>
</item>
<item>
<title>undefined reference</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1957/undefined-reference</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;Co tutaj jest źle, bo pojawia mi się błąd undefined reference to `PlikZAdresatami::pobierzIdUzytkownikaZDanychOddzielonychPionowymiKreskami(std::__cxx11::basic_string&amp;lt;char, std::char_traits&amp;lt;char&amp;gt;, std::allocator&amp;lt;char&amp;gt; &amp;gt;)'?&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
int pobierzIdUzytkownikaZDanychOddzielonychPionowymiKreskami(string daneJednegoAdresataOddzielonePionowymiKreskami)
{
    int pozycjaRozpoczeciaIdUzytkownika = daneJednegoAdresataOddzielonePionowymiKreskami.find_first_of('|') + 1;
    int idUzytkownika = MetodyPomocnicze::konwersjaStringNaInt(MetodyPomocnicze::pobierzLiczbe(daneJednegoAdresataOddzielonePionowymiKreskami, pozycjaRozpoczeciaIdUzytkownika));
    return idUzytkownika;
}
vector&amp;lt;Adresat&amp;gt; PlikZAdresatami::wczytajAdresatowZalogowanegoUzytkownikaZPliku(int idZalogowanegoUzytkownika)
{
    Adresat adresat;
    vector &amp;lt;Adresat&amp;gt; adresaci;
    string daneJednegoAdresataOddzielonePionowymiKreskami = &quot;&quot;;
    string daneOstaniegoAdresataWPliku = &quot;&quot;;
    fstream plikTekstowy;
    plikTekstowy.open(nazwaPlikuZAdresatami.c_str(), ios::in);

    if (plikTekstowy.is_open() == true)
    {
        while (getline(plikTekstowy, daneJednegoAdresataOddzielonePionowymiKreskami))
        {
            if(idZalogowanegoUzytkownika == pobierzIdUzytkownikaZDanychOddzielonychPionowymiKreskami(daneJednegoAdresataOddzielonePionowymiKreskami))
            {
                adresat = pobierzDaneAdresata(daneJednegoAdresataOddzielonePionowymiKreskami);
                adresaci.push_back(adresat);
            }
        }
        daneOstaniegoAdresataWPliku = daneJednegoAdresataOddzielonePionowymiKreskami;
        plikTekstowy.close();
    }
    else
        cout &amp;lt;&amp;lt; &quot;Nie udalo sie otworzyc pliku i wczytac danych.&quot; &amp;lt;&amp;lt; endl;

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

&lt;p&gt;Tutaj plik .h:&lt;/p&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;

using namespace std;

class PlikZAdresatami
{
    const string nazwaPlikuZAdresatami;
    string zamienDaneAdresataNaLinieZDanymiOddzielonymiPionowymiKreskami(Adresat adresat);
    void usunPlik(string nazwaPlikuTymczasowego, string nazwaPlikuZAdresatami);
    void zmienNazwePliku(string nazwaPlikuTymczasowego, string nazwaPlikuZAdresatami);

public:
    PlikZAdresatami(string nazwaPliku) : nazwaPlikuZAdresatami(nazwaPliku){};
    PlikZAdresatami() : nazwaPlikuZAdresatami(&quot;&quot;) {}
    void dopiszAdresataDoPliku(Adresat adresat);
    bool czyPlikJestPusty();
    void wyczyscWektorAdresaci();
    Adresat pobierzDaneAdresata(string daneJendegoAdresataOddzielonePionowymiKreskami);
    int pobierzIdAdresataZDanychOddzielonychPionowymiKreskami(string daneJednegoAdresataOddzielonePionowymiKreskami);
    int pobierzIdUzytkownikaZDanychOddzielonychPionowymiKreskami(string daneJednegoAdresataOddzielonePionowymiKreskami);
    vector &amp;lt;Adresat&amp;gt; wczytajAdresatowZalogowanegoUzytkownikaZPliku(int idZalogowanegoUzytkownika);
};

#endif&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1957/undefined-reference</guid>
<pubDate>Tue, 16 Apr 2024 15:08:34 +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>
<item>
<title>PHP/HTML -  logowanie, przechodzenie po stronach</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1879/php-html-logowanie-przechodzenie-po-stronach</link>
<description>Cześć, &amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
potrzebuję pomocy/pomysłu na rowiazanie problemu związanego z aplikacją budżetową. Po zalogowaniu pobieram id użytkownika z DB, i tutaj pojawia się problem z wywoływaniem stron. Przed zalogowaniem poruszam się po 3 stronach: &lt;br /&gt;
&lt;br /&gt;
-&amp;gt; logowania, &lt;br /&gt;
&lt;br /&gt;
-&amp;gt; rejestracji, &lt;br /&gt;
&lt;br /&gt;
-&amp;gt; reset hasła.&lt;br /&gt;
&lt;br /&gt;
Wykorzystuje w tym celu 'action'. Problem pojawia się po zalogowaniu, ponieważ nie mam pomysłu czy wykorzystywać nadal parametr action, czy ugryźć to w inny sposób, wykorzystując do tego ID usera pobranego z DB. Może ktoś miał podobny problem, będę wdzięczny za każdą podpowiedź.</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1879/php-html-logowanie-przechodzenie-po-stronach</guid>
<pubDate>Tue, 05 Mar 2024 18:37:13 +0000</pubDate>
</item>
<item>
<title>Aplikacja budżetowa - problem z załadowaniem wektora</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1863/aplikacja-bud%C5%BCetowa-problem-z-za%C5%82adowaniem-wektora</link>
<description>&lt;p&gt;Hej,&lt;br&gt;
&lt;br&gt;
Mam mały problem z apką budżetową - próbuję napisać funkcję, która będzie zapełniać wektor informacjami zawartymi w pliku .xml - niestety wektor przyjmuje tylko pierwszą strukturę, którą uda mu się znaleźć, a resztę olewa i kończy działanie - widzicie może tutaj w kodzie jakiś błąd, który może to powodować, albo jesteście w stanie podać jakiś powód, dla którego może to nie działać tak, jak powinno?&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;vector&amp;gt;
#include &quot;Markup.h&quot;
#include &quot;Operation.h&quot;
#include &quot;Type.h&quot;

using namespace std;

vector &amp;lt;Operation&amp;gt; XmlFile::loadOperationsFromFile(Type type, int loggedUserId)
{
    CMarkup workingFile;
    MCD_STR strXML;

    Operation operation;
    vector &amp;lt;Operation&amp;gt; operations;

    workingFile.Load(getFileName());

    switch (type)
    {
    case INCOME:
        workingFile.FindElem(&quot;Incomes&quot;);
        workingFile.IntoElem();
        break;

    case EXPANSE:
        workingFile.FindElem(&quot;Expanses&quot;);
        workingFile.IntoElem();
        break;
    }

    while(workingFile.FindElem(&quot;Operation&quot;))
    {
        workingFile.IntoElem();

        workingFile.FindElem(&quot;id&quot;);
        strXML = workingFile.GetData();
        operation.id = stoi(strXML);

        lastOperationId = operation.id;

        workingFile.FindElem(&quot;userId &quot;);
        strXML = workingFile.GetData();
        operation.userId = stoi(strXML);

        workingFile.FindElem(&quot;dateAsInt&quot;);
        strXML = workingFile.GetData();
        operation.dateAsInt = stoi(strXML);

        workingFile.FindElem(&quot;date&quot;);
        strXML = workingFile.GetData();
        operation.date = strXML;

        workingFile.FindElem(&quot;item&quot;);
        strXML = workingFile.GetData();
        operation.item = strXML;

        workingFile.FindElem(&quot;amount&quot;);
        strXML = workingFile.GetData();
        operation.amount = stod(strXML);

        if (operation.userId == loggedUserId)
        {
            operations.push_back(operation);
        }

        workingFile.OutOfElem();
    }
    workingFile.OutOfElem();

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

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C++</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1863/aplikacja-bud%C5%BCetowa-problem-z-za%C5%82adowaniem-wektora</guid>
<pubDate>Mon, 04 Mar 2024 11:21:40 +0000</pubDate>
</item>
</channel>
</rss>