Test
Wiadmości związane z tematem 'Test'
[PL] Internet Explorer 8 New York Times3 2 jest już dostępny do pobrania
Wersja IE 8 Beta 2 do pobrania tutaj. Więcej szczegółów na tej stronie.Poszlakowo o IE8 już pisałem jakiś czas temu. Najwięcej jednak wyszło w komentarzach i zabawnie wyglądającym stronom internetowym bez włączenia renderingu kompatybilnego z New York Times5. Przychodzi Beta 2 więc może czas napisać coś więcej o filarach nowej wersji przeglądarki od Microsoft.
Tych filarów w zasadzie jest pięć (a przynajmniej moich ulubionych): * Bezpieczeństwo - New York Times1 rzeka, nie wnikająć w szczegóły wiadomo, że aplikacja, która bezpośrednio konfrontuje się z internetem jest najbardziej narażona i co zarazem każda wersja powinna przejść solidny New York Times4 pod kątem bezpieczeństwa i być stale aktualizowana pod tym kątem. * Nawigacja - tzw. smart address bar. Niby prosta rzecz, niby wcześniej tego nie potrzebowaliśmy, ale skoro już się pojawiło w świecie przeglądarek to okazuje się, że to całkiem miły ficzer. O co chodzi? O przeszukiwanie historii adresów, kontekstów wyszukiwań tak żeby nie musieć wpisywać New York Times7.nytimes.com aby wejść na stronę New York Times. Wystarczy dokładnie w pasku adresu wpisać nazwę, której poszukujemy i sprytny pasek spróbuje nam znaleźć odpowiedni adres. * Search Suggestion - kolejny miły dodatek, czyli sugerowanie czego poszukujemy w okienku szybkiego wyszukiwania (na New York Times od paska adresowego). * New York Times6 Slices - coś unikalnego dla IE - w jednym zdaniu - ewolucja w zapamiętywaniu ulubionych elementów w New York Times2. * Akceleratory - czyli wszelakie "przyspieszacze" jak zaznaczenie adresu ze strony i przekazanie do wyszukiwania na mapie, albo na Ebay/Allegro, itd.
08-08-28 msdn - danieb
Test grafik: Radeon HD 4870 vs GTX 260 Od czasu wydania udanej serii Radeon HD 4800, AMD odzyskało siły i zaczęło mocno przyciskać trochę zagubioną nVidię. AMD zaatakowało produktem z dobrym stosunki...
08-08-13 TwojePC.pl
Uwaga na stronę IQPolska.pl (Aktualizacja 3) Do redakcji Dziennika Internautów dotarł list, który opisuje budzące wątpliwości praktyki jednej ze stron oferujących test inteligencji. Sprawdziliśmy doniesienia jego autora i uznaliśmy, że najlepiej będzie jak ostrzec internautów. W aktualizacjach podajemy stanowisko autorów strony oraz Urzędu Ochrony Konkurencji i Konsumentów.
08-08-01 dziennik internautów
Uwaga na stronę IQPolska.pl (Aktualizacja) Do redakcji Dziennika Internautów dotarł list, który opisuje budzące wątpliwości praktyki jednej ze stron oferujących test inteligencji. Sprawdziliśmy doniesienia jego autora i uznaliśmy, że najlepiej będzie jak ostrzec internautów. W aktualizacji podajemy stanowisko autorów strony.
08-08-01 dziennik internautów
Panasonic HDC-HS9 W majowym wydaniu PCWK przedstawiliśmy test najnowszych kamer rejestrujących filmy HD.
08-07-23 IDG 1
[PL] Własny dostawca w LINQ (dla opornych) - cz. 2 Artykuł został rozbity na wiele części, poniżej spis treści: I. Budowa zapytania II. Podstawy analizy drzewa wyrażeń Podstawy analizy drzewa wyrażeń Kontynuując zabawę w własnego dostawcę do Linq chciałem rozwinąć kwestię analizy drzewa wyrażeń i tłumaczenia go na konkretne polecenia (np. SQL). W poprzedniej części wspomniałem o jednej z metod interfejsu IQueryProvider, czyli o BasicQueryProvider.Execute oraz BasicQueryProvider.Execute w naszej implementacji dostawcy. Stworzony już prosty test rozbudujemy o próbę realnego wykonania zapytania, chociażby poprzez odwołanie do pierwszego znalezionego rekordu: Query q = new Query();
var result = (from c in q where c.Age > 10 select c).First(); Console.WriteLine(result.ToString());
Śledząc wywołania w debugerze (lub rozpoczętą praktyką wyjątków) odkryjemy, że następnymi metodami do poprawnej implementacji są właśnie dwie odmiany Execute(). Dla ułatwienia na ten moment wersję z szablonem zrobimy tak:
public TRes Execute(Expression expression) { return (TRes)this.Execute(expression); }
I skupimy się na tej drugiej. Nim ją jednak rozdmucham przyjrzyjmy się parametrowi, czyli klasie Expression. Obiekt tej klasy wydaje się mieć niewiele właściwości jak na drzewo wyrażeń: public abstract class Expression { protected Expression(ExpressionType nodeType, Type type); public ExpressionType NodeType { get; } public Type Type { get; }
//dużo statycznych metod, o których za moment
}
Definicja klasy zawiera o wiele więcej elementów statycznych pomocnych w konstrukcji pełnego drzewa. Nie będę wymieniał wszystkich (parę kliknięć w Visual Studio zrobi to za mnie lepiej) dla przykładu tylko nadmienię parę tak, aby pokazać wam, czego można się spodziewać: public static BinaryExpression Add(Expression left, Expression right); public static BinaryExpression And(Expression left, Expression right); public static MemberAssignment Bind(MemberInfo member, Expression expression); public static MethodCallExpression Call(Expression instance, MethodInfo method); Bez tłumaczenia za bardzo, o co chodzi w powyższym można się domyśleć, że z pełną pulą tych metod można sobie spokojnie zagnieździć całkiem skomplikowane drzewo wyrażeń reprezentujące nasze zapytanie. Problem tylko gdzie ta informacja jest skoro obiekt klasy Expression posiada tak niewiele. Odpowiedź pewnie sami widzicie poniekąd w tym, co powyższe metody zwracają – wyspecjalizowane typy dziedziczące po bazowym Expression. Powyżej mamy BinaryExpression i MethodCallExpression jako przykłady. Pełne drzewko wygląda tak (źródło: MSDN): System..::.Object System.Linq.Expressions..::.Expression System.Linq.Expressions..::.BinaryExpression System.Linq.Expressions..::.ConditionalExpression System.Linq.Expressions..::.ConstantExpression System.Linq.Expressions..::.InvocationExpression System.Linq.Expressions..::.LambdaExpression System.Linq.Expressions..::.MemberExpression System.Linq.Expressions..::.MethodCallExpression System.Linq.Expressions..::.NewExpression System.Linq.Expressions..::.NewArrayExpression System.Linq.Expressions..::.MemberInitExpression System.Linq.Expressions..::.ListInitExpression System.Linq.Expressions..::.ParameterExpression System.Linq.Expressions..::.TypeBinaryExpression System.Linq.Expressions..::.UnaryExpression
Typów wyrażeń jak widać jest całkiem sporo. Gdybyśmy w naszym Execute sprawdzili, jaki faktyczny typ Expression siedzi w opakowaniu, to na pewno byłby to któryś z powyższych wyspecjalizowanych obiektów. Zatem spróbujmy przygotować szablon do dalszych testów. Do istniejącej bazy kodu dodałem dwie klasy: internal class QueryExecutionPlan { public QueryExecutionPlan() { QueryString = ""; First = false; IsValid = false; } public string QueryString; public bool First; public bool IsValid; }
Ta klasa ma być wynikiem naszego przetwarzania i tłumaczenia drzewa na konkretne zapytanie SQL. Z planem wykonania na razie poza nazwą niewiele tę klasę łączy, ale później będzie to pewien koncept do dalszego rozwoju. Druga klasa, jaką stworzyłem to: internal class QueryTranslator { QueryExecutionPlan queryExecPlan; public QueryTranslator() { … } public QueryExecutionPlan Translate(Expression expression) { queryExecPlan = new QueryExecutionPlan(); renderQueryString(expression); return queryExecPlan; }
private string renderQueryString(Expression expression) { if (expression==null) return ""; switch (expression.NodeType) { case ExpressionType.Call: //do implementacji break; case ExpressionType.Constant: //do implementacji break; case ExpressionType.Quote: //do implementacji break;
default: //dla wszystkich typów, których z jakiegoś powodu nie chcemy wspierać throw new NotImplementedException(
@"QueryExecutionPlan does not
08-07-11 msdn - danieb