2012-08-06
Pisząc
kod VBA obsługujący kliknięcie klawisza, chciałem wykonać operacje na innym formularzu. Robi się to łatwo, jeżeli taki formularz jest już widoczny w Microsoft Access Class Objects, mój formularz nie był tam jednak wyświetlany. Skoro jednak istnieją już jakieś moje formularze, to musi istnieć metoda na dodane tam nowego formularza:
Rzeczywiście jest. Należy otworzyć taki formularz w widoku projektu, a następnie „udawać”, że chce się dla niego napisać jakiś kod VBA! Wchodzisz więc do woeolnego zdarzenia formularza, wybierasz edytowanie kodu VBA i wtedy Access wygeneruje odpowiednią reprezentację w Microsoft Access Class Object. Kiedy chciałem aby odświeżyła się zawartość formularza o nazwie
[InstruktazePracownika podformularz]
mogłem już wywołać metodę:
[InstruktazePracownika podformularz].Requery
Niby prosty sposób, ale trzeba go było odkryć. Jeżeli masz ochotę pouczyć się Accessa zapraszam do lektury książki:
„Access 2010 PL. Kurs” autorstwa Danuty Mendrali i Marcina Szeligi:
2012-07-27
Proste! Zaznacz wiersz, w którym chcesz różnicować kolory i we właściwościach wypełnij Fill –> Background Color podając formułę:
= IIf(RowNumber(Nothing) Mod 2 = 0, „Silver”, „White”)
Kolory będą się zmieniać naprzemiennie, w innym kolorze parzyste, w innym nieparzyste.
2012-07-11
Udostępniając dane przez SFTP skonfigurowałem go tak:
Problem jednak pozostał, gdy użytkownicy korzystali z SFTP. Otóż liczba umask nie przenosi się z pliku .profile na działania użytkownika, kiedy użytkownik ten nie pracuje w shelu ale poprzez SFTP.
Umask musiałem przedefiniować w konfiguracji SFTP. Na moim serwerze plik ten znajdował się w katalogu /etc/ssh, a jego nazwa to sshd_config.
W końcówce tego pliku znajduje sie linijka:
Subsystem sftp /usr/libexec/openssh/sftp-server
Trzeba było sprawić, aby proces ten miał zmienioną wartość umask. Okazało się, że można to zrobić sztuczką:
Subsystem sftp /bin/sh -c 'umask 0002; /usr/libexec/openssh/sftp-server’
Ta linijka powoduje wywołanie shella (/bin/sh) w celu wywołaia skryptu podanaego jako tekst (-c). A ten skrypt zmienia umask, a potem wywołuje proces sftp.
(Rozwiązanie zaczerpnięte z http://jeff.robbins.ws/articles/setting-the-umask-for-sftp-transactions).
SFTP możesz wykorzystać ze stacji windows korzystając z :
2012-07-11
Przypomnijmy pliki i katalogi w Linuxie posiadają uprawnienia dające się zapisać liczbowo. Maksymalne uprawnienia to 777. Kiedy uzytkownik tworzy nowy plik, to od cyfry 7 (dla katalogu) lub 6 (dla pliku) jest odejmowana wartość zapamiętana w umask.
Możesz sprawdzić wartość umask wydając polecenie
umask
Domyślnie jest to 0022, tzn że jeśli utworzysz plik, to jego uprawnienia będą 666 – 022 = 644.
Jeśli chcesz aby dany użytkownik tworząc pliki tworzył je w formie dostępnej dla innych użytkowników grupy tego użytkownika, to zmień umask na 0002, bo przecież 666 – 002 = 664, więc grupa będzie miała te same prawa co właściciel. Jeśli chcesz aby pozostali uzytkownicy nie mogli czytać nowych plików zmień umask na 0007, bo 666 – 006 = 660. Umask zmieniasz poleceniem
umask 0002
Instrukcję tę możesz również umieścić w pliku .profile użytkownika. PLik .profile jest uruchamiany po zalogowaniu się użytkownika powodując w ten sposób zmianę umask i inne uprawnienia dla nowo tworzonych plików.
Więcej informacji: http://it.toolbox.com/wiki/index.php/Set_umask_to_users
2012-07-11
Domyślnie kiedy plik jest tworzony przez użytkownika, właścicielem tego pliku jest ten użytkownik, a grupa do jakiej użytkownik należy jest również przypisywana do pliku. Kiedy udostępniłeś jeden katalog wielu użytkownikom, wolałbyś pewnie, aby pliki tworzone w tym katalogu mogły być modyfikowane przez wszystkich uzytkowników.
Rozwiazanie numer jeden to przypisanie wszystkich użytkowników do jednej grupy, ale to dość kiepski pomysł.
Lepiej byłoby aby uprawnienia katalogu nadrzędnego były dziedziczone przez pliki w nim tworzone. Można zmienić działanie mechanizmu przypisywania pliku do grupy poprzez dodanie do katalogu nadrzędnego sticky bit do uprawnień katalogu:
chmod g+s katalog_nadrzedny
W efekcie każdy plik tworzony w tym katalogu będzie należał do takiej grupy, do której należy katalog nadrzędny, a nie do pierwszej grupy użytkownika tworzącego plik. W połączeniu z umask pozwoli to na skonfigurowanie wspólnego udostępnianego katalogu.
Dyskusja na ten temat: http://superuser.com/questions/151911/how-to-make-new-file-permission-inherit-from-the-parent-directory
2012-07-05
Powodem była rozładowana bateria. Zupełnie rozładowana bateria. Nigdy tego nie rób. To jakby wyjeżdżać na wakacje samochodem ze świecącą się kontrolką rezery paliwa… Dodatkowo po podłączniu ładowarki tablet zaświeca klawisze u dołu ekranu co 1 sekundę lub co 3 i wibruje.
Wyczytałem na sieci, że przyczyną jest hardware. No cóż. To nie jest wysokobudżetowy tablet, więc i zwiększona awaryjność jest dość zrozumiała. Czy więc trzeba oddać zabawkę do serwisu? Wcale nie. Można spróbować takich czynności:
1. Dla pewności wyjmij kartę SIM i kartę pamięci.
2. Wyjmij baterię
3. Nie wkładając baterii podłącz ładowarkę
4. Włącz tablet, jak zwykle. Powinien działać bez baterii.
5. Kiedy się już uruchomi włóż (na żywca!) baterię. Tę czynność starałem się wykonać szczególnie dokładnie i szybko, bo przewiduję, że to coś czego producent tabletu raczej nie przewisywał…
6. Kontrolka baterii będzie się przez pewien czas świecić na czerwono, a potem rozpocznie ładowanie baterii.
7. Na przyszłość pamiętaj, żeby nie rozładowywać baterii do końca. Nie tylko narażasz się w ten sposób na podobne problemy, ale jeszcze dodatkowo skracasz żywotność baterii.
Rozwiązanie zaczerpnięte z http://www.androidtablets.net/forum/huawei-ideos-s7-slim-technical/21659-huawei-s7-slim-does-not-shut-down-properly-then-wont-start-up.html
2012-07-05
Może to niezbyt „ładny sposób”, ale zadziałał:
1. Zatrzymałem mysql:
service mysql stop
2. Ustaliłem, gdzie sa przechowywane dane w mysql:
mysqladmin variables | grep datadir
3. Przeszedłem do tego katalogu (u mnie /var/lib/mysql/
4 Zminiłem nazwę podkatalogu. U mnie baza test miała się nazywać sait, więc komenda wygldała tak:
mv test sait
5. Uruchomiłem mysql:
service mysql start
Rozwizanie pochodzi z http://www.delphifaq.com/faq/databases/mysql/f574.shtml