2013-10-31

[jQuery] Funkcja .live() w jQuery 1.9+

Od wersji 1.9 jQuery nie znajdziesz już funkcji .live() - jeśli z jakiegoś powodu potrzebujesz jej w dalszym ciągu pomoże Ci w tym ten oto fragment kodu:
jQuery.fn.extend({
live: function( types, data, fn ) {
          if( window.console && console.warn ) {
           console.warn( "jQuery.live is deprecated. Use jQuery.on instead." );
          }

          jQuery( this.context ).on( types, this.selector, data, fn );
          return this;
        }
});

źródło: http://stackoverflow.com/questions/8021436/turning-live-into-on-in-jquery

2013-10-25

NetBeans 7.4 i Rectangular Edit Tools

Nowa wersja NetBeans'a (7.4) ma konflikt z pluginem Rectangular Edit Tools. Środowisko wiesza się po kliknięciu w oknie Search Result. Aby rozwiązać ten problem wystarczy dezaktywować wspomniany plugin.

źródło: https://netbeans.org/bugzilla/show_bug.cgi?id=237529

2013-07-26

Instalacja statystyk Awstats pod Ubuntu

Instalacja i konfiguracja statystyk z Apache'a na przykładzie strony twoja_domena.pl

Instalacja:
sudo apt-get install awstats
opcjonalnie również:
apt-get install libnet-ip-perl
apt-get install libgeo-ipfree-perl

Utworzenie pliku konfiguracyjnego:
sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.twoja_domena.pl.conf

Edycja pliku konfiguracyjnego:
# apache2
LogFile="/var/log/apache2/access.twoja_domena.log"

# domain name
SiteDomain="twoja_domena.pl"
HostAliases="localhost 127.0.0.1 twoja_domena.pl"

LogFormat=1
opcjonalnie można aktywować pluginy:
LoadPlugin="tooltips"
LoadPlugin="geoipfree"

Odpalamy pierwszy raz statystyki:
sudo /usr/lib/cgi-bin/awstats.pl -config=twoja_domena.pl -update

Po jakimś czasie (może nawet kilku minutach) powinno się pojawić coś w tym stylu:
Create/Update database for config "/etc/awstats/awstats.twoja_domena.pl.conf" by AWStats version 7.0 (build 1.971)
From data in log file "/var/log/apache2/access.twoja_domena.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 2075
 Found 0 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 54 corrupted records,
 Found 0 old records,
 Found 2021 new qualified records.

W katalogu /etc/apache2/sites-available/ w którym znajduje się konfiguracja apache'a danej strony (u mnie jest to /etc/apache2/sites-available/twoja_domena_pl) należy dodać:
Alias /awstatsclasses "/usr/share/awstats/lib/"
Alias /awstatsicons/ "/usr/share/awstats/icon/"
Alias /awstatscss "/usr/share/doc/awstats/examples/css"
ScriptAlias /awstats/ /usr/lib/cgi-bin/
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch

Na koniec robimy restart Apache'a:
/etc/init.d/apache2 restart

oraz dodajemy generowanie statystyk do Crontaba:
0 */3 * * * /usr/lib/cgi-bin/awstats.pl -config=twoja_domena.pl -update > /dev/null

Jeśli chcemy zrestartować awstatsa:
sudo su - root
cd /var/lib/awstats
rm *
logout

źródło:
- http://jeromejaglale.com/doc/ubuntu/awstats
- https://help.ubuntu.com/community/AWStats

2013-05-14

[psql] Usunięcie postgresql i apache z autostartu

W przypadku Debiana / Ubuntu / Minta wystarczy użyć polecenia update-rc.d:

PostgreSQL:

sudo update-rc.d -f postgresql remove 
 Removing any system startup links for /etc/init.d/postgresql ...
   /etc/rc0.d/K21postgresql
   /etc/rc1.d/K21postgresql
   /etc/rc2.d/S19postgresql
   /etc/rc3.d/S19postgresql
   /etc/rc4.d/S19postgresql
   /etc/rc5.d/S19postgresql
   /etc/rc6.d/K21postgresql

Apache:

sudo update-rc.d -f apache2 remove
 Removing any system startup links for /etc/init.d/apache2 ...
   /etc/rc0.d/K09apache2
   /etc/rc1.d/K09apache2
   /etc/rc2.d/S91apache2
   /etc/rc3.d/S91apache2
   /etc/rc4.d/S91apache2
   /etc/rc5.d/S91apache2
   /etc/rc6.d/K09apache2

W przypadku potrzeby skorzystania z PostgreSql'a czy Apache'a wystarczy odpalić go ręcznie z konsoli:
sudo /etc/init.d/postgresql start
sudo /etc/init.d/apache2 start

2013-03-15

[psql] Import danych w formacie csv do tabeli w bazie danych

Istnieje możliwość szybkiego importu danych z pliku CSV bezpośrednio do tabeli w bazie danych. Poniżej przedstawiam prosty przykład jak tego dokonać:
drop table tabela_testowa;
create table tabela_testowa(
kod VARCHAR(10),
akronim VARCHAR(32),
nazw VARCHAR(128)
);
copy tabela_testowa (kod,akronim,nazw) from stdin with csv delimiter as ';' quote '"';
"0101";"KŘBENHAVNS";"KŘBENHAVNS KOMMUNE"
"AD76";"DSA";"DANSKE SUNDHEDSORGANISATIONERS ARBEJDSLŘSHEDSKASSE"
\.
Warto zwrócić uwagę na delimiter i quote. Więcej informacji na temat kopiowania można znaleźć w dokumentacji PostgreSQL'a. :)

2013-02-24

[kohana][php] Upgrade z wersji 3.1 do 3.3

Oczywiście jak to przy zmianie wersji frameworka kohana (po dłuższym czasie) jest niezła zabawa z dostosowaniem aplikacji. Zmian jest sporo - poniżej przedstawiam te, które udało mi się zarejestrować szybko przerabiając swoją własną stronkę, która wcześniej stała na wersji 3.1:

Zmiana wielkości liter


Zmienia się wielkość liter katalogów i plików w aplikacji. Na przykład zamiast
application/classes/model/flickr.php
musi być
application/classes/Model/Flickr.php

Brak modułu kohana_cache


Jeśli ktoś używał odpalał ten moduł w bootstrap.php to musi z tego zrezygnować.

Cookie salt


Należy w bootstrap.php (np po i18n) wpisać coś takiego:
Cookie::$salt = 'Your-Salt-Goes-Here';
źródło: http://forum.kohanaframework.org/discussion/8873/cookie-salt-problem/p1

Konfiguracja MySQL


Trzeba zmienić w pliku konfiguracyjnym 'type' z 'mysql' na 'MySQL'.
źródło: http://stackoverflow.com/questions/13043412/error-when-using-auth-with-orm-driver-kohana-3-3-0

Odczyt danych z pliku konfiguracyjnego


Przestaje istnieć - teraz zamiast dawnego:
$config = Kohana::config('nazwa_pliku_konfiguracyjnego');
plik konfiguracyjny odpalamy następująco:
$config = Kohana::$config->load('nazwa_pliku_konfiguracyjnego');

Main request


Wygląda teraz mniej więcej tak u mnie:
$request = Request::factory();
$response = $request->execute()->send_headers(TRUE);

if($response->body()){
    $total = array(
        '{memory_usage}' => number_format((memory_get_peak_usage() - KOHANA_START_MEMORY) / 1024, 2).'KB',
        '{execution_time}' => number_format(microtime(TRUE) - KOHANA_START_TIME, 2).' s.'
    );
    
    echo $response->body(strtr((string) $response, $total));
}

Redirect


Zamiast:
$this->request->redirect(Url::base(FALSE, FALSE).'start');
mamy teraz:
$this->redirect(URL::base(FALSE, FALSE) . 'start');
źródło: http://stackoverflow.com/questions/13088601/kohana-errorexception-fatal-error-call-to-undefined-method-requestredirec

Query builder


Zamiast:
$count = $q_count->select('count("*") AS ilosc')->group_by('tytul','tresc')->execute()->get('ilosc');
mamy teraz:
$count = $q_count->select(array(DB::expr('COUNT(*)'),'ilosc'))->group_by('tytul','tresc')->execute()->get('ilosc');
źródło: http://kohanaframework.org/3.3/guide/database/query/builder

Parametry funkcji action


Zamiast:
public function action_index($kod=''){}
mamy teraz:
public function action_index(){ $kod = $this->request->param('kod'); }

To tyle w mocno telegraficznym skrócie... wg mnie są to dobre zmiany! :)

Więcej informacji: http://kohanaframework.org/3.3/guide/kohana/upgradingguide/kohana/upgrading

2013-02-20

[js][jquery] Mały przykład regular expression

Wykonanie "if'ka" jedynie w przypadku wpisania do html'owego inputa (o id badane_pole) numeru zgodnie z formatem:

OW/EEE/RR/NNNNN

gdzie:
OW - dwie cyfry
EEE - trzy cyfry lub duże litery
RR - dwie cyfry
NNNNN - pięć cyfr

var rege = /^([0-9]{2})+\/([A-Z0-9]{3})+\/([0-9]{2})+\/([0-9]{5})$/;
if(rege.test($("#badane_pole"))){
    //gogogo!
}