Marcin Mackiewicz

Programista JAVA, RS Adware Polska

Wypowiedzi

  • Marcin Mackiewicz
    Wpis na grupie Administratorzy w temacie Jak wykazać użytkowanie serwera?
    31.05.2012, 22:33

    Tak jak pisze przedmówca. Urzędniczy sprawdzają tylko czy zakupiony sprzęt jest używany do celu do którego został zakupiony.

    Mam w firmie jeden serwer dofinansowany z projektu. Stoi na nim kilkanaście wirtualek. Kontrola była. Urzędnika interesowało czy jest udokumentowane, że ta a nie inna maszyna jest zakupiona na rzecz projektu i czy robi to do czego był kupiony. Czy robi coś ekstra? - takich pytań nie było.

    W sumie to wszystko zależy od poziomu dociekliwości oraz wiedzy technicznej urzędnika.
    A skąd ten będzie wiedział, że ma się zapytać o wirtualizację skoro niebardzo potrafi podpiąć się do WI-FI (nawet z instrukcją którą dostał w zęby)

  • Marcin Mackiewicz
    Wpis na grupie Bazy Danych w temacie [PHP][MySQL] Problem z aktualizacją rekordów.
    3.04.2012, 01:34

    Jeszcze mi się tak nasunęło...
    Czy w przy mysql_query w zapytaniu każdy obiekt bazy nie powinien być w update objęty znakiem "`" ???

    mysql_query("UPDATE `menu` SET `tresc` = '$tresc' where `id` = $id"); 


    Mam tak przy okazji jeszcze nadzieję ze escape'ujecie te stringi przed robieniem update bo inaczej byle student zrobi w polu

    ' union all ... '
    Marcin Mackiewicz edytował(a) ten post dnia 03.04.12 o godzinie 01:36

  • Marcin Mackiewicz
    Wpis na grupie Bazy Danych w temacie [PHP][MySQL] Problem z aktualizacją rekordów.
    3.04.2012, 01:29

    Zakładam, że brak '}' na końcu to błąd wklejania :)
    Na moje oko wszystko jest ok. Może błąd w zapytaniu - proponuje najpierw wrzucać zapytanie do zmiennej a dopiero potem robic mysql_query($zmienna). To pozwoli Ci na debuggerze szybko oglądać aktualne zapytania a co za tym idzie przez copy-past wrzucać do sprawdzenia czy się wykonują na bazie.

    Tu się akurat nie da niczego zepsuć :). Nie zwraca żadnego errora do loga www, bazy albo na stdout?

    Porponuje jeszcze w if'ie zrobić tak:

    if (isset($tresc) && strlen(trim($tresc)) > 0)

    To pozwoli ci uniknąć aktualizowania danych białym znakiem (np. user klepnie przypadkiem spacje) no i lepiej jest sprawdzać długość string'a niż przyrównywać go do jakiejś konkretnej wartości.

    Jak masz dużo takich porównań to napisz sobie funkcje - będzie prościej:
    function Check($string, $wartosc = NULL ) {
    if ( isset( $string ) && isset( $wartosc ) && $string === $wartosc) {
    return true;
    }
    if ( isset( $string ) && strlen( trim( $param ) ) > 0 ) {
    return true;
    }
    return false;
    }


    To pozwoli ci zminimalizować kod w wielu miejscach:
    if ( Check( $_SESSION['access'], 1 ) ) { }
    if ( Check ( $p, "e" ) ) {}
    if (Check ( $tresc ) ) {}

  • Marcin Mackiewicz
    Wpis na grupie LINUX i OPEN SOURCE w temacie Jaki programem graficznym podłaczyc sie do pulpitu Linuxa
    3.04.2012, 01:05

    Piotr Nerka:
    Witam,

    Poszukuje programu, klienta za pomoca którego bede mógł sie z hosta Windows'owego logowac sie do konsoli Linuxa. mChciałbym aby ten program umozliwiał logowanie sie do pulpitu Linuxa w sposób grawiczny, tak jak to robi RDP Windowsowy.

    Szczerze odradzam kombinowanie z udostępnianiem pulpitów zdalnych linux'a protokołem RDP:
    - RDP Wspierane tylko przez MS
    - Bezpieczeństwo na niskim poziomie. Różnego rodzaju serwery dla linux'a (np. xrdp) korzystają ze standardowego protokołu VNC który standardowo (z tego co pamiętam) nie jest szyfrowany
    - Mały/duży problem w konfiguracji serwera. Jeżeli chodzi o linux'a to każde rozwiązanie było dość osobliwe a jego doprowadzenie do stanu jako takiej funkcjonalności zajmuje trochę czasu.

    Plus jest tylko z tego taki, że na Windowsie wystarczy otworzyć "Podłączenie pulpitu zdalnego" ale co z tego jeżeli przy każdym rozwiązaniu trzeba będzie uruchomić jakiegoś klienta.

  • Marcin Mackiewicz
    Wpis na grupie LINUX i OPEN SOURCE w temacie Jaki programem graficznym podłaczyc sie do pulpitu Linuxa
    3.04.2012, 00:57

    Ja używam z powodzeniem narzędzia do serwowania pulpitu linux uruchamianego na serwerze i przesyłanego przez tunel ssh do stacji klienckiej:

    http://www.x2go.org/
    http://code.x2go.org/releases/binary-win32/pyhoca-gui/...

    Dostępne repo apt'a dla debiana:

    #~~~~~~~~~~~~x2go~~~~~~~~~~~~~#
    deb http://packages.x2go.org/debian squeeze main
    #deb-src http://packages.x2go.org/debian squeeze main

    Dla Ubuntu informacja o repo dostępna jest na stronie http://www.x2go.org/doku.php/wiki:x2go-repository-debian

    Krótki opis:
    1. Na serwerze instalujemy z paczki (instrukcja na stornie podanej wyżej) kilka usług. Po instalacji wystarczy usługi wystartować i wszystko działa :)
    2. Na serwerze instalujemy dowolne środowisko graficzne
    3. Należy pamiętać aby dodać userów do grup: x2gousers oraz fuse
    4. Na kliencie (Windows, Linux, Mac) instalujemy klienta x2go (C+) lub nowszego - pyHoca (Perl). Tu możliwości jest całe mnóstwo ale wszystko sprowadza się do tego aby na maszynie klienckiej był jakikolwiek X-Serwer:
    a) x2goClient z wbudowanym vcxsrv
    b) pyHoca z wbudowanym vcxsrv
    c) x2goClient, pyHoca + właczony Xming (podany we wcześniejszej wypowiedzi) w standardowej konfiguracji

    Plusy:
    - 100% Open Source i projekt puki co cały czas rozwijany przez społeczność
    - O zabezpieczenia nie trzeba się martwić. Autentykacja i przesyłanie obrazu odbywa się po autentykacji po ssh.
    - Klient i serwer korzystają z jakiegoś serwera NX (nie pamiętam dokładnie) aby dodatkowo skompresować przesyłany obraz. Możliwości ustawień jest naprawdę dużo co oznacza, że można zapewnić płynną pracę na mniej wyczesanym łączu.
    - Klient współpracuje praktycznie z każdym środowiskiem graficznym i pozwala zdalnie uruchomić każde polecenie. Lista w tej chwili wspieranych środowisk: Gnome, Unity (Ubuntu), LXDE, KDE 4.x, Trinity (KDE 3.5.13/3.5.14)

    Minusy:
    - Problemem jak dotąd w tym rozwiązaniu stanowi drukowanie które w założeniu działa baardzo nieefektywnie i szczerze odradzam próby konfiguracji. Prościej jest podłączyć drukarkę (z serwerem wydruku) w cupsie na serwerze. Po prostu na kliencie uruchamiany jest jakiś lewy serwer ssh i serwer nawiązuje zwrotne połączenie z nastawionym tunelem do drukarki lokalnej. Niestety w moim przypadku zawsze były problemy z nastawieniem tego tunelu.Marcin Mackiewicz edytował(a) ten post dnia 03.04.12 o godzinie 00:58

  • Marcin Mackiewicz
    Wpis na grupie Bazy Danych w temacie Schemat bazy dla uprawnień użytkowników
    26.03.2012, 23:21

    Kolega podał tutaj tylko jedną informację. Ze baza ma być PostgreSQL. Koledzy weszli już w jakieś aplikacje webowe po drodze a samo pytanie było bardzo proste.

    Pierwsza rzecz jaką tu widzę to potrzeba zdefiniowania modelu aplikacji. Czy aplikacja będzie tworzona przy pomocy modelu trójwarstwowego czy może za pomocą modelu dwuwarstwowego ?

    Wyjaśnienie: 3 warstwy: aplikacja, acl, baza; 2 warstwy: aplikacja, baza

    Kolega mający problem pisał, że zakłada pisanie jakiegoś swojego systemu ACL.

    Rozwiązanie dla 3 warstwowego modelu:
    - Jeden user postgresql mający wszelakie uprawnienia do wszystkich obiektów bazy
    - Użytkownicy trzymani w oddzielnym obiekcie bazy i autentykowani przez ACL + logowanie przez aplikacje
    - Dodatkowy system sprawdzania uprawnień:
    *tabele przechowujące nazwy obiektów w bazie oraz uprawnienia do nich
    *lub tabele przechowujące nazwy funckjonalności oraz uprawnienia do nich

    Nie polecam bo dużo roboty i można mnóstwo błędów porobić jeżeli nie ma dobrze rozpisanego projektu

    Rozwiązanie dla 2 warstwowego modelu:
    - W PostgreSQL posiadamy role typu user oraz role typu grupa. Przyjmujemy na starcie, że najmniejszą jednostką nadawania uprawnień jest nie użytkownik a grupa. Grupa 'of course' zawiera różną ilość userów.
    - Autentykacja odbywa się przez logowanie (aplikacja) a dostęp udzielany jest dopiero po poprawej autentykacji usera w bazie danych.
    - Wszystkie obiekty bazy posiadają nadane uprawnienia ale tylko dla określonych grup uprawnień (5 rodzajów uprawnień: INSERT, UPDATE, SELECT, DELETE, EXECUTE)
    - Z poziomu aplikacji sprawdzamy uprawnienia do bazy danych:
    * Wszystkie uprawnienia przechowywane są w tabeli pg_catalog.pg_class: np.

    SELECT relname, relacl FROM pg_class

    spowoduje wyświetlenie wszystkich uprawnień dla wszystkich obiektów w bazie. Wystarczy tylko napisać w aplikacji funkcję która sprawdzi ACL w bazie dla danej tabeli.
    Zauważmy tu, że nie trzeba kombinować z budowaniem uprawnień bo baza sama je buduje na podstawie naszych zapytań GRANT oraz REVOKE. Teraz jeżeli dana funkcjonalność aplikacji korzysta z kilku obiektów bazy (np. 2 tabele oraz 1 widok) to aplikacja powinna sprawdzić wszystkie obiekty bazy.
    - Użytkownik może należeć do wielu grup jednocześnie. Wtedy aplikacja powinna sprawdzić uprawnienia dla wszystkich grup usera. Do jakich grup należy user można bardzo łatwo sprawdzić:
    SELECT groname, usename FROM pg_group, pg_user WHERE usename = [nazwa usera]

    lub
    SELECT groname, usename FROM pg_group, pg_user WHERE usesysid = [id_usera]


    Sprawdzenie uprawnień dla każdej grupy:
    - Funkcje piszemy tak aby otrzymać info czy user ma prawo czytania (SELECT), zapisu (INSERT), zmiany (UPDATE) oraz usuwania (DELETE). Jeżeli aplikacja wykonuje jakąś funkcję na bazie to należy jeszcze sprawdzić wykonanie funkcji (EXECUTE). W zależności od uprawnienia do obiektu lub nie aplikacja udostępnia funkcje lub też ich nie pokazuje. Tu dla porządku warto przyjąć, że aby można było np. dodawać dane do tabeli to wszystkie obiekty maja nadane uprawnienia insert dla tej grupy w której leży użytkownik. Jeżeli którykolwiek nie ma to wyświetlamy info o braku uprawnień i nie pokazujemy funkcji w aplikacji (to pozwoli łatwo wychwytywać błędy w uprawnieniach... ale tylko jeżeli userzy będą przyzwyczajeni do zgłaszania uprawnień xD)

    Szerszy opis dla 2 warstwowego modelu bo akurat takiego używam teraz.

  • Marcin Mackiewicz
    Wpis na grupie Administratorzy w temacie Rządowe pomysły :-)))
    26.02.2012, 01:57

    Ja tam się nie dziwie :)
    Pani sekretarka dostała polecenie ze ma się zapytać o bezpieczeństwo i zwrócono jej uwagę: "Pani Zosiu tylko żeby wyglądało mądrze".

    Miałem przypadek absurdu...
    Ministerstwo oświaty ma bardzo dokładnie (ustawa) opisany wzór dyplomu ukończenia różnych szkół. Rozpisane jest na papierze oraz w załączniku jest fotka z przykładem. Przykład nie jest dokładny z opisem papierowym. Każdy kontroler pierwsze co robi to przykłada fotke do wydruku i szuka błędów. Potem okazuje się ze wydruk jest zły bo fotka z przykładem jest umieszczona w dokumencie (ustawa) w powiększeniu 75% i czcionka wygląda na 9,5pt a nie 12 jak w opisie do przykładu.
    Zatem przykład zrozumienia treści jest ważniejszy niż sama treść :)

    Może tu też dla skomplikowanych wymagań trzeba doszukać się prostej odpowiedzi :)

  • Marcin Mackiewicz
    Wpis na grupie Bazy Danych w temacie problem z bazą danych na serwerach spółki EBITDA z poznania
    16.02.2012, 09:21

    Wymiataczem jeśli chodzi o mysql nie jestem...
    Z tego co wiem to takie błędy powstają jak się przenosi pliki bazy pomiędzy róznymi wersjami mysql'a.
    Może to być też problem padu usługi mysql wynikającej z jakiegoś błedu.
    Z reguły naprawa bazy pomaga.

    Jeżeli to zdarza się co kilka tygodni a dostawca mówi, że nic się nie dzieje to może oznaczać 2 rzeczy:
    1. Dostawca wie co zrobił i jak to naprawić tylko ściemnia
    2. Informatyk administrator danego serwera nie zabardzo wie co robi i co jakiś czas mu nie wychodzi a najlepszą odp. informatyka jest zawsze: "U mnie działa..."

    Skoro na bazie postawiony jest sklep internetowy to chcąc unikąć utraty obrotów/zysku roważyłbym zmiane dostawcy usługi jaką jest baza mysql...Marcin Mackiewicz edytował(a) ten post dnia 16.02.12 o godzinie 09:22

  • Marcin Mackiewicz
    Wpis na grupie C and C plus plus w temacie C++ mały problem z tablica
    10.02.2012, 16:52

    Naśmiewać sie każdy potrafi ... każdy kiedyś zaczynał programować. Z tym BBCode przedmówca ma racje.

    #include <iostream>
    #include <cstdio>
    using namespace std;

    int znajdzMin( unsigned int array[], int liczb ) {
    // Jezeli tablica posiada mniej niz 2 elementy to jedyny element jest najmniejszy dla calej tablicy
    if ( liczb > 1 ) {
    int min = array[0];
    for (int i = 1; i < liczb; i++ ) {
    if (min > array[i] ) min = array[i];
    }
    return min;
    }
    return array[0];
    }

    int main() {
    unsigned int n;

    cout << "Witaj w programie do wyznacznia najmniejszej wartosci wszystkich liczb dodatnich podanych przez ciebie " << endl;
    cout << "" << endl;
    cout << "Napisz ile chcesz wprowadzic liczb do programu: ";
    cin >> n;

    // Deklaracja tablicy
    unsigned int *array = new unsigned int[n];

    for ( int i = 0; i < n; i++ ) {
    cout << "\nWprowadz liczbę " << i + 1 << ": ";
    cin >> array[i];
    }

    cout << "Z posrod wszystkich liczb, ktore wprowadziles najmniejsza to: " << znajdzMin(array, n);
    cin.ignore();
    getchar();
    return 0;
    }
    Marcin Mackiewicz edytował(a) ten post dnia 10.02.12 o godzinie 16:55

  • Marcin Mackiewicz
    Wpis na grupie PHP w temacie php problem z 'sortowaniem' danych
    20.12.2011, 18:18

    Z podanego linku troszeczkę zrozumiałem o co chodzi. Szkoda tylko że napisane tak jak napisane ;/
    Kolego szanowny...

    Wszystko ładnie, pięknie ale skąd klient wie że ogóle ma zapłacić? Bo na zdjęciu masz za 2012 rok miesiące od stycznia do grudnia ... ???

    Rozumiem, że zakładasz że klient wie ile ma zapłacić i do kiedy. Skąd ty wiesz ile klient ma zapłacić i do kiedy ?

    Proponuję zachować tabelkę z kontrahentami tak jak masz - ona jest ok. Jeżeli chodzi o wpłaty dokonywane przez klienta to zrób tabelkę "wpłaty" i w niej zapisuj jaką kwotę klient zapłacił w jakim terminie.
    Żeby wiedzieć za co klient płaci zrób tabelkę "platnosci" i w niej zapisuj jaka kwotę ma zapłacić i do kiedy. Do tej tabelek dorób jeszcze sobie słownik tytułów płatności / wpłat żeby mieć możliwość kasowania np odsetek albo opłat dodatkowych, manipulacyjnych.

    Teraz zbierasz informacje o tym co klient ma zapłacić w jednym miejscu a ile wpłacił zbierasz w drugim miejscu.
    Rozwiązać należy tylko temat jak skorelować płatności z wpłatami. Najprościej z tabeli z płatnościami zrobić dodatkową kolumnę "do_zapłaty" w której będzie informacja ile z danej płatności jeszcze należy zapłacić. Tak samo w tabeli z wpłatami - robisz kolumnę "nadpłata"

    Teraz przy insercie do tabeli "wpłaty" uruchamiamy funkcję która podaną wpłatę rozlicza w płatnościach. Jeżeli nie ma płatności którą można rozliczyć (nie minął termin płatności) to klient ma nadpłatę i kwotę nadpłaty w danej wpłacie wpisujesz w pole "nadpłata". Przy następnej wpłacie od klienta funkcja sprawdza kwotę (suma nadpłat + kwota wpłaty) i próbuje rozliczyć względem płatności.

    Bilans klienta: suma kwot wplaty.kwota - suma kwot platnosci.do_zaplaty

    Robisz klientowi tabelkę:

    platnosc; kwota; termin;kwota wplaty; termin wplaty; odsetki;
    razem: platnosci; wplaty
    bilans: wplaty - platnosci

    Do tego możesz sobie dorobić naliczanie osetek od płatności przeterminowanych itp.
    Przykład trzeba zmodyfikować tak aby pasował do kasowego lub memoriałowego pobierania i naliczania należności - pod tym jest cała masa zależności księgowych

  • Marcin Mackiewicz
    Wpis na grupie Bazy Danych w temacie Postgresql 8.3 - błąd przy starcie serwera !!
    20.12.2011, 17:53

    Pytanie tylko jedno mam. Z jakich adresów chcesz się łączyć z bazą danych?
    Jeżeli tylko z localhost'a to zakomentuj 'listen_addresses' - bez ustawienia słucha tylko na localhost.
    Jeżeli zaś koniecznie chcesz mieć ten parametr to dla lokalnego adresu użyj ip :)
    Bez definicji plików konfiguracyjnych raczej trudno powiedzieć. Resolver'a odrzucam bo kolega napisał, że pinguje localhost'a a nie IP.

  • Marcin Mackiewicz
    Wpis na grupie Bazy Danych w temacie [MySQL] Dump UTF-8 -> Baza Latin2.
    11.12.2011, 21:00

    Kornel L.:
    Po co taki krok wstecz z kodowaniem!? Zostaw bazę w UTF-8. Zaktualizuj resztę kodu do współczesnego kodowania.

    To że takie kodowanie a nie inne to wcale nie krok wstecz. Często zdarzało się, że programiści operowali w interface'ach programów na długościach stringów. Zmiana kodowania na UTF jest wtedy zabójcza dla programu - klienta bazy danych a same przeprogramowanie klienta jest często bardzo trudne zwłaszcza kiedy program jest bardzo duży. Jaki programista stawiał koment albo flage przy takej operacji w celu jej późniejszej poprawy?

  • Marcin Mackiewicz
    Wpis na grupie Bazy Danych w temacie Zaprojektowanie diagramów i relacji
    11.12.2011, 20:52

    Nie wiem czy robisz to na zlecenie czy jest to tylko zadanie z baz danych. Jak to tylko zadanie do zrobienia to przyznam, że jest baaardzo nieprzemyślane przez nauczyciela prowadzącego. Już mógł kazać zaprojektować bazę pod program magazynowo-handlowy oraz pod stronę www z synchronizacją danych.

    Tak czy owak z tego o czym piszesz Aniu wynika, że chcesz stworzyć 3 niezależne od siebie oprogramowania i synchronizować dane między nimi.
    Moim skromnym zdaniem jest to najgorsze co można w tym przypadku zrobić ponieważ każdy z programów musi mieć najświeższe dane z bazy zewnętrznej. Przykład: Wystawiam fakturę w programie handlowym i muszę mieć informację ile sztuk jest na magazynie w momencie wystawienia FV. Oznacza to że odpada synchronizacja informacji co jakiś czas.
    Jak pisze mój przedmówca w programach tego typu to tylko wystawianie odpowiednich dokumentów na podstawie danych z bazy. Samo wystawienie dokumentu danego typu wyzwala szereg akcji na bazie danych które są niezbędne do przeprowadzenia procesu handlowego. Przykład: Wystawienie FV automatycznie generuje WZ dla magazyniera. Wprowadzenie FV zakupu automatycznie generuje dokument PZ który musi zostać potwierdzony przez magazyn.
    Najważniejsze tutaj jest wybranie odpowiedniej bazy danych. Niektórzy producenci używają bazy Pervasive inni wykorzystują Firebird'a albo Oracle'a. Nie spotkałem się z użyciem MSSQL'a niestety ale także można go użyć.

    Nie zakładam tu również, że każdy z programów ma mieć jednoczesny dostęp do 3 baz w tym samym czasie (wtedy lepiej zrobić wszystko w jednej bazie).

    Dane jakie należy synchronizować:
    Musisz rozpisać wszystkie rodzaje wystawianych w systemie dokumentów i przydzielić je dla odpowiednich programów (jeden rodzaj dokumentu może być wystawiony tylko w jednym programie):
    HANDEL: Dokumenty kasowe: Kasa przyjmie, Kasa wyda, Paragon, Faktura VAT, Faktura Pro Forma + korekty tych dokumentów
    MAGAZYN: Dokumenty magazynowe: Przyjęcie wew., Rozchód wew., Przyjęcie zew., Wydanie zew., Przesunięcie między-magazynowe z mag, na mag.
    ZAMÓWIENIA: Zamówienie u dostawcy

    Dane dodatkowe:
    Słownik kontrahentów - Dostępny w HANDEL, MAGAZYN
    Słownik dostawców dostępny w ZAMÓWIENIA, MAGAZYN

    Dane z HANDEL do MAGAZYN:
    Informacje o sprzedaży - na podstawie wystawionej fv generuje się dokument wydania bez potwierdzenia, ze wydano
    Dane kontrahentów - Pełna synchronizacja słownika w jedną stronę - dostęp tylko do odczytu

    Dane z MAGAZYN do HANDEL:
    Informacja o potwierdzeniu wydania towaru na podstawie wydania.
    Dokumenty wydania z magazynu które nie zostały utworzone na podstawie fv - do fakturowania

    Dane z MAGAZYN do ZAMÓWIENIA:
    W ZAMÓWIENIA oznaczamy przy danych pozycjach asortymentu stany minimalne. Z magazynu otrzymujemy tylko informacje o obecnym stanie magazynowym - tylko do odczytu
    Po stworzeniu zamówienia istnieje możliwość automatycznego generowania dokumentu przyjęcia - z MAGAZYN otrzymujemy informacje o potwierdzeniu przyjęcia towaru dla danego dokumentu pz
    Informacje o dokumentach przyjęcia które nie zostały wygenerowane na podstawie zamówienia

    Dane z ZAMÓWIENIA do MAGAZYN:
    Na podstawie wystawionego zamówienia w MAGAZYN generuje się dokument przyjęcia który musi być potwierdzony przez magazyn
    Informacje o dostawcach - słownik pobierany tylko w jedna stronę - tylko do odczytu

    Dane z HANDEL do ZAMÓWIENIA
    Może zaistnieć sytuacja zamówienia przez kontrahenta asortymentu którego nie ma w systemie, w tym celu handel powinien mieć możliwość przesłania do logistyki informacji o zapotrzebowaniu na asortyment

    Dane z ZAMÓWIENIA do HANDEL
    Potwierdzenie - informacja zwrotna generowana na podstawie zamówienia od handlu

    Tak z grubsza mniej więcej napisałem :)
    Tak na marginesie to użył był jednej bazy. PostgreSQL i czterech schematów:
    public - dane współdzielone (słowniki, kontrahenci, definicje dokumentów, konfiguracja)
    handel - dane handlowe
    magazyn - dane magazynowe
    zamówienia - dane o zamówieniach, zapotrzebowaniach

  • Marcin Mackiewicz
    Wpis na grupie Bazy Danych w temacie uzupelnianie table of FK
    26.11.2011, 01:43

    Szkoda że nie bardzo wiadomo co to za baza danych. Jeżeli pracujesz na bazie obsługującej widoki to przygotuj taki widok który łączy te tabele i dodaj na nim osobne rule dla insert, update oraz delete.
    Jeżeli tak zrobisz to będziesz mógł wczytywać dane przez widok a całą resztę załatwi za ciebie engine bazy... (postgreSQL)

  • Marcin Mackiewicz
    Wpis na grupie Bazy Danych w temacie Wyszukiwarka w bazie danych
    26.11.2011, 01:32

    Wszystko było by ładnie pięknie gdyby kolega nie powtarzał tyle razy tych samych zapytań. Powiek krótko że w konstrukcji if można użyć jeszcze logicznie 'i' ( && ) oraz 'lub' ( || ) co bardzo ułatwia sprawę.

    Co do przedstawionego przykładu może nie pokazywać danych modeli ponieważ w jednej ze ścieżek zapytanie ma w WHERE sprzedawca='".$model_ciagnika."' ...
    Ciężko znaleźć informacje o modelu ciągnika jeżeli szuka się nie w tej kolumnie co trzeba (wnioskuje z identycznego zapytania parę linii wyżej.

    Dodatkowo jeżeli wykonujesz takie zapytania to może lepiej napisać sobie funkcję np.:

    /**
    * @param string $zKolumny Na podstawie jakiej kolumny w bazie sukam
    * @param string $co Wartość do wyszykiwania
    * @return mixed Wynik zapytanie lub false
    */
    function getData($zKolumny, $co) {

    }


    I użyć zapytania SQL typu:
    $sql = "SELECT * FROM zamowienie WHERE $zKolumny='$co' ORDER BY id ASC"
    Marcin Mackiewicz edytował(a) ten post dnia 26.11.11 o godzinie 01:33

  • Marcin Mackiewicz
    Wpis na grupie C and C plus plus w temacie Strony dla programistów-automatyków
    9.11.2011, 23:20

    Ano to dobrze cię uczą. Jak znam życie to między innymi na klasycznym przykładzie z sygnalizacją świetlną albo oświetleniem w budynku xD
    Pytanie tylko co masz na myśli pod pojęciem 'automatyka'.

    Bo wg mnie modele są dwa:
    1) Zestaw punktów pomiarowych wraz z urządzeniem sterującym skonfigurowanym do podejmowania działań w zależności od stanu pomiarów.

    2) Zestaw urządzeń wykonujących określone dla każdego urządzenia zadnie/zdania które wykonują te zadania w zależności od stanu innych urządzeń - tu brak urządzenia sterującego :) czyli jedno urządzenie wprawia w ruch drugie.

    Automatyka - wykonywanie określonych działań w zależności od pewnego stanu bez ingerencji człowieka :)

    Pisać można o tym i pisać ale to temat rzeka... Przykładzik to np system alarmowy: czujniku ruchu na podczerwień, sejsmiczne czy magnetyczna a sterownikiem jest centralka

  • Marcin Mackiewicz
    Wpis na grupie Bazy Danych w temacie [MySQL] Dump UTF-8 -> Baza Latin2.
    9.11.2011, 22:52

    Eh nie ma to jak problemy ze zmianą kodowania bazy danych :)

    Jak już masz dump to sprobój przkonwertować to co jest ... pod linuxem:

    iconv -f UTF8 -t CP1250 [plik_zrodlowy] > [plik_wynikowy]


    Pare razy dostalem od kolegów SQL'a napisanego na Windowsie i konwert z cp1250 na utf8 pomógł. Zakładam ze w drugą stronę także zda egzamin.

  • Marcin Mackiewicz
    Wpis na grupie LINUX i OPEN SOURCE w temacie Konfiguracja Empathy
    30.10.2011, 22:27

    Hmmm... Z Empathy i siecią gg jest problem. Otórz standardowa obsługa gg nie działa. Kiedyś można było się połączyć ale nie dało się pobrać listy kontaktów. Jeżeli chcesz używać empathy na siłę (polecam pidgin'a - ten sam efekt) to polecam nakładkę o nazwie telepathy-sunshine pana Krzysztofa. Nie wiem czy repo jest aktualne ale gg działa poprawnie dopiero po aktualizacji :)

    https://launchpad.net/~kkszysiu/+archive/telepathy
    https://launchpad.net/~telepathy/+archive/ppa

  • Marcin Mackiewicz
    Wpis na grupie C and C plus plus w temacie Strony dla programistów-automatyków
    30.10.2011, 22:19

    Właśnie. Co się kryje pod pojęciem programista w automatyce?

    Chodzi o programowanie sterowników?
    Może chodzi o stworzenie oprogramowania do podglądu pracy jakiegoś urządzenia?
    Czy może chodzi o jakiś ambitniejszy projekt który ma na celu stworzenie oprogramowania które zautomatyzuje jakiś proces?

    W sumie to z tego co wiem (w sumie to niewiele) ale wszystkie urządzenia które służą do sterowania czymkolwiek można programować w językach niskiego poziomu a są to z reguły tworzone konkretnie pod dane urządzenia (zwykle pochodne assemblera). Informacje te nie są ogólnie dostępne...

  • Marcin Mackiewicz
    Wpis na grupie Programiści w temacie Jednoosobowa dizałalność - konto bankowe - integracja

    Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Programiści

Dołącz do GoldenLine

Oferty pracy

Sprawdź aktualne oferty pracy

Aplikuj w łatwy sposób

Aplikuj jednym kliknięciem

Wyślij zaproszenie do