Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >

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 411

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 580

sabat24
Napisane: 19.12.2017, 19:13:02





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

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

Na studiach się to u nas zwało algorytmami wykrojów. Implementację robiłem przy pomocy algorytmów genetycznych. Wpisz sobie w google: "Zmodyfikowany algorytm genetyczny dla dwuwymiarowego nieregularnego problemu optymalnego rozkroju" powinien Ci wyskoczyć PDF z Politechniki Krakowskiej z zarysem problemu.

Po angielsku szukaj: irregular shape cutting problem albo cutting stock problem
  Forum: PHP · Podgląd postu: #1226659 · Odpowiedzi: 4 · Wyświetleń: 561

sabat24
Napisane: 27.11.2017, 17:18:05





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

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

Ogólnie - ponieważ jest problem z zapisem typów float (liczb zmiennoprzecinkowych) w formacie binarnym. Używane są pewne zaokrąglenia, które przy operacjach arytmetycznych czasami zwiększają swój błąd.
Bardziej szczegółowo - choćby ten artykuł
  Forum: Przedszkole · Podgląd postu: #1225367 · Odpowiedzi: 3 · Wyświetleń: 309

sabat24
Napisane: 6.11.2017, 20:23:19





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

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

Myślałem, że chcesz osiągnąć coś innego na początku. Zobacz ten kod:

  1. class Sequences {
  2. public function almostIncreasingSequence(array $sequence) {
  3. $j = count($sequence);
  4. for($i = 0; $i < $j; $i++) {
  5. $subsequence_to_check = $sequence;
  6. array_splice($subsequence_to_check, $i, 1);
  7. $is_sequence_increasing = $this->_isSequenceIncreasing($subsequence_to_check);
  8. if ($is_sequence_increasing === TRUE) return $i;
  9. }
  10. return FALSE;
  11. }
  12.  
  13. private function _isSequenceIncreasing(array $sequence) {
  14. $j = count($sequence);
  15. if ($j === 0) return FALSE;
  16. for($i = 0; $i < $j - 1; $i++) {
  17. if ($sequence[$i] >= $sequence[($i + 1)]) return FALSE;
  18. }
  19. return TRUE;
  20. }
  21. }
  22.  
  23. $sequence = new Sequences();
  24. $result = $this->almostIncreasingSequence([1,5,2,4,3]);
  25.  


Zwraca FALSE jeśli się nie da uzyskać ciągu albo indeks, jaki należy usunąć, by otrzymać ciąg rosnący - może zwrócić 0. Też kwestia co powinno zwracać w przypadku przekazania ciągu 1 elementowego albo 2 elementowego, ale to już sobie możesz obsłużyć.
  Forum: Przedszkole · Podgląd postu: #1224158 · Odpowiedzi: 16 · Wyświetleń: 840

sabat24
Napisane: 6.11.2017, 16:12:15





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

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

Sortowanie odpada, gdyż?
  Forum: Przedszkole · Podgląd postu: #1224137 · Odpowiedzi: 16 · Wyświetleń: 840

sabat24
Napisane: 5.11.2017, 17:34:01





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

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

Dlatego dodałem założenia, że: "wartości przekazane do metody są posortowane rosnąco", czyli nie może być to tablica [1, 2, 1, 2], ale [1, 1, 2, 2], czyli albo zrób sort w tej metodzie, jeśli przekazujesz dane niesprawdzone albo wcześniej zrób sort.
  Forum: Przedszkole · Podgląd postu: #1224102 · Odpowiedzi: 16 · Wyświetleń: 840

sabat24
Napisane: 5.11.2017, 11:30:52





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

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

1. pętle for nie możesz zacząć od 0, skoro szukasz poprzednika.
2. tworzysz tablicę dla zmiennych $a i $b, a później porównujesz tak jakby to były wartości skalarne
3. bardziej optymalnie będzie wyjść z pętli w przypadku znalezienia dwóch liczb, które nie spełniają warunku, by nie iterować całej tablicy

Założenia:
wartości przekazane do metody są posortowane rosnąco
tablica co najmniej dwóch elementów

  1.  
  2. $sequence = [1,1,3,4];
  3. public function almostIncreasingSequence($sequence) {
  4. $j = count($sequence);
  5. $not_higher_than_previous = 0;
  6. for($i = 0; $i < $j - 1; $i++) {
  7. if ($sequence[$i] >= $sequence[($i + 1)]) {
  8. $not_higher_than_previous++;
  9. if ($not_higher_than_previous === 2) return FALSE;
  10. }
  11. }
  12.  
  13. return $not_higher_than_previous === 1 ? TRUE : FALSE;
  14. }



  Forum: Przedszkole · Podgląd postu: #1224088 · Odpowiedzi: 16 · Wyświetleń: 840

sabat24
Napisane: 4.11.2017, 11:07:21





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

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

Cytat
2. Stworzenie zmiennej która będzie aktualizowana po każdej zmianie - możliwość pomyłki, krótszy czas (np kolumny `liczba ocen` w tabeli uczen)

To jest denormalizacja i stosuje się powszechnie w celach optymalizacyjnych. Wszystko zależy od rodzaju obliczeń, częstotliwości zmiany i tego jak czesto odczytujesz daną wartość. Przykładowo jeśli ktoś dodaje post na forum do tematu raz na kilka godzin, a wyświetlenie liczby postów w tematach odbywa się co parę minut, nie ma sensu tego za każdym razem obliczać.

Sama kwestia implementacji i pomyłek.
Po pierwsze możesz to wyrzucić poza logikę aplikacji i zrobić triggery w bazie, które będą aktualizować same wszystkie pola w zależności od zapytań idących do bazy.
Po drugie nie zawsze musisz inkrementować wartość o jeden po akcji dodającej. Jeśli zapis jest rzadki, odczyt częsty i nie do końca chcesz tworzyć całą logikę związaną z inkrementacją, zawsze możesz puścić COUNT po stworzeniu rekordu i zapisać tę wartość, co zwróci.
  Forum: Przedszkole · Podgląd postu: #1224067 · Odpowiedzi: 6 · Wyświetleń: 735

sabat24
Napisane: 16.10.2017, 13:33:03





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

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

Najprościej podziel to na jakieś paczki. Zlicz wielkość poszczególnych plików, by wyestymować czas pracy skryptu i np. dodawaj do archiwum po X plików. Zapisz w bazie, czy w jakimś pliku, na czym skończyłeś i w kolejnym kroku dodaj kolejne pliki do archiwum. Nie musisz od razu stworzyć całego archiwum. Możesz dodawać pliki do już stworzonego częściowo archiwum.
Możesz też zliczać czas pracy skryptu, by wyrobić się zamknąć archiwum, nim skrypt przekroczy 30 sekund.

Możesz także spróbować zwiększyć limit czasu pracy skryptu. Niektóre hostingi pozwalają na to, aczkolwiek to nie rozwiąże nigdy problemu, że trafi się jakieś wielkie archiwum, które i tak przekroczy ten czas.

Alternatywnie odpalaj skrypt z lini poleceń, która zazwyczaj ma większe (niekiedy nieograniczone) limity czasu pracy skryptu. Ale tego się dowiedz od firmy, gdzie masz serwer.
  Forum: Przedszkole · Podgląd postu: #1223165 · Odpowiedzi: 15 · Wyświetleń: 790

sabat24
Napisane: 25.09.2017, 14:02:15





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

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

Po pierwsze string, który otrzymujesz, to jest JSON, więc zamiast

  1. // Kasujemy z ciągu pierwszy i ostatni znak - czyli { i }
  2. $string = substr($string, 1, -1);
  3. // Tworzymy tablicę ze stringa gdzie po lewej stronie znaku : to klucze a po prawej to wartości
  4. $array = array_chunk(preg_split('/(\:|,)/', $string), 2);
  5. $result = array_combine(array_column($array, 0), array_column($array, 1));


Zrób po prostu
  1. $result = json_decode($string, TRUE);
  Forum: Przedszkole · Podgląd postu: #1222413 · Odpowiedzi: 2 · Wyświetleń: 315

sabat24
Napisane: 18.09.2017, 11:43:27





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

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

Zapomniałem o jednym:

  1. echo '<td onclick="editExe(\''.htmlentities(json_encode($arr)).'\')"></td>';


Chyba, że chcesz mieć dane jako JSON bezpośrednio, to wtedy możesz wstawić obiekt JSON bez apostrofów.
  Forum: Przedszkole · Podgląd postu: #1222086 · Odpowiedzi: 5 · Wyświetleń: 541

sabat24
Napisane: 12.09.2017, 22:39:40





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

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

Zapewne dlatego, że dla wcześniejszych rekordów id_zaladunek oraz id_rozladunek pokrywało się z id_zaladunku. To, że robiło JOINa (bo ID wartościowo się pokrywało), nie oznacza, że dostarczało Ci prawidłowe wyniki, a jeśli nawet, to w ramach przypadku.
  Forum: PHP · Podgląd postu: #1221898 · Odpowiedzi: 6 · Wyświetleń: 447

sabat24
Napisane: 12.09.2017, 20:29:54





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

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

Będzie działać, bo dla przeglądarki to za każdym razem zupełnie inny plik. Możesz też spróbować dodać w htaccesie taki kod i wtedy bez zmiany nazwy linka, też powinno zadziałać. Ja tego używam do wymuszenia odświeżania css-ów i js-ów, więc dla json też raczej zadziała.

Kod
<Files .json>
    Header unset Cache-Control
</Files>
  Forum: JavaScript · Podgląd postu: #1221890 · Odpowiedzi: 3 · Wyświetleń: 819

sabat24
Napisane: 13.09.2017, 07:08:11





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

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

Powyższa biblioteka daje lepsze czasy, ale moim zdaniem nie jesteś w stanie zejść poniżej paru sekund w czystym php. Rozwiązaniem porównywalnym do tego z XML jest albo odpalenie parserów w pytonie albo doinstalowanie specjalnych bibliotek do Apacha. Tego ostatniego nie próbowałem, ale jak szukałem dla siebie rozwiązań, było kilka polecanych z rok temu, które ponoć dawały dobre wyniki.
  Forum: PHP · Podgląd postu: #1221904 · Odpowiedzi: 5 · Wyświetleń: 520

sabat24
Napisane: 12.08.2017, 12:16:12





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

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

Masz dwie opcje:
1. użyj ENUM jako typ kolumny Poz i wtedy są sortowane wedle indeksów dodanych do ENUM
2. użyj konstrukcji z FIELD np. ORDER BY FIELD(Poz, 'B','P','N', 'O')
  Forum: PHP · Podgląd postu: #1220375 · Odpowiedzi: 2 · Wyświetleń: 369

sabat24
Napisane: 6.08.2017, 18:42:32





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

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

Moim zdaniem w 100% wystarczy Ci:
https://symfony.com/pdf/Symfony_book_3.1.pdf?v=4

a następnie
http://knpuniversity.com/tracks/symfony
  Forum: Pytania · Podgląd postu: #1220099 · Odpowiedzi: 1 · Wyświetleń: 2 895

sabat24
Napisane: 5.08.2017, 22:26:35





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

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

Skoro masz foreacha, to czemu w linijce 9 nie zrobisz po prostu $x = $key->x ? Trochę nie rozumiem tej konstrukcji.
Wygląda na to, jakby nie istniał produkt o kluczu 1, dlatego dostajesz błąd po pierwszej inkrementacji zmiennej $i. przy założeniu, że zmienna $i jest zdefiniowana gdzieś wcześniej z wartością 0.
  Forum: Przedszkole · Podgląd postu: #1220082 · Odpowiedzi: 8 · Wyświetleń: 508

sabat24
Napisane: 26.02.2013, 14:01:45





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

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

Z czysto konwencyjnych rzeczy, to z tego co pamiętam, Kohana nie lubi takich konstrukcji:
  1. if (warunek)
  2. instrukcja
  3. else
  4. instrukcja


poza użyciem continue i return zaleca się zawsze stosowanie klamer { } -> http://kohanaframework.org/3.3/guide/kohana/conventions

Jeśli używasz kohany 3.3, to nigdy nie używaj gołego $_POST, tak jak tu:
  1. $_post = Validation::factory($_POST)


W przypadku takiej konstrukcji:
  1. $view = View::factory("admin/news/message")->set("message", null);

Nie używaj set, tylko bind. Jeśli do zmiennej zostanie coś wpisanego później w kodzie 'na dole', to zostanie to 'podłączone' dzięki bind 'na górze'.
  Forum: Oceny · Podgląd postu: #1028561 · Odpowiedzi: 14 · Wyświetleń: 846

sabat24
Napisane: 21.02.2013, 18:53:20





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

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

Jeśli masz problem ze zdjęciem: 20120715_134935.jpg, to oznacza, że jest ono zbyt duże do przesłania. Masz pewnie limit ustawiony na 3mb. Zmień sobie to lub dodaj regułę:
array('Upload::size' ,array(':value', '3M')), która nie przepuści zbyt dużych zdjęć.

Dodaj duże zdjęcie i wylistuj $_FILES. Dostaniesz pewnie błąd nr 1.
  Forum: Przedszkole · Podgląd postu: #1027398 · Odpowiedzi: 7 · Wyświetleń: 277

sabat24
Napisane: 18.02.2013, 18:43:28





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

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

W kohanie 3.2+ nie dałeś pierwszego parametru, którym w tym wypadku powinno być :value, czyli pseudo-zmienna zawierająca wartość pola. Reguła powinna ogólnie wyglądać tak:
  1. ->rule('password', 'regex', array(':value', "Twoje_wyrazenie_regularne"))

Chociaż moim zdaniem lepiej byłoby zastosować własną funkcję albo użyć metody in_array.
  Forum: Przedszkole · Podgląd postu: #1026498 · Odpowiedzi: 5 · Wyświetleń: 516

sabat24
Napisane: 13.02.2013, 21:08:58





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

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

Jeśli to excel 2003 (XP), to musisz kodować znaki pod Windowsa. Ja używam takiej funkcji:
  1. public function convert_locale_for_xls ($text) {
  2. $return = iconv('UTF-8', 'cp1250', $text);
  3. return preg_replace("/([\xC2\xC4])([\x80-\xBF])/e", "chr(ord('\\1')<<6&0xC0|ord('\\2')&0x3F)", $return);
  4. }

Mi nic innego mi nie pomogło.

W przypadku 2007 to ponoć pomaga wstawienie bomu na początku pliku, przed wrzucaniem danych - nie testowałem, bo dla wersji 2003 nie działało.
  1. fputs($file, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));

Excel ma / miał ogólnie problemy ze znakami w UTFie - możesz poszperać jeszcze w necie, bo jest sporo na ten temat. W późniejszych wersjach niby jest lepiej.
  Forum: PHP · Podgląd postu: #1025449 · Odpowiedzi: 3 · Wyświetleń: 1 039

sabat24
Napisane: 12.02.2013, 13:40:46





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

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

W wersji 3.3 ważne są wielkości liter poszczególnych klas. Na localhoście chodzi, bo dla windowsa wielkość liter jest obojętna a na unixach nie. W wersji 3.2 zapis:
url::base(FALSE, TRUE); był poprawny, ale wersja 3.3 wyrzuci Ci błąd, że klasa url nie istnieje, gdyż istnieje URL, czyli zapis -> URL::base(FALSE, TRUE); będzie poprawny.
Obstawiam, że trzeba będzie zmienić db na DB, ponieważ pewnie plik nazywa się classes/DB.php a nie classes/db.php
  Forum: Frameworki · Podgląd postu: #1025068 · Odpowiedzi: 4 · Wyświetleń: 626

sabat24
Napisane: 10.02.2013, 22:14:58





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

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

Odjemnik zamień na 0.99 i będzie dawało to co trzeba.
  Forum: Przedszkole · Podgląd postu: #1024720 · Odpowiedzi: 5 · Wyświetleń: 220

sabat24
Napisane: 10.02.2013, 19:54:01





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

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

A
  1. $b = ceil(($a-1) / 5);

nie załatwi sprawy?
  Forum: Przedszkole · Podgląd postu: #1024672 · Odpowiedzi: 5 · Wyświetleń: 220

2 Stron V   1 2 >

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: 12.11.2019 - 10:30