wtorek, 28 czerwca 2011

Zmiana położenia profilu i dokumentów w Windows 7

Pierwszą rzeczą, którą robię po instalacji Windows 7 to zmiana położenia profilu dla użytkowników. Dlaczego wszystkie moje dane mają leżeć na partycji, która może być szybko przeinstalowywana? Dziwne, że Microshit nie wpadł na taki pomysł! Można by to zrealizować podczas instalacji Windows, w przypadku gdy jest więcej niż jedna partycja... Ale może nie bardzo to takie dziwne w porównaniu z ich innymi wybrykami.
Co by nie gadał przenieść profile trzeba. Używam takich sztuczek:
  1. Zabezpieczam rejestr. I żeby mi nikt nie pisał, że nie ostrzegałem...
  2. Kopiuję cały folder C:\Users na inny dysk. Dla skupienia uwagi przyjmijmy, że to będzie dysk D:. Jako ciekawostkę podaję, że ten folder widać w systemie jako C:\Użytkownicy i z taką nazwą przekopiuje się na D:. Uwaga! W folderze tym są ukryte pliki i foldery! Należałoby więc wejść do Eksploratora Windows, z menu wybrać Narzędzia -> Opcje Folderów -> Widok -> Pokaż ukryte pliki, foldery i dyski. Dopiero wtedy przekopiuje się OK.
  3. Otwieram edytor rejestru (regedit) i wchodzę w drzewko HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\ProfileList
  4. Zmieniam tam 3 (słownie trzy) wartości. Czyli Default, Public, Profile Directory
  5. No i przelogowuję się. Można już zakładać nowego użytkownika, który pokaże się w nowej lokalizacji na innej partycji.
Tak to mogłoby wyglądać przed zmianą:

A tak po zmianie:

Rzecz całą wyczytałem na: http://www.windows7hacker.com/index.php/2009/05/how-to-change-user-profile-default-location-in-windows-7/

poniedziałek, 30 maja 2011

Program do prostych screencastów

Nie potrzeba nic instalować. Usługa już z hostingiem. Dla prostych, szybkich screencastów dla klienta wymarzony:
http://www.screenr.com/

wtorek, 10 maja 2011

System do próbowania html/css/javascript

Na dodatek wspierający frameworki Mootools, jQuery, Prototype, YUI, Dojo, ExtJS i kilka innych.
Wskocz na http://jsfiddle.net/

Piszesz po prostu kod html okraszasz go css'em i uaktywniasz Javascriptem w dowolnej konfiguracji. Efekt po naciśnięciu klawisza "Run".


Sposób na ukrycie swojego emaila na stronie

Wejdź na stronkę:
http://www.vincentcheung.ca/jsencryption/

W żółtym polu "Key" wpisz dowolny klucz. Na przykład taki jak adres tej strony:  "http://pomoceprogramisty.blogspot.com/"
W polu zielonym zapisz swój email i naciśnij przycisk "Encrypt". W polu czerwonym "Clipher text" zobaczysz wygenerowany klucz.
W niebieskim polu "HTML Code" otrzymasz kod do wklejenia na swoją stronę.
Każdy, kto będzie chciał zobaczyć twój email będzie musiał podać klucz, który w naszym przypadku jest adresem tej strony.

Roboty zbierające emaile się nabiedzą :-)

poniedziałek, 9 maja 2011

Pozycja myszy w JavaScript i dynamiczne ustawianie pojemnika

Czasami zachodzi potrzeba aby pojemnik z wygenerowaną zawartością (na przykład Ajaxową) pojawił się w okolicach kursora myszy. Można to wykonać na różny sposób, ale że dużo piszę Ruby on Rails, które używa biblioteki Prototype, to opiszę na tej właśnie drodze.
Aby zapoznać się z działaniem mechanizmów można wypróbować ten kod:
<script type="text/javascript" >
  function getcords(e){
    mouseX = Event.pointerX(e);
    mouseY = Event.pointerY(e);
    //dla celów testowych
    $('debug').innerHTML = 'mouseX:' + mouseX + '-- mouseY:' + mouseY;
  }
  Event.observe(document, 'mousemove', getcords);
</script>
<div id="debug">
  tu za chwilę pojawią się koordynaty kursora myszy
</div> 

Kluczowym jest tu obserwator (albo donosiciel) zdarzeń Event.observe, który w tym przypadku obserwuje cały dokument i śledząc położenie myszy "donosi" do kontenera <div id="debug">.
Jak wcześniej wspomniałem, opisuję to jedynie aby pokazać mechanizm. Nam chodzi o coś innego.
Potrzeba była taka: po prawej stronie ekranu jest lista pytań skróconych $('question_list'). Zajmuje ona całą wysokość ekranu. Klikniesz sobie na pytanie skrócone, a Rails przeszuka bazę i dostarczy pełną treść pytania. Treść tę umieści w kontenerze $('question_long'). Kontener ten wisi sobie spokojnie w jednym miejscu strony, a nam chodziło o to, aby pokazywał się na wysokości klikniętego pytanka na liście, i aby wszystko było pod ręką i przed oczami.
No to trzask:
<script type="text/javascript">
  function getcords(e) {
    mouseY = Event.pointerY(e);
    $('question_long').setStyle('top: ' + mouseY + 'px;');
  }
  Event.observe($('question_list'), 'click', getcords);
</script>
czary mary i działa!

Krótki opis:

Linijka 4:
Element.setStyle nadaje styl CSS wybranemu elementowi na stronie. W naszym przypadku kontenerowi z wygenerowaną pełną treścią pytania. Ustawiamy mu pozycję patrząc od góry strony. Uwaga nie zapomnij mu nadać odpowiedniego pozycjonowania:
#question_long {
  position: fixed;
  right: 200px;
  width: 300px;
  /* tra ta ta, kolory, zaokrąglenia rogów itp. */
}

Linijka 6:
Obserwujemy teraz nie cały dokument, a jedynie listę z pytaniami skróconymi. Nie interesują nas też oczywiście wszystkie ruchy myszy w zakresie tej listy, ale konkretne kliknięcia.

Oczywiście można to wszystko zrobić bez Prototype, ale skoro już jest... to dlaczego nie użyć?