Wink - narzędzie do zrzutów ekranowych dobre do robienia helpów

Potrzebujesz stworzyć instrukcję użytkowania jakiegoś programu? Dobre mogą być instrukcje krok po kroku w postaci zrzutów ekranowych. Tworzenie screenshotów może być pracochłonne i do tego windowsowy printscreen zrzuca cały ekran, a często potrzeba tylko kawałka. Pomocnym narzędziem może być Wink. Program rozpowszechniany jak freeware (także dla biznesu!) , którym możemy robić zrzuty ekranowe lub nawet tworzyć animację z dogranym naszym głosem z mikrofonu. Program zapisuje jako Flash, EXE, PDF, PostScript lub HTML. Nawet jeśli zrzuty ekranowe potem trzeba wrzucić do worda i opisać, to i tak jest łatwiej gdy mamy już utworzone poszczególne obrazy JPG (dostajemy je podczas eksportu do HTML). Polecam.

 http://www.debugmode.com/wink/

Śledzenie zmian wykonywanych przez proces w Windows - Process Monitor

Znalazłem ciekawy programik, który umożliwia śledzenie działania procesu w Windowsie. Śledzi zmiany w rejestrze i odwołania do plików na dysku. Może się przydać gdy trzeba przeanalizować dlaczego jakiś program nie działa.

http://technet.microsoft.com/pl-pl/sysinternals/bb896645(en-us).aspx

Połączenie Reporting Services z SQL Server i generalnie autentykacja windows w ASP.

Miałem ostatnio zadanie w postaci połączenia Reporting Services działających na jednym serwerze, z bazą danych MS SQL Server działającą na drugim serwerze. Okazuje się, że problemy pojawiają się, gdy przenosimy wszystko z konfiguracji testowej do produkcyjnej. Zwykle w konfiguracji testowej Reporting Services i SQL Server działają na jednym komputerze, zatem mają do siebie “pełne prawa”, ze względu na działanie z uprawnieniami użytkownika Network Service. Na oddzielnych serwerach już nie jesteśmy w tak komfortowej sytuacji. Postanowiłem stworzyć tego posta “dla potomności” ;) żeby ktoś w podobnej sytuacji mógł to sobie wygoolować :)

Połączenie reporting services z SQL Server

Kilka informacji podstawowych -> Raporty na serwerze raportów zwykle mają zdefiniowany plik Data source zawierający informacje o połączeniu do bazy danych. Tak dla ułatwienia, żeby nie trzeba było dla każdego raportu wpisywać tych informacji. W Data Source definiuje się także sposób połączenia do bazy. Najprościej jest wykorzystać autentykację windows, czyli na podstawie uprawnień użytkownika domenowego. Niestety to nie jest takie proste. O tym dalej.

Załóżmy, że użytkownik domenowy, który wyświetla raport (*może to być użytkownik na prawach którego działa aplikacja ASP, która korzysta z kontrolki do wyświetlania raportu) ma prawa do tego raportu jak i do bazy danych, z której ten raport bierze dane. Skoro raport działa z uprawnieniami użytkownika (autentykacja Windows, czyli domenowa) no to wszystko gra. Ma prawa do tego, co trzeba. No nie do końca. Pojawia się błąd:
“An error has occurred during report processing. (rsProcessingAborted)
Cannot impersonate user for data source ‘DS1′. (rsErrorImpersonatingUser)
Logon failed. (rsLogonFailed)
For more information about this error navigate to the report server on the local server machine, or enable remote errors ”

Można sobie włączyć Remote errors (http://technet.microsoft.com/en-us/library/aa337165.aspx) ale niewiele to daje. Dodatkowa informacja to:

“Logon failure: the user has not been granted the requested logon type at this computer. (Exception from HRESULT: 0×80070569)”

Pierwsza przeszkoda

Aby możliwe było użycie Data Source na prawach użytkownika domenowego, ten użytkownik musi mieć prawo “Allow log on locally” (Zezwalaj na logowanie lokalne) na komputerze na którym działa Reporting Services. To prawo musi mieć użytkownik, który “wyzwala” Data source. Można także w konfiguracji Reporting Services (Start -> programy -> Microsoft SQL Server 2005 -> configuration tools -> Reporting Services Configuration) ustawić “Execution account” i tam wpisać użytkownika, który takie prawo będzie posiadał . W ten sposób Reporting Services będzie mogło wywoływać wszystkie data source. Jest do dokładniej opisane tutaj: http://msdn2.microsoft.com/en-us/library/bb326317.aspx

Druga przeszkoda

Diagram przesdstawiający problem double hop

Chcieliśmy ustawić aby Reporting Services działały na zasadzie autentykacji windows. Daje to tyle ze aplikacja webowa IIS (w tym przypadku Reporting Services) może działać z uprawnieniami użytkownika domenowego, który z niej korzysta. Wszystko jest w porządku dopóki serwer IIS na podstawie tych danych uwierzytelniania spróbuje się dobrać do innych zasobów sieci (np. serwera MS SQL). Nie jest dopuszczalne takie zachowanie. Aplikacja nie możę korzystać z uprawnień tego użytkownika w innych usługach. Uznano, że to zbyt duże uprawnienie nadane aplikacji. Użytkownik musi wiedzieć do czego będą użyte jego uprawnienia. Ten problem nazwano “double hop”. Pierwszy hop to połączenie między użytkownikiem a IIS, a drugi hop to połączenie pomiędzy IIS a SQL serverem. Tego nie można zrobić. Jest to opisane tutaj: http://blogs.msdn.com/nunos/archive/2004/03/12/88468.aspx Tak naprawdę użytkownik daje prawo aplikacji do działania z jego uprawnieniami tylko na poziomie serwera IIS.

* Kilka użytecznych definicji i wyjaśnień można znaleźć tutaj: http://msdn2.microsoft.com/en-us/library/aa480547.aspx

Można to obejść w różny sposób.

1. W data source w Reporting Services wpisać nazwę użytkownika i hasło do połączenia z bazą danych (Stored Credentials). Hasło będzie zaszyfrowane w bazie danych Reporting Services (dla jasności: Reporting Services ma własną bazę danych do przechowywania raportów i innych rzeczy) .
Raczej nie ma możliwości zapisania nazwy użytkownika i hasła Data Source w rejestrze tak jak to można zrobić z aplikacją ASP. Jedynie można impersonifikować całą usługę Reporting Services, tak jak zostało to opisane tutaj: http://msdn2.microsoft.com/en-us/library/bb326419.aspx
2. Można zezwolić serwerowi IIS na “drugi hop” zgodnie z :

http://support.microsoft.com/default.aspx?scid=kb;en-us;810572


Czyli trzeba by było zmienić ustawienia active directory, aby ufać serwerowi IIS jeśli chodzi o delegowanie uprawnień (drugi hop):
http://msdn2.microsoft.com/en-us/library/ms916706.aspx

Minus jest taki, że trzeba by było zmienić ustawienia komputerów klienckich zgodnie z pierwszym podanym przeze mnie linkiem. Poza tym może to w jakimś stopniu obniżyć bezpieczeństwo, bo skoro serwer IIS będzie miał pozwolenie na delegowanie uprawnień, no to wszystkie aplikacje (nie tylko Reporting Services) będą mogły z tej opcji korzystać. Niby klient (Internet Explorer) musi pozwolić na delegowanie jego uprawnień, ale i tak może to być problem.

Mam nadzieję, że ten post zaoszczędzi komuś czas ;) Dzięki temu problemowi zdecydowanie poprawiłem sobie znajomość zagadnień związanych z ASP i uprawnieniami domenowymi, choć nie ukrywam, że wolałbym spędzić nad tym mniej czasu ;)

SEO - Strona widoczna z jednego adresu i przyjazne linki. mod_rewrite i php

Przyszło mi ostatnio zająć się pewną stronką. Uznałem, że przydała by się optymalizacja widoczności strony w google ;) Jedną z rzeczy jaką postanowiłem zrobić było ustawienie, że strona jest widoczna tylko z jednego adresu. Według wielu stron o SEO jeśli strona jest widoczna pod adresami www.strona.pl www.strona.com www.strona.com.pl i do tego jeszcze strona.pl itd. to google ustawia page rank dla wszystkich adresów oddzielnie, albo zaniża pagerank z uwagi na duplikującą się treść. Jak temu zaradzić? Trzeba zwrócić kod 301 Moved permanently i przekierować na właściwy adres. W ten sposób google będzie widział, że ma budować statystyki tylko dla tego jednego adresu. Dokonamy tego najpierw przy pomocy modułu serwera Apache o nazwie mod_rewrite, a potem php. Niestety nie na wszystkich serwerach jest uruchomiony ten moduł i nie na wszystkich serwerach mamy możliwość użycia pliku .htaccess

1. Przekierowywanie przez mod_rewrite

Musimy stworzyć na serwerze plik o nazwie .htaccess (w katalogu głównym) i wpisać do niego:

Options +FollowSymLinks
RewriteEngine On

# przypadek strona.com

RewriteCond %{HTTP_HOST} ^strona\.com [NC]
RewriteRule ^(.*)$ http://www.strona.com/$1 [R=301,L]

#przypadek www.strona.pl

RewriteCond %{HTTP_HOST} ^www.strona\.pl [NC]
RewriteRule ^(.*)$ http://www.strona.com/$1 [R=301,L]

I tak dalej dla reszty adresów. Pewnie by się dało wszystko w jednej linijce, ale mi tak wystarczy ;) Do pisania reguł mod_rewrite przydaje się znajomość wyrażeń regularnych. Przykłady zastosowań mod_rewrite można znaleźć na stronie: mod_rewrite Cheat Sheet.

2. Przekierowywanie przez php

Można użyć także php np. tak:

<?
//przypadek strona.com
$host=$_SERVER[”HTTP_HOST”];
if ( $host == “strona.com” ) {
$location=”http://www.strona.com”.$_SERVER[”REQUEST_URI”];
header( “Location: $location” );
exit();
}

//przypadek www.strona.pl
if ( $host == “www.strona.pl” ) {
$location=”http://www.strona.com”.$_SERVER[”REQUEST_URI”];
header( “Location: $location” );
exit();
}
?>

Nie podaję tutaj, jak zrobić przyjazne adresy w PHP bo tego nie testowałem. Można sobie to wygooglować ;)

Przyjazne adresy URL

Drugim naszym zadaniem jest utworzenie przyjaznych adresów podstron. Załóżmy że nasza strona ma adresy podstron w postaci: www.strona.com/main.php?strona=oferta Po pierwsze nie wygląda to najpiękniej, a po drugie mniej się to podoba googlowi. Użyjemy mod_rewrite aby to poprawić. Zamienimy podany wcześniej adres na taki oto adres: www.strona.com/nasza_wspaniala_oferta

Zawartość .htaccess :

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^nasza_wspaniala_oferta $ main.php?strona=oferta [L]

I gotowe. Teraz możemy w kodzie naszej strony używać przyjaznych linków i zyskamy lepsze wyszukiwanie w google.

Tablice biznesowe - BPMN, ITIL, Prince2 i inne

itposter banner Ostatnio w poszukiwaniu informacji na temat BPMN (czyli Business Process Modeling Notation) natknąłem się na ciekawe tablice zrobione w Visio opisujące tę notację. Obecnie zajmuję się tworzeniem diagramów w BPMN i takie zestawienie elementów notacji może mi w tym pomóc. Niestety jak się wydrukuje na A4 to niewiele widać. A3 to minimum. Jak się nie ma odpowiedniej drukarki pomocne może być ściągnięcie plików visio z repozytorium projektu na Source Forge i wydrukowanie w częściach.

Poza tablicami dla BPMN są jeszcze tablice dla ITIL, Prince2, UML i innych zagadnień. Ciekawy pomysł.

Wygodne przeliczanie walut w Firefox.

Exch Firefox ExtensionNatknąłem się na bardzo fajną wtyczkę do przeliczania walut dla Firefox’a. Wtyczka nazywa się Exch i można ją znaleźć pod adresem: https://addons.mozilla.org/en-US/firefox/addon/1747 Po instalacji wystarczy wcisnąć CTRL+SHIFT+X aby pojawiło się okienko jako panel boczny. Potem należy wybrać pomiędzy jakimi walutami ma przeliczać i gotowe.  Przeliczanie jest na podstawie danych z jakiejś usługi Yahoo. Może niektórym przydałby sie jakiś kurs NBP, ale mi taki wystarcza.

Stres w pracy

Ostatnio przeczytałem opublikowany w Harvard Business Review (november 2005) i w HBR OnPoint, który leży w Empiku ;) wywiad z Herbertem Bensonem. Artykuł mnie bardzo zaciekawił, ponieważ dotyczył stresu w pracy. Jaki poziom stresu jest pozytywny i sprzyja wydajności, a jaki jest destrukcyjny powodujący wypalenie i kłopoty ze zdrowiem. Autor artykułu w swoich badaniach zaobserwował, że zwiększa się efektywność, gdy stres osiąga poziom, na którym już odczuwamy negatywne jego skutki, a następnie wyciszamy się stosując np. techniki medytacyjne, “odmóżdżające” czynności i inne. Autor przytoczył prawa Yerksa-Dodsona w kontekście stresu. Dochodzimy do wierzchołka krzywej, aby potem odpuścić i się wyciszyć. Towarzyszy temu wzrost zdolności kreatywnego myślenia i jasność umysłu. Osobiście tego nie testowałem, bo ostatnio nie byłem w bardzo stresującym środowisku, ale jestem ciekaw, czy rzeczywiście to działa. Sztuka polega na tym, aby być ciągle na lewym zboczu tej krzywej, a nie na prawym. Wiadomo, że w pewnych granicach stres jest siłą pozytywną, bo popycha do działania.

Podobnym problemem zajmuje się Harvard Business Review january 2005 (tak, jestem fanem tej gazety ;) ). Artykuł “Overloaded circuits: Why smart people underperform”. [a tutaj można przeczytać krótki wywiad z autorem] jest o tym, co się dzieje, kiedy jesteśmy zalani zbyt dużą ilością zadań i informacji. Płat czołowy odpowiadający za wyższe czynności zostaje przeciążony. Kiedy mamy do ogarnięcia zbyt wiele wątków wysyła sygnały do głębszych (pierwotnych) części mózgu. Te zaczynają działać jak w stanie zagrożenia. Takie reakcje mają priorytet, bo decydują o przetrwaniu, nad wyższymi funkcjami mózgu niezbędnymi do wykonywania bardziej złożonych zadań, jak podejmowanie decyzji, planowanie, zarządzanie czasem itp. Dlatego mózg pierwotny zaczyna dominować nad tym “nowoczesnym”. Im więcej sygnałów mózg pierwotny dostaje tym reakcje są silniejsze. Powstaje pętla. Ja czuję coś takiego jako rodzaj otępienia. Mój “nowoczesny” mózg zostaje przytłoczony tym pierwotnym. Trudno wtedy podjąć jakąkolwiek decyzję. Im bardziej byśmy się starali, tym bardziej pętla będzie się zaciskać. Mamy jedno wyjście - wyłączyć się. Tak jak mózg pierwotny jest bardzo prosty, tak i rozwiązania tego problemu są proste. Trzeba dać mu znać, że wszystko jest ok. Pomóc mogą ćwiczenia oddechowe, techniki medytacyjne (można poczytać o nich np. tutaj), albo po prostu bieganie po schodach. Podczas prostych ćwiczeń, wydzielają się przyjazne dla mózgu endorfiny, które pomagają w wyrwaniu się z pętli. Wpadaniu w pętle sprzyja brak snu i zjadanie dużych ilości węglowodanów (słodycze, makarony itp.) powodujących skoki poziomu glukozy we krwi, a co za tym idzie skoki w odżywianiu komórek mózgowych.
Właśnie te negatywne skutki stresu widać na wykresie Yerksa-Dodsona - jest krzywą, a nie prostą ;)
Zdecydowanie polecam ten artykuł z HBR (nie, nie jestem agentem tego wydawnictwa ;) )

Ciekawe, że zwykłe siedzenie w biurze może być źródłem tylu badań i obserwacji ! :)

Komórki na javie czyli przydatne programiki

Ostatnio nie mając dostępu do normalnego komputera postanowiłem zobaczyć jakie jawowe programy na komórkę mogą mi się przydać. Oto najlepsze aplikacje javy jakie znalazłem.

Opera Mini

Przeglądarka internetowa. Podstawowa sprawa. Naprawdę da sie wiele zrobić przy jej pomocy. Jest nieźle zaprojektowana. Nawet na małym ekranie da sie pracować.

Gmail mobile

Świetny klient pocztowy na komórkę. Nie trzeba sie bawić w żadną synchronizację, czy inne rzeczy. Po prostu gmail w komórce. Niestety jest ograniczenie długości maila, chyba do 2000 znaków (na mojej komórce). Ale działa książka adresowa, zaznaczanie maili gwiazdką i inne typowo gmailowe rzeczy. Nie działa natomiast zapisanie kopii roboczej maila w trakcie jego pisania. Jeśli w tym momencie zadzwoni telefon to mail jest stracony :/

Google Maps Mobile

Google Maps na komórce. Działa czasem dosyć wolno, ale i tak bardzo przydatna aplikacja, kiedy nie mamy nic innego pod ręka. Można uzyskać drogę od punktu do punktu, zapisywać sobie ulubione punkty. W niektórych miastach (zachodnich) można wyświetlić informację o korkach. Gdyby tak jeszcze czytał pozycję na podstawie danych z sieci GSM… ale sie rozmarzyłem.

GCal Sync

Synchronizacja kalendarza google z tym w komóre. Bardzo fajna rzecz jak ktoś jest fanem googlowego kalendarza jak ja. W ten sposób kalendarz googlowy naprawdę ma sens. Można do tego pokusić się o synchronizację Gcala z kalendarzem w Thunderbirdzie lub Outlooku i mamy kompletne rozwiązanie.

goTalkMobile

Komórkowy klient google talk.

BluePulse

Komunikator grupowy. Można wysyłać wiadomości do innych osób będących w tym systemie. Niestety nie mogłem tego przetestować na mojej komórce, bo jest za słaba. Ciekaw jestem jak to wygląda.

Szkoda tylko, że komórkowy internet nie jest zbyt tani….

LinkedIN group: PJIIT (PJWSTK) students and alumni.

Jakis czas temu stworzylem na linkedin grupe dla studentow i absolwentow PJWSTK. Zachecam do czlonkostwa. Co to daje? Po pierwsze jak ktos widzi profil osoby, to sie pojawia tez ikonka i wiadomo od razu, ze ktos jest z PJWSTK. Po drugie jesli nalezymy do grupy i chcemy wyslac wiadomosc do innego czlonka grupy nie musimy tej osoby miec w swojej sieci.
Jak zostac czlonkiem grupy? Wyslij maila na maciej@egermeier.com podajac swojego esa.

Humor zaduszkowy

Na jednym ze straganów ze zniczami:

palenie zabija