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 >

  • Microsoft décide de bannir iTunes de Windows, suite à l'arrivée des doubles standards

    Microsoft décide de bannir iTunes de Windows, suite à l'arrivée des doubles standards Bill Gates vient d'annoncer qu'iTunes serait dorénavant banni de son système d'exploitation Windows. Voici ses déclarations officielles sur le sujet : "Au départ, nous étions très satisfaits qu'Apple ai déployé iTunes sur Windows ; nous avons gagné beaucoup d'utilisateurs grâce à cette seule application. Et puis nous avons entendu dire, par une source fiable, qu'Apple utilisait la même base de code pour iTunes Mac que pour la version Windows. Pire encore, il nous est apparu suite à une inspection plus approfondie qu'iTunes n'utilisait même pas l'API Windows ! Apple a conçu son propre système de scroll sans s'insp...

    Read the article

  • Une 13ème bêta sera-t-elle nécessaire pour Firefox 4 ? Les développeurs du navigateur laissent entendre que oui

    Une 13ème bêta sera-t-elle nécessaire pour Firefox 4 ? Les développeurs du navigateur laissent entendre que oui Mise à jour du 18.02.2011 par Katleen Malgré la sortie il y a dix jours de la onzième bêta de Firefox 4, le navigateur est toujours très en retard. Et, pour son équipe de développement, l'histoire n'est pas encore terminée. Une douzième bêta est sur les rails, et ne devrait plus tarder à arriver (dans quelques jours, les derniers bogues sont en train d'y être corrigés). Cette nouvelle mouture "est la dernière prévue", souligne la Fondation Mozilla, qui n'exclut cependant pas le recours à une treizième bêta. "Nous nous réservons ce droit, si les p...

    Read the article

  • IronRuby 1.0 et IronPython 2.6.1, les implémentations de Ruby et de Python pour .NET sont disponible

    IronRuby 1.0 et IronPython 2.6.1 Les implémentations de Ruby et de Python pour .NET sont disponibles L'univers de .NET s'enrichit encore un peu plus avec l'arrivée de IronRuby 1.0. Comme l'explique très bien Thibaut Barrère sur son blog Développez, « IronRuby, c'est tout simplement ?Ruby pour .Net? » ou plus exactement « une implémentation de Ruby s'appuyant sur le runtime .Net. Le but affiché de ce projet est de fournir une implémentation de qualité, compatible Ruby 1.8.x, tout en permettant un bon niveau d'inter-opérabilité avec les librairies .Net ». Longtemps en projet, IronRuby 1.0 vient donc de sortir officiellement aujourd'hui en deux versions différent...

    Read the article

  • RIM : profit en chute et licenciements annoncés, le constructeur du BlackBerry "brûle-t-il ?"

    RIM : profit en chute et licenciements annoncés Le constructeur du BlackBerry "brûle-t-il ?" Research in Motion, le fabriquant canadien de la gamme BlackBerry et du PlayBook, n'a pas l'air d'aller bien et concède volontiers dans son annonce des résultats du 1er trimestre 2012 que l'année à venir s'annonce compliquée. Pourtant, tout semble bien aller au premier abord : le chiffre d'affaires est en hausse de 16% et les expéditions de terminaux en hausse de 18% par rapport au même moment de l'exercice précédent. Et mieux encore, la tablette Playbook marche beaucoup mieux que prévu, avec 500.000 envois contre 336.000 prévues. Le problème, c'est que le chiffre d'affaire du pre...

    Read the article

  • LOPPSI 2 adoptée par l'Assemblée Nationale, le filtrage des sites se fera sans regard de la CNIL ou d'un juge

    LOPPSI 2 adoptée par l'Assemblée Nationale, le filtrage des sites se fera sans regard de la CNIL ou d'un juge Mise à jour du 22.12.2010 par Katleen Hier, l'Assemblée Nationale a adopté le projet de loi LOPPSI 2, dont son sulfureux article 4, dans une nouvelle version (le tout devra encore être définitivement approuvé par le Sénat en janvier pour être promulgué). L'article qui fait polémique porte sur le filtrage administratif du Net, pour "lutter contre la pédopornographie", et inquiète fortement internautes et certains acteurs du Web. Il est jugé dangereux (nous vous en parlions déjà, voir news précédentes). C'est l'OCLCTIC (Office Central de Lutte contre la Criminalité lié...

    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

  • 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

  • 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

  • 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

  • Les éditeurs de solutions de sécurité devraient-ils bloquer les malwares gouvernementaux ? F-Secure pense que oui

    Les entreprises de sécurité informatique devraient-elles bloquer les malwares gouvernementaux ? F-Secure pense que oui De récentes révélations accusent les autorités égyptiennes d'avoir acheté puis utilisé un système de surveillance allemand (FinFinder) pour espionner ses citoyens. La société qui le commercialise, Elaman, propose divers produits sous le label de "solutions de sécurité gouvernementale", comme FinSpy qui "garantit un accès total et en temps-réel ainsi que le contrôle à distance de l'ordinateur cible", ou FinFly, un "proxy infectieux utilisé pour propager des malwares intrusifs". Des faits graves qui, bien que non encore confirmés, ont fait bondir la compagnie spécialisée en sécurité info...

    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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • Adaptive ADF/WebCenter template for the iPad

    - by Maiko Rocha
    One of my WebCenter Portal customers was asking about adaptive design with ADF/WebCenter Portal and how they could go about creating an adaptive iPad template for their WebCenter Portal application. They were looking not only for the out-of-the-box support for mobile Safari which is certified against PS5+ (11.1.1.6) for ADF/WebCenter - but also to create a specific template to streamline their workflow on the iPad. Seems like they wanted something in the lines of Yahoo! Mail provides for the iPad - so the example I will use is shamelessly inspired by Y! Mail's iPad UI.  But first, let's quickly understand how can we bake in some adaptive goodness into ADF Faces. First thing we need to understand is, yes, there are a couple of constraints that we will need to work around, namely, the use or layout managers and skins. Please also keep in mind that I'm not and I don't pretend to be a web designer, much less an UX specialist, so feel free to leave your thoughts on the matter in the comments section. Now, back to the limitations. Layout Managers ADF Faces layout managers create an abstraction on top of the generated HTML code for a page so a developer doesn't need to be worried about how to size and dimension the UI layout (eg, af:panelStretchLayout). Although layout managers are very helpful, in this specific situation we will need to know a little bit more of how the final HTML is being rendered so we can apply the CSS class accordingly and create transition containers where the media queries will be applied - now, if you're using 11gR2 (11.1.2.2.3) there's the new component af:panelGridLayout (here and here) that will greatly improve creating responsive templates and pages because it is based on the grid/fluid systems and will generate straight out to DIVs on your final page. For now, I'm limited to PS5 and the af:panelStretchLayout component as a starting point because that's the release my customer is on. Skins You won't be able to use media queries, or use anything with "@" notation on the skin CSS file - the skin pre-processor will remove all extraneous "@" from the CSS file. The solution is to split your CSS in two separate files: a skin CSS file and plain CSS where you will add the media queries. The issue here is that you won't be able to use media queries for any faces components. We can, though, still apply the media queries for the components like af:panelGroupLayout and af:panelBorderLayout through their styleClass property to enable these components to be responsive to to the iPad orientation, by changing its dimensions, font sizes, hide/show areas, etc. Difference between responsive and adaptive design The best definition of adaptive vs responsive web design I could find is this: “Responsive web design,” as coined by Ethan Marcotte, means “fluid grids, fluid images/media & media queries.” “Adaptive web design,” as I use it, is about creating interfaces that adapt to the user’s capabilities (in terms of both form and function). To me, “adaptive web design” is just another term for “progressive enhancement” of which responsive web design can (an often should) be an integral part, but is a more holistic approach to web design in that it also takes into account varying levels of markup, CSS, JavaScript and assistive technology support. Responsive/adapative web design is much more than slapping an HTML template with CSS around your content or application. The content and application themselves are part of your web design - in other words, a responsive template is just an afterthought if it is not originating from a responsive design the involves the whole web application/s. Tips on responsive / adapative design with ADF/WebCenter Some of the tips listed below were already mentioned in multiple blog posts about ADF layout and skinning, but it is still worth remembering: a simple guideline for ADF/WebCenter apps would be to first create a high-level group of devices, for example: smartphones, tablets,  and desktop. For each of these large groups, create the basic structure to provide responsiveness: a page template, a skin, and an external CSS: pagetemplate_smartphone.jspx, smartphone_skin.css, smartphone-responsive.css pagetemplate_tablet.jspx, tablet_skin.css, tablet-responsive.css pagetemplate_desktop.jspx, desktop_skin.css, desktop-responsive.css These three assets can be changed on the fly through an user-agent check on the server side, delivering the right UI to the right device. Within each of the assets, you can make fine adjustments for each subgroup of devices with media queries - for example, smart phones with different screen dimensions and pixel density. Having these three groups and the corresponding assets per group seem to be a good compromise between trying to put everything on a single set of assets - specially considering the constraints above - and going to the other side of the spectrum to create assets per discrete device (iPhone4, iPhone5, Nexus, S3, etc.). Keep in mind that these are my rules and are not in any shape or form a best practice - this is how it fits best for the scenarios I've been working with. If you need to use HTML tags on your page, surround them with af:group to protect the DOM structure For stretchable/fluid layouts: Use non-stretching containers: panelGroupLayout, panelBorderLayout, … panelBorderLayout can be used to approximate HTML table component To avoid multiple scroll bars, do not nest scrolling PanelGroupLayout components. Consider layout="vertical" For stretchable/fluid layouts: Most stretchable ADF components also work in flowing context with dimensionsFrom="auto" To stretch a component horizontally, use styleClass="AFStretchWidth" instead of  "width:100%" Skinning Don't use CSS3 @media, @import, animations, etc. on skin css files. They will be removed. CSS3 properties within a class (box-shadow, transition, etc.) work just fine. Consider resetting some skin classes to better control their rendering: body {color: inherit;font: inherit;} af|document {-tr-inhibit: all;} af|commandLink {-tr-inhibit: all;} af|goLink {-tr-inhibit: all;} af|inputText::content {font: inherit;} Specific meta tags and CSS properties: Use  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> to avoid zooming (if you want) Use -webkit-overflow-scrolling: touch to enable native momentum scrolling within overflown areas (here) Use text-rendering: optmizeLegibility to improve readability. (here) User text-overflow: ellipsis to gracefully crop overflown text. (here) The meta-tags are included in each and every page in the metaContainer facet of af:document tag. You can also use a javascript to inject the meta-tags from the template. For the purpose of the example, I wanted to use as few workarounds as possible.   The iPad template and sample application This sample application has been built as a WebCenter Portal application, but you will also be able to reuse the template and techniques on your vanilla ADF application. Keep in mind that I'm neither a designer nor a CSS specialist, so please don't bash me too much on the messy CSS file you'll find on the application.  I've extended the provided PreferencesBean class that comes with WebCenter Portal and added code to dinamically change the template and skin on the fly.   This is the sample application in landscape orientation: This is the sample application in portrait orientation - the left side menu hides automatically based on a CSS media query: Another screenshot with a skinned popup opened: This is a sample application for you to play with - ideally you shouldn't use it as a starting point. On the left side bar you will find links rendered from a WebCenter Portal navigation model - the link triggers a full request through an af:goLink, while the light blue PPR button triggers a PPR navigation. The dark blue toolbar buttons at the top don't have any function,while the Approve and Reject buttons show a skinned popup. The search box of course doesn't have any behavior attahed to it either. There's a known issue right now with some PPR calls that are randomly generating a 403 error redirecting to the login page - I didn't have time to investigate if this is iOS6 specific or not - if you have any insights please let me know your findings. You can download the sample here.

    Read the article

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