Gnome Shell vs Gnome 3 Classic

Od poprzedniego wydania Ubuntu, oczekiwałem na nowe wydanie Oneiric Ocelot. Głównie ze względu na możliwość bezproblemowej instalacji Gnome Shell. Niestety nie wytrzymałem ;) , ciężko mi jest przestawić się na te nowe kolorowe ficzery. Pasek z ulubionymi i uruchomionymi aplikacjami jest schowany. Brakuje normalnego menu z aplikacjami – na dodatek to wyszukiwanie z klawiatury może i fajne, ale ma responsywność słonia.

Niestety mimo ładnego wyglądu cieszę się z możliwości powrotu do zwykłego, klasycznego pulpitu i działającego poprawnie avant-window-navigator’a. Dobrze, że można w końcu usunąć dolny gnome-panel – dodatkowe opcje z altem :)

Kolorowanie logów

Nasza praca wiąże się z przeglądaniem logów. Często podglądamy je na bieżąco poleceniem tail -f, czarno-biała treść loga jest często nieczytelna. Poniższe rozwiązanie szybko pokoloruje nam nasze logi.

Poniższy skrypt wykorzystuje właściwie dwa polecenia z konsoli: sed oraz tput.  Używam go do kolorowania logów z jboss’a. Można go szybko dostosować modyfikując wyrażenia regularne i definicje kolorów, warto też sprawdzić możliwości sed’a, tutaj użyte to zaledwie ułamek jego możliwości.

Tworzymy skrypt jb.logColorizer o zawartości:

#!/bin/bash
red=`tput setaf 1`
green=`tput setaf 2`
white=`tput setaf 7`
yellow=`tput setaf 3`
bold=`tput bold`

reset=`tput sgr0`

sed \
-e "s|^\(.*INFO.*\)|$reset$white\1|" \
-e "s|^\(.*WARNING.*\)|$reset$yellow\1|" \
-e "s|^\(.*ERROR.*\)|$reset$red\1|" \
-e "s|^\(.*SEVERE.*\)|$reset$bold$red\1|" \
-e "s|^\(.*DEBUG.*\)|$reset$green\1|"

Wywołujemy przekazując strumień z tail -f:

$ tail -f /path_to_my_log/server.log | /path_to_my_scripts/jb.logColorizer

Linki:

Status dysków Seagate Barracuda 7200.12 / 7200.11

Sprawdziłem ponownie status SMART dysków w moim komputerze. Mam w posiadaniu 2 dyski Barracuda 500MBm jeden z rodziny 7200.11, a drugi 7200.12. Jeden z nich został zwrócony do sklepu na reklamację – nowy posiadał kilka relokowanych sektorów już w pierwszej godzinie użytkowania. Drugi też był reklamowany i wymieniony kilka sektorów pojawiło się także po kilku godzinach od podłączenia.

Obecnie oba pracują ponad rok. Pooniżej zamieszczam wszystkie dane ze smartctl, może ktoś zechce porównać ;)

smartctl 5.40 2010-03-16 r3077 [x86_64-unknown-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.12 family
Device Model: ST3500410AS
Serial Number: 6VM01J0K
Firmware Version: CC34
User Capacity: 500,107,862,016 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Fri Nov 19 21:27:54 2010 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 600) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 95) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x103f) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 117 099 006 Pre-fail Always - 117866017
3 Spin_Up_Time 0x0003 097 097 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 417
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 9
7 Seek_Error_Rate 0x000f 074 060 030 Pre-fail Always - 26529753
9 Power_On_Hours 0x0032 095 095 000 Old_age Always - 4985
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 417
183 Runtime_Bad_Block 0x0000 100 100 000 Old_age Offline - 0
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 092 000 Old_age Always - 438
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 070 062 045 Old_age Always - 30 (Lifetime Min/Max 23/32)
194 Temperature_Celsius 0x0022 030 040 000 Old_age Always - 30 (0 16 0 0)
195 Hardware_ECC_Recovered 0x001a 036 017 000 Old_age Always - 117866017
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 165472205019146
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 2686782036
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 1962601800

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Ten jak zauważyłem na starcie zaliczył errora, ale trzyma się dzielnie :)

smartctl 5.40 2010-03-16 r3077 [x86_64-unknown-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.11 family
Device Model:     ST3500320AS
Serial Number:    9QMAQTPK
Firmware Version: SD1A
User Capacity:    500,107,862,016 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Fri Nov 19 21:38:32 2010 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82)    Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0)    The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection:          ( 625) seconds.
Offline data collection
capabilities:              (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities:            (0x0003)    Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability:        (0x01)    Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time:      (   1) minutes.
Extended self-test routine
recommended polling time:      ( 111) minutes.
Conveyance self-test routine
recommended polling time:      (   2) minutes.
SCT capabilities:            (0x103b)    SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate     0x000f   114   099   006    Pre-fail  Always       -       63815620
3 Spin_Up_Time            0x0003   094   094   000    Pre-fail  Always       -       0
4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       500
5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       4
7 Seek_Error_Rate         0x000f   075   060   030    Pre-fail  Always       -       33336672
9 Power_On_Hours          0x0032   093   093   000    Old_age   Always       -       6361
10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       1
12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       496
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   092   000    Old_age   Always       -       266292036101
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   070   063   045    Old_age   Always       -       30 (Lifetime Min/Max 23/30)
194 Temperature_Celsius     0x0022   030   040   000    Old_age   Always       -       30 (0 17 0 0)
195 Hardware_ECC_Recovered  0x001a   028   028   000    Old_age   Always       -       63815620
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

SMART Error Log Version: 1
ATA Error Count: 1
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 1 occurred at disk power-on lifetime: 0 hours (0 days + 0 hours)
When the command that caused the error occurred, the device was active or idle.

After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
08 51 00 00 00 00 00  Error:

Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
-- -- -- -- -- -- -- --  ----------------  --------------------
3f 00 c8 ff ff ff 4f 00      00:01:00.185  WRITE LOG EXT
00 00 00 00 00 00 00 04      00:01:00.019  NOP [Abort queued commands]
00 00 00 00 00 00 00 ff      00:00:59.995  NOP [Abort queued commands]
00 00 00 00 00 00 00 ff      00:00:07.853  NOP [Abort queued commands]

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%         0         -

SMART Selective self-test log data structure revision number 1
SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
1        0        0  Not_testing
2        0        0  Not_testing
3        0        0  Not_testing
4        0        0  Not_testing
5        0        0  Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Gotujemy skrypt synchronizacji kodziku

Jednym z użytecznych elementów Eclipsa jest możliwość podłączenie narzędzia do projektu tzw. External Tool. Może to być np. walidator kodu, skrypt testujący lub np. synchronizacja kodu ze zdalnym serwerem na czym się skupię w tym poście.

Istnieje oczywiście taki plugin jak SFTP Plugin, który umożliwia wgrywania kodu na zdalny serwer, ale w połączeniu z Subversive jest dość niewygodny i nie jest automatyczny.

Do wrzucania kodu na zdalny serwer stworzymy sobie skrypt używający linuksowego rsync’a, wrzucający zmienione pliki na serwer po każdym Ctrl+s. Jest to rozwiązanie i szybkie, i skuteczne, a działanie proste – rsync wykrywa zmienione pliki i transferuje za nas na zdalny serwer.

Piszemy skrypt i pamiętamy o chmod u+x dla pliku.

[bash]
#!/bin/bash

workspace=$1
targetServer=$2
targetRootDir=$3
projectName=$4

echo "Synchronizing project ${projectName}, `date +%Y-%m-%d\ %H:%M:%S`"
echo ""
echo "Target ${targetServer}:${targetRootDir}${projectName}"
echo ""
rsync -avz –delete –filter=’merge /path…ToMyLocalScripts/.rsyncfilter’ ${workspace}/${projectName}/ ${targetServer}:${targetRootDir}${projectName}
[/bash]

Rsynca ustawiamy dodatkowo, oczywiście możemy go podkoksać wedle uznania (man page). Oprócz standardowych opcji -avz -delete dodałem także filtr na pliki .svn – zyskujemy na transferach.

Filtr jakby co dla leniwych:

[bash]
- .svn
[/bash]

Edit: heh, można też dać opcję -C

Pozostaje jeszcze konfiguracja Eclipsa. Wchodzimy więc we właściwości projektu, dalej w Builders -> New -> Program i wybieramy skrypt

oraz podajemy parametry, które zostaną przekazane do skryptu rsync’a. Jest tu niestety jeden mankament – zmienna ${project_name} nie jest poprawnie ustawiana podczas np. update’u kodu z SVN’a i kończy się ostrzeżeniem, ale można podać konkretną nazwę danego projektu i będzie działać poprawnie:

[bash]
${workspace_loc}
remoteUser@remoteServer
/pathToTargetDir
${project_name} #lub myProject

[/bash]

Na zakładce Build Options zaznaczamy opcje Launch in background spowoduje to wysyłanie plików w tle z raportem w konsoli. Druga ważna opcja to During auto builds dzięki niej skrypt zostanie uruchomiony automatycznie po zapisaniu każdego pliku.

Niedziałające przyciski w aplikacjach Java i Flash

Ostatnia aktualizacja Ubuntu zawiera nową wersję biblioteki GTK+, w której kilka rzeczy się troszeczkę zmieniło na lepsze. Wiadomo „lepsze jest wrogiem dobrego” i coś musiało się zepsuć, padło na ulubionego Eclipse’a oraz większość aplikacji stworzonych we Flash’u.

Objawia się to tym, że część przycisków działa dobrze np. Next, Back w Eclipse, natomiast inne działają źle i tylko wyglądają na wciśnięte – np przyciski Finish w Eclipsie, czy przyciski na Youtube (play, przewijanie). Najbardziej jednak irytowało mnie zepsute ustawianie meczu w Hattric’u :) . Problem występuje prawdopodobnie w większej liczbie aplikacji napisanych w Javie lub we Flashu.

Rozwiązanie jest dość proste dla Eclipse wystarczy stworzyć prosty skrypt do uruchamiania, oczywiście podając dobrą ścieżkę. Przykładowy skrypt powinien wyglądać mniej więcej tak:

[bash]
#!/bin/sh
export GDK_NATIVE_WINDOWS=1
~/Programy/eclipse_2.1/eclipse
[/bash]

Dla Flasha należy przeedytować skrypt z lokalizacji /usr/lib/nspluginwrapper/i386/linux/npviewer np:

[bash]
gksudo gedit /usr/lib/nspluginwrapper/i386/linux/npviewer
[/bash]

Należy dopisać ustawienie zmiennej export GDK_NATIVE_WINDOWS=1

[bash]#!/bin/sh
TARGET_OS=linux
TARGET_ARCH=i386
export GDK_NATIVE_WINDOWS=1
. /usr/lib/nspluginwrapper/noarch/npviewer[/bash]

ChromeOS in a box

Dzisiaj na Google Readerze mignął mi post z bloga I’ Been to Ubuntu o możliwości sprawdzenia jednej z wersji rozwojowych systemu ChromeOS. W sieci dostępny jest obraz dysku VMWare ze skompilowanym systemu ChromeOS. Można go także odpalić w VirtualBoxie, więc postanowiłem spróbować i wrzucić tutaj kilka screenów.

Czas startu jest dość krótki i prawi od razu widzimy:

Ekran logowania

Ekran logowania, podajemy oczywiście swój login i hasło do gmaila

następnie:

Autoryzacja ...

Autoryzacja ...

wcześniej miga jednak takie coś:

Hmm :)

Hmm :)

i właściwie to zastanawia mnie czy nie jest jakaś podróbka :)

Aplikacje Googla

Aplikacje Googla

Praktycznie wygląda jakby cały ChromeOS zawierał tylko przeglądarkę Chrome, …fajne?

ostatmnio otwieran strony

ostatnio otwierane strony

Jedną z niewielu cech, które wyglądają na nowe to wskaźnik naładowania baterii oraz opcja wyłączenia sieci.

Ustawienia sieci

Ustawienia sieci

Eclipse, Mylyn i Gmail – prosta recepta na żółte karteczki

Od dłuższego czasu chodziło mi po głowie uruchomienie i korzystanie w Eclipsie z Mylyn‘a. Jednak pierwsze spotkanie było mało owocne. Ok 1,5 roku temu dostępne były tylko connectory do Trac’a i jeszcze 2-3 repozytoriów zadań. Trac i jego tickety wydaje się w miarę rozsądnym narzędziem. Samo połączenie Mylyn i Traca ze względu na potrzebę instalacji pluginu Trac XML-RPC Plugin i jednoczesnym brakiem uprawnień, zakończyło się niepowodzeniem.

Kiedy w pracy straciłem kartkę długą ‘listą TODO’ pomyślałem, że w wolnym czasie spróbuję podejść do Mylyna jeszcze raz. Przy okazji instalacji nowego Eclipse Galileo, postanowiłem doinstalować connectory do Traca i spróbować jeszcze raz. Oczywiście w oczy rzuciło mi się coś innego – connectory do Gmaila oraz Google Calendar… Szybkie zaznaczenie, szybka instalacja…

W widoku Task Repositories dodajemy nowe repozytoriom tasków, jako typ wybieramy Gmail.

Wybieramy typ repozytorium

Typ repozytorium

W ustawieniach podajemy login i hasło wymagane do logowania w googlach:

Dane logowania

Dane logowania do Gmail'a

W widoku Task List klikamy na właściwości i ustawiamy jaki label powinien być zaciągany jako lista zadań:

Wybór etykiety Gmail'a

Wybór etykiety Gmail'a

Na liście zadań otrzymujemy wszystkie emaile oznaczone odpowiednim labelem z Gmail’a

Lista z zadaniami

Lista z zadaniami z Gmail'a

.. i to wszystko na szybki początek. Żółte karteczki, także te w iGoogle, papier i inne tego typu akcesoria możemy odstawić :)

PHP 5.3.0

Pojawiła się długo oczekiwana nowa wersja PHP oznaczona wersją 5.3.0.

Wśród nowych ficzerów otrzymujemy:

  • namespace – przestrzenie nazw dla stałych, funkcji i klas.
  • late static binding – czyli mechanizm późnego rozwiązywania referencji do klasy. Przyda się bardzo podczas programowania ze statikami.
  • __callStatic() – nowa, magiczna metoda, wywoływana w momencie statycznego wywołania niedostępnej/niezdefiniowanej metody
  • closures – domknięcia, znane także pod pojęciem anonimowej funkcji, czy funkcji lambda, popularnie stosowane w JavaScripcie oraz jQuery.
  • NOWDOC – podobne do HEREDOC, jednak całkowicie bez parsowania treści
  • garbage collection – opcjonalnie pozwala na „grzebanie w śmieciach”, inaczej daje dostęp do poprzednich wartości zmiennej.
  • ternary operator „?:” – jeszcze bardziej skrócona wersja składni if
  • goto/jumpToLabel – można go użyć do przeskoczenia z jednego miejsca skryptu do innego oznaczonego labelem, budzi dużo, niezdrowego podniecenia na blipie na tagu #php
  • mysqlnd – phpowy, natywny sterownik do mysqla, zamiennik libmysql. Zapewne komunikacja z bazą stanie się efektywniejsza.
  • w bonusie mamy spore przyśpieszenie działania skryptów, w wersjach RC dochodzące do 30%
  • sekcje w php.ini – dodano nowe sekcje ([HOST=], [PATH=]) do konfiguracji środowiska per host i per path

Mamy także nowe rozszerzenia:

  • ext/phar – PHP Archive – zbuduje nam paczkę z aplikacją
  • ext/intl – wprowadza szereg nowych funkcjonalności wpierających internacjonalizację
  • ext/fileinfo – klika funkcji wspierających rozpoznawanie ‘content type’ pliku
  • ext/sqlite3

a usunięte zostały:

  • ext/mhash na rzecz ext/hash
  • ext/msql
  • ext/pspell na rzecz ext/enchant
  • ext/sysbase na rzecz ext/sysbase_ct
  • zend.ze1_compatibility_mode

Problemy z podpowiedzią składni w PDT 2.0

Od pewnego czasu zauważyłem, że w niektórych projektach mam podpowiedzi do wbudowanych funkcji PHP, a w innych tylko podpowiedzi z kodu zawartego w projekcie. Brak podświetlania objawiał się głównie w tych zaimportowanych z SVN’a.

W nowych projektach wszystko było w porządku, ale Eclipse nie zawsze dobrze importuje projekty z SVN’a. Sprawdziłem pliki w projekcie, brakowało pliku .buildpath i katalogu .settings. O ile brak .settings można przeżyć, to plik .buildpath jest nam niezbędny do działania podpowiedzi w projektach PHP.

Wystarczy więc go dograć z nowego lub działającego projektu.

Istotna zawartość pliku .buildpath:

<?xml version=”1.0″ encoding=”UTF-8″?>
<buildpath>
<buildpathentry kind=”src” path=”"/>
<buildpathentry kind=”con” path=”org.eclipse.php.core.LANGUAGE”/>
</buildpath>

W pliku tym pojawiają się także informacje o zewnętrznych bibliotekach, więc lepiej sobie ich nie wycinać :)

Zewnętrzne biblioteki w PDT

Kiedy pracujemy z kilkoma projektami, wykorzystując wspólnie biblioteki, np. Zend Framework czy PEAR, możemy taką bibliotekę dołączyć do naszego projektu.

We właściwościach projektu wybieramy PHP Include Path, na zakładce Libraries wybieramy Add External Source Folder i wskazujemy katalog z projektem.

Od tego momentu kod z tej biblioteki jest analizowany przez Eclipse i możemy cieszyć się uzupełnianiem składni z tegoż projektu.