Marcin Lewandowski

Programista PHP/MySQL, poszukuję...

Wypowiedzi

  • Marcin Lewandowski
    Wpis na grupie Swift w temacie Ilu nas jest?
    7.02.2017, 09:28

    Też dopiero zaczynam się uczyć w Swift :) Mam nadzieję że pomimo małej aktywności na grupie znajdą się osoby które będą w stanie pomóc początkującemu.

    Pozdrawiam,
    Marcin

  • Marcin Lewandowski
    Wpis na grupie Swift w temacie Czy warto zainteresować się tymi kursami ?
    26.09.2016, 09:45

    Dzięki za polecenie książek, przyjże się im :)

  • Marcin Lewandowski
    Wpis na grupie Swift w temacie Czy warto zainteresować się tymi kursami ?
    25.09.2016, 21:16

    Witam,

    Chcę nauczyć się programować w Swift i zastanawiam się nad sensem zakupu kursów i książek. Czy macie jakieś sprawdzone pozycje?

    Ja znalazłem coś takiego, pytanie tylko czy jest to warte tych pieniędzy?

    http://swiftlab.pl
    https://eduweb.pl/kursy/ios/aplikacje-ios-xcode-swift.html
    http://ebookpoint.pl/ksiazki/podstawy-jezyka-swift-pro...

  • Marcin Lewandowski
    Wpis na grupie Symfony w temacie Relacje pomiędzy encjami a grupowanie rekordów
    2.07.2016, 19:26

    Witam,

    Mam pewien problem z grupowaniem rekordów, a późniejszym odwoływaniem się do relacji.

    Mam encję Product, która zawiera relację do tabeli ze stanami magazynów



    /**
    * @ORM\Entity(repositoryClass = "Pit\VnetBundle\Repository\ProductRepository")
    * @ORM\Table(
    * name = "products",
    * uniqueConstraints = {
    * @ORM\UniqueConstraint(name = "name", columns = {"name"})
    * }
    * )
    *
    * @UniqueEntity(fields = {"name"})
    */
    class Product
    {
    // ...zbędny kod
    /**
    * @var ArrayCollection|WarehouseItem[]
    *
    * @ORM\OneToMany(targetEntity="WarehouseItem", mappedBy="product", cascade={"persist"})
    */
    private $warehouseItems;
    //...zbędny kod
    }


    Stany magazynów


    /**
    * @ORM\Entity(repositoryClass = "Pit\VnetBundle\Repository\WarehouseItemRepository")
    * @ORM\Table(name = "warehouses_items")
    */
    class WarehouseItem
    {
    //... zbędny kod
    /**
    * @var Product
    *
    * @ORM\ManyToOne(targetEntity="Product")
    * @ORM\JoinColumn(name="products_id", referencedColumnName="id", nullable = false)
    */
    private $product;

    /**
    * @var float
    *
    * @ORM\Column(name="quantity", type = "decimal", scale = 2, nullable=false)
    */
    private $quantity;

    //...zbędny kod
    }



    Teraz listując produkty potrzebuję posortować je po ilości co robię wykorzystując repozytorium encji Product. W repozytorium mam złączenie tabel oraz pogrupowanie i policzenie ilości produktów dzięki czemu mogę je właściwie posortować



    class ProductRepository extends EntityRepository
    {
    public function getQueryBuilder()
    {
    $qb = $this -> createQueryBuilder('p');

    $qb
    ->select('p, wi, SUM(wi.quantity) HIDDEN quantity')
    ->leftJoin('p.warehouseItems', 'wi')
    ->groupBy('p.id')
    ->addOrderBy('quantity', 'ASC')
    ;

    return $qb;
    }
    }


    Do tego momentu nie ma problemu sortowanie działa, listowanie ze stronicowaniem działa jednak na liście chcę wyświetlić stan magazynowy produktu i robię to wykorzystując metodę w encji Product



    public function countProductsOnWarehouse()
    {
    $fCount = 0;

    $criteria = Criteria::create()->where(Criteria::expr()->gt("quantity", "0"));

    /** @var WarehouseItem $warehouseItem */
    foreach ($this->getWarehouseItems()->matching($criteria) as $warehouseItem)
    {
    $fCount += $warehouseItem->getQuantity();
    }

    return $fCount;
    }



    Jeśli nie ma grupowania to metoda działa bez zarzutów jednaj jeśli dodane jest grupowanie po ilości to kolekcja "warehouseItems" jest nieprawidłowa. Jak mogę rozwiązać ten problem ? Podzapytania testowałem i bardzo źle wpływają na wydajność listy.

  • Marcin Lewandowski
    Wpis na grupie PHP w temacie Dostęp do danych wrażliwych w aplikacjach webowych
    8.04.2016, 19:00

    Klient ma mieć panel klienta tak jak jest to zrobione np. u operatorów komórkowych. Do tej pory system był wewnętrzną aplikacją z której korzystali pracownicy teraz powstała potrzeba udostępniania części informacji na zewnątrz poprzez panel klienta.

    I właśnie pytanie czy:

    a) aplikacja główna wystawia API poprzez które inna aplikacja będzie pobierała dane i prezentowała je klientowi,
    b) całkowicie osobna aplikacja zasilana cyklicznie w dane przez główną aplikację
    c) ... jakaś inna opcja ;)

  • Marcin Lewandowski
    Wpis na grupie PHP w temacie Dostęp do danych wrażliwych w aplikacjach webowych
    8.04.2016, 14:10

    Witam,

    Chciałem się spytać kogoś to ma większe doświadczenie jak rozwiązujecie problem z dostępem do danych wrażliwych dla firmy. Mianowicie załóżmy, że mamy aplikację typu SAP, w której znajdują się wszystkie dane firmy, faktury, umowy cenniki itd. Chcielibyśmy teraz dać jakiemuś naszemu klientowi dostęp do np. faktur które dla niego wystawiamy. Jednak istnieje duże ryzyko, że przez jakikolwiek błąd może uzyskać dostęp do danych, których nie powinien widzieć. Czy tego typu panele wystawiać jako osobne aplikacje, które są zasilane przez serwer czy też macie jakieś inne sprawdzone rozwiązania ?

  • Marcin Lewandowski
    Wpis na grupie LINUX i OPEN SOURCE w temacie Porty USB w Linux - jak określić stałą adresację ?
    22.12.2015, 15:39

    Maciej G.:
    Marcin L.:
    Dzięki za odpowiedź, ale z tego co patrzyłem to lsusb podaje mi listę podłączonych urządzeń pod USB, a ja potrzebuję listę dostępnych portów oraz informacje o nich, gdyż chciałbym je monitorować. Chciałbym aby aplikacja docelowo pobierała informację o liście dostępnych portów, a następnie sprawdzała czy jest do nich podłączone urządzenie w zależności od portu będzie inna funkcja urządzenia. dlatego tak ważna jest informacja o porcie.

    Zobacz ten link:

    http://www.linuxnix.com/find-usb-device-details-in-lin...

    Pozdrawiam.

    Wielkie dzięki wszystkim za naprowadzenie na rozwiązanie problemu. Jako że rozwiązania najprostsze są najlepsze to zdefiniowałem własne reguły udev posiłkując się danymi urządzenia dostarczanymi przez:

    udevadm info -a -n /dev/ttyUSB1

  • Marcin Lewandowski
    Wpis na grupie LINUX i OPEN SOURCE w temacie Porty USB w Linux - jak określić stałą adresację ?
    12.12.2015, 20:38

    Dzięki za odpowiedź, ale z tego co patrzyłem to lsusb podaje mi listę podłączonych urządzeń pod USB, a ja potrzebuję listę dostępnych portów oraz informacje o nich, gdyż chciałbym je monitorować. Chciałbym aby aplikacja docelowo pobierała informację o liście dostępnych portów, a następnie sprawdzała czy jest do nich podłączone urządzenie w zależności od portu będzie inna funkcja urządzenia. dlatego tak ważna jest informacja o porcie.

  • Marcin Lewandowski
    Wpis na grupie LINUX i OPEN SOURCE w temacie Porty USB w Linux - jak określić stałą adresację ?
    12.12.2015, 09:25

    Witam,

    Chciałbym określić adresację portów USB znajdujących się w komputerze tak aby odwołując się do jakiejś lokalizacji w systemie mieć pewność że dana lokalizacja to określony port USB. Jak można zrobić to najefektywniej ?

  • Marcin Lewandowski
    Wpis na grupie JavaScript w temacie Wyszukiwarka podpowiadająca tagi - GMail
    3.12.2015, 00:27

    Witam,

    Czy ktoś z grupowiczów może spotkał się z biblioteką, która funkcjonalnością zbliżyła by się do wyszukiwarki Gmail-a ? Chodzi mi o podpowiedzi specjalnych tagów i ich uzupełnianie.

  • Marcin Lewandowski
    Wpis na grupie Symfony 2.0 w temacie Jak wyrenderować template wewnątrz funkcji
    31.08.2015, 14:42

    Jeśli chodzi Ci o akcję kontrolera to masz do dyspozycji:


    ...
    public function JakasAkcjaAction()
    {
    ...
    $html = $this->renderView('DemoBundle:Default:index.html.twig');
    ...
    return $html;
    }
    ...

  • Marcin Lewandowski
    Wpis na grupie Symfony 2.0 w temacie Pobieranie danych z pliku MDB z wykorzystaniem ODBC
    12.08.2015, 21:08

    Witam,

    Czy macie jakiś sprawdzony sposób na połączenie Symfony z plikami Access-a (MDB) poprzez ODBC. Potrzebuję się połączyć z tak przygotowaną bazą i pobrać z niej dane najlepiej wykorzystując Symfony. Ktoś może ma jakieś doświadczenia z tego typu bazami ?

  • Marcin Lewandowski
    Wpis na grupie PHP w temacie Uruchamianie aplikacji okienkowej w Windows
    29.05.2015, 08:29

    Witam,

    Mam napisaną aplikację pod Windowsa i potrzebuję ją teraz uruchomić z poziomu PHP tak aby zostało wyświetlone jej okno. Czy jest to możliwe bo jak do tej pory nie udało mi się tego osiągnąć z wykorzystaniem standardowych poleceń "exec, system itp."

  • Marcin Lewandowski
    Wpis na grupie Symfony w temacie Walidacja kolekcji nie wyświetlają się błędy w kolekcji
    7.04.2015, 21:29

    Witam,
    Mam problem z wyświetleniem błędów jakie wystąpiły w walidacji kolekcji. Mam formularz "ProductType"


    class ProductType extends AbstractType
    {
    public function buildForm(FormBuilderInterface $builderInterface, array $options)
    {
    $builderInterface -> add('items', 'collection', array(
    'type' => new ProductItemType(),
    'allow_add' => true,
    'allow_delete' => true,
    'by_reference' => false,
    'cascade_validation' => true,
    ))
    ;
    }

    public function setDefaultOptions(OptionsResolverInterface $resolverInterface)
    {
    $resolverInterface -> setDefaults(array(
    'data_class' => 'Pit\VnetBundle\Entity\Product',
    'cascade_validation' => true,
    ));
    }

    public function getName()
    {
    return 'pit_vnetbundle_product';
    }
    }


    Jak widać ma on kolekcję "items" typu "ProductItemType" (inne pola pominąłem aby było przejrzyściej).


    class ProductItemType extends AbstractType
    {
    public function buildForm(FormBuilderInterface $builderInterface, array $options)
    {
    $builderInterface
    -> add('productRelated', 'entity', array(
    'label' => 'Produkt powiązany:',
    'class' => 'PitVnetBundle:Product',
    'property' => 'name',
    'empty_value' => ' - wybierz - ',
    ))
    -> add('quantity', 'text', array(
    'label' => 'Ilość:',
    ))
    ;
    }

    public function setDefaultOptions(OptionsResolverInterface $resolverInterface)
    {
    $resolverInterface -> setDefaults(array(
    'data_class' => 'Pit\VnetBundle\Entity\ProductItem',
    ));
    }

    public function getName()
    {
    return 'pit_vnetbundle_product_item';
    }
    }


    W przypadku gdy któreś z pól nie przejdzie walidacji błędy wyświetlają się przy danym polu prawidłowo. Jednak, gdy błąd wystąpi w kolekcji dostaję jedynie komunikat, że formularz nie przeszedł walidacji zaś przy polu z kolekcji nie pojawia się informacja o błędzie. Jakaś podpowiedź gdzie szukać problemu ??

  • Marcin Lewandowski
    Wpis na grupie Zend Framework w temacie Zend Translate brak tłumaczeń dla słów / zwrotów z...
    22.01.2015, 23:58

    Mały postęp w poszukiwaniach, isset zwraca false dla wywołania:


    isset($this->_translate[$locale][$messageId])


    Przy czym array_key_exists zwraca true. Co ciekawe bo jak przeprowadzam testy na pliku php ze zdefiniowaną tablicą to obie funkcje zwracają oczekiwane wartości, jakiś pomysł co może być przyczyną takiego zachowania ?

  • Marcin Lewandowski
    Wpis na grupie Zend Framework w temacie Zend Translate brak tłumaczeń dla słów / zwrotów z...
    22.01.2015, 21:14

    Witam,

    Z czego może wynikać problem z brakiem tłumaczeń dla słów / zwrotów które mają w sobie polskie znaki ? W przypadku innych zwrotów / słów nie ma problemu, są tłumaczone. Podejrzewam konfigurację, gdyż na mojej wersji deweloperskiej Apache2 + MySQL wszystko jest ok, wersja produkcyjna Nginx + MariaDB. Jakieś pomysły ?

  • Marcin Lewandowski
    Wpis na grupie JavaScript w temacie Sammy.js routing
    6.12.2014, 21:50

    Witam,

    Zastanawiam się nad sensem zastosowania sammy.js w aplikacji, gdzie właściwie byłaby tylko jedna reguła routingu przechwytująca wszystko i przesyłająca ajax-em zapytanie do aplikacji napisanej w Symfony, a następnie wyświetlenie zwróconego html-a.

    Pytanie brzmi czy ma to sens, czy nie lepiej po prostu wykorzystać jQuery, co o tym myślicie ?

  • Marcin Lewandowski
    Wpis na grupie Bazy Danych w temacie Optymalizacja zapytania / tabeli
    4.11.2014, 15:24

    Nie chcę tworzyć "gęsto" partycji, chciałem tylko mieć dla bieżącego dnia, a kolejne w interwałach miesięcznych. Bieżący dzień dlatego że jest to najczęściej przeszukiwany zakres oraz raport wykorzystujący te dane jest pokazywany użytkownikom po zalogowaniu do systemu.

  • Marcin Lewandowski
    Wpis na grupie Bazy Danych w temacie Optymalizacja zapytania / tabeli
    4.11.2014, 14:24

    Tomasz, ciekawa sprawa partycjonowanie nigdy nie miałem z tym odczynienia w związku z tym chciałbym dopytać czy jest możliwe ustawienie partycji w ten sposób aby bieżący dzień był na jednaj partycji ?

  • Marcin Lewandowski
    Wpis na grupie Bazy Danych w temacie Optymalizacja zapytania / tabeli
    2.11.2014, 14:05

    Explain zapytania:


    id select_type table type possible_keys key key_len ref rows Extra
    1 SIMPLE d range licences_id,date_2 date_2 16 NULL 63076 Using index condition; Using temporary; Using filesort


    Indeks który polecił Przemek znacznie poprawił wydajność zapytań jednak dalej operacje na takim zbiorze zabijają urządzenie.

    Agregacja na pewno pomoże jednak minimalny interwał to 15 minut, gdyż raporty są kwadransowe więc nie będzie znaczącej różnicy.

    Zastanawiam się czy nie podzielić danych na miesiące i umieszczać w osobnych tabelach, zdaje sobie sprawę z "genialności" tego rozwiązania jednak urządzenie na którym to działa w tym momencie zarzyna się przy poważniejszych operacjach na tak dużym zbiorze.

Dołącz do GoldenLine

Oferty pracy

Sprawdź aktualne oferty pracy

Aplikuj w łatwy sposób

Aplikuj jednym kliknięciem

Wyślij zaproszenie do