Search Results

Search found 11629 results on 466 pages for 'cloud solutions'.

Page 74/466 | < Previous Page | 70 71 72 73 74 75 76 77 78 79 80 81  | Next Page >

  • Testing a scoped find in a Rails controller with RSpec

    - by Joseph DelCioppio
    I've got a controller called SolutionsController whose index action is different depending on the value of params[:user_id]. If its nil, then it simply displays all of the solutions on my site, but if its not nil, then it displays all of the solutions for the given user id. Here it is: def index if(params[:user_id]) @solutions = @user.solutions.find(:all) else @solutions = Solution.find(:all) end end and @user is determined like this: private def load_user if(params[:user_id ]) @user = User.find(params[:user_id]) end end I've got an Rspec test to test the index action if the user is nil: describe "GET index" do context "when user_id is nil" do it "should find all of the solutions" do Solution.should_receive(:find).with(:all).and_return(@solutions) get :index end end end however, can someone tell me how I write a similar test for the other half of my controller, when the user id isn't nil? Something like: describe "GET index" do context "when user_id isn't nil" do before(:each) do @user = Factory.create(:user) @solutions = 7.times{Factory.build(:solution, :user => @user)} @user.stub!(:solutions).and_return(@solutions) end it "should find all of the solutions owned by a user" do @user.should_receive(:solutions).and_return(@solutions) get :index, :user_id => @user.id end end end But that doesn't work. Can someone help me out? Joe

    Read the article

  • All for one and one for all…the power of partnership in higher education

    - by Student Solutions Team-Oracle
    Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} Recently, several of our Oracle student solutions team members were in Latin America at a user group conference. Not an Oracle user group—although the conference was about and for higher education customers using Oracle software—but a Higher Education User Group (HEUG) conference. So what’s the difference? First of all, the HEUG is an entirely independent organization from Oracle, incorporated as a 501(c)(3) non-profit corporation governed by a Board of Directors. As a self-governing organization, the more than 23,000 higher education members (and growing!) actively participate in a multitude of initiatives, communications and shared-learning opportunities that benefit each of them and their institutions. For example, one of these programs includes 16 active and effective Product Advisor Groups (PAGs) that interact directly with Oracle management, developers and business partners to provide input into product strategies and improvements. The HEUG also provides a variety of online tools to help its members navigate the world of Oracle applications software. There’s a lot more that this organization does, but you can go to www.heug.org yourself to learn more. We want to get back to our story! Anyway, as we were leaving the HEUG conference in Latin America, one of the guests invited to attend commented: “Do these users realize and appreciate how many people from Oracle come to support them? You have a much larger representation at these types of conferences than any other vendor. It shows the tremendous support you have for your higher education customers.” So that’s it! This is why the partnership between the HEUG and Oracle is so powerful and unique in the software industry. Two distinct, independent organizations come together focused entirely on providing the highest value and mutual benefit to each member, each organization and the larger higher education community. Through open communications and active engagement since the HEUG was formed in 1998, our partnership today is stronger than it has ever been and membership growing globally. Result? Everyone benefits. All for one and one for all—we are in this together. We’ve got a lot going on in the student solutions team and are working closely with customers and the HEUG to move ahead on continued development for PeopleSoft Campus Solutions 9.2 and a new Oracle Student Cloud. Come back here for more stories, news and information! --Oracle Student Solutions Team  

    Read the article

  • Windows Azure Evolution &ndash; Caching (Preview)

    - by Shaun
    Caching is a popular topic when we are building a high performance and high scalable system not only on top of the cloud platform but the on-premise environment as well. On March 2011 the Windows Azure AppFabric Caching had been production launched. It provides an in-memory, distributed caching service over the cloud. And now, in this June 2012 update, the cache team announce a grand new caching solution on Windows Azure, which is called Windows Azure Caching (Preview). And the original Windows Azure AppFabric Caching was renamed to Windows Azure Shared Caching.   What’s Caching (Preview) If you had been using the Shared Caching you should know that it is constructed by a bunch of cache servers. And when you want to use you should firstly create a cache account from the developer portal and specify the size you want to use, which means how much memory you can use to store your data that wanted to be cached. Then you can add, get and remove them through your code through the cache URL. The Shared Caching is a multi-tenancy system which host all cached items across all users. So you don’t know which server your data was located. This caching mode works well and can take most of the cases. But it has some problems. The first one is the performance. Since the Shared Caching is a multi-tenancy system, which means all cache operations should go through the Shared Caching gateway and then routed to the server which have the data your are looking for. Even though there are some caches in the Shared Caching system it also takes time from your cloud services to the cache service. Secondary, the Shared Caching service works as a block box to the developer. The only thing we know is my cache endpoint, and that’s all. Someone may satisfied since they don’t want to care about anything underlying. But if you need to know more and want more control that’s impossible in the Shared Caching. The last problem would be the price and cost-efficiency. You pay the bill based on how much cache you requested per month. But when we host a web role or worker role, it seldom consumes all of the memory and CPU in the virtual machine (service instance). If using Shared Caching we have to pay for the cache service while waste of some of our memory and CPU locally. Since the issues above Microsoft offered a new caching mode over to us, which is the Caching (Preview). Instead of having a separated cache service, the Caching (Preview) leverage the memory and CPU in our cloud services (web role and worker role) as the cache clusters. Hence the Caching (Preview) runs on the virtual machines which hosted or near our cloud applications. Without any gateway and routing, since it located in the same data center and same racks, it provides really high performance than the Shared Caching. The Caching (Preview) works side-by-side to our application, initialized and worked as a Windows Service running in the virtual machines invoked by the startup tasks from our roles, we could get more information and control to them. And since the Caching (Preview) utilizes the memory and CPU from our existing cloud services, so it’s free. What we need to pay is the original computing price. And the resource on each machines could be used more efficiently.   Enable Caching (Preview) It’s very simple to enable the Caching (Preview) in a cloud service. Let’s create a new windows azure cloud project from Visual Studio and added an ASP.NET Web Role. Then open the role setting and select the Caching page. This is where we enable and configure the Caching (Preview) on a role. To enable the Caching (Preview) just open the “Enable Caching (Preview Release)” check box. And then we need to specify which mode of the caching clusters we want to use. There are two kinds of caching mode, co-located and dedicate. The co-located mode means we use the memory in the instances we run our cloud services (web role or worker role). By using this mode we must specify how many percentage of the memory will be used as the cache. The default value is 30%. So make sure it will not affect the role business execution. The dedicate mode will use all memory in the virtual machine as the cache. In fact it will reserve some for operation system, azure hosting etc.. But it will try to use as much as the available memory to be the cache. As you can see, the Caching (Preview) was defined based on roles, which means all instances of this role will apply the same setting and play as a whole cache pool, and you can consume it by specifying the name of the role, which I will demonstrate later. And in a windows azure project we can have more than one role have the Caching (Preview) enabled. Then we will have more caches. For example, let’s say I have a web role and worker role. The web role I specified 30% co-located caching and the worker role I specified dedicated caching. If I have 3 instances of my web role and 2 instances of my worker role, then I will have two caches. As the figure above, cache 1 was contributed by three web role instances while cache 2 was contributed by 2 worker role instances. Then we can add items into cache 1 and retrieve it from web role code and worker role code. But the items stored in cache 1 cannot be retrieved from cache 2 since they are isolated. Back to our Visual Studio we specify 30% of co-located cache and use the local storage emulator to store the cache cluster runtime status. Then at the bottom we can specify the named caches. Now we just use the default one. Now we had enabled the Caching (Preview) in our web role settings. Next, let’s have a look on how to consume our cache.   Consume Caching (Preview) The Caching (Preview) can only be consumed by the roles in the same cloud services. As I mentioned earlier, a cache contributed by web role can be connected from a worker role if they are in the same cloud service. But you cannot consume a Caching (Preview) from other cloud services. This is different from the Shared Caching. The Shared Caching is opened to all services if it has the connection URL and authentication token. To consume the Caching (Preview) we need to add some references into our project as well as some configuration in the Web.config. NuGet makes our life easy. Right click on our web role project and select “Manage NuGet packages”, and then search the package named “WindowsAzure.Caching”. In the package list install the “Windows Azure Caching Preview”. It will download all necessary references from the NuGet repository and update our Web.config as well. Open the Web.config of our web role and find the “dataCacheClients” node. Under this node we can specify the cache clients we are going to use. For each cache client it will use the role name to identity and find the cache. Since we only have this web role with the Caching (Preview) enabled so I pasted the current role name in the configuration. Then, in the default page I will add some code to show how to use the cache. I will have a textbox on the page where user can input his or her name, then press a button to generate the email address for him/her. And in backend code I will check if this name had been added in cache. If yes I will return the email back immediately. Otherwise, I will sleep the tread for 2 seconds to simulate the latency, then add it into cache and return back to the page. 1: protected void btnGenerate_Click(object sender, EventArgs e) 2: { 3: // check if name is specified 4: var name = txtName.Text; 5: if (string.IsNullOrWhiteSpace(name)) 6: { 7: lblResult.Text = "Error. Please specify name."; 8: return; 9: } 10:  11: bool cached; 12: var sw = new Stopwatch(); 13: sw.Start(); 14:  15: // create the cache factory and cache 16: var factory = new DataCacheFactory(); 17: var cache = factory.GetDefaultCache(); 18:  19: // check if the name specified is in cache 20: var email = cache.Get(name) as string; 21: if (email != null) 22: { 23: cached = true; 24: sw.Stop(); 25: } 26: else 27: { 28: cached = false; 29: // simulate the letancy 30: Thread.Sleep(2000); 31: email = string.Format("{0}@igt.com", name); 32: // add to cache 33: cache.Add(name, email); 34: } 35:  36: sw.Stop(); 37: lblResult.Text = string.Format( 38: "Cached = {0}. Duration: {1}s. {2} => {3}", 39: cached, sw.Elapsed.TotalSeconds.ToString("0.00"), name, email); 40: } The Caching (Preview) can be used on the local emulator so we just F5. The first time I entered my name it will take about 2 seconds to get the email back to me since it was not in the cache. But if we re-enter my name it will be back at once from the cache. Since the Caching (Preview) is distributed across all instances of the role, so we can scaling-out it by scaling-out our web role. Just use 2 instances and tweak some code to show the current instance ID in the page, and have another try. Then we can see the cache can be retrieved even though it was added by another instance.   Consume Caching (Preview) Across Roles As I mentioned, the Caching (Preview) can be consumed by all other roles within the same cloud service. For example, let’s add another web role in our cloud solution and add the same code in its default page. In the Web.config we add the cache client to one enabled in the last role, by specifying its role name here. Then we start the solution locally and go to web role 1, specify the name and let it generate the email to us. Since there’s no cache for this name so it will take about 2 seconds but will save the email into cache. And then we go to web role 2 and specify the same name. Then you can see it retrieve the email saved by the web role 1 and returned back very quickly. Finally then we can upload our application to Windows Azure and test again. Make sure you had changed the cache cluster status storage account to the real azure account.   More Awesome Features As a in-memory distributed caching solution, the Caching (Preview) has some fancy features I would like to highlight here. The first one is the high availability support. This is the first time I have heard that a distributed cache support high availability. In the distributed cache world if a cache cluster was failed, the data it stored will be lost. This behavior was introduced by Memcached and is followed by almost all distributed cache productions. But Caching (Preview) provides high availability, which means you can specify if the named cache will be backup automatically. If yes then the data belongs to this named cache will be replicated on another role instance of this role. Then if one of the instance was failed the data can be retrieved from its backup instance. To enable the backup just open the Caching page in Visual Studio. In the named cache you want to enable backup, change the Backup Copies value from 0 to 1. The value of Backup Copies only for 0 and 1. “0” means no backup and no high availability while “1” means enabled high availability with backup the data into another instance. But by using the high availability feature there are something we need to make sure. Firstly the high availability does NOT means the data in cache will never be lost for any kind of failure. For example, if we have a role with cache enabled that has 10 instances, and 9 of them was failed, then most of the cached data will be lost since the primary and backup instance may failed together. But normally is will not be happened since MS guarantees that it will use the instance in the different fault domain for backup cache. Another one is that, enabling the backup means you store two copies of your data. For example if you think 100MB memory is OK for cache, but you need at least 200MB if you enabled backup. Besides the high availability, the Caching (Preview) support more features introduced in Windows Server AppFabric Caching than the Windows Azure Shared Caching. It supports local cache with notification. It also support absolute and slide window expiration types as well. And the Caching (Preview) also support the Memcached protocol as well. This means if you have an application based on Memcached, you can use Caching (Preview) without any code changes. What you need to do is to change the configuration of how you connect to the cache. Similar as the Windows Azure Shared Caching, MS also offers the out-of-box ASP.NET session provider and output cache provide on top of the Caching (Preview).   Summary Caching is very important component when we building a cloud-based application. In the June 2012 update MS provides a new cache solution named Caching (Preview). Different from the existing Windows Azure Shared Caching, Caching (Preview) runs the cache cluster within the role instances we have deployed to the cloud. It gives more control, more performance and more cost-effect. So now we have two caching solutions in Windows Azure, the Shared Caching and Caching (Preview). If you need a central cache service which can be used by many cloud services and web sites, then you have to use the Shared Caching. But if you only need a fast, near distributed cache, then you’d better use Caching (Preview).   Hope this helps, Shaun All documents and related graphics, codes are provided "AS IS" without warranty of any kind. Copyright © Shaun Ziyan Xu. This work is licensed under the Creative Commons License.

    Read the article

  • Azure WNS to Win8 - Push Notifications for Metro Apps

    - by JoshReuben
    Background The Windows Azure Toolkit for Windows 8 allows you to build a Windows Azure Cloud Service that can send Push Notifications to registered Metro apps via Windows Notification Service (WNS). Some configuration is required - you need to: Register the Metro app for Windows Live Application Management Provide Package SID & Client Secret to WNS Modify the Azure Cloud App cscfg file and the Metro app package.appxmanifest file to contain matching Metro package name, SID and client secret. The Mechanism: These notifications take the form of XAML Tile, Toast, Raw or Badge UI notifications. The core engine is provided via the WNS nuget recipe, which exposes an API for constructing payloads and posting notifications to WNS. An application receives push notifications by requesting a notification channel from WNS, which returns a channel URI that the application then registers with a cloud service. In the cloud service, A WnsAccessTokenProvider authenticates with WNS by providing its credentials, the package SID and secret key, and receives in return an access token that the provider caches and can reuse for multiple notification requests. The cloud service constructs a notification request by filling out a template class that contains the information that will be sent with the notification, including text and image references. Using the channel URI of a registered client, the cloud service can then send a notification whenever it has an update for the user. The package contains the NotificationSendUtils class for submitting notifications. The Windows Azure Toolkit for Windows 8 (WAT) provides the PNWorker sample pair of solutions - The Azure server side contains a WebRole & a WorkerRole. The WebRole allows submission of new push notifications into an Azure Queue which the WorkerRole extracts and processes. Further background resources: http://watwindows8.codeplex.com/ - Windows Azure Toolkit for Windows 8 http://watwindows8.codeplex.com/wikipage?title=Push%20Notification%20Worker%20Sample - WAT WNS sample setup http://watwindows8.codeplex.com/wikipage?title=Using%20the%20Windows%208%20Cloud%20Application%20Services%20Application – using Windows 8 with Cloud Application Services A bit of Configuration Register the Metro apps for Windows Live Application Management From the current app manifest of your metro app Publish tab, copy the Package Display Name and the Publisher From: https://manage.dev.live.com/Build/ Package name: <-- we need to change this Client secret: keep this Package Security Identifier (SID): keep this Verify the app here: https://manage.dev.live.com/Applications/Index - so this step is done "If you wish to send push notifications in your application, provide your Package Security Identifier (SID) and client secret to WNS." Provide Package SID & Client Secret to WNS http://msdn.microsoft.com/en-us/library/windows/apps/hh465407.aspx - How to authenticate with WNS https://appdev.microsoft.com/StorePortals/en-us/Account/Signup/PurchaseSubscription - register app with dashboard - need registration code or register a new account & pay $170 shekels http://msdn.microsoft.com/en-us/library/windows/apps/hh868184.aspx - Registering for a Windows Store developer account http://msdn.microsoft.com/en-us/library/windows/apps/hh868187.aspx - Picking a Microsoft account for the Windows Store The WNS Nuget Recipe The WNS Recipe is a nuget package that provides an API for authenticating against WNS, constructing payloads and posting notifications to WNS. After installing this package, a WnsRecipe assembly is added to project references. To send notifications using WNS, first register the application at the Windows Push Notifications & Live Connect portal to obtain Package Security Identifier (SID) and a secret key that your cloud service uses to authenticate with WNS. An application receives push notifications by requesting a notification channel from WNS, which returns a channel URI that the application then registers with a cloud service. In the cloud service, the WnsAccessTokenProvider authenticates with WNS by providing its credentials, the package SID and secret key, and receives in return an access token that the provider caches and can reuse for multiple notification requests. The cloud service constructs a notification request by filling out a template class that contains the information that will be sent with the notification, including text and image references.Using the channel URI of a registered client, the cloud service can then send a notification whenever it has an update for the user. var provider = new WnsAccessTokenProvider(clientId, clientSecret); var notification = new ToastNotification(provider) {     ToastType = ToastType.ToastText02,     Text = new List<string> { "blah"} }; notification.Send(channelUri); the WNS Recipe is instrumented to write trace information via a trace listener – configuratively or programmatically from Application_Start(): WnsDiagnostics.Enable(); WnsDiagnostics.TraceSource.Listeners.Add(new DiagnosticMonitorTraceListener()); WnsDiagnostics.TraceSource.Switch.Level = SourceLevels.Verbose; The WAT PNWorker Sample The Azure server side contains a WebRole & a WorkerRole. The WebRole allows submission of new push notifications into an Azure Queue which the WorkerRole extracts and processes. Overview of Push Notification Worker Sample The toolkit includes a sample application based on the same solution structure as the one created by theWindows 8 Cloud Application Services project template. The sample demonstrates how to off-load the job of sending Windows Push Notifications using a Windows Azure worker role. You can find the source code in theSamples\PNWorker folder. This folder contains a full version of the sample application showing how to use Windows Push Notifications using ASP.NET Membership as the authentication mechanism. The sample contains two different solution files: WATWindows.Azure.sln: This solution must be opened with Visual Studio 2010 and contains the projects related to the Windows Azure web and worker roles. WATWindows.Client.sln: This solution must be opened with Visual Studio 11 and contains the Windows Metro style application project. Only Visual Studio 2010 supports Windows Azure cloud projects so you currently need to use this edition to launch the server application. This will change in a future release of the Windows Azure tools when support for Visual Studio 11 is enabled. Important: Setting up the PNWorker Sample Before running the PNWorker sample, you need to register the application and configure it: 1. Register the app: To register your application, go to the Windows Live Application Management site for Metro style apps at https://manage.dev.live.com/build and sign in with your Windows Live ID. In the Windows Push Notifications & Live Connect page, enter the following information. Package Display Name PNWorker.Sample Publisher CN=127.0.0.1, O=TESTING ONLY, OU=Windows Azure DevFabric 2. 3. Once you register the application, make a note of the values shown in the portal for Client Secret,Package Name and Package SID. 4. Configure the app - double-click the SetupSample.cmd file located inside the Samples\PNWorker folder to launch a tool that will guide you through the process of configuring the sample. setup runs a PowerShell script that requires running with administration privileges to allow the scripts to execute in your machine. When prompted, enter the Client Secret, Package Name, and Package Security Identifier you obtained previously and wait until the tool finishes configuring your sample. Running the PNWorker Sample To run this sample, you must run both the client and the server application projects. 1. Open Visual Studio 2010 as an administrator. Open the WATWindows.Azure.sln solution. Set the start-up project of the solution as the cloud project. Run the app in the dev fabric to test. 2. Open Visual Studio 11 and open the WATWindows.Client.sln solution. Run the Metro client application. In the client application, click Reopen channel and send to server. à the application opens the channel and registers it with the cloud application, & the Output area shows the channel URI. 3. Refresh the WebRole's Push Notifications page to see the UI list the newly registered client. 4. Send notifications to the client application by clicking the Send Notification button. Setup 3 command files + 1 powershell script: SetupSample.cmd –> SetupWPNS.vbs –> SetupWPNS.cmd –> SetupWPNS.UpdateWPNSCredentialsInServiceConfiguration.ps1 appears to set PackageName – from manifest Client Id package security id (SID) – from registration Client Secret – from registration The following configs are modified: WATWindows\ServiceConfiguration.Cloud.cscfg WATWindows\ServiceConfiguration.Local.cscfg WATWindows.Client\package.appxmanifest WatWindows.Notifications A class library – it references the following WNS DLL: C:\WorkDev\CountdownValue\AzureToolkits\WATWindows8\Samples\PNWorker\packages\WnsRecipe.0.0.3.0\lib\net40\WnsRecipe.dll NotificationJobRequest A DataContract for triggering notifications:     using System.Runtime.Serialization; using Microsoft.Windows.Samples.Notifications;     [DataContract]     [KnownType(typeof(WnsAccessTokenProvider))] public class NotificationJobRequest     {               [DataMember] public bool ProcessAsync { get; set; }          [DataMember] public string Payload { get; set; }         [DataMember] public string ChannelUrl { get; set; }         [DataMember] public NotificationType NotificationType { get; set; }         [DataMember] public IAccessTokenProvider AccessTokenProvider { get; set; }         [DataMember] public NotificationSendOptions NotificationSendOptions{ get; set; }     } Investigated these types: WnsAccessTokenProvider – a DataContract that contains the client Id and client secret NotificationType – an enum that can be: Tile, Toast, badge, Raw IAccessTokenProvider – get or reset the access token NotificationSendOptions – SecondsTTL, NotificationPriority (enum), isCache, isRequestForStatus, Tag   There is also a NotificationJobSerializer class which basically wraps a DataContractSerializer serialization / deserialization of NotificationJobRequest The WNSNotificationJobProcessor class This class wraps the NotificationSendUtils API – it periodically extracts any NotificationJobRequest objects from a CloudQueue and submits them to WNS. The ProcessJobMessageRequest method – this is the punchline: it will deserialize a CloudQueueMessage into a NotificationJobRequest & send pass its contents to NotificationUtils to SendAsynchronously / SendSynchronously, (and then dequeue the message).     public override void ProcessJobMessageRequest(CloudQueueMessage notificationJobMessageRequest)         { Trace.WriteLine("Processing a new Notification Job Request", "Information"); NotificationJobRequest pushNotificationJob =                 NotificationJobSerializer.Deserialize(notificationJobMessageRequest.AsString); if (pushNotificationJob != null)             { if (pushNotificationJob.ProcessAsync)                 { Trace.WriteLine("Sending the notification asynchronously", "Information"); NotificationSendUtils.SendAsynchronously( new Uri(pushNotificationJob.ChannelUrl),                         pushNotificationJob.AccessTokenProvider,                         pushNotificationJob.Payload,                         result => this.ProcessSendResult(pushNotificationJob, result),                         result => this.ProcessSendResultError(pushNotificationJob, result),                         pushNotificationJob.NotificationType,                         pushNotificationJob.NotificationSendOptions);                 } else                 { Trace.WriteLine("Sending the notification synchronously", "Information"); NotificationSendResult result = NotificationSendUtils.Send( new Uri(pushNotificationJob.ChannelUrl),                         pushNotificationJob.AccessTokenProvider,                         pushNotificationJob.Payload,                         pushNotificationJob.NotificationType,                         pushNotificationJob.NotificationSendOptions); this.ProcessSendResult(pushNotificationJob, result);                 }             } else             { Trace.WriteLine("Could not deserialize the notification job", "Error");             } this.queue.DeleteMessage(notificationJobMessageRequest);         } Investigation of NotificationSendUtils class - This is the engine – it exposes Send and a SendAsyncronously overloads that take the following params from the NotificationJobRequest: Channel Uri AccessTokenProvider Payload NotificationType NotificationSendOptions WebRole WebRole is a large MVC project – it references WatWindows.Notifications as well as the following WNS DLL: \AzureToolkits\WATWindows8\Samples\PNWorker\packages\WnsRecipe.0.0.3.0\lib\net40\NotificationsExtensions.dll Controllers\PushNotificationController.cs Notification related namespaces:     using Notifications;     using NotificationsExtensions;     using NotificationsExtensions.BadgeContent;     using NotificationsExtensions.RawContent;     using NotificationsExtensions.TileContent;     using NotificationsExtensions.ToastContent;     using Windows.Samples.Notifications; TokenProvider – initialized from the Azure RoleEnvironment:   IAccessTokenProvider tokenProvider = new WnsAccessTokenProvider(         RoleEnvironment.GetConfigurationSettingValue("WNSPackageSID"),         RoleEnvironment.GetConfigurationSettingValue("WNSClientSecret")); SendNotification method – calls QueuePushMessage method to create and serialize a NotificationJobRequest and enqueue it in a CloudQueue [HttpPost]         public ActionResult SendNotification(             [ModelBinder(typeof(NotificationTemplateModelBinder))] INotificationContent notification,             string channelUrl,             NotificationPriority priority = NotificationPriority.Normal)         {             var payload = notification.GetContent();             var options = new NotificationSendOptions()             {                 Priority = priority             };             var notificationType =                 notification is IBadgeNotificationContent ? NotificationType.Badge :                 notification is IRawNotificationContent ? NotificationType.Raw :                 notification is ITileNotificationContent ? NotificationType.Tile :                 NotificationType.Toast;             this.QueuePushMessage(payload, channelUrl, notificationType, options);             object response = new             {                 Status = "Queued for delivery to WNS"             };             return this.Json(response);         } GetSendTemplate method: Create the cshtml partial rendering based on the notification type     [HttpPost]         public ActionResult GetSendTemplate(NotificationTemplateViewModel templateOptions)         {             PartialViewResult result = null;             switch (templateOptions.NotificationType)             {                 case "Badge":                     templateOptions.BadgeGlyphValueContent = Enum.GetNames(typeof( GlyphValue));                     ViewBag.ViewData = templateOptions;                     result = PartialView("_" + templateOptions.NotificationTemplateType);                     break;                 case "Raw":                     ViewBag.ViewData = templateOptions;                     result = PartialView("_Raw");                     break;                 case "Toast":                     templateOptions.TileImages = this.blobClient.GetAllBlobsInContainer(ConfigReader.GetConfigValue("TileImagesContainer")).OrderBy(i => i.FileName).ToList();                     templateOptions.ToastAudioContent = Enum.GetNames(typeof( ToastAudioContent));                     templateOptions.Priorities = Enum.GetNames(typeof( NotificationPriority));                     ViewBag.ViewData = templateOptions;                     result = PartialView("_" + templateOptions.NotificationTemplateType);                     break;                 case "Tile":                     templateOptions.TileImages = this.blobClient.GetAllBlobsInContainer(ConfigReader.GetConfigValue("TileImagesContainer")).OrderBy(i => i.FileName).ToList();                     ViewBag.ViewData = templateOptions;                     result = PartialView("_" + templateOptions.NotificationTemplateType);                     break;             }             return result;         } Investigated these types: ToastAudioContent – an enum of different Win8 sound effects for toast notifications GlyphValue – an enum of different Win8 icons for badge notifications · Infrastructure\NotificationTemplateModelBinder.cs WNS Namespace references     using NotificationsExtensions.BadgeContent;     using NotificationsExtensions.RawContent;     using NotificationsExtensions.TileContent;     using NotificationsExtensions.ToastContent; Various NotificationFactory derived types can server as bindable models in MVC for creating INotificationContent types. Default values are also set for IWideTileNotificationContent & IToastNotificationContent. Type factoryType = null;             switch (notificationType)             {                 case "Badge":                     factoryType = typeof(BadgeContentFactory);                     break;                 case "Tile":                     factoryType = typeof(TileContentFactory);                     break;                 case "Toast":                     factoryType = typeof(ToastContentFactory);                     break;                 case "Raw":                     factoryType = typeof(RawContentFactory);                     break;             } Investigated these types: BadgeContentFactory – CreateBadgeGlyph, CreateBadgeNumeric (???) TileContentFactory – many notification content creation methods , apparently one for every tile layout type ToastContentFactory – many notification content creation methods , apparently one for every toast layout type RawContentFactory – passing strings WorkerRole WNS Namespace references using Notifications; using Notifications.WNS; using Windows.Samples.Notifications; OnStart() Method – on Worker Role startup, initialize the NotificationJobSerializer, the CloudQueue, and the WNSNotificationJobProcessor _notificationJobSerializer = new NotificationJobSerializer(); _cloudQueueClient = this.account.CreateCloudQueueClient(); _pushNotificationRequestsQueue = _cloudQueueClient.GetQueueReference(ConfigReader.GetConfigValue("RequestQueueName")); _processor = new WNSNotificationJobProcessor(_notificationJobSerializer, _pushNotificationRequestsQueue); Run() Method – poll the Azure Queue for NotificationJobRequest messages & process them:   while (true)             { Trace.WriteLine("Checking for Messages", "Information"); try                 { Parallel.ForEach( this.pushNotificationRequestsQueue.GetMessages(this.batchSize), this.processor.ProcessJobMessageRequest);                 } catch (Exception e)                 { Trace.WriteLine(e.ToString(), "Error");                 } Trace.WriteLine(string.Format("Sleeping for {0} seconds", this.pollIntervalMiliseconds / 1000)); Thread.Sleep(this.pollIntervalMiliseconds);                                            } How I learned to appreciate Win8 There is really only one application architecture for Windows 8 apps: Metro client side and Azure backend – and that is a good thing. With WNS, tier integration is so automated that you don’t even have to leverage a HTTP push API such as SignalR. This is a pretty powerful development paradigm, and has changed the way I look at Windows 8 for RAD business apps. When I originally looked at Win8 and the WinRT API, my first opinion on Win8 dev was as follows – GOOD:WinRT, WRL, C++/CX, WinJS, XAML (& ease of Direct3D integration); BAD: low projected market penetration,.NET lobotomized (Only 8% of .NET 4.5 classes can be used in Win8 non-desktop apps - http://bit.ly/HRuJr7); UGLY:Metro pascal tiles! Perhaps my 80s teenage years gave me a punk reactionary sense of revulsion towards the Partridge Family 70s style that Metro UX seems to have appropriated: On second thought though, it simplifies UI dev to a single paradigm (although UX guys will need to change career) – you will not find an easier app dev environment. Speculation: If LightSwitch is going to support HTML5 client app generation, then its a safe guess to say that vnext will support Win8 Metro XAML - a much easier port from Silverlight XAML. Given the VS2012 LightSwitch integration as a thumbs up from the powers that be at MS, and given that Win8 C#/XAML Metro apps tend towards a streamlined 'golden straight-jacket' cookie cutter app dev style with an Azure back-end supporting Win8 push notifications... --> its easy to extrapolate than LightSwitch vnext could well be the Win8 Metro XAML to Azure RAD tool of choice! The hook is already there - :) Why else have the space next to the HTML Client box? This high level of application development abstraction will facilitate rapid app cookie-cutter architecture-infrastructure frameworks for wrapping any app. This will allow me to avoid too much XAML code-monkeying around & focus on my area of interest: Technical Computing.

    Read the article

  • Le cloud est le futur de l'IT d'entreprise d'après Google, qui estime avoir des années d'avance sur

    Le cloud est le futur de l'IT d'entreprise d'après Google, qui estime avoir des années d'avance sur Microsoft Google, dans sa politique d'extension, souhaiterait voir ses Google Docs adoptés par les entreprises, car ces outils sont aujourd'hui plutôt utilisés par les particuliers. Pour l'instant, l'utilisation professionnelle des logiciels de bureautique reste le bastion de Microsoft. Car, si Google domine largement le domaine de la recherche, c'est toujours Redmond qui est en tête dans les secteurs des navigateurs, des OS, et des softs de bureau. A Mountain View, on souhaite rattraper son retard sur ces derniers points, en particulier la bureautique. Le nouveau champ de bataille dans ce domaine : le c...

    Read the article

  • Quels défis IT devront relever les entreprises en 2011 ? Le Cloud et la gestion de « l'explosion des données » selon Informatica

    Quels défis IT devront relever les entreprises en 2011 ? Le Cloud Computing et une gestion plus intelligentes de « l'explosion des données » selon Informatica A l'occasion du nouvel an, Mark Seager, Vice President Technology EMEA d'Informatica (fournisseur de solutions d'intégration de données) a publié un article fort intéressant sur les challenges auxquels doivent faire face les entreprises IT en 2011. Le succès retentissant des réseaux sociaux et l'usage sans précédent du Web en général en 2010 provoquera, selon lui, « l'explosion des données » (sic) en 2011 avec autant d'écueils à éviter que d'opportunités à saisir pour les entreprises. Les sociétés doiv...

    Read the article

  • Le service de "Cloud computing" de jeux vidéo OnLive annonce ses dates et son prix à la Game Develop

    Mise à jour du 11/03/10 Le service de "Cloud computing" de jeux vidéo OnLive annonce ses dates et son prix à la Game Developers Conference 2010 Se déroulant actuellement, la Game Developers Conference 2010 a offert l'occasion à Mike McGarvey, responsable du projet OnLive, d'officialiser certains points sur son projet de "could computing" pour les jeux vidéo. On apprend ainsi que le service sera disponible à partir du 17 juin prochain sur la sol américain. Rien n'est précisé quand à sa disponibilité du service en Europe. Le service demandera au client de s'abonner mensuellement pour un prix de 14,95$ (soit environ 11€ par mois). Le service sera dans un p...

    Read the article

  • Where can I find more documentation on bulding an Ubuntu-based cloud infrastructure?

    - by Shazzner
    I've been reading: https://help.ubuntu.com/community/UbuntuCloudInfrastructure It's fascinating stuff, but documentation seems a bit sparse. Where I work, we have this aging, clunky VMWare ESXi setup for all our internal servers. I'd really like to read up on possible migration or just information on Orchestra, integration with Juju, etc that isn't a bunch of loosely connected blog posts. :p This is concerning 11.10 and, presumably, 12.04. To make this less vague, specifically documentation on: Orchestra - features, comparisons, videos, etc Integrating Juju with Orchestra - I'm familiar with using Juju for deploying on AWS, but that wiki page glances over connecting it to orchestra Building a private cloud - Advantages, using/deploying Openstack, etc Working with internal networks - Configuring DMZs, setting rules, etc Any recommended books would be appreciated too. I didn't intend for this to be a 'do all my homework for me! LMGTFY' post, I'm just hungry for information and haven't found a good repository of knowledge for much of this.

    Read the article

  • Le Cloud marquera-t-il le retour des DRM ? Les labels militent pour imposer de nouvelles technologie

    Le Cloud marquera-t-il le retour des DRM ? Les labels militent pour imposer de nouvelles technologies de marquage très discrètes Les vendeurs de musique en ligne commercialisent de fichiers sans DRM. Cependant, il y a deux catégories chez ces commerçants : ceux comme Apple, Walmart ou LaLa qui distribuent des MP watermarkés (enregistrant les informations personnelles de leur propriétaire, ce qui pose problème si les fichiers sont partagés sur des réseaux P2P) ; et ceux comme Amazon ou Napster qui ont su résister aux pressions des maisons de disque et qui délivrent des MP3 propres. Malheureusement, très peu de consommateurs font attention à ces détails. Ils devraient. Selon une source interne au marché de la musique ...

    Read the article

  • Apple prépare-t-il un Mac OS version Cloud ? L'entreprise obtient un nouveau brevet et préparerait un data-center à 1 milliards de dollars

    Apple prépare-t-il un Mac OS version Cloud ? L'entreprise obtient un nouveau brevet et préparerait un data-center à 1 milliards de dollars Apple vient d'obtenir un nouveau brevet relatif à un système d'exploitation "net-booté" et serait, par ailleurs, en train de préparer un gigantesque data-center dans une zone rurale de la Caroline du Nord. Un datacenter qui devrait coûter pas moins d'un milliard de dollars. La demande du dépôt du brevet en question avait été déposée en 2006. Le brevet est décrit comme "la fourniture d'un système d'exploitation fiable et maintenable dans un environnement démarré-sur-réseau (net-booté)". La disponibilité des dét...

    Read the article

  • Building Cloud Infrastructure? Don't Miss this Webcast with SEI

    - by Zeynep Koch
    WEBCAST: How did Oracle Linux Enable SEI to Save in Infrastructure Costs and Improve Business Response Date: Tuesday, October 30, 2012 Time: 9:00 AM PDT Using the Oracle technology stack, SEI, a leading provider of wealth management solutions, developed an innovative, global platform for its business. That platform is built on a highly integrated infrastructure, operating system, and middleware that allows the organization to scale with customer demand. In this Webcast, join SEI’s Martin Breslin as he discusses: Why and how SEI migrated from a mainframe-based infrastructure to an x86-based infrastructure on Oracle Linux Why SEI chose Oracle Linux, Oracle Enterprise Manager, and Oracle Real Application Cluster for its platform-as-a-service (PaaS) environment How Oracle Linux enabled SEI to save costs and improve response time Key success factors and lessons learned when deploying an enterprise cloud Speakers: Martin Breslin, Senior Infrastructure Architect, SEI Global Monica Kumar, Senior Director, Oracle Linux, Virtualization and MySQL Product Marketing  Register TODAY

    Read the article

  • Windows Azure : quand le Cloud vend des avions, Boeing utilise la plate-forme de Microsoft pour modéliser ses appareils

    Windows Azure : quand le Cloud vend des avions Boeing utilise la plate-forme de Microsoft pour modéliser ses appareils Lors du PDC (une de ses conférences pour développeurs) de l'année dernière, Microsoft avait illustré la puissance de calcul de Windows Azure par une démonstration ludique et très concrète. Les studios Pixar étaient montés sur scène pour montrer comment ils utilisaient un nombre variable d'instances hébergées pour obtenir le rendu de certaines scènes de leurs films. Un rendu qu'ils n'auraient pu obtenir, ou pas aussi rapidement, avec leurs propres outils internes. [IMG]http://ftp-developpez.com/gordon-fowler/AzurePixar.jpg[/IMG] P...

    Read the article

  • L'EPITA annonce la 5ème édition de son SRS Day, une journée d'échanges sous le signe de la sécurité, du Cloud et du BigData

    L'EPITA annonce la 5ème édition de son SRS Day Une journée Système Réseaux et Sécurité sous le signe du Cloud, du BigData et de la consumérisation de l'IT Pour sa 5e édition, l'EPITA, (l'école des ingénieurs du numérique, membre de IONIS Education Group) organise le SRS Day en partenariat avec le cabinet de conseil en management et système d'information Solucom. Ce sont 6 groupes de travail composés d'étudiants de l'EPITA, en dernière année de spécialisation systèmes, réseaux et sécurité, encadrés chacun par un expert de Solucom, qui feront lors des conférences du SRS Day un état de l'art sur des domaines parmi les plus sensibles. Cette démarche s'inscrit dans la volonté ...

    Read the article

  • Visual Studio 2012 sort avec .NET 4.5, tour d'horizon des nouveautés de l'EDI pour le support de l'ALM, du mobile, du Web, du Cloud et WinRT

    Visual Studio 2012 sort avec .NET Framework 4.5 tour d'horizon des nouveautés de l'EDI pour le support de l'ALM, du mobile, du Web et du Cloud Visual Studio 2012 et le Framework .NET 4.5 sont officiellement disponibles pour tous les utilisateurs. Visual Studio 2012 est un environnement de développement riche pour créer et gérer des applications non seulement modernes et attrayantes, mais aussi accessibles n'importe où, n'importe quand, répondant aux attentes des clients. Dévoilé pour la première fois au stade de Preview lors de la conférence Microsoft Build en septembre 2011, Visual Studio est passé par plusieurs mois de tests, ajouts de nouvelles fonctionnalités, améliorations des...

    Read the article

  • SAPPHIRE 2012 : l'informatique à un tournant majeur ? SAP voit une révolution de l'IT professionnelle avec le Big Data, HANA et le Cloud

    SAPPHIRE 2012 : l'informatique professionnelle à un tournant de son Histoire ? SAP veut révolutionner les usages de l'IT avec le Big Data, HANA et le Cloud Au détour des allées du SAPPHIRE 2012, la grand messe annuelle de SAP qui se tient actuellement à Madrid, deux démonstrations sortent du lot. La première vient de McLaren. Bien connue des amateurs de Formule 1, l'entreprise est une grande utilisateur des solutions de SAP. Pour son « showcase », les équipes du constructeur automobile ont collecté des données de courses de l'épreuve de Monza 2010 et les ont compilées pour reproduire in vivo la course de leurs deux pilotes. Cette simulation sert ensuite de base pour ...

    Read the article

  • Oracle publie NetBeans 7.2 bêta : support de PHP 5.4, C++ 11, Java 7 Update 4, déploiement dans le Cloud et intégration de FindBugs pour l'IDE

    Oracle publie NetBeans 7.2 bêta support de PHP 5.4, C++ 11, Java 7 Update 4, déploiement dans le Cloud et intégration de FindBugs pour l'IDE Oracle vient d'annoncer la sortie de la bêta de NetBeans 7.2. NetBeans est un environnement de développement intégré permettant la création des applications en Java, PHP, C et C++, ainsi qu'en plusieurs langages JVM comme Scala et Groovy. [IMG]http://ftp-developpez.com/gordon-fowler/NetBeans%20Logo.png[/IMG] L a bêta de NetBeans 7.2 intègre des améliorations et nouvelles fonctionnalités permettant d'obtenir de meilleures performances sur les systèmes de fichiers distants, une numérisation des projets en arrière-plan et un déma...

    Read the article

  • Dev'Camps : Microsoft décortique Windows Azure le 20 juin lors d'une session gratuite sur sa plateforme Cloud pour les développeurs

    Dev'Camps: Microsoft décortique Windows Azure le 20 juin lors d'une session gratuite sur sa plateforme Cloud pour les développeurs Microsoft organise une série d'événements à travers la France sur ses plateformes et technologies du moment. Ces Dev'Camps sont un nouveau format d'évènements, 100% développement, en direct avec les experts Microsoft, pour vous aider dans vos projets applicatifs. Un des événements les plus attendus de cette série est l'Azure Camp, qui se tiendra la mercredi 20 juin, au siège de Microsoft à Issy-Les-Moulineaux. Les Azure Camps permettront en effet d'approfondir rapidement ses connaissances sur le nouvel outil phare de Microsoft ...

    Read the article

  • Google ouvre son outil de visualisation des données statistiques au public : premier pas vers un BI en mode Cloud ?

    Google ouvre son outil de visualisation des données statistiques au public Premier pas vers un BI en mode Cloud ? Google vient de mettre à la disposition de tous son outil d'analyse derrière sa solution « Public Data Explorer ». Pour mémoire Google Public Data Explorer est un service en ligne lancé en mars 2010 par Google Labs. Il permet de visualiser des données statistiques mondiales, sous différentes représentations graphique. On y retrouve par exemple des données de la banque mondiale ou encore celle d'Eurostat. Le nouveau format de données Google Dataset Publishing Language (DSPL) basé sur le format XML, développé par Google Labs et utilisé par Public Data Explorer, fo...

    Read the article

  • Microsoft : le responsable de la Division Serveurs sur le départ, en cause ses résultats dans le Cloud ?

    Microsoft : le responsable de la division Serveurs quitte son poste Signe que la société n'est pas satisfaite de ses résultats dans le Cloud ? Bob Muglia, responsable de la division des serveurs et outils depuis de longues années chez Microsoft, va quitter ses fonctions l'été prochain. Un départ ? forcé ? - qui laisse libre cours aux interprétations. Dans un courriel adressé hier lundi aux employés de Microsoft, Steve Ballmer a annoncé le départ de Bob Muglia de la tête de la division qui détient la troisième place des ventes de produits Microsoft avec un chiffre d'affaires annuel de 15 milliards de dollars. Muglia travaille pour Microsoft depuis 23 ans. Il a été nommé à la...

    Read the article

  • Firefox 5 en version finale avec son nouveau kit de développement d'extensions en HTML, JavaScript et CSS, disponible en version Cloud

    Firefox 5 sort en version finale avec son nouveau kit de développement d'extensions En HTML, JavaScript et CSS, disponible aussi en version Cloud Mise à jour du 21/06/2011 par Idelways Firefox 5 est sorti aujourd'hui pour Windows, Linux, Mac OS et Android. Mozilla y finalise enfin quelques grands chantiers prévus initialement pour la version 4. Si cette version semble n'être qu'une mise à jour de Firefox 4, elle n'en est pas moins riche en nouveautés pour les développeurs. Son nouveau SDK (Kit de Développement) permet aux développeurs Web de construire des extensions Firefox complètes en utilisant simplem...

    Read the article

  • PhoneGap Build 1.0 : Adobe relance son outil de conversion d'applications mobiles multiplateforme et enrichit son offre Cloud

    PhoneGap Build 1.0 : Adobe relance l'outil de conversion d'applications mobiles multiplateforme Et enrichit son offre Cloud avec 5 autres services Dans le cadre de sa conférence Create theWeb, Adobe a dévoilé hier une palette d'outils et de services pour les designers et les développeurs. Des outils très orientés HTML5, CSS3 et JavaScript. Leur but : « créer plus facilement des sites web, des contenus numériques et des applications mobiles ». La liste est assez longue. On y trouve PhoneGap Build 1.0 et une gamme Edge qui se compose à présent de Edge Animate 1.0, EdgeInspect 1.0 (ex-Shadow), Edge Web Fonts, Edge Code et en avant-première Edge Reflow.

    Read the article

  • JavaOne 2012 démarre en force : innovation, Cloud, GPU, mobile, résumé de la 1er journée de la plus grande conférence autour de Java

    JavaOne 2012 démarre en force innovation, Cloud, GPU, mobile, résumé de la 1er journée de la plus grande conférence autour de l'écosystème Java JavaOne 2012, la grande messe annuelle des développeurs et experts de l'industrie autour de l'écosystème Java a ouvert ses portes hier. Pendant cinq jours, le Masonic Auditorium de San Francisco sera le théâtre de plus 500 sessions présentées par près de 540 conférenciers, autour du thème central « préparer Java du futur ». Strategy Keynote La conférence s'est ouverte avec une session sur la stratégie d'Oracle pour Java. Le tableau de bord de l'éditeur pour l'année 2012 est axé principalement autour de trois domaines ...

    Read the article

  • Google revoit ses capacités de stockage Cloud à la baisse et ses prix à la hausse, presque tous les utilisateurs de Drive concernés

    Cloud : Google revoit ses espaces de stockage à la baisse Et ses prix à la hausse, du pain bénit pour la concurrence ? Encore plus de « nettoyage de printemps » est à prévoir pour ses services en ligne, prévient Google. Il s'agit en fait d'un toilettage d'automne. Et autant le dire tout de suite, il n'est pas porteur de bonnes nouvelles pour les utilisateurs de Google Drive et de Picassa. Google annonce en effet que les capacités ces deux espaces de stockages « seront consolidées » et que la capacité totale gratuite sera désormais de 5 GB « pour les deux services ». Autrement dit, l'espace gratuit total perd 1 GB (- 16.5%) puisque auparavant Google Drive proposait déjà ces 5 ...

    Read the article

  • Team Foundation Service passe au Cloud, la plateforme de gestion du cycle de vie de Microsoft ne vise plus uniquement .NET ou Windows

    Microsoft lance Team Foundation Service la version Cloud de son outil de gestion du cycle de vie des applications Près d'une année après avoir dévoilé la beta de Team Foundation Service (TFS), Microsoft annonce le passage de la version hébergée de Team Foundation Server sur Windows Azure en version finale. Pour rappel, Team Foundation Server est une solution de travail collaboratif et de gestion du cycle de vie des applications (ALM) permettant : la gestion des sources, des builds, le suivi des éléments de travail, la planification et l'analyse des performances. La version hébergée de l'outil dispose des outils de gestion de projets agiles supportant SCRUM et Capability Ma...

    Read the article

  • SAP Visual Intelligence devient SAP Lumira, l'outil de visualisation de données complexes développé en France passe au Cloud et au HTML5

    SAP Visual Intelligence devient SAP Lumira L'outil de visualisation de données complexes développé en France passe au Cloud et au HTML5La solution de « Data Visualization » de SAP vient de changer de nom. Fini donc SAP Visual Intelligence, dîtes désormais SAP Lumira.La nouvelle appellation s'accompagne de quelques nouveautés. En tant que développeur, on remarquera que cette version est en HTML5. En tant qu'utilisateur métier, on retiendra plutôt le temps-réel, l'accélération de la prise de décisions grâce aux réponses factuelles sur les sujets business, ou l'augmentation des données en self-service (pour ne pas encombrer la base de données IT).

    Read the article

< Previous Page | 70 71 72 73 74 75 76 77 78 79 80 81  | Next Page >