Kawałek Kodu

Co tu się odskryptala?! Czyli programistyczne porady na luzie

Ważą się czyjeś losy, czyli jak losować rekordy z wagą.

Jeśli trafiłeś na ten artykuł, to być może miałeś łut szczęścia. Nie musisz mieć jednak szczęścia, aby losować rekordy. W MySQL zazwyczaj używałeś do tego funkcji RAND. Co prawda ta funkcja samodzielnie nie losuje rekordu, ale w połączeniu z klauzulą LIMIT 1, daje to, czego od niej oczekujemy. Tyle, że nie zawsze, bo czasem człowiek chce czegoś więcej. I być może chciałeś losować rekordy z jakąś wagą, czyli niektóre wartości miały pojawiać się w wyniku częściej, a niektóre rzadziej.

Na razie nie przykładajmy uwagi do wagi.

Czytaj dalej

Plaga mrówek, czyli jak zmultiplikować rekordy zapytania.

Zazwyczaj tworząc zapytania w SQL unikamy jak ognia (albo jak mrówek) sytuacji, aby rekordy się duplikowały, triplikowały czy też...no właśnie, może ktoś z Was wie jak się nazywa czterokrotne lub pięciokrotne zwielokrotnianie rekordów?

Jednak dziś zajmiemy się sytuacją odwrotną. Chcemy z jakiegoś powodu, aby dany rekord pojawił się dwukrotnie, inny dziesięciokrotnie, a jeszcze inny pozostał pojedynczy.

Zacznijmy od końca:

Czytaj dalej

Doctor, doctor, doctor... Czyli jak uzupełnić tablicę do zadanej długości.

Czasem zdarza się, że potrzebujesz dopełnić tablicę lub string do długości innej, większej niż aktualna długość elementu. Np. z jakiegoś powodu chcesz aby tablica miała zawsze 100 elementów.

W przypadku tablicy w PHP używamy funkcji array_pad:

$array = [1, 44, 13, 23];
$array = array_pad($array, 10, 15);

Wynikiem działania tej funkcji będzie tablica dziesięcioelementowa, dopełniona "od prawej strony" sześcioma elementami o wartości 15.
Argument drugi może przyjąć wartość ujemną. Wtedy dopełnienie następuje na początku tablicy.

Czytaj dalej

Czy to ty czy to ja? Czyli duplicate content.

Zjawisko "duplicate content" zachodzi wtedy, kiedy treść Twojego serwisu w całości lub jego części, jest osiągalna pod tymi samymi adresami URL jednocześnie. Dla wyszukiwarek domena mojadomena.pl oraz www.mojadomena.pl to dwa niezależne adresy. Jeśli serwis oferuje tą samą treść pod adresem "z www" jak i "bez www" (lub odwrotnie), lub też zawartość pod adresem /podstrona/ jest identyczna jak pod adresem /podstrona/?sort=asc, to mamy do czynienia własnie z tym okropnym zjawiskiem. Jako przykład tej drugiej sytuacji może posłużyć podstrona z prezentacją produktów, na której mamy możliwość sortowania listy według zadanych parametrów. Parametry przesyłamy w postaci query string (jako zmienne GET). Pomimo, że wizualnie lista się zmienia, to produkty wciąż widnieją te same, a skoro zawartość jest taka sama, to robot indeksujący odbiera to właśnie jako tytułowe zjawisko. Różnica w URL może zachodzić nie tylko na poziomie query string, ale już w path (to ten fragment zaczynający się po nazwie domeny).

Jest to efekt niepożądany ze względu na obniżenie wartości strony w indeksie Google. Metody, które przestawiam tyczą się tylko adresów URL. Nie mają natomiast zastosowania w przypadku kiedy Twój brat lub siostra bliźniak podkrada Ci gumy do żucia - tu lepiej zastosować przekierowanie problemu na rozmowę w cztery oczy (życzę Ci w tej sytuacji osiągnięcia statusu 301).

Czytaj dalej

Scopana metoda, czyli dlaczego selektor > oraz + nie zawsze działa.

Kupujesz wysyłkowo lampkę odstraszającą owady, okazuje się, że żarówka jest spalona. Zamawiasz buty przez internet, za ciasne. Wreszcie rozpakowujesz paczkę, w której czeka wymarzy robot kuchenny, który będzie pasował pod kolor kuchni, dostajesz zupełnie inny kolor. Ręce opadają. Te opadają też czasem przy walce z przeciwnościami podczas programowania. Dziś pokażę Ci jedną z takich kłód rzucanych pod nogi, ale zastrzegam: nie jest to złośliwość twórców przeglądarek, ani też ich przeoczenie.

Zacznijmy od przykładu nawiązującego do tytułu.

<body>

<ul id="element1">
 <li></li>
 <li></li>
 <li></li>
</ul>

</body>

Spróbujmy teraz pobrać z powyższej struktury bezpośrednie dzieci #element1, które są tagami LI.

var li = document.getElementById("element1").querySelectorAll(">li");

I co otrzymałeś próbując wyświetlić wyniki z pomocą console.log?
Dlaczego tak się stało, o tym dalej.

Czytaj dalej

Kochanie, trzeba brać szalik? Czyli segregowanie rekordów w przedziałach.

Mamy tabelę z danymi, a jedna z cech danej (kolumna tabeli) jest wartością liczbową, którą chcemy przyporządkować do wybranego z ustalonych, nazwanych zakresów. W naszym przykładzie będzie to tabela temperatur.

temperatura
-23,5
-34,1
-36,6
-31,0
-26,8
17,0
-22,1
-5,7
-35,9
-34,5
34,0
39,1
5,0
6,4
-40,0

Przy małej ilości zakresów można to oczywiście osiągnąć poprzez konstrukcję CASE WHEN, np.:

Czytaj dalej