2014-12-30

Android 5.0.1 i Nexus 4 - instalacja pod Linux Mint 17

Aby zainstalować najnowszego w tej chwili Androida (5.0.1) na telefonie Nexus 4 w środowisku linuksowym (Mint 17) wystarczy kilka małych kroków.

Instalacja Java JDK

Przede wszystkim zaczynamy od zainstalowania Oraclowej Javy JDK - poniżej instrukcja jak tego dokonać:

  • Usuwamy openjdk
sudo apt-get update && apt-get remove openjdk*
  • Rozpakowujemy ściągnięty plik
tar -zxvf jdk-...
  • Tworzymy katalog java w katalogu opt
sudo mkdir -p /opt/java
  • Przenosimy rozpakowaną javę do nowo utworzonego katalogu java (w moim przypadku to jdk1.8.0_25 ale w Twoim może być już inna)
sudo mv jdk1.8.0_25 /opt/java
  • Ustawiamy zainstalowaną JDK jako domyślną
sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.8.0_25/bin/java" 1
sudo update-alternatives --set java /opt/java/jdk1.8.0_25/bin/java

  • Nadajemy uprawnienia
sudo chmod 0775 /usr/bin/java
sudo chmod -R 0775 /opt/java/jdk1.8.0_25/
  • Sprawdzamy czy wszystko gra
java -version

Instalacja Android Studio

Aby zainstalować platform-tools/ i móc cieszyć się poleceniami fastboot czy adb wystarczy zainstalować Android Studio.

Uruchomienie modułu debuggowania USB w telefonie

Aby móc połączyć się z telefonem należy uruchomić moduł debuggowania USB. Opcja ta znajduje się w ustawieniach telefonu w zakładce "Opcje programistyczne". Domyślnie opcje programistyczne są niewidoczne - aby je aktywować należy wejść w "Informacje o telefonie" i siedem razy kliknąć w Numer kompilacji.

Sprawdzenie połączenia komputera z telefonem

Aby sprawdzić czy telefon jest widoczny przez system operacyjny komputera można uruchomić przykładowe polecenie:
adb reboot bootloader
Wcześniej oczywiście należy podłączyć telefon z komputerem przy pomocy kabla USB. Jeśli telefon zrestartuje się i przejdzie do bootloadera to znaczy, że wszystko jest ok.

Instalacja systemu Android 5.0.1

Aby zainstalować Androida 5.0.1 należy wejść na stronę https://developers.google.com/android/nexus/images pobrać odpowiednią wersję systemu i wykonać polecenia znajdujące się w dziale Flashing Instructions.

2014-12-29

[jQuery] Dodatnie liczby całkowite w polu typu input

Za pomocą jQuery i pluginu numeric można w prosty sposób ograniczyć typ wprowadzanych danych. Poniższy przykład pokazuje jak zdefiniować aby w pole input formularza można było wpisać jedynie dodatnie liczby całkowite:

$(".positive-integer").numeric({ decimal: false, negative: false }, function() { alert("Positive integers only"); this.value = ""; this.focus(); });

Więcej przykładów znajduje się tutaj i tutaj.

2014-06-03

[linuks] Synchronizacja katalogów za pomocą rsync i ssh

Za pomocą poniższej komendy możemy skopiować zawartość katalogu dir z komputera remotehost na lokalny komputer. Ponowne odpalenie tej komendy spowoduje zsynchronizowanie katalogu dir na lokalnym komputerze z katalogiem dir na komputerze remotehost.

rsync -avz -e 'ssh -p 2222' remoteuser@remotehost:/remote/dir /this/dir/

W tym przykładzie łączymy się z komputerem remotehost za pomocą ssh po niestandardowym porcie 2222.

2014-05-30

[php][symfony] FOSUserBundle - modyfikacja routingu

Cel


Zmienić ścieżkę logowania z:

moja_witryna.lh/login
na:

moja_witryna.lh/xyz_login

Rozwiązanie


Aby tego dokonać wystarczą dwa proste kroki przedstawione poniżej.

Usuwamy domyślny routing fos_user_security i dajemy własny


W pliku routing.yml modyfikujemy zapis

fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

na:

fos_user_security_login:
    pattern: /xyz_login
    defaults: { _controller: FOSUserBundle:Security:login }

fos_user_security_check:
    pattern: /xyz_login_check
    defaults: { _controller: FOSUserBundle:Security:check }

fos_user_security_logout:
    pattern: /xyz_logout
    defaults: { _controller: FOSUserBundle:Security:logout }

Modyfikujemy security.yml


Zmieniamy:

firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true

na:

firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
                login_path: fos_user_security_login
                check_path: fos_user_security_check
            logout:
                path: fos_user_security_logout
            anonymous:    true

2014-04-08

[netbeans] Replace za pomocą regular expression

NetBeans wspiera zamianę tekstu przy użyciu wyrażeń regularnych. Jeśli chcielibyśmy zamienić tekst (usunąć jeden z nawiasów):
kod='1', (SELECT
kod='2', (SELECT
kod='14', (SELECT
kod='2', (SELECT
kod='3', (SELECT
kod='5', (SELECT
kod='7', (SELECT
kod='29', (SELECT
kod='2', (SELECT
kod='3', (SELECT

na:
kod='1'), (SELECT
kod='2'), (SELECT
kod='14'), (SELECT
kod='2'), (SELECT
kod='3'), (SELECT
kod='5'), (SELECT
kod='7'), (SELECT
kod='29'), (SELECT
kod='2'), (SELECT
kod='3'), (SELECT

odpalamy Ctrl+H i wpisujemy w pola:

Find What: kod='([0-9]{1,2})', \(SELECT
Replace With: kod='$1'), (SELECT id

[pgsql] Zmiana typu kolumny na potrzeby sortowania

Załóżmy, że mamy tabelę z kolumną typu varchar, w której są kody (np. 14.5). Jeśli chcielibyśmy posortować dane za pomocą order by:

SELECT kod FROM tabela ORDER BY kod;

to otrzymalibyśmy je w kolejności:
0.1
0.16
0.3
10.11
10.4
10.6
10.8
11.11
11.4
1.16
11.6
1.2
12.11
12.4
(...)

Jeśli chcielibyśmy posortować kolumnę wg wielkości liczby to musimy rzutować kolumnę na numeric. Zapytanie wyglądać powinno zatem w ten sposób:

SELECT kod FROM tabela ORDER BY kod::numeric;

dzięki temu otrzymamy wynik:
0.1
0.16
0.3
1.16
1.2
2.17
2.4
2.5
3.4
3.9
4.10
4.4
5.8
6.10
6.16
6.4
(...)

2014-03-10

[svn] Instalacja Subversion 1.8 na Mint 16

NetBeans 8.0 nie działa dobrze z SVN w wersji 1.7 i aby wszystko ładnie współgrało trzeba zainstalować Subversion w wersji 1.8. Domyślnie (za pomocą apt-get install subversion) zainstalujemy wersję 1.7. Poniżej przedstawiam krótką instrukcję instalacji SVN'a w wersji 1.8:

Sprawdzamy jaką mamy wersję:

sudo apt-cache show subversion | grep '^Version:'

Dodajemy źródła:

sudo sh -c 'echo "deb http://opensource.wandisco.com/ubuntu precise svn18" >> /etc/apt/sources.list.d/subversion18.list'
sudo wget -q http://opensource.wandisco.com/wandisco-debian.gpg -O- | sudo apt-key add -
sudo apt-get update

Jeszcze raz sprawdzamy wersję:

sudo apt-cache show subversion | grep '^Version:'

Instalujemy svn:

sudo apt-get install subversion

Sprawdzamy wersję i cieszymy się z dobrodziejstw wersji 1.8:

svn --version

źródło: http://sharadchhetri.com/2014/02/05/install-subversion-1-8-on-ubuntu-using-apt/

2014-02-28

[svn] Ignore

W SVN sprawa ignorowania plików i katalogów jest znacznie mniej przejrzysta niż w Git'cie. Tutaj nie jest to tak oczywiste - nie znajduje się w plikach (np. .gitignore) i ciężko to wszystko ogarnąć bez odpowiednich komend. Poniżej przedstawię kilka poleceń, które ułatwią obsługę ignorowania plików w SVN'ie:

Lista plików aktualnie ignorowanych w danym katalogu


svn status --no-ignore

lub

svn proplist -v

Dodawanie ignorowania plików i katalogów


Ignorowanie konkretnego pliku o nazwie test:

svn propset svn:ignore test .

Katalogi ignoruje się w podobny sposób - należy jedynie pamiętać aby nie dawać slashów i backslashów - jedynie czystą nazwę katalogu.

Należy pamiętać, że wykonanie polecenia ignorowania kolejnego pliku (np. o nazwie test2) za pomocą komendy propset spowoduje usunięcie ignorowania pliku test:

svn propset svn:ignore test2 .

Aby uniknąć tego typu problemu należy wiele plików ignorować mniej więcej w taki sposób:

svn propset svn:ignore "test
> test2" .

Ignorowanie wszystkich plików z końcówką .tmp:

svn propset svn:ignore *.tmp .

Ignorowanie wszystkich plików (włączając pliki w podkatalogach) z końcówką .tmp:

svn propset svn:ignore -R *.tmp .

Istnieje możliwość stworzenia pliku, w którym będziemy definiować wszystkie ignorowane przez nas pliki i foldery - coś na wzór Git'a. W przykładzie plik nazwiemy podobnie (.svnignore) choć może on mieć dowolną nazwę. Treść pliku wygląda następująco:

test
test2

Za pomocą polecenia ignorujemy pliki i katalogu zapisane w pliku .svnignore:

svn propset svn:ignore -F .svnignore .

Usuwanie ignorowania plików i katalogow


svn propdel svn:ignore .

Podsumowanie


Zamiast znaku . można podać odpowiednią ścieżkę.

źródło: http://superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/

[netbeans] Theme builder

Domyślnny template NetBeansa jest bardzo biały co powoduje znaczny oczopląs po kilku godzinach pracy - aby uniknąć tego typu objawów dobrze jest zmienić sobie profil wyświetlania. Doskonałym narzędziem jest Netbeans Theme Builder - http://svenspruijt.nl/themebuilder/ dzięki któremu możemy wybrać profil najbardziej nam pasujący.
Ja korzystam z Zenburn - lekko go tylko modyfikuję zmieniając fonty na WenQuanYi Micro Mono.
Profil wczytujemy przez Tools > Options > Import...

2014-02-27

[pgsql] Funkcja replace() - zmiana treści

Kiedyś pisałem już o postgresowej funkcji replace(). Ostatnio przydała mi się ona ponownie i postanowiłem po raz kolejny o niej wspomnieć. Wykorzystałem ją do zmiany nazwy ulicy - zdarzyło mi się, że adresy niektórych użytkowników posiadały (zamiast polskich znaków) niezrozumiałe znaki (spowodowane to było przenoszeniem danych między różnymi systemami na przestrzeni wielu lat).
Poniżej przedstawiam sposób wykorzystania funkcji replace() na małym przykładzie, w którym zmieniamy w tabeli user w kolumnie ulica znaki "¦" na "Ś":

UPDATE user SET ulica=replace(ulica, '¦', 'Ś') WHERE ulica like '%¦%';

Powyższe zapytanie zaktualizuje wszystkie wpisy w tabeli user, które mają w polu ulica znak "¦" na "Ś". Warto przed odpaleniem takiego zapytania najpierw sprawdzić co tak naprawdę zwraca funkcja i ile rekordów zostanie zmienionych. Poniższe zapytanie da nam taką odpowiedź:

SELECT id, ulica, replace(ulica, '¦', 'Ś') FROM user WHERE ulica like '%¦%';

źródło: http://www.postgresql.org/docs/9.1/static/functions-string.html

2014-02-21

[php][kohana] Instalacja tumblr.php za pomocą Composer'a

Instalacja biblioteki tumblr.php w projekcie opartym na frameworku Kohana za pomocą Composera:
  1. Tworzymy katalog tumblr w application/vendor
  2. Instalujemy Composera (będąc w katalogu tumblr)
    curl -sS https://getcomposer.org/installer | php
  3. Instalujemy biblioteki, z których korzysta tumblr.php
    php composer.phar install
  4. Wykorzystujemy w naszym projekcie nowo powstały autoloader
    require_once(APPPATH.'vendor/tumblr/vendor/autoload.php');

2014-02-20

[linux] Kontrola jasności - Mint 16 i Acer V3-772g

W poprzednim wpisie napisałem jak ominąć problem czarnego ekranu przy instalacji środowiska linuksowego. Za powstawanie tego problemu odpowiada zmienna nomodeset. Powoduje ona niestety inny problem - uniemożliwia regulowanie jasności - tak się dzieje na wielu maszynach - między innymi na testowanym przeze mnie Acerze V3-772g. Aby umożliwić wspomnianą regulację należy w pierwszej kolejności zainstalować bumblebee:
sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia primus linux-headers-generic
sudo reboot
Po restarcie upewniamy się, że nie ma nouveau:
lsmod | grep nouveau
Następnie w pliku /etc/default/grub usuwamy nomodest i dodajemy acpi_backlight=vendor oraz acpi_osi=Linux do zmiennych - ostatecznie wyglądają one następująco:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor"
GRUB_CMDLINE_LINUX="acpi_osi=Linux"
Na koniec aktualizujemy gruba:
sudo update-grub
I restart. Mam nadzieję, że to już koniec tych sprzętowych wpisów. ;)

2014-02-19

[linux] Instalacja Mint 16 obok Windowsa 7

Kilka rzeczy, które trzeba wykonać aby mieć Minta 16 obok Windowsa 7 - na jednym dysku.

  1. Najpierw instalujemy Windowsa 7. Przed instalacją konwertujemy tablicę partycji z GPT na MBR - aby tego dokonać w instalatorze windowsowym uruchamiamy konsolę (Shift + F10) i wpisujemy:
    diskpart
    list disk 
    select disk n - twój wylistowany
    clean
    convert mbr
    exit 
    
  2. Po instalacji windowsa (zostawiamy miejsce na dysku na drugi system) uruchamiamy instalatora Minta. Aby uniknąć czarnego ekranu w trakcie instalacji musimy dodać parametr nomodeset na końcu (przycisk tab nam pomoże tego dokonać)
  3. Po instalacji Minta edytujemy plik /etc/default/grub - modyfikujemy linię:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
  4. Restartujemy gruba poleceniem
    sudo update-grub

źródło:
http://forum.linuxmint.pl/index.php?topic=6067.0
http://ubuntu.pl/forum/viewtopic.php?t=129706

2014-02-18

[kohana] Korzystanie z zewnętrznych bibliotek

Dobrym zwyczajem jest instalowanie zewnętrznych bibliotek w katalogu application/vendor. Np w przypadku klienta Tumblr API (tumblr.php) będzie to katalog application/vendor/tumblr.
Kohana nie wczytuje automatycznie zewnętrznych bibliotek - trzeba je wczytać samodzielnie np za pomocą:
include Kohana::find_file('vendor/library', 'file_name');

2014-02-11

[apache] Zmiana użytkownika z www-data na innego

Zmiana apache'owego użytkownika z domyślnego www-data na innego (np. marcin) jest bardzo prosta - standardowo wszystko znajduje się w pliku /etc/apache2/envvars. Trzeba zmienić dwie linijki (jeśli chcemy zmienić również grupę) z:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

na:

#export APACHE_RUN_USER=www-data
export APACHE_RUN_USER=marcin
#export APACHE_RUN_GROUP=www-data
export APACHE_RUN_GROUP=marcin