Odnajdywanie sieci Windows (Vista, 7)

Jeśli występują problemy z wyszukiwaniem komputerów w sieci, należy upewnić się, że następujące usługi w systemie są odpowiednio skonfigurowane:

  • Klient DNS
  • Publikacja zasobów odnajdowania funkcji
  • Odnajdywanie SSDP
  • Host urządzenia UPnP

Oraz:

  • serwer
  • rozpoznawanie sieci NLA

Włączyć te usługi najszybciej jest za pomocą następujących poleceń (uruchamianych w konsoli z uprawnieniami administracyjnymi):

sc config dnscache start= demand
sc config fdrespub start= demand
sc config ssdpsrv start= demand
sc config upnphost start= demand

sc config lanmanserver start= auto
sc config nlasvc start= auto

Zamiast „demand” można dać „auto”, byle nie „disabled”.

AVR-GCC Operacje na pinach I/O w języku C

Przykłady na PORTC, pin nr 3:

Konfiguracja pinów:

  1. Cały port jako wejścia:
    DDRC = 0x00;
  2. Cały port jako wyjścia:
    DDRC = 0xFF;

 
Sterowanie wyjściami:

  1. Wyzerowanie bitu:
    PORTC &= ~_BV(3);
  2. Ustawienie bitu:
    PORTC |= _BV(3);
  3. Zmiana stanu:
    PORTC ^= _BV(3);

 
Odczyt stanu wejść:

  1. Czy na wejściu jest 1:
    bit_is_set(PINC,3)
  2. Czy na wejściu jest 0:
    bit_is_clear(PINC,3)

Walidacja adresu email, numeru pesel, numeru telefonu w Javascript i PHP

Krótkie i przydatne funkcje walidacji. Opierają się na wyrażeniach regularnych. Odmiany funkcji w Javascript i PHP są w pełni zgodne, to znaczy że dadzą taką samą odpowiedź.

UWAGA! Przygotowałem ulepszone funkcje, które dostępne są tutaj.

1.Walidacja adresu e-mail:

Kod PHP:

function validateemail($email) {
	$reg = '/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/';
	return preg_match($reg, $email);
}

Kod Javascript:

function validateemail(email) {
	var reg = '/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/';
	if(!reg.test(email))
		return false;
	else
		return true;
}

2.Walidacja numeru PESEL:

Kod PHP:

function validatepesel($pesel) {
	$reg = '/^[0-9]{11}$/';
	return preg_match($reg, $pesel);
}

Kod Javascript:

function validatepesel(pesel) {
	var reg = '/^[0-9]{11}$/';
	if(!reg.test(pesel)) 
		return false;
	else
		return true;
}

3.Walidacja numeru telefonu:

Kod PHP:

function validatetel($tel) {
	$reg = '/^[0-9\+]{8,13}$/';
	return preg_match($reg, $tel);
}

Kod Javascript:

function validatetel(tel) {
	var reg = '/^[0-9\+]{8,13}$/';
	if(!reg.test(tel)) 
		return false;
	else
		return true;
}

Dlaczego nie polecam zasilaczy firmy Take Me

Zasilacze Take Me cieszą się słusznie złą opinią (porównałbym ją nawet do opinii o zasilaczach firmy Codegen), natomiast niestety cieszą się również dużą popularnością. Wynika to z faktu montowania najgorszej jakości podzespołów do komputerów supermarketowych, gdzie najważniejsze są jedynie liczby (cena oraz ilość rdzeni, megaherców czy gigabajtów). Tak więc wszystkim posiadaczom wyżej wymienionych maszyn polecam udanie się do serwisu komputerowego od razu po zakończeniu gwarancji. Tam wymienią co trzeba i znacząco obniżą szanse utraty danych, a nawet pożaru.

Oto dowód w kilku zdjęciach, z jakim sprzętem mamy do czynienia:

IMG_2155

 

Tak mniej więcej wygląda fragment obudowy zasilacza Take Me 400 z pokaźnie wyglądającym filtrem w części pierwotnej.

IMG_2156

 

Filtr jest ciężki, co wzbudza zaufanie do całego zasilacza. Dobre filtrowanie – lepszy zasilacz. Jednak gdy otworzymy plastikowy korpus:

IMG_2157

Okazuje się że to jedna wielka ściema. Kabelek wchodzi, oraz od razu wychodzi.

IMG_2158

Całości masy (ok. 140g) dodaje kawałek jakiegoś stopu. Jakoś nie znalazłem nigdzie informacji, jakoby skutecznym sposobem filtrowania zakłóceń było umieszczenie obok kabla kawałka żużlu.

 

Ładowarka Li-Ion we wtyku USB

Swego czasu zakupiłem taką oto latarkę:

latarka

Jest to model BL-8606 z popularną diodą Cree XM-L. Zasilana jest z jednego akumulatorka Li-Ion 18650 – napięcie nominalne to 3,7V. Latarka spisuje się bardzo dobrze, jasność jest bez zastrzeżeń. Jakość wykonania samej latarki jest bardzo dobra. Nie można niestety tego powiedzieć o pozostałych akcesoriach. Ładowarka sieciowa uległa po pewnym czasie uszkodzeniu. Na domiar złego, dioda LED wskazująca stan naładowania po podłączeniu latarki zapalała się na zielono – sugerując pełne naładowanie akumulatora. Z tego powodu pierwsze oskarżenie padło na akumulator oraz samą latarkę. Dopiero po zmierzeniu napięcia na wtyku kabla ładowarki wyszło na jaw w czym rzecz – ładowarka była niesprawna, a dioda statusu zapalała się pod wpływem resztki energii akumulatora.

Same akumulatorki są bardzo wdzięczne. Wysokie napięcie z jednego ogniwa (~3,7V), brak efektu pamięciowego, dobry stosunek waga/pojemność to niektóre z ich zalet. Ja uzyskałem ich 6 sztuk z rozebrania baterii od laptopa Asus. W środku znajdowało się 6 sprawnych ogniw o wymiarach 18650. Niesprawny był za to kontroler, przez co laptop mimo pełnego naładowania wyłączał się po kilku minutach.

Czas więc było postarać się o nową ładowarkę. Proces poprawnego ładowania akumulatorów Li-Ion oraz Li-Poly jest dosyć skomplikowany w realizacji. Polega on, w skrócie, na dwóch etapach: ładowania stałym prądem do odpowiedniego napięcia, a następnie stałym napięciem. Ponieważ zależało mi na jak najbardziej poprawnym procesie ładowania, moją uwagę zwróciły wyspecjalizowane układy firmy MicroChip, a dokładniej kość MCP 73831:

schemat

Rysunek powyżej przedstawia typowy schemat budowy ładowarki Li-Ion, zaczerpnięty z noty katalogowej. Jak widać, jest on banalnie prosty. Rezystor podpięty pomiędzy końcówkę PROG (pin 5) a masę ustala maksymalny prąd ładowania. Dla wartości 2kΩ wynosi on 500mA i jest to maksymalny prąd dla tego układu. Chcąc zmniejszyć prąd, zwiększamy wartość opornika. W nocie katalogowej znajduje się zarówno wzór jak i wykres pomocny przy jego doborze. Dioda LED informuje o statusie pracy – zapalona oznacza ładowanie, zgaszona koniec ładowania. Napięcie ładowania zależy od wersji układu – dla użytej przeze mnie MCP73831T-2 wynosi 4,2V i jest to napięcie odpowiednie dla moich akumulatorków. Większość akumulatorów Li-Ion o napięciu nominalnym 3,7V przy pełnym naładowaniu wykazuje 4,2V, a przy pełnym rozładowaniu 2,75V. Dalsze rozładowanie prowadzić może do nieodwracalnego uszkodzenia akumulatora, natomiast przeładowanie grozi nawet wybuchem. Na szczęście układ firmy Microchip jest w pełni automatyczny. Ładowarkę najwygodniej zasilać napięciem 5V. Z tego powodu, postanowiłem zamontować ją we wtyku USB. Gniazda USB dostępne są powszechnie: komputer, zasilacze wtyczkowe, posiadam nawet takie gniazdo w moim samochodzie. Z tego względu jest to bardzo wygodne rozwiązanie. Z gniazda USB 2.0 możemy pobrać nawet 500mA prądu, a więc dokładnie tyle, ile potrzebujemy – sam układ w najgorszym przypadku pobierze 1,5mA, natomiast dioda LED tyle, jakim opornikiem ją podłączymy. Ja użyłem 1kΩ, a więc pobór prądu z USB wyniesie maksymalnie 503mA czyli z różnicą mniejszą od 1%. Dodatkowo podejrzewam, że opornik programujący ma wartość trochę większą od wspomnianych 2kΩ. W razie obaw zawsze można zastosować opornik o wyższej wartości. Można też nie montować diody LED, jednak mimo niedogodności z montażem warto mieć informację o działaniu ładowarki.

Oto zmontowany układ we wnętrzu gniazda:

ladowarka

Układ MCP73831 posiada w tym wypadku „większą” obudowę, tj. SOT-23-5. Model został zamontowany na kawałku laminatu. Ścieżki nie zostały wytrawione, a jedynie wyżłobione zostały przerwy pomiędzy nimi. Niestety aktualnie mam utrudnione możliwości wykonania termotransferu, przede wszystkim przez brak drukarki laserowej, Wszystkie użyte elementy posiadają obudowy SMD, natomiast jest możliwe polutowanie układu zwykłą lutownicą. Kondensatory pochodzą z uszkodzonej płyty głównej komputera z podstawką Intel 775; położone są w oknie podstawki. W moim przypadku mają one wartości 10μF, ale nie stanowi to żadnego problemu. Nad diodą LED w plastiku obudowy wtyku USB został wywiercony otwór (średnica ok. 1mm, wiertłem do płytek drukowanych), jako „okno”. Całość, łącznie z wspomnianym otworem została zaklejona przezroczystym klejem na gorąco.

Koszt wykonania Ładowarki można zamknąć w 10zł. Wyjdzie jeszcze taniej, gdy otrzymamy układ MCP73831 jako próbki (sample) testowe. Ja w ten sposób właśnie otrzymałem tą ładowarkę. O sample można ubiegać się na stronie Microchip. Sam układ nie jest też specjalnie drogi, bo kosztuje ok. 5zł. Tak więc za śmieszne koszty uzyskujemy wygodną oraz optymalną z punktu widzenia procesu ładowania ładowarkę.

Klucze SSH i 'server refused our key’

Rozwiązanie problemu, gdy wygenerowaliśmy parę kluczy za pomocą PuttyGen, a mimo wrzucenia klucza publicznego na serwer dalej nie chce wejść i wyświetla komunikat:
server refused our key

  1.  Przygotuj odpowiednio klucz publiczny. Oto postać z PuttyGen:
    ---- BEGIN SSH2 PUBLIC KEY ----
    Comment: "rsa-key-20121112"
    AAAAB3NzaC1yc2EAAAABJQAAAIEAxwD8/OOHou6HpF/Bk0AUufpHm9WNoSMn3tBZ
    X6awiyD236LqTgLOkwmQbec1Jmam6f/xi0VcXRyWM1jjug+GKdzooW87WYVIqA/J
    HKJ1sq6CYs2IybwAejUvsFzqKBlEaEREksQOZwS0W2OKqJeZJJ3cMmJFl606RRTJ
    aM1LiNE=
    ---- END SSH2 PUBLIC KEY ----
  2. Usuń dwie pierwsze oraz ostatnią linie:
    AAAAB3NzaC1yc2EAAAABJQAAAIEAxwD8/OOHou6HpF/Bk0AUufpHm9WNoSMn3tBZ
    X6awiyD236LqTgLOkwmQbec1Jmam6f/xi0VcXRyWM1jjug+GKdzooW87WYVIqA/J
    HKJ1sq6CYs2IybwAejUvsFzqKBlEaEREksQOZwS0W2OKqJeZJJ3cMmJFl606RRTJ
    aM1LiNE=
  3. Połącz pozostałe linie w jedną:
    AAAAB3NzaC1yc2EAAAABJQAAAIEAxwD8/OOHou6HpF/Bk0AUufpHm9WNoSMn3tBZX6awiyD236LqTgLOkwmQbec1Jmam6f/xi0VcXRyWM1jjug+GKdzooW87WYVIqA/JHKJ1sq6CYs2IybwAejUvsFzqKBlEaEREksQOZwS0W2OKqJeZJJ3cMmJFl606RRTJaM1LiNE=
  4. Dopisz na początku ssh-rsa
    ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAxwD8/OOHou6HpF/Bk0AUufpHm9WNoSMn3tBZX6awiyD236LqTgLOkwmQbec1Jmam6f/xi0VcXRyWM1jjug+GKdzooW87WYVIqA/JHKJ1sq6CYs2IybwAejUvsFzqKBlEaEREksQOZwS0W2OKqJeZJJ3cMmJFl606RRTJaM1LiNE=
  5. Umieść taką linijkę w pliku ~/.ssh/authorized_keys. Zwykle to będzie jedyna jego zawartość.
  6. Nadaj plikowi odpowiednie uprawnienia:
    chmod 600 authorized_keys
  7. Nadaj folderowi .ssh odpowiednie uprawnienia:
    cd ..
    chmod 700 .ssh
  8. To wszystko. Teraz powinno już śmigać. Testowane na popularnym hostingu D2.pl. Na hostingu Az.pl nie ma problemu, bo panel administracyjny umożliwia stworzenie kluczy, i wszystko działa od razu.

rm: cannot remove `plik’: Permission denied

Dzisiaj zdarzył mi się taki przypadek:

Dotychczas uważałem linuksowe polecenie rm zwłaszcza pod postacią

rm -rf

jako bezwzględne. Tymczasem dzisiaj taka niespodzianka:

rm: cannot remove `plik': Permission denied

Sprawdzam właściciela pliku za pomocą

ls -la

jednak wszystko się zgadza; także uprawnienia są OK. Na wszelki wypadek:

chmod 777 plik

Jednak nic nie pomaga. Co się okazuje? Do usunięcia pliku nie wystarczą same uprawnienia do niego, ale także odpowiednie do katalogu, w którym się znajduje. Ustawienie odpowiednich uprawnień dla nadrzędnego folderu załatwiło sprawę.

Natychmiastowe przekierowanie na inną stronę za pomocą PHP

Ten krótki skrypt pozwoli przekierować osobę pod inny adres:

<?php
header("Location: http://redirect-page.com/");
?>

Plik z rozszerzeniem .php zawierający ten kod zapisujemy w odpowiednim miejscu na serwerze.

Uwaga! Plik nie może zawierać innych znaków poza obszarem znaczników php.
Przekierowanie jest praktycznie natychmiastowe.

BSOD Przez wtyczkę Adobe Flash na komputerach z kartą graficzną od nVidia

Jeśli podczas grania w gry internetowe lub oglądania filmów na Youtube wyświetli się niebieski ekran, to rozwiązanie może pomóc. Problem dotyczy tylko niektórych przypadków i nie zdarza się zawsze. Jest on spowodowany jakąś tajemniczą niezgodnością pomiędzy wtyczką Adobe flash a sterownikami kart graficznych nVidia. Należy więc wyłączyć akcelerację sprzętową wtyczki:
1. Odwiedź dowolną stronę z obiektem flash, na której nie zdarzyła Ci się awaria, np. http://www.adobe.com/software/flash/about/
2. Kliknij prawym przyciskiem myszy na obiekt flash (animację), z menu wybierz „Ustawienia…”
3. Na pierwszej zakładce odznacz opcję „Włącz przyspieszanie sprzętowe”.
4. Przetestuj ustawienia.

Porada nie daje 100% pewności, ale jest ona łatwa i nieinwazyjna, poza tym nie są znane inne sposoby na ten poważny problem. Być może w kolejnych aktualizacjach wtyczki lub sterowników zostanie to naprawione. Usterka jest znana w systemie Windows XP.

Najmniejsza latarka

Prototyp wykonanej przeze mnie (virtmedia.pl) najmniejszej latarki.

Schemat:

Schemat układu "Joule Thief"

Do budowy zostały użyte elementy SMD (LED, rezystor 1kΩ, tranzystor BC847), własnoręcznie nawinięty transformator na rdzeniu ferrytowym w kształcie pierścienia oraz bateryjka zegarkowa LR41.Schemat użytej tu przetwornicy, która jest w stanie zasilić diodę LED już przy napięciu pracy rzędu 0,6V, można odnaleźć w internecie pod hasłem „Joule thief”. Cała latarka ma wymiary 8x8x10mm. Jako źródło światła można użyć LED-ów dowolnego koloru.