- miał Bluetooth
- kosztował faktycznie $200 i nie był powiązany z żadnym operatorem
- był dostępny w Polsce ;-) (nie ma co liczyć na gwiazdkowy prezent od polskich operatorów…)
* czyt. byłbym zainteresowany ;-)
źródło: IDG
* czyt. byłbym zainteresowany ;-)
źródło: IDG
Jak podaje PCLab, istnieją spekulacje, że Windows 7 ma pojawić się w czerwcu przyszłego roku (nie doczytałem jaka wersja – RC czy RTM?). Według mnie ta wiadomość wcale nie jest zaskakująca…
Jeśli spojrzymy na historię linii Windows od wersji 95 to tylko XP przez 6 długich lat nie mogła się doczekać następcy. Ta jedna wersja na trwałe wpisała nam do głowy, że między kolejnymi głównymi wydaniami systemu musi być kilkuletnia “dziura”. Otóż wcale nie musi! Wystarczy spojrzeć na krótki “rys historyczny” (edycje klienckie):
Po drodze oczywiście były wersje NT (3.x, 4.0), serwerowe oraz dużo Service Packów. Zgadzam się z tym, że można dyskutować na temat jakości i nowości związanych z kolejnymi nowymi wersjami, jednak nie można zapomnieć, że głównym celem Microsoftu jest produkowanie oprogramowania, stąd też zaraz po wydaniu finalnej wersji jednego produktu, programiści i projektanci zabierają się za kolejny. Stąd też nie dziwię się, że ostro pracują na kolejną odsłoną Windowsa, tym bardziej, że Vista nie okazała się aż takim hitem, jaki zapowiadano.
Swoją drogą zawsze intrygowało mnie, dlaczego MS “przespał” te 6 lat nie wypuszczając żadnej znaczącej edycji. Ktoś może zna odpowiedź?
W C# istnieje możliwość utworzenia statycznego konstruktora, który jest uruchamiany przy pierwszym odwołaniu do danej klasy. Wygląda to mniej więcej tak:
public class Foo
{
static Foo()
{
System.Diagnostics.Trace.Write(“Klasa Foo zostala zaladowana”);
}
}
Zdarza się, że podobna funkcjonalność przydałaby się w PHP, który jednak tej konstrukcji nie obsługuje. Można to jednak w prosty sposób “zasymulować” poprzez odpowiednie zmodyfikowanie “magicznej” funkcji __autoload() oraz dodanie statycznej metody do klasy, która będzie udawać konstruktora (w moim przykładzie użyłem nazwy staticConstruct).
class Foo
{
public function __construct()
{
// ‘normalny’ konstruktor
}
public static function staticConstruct()
{
echo ‘Klasa Foo zostala zaladowana’;
}
}
function __autoload($className)
{
// obsluga zaladowania klasy
// …
// …
if(is_callable(array($className, ’staticConstruct’)))
{
call_user_func(array($className, ’staticConstruct’));
}
}
Jak widać sposób implementacji jest wręcz trywialny. Niemniej pojawia się dwie kwestii, które trzeba wyjaśnić: