Tematyka bezpieczeństwa PHP, jest mi słabo znana. Poniżej dwa ciekawe linki, które potraktowałem jako wstęp do tego zagadnienia.
ekstaza, geniusz, przebłysk, olśnienie, półprawdy, półśrodki, przemilczenia, zaćmienia, głupstwa, kłamstewka, oszustwa, hultajstwo, wyrachowanie, nieprawda, nieobiektywność, niepodważalna prawda, nierówność, nieomylność, słuszność, perfekcja, krnąbrność ... niegodziwość
24 stycznia 2016
15 stycznia 2016
Ciekawe wykłady z CppCon 2015
Garść ciekawych wykładów, które szczególnie przypadły mi do gustu z tegorocznego CppCon 2015. Interesowały mnie przede wszystkim narzędzie pozwalające na wykrywanie błędów w kodzie. Została też hucznie zaprezentowała nowa biblioteka/inicjatywa GSL: Guidelines Support Library. Zobaczymy co przyniesie przyszłość.
- CppCon 2015: Neil MacIntosh “Evolving array_view and string_view for safe C++ code"
- CppCon 2015: Jason Turner “The Current State of (free) Static Analysis"
- CppCon 2015: Neil MacIntosh “Static Analysis and C++: More Than Lint"
- CppCon 2015: Kostya Serebryany “Beyond Sanitizers: Fuzzing and Hardening your C++ apps for Security & Reliability”
13 stycznia 2016
[CppCon 2015] C++11/14/17 atomics and memory model: Before the story consumes you
Model pamięci jest największą zmianą jaką przyniósł nowy standard. A mechanizm atomic-ów na razie sprawiają mi najwięcej problemów. Być może znajdę kiedyś motywację, by bliżej się im przyjrzeć. W tej chwili wszystko co zrobiłem w tym kierunku to sucha lektura. Poniżej, bardzo fajny wykład z tegorocznego CppCon 2015 autorstwa Michaela Wonga, który rozjaśnił mi wiele kwestii.
2 stycznia 2016
[python] collections
Trzy klasy z pakietu collections, których nigdy wcześniej nie korzystałem, a okazały się niezwykle przydatne.
Bywa że do krotki chcemy wstawić na tyle dużo danych, że zaczynamy się gubić w tym, na której pozycji znajduje się to co nas interesuje. Zamiast tworzyć klasę z polami, można skorzystać z namedtuple.
Bywa że do krotki chcemy wstawić na tyle dużo danych, że zaczynamy się gubić w tym, na której pozycji znajduje się to co nas interesuje. Zamiast tworzyć klasę z polami, można skorzystać z namedtuple.
from collections import namedtuple User = namedtuple('User', ['name', 'address', 'email']) user = User('Bob', 'blog.example.com', 'bob@example.com') print('Name: ' + user.name) print('Web: ' + user.address) print('Email: ' + user.email)Wynik:
Name: Bob Web: blog.example.com Email: bob@example.comCounter pozwala na zliczanie elementów - zamiast dedykowanej pętli for.
from collections import Counter indexer = Counter(['Bob', 'Alice', 'Bob', 'Bob']) print(indexer['Bob'])Wynik:
3defaultdict jest klasą pozwalają na ustawienie domyślnej wartości, dla nowych elementów. Przydatne, gdy dodajemy coś do wartości i nie chcemy robić testu na to, czy taki element już istnieje.
from collections import defaultdict d = defaultdict(lambda: '-') d['Bob'] += 'one_' d['Alice'] += 'two_' d['Bob'] += 'three_' print(d)Wynik:
defaultdict(<function <lambda> at 0x7fbf33b27578>, {'Bob': '-one_three_', 'Alice': '-two_'})
Subskrybuj:
Posty (Atom)