Wyłącznie trybu immersji w GMS / włączenie przycisków nawigacji na stałe.

Dodany: Kwiecień 2nd, 2016 | Kategoria: Game Maker

Nowsze wersje androidów automatycznie wyłączają przyciski nawigacji pomagające wyjść z aplikacji (chyba, że telefon ma fizyczne guziki). Aby je przywrócić, należy:

(zalecam wykonać kopię plików w razie czego, poprawki trzeba nanieść ponownie po aktualizacji GM:S).

Przejść do folderu:

%AppData%\GameMaker-Studio\Android\runner\ProjectFiles\src\main\java\YYAndroidPackageDomain\YYAndroidPackageCompany\YYAndroidPackageProduct

edytować plik RunnerActivity.java

I zmienić linijki
1) z:

1680
1681
// if 4.4 (kitkat) or above then go into immersive mode
int vis = 0x1;

na:

1680
1681
// if 4.4 (kitkat) or above then go into immersive mode
int vis = 0;

2) z:

1689
vis = 0x706;

na:

1689
vis = 0;

3) z:

1694
vis = 0x1706;

na:

1694
vis = 0;

Krok 2:
Następnie przechodzimy do folderu:

%AppData%\GameMaker-Studio\Android\runner\ProjectFiles\src\main

i edytujemy AndroidManifest.xml
z:

23
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

na:

23
android:theme="@style/MyTheme"

Krok 3:
Przechodzimy do folderu:

%AppData%\GameMaker-Studio\Android\runner\ProjectFiles\src\main\res

Kopiujemy (duplikujemy) folder values i nazywamy go values-v19

W folderze values (tym oryginalnym) tworzymy plik style.xml

1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="@android:style/Theme.Light">
    <!-- Any customizations for your app running on devices with Theme.Light here -->
</style>
</resources>

W folderze values-v19 tworzymy plik style.xml

1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="@android:style/Theme.Holo.NoActionBar.TranslucentDecor">
    <!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>
</resources>

Czyścimy cache w GM:S i odpalamy. Pasek nawigacyjny powinien pozostawać na miejscu, a przycisk return powinien być dostępny.

Tagi: , , , Brak komentarzy »

Magento: HEADERS ALREADY SENT

Dodany: Listopad 13th, 2015 | Kategoria: Magento, PHP

Jeśli nagłówki zostały już wysłane, magento będzie w logach pluć błędem: DEBUG (7): HEADERS ALREADY SENT:, wraz ze stosem plików które doprowadziły do logowania tego błędu w app/code/core/Mage/Core/Controller/Response/Http.php:44

Niestety, lista ta nie mówi zbyt wiele:

[1] /lib/Zend/Controller/Response/Abstract.php:766
[2] /app/code/core/Mage/Core/Controller/Response/Http.php:77
[3] /app/code/core/Mage/Core/Controller/Varien/Front.php:188
[4] /app/code/core/Mage/Core/Model/App.php:347
[5] /app/Mage.php:640
[6] /index.php:78

Wystarczy jednak niewielka modyfikacja i dowiemy się gdzie leży problem. Proponuję skopiować plik app/code/core/Mage/Core/Controller/Response/Http.php do app/code/local/Mage/Core/Controller/Response/Http.php

i w metodzie sendHeaders() zamienić:

43
44
45
46
if (!$this->canSendHeaders()) {
    Mage::log('HEADERS ALREADY SENT: '.mageDebugBacktrace(true, true, true));
    return $this;
}

na

43
44
45
46
47
if (!$this->canSendHeaders()) {
    headers_sent($file, $line);
    Mage::log('HEADERS ALREADY SENT: '. $file .':' . $line);
    return $this;
}
Brak komentarzy »

Magento – reindex Solr

Dodany: Listopad 4th, 2015 | Kategoria: Magento, PHP
1
2
cd /var/www/html/magento/shell
php indexer.php --reindex catalogsearch_fulltext
Tagi: , , Brak komentarzy »

Kilka wersji PHP na raz w różnych katalogach pod jednym Apache [WAMP]

Dodany: Maj 5th, 2015 | Kategoria: Apache, PHP

Należy pobrać fcgi dla apache:

Wklejamy mod_fcgid.so do wamp\bin\apache\apache2.x.x\modules

Otwieramy plik konfiguracyjny apache wamp\bin\apache\conf\httpd.conf. Znajdujemy linijkę:

1
LoadModule php5_module "C:/Wamp/bin/php/php5.5.x/php5apache2_4.dll

I zamieniamy na

1
2
#LoadModule php5_module "C:/Wamp/bin/php/php5.5.x/php5apache2_4.dll
LoadModule fcgid_module modules/mod_fcgid.so

Poniżej dodajemy też konfigurację dla domyślnego PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FcgidInitialEnv PATH "C:/wamp/bin/php/php5.5.x;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;"
FcgidInitialEnv SystemRoot "C:/Windows"
FcgidInitialEnv SystemDrive "C:"
FcgidInitialEnv TEMP "C:/wamp/tmp"
FcgidInitialEnv TMP "C:/wamp/tmp"
FcgidInitialEnv windir "C:/WINDOWS"
FcgidIOTimeout 64
FcgidConnectTimeout 16
FcgidMaxRequestsPerProcess 1000
FcgidMaxProcesses 3
FcgidMaxRequestLen 8131072
# Location php.ini:
FcgidInitialEnv PHPRC "C:\wamp\bin\php\php5.5.x"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
Options Indexes FollowSymLinks ExecCGI
AddHandler fcgid-script .php
FcgidWrapper "C:/wamp/bin/php/php5.5.x/php-cgi.exe" .php

Restartujemy WAMPa i sprawdzamy, czy adres http://localhost/?phpinfo=1 działa.

Przechodzimy do konfiguracji VHOSTów do sekcji <Directory> danego hosta, albo tworzymy plik .htaccess (otaczamy wtedy fragmenty w <Files ~ "\.php$">...</Files> w katalogu w którym chcemy innej wersji PHP i dodajemy:

1
FcgidWrapper "D:/wamp/bin/php/php5.3.x/php-cgi.exe" .php

Lub, jeśli nie chcemy, żeby do konfiguracji został użyty ten sam plik INI dla domyślnego PHP:

1
FcgidWrapper "D:/wamp/bin/php/php5.3.x/php-cgi.exe -c D:/wamp/bin/php/php5.3.x/php.ini" .php

Druga wersja jest zapewne tą bardziej pożądaną :)

Źródła: [1], [2], [2], [3], oraz własne metody prób i błędów :)

Tagi: , , , Brak komentarzy »

[Magento] Dodanie opcji do istniejącego atrybutu

Dodany: Kwiecień 24th, 2015 | Kategoria: Magento, PHP

Jeżeli atrybut w Magento istnieje i ma już opcje, można je dodać tak:

1
2
3
4
5
6
7
8
9
10
$arg_attribute = 'nazwa_attr';
$arg_value = '<< Nowa opcja >>';

$attr_id = Mage::getModel('catalog/resource_eav_attribute')->loadByCode('catalog_product', $arg_attribute)->getAttributeId();

$option['attribute_id'] = $attr_id;
$option['value']['<< JAKAŚ NAZWA KLUCZA >>'][0] = $arg_value;

$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);
Brak komentarzy »

[Magento] Nazwa identyfikatora akcji dla layoutu

Dodany: Luty 26th, 2015 | Kategoria: Magento

Tworząc w magento layout należy podać identyfikator dla danego kontrolera i akcji. Niestety czasem są z tym problemy, ale można dość szybko znaleźć wyciągnąć ten identyfikator w samej akcji za pomocą:

1
$this->getFullActionName()
Tagi: , , Brak komentarzy »

Interpolacja między kolorami

Dodany: Styczeń 20th, 2015 | Kategoria: PHP

Mamy dwa kolory, chcielibyśmy uzyskać kolor pomiędzy nimi wyrażony w procentach (0% – 100%).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function mixcolors($color1, $color2, $amt)
{
$amt = min(1, max($amt, 0));

$c1_R = hexdec(substr($color1, 0, 2));
$c1_G = hexdec(substr($color1, 2, 2));
$c1_B = hexdec(substr($color1, 4, 2));

$c2_R = hexdec(substr($color2, 0, 2));
$c2_G = hexdec(substr($color2, 2, 2));
$c2_B = hexdec(substr($color2, 4, 2));

$d1 = $c1_R + (($c2_R - $c1_R) * $amt);
$d2 = $c1_G + (($c2_G - $c1_G) * $amt);
$d3 = $c1_B + (($c2_B - $c1_B) * $amt);

$m_p1 = sprintf('%02x', round($d1));
$m_p2 = sprintf('%02x', round($d2));
$m_p3 = sprintf('%02x', round($d3));

return '#' . $m_p1 . $m_p2 . $m_p3;
}

Wynik funkcji 

1
mixcolors('FF0000','00FF00', X)

gdzie X to kolejno 0, 0.25, 0.5, 0.75, 1

ff0000
bf4000
808000
40bf00
00ff00

Tagi: , , , , Brak komentarzy »

Zarezerwowanie pamięci pod wyświetlenie Fatal Errora w PHP

Dodany: Listopad 22nd, 2014 | Kategoria: PHP

Jeśli w PHP zabraknie pamięci, to wyświetli się stosowny komunikat na ten temat i skrypt wysypie się.
Można jednak zarezerwować sobie trochę pamięci, aby wyświetlić własny komunikat o błędzie:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

error_reporting(0);

ini_set('memory_limit', '1M');

$memory = str_repeat('x', 262144);
   
register_shutdown_function('handleFatalError');
   
function handleFatalError() {
    global $memory;
    unset($memory);
    $error = error_get_last();
    echo $error['message'] . PHP_EOL . $error['type'] . PHP_EOL . $error['type'] . PHP_EOL . $error['file'] . PHP_EOL . $error['line'] . PHP_EOL;
}

// uncomment one of them:

// this_function_doesnt_exists();

// or

$memory_error = str_repeat('x', 500000);

// zaczerpnięte z kodu Yii 2

Brak komentarzy »

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 »