wtorek, maj 06, 2008

Losowy rekord z bazy

SELECT top(1) * FROM tabela ORDER BY Newid()

Działa od MS SQL 2000 wzwyż.

WmiPrvSE i duże zużycie procesora

Mój Windows 2008 Server miał duże zużycie procesora. Task Manager wskazał naWmiPrvSE.exe - czyli WMI Provider Host. Zauważyłem na forach, że parę innych osób dotknął podobny problem. Nikt jednak nie podaje sposobu na jego rozwiązanie.

WmiPrvSe nie można "zabić" z poziomu Task Managera - należy zastopować serwis: Windows Management Instrumentation (Winmgmt). Powoduje to zatrzymanie także dwóch innych procesów: IP Helper(iphlpsvc) i Windows System Resource Manager (WSRM).
I tu ciekawostka właśnie ten drugi serwis odpowiadał za duże zużycie procesora w moim przypadku. Wystarczyło jego zablokowanie i sytuacja wróciła do normy.

Nie jest to może perfekcyjne rozwiązanie - ale działa.

środa, luty 27, 2008

Skype i Windows Server 2008

Skype w wersji 3.2 nie działa na Windows Server 2008. Jednakże wersja 3.1.0.152 pracuje poprawnie. Można ja pobrać z OldApps. Po instalacji należy pamiętać o wyłaczeniu automatycznych aktualizacji.

piątek, styczeń 18, 2008

GUI dla shutdown

Aby zdalnie restartować lub wyłączyć komputer stosuję polecenie shutdown . Ma ono jedną wadę - dużo przełączników w przypadków restartu Windows 2003.

Można jednak użyć shutdown -i aby całość wykonać szybko i bezboleśnie w interface graficznym.

Znalezione link.

środa, styczeń 09, 2008

Sony PRS-500 i polskie znaki

Od 8 miesięcy czytam książki na Sony PRS-500. Niestety czytnik nie obsługuje poprawnie polskich liter w plikach RTF i TXT. Pozostaje więc format PDF.
Po wielu próbach znalazłem idealną dla siebie wielkość tekstu i parametrów strony.
Czcionka - Calibri - rozmiar 15
Rozmiar strony - A5
Marginesy i nagłówki ustawione na zero.

Do konwersji z DOC i TXT do PDF polecam darmowy PDFCreator.

Zabawy z .bat CD

Drobna zmiana i już działa na grupach plików. Wykorzystałem fakt, że pliki dla tego samego dnia mają taki sam prefix:
set prefix=%t:~0,13%

Cały skrypt wygląda następująco:
@echo off

set t=%1

set Year=%t:~5,2%
set Day=%t:~11,2%
set Month=%t:~8,2%
set prefix=%t:~0,13%

mkdir %Year%\%Month%\%Day%
set Target=%Year%\%Month%\%Day%\
move %prefix%*.* %Target%

Zabawy z .bat

Poczciwe pliki BAT znane z czasów DOS'a wciąż się mogą przydać. I chociaż nie są tak elastycznym narzędziem jak chociażby PowerShell czy też skrypty w *nix to jednak można zrobić nimi całkiem dużo.

Musiałem poprzenosić pliki z kamer do odpowiednich katalogów odpowiadających kolejnym dniom. Każdy plik zawierał datę w swojej nazwie (image07-12-07_15-56-05-08.jpg)

Tak więc aby wydobyć rok, miesiąc i dzień można zastosować:
set Year=%t:~5,2%
set Day=%t:~11,2%
set Month=%t:~8,2%
Gdzie zmienna t przechowuje nazwę pliku.

Poźniej stworzenie potrzebnej struktury katalogów nie stanowi problemu:
mkdir %Year%\%Month%\%Day%

Cały batch przenoszący plik podany jako argument wygląda następująco:

@echo off

set t=%1

set Year=%t:~5,2%
set Day=%t:~11,2%
set Month=%t:~8,2%

mkdir %Year%\%Month%\%Day%
move %t% %Year%\%Month%\%Day%\


I tutaj ciekawostka- trik z wycinaniem znaków nie działa na parametrze pliku i dlatego musiałem przypisać parametr do zmiennej t.

Wywołanie powyższego batcha dla grupy plików jest możliwe dzięki miłej funkcji enumeracji plików przez for:
for %f in (image*.jpg) do batch %f

Całość może nie jest najbardziej optymalną metodą ponieważ działa na poszczególnych plikach a nie na ich grupach ale cóż leniwy się robię i chyba nie chce mi się tego optymalizować.