Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

13 Stron V   1 2 3 > » 

by_ikar
Napisane: 10.08.2018, 07:26:23





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

"Jakiś" sesn ma, tylko jest zbędne. Jeżeli funkcja zwraca promise (a asynchroniczne funkcje zwracają promise, nawet jeżeli w środku nie ma promise https://i.imgur.com/1onQWVl.png), to używanie await w połączeniu z return nie ma sensu.

Przykładowo:

Kod
const pointless = async () => {
    return await new Promise(resolve => resolve('pointless'));
};

const correct = () => new Promise(resolve => resolve('correct'));


console.log(await pointless());
console.log(await correct());


zwróci zarówno pointless jak i correct (https://i.imgur.com/WZt8ZAe.png), tylko w przypadku funkcji pointless masz to dodatkowo złapane w dodatkowe rzeczy, które tylko utrudniają czytanie kodu.
  Forum: JavaScript · Podgląd postu: #1236009 · Odpowiedzi: 1 · Wyświetleń: 1 464

by_ikar
Napisane: 2.07.2018, 12:55:12





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Już wcześniej wydawało mi się że będziesz miał szerszy zakres. Widzisz, problem tutaj polega na tym że próbujesz wyłapać rzeczy które mogą wystąpić w różnej kolejności, dlatego łapie więcej niż powinien.

Nie da się tego jakoś idealnie ugrać jednym uniwersalnym regexem, najlepiej jakbyś zrobił kilka wyrażeń, gdzie każde będzie łapać specyficzne "formaty", bo zapewne te formaty mają jakiś schemat i każdy taki schemat musisz sobie wypisać i użyć LUB żeby użyć wielu takich wyrażeń. Wówczas łatwiej ci będzie wyłuskiwać tylko to co chcesz.

Cytat
Chyba \D łapie białe znaki?


tak, to jest uproszczony odpowiednik [^0-9], możesz zrobić coś takiego: [\w\/-] tylko wówczas może to być zbyt bardzo zachłanne. Tutaj poprawione dla przykładów które podesłałeś: https://regex101.com/r/lnoaih/2

nie mniej, próbuj to ugrać poprzez wyrażenie per format, wówczas łatwiej ci będzie połączyć kilka takich wyrażeń w jedno, lub skrócić wyrażenie, bo będziesz miał "szerszy obraz".
  Forum: PHP · Podgląd postu: #1234994 · Odpowiedzi: 4 · Wyświetleń: 508

by_ikar
Napisane: 24.04.2018, 11:59:57





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Szyfruje serwer, nie ty. Serwer HTTP, czyli apache/nginx, nie ty. Taki serwer musi mieć dostęp do certyfikatu i klucza prywatnego użytego do podpisania certyfikatu. Taki serwer się konfiguruje żeby używał certyfikatu i klucza do szyfrowania ruchu.

Certyfikat nie musi znajdować się tam gdzie znajdują się twoje serwery, bo "przed" serwerem może być loadbalancer/proxy który ten ruch będzie rozkładać pomiędzy serwerami i taki loadbalancer/proxy będzie szyfrować ruch.
  Forum: Serwery WWW · Podgląd postu: #1232410 · Odpowiedzi: 9 · Wyświetleń: 1 153

by_ikar
Napisane: 15.02.2018, 08:36:31





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Kod
FROM php:7.0-apache

RUN apt-get update && \
    apt-get install -y zlib1g-dev libicu-dev g++ && \
    docker-php-ext-install intl && \
    docker-php-ext-enable intl


Ten obraz wymaga pewnych "kroków" instalacyjnych, co jest opisane: https://hub.docker.com/_/php/

Cytat
How to install more PHP extensions
We provide the helper scripts docker-php-ext-configure, docker-php-ext-install, and docker-php-ext-enable to more easily install PHP extensions.


więc całkowicie źle do tego się zabierałeś, jednocześnie masz brak dostępnych "pakietów" dlatego że lista pakietów nie została zaktualizowana, zawsze się na początku aktualizuje listę pakietów via:

Kod
apt-get update


Druga sprawa że nie zainstalowałbyś w taki sposób tego pakietu, dlatego że ten obraz jest minimalny i do instalacji tego pakietu potrzebujesz dodatkowe rzeczy, między innymi g++ żeby pakiet skompilować.
  Forum: Kontrola i zarządzanie projektami · Podgląd postu: #1229179 · Odpowiedzi: 4 · Wyświetleń: 3 479

by_ikar
Napisane: 22.01.2018, 08:53:29





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Trochę źle podchodzisz do tego. Dlaczego ZF1 ma jakiegoś liba do uploadu do np s3, a ZF2+ tego nie ma? Kiedyś szło się w kierunku pakowania wszystkiego i robienia kobyły, od dłuższego czasu się odchodzi od takiego podejścia, bo po co wydawać nową wersję FW, skoro zaktualizował się tylko jeden lib który nie ma żadnego wpływu na FW samego w sobie? Teraz wszelkiej maści rzeczy które nie są kluczowe do działania samego FW, rozbija się na moduły/bundle/pakiety/liby/jakkolwiek inaczej to nazywają. Więc jeżeli szukasz czegoś, to szukasz jako dodatku, przykładowo ZF2: https://github.com/aws/aws-sdk-php-zf2 a tutaj np dla SF: https://github.com/aws/aws-sdk-php-symfony albo tutaj dla laravela: https://github.com/aws/aws-sdk-php-laravel albo może po proprostu zwykły php: https://github.com/aws/aws-sdk-php

Jak widzisz, nie pochodzą te liby/sdk od twórców tych frameworków, to jest kolejna rzecz dlaczego te rzeczy nie są przyspawane do frameworków. Takie serwisy rozwijają swoje liby/sdk w swoim cyklu wydawniczym, a frameworki rozwijają się w swoim cyklu wydawniczym. Nic niczego nie blokuje, nic od niczego nie zależy.

FW nie ma znaczenia podczas uploadu plików. Twórz w tym czym ci wygodniej (odradzam generalnie ZF w jakiejkolwiek wersji - wciąż mam koszmary po ZF1), w czym szybciej stworzysz swój serwis.
  Forum: PHP · Podgląd postu: #1227904 · Odpowiedzi: 3 · Wyświetleń: 471

by_ikar
Napisane: 5.12.2017, 12:42:39





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Cytat(phpamator @ 5.12.2017, 11:32:19 ) *
Dzięki dzięki dzięki
A idąc tą drogą, mam jeszcze jeden "proces" kontener z programem do zarządzania kontenerami "portainer" który lata na porcie 9000.
Nie mam do niego dostępu teraz po domenie (działa po IP).
Co muszę zrobić żeby działało po DNSie ?
Dodać kolejny VirtualServer tylko z proxy na 9000 ?


dokładnie to samo co zrobiłeś z przekierowaniem ruchu na apache bez https'a.

Nie instaluj z palca rzeczy w kontenerze, zawsze twórz obraz z już potrzebnymi tobie rzeczami i później używaj już tego obrazu. Cała idea dockera jest w jego przenośności, jak coś zainstalujesz z palca, to jak będziesz chciał to gdzieś indziej odpalić, to znów będziesz musiał to zainstalować. Stwórz sobie obraz który podczas budowania będzie instalować niezbędne rzeczy, kopiować niezbędną konfigurację, którą zawsze później i tak możesz podmienić poprzez zmontowanie wolumenu.
  Forum: Serwery WWW · Podgląd postu: #1225796 · Odpowiedzi: 30 · Wyświetleń: 3 956

by_ikar
Napisane: 4.12.2017, 19:34:42





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Cytat
Jeszcze tylko nie wiem jak się dobrać do kontenera, wcześniej używałem "portainera" ale po tym zamieszaniu nic już nie działa


dobrać ale do czego? Plików? Od tego są volumeny. W kontenerze możesz mieć apache itp, ale pliki które apache będzie używać "linkujesz" za pomocą volumenów. Na linuksie działa to jakbyś zrobił symlinka, ten kontener to nie jest jakaś maszyna wirtualna, tylko odpalony proces któremu nadane są odpowiednie uprawnienia (cgroups) dzięki czemu programowi się wydaje że działa na osobnym systemie, dzięki czemu możesz takich programów odpalić kilka, w różnych wersjach, bez konfliktów.
  Forum: Serwery WWW · Podgląd postu: #1225766 · Odpowiedzi: 30 · Wyświetleń: 3 956

by_ikar
Napisane: 4.12.2017, 13:28:35





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Nie musisz mieć proxy, wystarczy że do swojego apache dorzucisz certyfikat, i zbindujesz nie tylko port 80 ale i 443. Jak potrzebujesz proxy to polecam: https://github.com/docker/dockercloud-haproxy ale tutaj również będziesz musiał podpiąć certyfikat, lub zbudować obraz z certyfikatem. Podpiąć certyfikat możesz via volumeny.
  Forum: Serwery WWW · Podgląd postu: #1225724 · Odpowiedzi: 30 · Wyświetleń: 3 956

by_ikar
Napisane: 1.09.2017, 14:55:13





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Otwierasz narzędzia developerskie:
-> przechodzisz do zakładki sources
-> znajdujesz interesujący cię plik na liście
-> klikasz w pierwszej linijce po lewej stronie zostawiając brakepoint
-> przechodzisz do zakładki console
-> wpisujesz debugger; i dajesz enter
-> następnie klikasz sobie step forward
-> dochodzisz do fragmentu który cię interesuje i patrzysz co się dzieje
-> profit.

console.log i alert to jest raczej stare/przedszkolne podejście, dość problematyczne, bo musisz wszędzie je zostawiać. Debuggowanie z użyciem debuggera jest podejściem jakie powinno się stosować IMO.

Więcej informacji: https://developers.google.com/web/tools/chr...ipt/breakpoints
  Forum: Przedszkole · Podgląd postu: #1221438 · Odpowiedzi: 21 · Wyświetleń: 1 529

by_ikar
Napisane: 21.07.2017, 11:03:38





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Prawy przycisk myszy -> find usages. Jeżeli to nie zadziała, to po prostu możesz wyszukać w całym projekcie takiego selektora.
  Forum: Przedszkole · Podgląd postu: #1219409 · Odpowiedzi: 3 · Wyświetleń: 422

by_ikar
Napisane: 4.06.2017, 16:30:10





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Cookie przyjmuje też parametr path. Jak nie zostanie podany, to domyślnie ustawiany jest "/". tyle że ten twój webserwer może ustawiać ścieżkę, i tego ci w requeście nie pokaże. Przejdź w developer tools w chrome do zakładki "application/aplikacja" i tam będziesz miał kategorię cookies, w której możesz znaleźć ciastko i sprawdzić wszystkie informacje o tym ciastku.

IMO nie jest to problem javascriptu, bo ani nie odczytujesz tego ciastka z jego poziomu, ani go nie tworzysz z poziomu JS'a. Jeżeli ciastko jest wysyłane przez webserwer, to będzie później wysyłane dla pasującej domeny/ścieżki przy każdym żądaniu, nawet jak będzie ci chciał html wczytać obrazek.
  Forum: Przedszkole · Podgląd postu: #1217035 · Odpowiedzi: 1 · Wyświetleń: 397

by_ikar
Napisane: 2.06.2017, 07:28:24





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Wyglądają jak kopie zapasowe z jakiegoś programu. Lokalnie może ich nie być, bo są dodane w .gitignore, ale origin wciąż może je mieć, bo mogły zostać wrzucone przed dodaniem ich do .gitignore. Nie mniej, jeżeli są to i tak pliki nie wykorzystywane, ale wrzucone przez pomyłkę, to bardzo ładnie pokazuje lenistwo i lekkomyślność osoby wrzucającej, tzn

Kod
git add .


I jest to spory problem z takimi osobami w zespole, które po prostu w dupie mają to co wrzucają, aby tylko wrzucić..

EDIT: no i lokalnie mogą być ukryte, dlatego ich "nie widzisz". Ale takie rzeczy to raczej tylko na windowsie.
  Forum: Przedszkole · Podgląd postu: #1216912 · Odpowiedzi: 8 · Wyświetleń: 907

by_ikar
Napisane: 12.03.2017, 13:26:47





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

AD1 nie twórz swoich formatów, serializuj dane i je deserializuj. Im mniej odwołań do dysku tym lepiej.
AD2 100k wierszy w pliku? Słabo.
AD3 plik ma tylko jedno odwołanie, relacje są ogólnie "ciężkie". Mówiąc cache, zazwyczaj myśli się o pamięci ram, np redis/memcache. Działają one szybciej niż relacyjne bazy bo: mają płaską strukturę, oraz wszystko trzymają w pamięci ram, do której dostęp jest kilka rzędów szybszy niż do dysku twardego.

Jeżeli zapytanie jest wolne, to albo masz brak indeksów, albo sama struktura bazy jest kiepska. Odczytując dane z pamięci ram będzie szybsze, ale nie w każdym przypadku. Po prostu redis/memcache poradzą sobie w tym przypadku zdecydowanie lepiej niż relacyjna baza danych, bo podchodzą do tematu zupełnie inaczej. Co nie znaczy że powinieneś się w całości przesiąść na redisa/memcache.
  Forum: Przedszkole · Podgląd postu: #1212295 · Odpowiedzi: 6 · Wyświetleń: 696

by_ikar
Napisane: 29.01.2017, 13:11:45





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Kiedy używasz var/let/const to tworzysz nową zmienną w danym scope (let/const nawet w bloku). Kiedy deklarujesz zmienną i nie używasz do tego var/let/const wtedy twoja zmienna tworzy się w global scope, to znaczy przypisuje się do window.

Więc mógłbyś zrobić tak:

  1. function foo() {
  2. var num = 42;
  3. bar = function() { num++; }
  4. gLogNumber = function() { console.log(num); }
  5. setN = function(x) { num = x; }
  6. }
  7.  
  8. foo();
  9. window.bar();
  10. window.gLogNumber();// 43


Co zrobić żeby do takiej sytuacji nie dopuścić? Używać strict mode:

  1. 'use strict';
  2.  
  3. function foo() {
  4. var num = 42;
  5. bar = function() { num++; }
  6. gLogNumber = function() { console.log(num); }
  7. setN = function(x) { num = x; }
  8. }
  9.  
  10. foo()
  11.  
  12. Uncaught ReferenceError: bar is not defined
  13. at foo (<anonymous>:4:7)
  14. at <anonymous>:1:1


Tutaj więcej informacji o strict mode: https://developer.mozilla.org/en-US/docs/We...nce/Strict_mode
  Forum: Przedszkole · Podgląd postu: #1209636 · Odpowiedzi: 4 · Wyświetleń: 363

by_ikar
Napisane: 27.01.2017, 08:28:13





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Bo użyłeś samo-wykonującej się funkcji która stworzyła scope i ustawiła w tym scopie zmienną która później jest inkrementowana: http://imgur.com/7jNfTQ5

EDIT: stworzyłeś swego rodzaju prywatną zmienną, ale z racji że funkcja się wykonała sama, została zainicjalizowana tylko raz dzięki czemu scope wciąż istnieje i posiada wcześniej przypisane wartości.
  Forum: Przedszkole · Podgląd postu: #1209382 · Odpowiedzi: 5 · Wyświetleń: 444

by_ikar
Napisane: 24.11.2016, 20:37:55





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

https://regexone.com/lesson/optional_characters przykład użycia: https://regex101.com/r/kOZott/1
  Forum: Przedszkole · Podgląd postu: #1205104 · Odpowiedzi: 4 · Wyświetleń: 304

by_ikar
Napisane: 9.11.2016, 22:56:34





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Cytat(zegarek84 @ 9.11.2016, 13:23:15 ) *
polecam mniej popularne systemy jak np. linux


No tak, bo ilość serwerów linuxa to raptem kilka sztuk, a same serwery używane są co najwyżej do odpalenia apache. Jakieś giełdy, czy banki? Nie, kto by używał mniej popularnego systemu do tego?

Popularność nie ma nic do bezpieczeństwa. Głębokie ukrycie to żadne bezpieczeństwo. Po prostu linux ma podstawy do tego żeby być bezpiecznym. A windows? Tam dalej łatają MGI odpowiedzialny za rendrowanie czcionek na poziomie kernela, dzięki czemu osadzanie spreparowanych czcionek i otworzenie takiej strony przez przeglądarkę odpala zdalny kod. Po prostu w linuxie wygląda to zupełnie inaczej. Prócz ludzi którzy za pieniądze łatają linuxa, są jeszcze zapaleńcy którzy łatają, bo mogą. Czego o zamknięto-źródłowych systemach powiedzieć nie można, bo luki są na pewno, kwestia tego że mogą nigdy nie zostać naprawione dla naprawienia "bo mogę" jak to ma miejsce w linuxie. Dlatego też łatki bezpieczeństwa dla kernela linuxowego to kwestia dni, a czasami godzin, zupełnie inaczej jak to ma miejsce w windowsie.
  Forum: Hydepark · Podgląd postu: #1203908 · Odpowiedzi: 12 · Wyświetleń: 1 949

by_ikar
Napisane: 9.11.2016, 12:09:52





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Antywirusy działają głównie na zasadzie porównywania sumy kontrolnej plików. Jeżeli dany wirus jest nowy, nie zidentyfikowany przez żadne antywirusy, to najpewniej żaden antywirus ci go nie wykryje. Więc chronisz się jak już tylko przed znanymi zagrożeniami.

Cytat
przy okazji czy samo wejscie na niepewna strone - ale nie pobieranie oraz nie potwierdzanie wyskakujacych okien - wystarczy aby strona nie zainfekowala nam systemu, czy moze juz samo wejscie na takowa strone moze w jakis posob nas zawirusowac?


Tak, da się. Przeglądarki po prostu mają luki, które są wykorzystywane albo do zdalnego uruchomienia kodu, albo pobrania plików które następnie są wykonywane. Ważne jest aby pracować na nie administracyjnym koncie. Używać ublocka czy podobnych blockerów reklam, dzięki czemu reklama z przemyconym kodem (a takie się zdarzają) zwyczajnie się nie pobierze/wykona. Lub posunąć się jeszcze dalej i używać dodatku typu "noscript" i włączać javascript tylko na zaufanych stronach. Wyłączyć flasha, włączać go tylko na zaufanych stronach. Całkowicie zrezygnować z stron które uruchamiają applety javy.

Nie mniej, na windowsie nie używam antywirusa od bodaj 6 lat. System resintalowałem 2 lata temu, bo wymieniałem dysk.
  Forum: Hydepark · Podgląd postu: #1203850 · Odpowiedzi: 12 · Wyświetleń: 1 949

by_ikar
Napisane: 21.10.2016, 11:06:05





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Hm, więc dodaj process.exit w

Kod
process.on("SIGTERM", () => {
    logger.debug(`Caught SIGTERM. Shutting-down in up to ${waitForJobSeconds} seconds....`);

    stop = true;

    process.exit();
});


Dlatego że:

Cytat
SIGTERM and SIGINT have default handlers on non-Windows platforms that resets the terminal mode before exiting with code 128 + signal number. If one of these signals has a listener installed, its default behavior will be removed (Node.js will no longer exit).


Po prostu nadpisujesz domyślne zachowanie, więc albo zrobisz exit ręcznie, albo użyjesz bardziej ogólnego zdarzenia jakim jest beforeExit:

Kod
process.on("beforeExit", () => {
    logger.debug(`Caught SIGTERM. Shutting-down in up to ${waitForJobSeconds} seconds....`);

    stop = true;
});
  Forum: Hydepark · Podgląd postu: #1202652 · Odpowiedzi: 4 · Wyświetleń: 948

by_ikar
Napisane: 19.10.2016, 18:14:35





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Dlatego: https://github.com/babel/babel/blob/master/...bel-node.js#L83

po prostu babel spawnuje kolejny proces w którym odpala twoje pliki już "przekompilowane" do ES5. Wyjście? Przerobić importy na require i użyć normalnie node w wersji 4+, lub od razu przekompilować do ES5 i odpalać w takiej postaci normalnie noda.
  Forum: Hydepark · Podgląd postu: #1202541 · Odpowiedzi: 4 · Wyświetleń: 948

by_ikar
Napisane: 12.09.2016, 10:52:27





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

https://www.jetbrains.com/help/phpstorm/201...injections.html od czasu do czasu z tego korzystam, kiedy zachodzi np potrzeba użycia css jako stringa:

przed - http://i.imgur.com/ZOI244V.png
wybieranie - http://i.imgur.com/0RETzfc.png http://i.imgur.com/r0mrgFA.png
po - http://i.imgur.com/kMt3XPV.png
  Forum: Hydepark · Podgląd postu: #1199852 · Odpowiedzi: 2 · Wyświetleń: 421

by_ikar
Napisane: 27.08.2016, 15:12:38





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Kod
function checkCity(element) {
    alert(element.parentElement.parentElement.lastElementChild.innerHTML);
}
  Forum: Przedszkole · Podgląd postu: #1198849 · Odpowiedzi: 7 · Wyświetleń: 412

by_ikar
Napisane: 30.07.2016, 09:26:47





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Zamiast zapisywać "rzecz" w cache za każdym razem kiedy wywołasz save, gdzieś jest lista nie zapisanych jeszcze "rzeczy" i dopiero przy większej (nie określono jak wielkiej) liczbie "rzeczy" które się nie zapisały, lub przy wywołaniu destruct, zapisuje je jednocześnie wszystko co nie zostało zapisane (znaczy jednym requestem/wywołaniem etc). Takie lazy-bulk cache, gdzie nie zapisuje "rzeczy" jednej po drugim, tylko w większych partiach, lub jeżeli nie ma ich więcej, to tyle ile jest kiedy obiekt jest kasowany.

W ten sposób zmniejszasz ilość połączeń do cache które są tworzone, zamiast dla każdej "rzeczy", jest jedno dla wszystkich jednocześnie, z tym że to wciąż dzieje się w obrębie jednego żądania (requesta).

Przykład (tylko nie sugeruj się nim w 100% dlatego że w PHP nie robię kompletnie nic już od kilku lat):

Kod
<?php

class Cache {
    private $connection;
    private $bulk = [];
    
    public function add($key, $item) {
        $this->bulk[$key] = $item;

        if(count($this->bulk) > 1)
        {
            $this->save();
        }
    }

    public function save() {
        $this->connection->mSet($this->bulk);
    }

    public function __destruct() {
        $this->save();
    }
}

$cache = new Cache();
$cache->add('key', 'item');
$cache->add('key2', 'item2');
  Forum: Object-oriented programming · Podgląd postu: #1197123 · Odpowiedzi: 2 · Wyświetleń: 2 815

by_ikar
Napisane: 25.07.2016, 07:43:08





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Admin do commitów, coś nowego.. Jeżeli terminal jest tak makabrycznie odstraszający swoją prostotą, to z drugiej strony dla klikaczy jest tak dużo narzędzi do gita, że aż mnie dziwi, że ktoś puszcza commity twojego kodu za ciebie. Git sam ci plików nie kasuje, więc zapewne albo ten cały admin (nie wiem dlaczego ale ciężko mi się go nazywa adminem biggrin.gif) albo wrzucił do stasha (schowka) te pliki, albo skasował je ręcznie (rm lub checkout). Więc sprawdź najpierw czy nie masz tych plików w stashu używając tej komendy w katalogu projektu:

Kod
git stash list


Jeżeli skasował te pliki, to cóż, zasługuje na order super duper administatora. W sumie ty również zasługujesz na order, że nie poświęciłeś temu gitowi kilkanaście minut i się samemu nie dowiedziałeś z czym to się je.

Dla takich windowsowych klikaczy (gdybyś na linuxie lub maku pracował musiałbyś się oswoić z terminalem tak czy inaczej, więc zakładam że jesteś użytkownikiem windowsa) takie proste menu kontekstowe: https://tortoisegit.org/
  Forum: Kontrola i zarządzanie projektami · Podgląd postu: #1196700 · Odpowiedzi: 17 · Wyświetleń: 3 245

by_ikar
Napisane: 23.04.2016, 14:24:04





Grupa: Zarejestrowani
Postów: 1 798
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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

Cytat
Node.js akurat jest stanowy, więc wydaje mi się, że pisałeś to na szybko i coś Ci się pomieszało.

Taa akurat wychodziłem i pisałem to na szybko, nie przeczytałem tego nawet drugi raz..

Problem z testowaniem tego jest taki, że nigdy nie będziesz od jednego połączenia wysyłać 10k pustych emitów, jak i to że socket.io domyślnie startuje z xhr-pollingu, i już na tym połączeniu zdarzenie `connect` jest wyzwalane. Jeżeli próbujesz wszystko wysłać w jedną sekundę, to wszystko zwyczajnie pójdzie jednym xhr'owym requestem. Musiałbyś w ustawieniach podać tylko `websocket` jako protokół:

Kod
var socket = io('http://localhost', { transports: ['websocket'] });
  Forum: Po stronie przeglądarki · Podgląd postu: #1190353 · Odpowiedzi: 14 · Wyświetleń: 1 598

13 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: 28.03.2024 - 10:45