NetStudent.cz - články http://www.netstudent.cz/Articles/?tag=&author= Nejnovější články na webu NetStudent.cz Thu, 05 Jan 2025 00:46:23 +0100 8728fe70-6cf2-484c-b34f-1f502fa0ae7b http://tomasp.net/blog/regions-navigation.aspx Tomáš Petříček Regions and navigation bar for F# in Visual Studio The beginning of a new year may be a good time for writing one lightweight blog post that I wanted to publish for some time now. During my last internship with the F# team at MSR, I did some work on improving the F# IntelliSense in Visual Studio. This mostly involved the usual features - automatic completion, colouring and tooltips. The F# IntelliSense in Visual Studio 2010 still isn't perfect, but I think it is safe to claim that it is the best IDE experience for a typed functional programming language (aside, you can vote for some F# IDE features here and here). Sun, 01 Jan 2025 23:02:47 +0100 592ee4e9-3cb5-4044-8016-8e211e0b9561 http://smartmania.mobilmania.cz/clanky/vyvijime-pro-wp-v-xna-vstup-z-klavesnice-prace-s-daty-14-dil-1785 Tomáš Slavíček Vyvíjíme pro WP v XNA: Vstup z klávesnice, práce s daty (14. díl) V dnešním díle budeme pokračovat s popisem užitečných triků pro vývoj XNA her pro Windows Phone. Podíváme se na možnosti, jakým způsobem se dají ve hrách načítat a ukládat data. Thu, 29 Dec 2024 00:00:00 +0100 9ac6e397-b80e-4bdb-80d1-e77058f3e3de http://smartmania.mobilmania.cz/clanky/vyvijime-pro-wp-v-xna-triky-pro-vykreslovani-grafiky-13-dil-1770 Tomáš Slavíček Vyvíjíme pro WP v XNA: Triky pro vykreslování grafiky (13. díl) Ve třináctém díle o programování her pro Windows Phone v XNA vám představíme užitečné triky pro vykreslování grafiky. Thu, 22 Dec 2024 00:00:00 +0100 d2505ca0-703c-4969-8f10-d074cf48fcf9 http://dajbych.net/internet-explorer-10-se-dvema-novymi-vykreslovacimi-rezimy Václav Dajbych Internet Explorer 10 se dvěma novými vykreslovacími režimy Internet Explorer 10 přináší podporu mnoha nových užitečných funkcí. Je však stále velké množství stránek, které nepoužívají doctype. Prohlížeče je proto interpretují v quirks režimu. Protože se však jedná o staré jádro z IE5, není v něm možné používat nové technologie z HTML5. Proto IE10 nahrazuje starý quirks režim novým, který je o nové technologie doplněn. Mon, 19 Dec 2024 00:00:00 +0100 15b3d73d-74b1-4bd5-a7ea-8d393b1a9022 http://smartmania.mobilmania.cz/clanky/vyvijime-pro-wp-v-xna-zivotni-cyklus-aplikaci-a-hudba-12-dil-1754 Tomáš Slavíček Vyvíjíme pro WP v XNA: Životní cyklus aplikací a hudba (12. díl) Po krátké odmlce se vracíme k seriálu o vývoji her v XNA pro Windows Phone. V dnešním díle se podíváme na chování aplikací a přehrávání zvuků/hudby. Fri, 16 Dec 2024 00:00:00 +0100 813b1d98-8703-42bf-a4c6-c77ecd441f0a http://vbnet.cz/blog-clanek--403-herni_3d_engine_pro_windows_phone_7_bakalarka_ke_stazeni.aspx Tomáš Slavíček Herní 3D engine pro Windows Phone 7 – bakalářka ke stažení Přibližně poslední rok jsem programoval (a poslední tři týdny sepisoval) bakalářku na téma herní 3D engine pro Windows Phone 7. Včera jsem ji dokončil a odevzdal. Dávám ji k dispozici ke stažení, můžete si ji prohlédnout (zatím bez zdrojových kódů knihovny). Sat, 10 Dec 2024 00:00:00 +0100 6b4dd3c3-d3a4-4f7d-8292-a363b522c3fa http://kiwi.cz/windows8_dualboot.wmv Jiří Janata Dual boot Windows 7 & Windows 8 V tomto videu se naučíme instalovat Windows 8 na VHD včetně zprovoznění dualbootu s Windows 7. Ukážeme si také zautomatizování této činnosti pomocí skriptu v PowerShellu. Tento postup se dá aplikovat, i pokud bychom místo Windows 8 instalovali Windows 7/Server 2008 R2. Wed, 07 Dec 2024 00:00:00 +0100 e8c27b0e-a43e-4971-9fd3-6018ff1c1393 http://blog.vyvojar.cz/lukaashek/archive/2011/12/05/wpf-customcontrol-watermarkedtextbox.aspx Lukáš Kubis WPF–CustomControl–WatermarkedTextBox V dnešním článku si ukážeme jak napsat vlastní “WatermarkedTextBox”. Jedná se o klasický TextBox, který je rozšířen o vodoznak (doplňující informace co se zde má např. vyplnit). Začínáme Ve VS vytvoříme nový projekt typu “WPF Custom Control Library” (Standardně se vytvoří i nová třída CustomControl.cs, kterou můžeme smazat) a pojmenujeme ho jako “CustomControls”. Pro začátek stačí když si vytvoříme hlavní třídu “WatermarkedTextBox” [TemplatePart(Name = "PART_TextBox", Type = typeof(TextBox))] [TemplatePart(Name = "PART_TextBlock", Type = typeof(TextBlock))] publicclass WatermarkedTextBox : TextBox { static WatermarkedTextBox() { DefaultStyleKeyProperty.OverrideMetadata(typeof(WatermarkedTextBox), new FrameworkPropertyMetadata(typeof(WatermarkedTextBox))); } }WatermarkedTextBox se bude skládat z klasického TextBoxu (pojmenovaný jako PART_TextBox) a TextBlocku (PART_TextBlock) sloužící pro zobrazení vodoznaku. Pomocí metody OverrideMetada, kterou voláme v konstruktoru řekneme, že chceme využít styl definovaný v souboru Generic.xaml <StyleTargetType="local:WatermarkedTextBox"><SetterProperty="Template"><Setter.Value><ControlTemplateTargetType="local:WatermarkedTextBox"><Grid><TextBoxx:Name="PART_TextBox"/><TextBlockx:Name="PART_TextBlock"/></Grid></ControlTemplate></Setter.Value></Setter></Style>Aby jsme si mohli tento hrubý základ otestovat, vytvoříme novou WPF aplikaci, přidáme referenci na knihovnu CustomControls a vložíme WatermarkedTextBox do hlavního okna MainWindow <Windowxmlns:my="clr-namespace:CustomControls;assembly=CustomControls"x:Class="CustomControls.Demo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow"Height="350"Width="525"><Grid><my:WatermarkedTextBoxHeight="50"Margin="10"/></Grid></Window>Po spuštění aplikace se nám zobrazí náš control, ale žádný vodoznak není vidět a navíc nejde do něho ani psát. Pojďme tedy přidat základní funkcionalitu. Základní funkcionalita Pro vytvoření základní funkcionality budeme potřebovat následující vlastnosti: Watermark – text, který se zobrazí jako vodoznak WatermarkForeground – barva vodoznaku WatermarkStyle – styl vodoznaku publicstaticreadonly DependencyProperty WatermarkProperty = DependencyProperty.Register( "Watermark", typeof(string), typeof(WatermarkedTextBox), new PropertyMetadata("Zadejte text...")); publicstaticreadonly DependencyProperty WatermarkStyleProperty = DependencyProperty.Register( "WatermarkStyle", typeof(Style), typeof(WatermarkedTextBox)); publicstaticreadonly DependencyProperty WatermarkForegroundProperty = DependencyProperty.Register( "WatermarkForeground", typeof(Brush), typeof(WatermarkedTextBox), new PropertyMetadata(new SolidColorBrush(Color.FromArgb(255, 134, 134, 134)))); [Description("Vrati nebo nastavi vodoznak")] publicstring Watermark { get { return (string)GetValue(WatermarkProperty); } set { SetValue(WatermarkProperty, value); } } [Description("Vrati nebo nastavi styl vodoznaku")] public Style WatermarkStyle { get { return (Style)GetValue(WatermarkStyleProperty); } set { SetValue(WatermarkStyleProperty, value); } } [Description("Vrati nebo nastavi barvu vodoznaku")] public Brush WatermarkForeground { get { return (Brush)GetValue(WatermarkForegroundProperty); } set { SetValue(WatermarkForegroundProperty, value); } }Všechny potřebné vlastnosti jsou definovány jako jednoduché Dependency property a není potřeba provádět v kódu na pozadí nějaké další věci. O vše ostatní se postaráme přímo v XAMLu. Nejdříve rozšíříme TextBlock, který se bude starat o zobrazení vodoznaku: <TextBlock x:Name="PART_TextBlock" Style="{TemplateBinding WatermarkStyle}" Foreground="{TemplateBinding WatermarkForeground}" Text="{TemplateBinding Watermark}"/>Nyní umí náš TextBlock zobrazit defaultní vodoznak (můžete si to vyzkoušet spuštěním aplikace). Problém je stále v tom, že do TextBoxu nelze psát. Tento problém vyřešíme nastavením vlastnosti IsHitTestVisible na false u elementu TextBlock. Další problém nám spočívá vtom, že když začneme psát do TextBoxu, vodoznak nezmizí, ale je stále vidět což nepůsobí dobře. U tohoto řešení využijeme triggery, kterými definujeme chování vodoznaku: Pokud je hodnota Textu - null zobraz vodoznak Pokud je hodnota Textu prázdný řetězec – zobraz vodoznak Pokud je hodnota Textu nějaký řetězec – schovej vodoznak <ControlTemplate.Triggers><DataTriggerBinding="{Binding Path=Text, ElementName=PART_TextBox}"Value="{x:Null}"><SetterTargetName="PART_TextBlock"Property="Visibility"Value="Visible"/></DataTrigger><DataTriggerBinding="{Binding Path=Text.Length, ElementName=PART_TextBox}"Value="0"><SetterTargetName="PART_TextBlock"Property="Visibility"Value="Visible"/></DataTrigger></ControlTemplate.Triggers>Na závěr ještě upravíme chování tabelátoru nastavením vlastnosti IsTabStop celému WatermarkedTextBoxu na False a vnitřímu TextBoxu na true. na závěr ještě kompletní souhrn: WatermarkedTextBox: namespace CustomControls { using System.Windows.Media; using System.Windows; using System.Windows.Controls; using System.ComponentModel; [TemplatePart(Name = "PART_TextBox", Type = typeof(TextBox))] [TemplatePart(Name = "PART_TextBlock", Type = typeof(TextBlock))] publicclass WatermarkedTextBox : TextBox { publicstaticreadonly DependencyProperty WatermarkProperty = DependencyProperty.Register( "Watermark", typeof(string), typeof(WatermarkedTextBox), new PropertyMetadata("Zadejte text...")); publicstaticreadonly DependencyProperty WatermarkStyleProperty = DependencyProperty.Register( "WatermarkStyle", typeof(Style), typeof(WatermarkedTextBox)); publicstaticreadonly DependencyProperty WatermarkForegroundProperty = DependencyProperty.Register( "WatermarkForeground", typeof(Brush), typeof(WatermarkedTextBox), new PropertyMetadata(new SolidColorBrush(Color.FromArgb(255, 134, 134, 134)))); static WatermarkedTextBox() { DefaultStyleKeyProperty.OverrideMetadata(typeof(WatermarkedTextBox), new FrameworkPropertyMetadata(typeof(WatermarkedTextBox))); } [Description("Vrati nebo nastavi vodoznak")] publicstring Watermark { get { return (string)GetValue(WatermarkProperty); } set { SetValue(WatermarkProperty, value); } } [Description("Vrati nebo nastavi styl vodoznaku")] public Style WatermarkStyle { get { return (Style)GetValue(WatermarkStyleProperty); } set { SetValue(WatermarkStyleProperty, value); } } [Description("Vrati nebo nastavi barvu vodoznaku")] public Brush WatermarkForeground { get { return (Brush)GetValue(WatermarkForegroundProperty); } set { SetValue(WatermarkForegroundProperty, value); } } } }Generic.xaml: <ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:CustomControls"><StyleTargetType="local:WatermarkedTextBox"><SetterProperty="IsTabStop"Value="False"/><SetterProperty="Template"><Setter.Value><ControlTemplateTargetType="local:WatermarkedTextBox"><Grid><TextBoxx:Name="PART_TextBox"IsTabStop="True"/><TextBlockx:Name="PART_TextBlock"Style="{TemplateBinding WatermarkStyle}"Foreground="{TemplateBinding WatermarkForeground}"Text="{TemplateBinding Watermark}"IsHitTestVisible="False"Visibility="Hidden"/></Grid><ControlTemplate.Triggers><DataTriggerBinding="{Binding Path=Text, ElementName=PART_TextBox}"Value="{x:Null}"><SetterTargetName="PART_TextBlock"Property="Visibility"Value="Visible"/></DataTrigger><DataTriggerBinding="{Binding Path=Text.Length, ElementName=PART_TextBox}"Value="0"><SetterTargetName="PART_TextBlock"Property="Visibility"Value="Visible"/></DataTrigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style></ResourceDictionary>MainWindow.xaml: <Windowxmlns:my="clr-namespace:CustomControls;assembly=CustomControls"x:Class="CustomControls.Demo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow"Height="350"Width="525"><Grid><Grid.Resources><Stylex:Key="watermarkStyle"TargetType="{x:Type my:WatermarkedTextBox}"><SetterProperty="WatermarkForeground"Value="#FF868686"/><SetterProperty="WatermarkStyle"><Setter.Value><StyleTargetType="TextBlock"><SetterProperty="HorizontalAlignment"Value="Left"/><SetterProperty="Margin"Value="10,0,0,0"/><SetterProperty="VerticalAlignment"Value="Center"/><SetterProperty="FontStyle"Value="Italic"/><SetterProperty="TextWrapping"Value="NoWrap"/></Style></Setter.Value></Setter></Style></Grid.Resources><my:WatermarkedTextBoxx:Name="wtxt1"Height="50"Margin="10"/><my:WatermarkedTextBoxx:Name="wtxt2"Height="50"Margin="8,186,12,75"Watermark="Vyplnte pozadovane udaje"Style="{StaticResource watermarkStyle}"/></Grid></Window>Implementace vlastního WatermarkedTextBoxu byla vcelku jednoduchá a výsledný projekt si můžete stáhnout na adrese href="/"skydrive.live.com/redir.aspx?cid=35f7223b2eb524fd&resid=35F7223B2EB524FD!314&parid=35F7223B2EB524FD!313 Lukáš Přidej dolinkuj.cz! | jagg.cz! | del.icio.us! | digg it! | reddit! | kick it! | live it! | email it! Mon, 05 Dec 2024 19:40:00 +0100 be0cf2aa-ef9a-4e17-b71c-5e3232c53d1f http://dajbych.net/jak-vytvaret-doplnky-pro-internet-explorer-dil-2 Václav Dajbych Jak vytvářet doplňky pro Internet Explorer, díl 2 V pokračování článku o vytváření doplňků pro IE si ukážeme, jak přistupovat ke cookies prohlížeče a nenutit uživatele přihlašovat se zvlášť na webové stránky a zvlášť do doplňku prohlížeče. Déle jak lze posílat HTTP požadavky, odesílat data na server a přijímat odpovědi, a to asynchronně bez blokování vláken. A také jak lze manipulovat s obsahem webové stránky, která je v prohlížeči zrovna otevřená, pomocí API jádra IE. Mon, 05 Dec 2024 00:00:00 +0100 8f57c73e-4c5d-4de3-9f9b-7da8459cb237 http://dajbych.net/jak-vytvaret-doplnky-pro-internet-explorer-dil-1 Václav Dajbych Jak vytvářet doplňky pro Internet Explorer, díl 1 Internet Explorer lze rozšířit mnoha způsoby. Je možné přidávat položky do nabídek, vytvářet vlastní panely, samostatná tlačítka na panel příkazů nebo vytvořit akcelerátor. Protože se doplňky, až na akcelerátory, programují v C++, ukážeme si, jak si práci pomocí .NET knihoven zjednodušit. Využijeme přitom rozšíření CLI jazyka C++, které dokáže zpřístupnit celý .NET. Část doplňku tedy může být napsána v jazyce C#. Mon, 05 Dec 2024 00:00:00 +0100 47a74903-2b52-47f3-870c-a6549da96187 http://tomasp.net/blog/fsharp-generic-numeric.aspx Tomáš Petříček F# Math (IV.) - Writing generic numeric code Generic numeric code is some calculation that can be used for working with multiple different numeric types including types such as int, decimal and float or even our own numeric types (such as the type for clock arithmetic from the previous article of the series). Generic numeric code differs from ordinary generic F# code such as the 'a list type or List.map function, because numeric code uses numeric operators such as + or >= that are defined differently for each numeric type. When writing simple generic code that has some type parameter 'T, we don’t know anything about the type parameter and there is no way to restrict it to a numeric type that provides all the operators that we may need to use in our code. This is a limitation of the .NET runtime and F# provides two ways for overcoming it. Static member constraints can be used to write generic code where the actual numeric operations are resolved at compile-time (and a generic function is specialized for all required numeric types). This approach makes resulting code very efficient and is generally very easy to use when writing a function such as List.sum. Global numeric associations (available in F# PowerPack) give us a way to obtain an interface implementing required numeric operations dynamically at runtime. This approach has some runtime overhead, but can be used for complex numeric types (such as Matrix<'T>). Combination of both techniques can be used to implement complex numeric type that is generic over the contained numeric values and has only a minimal runtime overhead. Static member constraints are a unique feature of F# that is not available in other .NET languages, so if you're interested in writing numeric code for .NET, this may be a good reason for choosing F#. In C# or Visual Basic, you would be limited to the second option (which can be implemented in C#). In dynamic languages (like IronPython), everything is dynamic, so numeric computations can work with any numeric type, but will be significantly less efficient. In the rest of the article, we look at the three options summarized above. This article is a part of a series that covers some F# and F# PowerPack features for numerical computing. Other articles in this series discuss matrices, defining custom numeric types and writing generic code. For links to other parts, see F# Math - Overview of F# PowerPack. Sun, 27 Nov 2024 17:19:32 +0100 d02ab000-c349-48d8-a6b8-c281fbb3eca7 http://tomasp.net/blog/fsharp-custom-numeric.aspx Tomáš Petříček F# Math (III.) - Defining numeric types In this article, we define an F# numeric type for calculating in the modular arithmetic (also called clock arithmetic) [1]. Modular arithmetic is used for calculations where we want to keep a value within a specified range by counting in cycles. For example, a maximal value on clock is 12 hours. When we add 11 hours and 3 hours, the value overflows and the result is 2 hours. Aside from clocks, this numeric system is also essential in cryptography or, for example, in music. This tutorial shows several techniques that are essential when defining any new numeric type in F#. Most importantly, you’ll learn how to: Define a numeric type with overloaded operators Define a numeric literal for constructing numbers of our new type Enable calculating with our type in F# lists and matrices Hide implementation details of a numeric type We define type IntegerZ5 that implements modular arithmetic with modulus 5, meaning that valid values are in the range from 0 to 4 and we equip the type with operations such as addition and multiplication. When an operation produces a value that would be outside of the range, we adjust it by adding or subtracting the modulus (in our case 5). Here are some examples of calculations that we’ll be able to write: 2 + 1 = 3 (mod 5) 4 * 2 = 3 (mod 5) List.sum [ 0; 1; 2; 3 ] = 1 (mod 5) In the first case, we can perform the operation without any adjustments. In the second case, we multiply 4 by 2 and get 8 as the result, which is out of the required range. To correct it, we calculate the remainder after a division by 5 (written as 8 % 5 in F#), which gives us 3. Finally, the last example shows that we’d also like to be able to use our type with lists. If we add values 0, 1, 2 and 3, we get 6 which is adjusted to 1. This article is a part of a series that covers some F# and F# PowerPack features for numerical computing. Other articles in this series discuss matrices, defining custom numeric types and writing generic code. For links to other parts, see F# Math - Overview of F# PowerPack. Thu, 24 Nov 2024 19:21:35 +0100 87761abe-545a-4539-a18c-d45a65cc495f http://smartmania.mobilmania.cz/clanky/vyvijime-pro-wp-v-xna-lokalizace-a-vykresleni-pisma-11-dil-1609 Tomáš Slavíček Vyvíjíme pro WP v XNA: Lokalizace a vykreslení písma (11. díl) V dnešním díle našeho seriálu se podíváme na vykreslování textu a na to, jak hru lokalizovat do dalších jazyků. Také si ukážeme, co je nutné pro nahrání titulu do Marketplace. Sun, 13 Nov 2024 00:00:00 +0100 c97296fb-287c-4343-9a0d-9a2442ccc5a3 http://smartmania.mobilmania.cz/clanky/vyvijime-pro-wp-v-xna-animace-a-gesta-na-displeji-10-dil-1608 Tomáš Slavíček Vyvíjíme pro WP v XNA: Animace a gesta na displeji (10. díl) V novém díle našeho seriálu o programování her pro Windows Phone v XNA se podíváme na animace a dotyková gesta na displeji. Připravte si raketku a jdeme na to :-) Fri, 11 Nov 2024 00:00:00 +0100 e7bebfad-91ec-493e-96e0-b0831be99459 http://tomasp.net/blog/powerpack-matrix.aspx Tomáš Petříček F# Math (II.) - Using matrices for graph algorithms In the previous article of this series, we looked at complex and BigRational, which are two numeric types that are available in F# PowerPack. Aside from these two, the PowerPack library also contains a type matrix representing a two-dimensional matrix of floating-point values. In this article, you'll learn how to work with matrices in F#, using some of the functions provided by F# PowerPack. I'll demonstrate the library using an example that represents graphs using a, so called, adjacency matrix. If you're not familiar with this concept, you don't need to worry. It is quite simple and it will be clear once we look at an example. The matrix represents which vertices of a graph are connected with other vertices by an edge. Many of the standard operations on matrices are useful when working with adjacency matrix, so this tutorial will cover the following: Creating matrices from lists and using functions from the Matrix module Using slices to read or modify a part of matrix Performing standard operations with matrices such as transposition and matrix multiplication Using higher order functions for working with matrices This article is a part of a series that covers some F# and F# PowerPack features for numerical computing. Other articles in this series discuss matrices, defining custom numeric types and writing generic code. For links to other parts, see F# Math - Overview of F# PowerPack. Wed, 09 Nov 2024 01:46:12 +0100 e11c8ca7-ea58-4ce6-8808-5b3f968341b4 http://smartmania.mobilmania.cz/clanky/vyvijime-pro-wp-v-xna-ovladani-pohybovym-senzorem-9-dil-1586 Tomáš Slavíček Vyvíjíme pro WP v XNA: Ovládání pohybovým senzorem (9. díl) V devátém díle našeho seriálu o programování her v XNA se podíváme na to, jak využít ovládání pohybovým senzorem/gyroskopem. Sun, 06 Nov 2024 00:00:00 +0100 d12db1dc-c63d-4718-a40e-6a5870561836 http://tomasp.net/blog/powerpack-numeric.aspx Tomáš Petříček F# Math (I.) - Numeric types in PowerPack In this article, we'll briefly look at two numeric types that are available in F# PowerPack. The type complex represents complex numbers consisting of real and imaginary parts. Both parts are stored as a floating point numbers. The type BigRational represents rational numbers consisting of numerator and denominator of arbitrary sizes. Integers of arbitrary size are represented using BigInteger type that is available in .NET 4.0 (in the System.Numerics.dll assembly). On .NET 2.0, the BigInteger type is also a part of F# PowerPack. This article is a part of a series that covers some F# and F# PowerPack features for numerical computing. Other articles in this series discuss matrices, defining custom numeric types and writing generic code. For links to other parts, see F# Math - Overview of F# PowerPack. Wed, 02 Nov 2024 02:34:07 +0100 fd7ba88b-e7fc-49f7-b966-853ed2651575 http://tomasp.net/blog/powerpack-introduction.aspx Tomáš Petříček F# Math - Numerical computing and F# PowerPack This article is the first article of a series where I'll explain some of the F# features that are useful for numeric computing as well as some functionality from the F# PowerPack library. Most of the content was originally written for the Numerical Computing in F# chapter on MSDN (that I announced earlier), but then we decided to focus on using F# with third party libraries that provide more efficient implementation and richer set of standard numeric functionality that's needed when implementing machine learning and probabilistic algorithms or performing statistical analysis. If you're interested in these topics, then the last section (below) gives links to the important MSDN articles. However, F# PowerPack still contains some useful functionality. It includes two additional numeric types and an implementation of matrix that integrates nicely with F#. The series also demonstrates how to use features of the F# language (and core libraries) to write numeric code elegantly. In particular, we'll use the following aspects: Overloaded operators. Any type can provide overloaded version of standard numeric operators such as +, -, * and / as well as other non-standard operators (such as .*). As a result, libraries can implement their own numeric types which are indistinguishable from built-in types such as int. Numeric literals. F# math libraries can enable using new numeric literals in the code. For example, you can write a BigRational value representing one third as 1N/3N. The N suffix used in the notation is not hardcoded in the F# language and we'll see how to define similar numeric type. Static constraints. F# supports static member constraints, which can be used for writing functions that work with any numeric type. For example, the List.sum function uses this feature. It can sum elements of any list containing numbers. These are just a few of the F# language features that are useful when writing numeric code, but there are many others. The usual F# development style using interactive tools, type safety that prevents common errors, units of measure as well the expressivity of F# make it a great tool for writing numeric code. For more information, take a look at the MSDN overview article Writing Succinct and Correct Numerical Computations with F#. Wed, 02 Nov 2024 02:30:26 +0100 8626023a-eda2-4304-bb2a-ab1a9daa9bfb http://smartmania.mobilmania.cz/clanky/vyvijime-pro-wp-v-xna-implementace-kolizi-8-dil-1560 Tomáš Slavíček Vyvíjíme pro WP v XNA: Implementace kolizí (8. díl) V předchozích dílech seriálu jsme si vykreslili pozadí, raketku a rozpohybovali jsme přilétávající bonusy. Nyní se pustíme do tvorby asteroidů, střel a implementace kolizí. Wed, 02 Nov 2024 00:00:00 +0100 7c24cb18-d567-4fdc-b442-b351eecd976a http://smartmania.mobilmania.cz/clanky/vyvijime-pro-wp-v-xna-vykresleni-vyber-a-pohyb-objektu-7-dil-1544 Tomáš Slavíček Vyvíjíme pro WP v XNA: Vykreslení, výběr a pohyb objektů (7. díl) V minulém díle jsme si vykreslili raketku za pomoci třídy Sprite. Dnes tento pomocný objekt znovu využijeme a pustíme se do vykreslování přilétávajících bonusů. Sat, 29 Oct 2024 00:00:00 +0200 58c35c60-91c3-4207-bbf9-77239a4b4332 http://smartmania.mobilmania.cz/clanky/vyzkouseli-jsme-nove-nokie-s-windows-phone-prvni-dojmy-1529 Tomáš Slavíček Vyzkoušeli jsme nové Nokie s Windows Phone (první dojmy) Dostali jsme možnost krátce vyzkoušet nově představené Nokie modelové řady Lumia (710 a 800) s operačním systémem Windows Phone 7.5 „Mango“. Přečtěte si naše první dojmy. Thu, 27 Oct 2024 00:00:00 +0200 ca3c85a9-5e49-4f59-825e-323c91c34edc http://smartmania.mobilmania.cz/clanky/vyvijime-pro-wp-v-xna-tvorba-vlastni-hry-6-dil-1528 Tomáš Slavíček Vyvíjíme pro WP v XNA: Tvorba vlastní hry (6. díl) V šestém díle našeho pravidelného seriálu o programování pro Windows Phone v XNA začneme tvořit vlastní hru. Wed, 26 Oct 2024 00:00:00 +0200 dcc83e9f-fad5-47d5-a9e5-024f7fef7ea7 http://smartmania.mobilmania.cz/clanky/vyvijime-pro-wp-v-xna-rotace-displeje-zmena-rozliseni-5-dil-1500 Tomáš Slavíček Vyvíjíme pro WP v XNA: Rotace displeje, změna rozlišení (5. díl) Pátý díl seriálu o tvorbě her v XNA vás seznámí s možnostmi rotace displeje, změny rozlišení či spuštění na celou obrazovku. Jdeme programovat! Fri, 21 Oct 2024 00:00:00 +0200 50c39541-7349-4f0c-bd8c-7c2eec70475c http://smartmania.mobilmania.cz/clanky/vyvijime-pro-windows-phone-zaklady-xna-a-prvni-projekt-4-dil-1479 Tomáš Slavíček Vyvíjíme pro Windows Phone: Základy XNA a první projekt (4. díl) Jak jsme si už řekli, hry pro Windows Phone 7 se nejčastěji vyvíjí pomocí XNA Frameworku. V dnešním díle si přiblížíme jeho hlavní principy a postupně se pustíme do programování jedné hry. Tue, 18 Oct 2024 00:00:00 +0200 fc073f93-6a65-448f-9dce-83ae2449e3c4 http://blog.vyvojar.cz/lukaashek/archive/2011/10/17/wpf-markup-extensions.aspx Lukáš Kubis WPF - Markup Extensions Markup Extensions umožňují rozšířit funkcionalitu XAMLu. WPF již obsahuje vestavěné Markup Extensions jako je např. NullExtension, StaticExtension, Binding apod. Tyto rozšíření poznáte jednoduše, vyskytují se v xamlu mezi složenými závorkami. Např. Obr. Markup Extensions (Windows Presentation Foundation Unleashed) Vytvoření vlastního rozšíření je velice jednoduché, stačí pouze podědit ze třídy MarkupExtension (namespace System.Windows.Markup) a implementovat metodu ProvideValue, která se postará o vrácení správné hodnoty. Pro ukázku možného použití se podíváme na následující jednoduché ukázky. StringToBoolExtension – převádí řetězec ano na true či false namespace BoolMarkupExtension { using System; using System.Windows.Markup; /// <summary>///Implementace vlastniho MarkupExtension. Retezec prevede na bool objekt/// </summary> [MarkupExtensionReturnType(typeof(bool))] publicclass StringToBoolExtension : MarkupExtension { publicstring Value { get; set; } /// <summary>/// Vraci objekt, ktery se nastavi jako hodnota atributu na nehoz je toto rozsireni aplikovano/// </summary>/// <param name="serviceProvider"></param>/// <returns></returns>publicoverrideobject ProvideValue(IServiceProvider serviceProvider) { bool isEnabled = false; if (string.Equals("ano", Value, StringComparison.OrdinalIgnoreCase)) isEnabled = true; return isEnabled; } } }Použití v XAMLu: <Windowx:Class="BoolMarkupExtension.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:ex="clr-namespace:BoolMarkupExtension"Title="MainWindow"Height="350"Width="525"><StackPanel><ButtonIsEnabled="{ex:StringToBool Value=ano}"Content="StringToBool"/></StackPanel></Window>Poznámka: Název třídy by měl mít suffix Extension. Není to povinné, spíše se jedná o doporučení. I když např. třída Binding tento suffix nemá! Při použití v XAMLu lze ovšem tento suffix ignorovat a použít pouze název třídy bez suffixu např. Static – i když se třída jmenuje StaticExtension CurrentTimeExtension – umožní zobrazit aktuální čas namespace BoolMarkupExtension { using System.Windows.Markup; using System.Windows; using System.Windows.Threading; using System; [MarkupExtensionReturnType(typeof(string))] publicclass CurrentTimeExtension : MarkupExtension { DispatcherTimer _timer; UIElement _uiElement; DependencyProperty _dependencyProperty; /// <summary>/// Vytvori instanci tridy <see cref="CurrentTimeExtension"/>/// </summary>public CurrentTimeExtension() { _timer = new DispatcherTimer(TimeSpan.FromSeconds(1), DispatcherPriority.Background, (sender, args) => { _uiElement.SetValue(_dependencyProperty,DateTime.Now.ToLongTimeString()); }, Dispatcher.CurrentDispatcher); } publicoverrideobject ProvideValue(System.IServiceProvider serviceProvider) { IProvideValueTarget target = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget)); _uiElement = (UIElement)target.TargetObject; _dependencyProperty = (DependencyProperty)target.TargetProperty; return DateTime.Now.ToLongTimeString(); } } }Použití v XAMLu: <Windowx:Class="BoolMarkupExtension.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:ex="clr-namespace:BoolMarkupExtension"Title="MainWindow"Height="350"Width="525"><StackPanel><TextBlockText="{ex:CurrentTime}"/></StackPanel></Window>BoolToVisibilityExtension – na základě bool hodnoty vrátí hodnotu z enumu Visibility – Visible/Hidden. Toto rozšíření je vhodné v situaci, že máme nabindovaný nějaký ViewModel na View. Do vlastnosti Path nastavím název property ve ViewModelu, která může nabývat hodnot true/false. V metodě ProvideValue jsem pak schopný z DataContextu získat tento ViewModel a vytvořit Binding mezi cílovou vlastností (Path) a DependencyProperty, která bude hodnotu zobrazovat (v našem případě Button). Využívá se zde již existující konvertor BooleanToVisibilityConverter. Pokud hodnota vlastnosti ve ViewModelu bude true, tlačítko bude zobrazené, jinak bude schované. namespace BoolMarkupExtension { using System.Windows.Controls; using System.Windows.Markup; using System.Windows; using System.Windows.Data; [MarkupExtensionReturnType(typeof(Visibility))] publicclass BoolToVisibilityExtension : MarkupExtension { privateobject _dataContext; private FrameworkElement _uiElement; publicstring Path { get; set; } publicoverrideobject ProvideValue(System.IServiceProvider serviceProvider) { IProvideValueTarget target = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget)); _uiElement = target.TargetObject as FrameworkElement; _dataContext = _uiElement.DataContext; var dp = target.TargetProperty as DependencyProperty; Binding binding = new Binding(); binding.Path = new PropertyPath(Path); binding.Source = _dataContext; binding.Mode = BindingMode.TwoWay; binding.Converter = new BooleanToVisibilityConverter(); // built-in konverter _uiElement.SetBinding(dp, binding); return _uiElement.GetValue(dp); } } }Použití v XAMLu: <Windowx:Class="BoolMarkupExtension.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:ex="clr-namespace:BoolMarkupExtension"Title="MainWindow"Height="350"Width="525"><StackPanel><CheckBoxx:Name="chb"IsChecked="{Binding Visible, Mode=TwoWay}"/><ButtonVisibility="{ex:BoolToVisibility Path=Visible}"Content="test"/></StackPanel></Window>Závěr I když dělám z WPF již nějakou dobu, byla pro mě tvorba vlastních Markup Extension docela novinkou. Třeba to bude něco nového i pro některé z Vás. Přidej dolinkuj.cz! | jagg.cz! | del.icio.us! | digg it! | reddit! | kick it! | live it! | email it! Mon, 17 Oct 2024 13:14:00 +0200 cd77a054-e70c-4d81-b3ce-9d6f7f3bc0de http://smartmania.mobilmania.cz/clanky/vyvijime-pro-windows-phone-xbox-live-hry-xna-3-dil-1467 Tomáš Slavíček Vyvíjíme pro Windows Phone: Xbox LIVE hry, XNA (3. díl) O vytváření aplikací pro Windows Phone jsme si pověděli už poměrně hodně informací. Dnes se na tuto platformu ale podíváme ještě jednou, čistě z herního pohledu. Popíšeme si například, čím se liší Xbox LIVE hry od těch běžných a také nahlédneme, pro jaké další platformy můžeme programovat stejným způsobem. Fri, 14 Oct 2024 00:00:00 +0200 850c675a-d4f1-43d6-91eb-d63b6eb5dfcf http://smartmania.mobilmania.cz/clanky/vyvijime-pro-windows-phone-specifika-platformy-marketplace-2-dil-1460 Tomáš Slavíček Vyvíjíme pro Windows Phone: Specifika platformy, Marketplace (2. díl) V prvním díle našeho seriálu jsme se seznámili s aktuální situací Windows Phone na českém trhu a prošli jsme si základní požadavky na vývoj. Tentokrát se podrobněji podíváme na jednotlivá specifika této platformy, ať už z hlediska hardware nebo software. Wed, 12 Oct 2024 00:00:00 +0200 06796bb2-9d2e-47a9-b785-605ea3fa089f http://fsx.dajbych.net/microsoft-flight.ashx Václav Dajbych Vývoj Microsoft Flight V srpnu 2010 byl oznámen záměr vydat další verzi úspěšné hry Microsoft Flight Simulator. Jak ale vývoj probíhá a proč nový simulátor ještě není? Tue, 11 Oct 2024 00:00:00 +0200 4e63bbb0-78a6-4f37-acb7-154c76361294 http://msp.bizit.cz/2011/10/windows-95-az-8-cesta-ke-start-screen/ Martin Šimeček Windows 95 až 8: cesta ke Start Screen Na blogu Building Windows 8 Mon, 10 Oct 2024 09:12:38 +0200 58d70320-d31c-4034-b36c-201e600e7ecb http://msp.bizit.cz/2011/10/prednka-jak-vydelvat-na-windows-phone-marketplace/ Martin Šimeček Přednáška: Jak vydělávat na Windows Phone Marketplace První přednáška zimního semestru se Mon, 10 Oct 2024 08:59:29 +0200