Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

8 Stron V   1 2 3 > » 

sabat24
Napisane: 9.05.2019, 09:20:23





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Jak wystarcza Ci coś prostszego i siłą rzeczy trochę wolniejszego niż wkhtml, to zobacz na domPDF.
  Forum: Przedszkole · Podgląd postu: #1240662 · Odpowiedzi: 4 · Wyświetleń: 477

sabat24
Napisane: 22.03.2019, 20:22:32





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Ja stosuję podejście Crypto Erase. To też rozwiązuje problem z wszelkimi kopiami baz danych, jakie trzymamy.
  Forum: PHP · Podgląd postu: #1239535 · Odpowiedzi: 9 · Wyświetleń: 2 154

sabat24
Napisane: 26.02.2019, 18:15:05





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Z rok temu miałem podobny problem i rozwiązałem go tak. Właściwie zasada opisana przez trueblue. Wszystkie tego typu tekstu do tłumaczenia eksportuję do Excela. Każdy język, to osobny arkusz. W pierwszej kolumnie umieszczam identyfikator w postaci: 222|prod|desc - co oznacza ID 222, tabela products, pole description. Kolejne kolumny, to są części składowe danego tekstu. Tekst rozbijam ze względu na akapity (p), nowe linie (br) oraz wypunktowania (li). U mnie nie ma więcej możliwości, ale można dodać. Na bazie Twojego przykładu wyglądałoby tak (każdy wiersz tu, to kolumna w excelu)

1|prod|desc
<strong>Materiał:</strong>
Korpus wykonany z wysokiej jakości płyty wiórowej laminowanej; akcesoria montażowe wraz z czytelną instrukcją w komplecie; gwarancja 2 lata.
<strong>Opis produktu:</strong>
Szafka górna otwarta z dwoma półkami w środku. Elegancja i komfort to główne cechy kuchni Sycylia. Niezależnie z której strony oglądane będzie kuchnia meble zawsze zaprezentują się doskonale. Imponująca liczba szafek dolnych oraz górnych zaspokoi potrzeby użytkowników.
<strong>Kolor:</strong>
Korpus - biały
Korpus - orzech milano
....

Dodatkowo zapisuję sobie tekst całości, na wypadek, gdyby się on zmienił nim przyjdzie tłumaczenie. Teraz tłumacz ma opis 1 produktu w 1 wierszu, tylko w różnych kolumnach. Widzi cały kontekst i zachowuje podział na kolumny. Co prawda muszą oni sobie to kopiować z excela albo odpowiednio formatować kolumny, bo długie teksty są niezbyt dobrze wyświetlane, jednak jest to akceptowalne.
Po jakimś czasie dostaję całe tłumaczenie ze wszystkich języków w 1 pliku excela albo w wielu plikach z arkuszami nazwanymi odpowiednio wobec kodów języka np. en-gb, fr-fr itp.
Wgrywam sobie taki plik do strony i parser robi odwrotną pracę. Czyli na podstawie tekstu, który skopiowałem dzieli go ponownie na tablicę z elementami tekstowymi. Odczytuje z Excela odpowiednie wiersze i kolumny, robi podmianę, na podstawie ID rozpoznaje co to za produkt i jakie pole jest tłumaczone i wykonuje update do bazy danych.

Samo ID jest kodowane i dekodowane (używam biblioteki hashID), by mi nikt tam nie ingerował w to. Dopuszczam strongi, bo nie widzę powodu je zmieniać na nic innego. Jeśli mam kod typu <span style="font-size: 14px; color: #fff;">tekst</span> i inne takie dziwne rzeczy, to zamieniam to na [1]tekst[/1] i informuję tłumaczy, by nie ruszali takich znaczków oraz <strongów>. Od biedy strongi można też zamieniać w ten sposób.
Sprawa tłumaczeń generalnie załatwiana jest przez eksport oraz import plików excela.
Jak na razie nie trafił się nikt z tłumaczy, co by nie ogarnął tego systemu excelowego, chociaż za wielu ich też nie było.
  Forum: Przedszkole · Podgląd postu: #1239080 · Odpowiedzi: 3 · Wyświetleń: 364

sabat24
Napisane: 22.02.2019, 20:21:13





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

np. https://www.kimai.org/ - o ile ma być coś prostego
  Forum: Szukam · Podgląd postu: #1238994 · Odpowiedzi: 5 · Wyświetleń: 13 488

sabat24
Napisane: 3.02.2019, 22:00:38





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Generalnie tak. To też zależy jakiej wielkości jest to plik i ile trwa jego wygenerowanie. Jak jesteś w stanie wygenerować plik "od ręki" to możesz zakodować go w base64 i przesłać do angulara w odpowiedzi. Wtedy kontroler zwraca odpowiedź np. takiej tablicy JSONem:
  1. ['status' => 1, 'file' => base64_encode($file)]


albo

  1. ['status' => 0, 'error' => 'komunikat błędu']


W angularze czekasz na odpowiedź i w przypadku jej prawidłowego otrzymania i w zależności od status, wywołujesz pobieranie pliku albo pokazujesz komunikat.

Jak plik jest większy albo musisz go kolejkować, czyli angular musi czekać np. minutę aż się plik skończy generować, trzeba trochę dodać logiki, ale zasada komunikacji jest zawsze taka sama.
  Forum: Frameworki · Podgląd postu: #1238787 · Odpowiedzi: 3 · Wyświetleń: 1 938

sabat24
Napisane: 29.01.2019, 22:32:53





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Angular jako tako jest tu bez znaczenia, bo zasada działania jest praktycznie taka sama w każdym froncie. Wysyłasz request ajaxem. W backendzie tworzysz sobie jakieś restowe API albo obsługujesz normalne zapytanie GET czy POST przesłane przez front. Następnie front obsługuje odpowiedź, którą zwrócił backend.

Nie bardzo rozumiem Twoje pierwsze pytanie. Nie ma znaczenia, czy wyślesz żądanie przez angular, czy wpiszesz sobie w przeglądarkę jakikolwiek adres i otrzymasz odpowiedź w ten sposób. Później taką odpowiedź obsługujesz dynamicznie przez front i albo wyświetlasz błąd zwrocony przez backend albo zlecasz przeglądarce pobranie pliku, który został wygenerowany przez backend. Do uruchomienia samego pobierania pliku przez ajax, możesz użyć np. tego skrypciku http://danml.com/download.html
Można też zrobić redirect w przeglądarce na jakiś adres do backendu i w nagłówku wymusić pobieranie pliku XML. Wtedy przeglądarka rozpocznie pobieranie i nie zmieni swojego adresu (chyba, że użytkownik ma wymuszone otwieranie takiego pliku w przeglądarce, wtedy to nie zadziała). Możesz też użyć techniki z iframem stworzonym dynamicznie, któremu wrzucasz adres URL do backendu i backend generuje Ci ten plik i przesyła odpowiednie nagłówki oraz body.
  Forum: Frameworki · Podgląd postu: #1238707 · Odpowiedzi: 3 · Wyświetleń: 1 938

sabat24
Napisane: 28.01.2019, 11:22:21





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Na siłę możesz zrobić coś takiego (nie testowałem tego, ale na oko powinno działać)
  1. $html = $this->render('strona/header.html.twig')->getContent();
  2. $html .= $this->render('podstrona/index.html.twig')->getContent();
  3. $html .= $this->render('strona/footer.html.twig')->getContent();
  4.  
  5. $response = new Response();
  6. $response->setContent($html);
  7. return $response;
  Forum: Frameworki · Podgląd postu: #1238675 · Odpowiedzi: 3 · Wyświetleń: 2 122

sabat24
Napisane: 2.01.2019, 16:55:55





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Cytat
Chciałbym zabezpieczyć się przed tym, że wspomniany plik Excela przez pomyłkę zostanie uruchomiony na innym komputerze.

Przez pomyłkę raczej nikt nie złamie hasła do projektu, nie wejdzie w kod VBA i nie podejrzy danych autoryzacyjnych, by później uruchomić ten plik pomyłkowo na innym komputerze.
Napisz najlepiej w jakim środowisku to działa, jak dystrybuujesz i przed czym realnie chcesz się uchronić.
Tworzenie historii, która ma uprościć i wyjaśnić rozwiązanie, tylko je gmatwa.

Moim zdaniem od strony makra wystarcza w zupełności taki sposób, gdyż tak się zawsze łączysz z REST API. Możesz użyć specjalego klucza, który będzie kodował przy pomocy unikalnej soli dane komputera, które są Ci znane i możesz je pobrać z makra i sprawdzać, czy klucz się zgadza. Nawet jak ktoś przeniesie makro na inną maszynę, to wykryje to niezgodność klucza. Można też przez basic authentication. Możesz też prosić o login i hasło w samym makrze i zastosować ciasteczka robiąc normalne logowanie jakby to była przeglądarka i dopiero wtedy uruchamiać główne makro, które coś robi.
  Forum: Przedszkole · Podgląd postu: #1238378 · Odpowiedzi: 3 · Wyświetleń: 558

sabat24
Napisane: 1.01.2019, 23:53:54





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Też kiedyś tego szukałem i poza powyższym nic innego nie istnieje. Możesz od biedy skorzystać z https://floobits.com/help/plugins/intellij - to jest plugin do zdalnego programowania parami, więc może się czasem przydać przy pracy na konkretnych plikach (wymaga eksportu na zewnętrzny serwer), ale na pewno nie jest to rozwiązanie systemowe.
  Forum: Kontrola i zarządzanie projektami · Podgląd postu: #1238374 · Odpowiedzi: 5 · Wyświetleń: 8 198

sabat24
Napisane: 17.11.2018, 00:18:00





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Teraz robi co trzeba. Dzięki.
  Forum: MySQL · Podgląd postu: #1237675 · Odpowiedzi: 2 · Wyświetleń: 1 961

sabat24
Napisane: 16.11.2018, 19:58:52





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Zazwyczaj używałem takiej komendy na serwerze, żeby zrzucić sobie bazę danych do pliku:

Kod
mysqldump -h xxx -u xxx --password=xxx baza > backup_$(date +%Y-%m-%d-%H.%M.%S).sql


Dziś jednak zwraca mi ona błąd:

-- MySQL dump 10.13 Distrib 5.5.35, for Linux (x86_64)
--
-- ------------------------------------------------------
-- Server version 5.7.21-20-log

mysqldump: Couldn't find table: ">"

Pewnie był jakiś update na serwerze, ale czy zmieniła się składnia? Jak to teraz powinno wyglądać?
  Forum: MySQL · Podgląd postu: #1237670 · Odpowiedzi: 2 · Wyświetleń: 1 961

sabat24
Napisane: 10.09.2018, 13:28:59





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Z contentu w jakim sensie? Style możesz sobie też dodać inline. Jedyna alternatywa to stworzyć w JS dynamicznie img i załadować obrazek przez podanie ścieżki do src w ramach preloadera, ewentualnie stworzyć img z position absolute i wyrzucić go poza widok strony, a później go przenieść, ale to trochę przekombinowane.
  Forum: Przedszkole · Podgląd postu: #1236641 · Odpowiedzi: 7 · Wyświetleń: 488

sabat24
Napisane: 10.09.2018, 13:12:12





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Zależy co chesz zrobić, ale generalnie połącz zdjęcia w jeden plik, załaduj w CSS jako background i na hover zmień background-position, żeby pokazało drugie zdjęcie.
  Forum: Przedszkole · Podgląd postu: #1236639 · Odpowiedzi: 7 · Wyświetleń: 488

sabat24
Napisane: 10.09.2018, 10:24:51





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Prawdopodobnie wystarczy to:

https://stackoverflow.com/questions/2938454...-structure-list
  Forum: PHP · Podgląd postu: #1236636 · Odpowiedzi: 1 · Wyświetleń: 471

sabat24
Napisane: 9.09.2018, 14:29:29





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Najprościej bezpośrednio z konsoli bez pakowania do gz.

Kod
mysql -u user -p nazwa_nowej_bazy < sciezka_pliku.sql


  Forum: MySQL · Podgląd postu: #1236626 · Odpowiedzi: 5 · Wyświetleń: 1 905

sabat24
Napisane: 6.09.2018, 11:26:37





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

U mnie wygląda to tak, że do tego pliku lock zapisuję ID procesu. Dzięku temu nawet jeśli plik istnieje, pobieram ID procesu, sprawdzam, czy taki proces już występuje. Jeśli nie występuje, to znaczy, że serwer zabił go i skrypt nie skończył się wykonywać normalnie. Wtedy zazwyczaj odpalam ponownie ten proces i aktualizauję ID. Jeśli proces ciągle istnieje to patrzę na datę modyfikacji pliku i albo zabijam sam taki proces, jeśli uznam, że czas jest dziwnie długi, czekam na zabicie i odpalam ponownie właściwy skrypt albo zostawiam go i nie odpalam kolejnego.
Możesz też napisać własnego, prostego demona w PHP, który będzie kontrolował wszystkie procesy na danym serwerze zamiast crona.
  Forum: Przedszkole · Podgląd postu: #1236542 · Odpowiedzi: 3 · Wyświetleń: 388

sabat24
Napisane: 3.09.2018, 08:00:46





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Trochę odchodząc od temu, to wbrew pozorom napisanie czegoś takiego, nie jest mocno skomplikowane. To jeszcze zależy jaka to jest skala i jakie powinno mieć funkcje. Kiedyś znajomemu robiłem coś podobnego w PHP. Przykład powyższy jest trafny, do tego jeszcze ważony problem komiwojażera oraz problem plecakowy z wagami polegającymi na sortowaniu względem priorytetu rozładunku. Drukowanie kodów QR i później kierowca tylko skanuje na rozładunku co zeszło i co weszło i masz bieżący podgląd.
Tak naprawdę problemem w takich rozwiązaniach są wagi optymalizacyjne, gdyż czasami lepiej jest zmienić kolejność układania towarów w TIRze a czasami zmiana trasy. To jednak dotyczy całkowicie zautomatyzowanych systemów przy wielu frachtach. Jako program pomocniczy można wygenerować kilka wariantów i dać logistykowi wybrać.
  Forum: Hydepark · Podgląd postu: #1236485 · Odpowiedzi: 2 · Wyświetleń: 1 182

sabat24
Napisane: 31.08.2018, 19:59:52





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Dzięki. Będę sobie testował różne rozwiązania i zobaczymy, co wyjdzie najlepiej.
To json-ld wygląda nieźle. Ciągle byłem na etapie ręcznego klepania schema.org w strukturę strony, co szło topornie.
  Forum: Optymalizacja i pozycjonowanie stron - SEO · Podgląd postu: #1236456 · Odpowiedzi: 2 · Wyświetleń: 8 639

sabat24
Napisane: 31.08.2018, 15:08:10





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Stworzyłem stronę typu one-page. Każda sekcja posiada swój normalny adres URL typu {slug},{id}.html np. domena.com/oferta,5.html domena.com/kontakt,2.html

Podczas skrolowania strony, używam history.push by każda sekcja miała nadawany swój adres. Analogicznie swoje adresy mają treści ładowane dynamicznie ajaxem typu newsy albo oferta produktów. Jak ktoś klinie na szczegóły produktu, pojawia się modal z treścią zaserwowaną przez ajaxa i podmenia się adres URL strony razem z tytułem. Gdy użytkownik odświeży stronę z danym linkiem, kontroler wstrzykuje do widoku funkcję JS typu load_product(5), która powoduje wywołanie ajaxa i analogiczny efekt, jak opisany powyżej, gdy użytkownik w coś kliknie.

Problemem jednak jest to, że technicznie wszystkie te URLe mają dokładnie ten sam kod i treść, do czasu gdy ajaxem doczyta się coś nowego. Nie wierzę, by google crawler rozróżniał tego typu działania, więc wpadłem na pomysł, by kontroler po rozpoznaniu crawlera, serwował mu prostą stronę tylko z tą treścią z podanego linku. Czyli przy indeksowaniu domena.com/produkt,9.html dostałby opis jakiegoś produktu z ustawionym title i description.
Sama technika snapshotów została oznaczona jako deprecated. Jest sens to robić w taki sposób jak opisałem? Czy taką stronę dla crawlera rozbudować o nawigację i inne elementy, tak jakby to była normalna podstrona serwowana użytkownikowi, czyli stopka, treść główna i np. lista kategorii?

Jak właściwie dobrze wypozycjonować poszczególne produkty na tej stronie, które są ładowane ajaxem?
  Forum: Optymalizacja i pozycjonowanie stron - SEO · Podgląd postu: #1236442 · Odpowiedzi: 2 · Wyświetleń: 8 639

sabat24
Napisane: 31.08.2018, 08:36:04





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

O jak miło.
Mi też padło na wersjach 5.5 i 2.8.
  Forum: Hydepark · Podgląd postu: #1236431 · Odpowiedzi: 4 · Wyświetleń: 1 191

sabat24
Napisane: 30.08.2018, 20:23:36





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Miałem coś takiego -> http://forum.php.pl/index.php?showtopic=260954
Prawdobodobnie używasz php graph sdk w wersji mniejszej niż 5.5, np. 5.4
  Forum: Hydepark · Podgląd postu: #1236427 · Odpowiedzi: 4 · Wyświetleń: 1 191

sabat24
Napisane: 23.08.2018, 10:46:57





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Cytat(batman @ 22.08.2018, 11:03:40 ) *
Mój wybór padł na Nikola, generator statycznych stron.

Rzuciłem tylko okiem na dokumentacje, ale mógłbyś z praktyki napisać, w jaki sposób działa wyświetlanie dynamicznych treści statycznie? Instalujesz to na swoim serwerze produkcyjnym i gdy ktoś doda np. komentarz lub napiszesz artykuł (widziałem, że można wpiąć CMSa sobie) z kodu robi sie jakiś trigger do przebudowania treści? On sam wie, które części ma wygenerować ponownie, czy robi pełen build za każdym razem?
  Forum: Hydepark · Podgląd postu: #1236243 · Odpowiedzi: 19 · Wyświetleń: 2 341

sabat24
Napisane: 8.08.2018, 12:03:55





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Używacie tego narzędzia? Jak się sprawuje w praktyce w porównaniu np. do Jenkinsa? Chodzi mi o łatwość konfiguracji, pewną elastyczność i wygodę użycia później.
  Forum: Kontrola i zarządzanie projektami · Podgląd postu: #1235938 · Odpowiedzi: 0 · Wyświetleń: 6 935

sabat24
Napisane: 3.08.2018, 17:28:49





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Chodzi mi raczej o to, że myślenie podejściem Data First nie jest uznawane za błąd sam w sobie, a Model First nie zawsze musi być stosowane w pierwszej kolejności. Wszystko zależy czego potrzeba i co się chce osiągnąć.
Zgadzam się, że przy modelu nie masz odwzorować schematu bazy, jaki masz założony, bo nie masz mieć takiego założenia po prostu. Natomiast jeśli idziesz od strony architektury bazy danych, bo masz ku temu powód, to nic w tym złego.
  Forum: Frameworki · Podgląd postu: #1235840 · Odpowiedzi: 17 · Wyświetleń: 3 944

sabat24
Napisane: 3.08.2018, 10:00:38





Grupa: Zarejestrowani
Postów: 175
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----

Cytat
No i to jest błąd.

Uważasz to za błąd w ogóle, czy w tym konkretnym przypadku?
  Forum: Frameworki · Podgląd postu: #1235836 · Odpowiedzi: 17 · Wyświetleń: 3 944

8 Stron V   1 2 3 > » 

New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 19.05.2024 - 17:04