Search Results

Search found 5996 results on 240 pages for 'alex encore tr'.

Page 169/240 | < Previous Page | 165 166 167 168 169 170 171 172 173 174 175 176  | Next Page >

  • PureBasic 5.00 est sorti : support Cocoa et version 64 bits OS X, nouvel éditeur de fenêtres, et nombreuses fonctions 3D au menu

    La version 5.00 de PureBasic est sortie. On notera le support Cocoa et la version 64 bits pour OS X. Et un nouvel éditeur de fenêtres pour Windows, Linux et OS X. On trouve également la mise à jour des bibliothèques tierces, pas mal de bogues corrigés et bien sûr la bibliothèque 3D grandement améliorée. Voir la liste ci-dessous pour plus de détails. Cette version a nécessité une longue période de test d'après l'équipe de Fantaisie Software, qui travaille déjà sur la suivante. Les versions démos ne sont pas encore en ligne, mais cela ne saurait tarder. Pour ceux qui ont une licence, vous pouvez télécharger PureBasic 5.00 sur votre compte :

    Read the article

  • PHP : Une vulnérabilité importante a été découverte dans le CMS open source [e107]

    Les équipes de PHP Sécurity ont révélé ce Mercredi dernier une vulnérabilité importante dans le gestionnaire de contenu open source e107. Cette vulnérabilité permettrait d'exécuter du code PHP à partir du BBCODE provenant des formulaires. [IMG]http://e107.org/e107_themes/imprint/images/i_logo.png[/IMG] Saisis par l'alerte l'équipe de développement de e107 n'ont pas tardé de sortir un patch qui n'est pas encore officiel. -> Annonce de la vulnérabilité -> Annonce de l'info sur le site officiel de e107 ->

    Read the article

  • Le nouveau Windows Azure est disponible depuis ce matin, la version dévaluation de 90 jours est toujours valide

    Nouveau Windows Azure : des machines virtuelles persistantes sous Linux Du IaaS, et encore plus de technologies open-sources supportées Edit du 08/06/12 : Le nouveau Windows Azure est disponible depuis ce matin (0h15 heure de Paris) Windows Azure, la plateforme Cloud de Microsoft dédiée aux développeurs, continue sa montée en puissance. Depuis hier, plusieurs nouveaux services ont été officiellement annoncés. Parmi ceux-ci, un des plus attendus (et qui a alimenté le plus de rumeurs) est l'arrivée de machines virtuelles - persistantes ? capables de faire tourner des distributions Linux (Ubuntu, OpenSuse, CentOS, SUSE Linux Enterprise Server). Az...

    Read the article

  • Microsoft va-t-il devoir racheter Nokia pour pérenniser Windows Phone ? Le constructeur finlandais est de plus en plus dans la tourmente

    Nokia de plus en plus dans la tourmente Microsoft va-t-il devoir racheter le constructeur finlandais pour Windows Phone ? Nokia coule-t-il à pic ? Peut-être pas encore, mais le constructeur se rapproche dangereusement du point de rupture. Après avoir dévoilé de mauvais résultats prévisionnels (une perte d'exploitation de plus en plus importante qui dépassera les 3% du CA), et en dessous des attentes, l'action du groupe s'est littéralement écroulée de 18 % pour atteindre son plus bas depuis plus de 12 ans. [IMG]http://ftp-developpez.com/gordon-fowler/Nokia%20Bourse%202.png[/IMG] Conséquence de ces résultats, Nokia va fermer son usine finlandaise ? seule la R&a...

    Read the article

  • iPhoneOS 4 bêta 3 et SDK disponibles, ils corrigent les problèmes de la précédente version et intro

    iPhone OS 4 bêta 3 et SDK Apple a proposé dernièrement aux développeurs la troisième bêta de l'iPhone OS 4 (firmware et SDK). Cette nouvelle version était vraiment attendue par tous les développeurs, car la version précédente était considérée comme une véritable "catastrophe" au point que certain développeur serait retourné sur la dernière version officielle de l'OS (3.1.3). En effet, la bêta 2 était vraiment instable, lente, avec de gros problèmes dans certaine application principale, comme l'incapacité de prendre des photos, l'impossibilité de recharger son iPhone sans être obligé de redémarrer l'appareil ou encore des problèmes aux réseaux Wifi ou 3G. Cette bêta corrige donc ces problèmes, il est mainte...

    Read the article

  • Fedora 18 bêta disponible : intégration du bureau Mate, de nouveaux outils Cloud et une application d'installation remaniée

    Fedora 18 bêta disponible : intégration du bureau Mate de nouveaux outils Cloud et une application d'installation remaniée La distribution Linux Fedora 18 alias « Spherical Cow » est disponible en version bêta. La nouvelle version de l'OS soutenu par Red Hat et utilisé comme socle pour RHEL ou CentOS se distingue surtout par l'intégration de l'environnement de bureau Mate (fondé sur Gnome 2), qui permettra d'attirer de nouveaux utilisateurs qui ont du mal à s'adapter à GNOME 3 ou encore KDE 4. L'environnement de bureau Gnome passe à la version controversée 3.6, qui introduit une nouvelle interface utilisateur. L'OS met également à jour les bureaux KDE, XFCE et Sugar desktop (bure...

    Read the article

  • SAP rachète Sybase pour 4.6 milliards d'euros, quels changements pour le marché des logiciels ?

    SAP rachète Sybase pour 4.6 milliards d'euros, quels changements pour le marché des logiciels ? SAP, groupe allemand numéro un mondial des logiciels de gestion, vient de réaliser une grosse opération. Il vient en effet de racheter son concurrent américain Sybase (numéro quatre mondial des logiciels de bases de données) pour la coquette somme de 5.8 milliards de dollars (4.6 milliards d'euros). La transaction, qui n'a pas encore été effectuée et devrait être finalisée courant septembre 2010, consistera en le rachat par SAP des actions en numéraire de Sybase (65 dollars chaque, ce qui représente une prime de 44% par rapport au cours moyen de l'action sur trois mois et une prime avoisinant les 16% sur le cours de clôture de l'entrepr...

    Read the article

  • Des chercheurs dévoilent un processeur à 1000 coeurs intégrés dans une seule puce aux circuits configurables

    Des chercheurs dévoilent un processeur à 1000 coeurs Intégrés dans une seule puce aux circuits configurables Des chercheurs de l'Université de Glascow en Ecosse viennent de dévoiler une prouesse technologique. Alors que les constructeurs multiplient le nombre de coeurs dans leurs processeurs, participant à la démocratisation de la programmation parallèle, le Dr Wim Vanderbauwhede et son équipe, en collaboration avec l'Université du Massachusetts, ont tenté de pousser l'expérience encore plus loin en créant de multiples unités de calculs indépendantes au sein d'une même puce. Pour y arriver, ils ont utilisé des puces de type Field Programmable Gate Array (FPGA). Les transis...

    Read the article

  • Le risque de cyber guerre est surestimé ainsi que les effets des exploits actuels, rapportent des chercheurs anglais

    Le risque de cyber guerre est surestimé ainsi que les effets des exploits actuels, rapportent des chercheurs anglais Depuis quelques mois, on crie en tous sens à la "cyberguerre". Pourtant, d'après une étude récente, la menace serait surestimée. Rassurantes, les conclusions de cette recherche affirment que si une pandémie ou une crise économique peut créer des soucis planétaires, les cyber attaques en sont loin mais tout juste capables de créer des désordres ponctuels et localisés. De plus, le terme de "guerre numérique" serait souvent mal utilisé, et ne correspondrait pas à certaines activités pour lesquelles il est utilisé, comme l'espionnage ou l'hacktivisme, ou bien encore les accidents. les d...

    Read the article

  • JavaScript : vérifiez votre code en ligne grâce à JSLint, mise à jour majeure de l'outil open source

    Contrôler votre code JavaScript avec ce vérificateur en ligne De la même manière que CSS Lint s'est imposé dans la validation de feuilles de style CSS, JS Lint va très certainement devenir un classique. Cet outil vous permet de vérifier votre code JavaScript en ligne. Pour se faire vous disposez de toutes une séries d'options à régler, en fonction de vos besoins. L'outil est bien évidemment écrit en JavaScript ; la boucle est bouclée ! A noter que JS Lint permet également la vérification de source HTML, CSS ou encore JSON.

    Read the article

  • Croissance de 544 % pour l'Android Market sur 2010 et percée de l'iPhone en entreprise confirmée, d'après Distimo

    Croissance de 544 % pour l'Android Market Et percée de l'iPhone confirmée en entreprise sur 2010, d'après Distimo Distimo, spécialiste hollandais de l'analyse des « AppStore », vient de publier son rapport annuel sur les galeries d'applications des OS mobiles. On y apprend, sans surprise, qu'Apple et l'iPhone domine encore et toujours le marché, du haut de ses 300 000 applications. Mais l'Android Market connait, lui, une croissance nettement supérieure. En 2010 l'Apple App Store a connu une croissance de 111% de son nombre d'application, contre une progression de 544% pour la galerie d'Android (dont le catalogue compterait environ 130.000 applications, chiffre officieux).

    Read the article

  • Google Apps : fin du support d'IE8, dernière version du navigateur qui soutient Windows XP, le prochain Photoshop sera incompatible avec l'OS

    Fin du support d'IE8 pour Google Apps dernière version du navigateur qui soutient Windows XP, le prochain Photoshop sera incompatible avec l'OS Windows XP reste encore l'un des OS de la famille Windows le plus populaire. Mais, son support par les éditeurs de logiciels est de plus en plus en baisse. Google a annoncé qu'il ne prendra plus en charge le navigateur Internet Explorer 8 pour ses services Web et Cloud Google Apps. Dans un billet de blog, l'éditeur fait savoir qu'il mettra fin au support du navigateur pour Google Apps le 15 novembre prochain, soit une quinzaine de jours après la sortie grand public de Windows 8 et Internet Explorer 10. Après cette date, les ...

    Read the article

  • Kinect pourrait bientôt être compatible avec les ordinateurs tournant sous Windows, d'après un développeur de jeux coréen

    Kinect pourrait bientôt être compatible avec les ordinateurs tournant sous Windows, d'après un développeur coréen Mise à jour du 23.12.2010 par Katleen Alors que Kinect fait l'objet de nombreux détournements et est en train de devenir le joujou préféré des hackers, un développeur coréen spécialisé dans les jeux vidéos a déclaré que la technologie de Microsoft pourrait très bientôt fonctionner avec les ordinateurs équipés de Windows. Microsoft n'a pas encore officialisé la nouvelle, elle est donc à prendre avec des pincettes. Mais l'éditeur GamePrix, qui vient de sortir le RPG multi-joueurs Divine Souls sur PC, a déclaré que le jeu "supportera Kinect". Et, d'après la compagnie...

    Read the article

  • Ikoula débride sa solution de stockage en ligne : espace et trafic illimités pour concurrencer DropBox, Google Drive et Skydrive de Microsoft

    Ikoula débride sa solution de stockage en ligne Espace et trafic illimités pour concurrencer DropBox, Google Drive et Skydrive de Microsoft iKeepinCloud gagne en maturité. Le service de stockage en ligne de la société française Ikoula ? dont les datacenters sont basés à Reims ? bénéficie à présent d'un espace et de trafic illimités et de 10 Mbps en upload/download. Les documents hébergés n'ont par ailleurs pas de taille maximale imposée. Le tout pour une vingtaine d'euros par mois. L'alternative à Google Docs, SkyDrive et autres DropBox n'est certes pas encore aussi populaire que ses concurrents mais la géolocalisation des données et son ouverture sont deux arguments qui convaincra...

    Read the article

  • Apple veut tripler la condamnation infligée à Samsung pour infraction « intentionnelle » de brevets sur ses smartphones sous Android

    Le procès débuté aux États-Unis il y a bientôt un mois entre Apple et Samsung s'est terminé cette nuit. Dans cette guerre des brevets opposant les deux géants de la téléphonie, ce ne sont pas moins de 100 pages d'instructions qu'ont dû examiner les 9 jurés du tribunal fédéral de Californie. Samsung a été condamné à verser plus d'1 milliard (1 049 343 540) de dollars à Apple pour avoir violé une multitude de brevets. Le tribunal a par ailleurs jugé que certaines violations ont été réalisées volontairement et en toute connaissance de cause par Samsung. Cette décision concerne d'une part les brevets du design des appareils mais également des brevets logiciels comme le rebond au scroll, ou encore le zoom à deux doigts. Ce jugement ouvre donc la voie à Apple pour at...

    Read the article

  • MoodScope : l'outil qui détermine l'humeur d'un utilisateur de smartphone, quelle application intéressante voyez-vous à ce projet Microsoft Research ?

    MoodScope : l'outil qui peut determiner l'humeur de l'utilisateur d'un smartphone Quelle application intéressante voyez-vous à ce projet de Microsoft Research ?Google a dévoilé une API qui permet de déterminer si l'utilisateur marche, court ou fait du vélo. Microsoft, lui, travaille sur un outil qui va encore plus loin dans l'analyse du contexte. Un outil qui permet de déterminer l'humeur de l'utilisateur à l'instant T.Baptisé MoodScope, l'outil des Labos R&D de l'éditeur analyse plusieurs facteurs parmi lesquels le degré d'activité sur le téléphone, l'heure de la journée, le jour de la semaine (au bureau, en week-end, etc.) ou les appl...

    Read the article

  • Les netbooks connaissent une progression record de 71 % selon Gartner : qui a dit qu'ils étaient dép

    Mise à jour du 26/05/10 Les ventes de netbooks connaissent une progression record De + 71 % par rapport au premier trimestre 2009 : qui a dit que les PC low-costs étaient morts ? 2009 avait été une année noire mais tout de même. Selon le cabinet Gartner, les ventes de PC portables auraient progressé de plus de 40 % au premier trimestre 2010 par rapport au premier trimestre 2009 (+ 43,4 %). Le cabinet précise qu'il s'agit de la plus forte progression enregistrée depuis 8 ans. Plus impressionnant encore « les netbooks ont participé pour une part importante à la croissance, leurs ventes ont progressé de 71% par rapport à la mêm...

    Read the article

  • Comment stimuler la présence des femmes dans l'IT ? Elles ne représentent que 35% des effectifs

    Mise à jour du du 02.04.2010 par Katleen Comment stimuler la présence des femmes dans l'IT ? Elles ne représentent que 35% des effectifs Et voici de nouveau la seule femme de l'équipe news qui va, encore une fois, vous parler de la situation de la gente féminine dans les milieux informatiques professionnels. Le site de recrutement anglais IT Job Board vient de publier une étude surce sujet. En Europe, seulement un tiers des salariés en informatique sont des femmes (soit 35% des effectifs). De plus, ces dernières ne sont pas satisfaites de leur conditions de travail, dont elles pensent qu'elles pourraient être améliorées. 51 % des femmes interrogées en Angleterre c...

    Read the article

  • FTP from batch file

    - by Buzkie
    I'm trying to use a batch file to download a package off my FTP server. echo username >ftp.txt echo >>ftp.txt echo cd directory >>ftp.txt echo get filename >>ftp.txt ftp -s:ftp.txt server.com The server is set to allow anonymous logins on username but when I run the script I get an error: 331 Password required for username If there is any other useful information let me know. -Alex

    Read the article

  • how to use rsync over ftp

    - by bumperbox
    debian4 linux i have the following cmd line which works fine rsync -avr -e ssh /home/dir [email protected]:/home/ but i need to setup it up now to rsync to a remote server that only has ftp on it how do i go about that ? i looked at the rsync help but quickly got lost (i don't do this stuff very often) thanks alex

    Read the article

  • Setting udev rules in Linux Mint 13

    - by user1233963
    What I'm trying to do is set up a udev rule for my HP headphones (usb) with the aid of several tutorials out there. Created a file ( 90-local.rules ) in /etc/udev/rules.d and added the following: ACTION="add",SUBSYSTEM="usb", ATTR{vendor}=="Hewlett-Packard", RUN+="sh /home/alex/Scripts/usb.sh" The problem is nothing happens when I connect the headphones! What am I doing wrong? note: I did restart udev and the script works also, so it's not that

    Read the article

  • Using Durandal to Create Single Page Apps

    - by Stephen.Walther
    A few days ago, I gave a talk on building Single Page Apps on the Microsoft Stack. In that talk, I recommended that people use Knockout, Sammy, and RequireJS to build their presentation layer and use the ASP.NET Web API to expose data from their server. After I gave the talk, several people contacted me and suggested that I investigate a new open-source JavaScript library named Durandal. Durandal stitches together Knockout, Sammy, and RequireJS to make it easier to use these technologies together. In this blog entry, I want to provide a brief walkthrough of using Durandal to create a simple Single Page App. I am going to demonstrate how you can create a simple Movies App which contains (virtual) pages for viewing a list of movies, adding new movies, and viewing movie details. The goal of this blog entry is to give you a sense of what it is like to build apps with Durandal. Installing Durandal First things first. How do you get Durandal? The GitHub project for Durandal is located here: https://github.com/BlueSpire/Durandal The Wiki — located at the GitHub project — contains all of the current documentation for Durandal. Currently, the documentation is a little sparse, but it is enough to get you started. Instead of downloading the Durandal source from GitHub, a better option for getting started with Durandal is to install one of the Durandal NuGet packages. I built the Movies App described in this blog entry by first creating a new ASP.NET MVC 4 Web Application with the Basic Template. Next, I executed the following command from the Package Manager Console: Install-Package Durandal.StarterKit As you can see from the screenshot of the Package Manager Console above, the Durandal Starter Kit package has several dependencies including: · jQuery · Knockout · Sammy · Twitter Bootstrap The Durandal Starter Kit package includes a sample Durandal application. You can get to the Starter Kit app by navigating to the Durandal controller. Unfortunately, when I first tried to run the Starter Kit app, I got an error because the Starter Kit is hard-coded to use a particular version of jQuery which is already out of date. You can fix this issue by modifying the App_Start\DurandalBundleConfig.cs file so it is jQuery version agnostic like this: bundles.Add( new ScriptBundle("~/scripts/vendor") .Include("~/Scripts/jquery-{version}.js") .Include("~/Scripts/knockout-{version}.js") .Include("~/Scripts/sammy-{version}.js") // .Include("~/Scripts/jquery-1.9.0.min.js") // .Include("~/Scripts/knockout-2.2.1.js") // .Include("~/Scripts/sammy-0.7.4.min.js") .Include("~/Scripts/bootstrap.min.js") ); The recommendation is that you create a Durandal app in a folder off your project root named App. The App folder in the Starter Kit contains the following subfolders and files: · durandal – This folder contains the actual durandal JavaScript library. · viewmodels – This folder contains all of your application’s view models. · views – This folder contains all of your application’s views. · main.js — This file contains all of the JavaScript startup code for your app including the client-side routing configuration. · main-built.js – This file contains an optimized version of your application. You need to build this file by using the RequireJS optimizer (unfortunately, before you can run the optimizer, you must first install NodeJS). For the purpose of this blog entry, I wanted to start from scratch when building the Movies app, so I deleted all of these files and folders except for the durandal folder which contains the durandal library. Creating the ASP.NET MVC Controller and View A Durandal app is built using a single server-side ASP.NET MVC controller and ASP.NET MVC view. A Durandal app is a Single Page App. When you navigate between pages, you are not navigating to new pages on the server. Instead, you are loading new virtual pages into the one-and-only-one server-side view. For the Movies app, I created the following ASP.NET MVC Home controller: public class HomeController : Controller { public ActionResult Index() { return View(); } } There is nothing special about the Home controller – it is as basic as it gets. Next, I created the following server-side ASP.NET view. This is the one-and-only server-side view used by the Movies app: @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>Index</title> </head> <body> <div id="applicationHost"> Loading app.... </div> @Scripts.Render("~/scripts/vendor") <script type="text/javascript" src="~/App/durandal/amd/require.js" data-main="/App/main"></script> </body> </html> Notice that I set the Layout property for the view to the value null. If you neglect to do this, then the default ASP.NET MVC layout will be applied to the view and you will get the <!DOCTYPE> and opening and closing <html> tags twice. Next, notice that the view contains a DIV element with the Id applicationHost. This marks the area where virtual pages are loaded. When you navigate from page to page in a Durandal app, HTML page fragments are retrieved from the server and stuck in the applicationHost DIV element. Inside the applicationHost element, you can place any content which you want to display when a Durandal app is starting up. For example, you can create a fancy splash screen. I opted for simply displaying the text “Loading app…”: Next, notice the view above includes a call to the Scripts.Render() helper. This helper renders out all of the JavaScript files required by the Durandal library such as jQuery and Knockout. Remember to fix the App_Start\DurandalBundleConfig.cs as described above or Durandal will attempt to load an old version of jQuery and throw a JavaScript exception and stop working. Your application JavaScript code is not included in the scripts rendered by the Scripts.Render helper. Your application code is loaded dynamically by RequireJS with the help of the following SCRIPT element located at the bottom of the view: <script type="text/javascript" src="~/App/durandal/amd/require.js" data-main="/App/main"></script> The data-main attribute on the SCRIPT element causes RequireJS to load your /app/main.js JavaScript file to kick-off your Durandal app. Creating the Durandal Main.js File The Durandal Main.js JavaScript file, located in your App folder, contains all of the code required to configure the behavior of Durandal. Here’s what the Main.js file looks like in the case of the Movies app: require.config({ paths: { 'text': 'durandal/amd/text' } }); define(function (require) { var app = require('durandal/app'), viewLocator = require('durandal/viewLocator'), system = require('durandal/system'), router = require('durandal/plugins/router'); //>>excludeStart("build", true); system.debug(true); //>>excludeEnd("build"); app.start().then(function () { //Replace 'viewmodels' in the moduleId with 'views' to locate the view. //Look for partial views in a 'views' folder in the root. viewLocator.useConvention(); //configure routing router.useConvention(); router.mapNav("movies/show"); router.mapNav("movies/add"); router.mapNav("movies/details/:id"); app.adaptToDevice(); //Show the app by setting the root view model for our application with a transition. app.setRoot('viewmodels/shell', 'entrance'); }); }); There are three important things to notice about the main.js file above. First, notice that it contains a section which enables debugging which looks like this: //>>excludeStart(“build”, true); system.debug(true); //>>excludeEnd(“build”); This code enables debugging for your Durandal app which is very useful when things go wrong. When you call system.debug(true), Durandal writes out debugging information to your browser JavaScript console. For example, you can use the debugging information to diagnose issues with your client-side routes: (The funny looking //> symbols around the system.debug() call are RequireJS optimizer pragmas). The main.js file is also the place where you configure your client-side routes. In the case of the Movies app, the main.js file is used to configure routes for three page: the movies show, add, and details pages. //configure routing router.useConvention(); router.mapNav("movies/show"); router.mapNav("movies/add"); router.mapNav("movies/details/:id");   The route for movie details includes a route parameter named id. Later, we will use the id parameter to lookup and display the details for the right movie. Finally, the main.js file above contains the following line of code: //Show the app by setting the root view model for our application with a transition. app.setRoot('viewmodels/shell', 'entrance'); This line of code causes Durandal to load up a JavaScript file named shell.js and an HTML fragment named shell.html. I’ll discuss the shell in the next section. Creating the Durandal Shell You can think of the Durandal shell as the layout or master page for a Durandal app. The shell is where you put all of the content which you want to remain constant as a user navigates from virtual page to virtual page. For example, the shell is a great place to put your website logo and navigation links. The Durandal shell is composed from two parts: a JavaScript file and an HTML file. Here’s what the HTML file looks like for the Movies app: <h1>Movies App</h1> <div class="container-fluid page-host"> <!--ko compose: { model: router.activeItem, //wiring the router afterCompose: router.afterCompose, //wiring the router transition:'entrance', //use the 'entrance' transition when switching views cacheViews:true //telling composition to keep views in the dom, and reuse them (only a good idea with singleton view models) }--><!--/ko--> </div> And here is what the JavaScript file looks like: define(function (require) { var router = require('durandal/plugins/router'); return { router: router, activate: function () { return router.activate('movies/show'); } }; }); The JavaScript file contains the view model for the shell. This view model returns the Durandal router so you can access the list of configured routes from your shell. Notice that the JavaScript file includes a function named activate(). This function loads the movies/show page as the first page in the Movies app. If you want to create a different default Durandal page, then pass the name of a different age to the router.activate() method. Creating the Movies Show Page Durandal pages are created out of a view model and a view. The view model contains all of the data and view logic required for the view. The view contains all of the HTML markup for rendering the view model. Let’s start with the movies show page. The movies show page displays a list of movies. The view model for the show page looks like this: define(function (require) { var moviesRepository = require("repositories/moviesRepository"); return { movies: ko.observable(), activate: function() { this.movies(moviesRepository.listMovies()); } }; }); You create a view model by defining a new RequireJS module (see http://requirejs.org). You create a RequireJS module by placing all of your JavaScript code into an anonymous function passed to the RequireJS define() method. A RequireJS module has two parts. You retrieve all of the modules which your module requires at the top of your module. The code above depends on another RequireJS module named repositories/moviesRepository. Next, you return the implementation of your module. The code above returns a JavaScript object which contains a property named movies and a method named activate. The activate() method is a magic method which Durandal calls whenever it activates your view model. Your view model is activated whenever you navigate to a page which uses it. In the code above, the activate() method is used to get the list of movies from the movies repository and assign the list to the view model movies property. The HTML for the movies show page looks like this: <table> <thead> <tr> <th>Title</th><th>Director</th> </tr> </thead> <tbody data-bind="foreach:movies"> <tr> <td data-bind="text:title"></td> <td data-bind="text:director"></td> <td><a data-bind="attr:{href:'#/movies/details/'+id}">Details</a></td> </tr> </tbody> </table> <a href="#/movies/add">Add Movie</a> Notice that this is an HTML fragment. This fragment will be stuffed into the page-host DIV element in the shell.html file which is stuffed, in turn, into the applicationHost DIV element in the server-side MVC view. The HTML markup above contains data-bind attributes used by Knockout to display the list of movies (To learn more about Knockout, visit http://knockoutjs.com). The list of movies from the view model is displayed in an HTML table. Notice that the page includes a link to a page for adding a new movie. The link uses the following URL which starts with a hash: #/movies/add. Because the link starts with a hash, clicking the link does not cause a request back to the server. Instead, you navigate to the movies/add page virtually. Creating the Movies Add Page The movies add page also consists of a view model and view. The add page enables you to add a new movie to the movie database. Here’s the view model for the add page: define(function (require) { var app = require('durandal/app'); var router = require('durandal/plugins/router'); var moviesRepository = require("repositories/moviesRepository"); return { movieToAdd: { title: ko.observable(), director: ko.observable() }, activate: function () { this.movieToAdd.title(""); this.movieToAdd.director(""); this._movieAdded = false; }, canDeactivate: function () { if (this._movieAdded == false) { return app.showMessage('Are you sure you want to leave this page?', 'Navigate', ['Yes', 'No']); } else { return true; } }, addMovie: function () { // Add movie to db moviesRepository.addMovie(ko.toJS(this.movieToAdd)); // flag new movie this._movieAdded = true; // return to list of movies router.navigateTo("#/movies/show"); } }; }); The view model contains one property named movieToAdd which is bound to the add movie form. The view model also has the following three methods: 1. activate() – This method is called by Durandal when you navigate to the add movie page. The activate() method resets the add movie form by clearing out the movie title and director properties. 2. canDeactivate() – This method is called by Durandal when you attempt to navigate away from the add movie page. If you return false then navigation is cancelled. 3. addMovie() – This method executes when the add movie form is submitted. This code adds the new movie to the movie repository. I really like the Durandal canDeactivate() method. In the code above, I use the canDeactivate() method to show a warning to a user if they navigate away from the add movie page – either by clicking the Cancel button or by hitting the browser back button – before submitting the add movie form: The view for the add movie page looks like this: <form data-bind="submit:addMovie"> <fieldset> <legend>Add Movie</legend> <div> <label> Title: <input data-bind="value:movieToAdd.title" required /> </label> </div> <div> <label> Director: <input data-bind="value:movieToAdd.director" required /> </label> </div> <div> <input type="submit" value="Add" /> <a href="#/movies/show">Cancel</a> </div> </fieldset> </form> I am using Knockout to bind the movieToAdd property from the view model to the INPUT elements of the HTML form. Notice that the FORM element includes a data-bind attribute which invokes the addMovie() method from the view model when the HTML form is submitted. Creating the Movies Details Page You navigate to the movies details Page by clicking the Details link which appears next to each movie in the movies show page: The Details links pass the movie ids to the details page: #/movies/details/0 #/movies/details/1 #/movies/details/2 Here’s what the view model for the movies details page looks like: define(function (require) { var router = require('durandal/plugins/router'); var moviesRepository = require("repositories/moviesRepository"); return { movieToShow: { title: ko.observable(), director: ko.observable() }, activate: function (context) { // Grab movie from repository var movie = moviesRepository.getMovie(context.id); // Add to view model this.movieToShow.title(movie.title); this.movieToShow.director(movie.director); } }; }); Notice that the view model activate() method accepts a parameter named context. You can take advantage of the context parameter to retrieve route parameters such as the movie Id. In the code above, the context.id property is used to retrieve the correct movie from the movie repository and the movie is assigned to a property named movieToShow exposed by the view model. The movie details view displays the movieToShow property by taking advantage of Knockout bindings: <div> <h2 data-bind="text:movieToShow.title"></h2> directed by <span data-bind="text:movieToShow.director"></span> </div> Summary The goal of this blog entry was to walkthrough building a simple Single Page App using Durandal and to get a feel for what it is like to use this library. I really like how Durandal stitches together Knockout, Sammy, and RequireJS and establishes patterns for using these libraries to build Single Page Apps. Having a standard pattern which developers on a team can use to build new pages is super valuable. Once you get the hang of it, using Durandal to create new virtual pages is dead simple. Just define a new route, view model, and view and you are done. I also appreciate the fact that Durandal did not attempt to re-invent the wheel and that Durandal leverages existing JavaScript libraries such as Knockout, RequireJS, and Sammy. These existing libraries are powerful libraries and I have already invested a considerable amount of time in learning how to use them. Durandal makes it easier to use these libraries together without losing any of their power. Durandal has some additional interesting features which I have not had a chance to play with yet. For example, you can use the RequireJS optimizer to combine and minify all of a Durandal app’s code. Also, Durandal supports a way to create custom widgets (client-side controls) by composing widgets from a controller and view. You can download the code for the Movies app by clicking the following link (this is a Visual Studio 2012 project): Durandal Movie App

    Read the article

  • [News] S?rie d'articles sur Silverlight 4 et RIA Services de Brad Abrams

    Brad Abrams, un des co-fondateurs de .NET et de la CLR livre ici une s?rie d'articles tr?s int?ressants sur le couple Silverlight 4 et RIA Services : "I thought it would be worthwhile to highlight some of the key features of the platform and tools that make Silverlight a fantastic platform for building business applications. I?ll avoid gratuitous video and dancing hippos and focus on just the bread and butter of business applications (...)"

    Read the article

  • Developing web apps using ASP.NET MVC 3, Razor and EF Code First - Part 1

    - by shiju
    In this post, I will demonstrate web application development using ASP. NET MVC 3, Razor and EF code First. This post will also cover Dependency Injection using Unity 2.0 and generic Repository and Unit of Work for EF Code First. The following frameworks will be used for this step by step tutorial. ASP.NET MVC 3 EF Code First CTP 5 Unity 2.0 Define Domain Model Let’s create domain model for our simple web application Category class public class Category {     public int CategoryId { get; set; }     [Required(ErrorMessage = "Name Required")]     [StringLength(25, ErrorMessage = "Must be less than 25 characters")]     public string Name { get; set;}     public string Description { get; set; }     public virtual ICollection<Expense> Expenses { get; set; } }   Expense class public class Expense {             public int ExpenseId { get; set; }            public string  Transaction { get; set; }     public DateTime Date { get; set; }     public double Amount { get; set; }     public int CategoryId { get; set; }     public virtual Category Category { get; set; } } We have two domain entities - Category and Expense. A single category contains a list of expense transactions and every expense transaction should have a Category. In this post, we will be focusing on CRUD operations for the entity Category and will be working on the Expense entity with a View Model object in the later post. And the source code for this application will be refactored over time. The above entities are very simple POCO (Plain Old CLR Object) classes and the entity Category is decorated with validation attributes in the System.ComponentModel.DataAnnotations namespace. Now we want to use these entities for defining model objects for the Entity Framework 4. Using the Code First approach of Entity Framework, we can first define the entities by simply writing POCO classes without any coupling with any API or database library. This approach lets you focus on domain model which will enable Domain-Driven Development for applications. EF code first support is currently enabled with a separate API that is runs on top of the Entity Framework 4. EF Code First is reached CTP 5 when I am writing this article. Creating Context Class for Entity Framework We have created our domain model and let’s create a class in order to working with Entity Framework Code First. For this, you have to download EF Code First CTP 5 and add reference to the assembly EntitFramework.dll. You can also use NuGet to download add reference to EEF Code First.    public class MyFinanceContext : DbContext {     public MyFinanceContext() : base("MyFinance") { }     public DbSet<Category> Categories { get; set; }     public DbSet<Expense> Expenses { get; set; }         }   The above class MyFinanceContext is derived from DbContext that can connect your model classes to a database. The MyFinanceContext class is mapping our Category and Expense class into database tables Categories and Expenses using DbSet<TEntity> where TEntity is any POCO class. When we are running the application at first time, it will automatically create the database. EF code-first look for a connection string in web.config or app.config that has the same name as the dbcontext class. If it is not find any connection string with the convention, it will automatically create database in local SQL Express database by default and the name of the database will be same name as the dbcontext class. You can also define the name of database in constructor of the the dbcontext class. Unlike NHibernate, we don’t have to use any XML based mapping files or Fluent interface for mapping between our model and database. The model classes of Code First are working on the basis of conventions and we can also use a fluent API to refine our model. The convention for primary key is ‘Id’ or ‘<class name>Id’.  If primary key properties are detected with type ‘int’, ‘long’ or ‘short’, they will automatically registered as identity columns in the database by default. Primary key detection is not case sensitive. We can define our model classes with validation attributes in the System.ComponentModel.DataAnnotations namespace and it automatically enforces validation rules when a model object is updated or saved. Generic Repository for EF Code First We have created model classes and dbcontext class. Now we have to create generic repository pattern for data persistence with EF code first. If you don’t know about the repository pattern, checkout Martin Fowler’s article on Repository Let’s create a generic repository to working with DbContext and DbSet generics. public interface IRepository<T> where T : class     {         void Add(T entity);         void Delete(T entity);         T GetById(long Id);         IEnumerable<T> All();     }   RepositoryBasse – Generic Repository class public abstract class RepositoryBase<T> where T : class { private MyFinanceContext database; private readonly IDbSet<T> dbset; protected RepositoryBase(IDatabaseFactory databaseFactory) {     DatabaseFactory = databaseFactory;     dbset = Database.Set<T>(); }   protected IDatabaseFactory DatabaseFactory {     get; private set; }   protected MyFinanceContext Database {     get { return database ?? (database = DatabaseFactory.Get()); } } public virtual void Add(T entity) {     dbset.Add(entity);            }        public virtual void Delete(T entity) {     dbset.Remove(entity); }   public virtual T GetById(long id) {     return dbset.Find(id); }   public virtual IEnumerable<T> All() {     return dbset.ToList(); } }   DatabaseFactory class public class DatabaseFactory : Disposable, IDatabaseFactory {     private MyFinanceContext database;     public MyFinanceContext Get()     {         return database ?? (database = new MyFinanceContext());     }     protected override void DisposeCore()     {         if (database != null)             database.Dispose();     } } Unit of Work If you are new to Unit of Work pattern, checkout Fowler’s article on Unit of Work . According to Martin Fowler, the Unit of Work pattern "maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems." Let’s create a class for handling Unit of Work   public interface IUnitOfWork {     void Commit(); }   UniOfWork class public class UnitOfWork : IUnitOfWork {     private readonly IDatabaseFactory databaseFactory;     private MyFinanceContext dataContext;       public UnitOfWork(IDatabaseFactory databaseFactory)     {         this.databaseFactory = databaseFactory;     }       protected MyFinanceContext DataContext     {         get { return dataContext ?? (dataContext = databaseFactory.Get()); }     }       public void Commit()     {         DataContext.Commit();     } }   The Commit method of the UnitOfWork will call the commit method of MyFinanceContext class and it will execute the SaveChanges method of DbContext class.   Repository class for Category In this post, we will be focusing on the persistence against Category entity and will working on other entities in later post. Let’s create a repository for handling CRUD operations for Category using derive from a generic Repository RepositoryBase<T>.   public class CategoryRepository: RepositoryBase<Category>, ICategoryRepository     {     public CategoryRepository(IDatabaseFactory databaseFactory)         : base(databaseFactory)         {         }                } public interface ICategoryRepository : IRepository<Category> { } If we need additional methods than generic repository for the Category, we can define in the CategoryRepository. Dependency Injection using Unity 2.0 If you are new to Inversion of Control/ Dependency Injection or Unity, please have a look on my articles at http://weblogs.asp.net/shijuvarghese/archive/tags/IoC/default.aspx. I want to create a custom lifetime manager for Unity to store container in the current HttpContext.   public class HttpContextLifetimeManager<T> : LifetimeManager, IDisposable {     public override object GetValue()     {         return HttpContext.Current.Items[typeof(T).AssemblyQualifiedName];     }     public override void RemoveValue()     {         HttpContext.Current.Items.Remove(typeof(T).AssemblyQualifiedName);     }     public override void SetValue(object newValue)     {         HttpContext.Current.Items[typeof(T).AssemblyQualifiedName] = newValue;     }     public void Dispose()     {         RemoveValue();     } }   Let’s create controller factory for Unity in the ASP.NET MVC 3 application. public class UnityControllerFactory : DefaultControllerFactory { IUnityContainer container; public UnityControllerFactory(IUnityContainer container) {     this.container = container; } protected override IController GetControllerInstance(RequestContext reqContext, Type controllerType) {     IController controller;     if (controllerType == null)         throw new HttpException(                 404, String.Format(                     "The controller for path '{0}' could not be found" +     "or it does not implement IController.",                 reqContext.HttpContext.Request.Path));       if (!typeof(IController).IsAssignableFrom(controllerType))         throw new ArgumentException(                 string.Format(                     "Type requested is not a controller: {0}",                     controllerType.Name),                     "controllerType");     try     {         controller= container.Resolve(controllerType) as IController;     }     catch (Exception ex)     {         throw new InvalidOperationException(String.Format(                                 "Error resolving controller {0}",                                 controllerType.Name), ex);     }     return controller; }   }   Configure contract and concrete types in Unity Let’s configure our contract and concrete types in Unity for resolving our dependencies.   private void ConfigureUnity() {     //Create UnityContainer               IUnityContainer container = new UnityContainer()                 .RegisterType<IDatabaseFactory, DatabaseFactory>(new HttpContextLifetimeManager<IDatabaseFactory>())     .RegisterType<IUnitOfWork, UnitOfWork>(new HttpContextLifetimeManager<IUnitOfWork>())     .RegisterType<ICategoryRepository, CategoryRepository>(new HttpContextLifetimeManager<ICategoryRepository>());                 //Set container for Controller Factory                ControllerBuilder.Current.SetControllerFactory(             new UnityControllerFactory(container)); }   In the above ConfigureUnity method, we are registering our types onto Unity container with custom lifetime manager HttpContextLifetimeManager. Let’s call ConfigureUnity method in the Global.asax.cs for set controller factory for Unity and configuring the types with Unity.   protected void Application_Start() {     AreaRegistration.RegisterAllAreas();     RegisterGlobalFilters(GlobalFilters.Filters);     RegisterRoutes(RouteTable.Routes);     ConfigureUnity(); }   Developing web application using ASP.NET MVC 3 We have created our domain model for our web application and also have created repositories and configured dependencies with Unity container. Now we have to create controller classes and views for doing CRUD operations against the Category entity. Let’s create controller class for Category Category Controller   public class CategoryController : Controller {     private readonly ICategoryRepository categoryRepository;     private readonly IUnitOfWork unitOfWork;           public CategoryController(ICategoryRepository categoryRepository, IUnitOfWork unitOfWork)     {         this.categoryRepository = categoryRepository;         this.unitOfWork = unitOfWork;     }       public ActionResult Index()     {         var categories = categoryRepository.All();         return View(categories);     }     [HttpGet]     public ActionResult Edit(int id)     {         var category = categoryRepository.GetById(id);         return View(category);     }       [HttpPost]     public ActionResult Edit(int id, FormCollection collection)     {         var category = categoryRepository.GetById(id);         if (TryUpdateModel(category))         {             unitOfWork.Commit();             return RedirectToAction("Index");         }         else return View(category);                 }       [HttpGet]     public ActionResult Create()     {         var category = new Category();         return View(category);     }           [HttpPost]     public ActionResult Create(Category category)     {         if (!ModelState.IsValid)         {             return View("Create", category);         }                     categoryRepository.Add(category);         unitOfWork.Commit();         return RedirectToAction("Index");     }       [HttpPost]     public ActionResult Delete(int  id)     {         var category = categoryRepository.GetById(id);         categoryRepository.Delete(category);         unitOfWork.Commit();         var categories = categoryRepository.All();         return PartialView("CategoryList", categories);       }        }   Creating Views in Razor Now we are going to create views in Razor for our ASP.NET MVC 3 application.  Let’s create a partial view CategoryList.cshtml for listing category information and providing link for Edit and Delete operations. CategoryList.cshtml @using MyFinance.Helpers; @using MyFinance.Domain; @model IEnumerable<Category>      <table>         <tr>         <th>Actions</th>         <th>Name</th>          <th>Description</th>         </tr>     @foreach (var item in Model) {             <tr>             <td>                 @Html.ActionLink("Edit", "Edit",new { id = item.CategoryId })                 @Ajax.ActionLink("Delete", "Delete", new { id = item.CategoryId }, new AjaxOptions { Confirm = "Delete Expense?", HttpMethod = "Post", UpdateTargetId = "divCategoryList" })                           </td>             <td>                 @item.Name             </td>             <td>                 @item.Description             </td>         </tr>          }       </table>     <p>         @Html.ActionLink("Create New", "Create")     </p> The delete link is providing Ajax functionality using the Ajax.ActionLink. This will call an Ajax request for Delete action method in the CategoryCotroller class. In the Delete action method, it will return Partial View CategoryList after deleting the record. We are using CategoryList view for the Ajax functionality and also for Index view using for displaying list of category information. Let’s create Index view using partial view CategoryList  Index.chtml @model IEnumerable<MyFinance.Domain.Category> @{     ViewBag.Title = "Index"; }    <h2>Category List</h2>    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>    <div id="divCategoryList">               @Html.Partial("CategoryList", Model) </div>   We can call the partial views using Html.Partial helper method. Now we are going to create View pages for insert and update functionality for the Category. Both view pages are sharing common user interface for entering the category information. So I want to create an EditorTemplate for the Category information. We have to create the EditorTemplate with the same name of entity object so that we can refer it on view pages using @Html.EditorFor(model => model) . So let’s create template with name Category. Let’s create view page for insert Category information   @model MyFinance.Domain.Category   @{     ViewBag.Title = "Save"; }   <h2>Create</h2>   <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>   @using (Html.BeginForm()) {     @Html.ValidationSummary(true)     <fieldset>         <legend>Category</legend>                @Html.EditorFor(model => model)               <p>             <input type="submit" value="Create" />         </p>     </fieldset> }   <div>     @Html.ActionLink("Back to List", "Index") </div> ViewStart file In Razor views, we can add a file named _viewstart.cshtml in the views directory  and this will be shared among the all views with in the Views directory. The below code in the _viewstart.cshtml, sets the Layout page for every Views in the Views folder.      @{     Layout = "~/Views/Shared/_Layout.cshtml"; }   Source Code You can download the source code from http://efmvc.codeplex.com/ . The source will be refactored on over time.   Summary In this post, we have created a simple web application using ASP.NET MVC 3 and EF Code First. We have discussed on technologies and practices such as ASP.NET MVC 3, Razor, EF Code First, Unity 2, generic Repository and Unit of Work. In my later posts, I will modify the application and will be discussed on more things. Stay tuned to my blog  for more posts on step by step application building.

    Read the article

< Previous Page | 165 166 167 168 169 170 171 172 173 174 175 176  | Next Page >