Może się okazać, że chcemy aby w naszym projekcie, w którym używamy Composera, zmiany w paczce były śledzone w głównym drzewie aplikacji. Inaczej mówiąc chcemy zrezygnować z traktowanie paczki jako submodułu, tak aby była traktowana jak normalny kod aplikacji.
Jeśli spróbujemy dodać paczkę, skończy się to tylko dodaniem pustego folderu.
Próba dodanie podfolderu z paczki zakończyć się może czymś podobnym:
# git add public_html/protected/vendors/crisu83/yiistrap/assets/
fatal: Path 'public_html/protected/vendors/crisu83/yiistrap/assets/' is in submodule 'public_html/protected/vendors/crisu83/yiistrap'

Wg mnie najlepszym wyjściem jest użycie czwartej metody opisanej tutaj: http://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md.
W skrócie, chodzi o wpisanie do .gitignore naszej aplikacji ścieżki do ignorowania folderów .git w naszych modułach. Dzięki temu możemy dodać zawartość modułów do naszej aplikacji i Composer bez problemu będzie aktualizował nasze moduły.

Jeśli z jakiegoś powodu nie działałoby dodanie modułu do gita można spróbować najpierw usunąć moduł z opcją --cached:

# git rm --cached public_html/protected/vendors/crisu83/yiistrap
rm 'public_html/protected/vendors/crisu83/yiistrap'

Po tej operacji możemy bez problemu dodać moduł.

Mój pulpit

19 paź 2013 Dział: komputer

Chciałbym dzisiaj opisać Wam mój pulpit, który umożliwia mi połączenie się z komputerem w sposób optymalny.

Na początek rozdzielczość, hmmm… jakby to powiedzieć, mój pulpit posiada nieskończoną przestrzeń. Mogę się poruszać w trzech wymiarach, właściwie to przynajmniej w czterech, bo mogę kręcić sobie beczki (jak robi to samolot) podczas poruszania się przez pulpit. Mogę spoglądać w dowolnym kierunku z dowolnego miejsca, nie jestem niczym ograniczony. Mogę patrzeć w dal przybliżając sobie dowolne elementy, mogę się do nich zbliżyć.
Najprościej mogę to porównać do sytuacji, w której macie możliwość poruszania się po kosmosie stając się dowolnie dużym obserwatorem. W jednej chwili jesteście mali jak mrówki, że możecie widzieć pręciki kwiatów w wielkości takiej jak na co dzień widujecie np. lodówkę.
Za chwilę możecie stać się olbrzymami dla, których Ziemia to paproszek w plamie Drogi Mlecznej.

Jeśli chodzi o interfejs, który umożliwia poruszanie się po pulpicie to jest on niewielki, za to o wielkich możliwościach.
Zacznijmy od „ekranu”, tak na prawdę go nie ma. Posiadam urządzenie, które umożliwia mi oglądanie mojego pulpitu z zamkniętymi oczami. Niestety nie jestem w stanie powiedzieć Wam na jakiej zasadzie to działa, ale efekt jest świetny. Zero zmęczenia oczu, płynne, szybkie i responsywne środowisko. Należy tutaj wspomnieć o kolorach i ostrości obrazu, która jest trudna do odróżnienia od rzeczywistości – eh ta technika. Jako ciekawostkę mogę Wam powiedzieć, że jeśli mamy jeden element pulpitu blisko siebie, a drugi za nim oddalony, to patrząc na ten dalszy bliższy jest rozmazany. Działa to tak samo jakbyście trzymając w wyciągniętej przed siebie ręce długopis, widzieli go rozmazanego patrząc na oddalony o kilka metrów obraz na ścianie. W sumie fajny feature, mogę się bardziej skupić na tym na co patrzę i bardzo jest to dla mnie naturalne patrzenie.

Przejdźmy teraz do sterowania. Może zabrzmi to dla Was śmiesznie, ale działa na zasadzie przekazu myśli. Działa całkiem nieźle. Przede wszystkim zero lagów, precyzyjnie i z wielkim wyczuciem potrafi połączyć mnie z pulpitem, przemieszcza mnie gdzie chcę i umożliwia interakcję z elementami pulpitu.
Aha, ostatnio coś poprawili w oprogramowaniu i urządzenie rozróżnia już prawidłowo chęć interakcji od pomyślenia o chęci interakcji.

Na początku miałem problemy w moim pulpitem, był dla mnie czymś zupełnie nowym, z drugiej strony wszystko było znajome. Obycie się z interfejsem przypominało naukę jazdy samochodem, z każdą chwilą coraz łatwiej. Teraz nie myślę o tym jak mocno trzeba naciskać na hamulec, albo jak wbić wyższy bieg, po prostu robię to automatycznie, niemal nie nieświadomie. Używam narzędzia przezroczyście tak żeby realizowało moje potrzeby.

W moim pulpicie mam jeszcze kilka fajnych rzeczy. Jednym z nich jest właściwość, która nadaje różnym elementom odpowiednie stopnie świecenia dzięki czemu te ważniejsze dla mnie elementy są w przestrzeni wyraźniej widoczne. To tak jak z gwiazdami, niektóre są dla nas jaśniejsze… moje są trochę lepsze, bo mogę zmieniać kolor, częstotliwość zmiany stanów i jeszcze tam kilka innych bajerów – szybciej będzie jak sami to zobaczycie niż jak ja to będę opisywał.

Podoba mi się też zarządzanie dźwiękiem, szybko mogę zmienić głośność, pogłos, mogę się oddalać dowolnie od źródła dźwięku. Najprościej można to porównać do włączania dowolnego urządzenia grającego w dowolnym miejscu z dowolnymi nastawami. W salonie gra jakaś muzyczka… a obok maila od mamy właśnie pojawiła się jej wiadomość wideo.

Może teraz opiszę trochę o samych elementach na pulpicie. Każdy z nich może przybrać dowolną postać, to jak go widzimy i słyszymy. Może być dowolnie wielki, może być animowany, może być to również obraz z odpalonej aplikacji – taki ustawiony monitor w przestrzeni. W większości przypadków elementy tego samego rodzaju wyglądają podobnie, ale w bardzo prosty sposób możemy zmieniać ich fizyczność wg własnych potrzeb. Przypomniało mi się jak, kiedyś w Windowsie zamiast ikonki i nazwy pliku graficznego można było zobaczyć miniaturkę zdjęcia – to było coś! Przesuwanie kursorem nad plikiem z wideo powodowało wyświetlenie miniaturki klatki proporcjonalnie od początku filmu – lewej strony ikony, do końca filmu – prawej strony ikony. Stare czasy… Jak już jesteśmy przy kursorze, to na moim pulpicie nie ma czegoś takiego, bo po co?

Na koniec jeszcze tylko wspomnę o samej organizacji elementów na pulpicie. Wyobraźcie sobie miasto, w którym możecie wejść do dowolnego budynku, możecie w każdym z nich umieścić dowolną rzecz: w pokoju może być np. Tytanik, a w nim na mostku kapitańskim stoi globus, na którym – jak się bliżej przyjrzycie – można zobaczyć jak wyglądał wasz dom z zewnątrz kilka lat temu…

Na dzisiaj muszę już kończyć. Jeśli macie jakieś pytania piszcie śmiało. Jak będzie zainteresowanie to opiszę kilka ciekawych narzędzi oraz postaram się przybliżyć jak działa teraz np. wyszukiwanie. Opiszę też jak można sobie organizować pracę z komputerem zwiększając niewyobrażalnie efektywność swojej pracy.

RabbitMQ – action „start” failed

28 sie 2013 Dział: linux

Problem

Podczas instalacji rabbitmq-server napotykam na problem, pakiet nie chce się do końca zainstalować:
Starting rabbitmq-server: FAILED - check /var/log/rabbitmq/startup_log, _err rabbitmq-server. invoke-rc.d: initscript rabbitmq-server, action "start" failed. dpkg: error processing rabbitmq-server (--configure): subprocess installed post-installation script returned error exit status 1 configured to not write apport reports Errors were encountered while processing: rabbitmq-server

Ponadto:
# invoke-rc.d rabbitmq-server start
Starting message broker: rabbitmq-serverFAILED - check /var/log/rabbitmq/startup_\{log, _err\} ... (warning).
failed!
invoke-rc.d: initscript rabbitmq-server, action "start" failed.

dmesg pokazuje:
[11300042.270119] erlexec[3446]: segfault at 4 ip 000076b83c0fcc96 sp 00007a1d47eae7d0 error 6 in libc-2.11.3.so[76b83c060000+159000]

strace:
[pid 5782] lstat("/sys", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
[pid 5782] lstat("/sys/devices", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
[pid 5782] lstat("/sys/devices/system", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
[pid 5782] lstat("/sys/devices/system/node", {st_mode=S_IFDIR|0700, st_size=0, ...}) = 0
[pid 5782] open("/sys/devices/system/node", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 EACCES (Permission denied)
[pid 5782] --- SIGSEGV (Segmentation fault) @ 0 (0) ---

# ls -al /sys/devices/system/node
pokazuje uprawnienia 700

Naprawa

Daje:
# chmod a+xw /sys/devices/system/node
# rm -rf /var/lib/rabbitmq/mnesia/

odpalam z roota
# /usr/lib/rabbitmq/bin/rabbitmq-server
# invoke-rc.d rabbitmq-server start
Starting message broker: rabbitmq-serverFAILED - check /var/log/rabbitmq/startup_\{log, _err\} ... (warning).
failed!
invoke-rc.d: initscript rabbitmq-server, action "start" failed.

# ls /var/log/rabbitmq/startup_*
startup_err startup_log
# cat /var/log/rabbitmq/startup_*

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
BOOT FAILED
===========

Error description:
{error,{could_not_write_file,"/var/lib/rabbitmq/mnesia/rabbit@mephisto/cluster_nodes.config",
eacces}}

Log files (may contain more information):
/var/log/rabbitmq/rabbit@mephisto.log
/var/log/rabbitmq/rabbit@mephisto-sasl.log

Stack trace:
[{rabbit_node_monitor,write_cluster_status,1},
{rabbit_node_monitor,prepare_cluster_status_files,0},
{rabbit,'-boot/0-fun-1-',0},
{rabbit,start_it,1},
{init,start_it,1},
{init,start_em,1}]

{"init terminating in do_boot",{rabbit,failure_during_boot,{error,{could_not_write_file,"/var/lib/rabbitmq/mnesia/rabbit@mephisto/cluster_nodes.config",eacces}}}}

Zmieniam uprawnienia:
# chown rabbitmq:rabbitmq /var/lib/rabbitmq/ -R

Uruchamiam:
# invoke-rc.d rabbitmq-server start
Starting message broker: rabbitmq-server.

Test

# ps aux | grep rabbit
rabbitmq 14638 0.0 0.0 11748 1384 ? S 20:08 0:00 /bin/sh /usr/sbin/rabbitmq-server
rabbitmq 14648 5.7 0.2 142460 34276 ? Sl 20:08 0:00 /usr/lib/erlang/erts-5.8/bin/beam.smp -W w -K true -A30 -P 1048576 -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/../ebin -noshell -noinput -s rabbit boot -sname rabbit@mephisto -boot start_sasl -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbit error_logger {file,"/var/log/rabbitmq/rabbit@mephisto.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/rabbit@mephisto-sasl.log"} -rabbit enabled_plugins_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/lib/rabbitmq_server-3.1.5/sbin/../plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/rabbit@mephisto-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit@mephisto"

# invoke-rc.d rabbitmq-server status
Status of node rabbit@mephisto ...
[{pid,14648},
{running_applications,[{rabbit,"RabbitMQ","3.1.5"},
{os_mon,"CPO CXC 138 46","2.2.5"},
{xmerl,"XML parser","1.2.5"},
{mnesia,"MNESIA CXC 138 12","4.4.14"},
{sasl,"SASL CXC 138 11","2.1.9.2"},
{stdlib,"ERTS CXC 138 10","1.17"},
{kernel,"ERTS CXC 138 10","2.14"}]},
{os,{unix,linux}},
{erlang_version,"Erlang R14A (erts-5.8) [source] [64-bit] [smp:8:8] [rq:8] [async-threads:30] [kernel-poll:true]\n"},
{memory,[{total,28874312},
{connection_procs,2712},
{queue_procs,5424},
{plugins,0},
{other_proc,9018160},
{mnesia,59648},
{mgmt_db,0},
{msg_index,34208},
{other_ets,792096},
{binary,1848},
{code,15563458},
{atom,1351233},
{other_system,2045525}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,6707676774},
{disk_free_limit,1000000000},
{disk_free,6399975424},
{file_descriptors,[{total_limit,924},
{total_used,3},
{sockets_limit,829},
{sockets_used,1}]},
{processes,[{limit,1048576},{used,129}]},
{run_queue,0},
{uptime,435}]
...done.

 

Problem

Replikacja bazy MySQL przestała działać. Status pokazuje błąd 1236:

mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: localhost
Master_User: repuser
Master_Port: 23306
Connect_Retry: 60
Master_Log_File: mysql-bin.000042
Read_Master_Log_Pos: 1265611
Relay_Log_File: mephisto-relay-bin.000032
Relay_Log_Pos: 537
Relay_Master_Log_File: mysql-bin.000042
Slave_IO_Running: No
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1265611
Relay_Log_Space: 1266062
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event; consider out of disk space on master; the first event 'mysql-bin.000042' at 1265327, the last event read from '/var/log/mysql/mysql-bin.000042' at 1265611, the last byte read from '/var/log/mysql/mysql-bin.000042' at 1265664.'
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)

Przyczyna

Przyczyną takiego błędu jest najczęściej nagłe przerwanie pracy mastera, który po awarii rozpoczyna nowy binlog o czym slave nie wie.

Rozwiązanie

Rozwiązaniem jest poinformowanie slave o aktualnym binlogu mastera.

Na początek wyłączamy slave:

mysql> stop slave;
Query OK, 0 rows affected (0.04 sec)

Wprowadzamy aktualne dane binloga. Nazwa przeważnie jest z numerem wyżej niż ten, który pamięta slave. Pozycję binloga zaczynamy od 4:

mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000043', MASTER_LOG_POS=4;
Query OK, 0 rows affected (0.05 sec)

Uruchamiamy replikację:

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

Sprawdzamy status replikacji:

mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: repuser
Master_Port: 23306
Connect_Retry: 60
Master_Log_File: mysql-bin.000043
Read_Master_Log_Pos: 75367
Relay_Log_File: mephisto-relay-bin.000002
Relay_Log_Pos: 75513
Relay_Master_Log_File: mysql-bin.000043
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 75367
Relay_Log_Space: 75672
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)

Zrobione.

Podpowiadanie w bashu

4 lip 2013 Dział: linux

Aby uruchomić podpowiadanie w bashu należy na początek zainstalować pakiet bash-completion:
# apt-get install bash-completion

Następnie należy edytować plik .bashrc
# vim ~/.bashrc

i dodać w nim:
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi

Certyfikat SSL w DirectAdmin z użyciem SNI

30 maj 2013 Dział: linux

Jeśli chcesz zainstalować więcej niż jeden certyfikat ssl używając jednego adresu ip do rozważenia zostaje użycie SNI czyli Server Name Indication. Aby zainstalować certyfikat SSL w DirectAdmin należy:

  1. Włączyć w konfiguracji DirectAdmina opcję sni:
     # vim /usr/local/directadmin/conf/directadmin.conf

    i dodajemy:

     enable_ssl_sni=1
  2. Generujemy klucz prywatny dla naszej domeny:
    # openssl genrsa -des3 -out naszadomena.pl.key 2048
  3. Generujemy żądanie certyfikatu:
    # openssl req -new -key naszadomena.pl.key -out naszadomena.pl.csr
  4. W naszym centrum certyfikacji (CA) uzyskujemy certyfikat na podstawie „naszadomena.pl.csr”. Polecam StartSSL, w którym możemy uzyskać certyfikat bezpłatnie. Otrzymany plik zapisujemy jako „naszadomena.pl.crt”.
  5. W DirectAdmin wchodzimy do „SSL Certificates”. Zaznaczamy opcję „Paste a pre-generated certificate and key” i wklejamy w polu poniżej zawartość klucza prywatnego „naszadomena.pl.key” i pod nim certyfikat „naszadomena.pl.crt”.
  6. Musimy dodać Root Certificate naszego CA, w tym celu, pod polem opisanym powyżej jest link „Click Here to paste a CA Root Certificate” do formularza, do którego wklejamy zawartość certyfikatu od CA (w StartSSl: ToolBox -> StartCom CA Certificates ->StartCom Root CA (PEM encoded),  zaznaczamy „Use a CA Cert.” i zapisujemy zmiany.
  7. Może się zdarzyć, że nie możemy ponownie uruchomić Apache, który zaakceptowałby poprawnie nasz certyfikat – wejście na stronę „naszadomena.pl” powoduje ostrzeżenie o błędnym certyfikacie. Upewnij się, że pliku konfiguracyjnym dla domeny „/usr/local/directadmin/data/users/naszadomena/httpd.conf”, masz prawidłowe ścieżki do prywatnego klucza oraz samego certyfikatu.
  8. Podczas ponownego uruchamiania (jeśli certyfikat jest poprawnie obsługiwany przez Apache) pojawi się informacja o podanie hasło do klucza prywatnego. Podajesz hasło, które ustawiłeś dla wygenerowania „naszadomena.key”. Aby usunąć hasło z klucza zrób jego kopię:
    # cp naszadomena.key naszadomena.key.crypted

    utwórz plik z kluczem bez hasła:

    # openssl rsa -in naszadomena.key.crypted -out naszadomena.key
  9. Uruchom ponownie Apache, w przeglądarce powinieneś móc połączyć się z domeną po ssl.

Monitoring hostów Apacha przy użyciu Munina

14 lut 2013 Dział: linux

apache_vhosts

Jednym z ciekawych pluginów do Munina jest apache_vhosts. Pokazuje on na wykresie per vhost: średnią wielkość odpowiedzi, średni czas odpowiedzi oraz ilość zapytań na minutę.

Wybór metody pozyskiwania danych

Czytając README możemy się dowiedzieć, że do prawidłowego funkcjonowania pluginu potrzebujemy analizować logi Apache i tu mamy do wyboru trzy metody:

  1. Możemy użyć apache_pipelogger, do którego Apache będzie zapisywał logi
  2. Możemy użyć apache_logparser jako daemona, który parsuje logi Apache
  3. Możemy użyć dwie metody jednocześnie – dane będę połączone.

Ja wybrałem metodę nr 2.

Instalacja dodatkowych modułów

Aby zapewnić prawidłowe funkcjonowanie pluginu musimy zainstalować następujące moduły perla:  File::Tail::Multi Storable IPC::ShareLite Munin::Plugin (opcjonalnie Data::Dumper). Możemy to zrobić otwierając perlowy shell:
perl -MCPAN -e shell
a następnie zainstalować moduł, np.:
install File::Tail::Multi

Kopiowanie plików

W kolejnym kroku musimy przekopiować: apache_logparserapache_vhosts do katalogu z naszymi pluginami. W moim przypadku jest to /usr/share/munin/plugins. Następnie powinniśmy utworzyć symlink w /etc/munin/plugins do apache_vhosts.

Konfiguracja parsera

W pliku apache_logparser musimy skonfigurować ścieżkę do plików z logami, określić jak wyglądają nazwy vhostów, aby parser mógł określić nazwę vhosta. Edytujemy:

my $dir = "/logs/apache_logs";
my $files = "*access_log";
my $site = "(.*)-access_log";

Próba parsera

Na tym etapie możemy zobaczyć czy parser działa prawidłowo. Wystarczy, że zmienimy w nim

local $debug=1;

Teraz odpalając parsera będziemy widzieć wynik analizy poszczególnych logów. Na czas konfiguracji możemy zostawić uruchomionego daemona.

Konfiguracja noda

Kolejną czynnością jest konfiguracja noda Munina. Musimy w pliku /etc/munin/plugin-conf.d/munin-node umieścić:

[apache_vhosts]
user root
env.subgraphs requests bytes time
env.checks requests bytes time

Test pluginu

Możemy tera sprawdzić czy plugin działa prawidłowo, wystarczy uruchomić:

munin-run apache_vhosts

Finalne uruchomienie

Na koniec zatrzymujemy daemona parsera logów i wyłączamy w nim tryb debug. Uruchamiamy go w tle. Restartujemy noda Munia. Po kilku minutach powinniśmy zobaczyć nowe wykresy :)

Przygoda w banku

22 sty 2013 Dział: różne

Bank internetowy

Uwielbiam banki, w których można szybko i bez problemu załatwić każdą sprawę.

Na pewno BZWBK do takich nie należy?

Konto walutowe

Posiadam konto walutowe, dla którego nie mogłem z systemu bankowości elektronicznej zmienić adresu korespondencyjnego. Pomimo zaznaczania opcji  ”Chcę, aby na powyższy adres przesyłana była korespondencja związana z wszystkimi produktami…” adres nie zmieniał się.

Na początek kontakt mailowy przez formularz. W skrócie: napisałem na czym polega problem i jak próbowałem go rozwiązać, w odpowiedzi dostałem instrukcję:

Odpowiadając na Pana zapytanie dotyczące przesyłania korespondencji na wskazany adres korespondencyjny, uprzejmie informuję, że podczas zmiany adresu do korespondencji po wypełnieniu wszystkich prezentowanych rubryk należy jeszcze zaznaczyć kratkę z opisem „Chcę, aby na powyższy adres przesyłana była korespondencja związana z wszystkimi produktami, z jakich obecnie korzystam w Banku Zachodnim WBK S.A. (w tym z: rachunkami bieżącymi, lokatami, kredytami).”

No super…  poprosiłem o przeczytanie mojego maila jeszcze raz. W odpowiedzi zostałem poinformowany, że miało to na celu zweryfikowanie czy właściwie zmieniam adres…

Kolejny mail od banku mówił o tym, że nie umiem odróżnić adresu do korespondencji od „… np. przy potwierdzeniu przelewu widzi Pan inny adres i jest to adres zameldowania.”. Załączona była też instrukcja jak i gdzie mogę adres zameldowania zmienić.

Być może było błędem, że od razu nie wysłałem zrzutów ekranu, po których Pani stwierdziła: „W tej sytuacji serdecznie Pana proszę o kontakt z infolinią Banku…”

Kontakt z infolinią i odpowiedź: „Proszę udać się do banku…”.

Po kilku dniach otrzymałem niespodziewany mail:

Przesłałam poniższy zrzut do konsultacji, otrzymałam informacje, że niedogodności mogą zostać wyeliminowane w oddziale Banku po podpisaniu przez Pana Karty Informacyjnej Klienta.  Za zaistniałą sytuację serdecznie przepraszam w imieniu Banku.  

Zapraszam do dowolnej placówki naszego Banku. Aby ułatwić kontakt z placówką Banku informuję, że spis znajduje się na stronie głównej Banku: bzwbk.pl, w opcji „Na skróty” – „Oddziały i bankomaty”.

No to wiem na czym stoję. Czas na wizytę w placówce.

Oddział banku

Przedstawiam sprawę, Pani klika w komputerze, nie może znaleźć gdzie to zmienić, w międzyczasie wychodzi kartka z drukarki i słyszę: „… proszę podpisać, bo tu w systemie mi wyskoczyło i musiałam zmienić, żeby dalej kontynuować”. Chwila konsternacji, proszę o czas na zapoznanie się z dokumentem. Napisany tradycyjnie: dużo bełkotu, małym druczkiem, na jedną stronę, tak żeby nie chciało się czytać. Na początku nie zwróciłem na to uwagi, ale dokument ten to „Karta identyfikacyjna”, o której była mowa w korespondencji mailowej.

Patrząc na dokument zapytałem Panią jakie dane są zmienione, bo są tu zaprezentowane różne moje dane (w tym jawnie zapisane hasło dostępu), ale ja chciałbym wiedzieć, które z nich zostały dzisiaj zmienione.  Jak mnie poinformowała Pani: „niestety system nie pokazuje takich danych i muszę uwierzyć na słowo, że było zaktualizowane obywatelstwo na polskie, bo wcześniej w systemie nie było to uzupełnione”. Oczywiście w dokumencie tym nie ma żadnej informacji o moim obywatelstwie.

Eh, myślę sobie, może ja albo Pani ma zły dzień. Już miałem podpisać, ale wcześniej zapytałem czy dostanę jakieś potwierdzenie, odpowiedź: „Nie! Ale jak Pan podpisze to mogę skserować”.  Podpisałem, Pani skserowała, super! Pani wraca do klikania, nadal nie może znaleźć. Dzwoni do pomocy, chwilę sobie rozmawiają, klik, klik myszką po raz kolejny mój PESEL. Słyszę drukarkę, wychodzą kartki, słyszę Pani głos: „Proszę podpisać, bo miał Pan stare konto, a teraz będzie miał Pan nowe”.

W tym momencie się trochę zdenerwowałem, przyszedłem zmienić jeden adres do korespondencji, tymczasem dostaję do podpisania dokumenty, które nie zmieniają adresu tylko jakieś inne rzeczy. Proszę Panią o chwilę czasu na zapoznanie się z „Umową usług bankowości elektronicznej BZWBK24″. Pytam czy mogę podpisać dokument później, bo chciałbym się z nim zapoznać na spokojnie, dokładnie przeczytać. „Nie! Proszę czytać teraz.” No dobra, to czytam, co prawda niedokładnie, ale zawsze coś. Pierwsza strona, druga strona, na której się zatrzymuję i oświadczam Pani, że nie podpiszę tego dokumentu. Pani ma mnie dość, widzę, że bardzo się zdenerwowała, ale w dalszym ciągu zachowuje należytą kulturę.

Dlaczego nie podpisałem:

2. Klient oświadcza, że dokumenty o których mowa w ust. 1 (w skrócie: regulamin, załącznik do regulaminu, cennik) zostały mu przekazane w postaci papierowej w odpowiednim czasie przed zawarciem niniejszej Umowy.

Pokazuję Pani powyższy punkt, na co Pani odpowiada, że zaraz mi da dokumenty z ust. 1. Pytam, co z moim czasem na zapoznanie się z nimi? Pani informuje mnie, że nic się w nich nie zmieniło, co miałoby dla mnie znaczenie… A więc, mam podpisać nową umowę, która coś i jednocześnie nic nie zmienia… ?

Dokumentów nie podpisałem. Poprosiłem Panią o możliwość wzięcia umowy i po zapoznaniu się z załącznikami, możliwość zwrócenia jej podpisanej. „Nie ma takiej możliwości… bo już tu kliknęłam w systemie…”. Pani widząc moją stanowczą decyzję w końcu przystaje na możliwość odłożenia podpisania umowy.

Obiecałem, że jeszcze dzisiaj postaram się przynieść podpisany dokument, niestety nie miałem „odpowiedniego czasu”, na zapoznanie się z warunkami umowy. Próbowałem się skontaktować z Infolinią banku, aby zweryfikować, czy muszę się zgodzić na nową umowę, niestety posłuchałem tylko muzyki…

P.S.
Jakiś czas temu musiałem odebrać z banku kartę debetową do konta, bo wcześniejsza poszła na zły adres. Wtedy „system” dał mi w prezencie ubezpieczenie, za które musiałem płacić, bo podpisałem papier potwierdzający wydanie karty i przy okazji zgodziłem się na ubezpieczenie. Wtedy nie czytałem co podpisuję, rzuciłem tylko okiem. W sumie, chciałem kartę i dostałem, więc w czym problem?


Jeśli podczas dodawania klucza do agenta pojawia się:

Could not open a connection to your authentication agent.

spróbuj uruchomić agenta w ten sposób:

ssh-agent bash

 

Instalacja enchant extension dla php

15 lip 2012 Dział: różne

W zasadzie nie ma większego problemu jeśli Twój php jest instalowany z paczki wystarczy zainstalować pakiet php5-enchant i mamy problem z głowy.

Natomiast, jeśli budujemy nasz php ze źródeł, np. jak to robi Directadmin, potrzebujemy zainstalować kilka rzeczy zanim restart usługi przyniesie nam spodziewany efekt.

Na samym początku ściągamy źródło rozszerzenia:

 # wget http://www.abisource.com/downloads/enchant/1.6.0/enchant-1.6.0.tar.gz

wypakowujemy i zaczynamy budowanie:

# ./configure
# make
# make install

Jeśli podczas instalacji otrzymasz komunikat:

checking for ENCHANT… no
configure: error: Package requirements (glib-2.0 >= 2.6 gmodule-2.0) were not met:

No package ‚glib-2.0′ found
No package ‚gmodule-2.0′ found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables ENCHANT_CFLAGS
and ENCHANT_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

może to oznaczać, że potrzebujesz dodatkowo zainstalować pakiet libglib w wersji deweloperskiej, a więc:

# apt-get install libglib2.0-dev

Na koniec potrzebujemy przekompilować php z dodatkowym parametrem:

–with-enchant

Po udanej kompilacji pozostaje restart apacha. Komenda php – i powinna zwrócić w wynikach coś podobnego do:

enchant

enchant support => enabled
Version => 1.1.0
Libenchant Version => 1.5.x
Revision => $Id: 0126d9ef4ed28f85fbab1ddb4e10ba927289f0cd $

ispell => Ispell Provider => /usr/local/lib/enchant/libenchant_ispell.so
myspell => Myspell Provider => /usr/local/lib/enchant/libenchant_myspell.so