Margines pod obrazkiem w HTML5

Dodany: Październik 21st, 2014 | Kategoria: HTML

Jeśli wstawimy obrazek w element blokowy w HTML5 i nadamy obrazkowi zdefiniowany rozmiar, element nadrzędny będzie o 3px wyższy i będzie posiadał dziwny margines na dole. Okazuje się, że HTML5 traktuje obrazek jak tekst i zostawia na dole zapas dla liter z ogonkiem na dole jak „y” czy „g”. Wystarczy dodać właściwość „vertical-align: middle” i wszystko będzie OK :)

vs.

Tagi: , Brak komentarzy »

Cross-domain font

Dodany: Lipiec 17th, 2014 | Kategoria: Apache, PHP

Jak wyświetlić czcionkę gdy CSS i owy plik pobierane są z innej domeny (np. emulujemy sobie lokalnie chmurę bo takie środowisko czeka nas na serwerach klienta i jest inna zmyślona domena, mimo, że wciąż 127.0.0.1).

1
2
3
4
5
<FilesMatch "\.(ttf|otf|eot|woff)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>
Tagi: , , , , , , , Brak komentarzy »

Odrzucanie ciastek top-domain na subdomenie

Dodany: Maj 12th, 2014 | Kategoria: Apache, PHP

Załóżmy, że mamy stronę: mojadomena.pl i vip.mojadomena.pl – ale na obu jest logowanie. Ciastka z mojadomena.pl będą wtedy przesłaniać te z vip.mojadomena.pl. W PHP można jednak problem obejść:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// fix subdomain cookies
// based on from http://stackoverflow.com/a/9678857/1823945
// little changes by gnysek.pl
function skip_top_level_cookies()
{
    if (!empty($_SERVER['HTTP_COOKIE'])) {
        $domains_counter = array();
        foreach (explode(';', $_SERVER['HTTP_COOKIE']) as $cookie_variable_string) {
            $key_value = explode('=', $cookie_variable_string);
            $cookie_var_name = trim($key_value[0]);
            if (!array_key_exists($cookie_var_name, $domains_counter)) {
                $domains_counter[$cookie_var_name] = 1;
            }
            $http_cookie_variables[$cookie_var_name][$domains_counter[$cookie_var_name]] = (!empty($key_value[1])) ? urldecode(trim($key_value[1])) : '';
            $domains_counter[$cookie_var_name]++;
        }

        $levelDomain = substr_count($_SERVER['HTTP_HOST'], '.');

        $newCookies = array();
        foreach ($http_cookie_variables as $cookieName => $cookie) {
            if (array_key_exists($levelDomain, $cookie)) {
                $newCookies[$cookieName] = $cookie[$levelDomain];
            } else {
                $newCookies[$cookieName] = $cookie[1];
            }
        }
        $_COOKIE = $newCookies;
    }
    return true;
}

if (substr_count($_SERVER['HTTP_HOST'], '.') > 1) {
    skip_top_level_cookies();
}
Tagi: , , , , Brak komentarzy »

Nowe funkcje GM:Studio 1.2

Dodany: Październik 9th, 2013 | Kategoria: Game Maker

Lista nowych funkcji w GM:Studio które pojawiły się między wersjami 1.1.8671.2.1149.

Przeczytaj dalszą część wpisu »

Brak komentarzy »

iPad oraz :hover dla li, ul, div itp.

Dodany: Kwiecień 30th, 2013 | Kategoria: JavaScript

W iPadzie ze względu na brak myszki jest problem ze stanem hover. Apple obeszło nieco problem i naciśnięcie na element a, który posiada styl a:hover powoduje użycie tej klasy, jednak problemem robi się, gdy jest to inny element. W moim przypadku była to lista.
Na podstawie informacji wygrzebanych w sieci, znalazłem dwa rozwiązania:

1) dodać

1
onclick="return true;"

na elemencie który ma mieć hover
2) jeśli są jakieś sub-elementy to dodać na nich

1
display: block

aby się pokazywały

Tagi: , , , , , , , , Brak komentarzy »

MySql – szybki import CSV do bazy

Dodany: Kwiecień 8th, 2013 | Kategoria: PHP

Potrzebowałem zaimportować plik CSV do bazy danych. Niby proste zadanie, odpaliłem PhpMyAdmina, mieliło mi plik kilka minut, po czym wysypało się na timeoucie po 5 minutach i wstawieniu 3 tys. rekordów – na 12639 dostępnych. To stanowczo za długo. Poszperałem więc po sieci, jak zwykle pomocny okazał się stackoverflow i dzięki temu dostałem takie oto zapytanie, do odpalenia w mysql z terminala (lub cmd):

LOAD DATA LOCAL INFILE "plik.csv"
INTO TABLE twoja_tabela
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\r\n';

Załadowało się w ułamku sekundy.

Terminal to jednak terminal :)

1 Komentarz »

Jak skonfigurować PowerShell, aby korzystać z PoshGit który jest dodawany do pakietu Github for Windows

Dodany: Luty 4th, 2013 | Kategoria: Inne

Jeśli korzystacie z pakietu „Github for Windows”, na pewno mieliście okazję skorzystać z konsolowego gita który odpala się w PowerShell. Ponieważ bez sensu jest doinstalowyawć sobie msygit podczas gdy ten pakiet go już dostarcza, warto sobie skonfigurować powershella tak, żeby git działał nie tylko spod Githubowej aplikacji.

W katalogu <C>:\Users\<user>\Documents\WindowsPowerShell (możliwe, że trzeba go stworzyć), tworzymy nowy skrypt: Microsoft.PowerShell_profile.ps1 i wklejamy:

1
2
3
. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1")

. $env:github_posh_git\profile.example.ps1

I to tyle :) Odpalamy PowerShell i git już działa.

 

P.S. Gdyby PowerShell wywalał błąd, że nie można odpalać skryptów, uruchamiamy w nim jednorazowo polecenie:

1
Set-ExecutionPolicy RemoteSigned

Warto odpalić program jako admin, inaczej klucz w rejestrze może się nie zaktualizować.

Tagi: , , Brak komentarzy »

phpMyAdmin – Zablokowane przez politykę bezpieczeństwa treści

Dodany: Styczeń 21st, 2013 | Kategoria: PHP

Miałem jakiś czas temu problem z phpMyAdminem pod chrome, po zaistalowaniu WAMPPa, wyświetlał się komunikat:

Zablokowane przez politykę bezpieczeństwa treści
Ta strona posiada politykę bezpieczeństwa treści, która nie pozwala na osadzenie jej w taki sposób.

Rozwiązaniem jest edycja

\libraries\header_http.inc.php

i usunięcie/zakomentowanie linijki zawierającej ustawianie nagłówka:

"X-Content-Security-Policy"
Tagi: , , , , , , , , Brak komentarzy »

Najpopularniejsze domeny użytkowników w bazie danych SQL

Dodany: Styczeń 18th, 2013 | Kategoria: Inne

Potrzebowałem zapytania SQL, które pogrupuje mi domeny adresów e-mail w bazie danych w celu znalezienia i usunięcia botów które się zalęgły zanim zacząłem stosować captchę. Na stackoverflow znalazłem:

SELECT
SUBSTR(user_email FROM LOCATE('@', user_email) + 1),
COUNT(*)
FROM
users
GROUP BY
SUBSTR(user_email FROM LOCATE('@', user_email) + 1)
ORDER BY
COUNT(*) DESC
Tagi: , , , , , , , , Brak komentarzy »

jQuery .on() zamiast .live() i .delegate()

Dodany: Styczeń 11th, 2013 | Kategoria: JavaScript

Musiałem poprawić pewien skrypt, a ponieważ część elementów była tworzona dynamicznie i wtedy musiałem do nich podpiąć event, najprościej było użyć .live() z jQuery – niestety od wersji 1.7+ .live() ma status deprecated. Tak samo jak .delegate(), które działało podobnie. Zaleca się używanie .on(), które działa podobnie do .bind().
Niestety i tutaj miałem problemy… użycie .on() na konkretnych elementach przypinało event tylko jeśli istniały one w momencie wykonania, a już nie dodawało i nie obserwowało powstawania nowych takich elementów. Po chwili googlania po sieci, znalazłem rozwiązanie – element dla którego trzeba wykonać .on(), to document, natomiast jako drugi parametr podaje się którego elementu .on() ma dotyczyć:

//wersja z live - deprecated
$('.class a').live(function(){ /* xxx */ });

//poprawnie
$(document).on('click', '.class a', function(){ /* xxx */ });

I teraz dodane dynamicznie elementy będą event click wykonywać.

Tagi: , , , , , 1 Komentarz »