PHP i podobieństwo dwóch wyrazów

pomylkaTrafiłem ostatnio na ciekawą sytuację. Blisko dziewięć lat temu napisałem system dla zarządzania awizacjami kierowców w magazynach dla największego w Polsce producenta wody. System do dziś supportuję i rozwijam. W międzyczasie przygotowałem integrację danych z SAPem do wymiany informacji za pomocą komunikatów EDI, które wysyłane i odbierane są za pomocą protokołu AS2. Jest to na szczęście już mój ostatni system napisany w PHP, który obsługuję (bo znacznie bardziej lubię Javę).

Ale to właśnie na tym polu zdarzyła mi się ciekawa sytuacja. Korporacja zleciła wprowadzenie zmiany w importach danych tak, aby system sam przydzielał przewoźników do zdefiniowanych tras, z odpowiednimi współczynnikami procentowymi w stosunku do wszystkich listów przewozowych na tych trasach.

Przez trasę rozumie się np. miejsce załadunku: Bielsko-Biała, miejsce dostawy: Warszawa. Dla niej system powinien przydzielać przewoźników dla nowych listów przewozowych według rozkładu procentowego: PPRZEWOŹNIK 1: 50%, PRZEWOŹNIK 2: 50%.

Cały problem polega na tym, że w danych importowych nie otrzymam bezpośrednio identyfikatora tej trasy, a system sam ma ją rozpoznać na podstawie… nazw miejscowości 🙂 To nie byłoby jeszcze jakimś większym problemem, gdyby nie fakt, że w importowanych danych z SAP jest mnóstwo pomyłek. Zobaczcie, co znalazłem dla miasta Bielsko-Biała:

  • Bielsko-Biała
  • Bielsko-Biala
  • Bielsko Biała
  • Bielsko Biala
  • Biesko Biała
  • Biesko-Biała
  • Bisko-Biała
  • BIELSKO BIAŁA
  • BIELSKO-BIAŁA
  • BIELSKO BIAŁ

Koszmar 🙂

Czytaj dalej

PHP 7 został wydany

PHP 73 grudnia 2015 została wydana oficjalna wersja PHP 7.0.0., w której wydajność w stosunku do PHP 5.6 została zwiększona nawet dwukrotnie. To, na co prawie każdy programista PHP czekał, to możliwość wskazywania typów argumentów metod oraz typów zwracanych przez funkcje i metody.

Czytaj dalej

DayZ – jak pobrać GUID? Generowanie BattlEye GUID.

dayz_armaJak pobrać GUID? Na wielu serwerach pracujących pod kontrolą BattlEye w takich grach jak np. cała seria Arma, czy DayZ Standalone stosuje się tzw. white-listy. Czyli aby dołączyć do serwera należy przesłać administracji swój identyfikator GUID. Praktycznie na każdym z serwerów administracja udziela instrukcji na temat możliwości pobrania takich danych poprzez uruchamianie gry, wpisywanie odpowiedniej komendy (#beclient guid). Cały problem polega na tym, że ten ciąg 32 znaków należy sobie przepisać, przez co administratorzy włosy z głowy sobie wyrywają przez popełniane literówki graczy.

Z pomocą przychodzi narzędzie, który eliminuje tego typu błędy.

Czytaj dalej

Jak zabezpieczyć się przed iteracją przeglądania stron po ID?

securityNierzadko w naszych systemach, czy zwykłych stronach internetowych stosujemy wyświetlanie zawartości na podstawie identyfikatora w postaci liczby naturalnej. Numerowi temu odpowiada id rekordu w bazie danych, kontroler na jego podstawie pobiera odpowiedni obiekt a widok wyświetla zawartość. Czasem jednak chcielibyśmy zabezpieczyć możliwość szybkiego spreparowania odnośnika żeby utrudnić zadanie botowi iterującemu po kolejnych numerach i pobierającego zawartości podstron.
Pamiętam okres popularności serwisu nasza-klasa.pl. W tym czasie przygotowałem właśnie takiego bota, dzięki któremu mogłem zgromadzić sporą ilość danych właśnie dzięki opisywanej podatności.

Czytaj dalej