Przekierowanie z WWW na bez WWW + SSL

Często zachodzi potrzeba ustalenia dla naszej aplikacji jednego, głównego adresu pod którym będzie ona dostępna. Ważne jest to nie tylko z uwagi na „wygodę” użytkowników, ma to także wpłwy na SEO naszej strony. Tak więc, posiadamy domenę wraz z certyfikatem SSL. Chcemy aby nasza aplikacja była dostępna jedynie pod adresem https://domena.com

Pomocne okazać się może dość proste przekierowanie utworzone w pliku .htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Powyższe wpisy przekierują wszystkie odwołania do naszej aplikacji z subdomeny www na domenę główną po protokole https oraz przekierują wszystkie żądania http na https.

 

Migracja usługi Owncloud

Zgodne z zapowiedziami, jutro migruję usługę Owncloud do NextCloud. Wszystkie dane zostaną automatycznie przeniesione 🙂

EDIT:
Aplikacja z sukcesem migrowana na usługę NextCloud

 

Git commit

Dobrze opisany commit to podstawa…

 

HttpCodes – kody odpowiedzi HTTP

Przygotowaliśmy spis kodów odpowiedzi HTTP w formie przyjaznej aplikacji: HttpCodes.ml.

 

Zdjęcia miasteczka Głusk

Po dwóch latach od utworzenia małej galeryjki ze zdjęciami Głuska (https://aljandor.ovh/blog/zdjecia-glusk/) aplikacja doczekała się własnej domeny: https://glusk.ml aktualnie galeria pracuje jeszcze na PHPie, ale w najbliższym czasie będzie ona przepisana na Pythona 😉 

Zapraszam!

PS. niebawem wpis na temat free domen z końcówkami .ml, .ga itd 🙂 

 

Zasada działania HTTPS

 

PHP7 ma potencjał !

Niedawno mieliśmy okazję migrować aplikację pracującą pod PHP w wersji 5.6 na PHP 7. Jest to aplikacja średnia (dostaje max 10 req na sekundę) i UU na poziomie 10k / mc.
Z uwagi na to iż warstwa prezentacji obsługiwana była w starszej wersji Smarty, które nie pracuje pod PHP7 na początek potrzeba było przepisać wrapper Smarty dla tej aplikacji. Na szczęście obyło się bez większych problemów (Smarty 3.1.21 niewiele różni się od wersji 3.1.31 co można sprawdzić https://github.com/smarty-php/smarty/blob/master/NEW_FEATURES.txt). Przy okazji refaktoringu wrappera został on lekko zoptymalizowany.
Po pomyślnych testach nastała pora na wdrożenie zmian dla środowiska produkcyjnego.
Cały etap obył się bez większych problemów, a efekt wdrożonych zmian był widoczny od razu na wykresach.

Widać dużą różnicę pomiędzy czasem generowania strony. Pragniemy podkreślić iż samej w aplikacji nie zostało zmienione nic prócz wrappera dla Smarty. Dalsze prace optymalizacyjne pozwolą na kolejne redukcje czasu generowania strony.

 

TimeStamp w PostgreSQL

Każdy kto pracuje z PostgreSQL używał wbudowanej funkcji NOW() – zwraca ona 'aktualny’ TimeStamp. Jednak czas jaki zwraca funkcja może w niektórych przypadkach nieco zmylić.

poniżej prosty select:

aljandor=# select now();
              now
-------------------------------
 2017-02-28 19:34:50.054909+00
(1 row)

aljandor=# select now();
              now
-------------------------------
 2017-02-28 19:35:23.217189+00
(1 row)

zobaczmy co się stanie jeśli zawrzemy dwa powyższe selecty w transakcji:

aljandor=# BEGIN;
BEGIN

aljandor=# select now();
              now
-------------------------------
 2017-02-28 19:40:28.228707+00
(1 row)

aljandor=# select now();
              now
-------------------------------
 2017-02-28 19:40:28.228707+00
(1 row)

aljandor=# COMMIT;
COMMIT

 

Zdziwiony? Dzieje się tak, iż funkcja now() zwraca time-samp czasu rozpoczęcia transakcji. Tak więc jeśli potrzebny nam dokładny znacznik czasu, użyjmy funkcji clock_timestamp():

aljandor=# BEGIN;
BEGIN

aljandor=# select clock_timestamp();
       clock_timestamp
-----------------------------
 2017-02-28 19:45:38.977532+00
(1 row)

aljandor=# select clock_timestamp();
        clock_timestamp
-------------------------------
 2017-02-28 19:45:43.540535+00
(1 row)

aljandor=# COMMIT;
COMMIT

jak widać, funkcja zwraca zawsze aktualny time-stamp. Nieświadome używanie funkcji now() może powodować bardzo groźne sytuacje w przypadkach dla których ważne jest utrzymanie rzeczywistego znacznika czasu.

 

 

Nowa domena aljandor.ovh

Od dziś blog oraz wszystkie podstrony posiadające adres aljandor.unixstrom.org zostały przeniesione na adres aljandor.ovh 🙂 Cały ruch jest obsługiwany poprzez protokół https.

 

Globalna zmiana czasu w phpbb3

Gry potrzebujemy zmienić czas z zimowego na letni (lub odwrotnie) zmiana strefy czasowej w panelu administracyjnym nie jest wystarczająca. Użytkownicy którzy są już zarejestrowani muszą ręcznie samemu zmienić swoją strefę czasową w profilu użytkownika. Możemy im to ułatwić zmieniając globalnie wszystkim użytkownikom strefę czasową wykonując odpowiednio poniższe zapytania SQL:

Zmiana ustawień strefy czasowej w panelu administracji nie wystarczy. Różnice zauważą wtedy tylko goście. Zarejestrowani użytkownicy muszą samemu zmienić ustawienia swojego profilu (Moje konto => Ustawienia witryny). Mając dostęp do phpMyAdmina, możemy dokonać masowej zmiany czasu dla użytkowników, przez odpowiednie zapytanie SQL.

Zmiana czasu na zimowy:

UPDATE forum_users SET user_dst = 0 WHERE user_timezone = 1.00;

zmiana czasu na letni:

UPDATE forum_users SET user_dst = 1 WHERE user_timezone = 1.00;

Dodatkowo opakowałem oba SQL’e w procedury -> dzięki temu nie trzeba ich wklepywać od zera tylko wykonujemy procedurę.