Marcin Lewandowski

Programista PHP/MySQL, poszukuję...

Wypowiedzi

  • Marcin Lewandowski
    Wpis na grupie Bazy Danych w temacie Optymalizacja zapytania / tabeli
    1.11.2014, 21:36

    Dzięki za podpowiedź, kolumnę już próbowałem dodawać, dodanie trochę zwiększyło wydajność zapytania ale była to niewielka zmiana. Przetestuję dodanie indeksu i dam znać :)

  • Marcin Lewandowski
    Wpis na grupie Bazy Danych w temacie Optymalizacja zapytania / tabeli
    1.11.2014, 20:46

    Witam,

    Mam tabelę "data" w której znajduje się około 3,5 miliona rekordów. Struktura tabeli wygląda następująco:



    CREATE TABLE IF NOT EXISTS `data` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `date` datetime NOT NULL,
    `in` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
    `out` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
    `licences_id` int(11) NOT NULL,
    `device` int(11) NOT NULL,
    PRIMARY KEY (`id`),
    KEY `licences_id` (`licences_id`),
    KEY `date` (`date`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



    Mam zapytanie które wyciąga dane z danego dnia pogrupowane po sformatowanej dacie:


    SELECT DATE_FORMAT(`date`, "%H:00") AS `ym`, SUM(`in`) AS `value`
    FROM `data` AS `d`
    WHERE (device = '1') AND
    (licences_id = '26') AND
    (date >= '2014-09-26 00:00:00') AND
    (date <= '2014-09-26 23:59:59')
    GROUP BY `ym`;


    Zapytanie na Raspberry PI wykonuje się około 4,6 s. Próbowałem już kilku optymalizacji jednak bez większych sukcesów. Czy macie może jakiś pomysł na optymalizację zapytania bądź struktury tabeli ?

  • Marcin Lewandowski
    Wpis na grupie Symfony 2.0 w temacie access_control z bazy danych
    22.10.2014, 11:14

    Witam,

    Jako że dopiero zaczynam pracę z Symfony to napotykam co róż problemy, które staram się rozwiązywać we własnym zakresie, jednak nie mogę przeskoczyć problemu z definiowaniem listy access_control z bazy danych.

    Mam zrobioną autoryzację z wykorzystaniem firewall-a i teraz należało by zabezpieczyć odpowiednio określone części serwisu dla określonych grup użytkowników. Z tego co znalazłem w dokumentacji można to zrobić z wykorzystaniem access_control, jednak lista ta jest definiowana w pliku security.yml ja zaś bym chciał robić to z poziomu bazy danych aby stworzyć interfejs do zarządzania uprawnieniami.

    Czy jest możliwe definiowanie tej listy w bazie ? Jak ugryźć ten problem ?

  • Marcin Lewandowski
    Wpis na grupie Programiści WWW w temacie HTML5 pliki wideo z napisami
    27.09.2014, 13:12

    Witam,

    Mam problem z odtwarzaczem plików wideo z napisami z dysku komputera. Mianowicie mam kod HTML

     
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Player</title>
    </head>
    <body style="margin: 0; padding: 0;">
    <video width="100%" height="100%" id="player" controls="controls">
    <source src="echo-hereweare.mp4" type="video/mp4">
    <source src="echo-hereweare.webm" type="video/webm">
    <track kind="subtitles" src="video-subtitles-en.vtt" srclang="en" label="English" />
    <p>Your browser leaves much to be desired.</p>
    </video>
    </body>
    </html>

    Kod ma za zadanie wyświetlić plik wideo wraz z napisami, jednak o ile sam film się wyświetla o tyle próba włączenia napisów w Chrome kończy się niepowodzeniem, konsola daje komunikat mówiący o braku uprawnień:

    Text track from origin 'file://' has been blocked from loading: Not at same origin as the document, and parent of track element does not have a 'crossorigin' attribute. Origin 'null' is therefore not allowed access.

    Tylko jak to obejść dodanie bowiem crossorigin do elementu video tylko pogarsza sprawę.

  • Marcin Lewandowski
    Wpis na grupie JavaScript w temacie Drag & Drop elementów na mapę
    12.07.2014, 12:54

    Dzięki to rozwiązuje mój problem. Wiedziałem o istnieniu tego parametru jednak nie miałem pojęcia że to działa w ten sposób, czy mógłbyś rzucić nieco światła dlaczego to tak działa ?

  • Marcin Lewandowski
    Wpis na grupie JavaScript w temacie Drag & Drop elementów na mapę
    11.07.2014, 21:53

    Witam,

    Mam problem z przenoszeniem elementów pomiędzy dwoma kontenerami. Jeden kontener zawiera listę elementów, z nich wybieram jeden i chcę go przeciągnąć do drugiego kontenera w którym mapa na której chcę umieścić element. Niestety pierwszym problemem jest to że po przeciągnięciu mapa nieco skacze w dół, a kolejnym że nie mogę umieszczonego elementu na mapie przesunąć, gdyż powoduje to z duplikowanie go.

    Rozumiem że przesunięcie elementu na mapie powoduje ponowne wywołanie funkcji drop i to dlatego pojawia się nowy element jednak nie mam pomysłu jak elegancko to rozwiązać, może ktoś posłuży radą ?

    Działającą wersję zobaczycie pod linkiem.

    A kod poniżej:


    <div id="map">
    <img src="http://mapa-polski.seda.pl/mapy-polski/fizyczna1.jpg" />
    </div>
    <div id="elements">
    <div class="el">el1</div>
    <div class="el">el2</div>
    <div class="el">el3</div>
    </div>
    <script type="text/javascript">

    var $elements = $('#elements'),
    $map = $('#map');

    $( ".el", $elements ).draggable({
    revert: "invalid",
    helper: "clone",
    cursor: "move"
    });

    $map.droppable({
    activeClass: "ui-state-default",
    hoverClass: "ui-state-hover",
    drop: function( event, ui ) {

    var $newPosX = parseInt(ui.offset.left) - parseInt($(this).offset().left);
    var $newPosY = parseInt(ui.offset.top) - parseInt($(this).offset().top);

    var el = $( "<span></span>")
    .addClass('el')
    .css('top', $newPosY + 'px')
    .css('left', $newPosX + 'px')
    .text( ui.draggable.text() )
    ;
    el.draggable();
    el.prependTo( this );
    }
    });
    </script>

  • Marcin Lewandowski
    Wpis na grupie css w temacie css - class="active"
    15.04.2014, 14:55

    Wygląda na to że kliknięcie nie przestawia klasy "active" na aktualnie kliknięty element. Należy zlokalizować skrypt odpowiedzialny za zakładki i ustalić co należy zmodyfikować aby mechanizm działał prawidłowo.

  • Marcin Lewandowski
    Wpis na grupie css w temacie css - class="active"
    15.04.2014, 13:00

    Jeśli używasz Chrome to naciskając F12 wyświetlą Ci się narzędzia deweloperskie w których jest konsola. Za jej pomocą można zobaczyć czy różne rzeczy zaś w Twoim przypadku zapewne będzie to poszukiwanie skryptu, który powoduje błąd.

    Jeśli nie używasz Chrome to także powinno pojawić się jakieś narzędzie dla deweloperów w którym powinna być konsola.

  • Marcin Lewandowski
    Wpis na grupie css w temacie css - class="active"
    14.04.2014, 16:00

    A czy po kliknięciu w inną zakładkę "otwiera" się dana zakładka ? Czy tylko podświetlenie nie działa ? Sprawdź w konsoli czy nie wystąpił jakiś błąd.

  • Marcin Lewandowski
    Wpis na grupie Nieruchomości warszawskie w temacie Apartamenty Mokotów Park - czy polecacie ?
    28.01.2014, 10:52

    Witam,

    Chciałem się spytać czy może ktoś coś powiedzieć na temat tej inwestycji ? Polecacie, odradzacie, a może ktoś mieszka ? Będę wdzięczy za wszystkie odpowiedzi.

  • Marcin Lewandowski
    Wpis na grupie Zend Framework w temacie FreshMail integracja zlecenie
    17.05.2013, 15:17

    Witam,

    Poszukuję osoby, która napisała by moduł odpowiedzialny za integrację aplikacji z FreshMailem. Idealnie gdyby zainteresowana osoba posiadała już doświadczenie w w tym temacie. Wszystkie osoby zainteresowane zleceniem proszę na priv.

    Pozdrawiam,
    Marcin Lewandowski

  • Marcin Lewandowski
    Wpis na grupie Bazy Danych w temacie Przeszukiwanie grup pól
    14.05.2013, 22:02

    Witam,

    Przepraszam że wcześniej nie wrzuciłam tak podstawowych danych które umożliwiły by wam łatwe przetestowanie własnych zapytań oraz porównanie ich z moim pomysłem na rozwiązanie problemu.

    Struktura bazy

    CREATE TABLE IF NOT EXISTS `pole` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `nazwa` varchar(200) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

    CREATE TABLE IF NOT EXISTS `subskrybent` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `email` varchar(200) NOT NULL,
    `imie` varchar(200) NOT NULL,
    `nazwisko` varchar(200) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

    CREATE TABLE IF NOT EXISTS `subskrybent_grupa` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `subskrybent_id` int(11) NOT NULL,
    `nazwa` varchar(200) NOT NULL,
    PRIMARY KEY (`id`),
    KEY `subskrybent_id` (`subskrybent_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

    CREATE TABLE IF NOT EXISTS `subskrybent_grupa_pole` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `subskrybent_grupa_id` int(11) NOT NULL,
    `pole_id` int(11) NOT NULL,
    `wartosc` varchar(200) NOT NULL,
    PRIMARY KEY (`id`),
    KEY `subskrybent_grupa_id` (`subskrybent_grupa_id`,`pole_id`),
    KEY `pole_id` (`pole_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

    INSERT INTO `subskrybent` (`id`, `email`, `imie`, `nazwisko`) VALUES
    (1, 'jan.kowalski@gmail.com', 'Jan', 'Kowalski'),
    (2, 'franciszek.nowak@gmail.com', 'Franciszek', 'Nowak');

    INSERT INTO `pole` (`id`, `nazwa`) VALUES
    (1, 'Miejscowość'),
    (2, 'Kod pocztowy'),
    (3, 'Wiek');

    INSERT INTO `subskrybent_grupa` (`id`, `subskrybent_id`, `nazwa`) VALUES
    (1, 1, 'Grupa 1'),
    (2, 1, 'Grupa 2'),
    (3, 1, 'Grupa 3'),
    (4, 2, 'Grupa 1'),
    (5, 2, 'Grupa 2'),
    (6, 2, 'Grupa 3');

    INSERT INTO `subskrybent_grupa_pole` (`id`, `subskrybent_grupa_id`, `pole_id`, `wartosc`) VALUES
    (1, 1, 1, 'poznań'),
    (2, 1, 2, '00-000'),
    (3, 2, 1, 'kraków'),
    (4, 3, 1, 'poznań'),
    (5, 3, 2, '99-999'),
    (6, 4, 1, 'łódź'),
    (7, 5, 1, 'kraków'),
    (8, 5, 3, '29'),
    (9, 6, 1, 'poznań'),
    (10, 6, 2, '99-999');

    ALTER TABLE `subskrybent_grupa`
    ADD CONSTRAINT `subskrybent_grupa_ibfk_1` FOREIGN KEY (`subskrybent_id`) REFERENCES `subskrybent` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

    ALTER TABLE `subskrybent_grupa_pole`
    ADD CONSTRAINT `subskrybent_grupa_pole_ibfk_1` FOREIGN KEY (`subskrybent_grupa_id`) REFERENCES `subskrybent_grupa` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
    ADD CONSTRAINT `subskrybent_grupa_pole_ibfk_2` FOREIGN KEY (`pole_id`) REFERENCES `pole` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

    Podgląd danych:
    SELECT s.imie, s.nazwisko, sg.nazwa grupa, p.nazwa, sgp.wartosc
    FROM `subskrybent` s
    INNER JOIN subskrybent_grupa sg ON s.id = sg.subskrybent_id
    INNER JOIN subskrybent_grupa_pole sgp ON sgp.subskrybent_grupa_id = sg.id
    INNER JOIN pole p ON sgp.pole_id = p.id
    ORDER BY s.id, sg.nazwa

    Wyszukiwanie:
    SELECT * FROM (SELECT s.imie, s.nazwisko, sg.nazwa grupa, p.nazwa, sgp.wartosc, count(sgp.subskrybent_grupa_id) AS ilosc_pol
    FROM `subskrybent` s
    INNER JOIN subskrybent_grupa sg ON s.id = sg.subskrybent_id
    INNER JOIN subskrybent_grupa_pole sgp ON sgp.subskrybent_grupa_id = sg.id
    INNER JOIN pole p ON sgp.pole_id = p.id
    WHERE
    (sgp.pole_id = '1' AND sgp.wartosc = 'poznań') OR
    (sgp.pole_id = '2' AND sgp.wartosc = '00-000')
    group by sgp.subskrybent_grupa_id) AS pola WHERE ilosc_pol = 2

    Wyszukiwanie nie wydaje mi się na zbyt optymalne i samej struktury bazy też w stu procentach nie jestem pewien. Wydaje mi się to rozwiązanie dość elastyczne pytanie tylko jak się zachowa ta struktura, gdy załaduje się tam kilka milionów rekordów. Jakieś pomysły na przeprowadzenie testów oraz modyfikacji zapytań i struktury ?

  • Marcin Lewandowski
    Wpis na grupie Bazy Danych w temacie Przeszukiwanie grup pól
    13.05.2013, 22:15

    Witam,

    Chciałem się dowiedzieć w jaki sposób byście ugryźli przeszukiwanie struktury bazy danych, która wygląda w następujący sposób, mamy tabele:


    - subskrybent,
    - subskrybent_grupa
    - subskrybent_grupa_pole
    - pole

    Połączenie tych tabel wygląda w ten sposób że do każdego subskrybenta jest przypisana grupa pól np.

    Jak Kowalski
    + Grupa1: (pole1:poznań, pole2:00-000)
    + Grupa2: (pole1:kraków)
    + Grupa3: (pole1:poznań, pole2:99-999)

    Franciszek Nowak
    + Grupa1: (pole1:łódź)
    + Grupa2: (pole1:kraków, pole3: 29lat)
    + Grupa3: (pole1:poznań, pole2:99-999)

    I teraz jak efektywnie przeszukać taką strukturę kiedy użytkownik wprowadził kryteria wyszukiwania:

    Opcja1: pole1:poznań (oczekiwany rezultat: Jan Kowalski, Franciszek Nowak)
    Opcja2: pole1:poznań, pole2:00-000 (oczekiwany rezultat: Jan Kowalski)

  • Marcin Lewandowski
    Wpis na grupie JavaScript w temacie Dynamiczne dodawanie wierszy tabeli
    19.04.2013, 23:37

    Przede wszystkim chciałem podziękować wszystkim za wypowiedzi :)

    Postaram się zgłębić temat node.js oraz socket.io, gdyż wygląda to bardzo interesująca zwłaszcza, że jest to serwer dedykowany do tej aplikacji i mogę tam wrzucić wszystko co mi się podoba i będzie działać pod wingrozę ;)

    Na razie jest to rozwiązane tak jak pisałem w pierwszym poście czyli requesty do odpowiednich skryptów, które od razu wypluwają odpowiedniego html-a i go doklejam do tabeli, działa to dobrze jedyne co to jeszcze muszę zadbać o ograniczenie rozrostu drzewa DOM.

  • Marcin Lewandowski
    Wpis na grupie JavaScript w temacie Dynamiczne dodawanie wierszy tabeli
    12.04.2013, 07:43

    Witam,

    Potrzebuję stworzyć mechanizm ciągłego doładowywania elementów tabeli bez przeładowywania strony. Jedyny mój pomysł to ciągłe wysyłanie żądań HTTP odbierających dane w JSON i ta tej postawie dodawanie nowych wierszy na początku tabeli.

    Chodzi mi o osiągnięcie efektu "wpadania" nowych rekordów na sam początek tabeli tak jak jest to zrobione np. w strumieniu G+ czy Facebook. Polecacie jakieś rozwiązania ?

    Pozdrawiam,
    Marcin

  • Marcin Lewandowski
    Wpis na grupie Zend Framework w temacie Aktualizacja rekordu w bazie nie do końca działa poprawnie.
    10.04.2013, 20:50

    Jakoś tak powinno to iść:


    $w->update(
    array('rds_pozycja' => new Zend_Db_Expr('rds_pozycja - 1')),
    array('rds_pozycja = ?' => $row['rds_pozycja'], 'rds_id = ?' => $id, 'rds_server = ?' => $sess->id)
    );

  • Marcin Lewandowski
    Wpis na grupie Zend Framework w temacie Sprawdzenie czy użytkownik jest zalogowany w Layoucie.
    5.04.2013, 22:44

    Zmień nazwę na Zend_View_Helper_User i powinien znaleźć.

  • Marcin Lewandowski
    Wpis na grupie Zend Framework w temacie Sprawdzenie czy użytkownik jest zalogowany w Layoucie.
    30.03.2013, 21:51

    A nie lepiej z helpera widoku zwracać info czy zalogowany czy nie ?


    <?php if($this->zalogowany()): ?>
    ... kod HTML ...
    <?php endif; ?>

  • Marcin Lewandowski
    Wpis na grupie PHP w temacie [Wielka Brytania] Stała praca dla junior/senior...
    27.03.2013, 22:47

    Ciekawe ogłoszenie, które kolejny raz pokazuje mi że muszę zainwestować w naukę angielskiego ;) Nie samym czytaniem dokumentacji człowiek żyje ;)

  • Marcin Lewandowski
    Wpis na grupie JavaScript w temacie Zdarzenie naciśnięcia klawisza Enter oraz auto uzupełnianie
    21.11.2012, 07:41

    Mirosław
    Ma się tworzyć, ale tylko wtedy gdy lista auto uzupełniania nie jest rozwinięta. Jednak teraz wygląda to w ten sposób, że po wybraniu elementu z auto uzupełniania i naciśnięciu enter w celu zatwierdzenia wyboru wartość pola jest ustawiana oraz jest tworzony nowy wiersz. Tak nie powinno być, gdyż ten enter miał dokonać tylko wyboru z listy.

    Dariusz
    Korzystam z jQuery, a zdarzenie utworzenia wiersza jest podpięte pod keyup. Zasadniczo pomysł wydaje się dobry jednak mam podpięte zdarzenie tworzenia nowego wiersza nie tylko w polach z auto uzupełnianiem i chciałbym, aby to zdarzenie działało nawet gdy użytkownik ma pole puste.

Dołącz do GoldenLine

Oferty pracy

Sprawdź aktualne oferty pracy

Aplikuj w łatwy sposób

Aplikuj jednym kliknięciem

Wyślij zaproszenie do