Umiem po arabsku - jedno słowo

Ostatnio się dowiedziałem, że się nie znam, a jako że arabski bardzo fajny język: Słowo "kochanie" wyraża się następująco:

  • do kobiety sie mowi: habibati
  • do mężczyzny: habibi
człowiek się uczy całe życie ;). Mi się mylnie wydawało, że mówi się "habibti" ;). Nawet tłumacz Google coś wymyślił zacytuje:

حبي

ale jak to mam przeczytać?

Perl i UTF + Locale

Czasami ja nie rozumiem jak działa Perl, dziś jest jeden z takich dni:


Oba kody robią to samo, jeden z localami drugi bez:
Code 1 - test.pl
#!/usr/bin/perl

use utf8;
use warnings;
use strict;
use locale;
#use POSIX q(setlocale);
#setlocale(&POSIX::LC_ALL, "pl");

# Uzywamy funkcji do kodowania/dekodowania
# utf8::encode($string);
# utf8::decode($string);

die "$0 testfile.txt" if scalar @ARGV <= 0; 

# pobieram caly plik
open( FH, '<', $ARGV[0] ) or die "Error: usage $0 file\n\n";
my $txt = do { local ($/);  };
close(FH);


utf8::decode($txt);
my @words = $txt =~ m/\w+/g;
map { utf8::encode($_) } @words;
print join(", ", @words)."\n";

Code 2 - test2.pl
#!/usr/bin/perl

use utf8;

use strict;
use warnings;

#use locale;
#use POSIX q(setlocale);
#setlocale(&POSIX::LC_ALL, "pl");
use open ':encoding(utf8)';
#use open ':locale';

die "$0 testfile.txt" if scalar @ARGV <= 0;

# pobieram caly plik
open( FH, '<', $ARGV[0] ) or die "Error: usage $0 file\n\n";

# tak samo jak use open 'encoding...'
#binmode FH, ":encoding(utf8)";
my $txt = do { local ($/);  };
close(FH);

my @words = $txt =~ m/\w+/g;
map { utf8::encode($_) } @words;
print join(", ", @words)."\n";

Wyniki:
$ locale
LANG=pl_PL.UTF-8
LC_CTYPE="pl_PL.UTF-8"
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME="pl_PL.UTF-8"
LC_COLLATE="pl_PL.UTF-8"
LC_MONETARY="pl_PL.UTF-8"
LC_MESSAGES="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_NAME="pl_PL.UTF-8"
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_ALL=
$ cat input.txt
ęł@ąóąłð
łąśk
ala_ma_kota
$ perl test.pl input.txt
ęł, ą, ął, łąśk, ala_ma_kota
$ perl test2.pl input.txt 
ęł, ąóąłð, łąśk, ala_ma_kota

Tak na moje oko wyniki ze skryptu numer 2 są poprawne, ale dlaczego? Heh, czyżby ustawienie locali twierdziły, że ó nie jest litera słowa? No nie ważne, zapewne jakimś rozwiązaniem mogło by być ustawienie:
use POSIX qw(locale_h);
setlocale(LC_ALL,"pl_PL.UTF8");
ale mi się tego robić nie chciało :) Znalazłem tutorial o perlu i polskich znakach, może komuś pomoże - ja go nie stosowałem - w zupełności wystarczyła mi pragma use utf8;.

Sun Java JRE/JDK 1.6u10 on Debian

Wszystko co robisz, robisz na własną odpowiedzialność - u mnie to zadziałało: Niedawno pojawiła się wersja 10 JDK 1.6 Suna, w Debianie nie mogę się doczekać paczki. A nowości w Javie są fajne: interfejs Nimbus, przepisany plugin do przeglądarki.
Chciałem zbudować Javę normalnym narzędziem, czyli fakeroot + make-jpgk w przypadku Javy, ale się nie udało bo to update 10 a nie 0-9. Nie dając za wygraną rozwiązałem problem, oto solucja:

apt-get install fakeroot java-package
Następnie, trzeba edytować pliki:
  • /usr/share/java-package/sun-j2sdk.sh
  • /usr/share/java-package/sun-j2re.sh
dodając do nich:
w przypadku pliku: /usr/share/java-package/sun-j2sdk.sh
## To odnajdujemy:

        "jdk-6u"[0-9]"-linux-i586.bin") # SUPPORTED
            j2se_version=1.6.0+update${archive_name:6:1}${revision}
            j2se_expected_min_size=130
            found=true
            ;;

## A to dodajemy:
        "jdk-6u"[0-9][0-9]"-linux-i586.bin") # SUPPORTED
            j2se_version=1.6.0+update${archive_name:6:2}${revision}
            j2se_expected_min_size=130
            found=true
            ;;


natomiast w przypadku: /usr/share/java-package/sun-j2re.sh

# To odnajdujemy:
       "jre-6u"[0-9]"-linux-i586.bin") # SUPPORTED
            j2se_version=1.6.0+update${archive_name:6:1}${revision}
            j2se_expected_min_size=16 # 16542512 bytes
            found=true
            ;;
# To dodajemy:
        "jre-6u"[0-9][0-9]"-linux-i586.bin") # SUPPORTED
            j2se_version=1.6.0+update${archive_name:6:2}${revision}
            j2se_expected_min_size=16 # 16542512 bytes
            found=true
            ;;
Następnie na plikach pobranych ze strony Suna uruchamiamy operację (nie jako root):
fakeroot make-jpkg jdk-6u10-linux-i586.bin
fakeroot make-jpkg jre-6u10-linux-i586.bin
Wybudują nam się paczki, które instalujemy korzystając z polecenia dpkg (jako root oczywiście):
dpkg -i *.deb
W chwili obecnej należy jeszcze ustawić odpowiednią wersje Javy, korzystając z update-alternatives:
update-alternatives --config java
update-alternatives --config javac
To są hinty co wybrać:
  • /usr/lib/j2re1.6-sun/bin/java
  • /usr/lib/j2sdk1.6-sun/bin/javac
pilum:/home/johny# java -version
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Server VM (build 11.0-b15, mixed mode)
Niestety w przeglądarce Java się (przynajmniej mi nie zaktualizowała - spójrz na stronę about:plugins), więc muszę to zrobić ręcznie:
ln -s /usr/lib/j2re1.6-sun/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/firefox/plugins/libjavaplugin.so

ln -s /usr/lib/j2re1.6-sun/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/iceweasel/plugins/libjavaplugin.so
po wpisaniu about:plugins odnajdujemy: Java(TM) Plug-in 1.6.0_10-b33 lub wchodzimy na strone: www.java.com/en/download/installed.jsp W razie problemów, polecam zajrzeć na:
  1. http://www.debian-administration.org/articles/142
  2. http://wiki.osuosl.org/display/DEV/Java+on+Debian
  3. http://wiki.debian.org/JavaPackage
  4. http://www.crazysquirrel.com/computing/debian/java.jspx

Intel 945 - Direct Rendering Howto

Na początek zainstalowałem parę pakietów:

apt-get install libgl1-mesa-dri\
libgl1-mesa-dev\
libgl1-mesa-glx\
mesa-utils\
xserver-xorg-video-intel
Uaktualniłem config serwera X (/etc/X11/xorg.conf): Wpierw próbowałem skorzystać z nowszych sterowników "eksperymentalnych" Intela:
Section "Device"
        Identifier      "Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller"
        Driver          "intel"
        BusID           "PCI:0:2:0"
EndSection


Section "Screen"
        Identifier      "Default Screen"
        Device          "Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller"
        Monitor         "Generic Monitor"
        DefaultDepth    24
        SubSection "Display"
                Modes           "1280x800"
        EndSubSection
EndSection
U mnie te sterowniki nie działały, ale jak masz czas i chcesz potestować, możesz rozpatrzyć opcję (powinny się znaleźć w odpowiednich opcjach xorg - ja ich nie próbowałem):
 Option  "UseFBDev"  "true"
 Option  "DRI"   "true"
 Load  "glx"
Na swoim komputerze szybko zmieniłem taktykę i wykorzystałem sterowniki i810:
apt-get install xserver-xorg-video-i810
a configa Xorg-a poprawiłem następjąco:
Section "Device"
        Identifier      "Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller"
        Driver          "i810"
        BusID           "PCI:0:2:0"
 VideoRam 262144
 Option  "UseFBDev" "true"
EndSection

Section "Extensions"
 Option "Composite" "Disable"
EndSection
Narzędzia z których korzystałem:
  • lspci | grep Graphics
     00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03)
     00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
     
  • xdriinfo
     Screen 0: i915
     
  • glxinfo
     # TAK JEST ŹLE:
      $ glxinfo | grep direct
      direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
    
     # Chcemy więcej info:
      $ export LIBGL_DEBUG=verbose
      $ glxinfo | grep direct
     
     # A tak jest dobrze:
      $ glxinfo | grep direct
      direct rendering: Yes
     
  • xrandr
  • glxgears
Inne instrukcje są dostępne: Problemy:
  • Compiza nie uruchamiałem - nie przepadam za glutożelkami
  • Google Earth - dalej zjada mi cały procesor (ale nie wiem czemu) zmieniłem jakość renderowania jest troszkę lepiej

Ecartis, Gmail and UTF

Jakiś czas temu kolega (pozdrawiam Cię Skrobul) założył listę mailingową bo mieliśmy wspólny projekt na studiach - osób było 12, wszystkim wszystko działało, ale oczywiście nie mi. Ecartis nie dekodował mojego tekstu, wciąż on pozostawał jako Base64 (czyli był scrambled). Po dłuższej walce z plikami konfiguracyjnymi zostałem poinformowany, że już wszystko działa :D. Oczywiście jako, że jestem ciekawską duszą to chciałem się dowiedzieć jakie ustawienie było za to odpowiedzialne:

I sie dowiedziałem:

# humanize-mime
# Should the server strip out non-text MIME attachments.
# Example: humanize-mime = true
#
humanize-mime = false

About Me

Archiwum

Labels

Creative Commons License
This work is in the Public Domain.