Microsoft Azure offers secure and flexible development, deployment and scaling options for any size web application. Leverage your existing tools to create and deploy applications without the hassle of managing infrastructure.
Provision a production web application on your own in minutes by easily deploying content created using your favorite development tool. You can deploy an existing site directly from source control with support for Git, GitHub, Bitbucket, CodePlex, TFS, and even DropBox. Deploy directly from your favorite IDE or from scripts using PowerShell in Windows or CLI tools running on any OS. Once deployed, keep your sites constantly up-to-date with support for continuous deployment.
Microsoft Azure provides scalable, durable cloud storage, backup, and recovery solutions for any data, big or small. When deploying applications to a production environment, storage services such as Tables, Blobs and SQL Databases help you scale your application in the cloud.
With SQL Databases, it is important to keep your productive database up-to-date when deploying new versions of your application. Thanks to Entity Framework Migrations, the development and deployment of your data model has been simplified to update your environments in minutes.
This hands-on lab will show you the different topics you could encounter when deploying your site to production environments in Microsoft Azure.
In this hands-on lab, you will learn how to:
The following is required to complete this hands-on lab:
Enable the ASP.NET Core command-line tools. Open a command-prompt and run:
dnvm upgrade
A Microsoft Azure subscription
Note: You can take advantage of the Visual Studio Dev Essentials subscription in order to get everything you need to build and deploy your app on any platform.
In order to run the exercises in this hands-on lab, you will need to set up your environment first.
Note: Make sure you have checked all the dependencies for this lab before running the setup.
Throughout the lab document, you will be instructed to insert code blocks. For your convenience, most of this code is provided as Visual Studio Code Snippets, which you can access from within Visual Studio 2015 to avoid having to add it manually.
Note: Each exercise is accompanied by a starting solution located in the Begin folder of the exercise that allows you to follow each exercise independently of the others. Please be aware that the code snippets that are added during an exercise are missing from these starting solutions and may not work until you have completed the exercise. Inside the source code for an exercise, you will also find an End folder containing a Visual Studio solution with the code that results from completing the steps in the corresponding exercise. You can use these solutions as guidance if you need additional help as you work through this hands-on lab.
This hands-on lab includes the following exercises:
Estimated time to complete this lab: 75 minutes
Note: When you first start Visual Studio, you must select one of the predefined settings collections. Each predefined collection is designed to match a particular development style and determines window layouts, editor behavior, IntelliSense code snippets, and dialog box options. The procedures in this lab describe the actions necessary to accomplish a given task in Visual Studio when using the General Development Settings collection. If you choose a different settings collection for your development environment, there may be differences in the steps that you should take into account.
When you are developing an application, your data model might change over time. These changes could affect the existing model in your database (if you are creating a new version) and it is important to keep your database up-to-date to prevent errors.
To simplify the tracking of these changes in your model, Entity Framework Code First Migrations automatically detect changes comparing your model with the database schema and generates specific code to update your database, creating new versions of your database.
This exercise shows you how to enable Migrations for your application and how you can easily detect and generate changes to update your databases.
In this task, you will go through the steps of enabling Entity Framework Code First Migrations to the Geek Quiz database, changing the model and understanding how those changes are reflected in the database.
Open the GeekQuiz.sln solution file from Source\Ex1-UsingEntityFrameworkMigrations\Begin in Visual Studio.
Build the solution in order to download and install the NuGet package dependencies. To do this, right-click the solution and click Build Solution or press Ctrl + Shift + B.
In the Solution Explorer, select the GeekQuiz project and press Shift + Alt + , to open a Command Prompt in the folder where the project is located.
In the Command Prompt you just opened, enter the following command and then press Enter. An initial migration based on the existing model will be created.
dnx ef migrations add InitialMigration --context TriviaDbContext
Creating the initial migration
Note: Make sure that there is no database named "GeekQuizProd" in your LocalDB instance.
Note:
dnx ef migrations add
will scaffold the next migration based on changes you have made to your model since the last migration was created. In this case, being the first migration of the project, it will add the scripts to create all the tables defined in the TriviaDbContext class.
Back in Visual Studio, verify that the new migration was created inside the TriviaDb folder located under the Migrations folder.
Verifying the initial migration
Execute the migration to update the database by running the following command in the Command Prompt.
Note:
dnx ef database update
will apply any pending migrations to the database. In this case, it will create the database using the connection string defined in your appsettings.json file.
dnx ef database update --context TriviaDbContext
Go to the View menu and open SQL Server Object Explorer.
Open in SQL Server Object Explorer
In the SQL Server Object Explorer window, verify that you have the (localdb)\MSSQLLocalDB database in the list. If the database is not in the list, connect to your LocalDB instance by right-clicking the SQL Server node and selecting Add SQL Server....
Adding a SQL Server instance to SQL Server Object Explorer
Open the GeekQuizProd database and expand the Tables node. As you can see, the dnx ef database update
command generated all the tables defined in the TriviaDbContext class. Locate the dbo.TriviaQuestion table and open the columns node. In the next task, you will add a new column to this table and update the database using Migrations.
Trivia Questions Columns
In this task, you will use Entity Framework Code First Migrations to detect a change in your model and generate the necessary code to update the database. You will update the TriviaQuestion entity by adding a new property to it. Then you will run commands to create a new Migration to include the new column in the table.
In Solution Explorer, double-click the TriviaQuestion.cs file located in the Models folder.
Add a new property named Hint, as shown in the following code snippet.
public class TriviaQuestion
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public string Title { get; set; }
public virtual List<TriviaOption> Options { get; set; }
public string Hint { get; set; }
}
Switch back to the Command Prompt, enter the following command and then press Enter. A new migration will be created reflecting the change in our model.
dnx ef migrations add QuestionHint --context TriviaDbContext
Adding the QuestionHint migration
Note: A Migration file is composed of two methods, Up and Down.
- The Up method will be used to specify the changes the current version of our application needs to apply to the database.
- The Down method is used to reverse the changes we have added to the Up method.
When the Database Migration updates the database, it will run all migrations that have not been used since the last update in the timestamp (The _EFMigrationsHistory table keeps track of which migrations have been applied). The Up method of all migrations will be called and will make the changes we have specified to the database. If we decide to go back to a previous migration, the Down method will be called to redo the changes in reverse order.
In the Command Prompt, enter the following command and then press Enter.
dnx ef database update --context TriviaDbContext
Applying the QuestionHint migration
In SQL Server Object Explorer, refresh the dbo.TriviaQuestion table and check that the new Hint column is displayed.
Checking the new Hint Column
Azure Web Apps enables you to perform staged publishing. When you deploy your site to an Azure Web App, you can choose to deploy it to a separate deployment slot instead of the default production slot. And then swap the deployments in these two slots with no down time. This is really useful for validating changes before releasing to the public, incrementally integrating site content, and rolling back if changes are not working as expected.
In this exercise, you will deploy the Geek Quiz application to the staging environment of your Azure Web App using Git source control. To do this, you will create the Web App and provision the required components at the management portal, configure a Git repository and push the application source code from your local computer to a deployment slot. You will also update your production database with the Code First Migrations you created in the previous exercise. You will then execute the application in this staging environment to verify its operation. Once you are satisfied that it is working according to your expectations, you will promote the application to production.
Note: To enable staged publishing, the Web App must be on one of the Standard plans. Note that additional charges will be incurred if you upgrade your Web App to a Standard plan. For more information about pricing, see App Service Pricing.
In this task, you will create a Microsoft Azure Web App from the management portal. You will also configure a SQL Database to persist the application data, and configure a local Git repository for source control.
Go to the Azure Portal and sign in using the Microsoft account associated with your subscription.
Sign in to the Azure Portal
Click New in the left command bar and then search for Web App + SQL.
Searching for Web App + SQL
Select Web App + SQL from the list.
Selecting Web App + SQL
In the Web App + SQL blade, click Create in order to continue to the configuration of the site.
Creating the Web App + SQL
In the new Web App + SQL blade, select a Resource Group or create a new one. Then, click App Service Name, provide an available URL (e.g. geekquiz-site), create a new AppService Plan, then choose the pricing tier and location. Finally, click OK.
Configure the new Web App
Next, select Database and create a new database, specifying the required information for the new server. Then, click OK in both New server and New database blades.
Configure a new SQL Database
Finally, in the Web App + SQL blade, click Create and wait until the Web App is created.
Note: By default, Microsoft Azure provides domains at azurewebsites.net but also gives you the possibility to set custom domains using the Azure Portal. However, you cannot use custom domains with a free Web App.
Microsoft Azure offers 5 plans for users to run their Web Apps - Free, Shared, Basic, Standard and Premium. In Free and Shared, all Web Apps run in a multi-tenant environment and have quotas for CPU, Memory, and Network usage. You can mix and match which sites are Free (strict quotas) vs. Shared (more flexible quotas). The maximum number of free Web Apps may vary with your plan. In Standard, you choose which Web Apps run on dedicated virtual machines that correspond to the standard Azure compute resources. You can change the mode of your Web App by clicking the Pricing tier tile in the Usage section of the corresponding App Service plan blade.
If you are using Shared or Standard, you will be able to manage custom domains for your Web Apps by going to your Web App's Settings blade and clicking Custom domains and SSL.
Once the Web app is created, select it and click the Browse button to validate that the new Web app is running.
Browsing to the new web app
Web app running
In this task, you will create a staging deployment slot for your Web App. Then, you will use Git to publish the Geek Quiz application directly from your local computer to the staging environment of your Web App.
Go back to the portal and open your Web App.
Select Scale Up (App Service Plan) in the Settings blade of your web app.
Scaling up the App Service Plan
If your Web App is not on a Standard plan, select one by clicking the Pricing tier tile. For instance, select the S1 Standard plan.
Upgrading the Web app to a Standard plan
Click Continuous deployment in the Settings blade of your web app and then choose Local Git Repository as source. Then, click OK to save the changes.
Configuring the Git Deployment in staging Web App
Now, click Deployment credentials in the Settings blade of your web app to configure the user that will perform the deployments. Fill in the credentials and then click Save at the top.
Setting deployment credentials
Back in the Settings blade, select Deployment slots.
Opening deployment slots
Click the Add Slot command at the top and create a new slot named staging. Set your Web App as Configuration Source and then click OK.
Creating deployment slot
After a few seconds you will see a new slot with the name of your Web App followed by -staging. Select it to navigate to the staging Web App settings.
Navigating to the staging Web App
Repeat Step 4 to configure continuous deployment in the staging Web App using Local Git Repository as source.
Now, click the staging Web App Settings command, select Properties and then copy the GIT URL value. You will use it later in this exercise.
Copying the Git URL value
Open a new Git Bash console and execute the following commands. Update the [YOUR-APPLICATION-PATH] placeholder with the path to the GeekQuiz solution, located in the Source\Ex2-DeployingWebSiteToStaging\Begin folder of this lab.
cd "[YOUR-APPLICATION-PATH]"
git init
git config --global user.email<EMAIL_ADDRESS>git config --global user.name "{your-user-name}"
git add .
git commit -m "Initial commit"
Run the following command to push your site to the remote Git repository. Replace the placeholder with the URL you obtained from the Azure Portal.
Note: When you deploy content to the FTP host or GIT repository of a Microsoft Azure Web App you must authenticate using the deployment credentials that you configured in a previous step. If you do not know your deployment credentials you can easily reset them in the Azure Portal by opening the Web App Settings and clicking Deployment credentials. These deployment credentials are valid for all the Web Apps associated with your subscription.
git remote add azure [GIT-URL-STAGING-SLOT]
git push azure master
In order to verify that the site was successfully deployed, go back to the Azure Portal and select your Web App.
Navigate to the staging slot of this Web App by clicking Deployment slots in the Settings blade and then selecting its row inside the Deployments blade.
In the staging Web App, verify that there is an Active deployment with your "initial commit" in the Continuous deployment blade.
Active deployment
Finally, click the Browse command to navigate to the deployed site.
Browse site
If the application was successfully deployed, you will see the Geek Quiz Log in page.
Note: The address URL of the deployed application contains the name of your Web App followed by -staging.
Application running in the staging environment
If you wish to explore the application, click Register to configure a new user. Complete the account details by entering a user name, email address and password. Next, the application shows the first question of the quiz. Answer a few questions to make sure it is working as expected.
Application ready to be used
Now that you have verified that the site is working correctly in the deployment slot, you are ready to promote it to production. In this task, you will swap the site in a staging slot with the production slot.
Go back to the Azure Portal and navigate to the staging Web App.
Click the Swap command at the top.
Swap to production
Verify that the Source targets the staging slot and the Destination targets production, and then click OK to proceed with the swap operation. Azure will immediately swap the content of the production site with the content of the staging site.
Note: Some settings from the staged version will automatically be copied to the production version (e.g. connection string overrides, handler mappings, etc.) but others will stay the same (e.g. DNS endpoints, SSL bindings, etc.).
Confirming swap operation
Once the swap is complete, browse to your Web App in both slots. You can verify that the production site is now the one with the GeekQuiz site.
Note: You might need to refresh your browser to clear the cache. In Microsoft Edge, you can do this by pressing CTRL+F5.
In the GitBash console, update the remote URL for the local Git repository to target the production slot. To do this, run the following command replacing the placeholders with your deployment username and the name of your Web App.
Note: In the following exercises, you will push changes to the production site instead of staging just for the simplicity of the lab. In a real-world scenario, it is recommended to verify the changes in the staging environment before promoting to production.
git remote set-url azure https://<your-user>@<your-web-site>.scm.azurewebsites.net:443/<your-web-site>.git
There are scenarios where you do not have a staging slot to perform hot swap between staging and production, for example, if you are working with Web Apps running in Free or Shared mode. In those scenarios, you should test your application in a testing environment (either locally or in a remote site) before deploying to production. However, it is possible that an issue not detected during the testing phase may arise in the production site. In this case, it is important to have a mechanism to easily switch to a previous and more stable version of the application as quickly as possible.
In Azure Web Apps, continuous deployment from source control makes this possible thanks to the Redeploy action available in the Azure Portal. Microsoft Azure keeps track of the deployments associated with the commits pushed to the repository and provides an option to redeploy your application using any of your previous deployments, at any time.
In this exercise you will perform a change to the code in the Geek Quiz application that intentionally injects a bug. You will deploy the application to production to see the error, and then you will take advantage of the redeploy feature to go back to the previous state.
In this task, you will refactor a small piece of code from the TriviaController class by extracting part of the logic that retrieves the selected quiz option from the database to a new method.
Switch to the Visual Studio instance with the GeekQuiz solution from the previous exercise.
In Solution Explorer, open the AnswersService.cs file in the Services folder.
Replace the StoreAsync method implementation with the following code snippet.
(Code Snippet - WebSitesInProduction - Ex3 - StoreAsync)
public async Task<bool> StoreAsync(TriviaAnswer answer)
{
var selectedOption = await this.db.TriviaOptions.FirstOrDefaultAsync(o =>
MatchesOption(answer, o));
if (selectedOption != null)
{
answer.TriviaOption = selectedOption;
this.db.TriviaAnswers.Add(answer);
await this.db.SaveChangesAsync();
}
return selectedOption.IsCorrect;
}
private static bool MatchesOption(TriviaAnswer answer, TriviaOption o)
{
var a = answer.OptionId / 0;
return o.Id == answer.OptionId
&& o.QuestionId == answer.QuestionId;
}
Press CTRL + S to save the changes.
You will now push the changes you made in the previous task to the repository, which will trigger a new deployment to the production environment. Then, you will troubleshoot an issue using the F12 development tools provided by Microsoft Edge and then perform a rollback to the previous deployment from the Azure Portal.
Open a new Git Bash console to deploy the updated application to Azure Web Apps.
Execute the following commands to push the changes to Microsoft Azure. Update the [YOUR-APPLICATION-PATH] placeholder with the path to the GeekQuiz solution. You will be prompted for your deployment password.
cd "[YOUR-APPLICATION-PATH]"
git add .
git commit -m "Refactored answer check"
git push azure master
Open Microsoft Edge and navigate to your site (e.g. http://geek-quiz-site.azurewebsites.net/). Log in with your user credentials.
Press F12 to launch the development tools, select the Network tab and click the Clear Session button.
Starting network recording
Select any of the quiz options. You will see that nothing happens.
In the F12 window, the entry corresponding to the POST HTTP request shows an HTTP 500 result.
HTTP 500 error
Select the Console tab. An error is logged with the details of the cause. This error is caused by the code refactoring you committed in the previous steps
Logged error
Do not close the browser.
In a new browser instance, navigate to the Azure Portal and sign in using the Microsoft account associated with your subscription.
Select App Services and click the Web app you created in Exercise 2.
Open the Deployments blade by clicking the Continuous deployment option in the Settings blade. Notice that all the commits performed are listed in the deployment history.
List of existing deployments
Select the previous commit and then click Redeploy on the command bar.
Redeploying the previous commit
When prompted to confirm, click Yes.
When the deployment completes, switch back to the browser instance with your site and press CTRL + F5.
Click any of the options. The flip animation will now take place and the result (correct/incorrect) will be displayed.
(Optional) Switch to the Git Bash console and execute the following commands to revert to the previous commit.
Note: These commands create a new commit that undoes all changes in the Git repository that were made in the bad commit. Azure will then redeploy the application using the new commit.
git revert HEAD --no-edit
git push azure master
Blobs are the simplest way to store large amounts of unstructured text or binary data such as video, audio and images. Moving the static content of your application to Storage helps scale your application by serving images or documents directly to the browser.
In this exercise, you will move the static content of your application to a Blob container. Then you will configure your application to add an ASP.NET URL rewrite rule in the Web.config to redirect your content to the Blob container.
In this task you will learn how to create a new storage account using the management portal.
Navigate to the Azure Portal and sign in using the Microsoft account associated with your subscription.
Select New | Data + Storage | Storage account to start creating a new storage account.
Creating a new storage account
In the Storage account blade, click Create.
Creating the storage account
Enter a unique name for the account and select a Location from the list. Click Create to continue.
Configuring the new storage account
Once the storage account is created it will open automatically. Click Properties in the Settings blade to see the information about the service endpoints that can be used within your applications.
Storage Account created
Click the Manage Keys button in the navigation bar.
Manage Access Keys button
Take note of the Storage Account Name and Primary Access Key in the Manage Keys dialog box, as you will need them in the following exercise. Then, close the dialog box.
Manage Keys blade
In this task, you will use the Server Explorer window from Visual Studio to connect to your storage account. You will then create a blob container and upload a file with the Geek Quiz logo to the container.
Switch to the Visual Studio instance with the GeekQuiz solution from the previous exercise.
From the menu bar, select View and then click Server Explorer.
In Server Explorer, right-click the Azure node and select Connect to Microsoft Azure Subscription.... Then, sign in using the Microsoft account associated with your subscription.
Connect to Microsoft Azure
Expand the Azure node, right-click Storage and select Attach External Storage....
Attaching an external storage
In the Add New Storage Account dialog box, enter the Account name and Account key you obtained in the previous task and click OK.
Add New Storage Account dialog box
Your storage account should appear under the Storage node. Expand your storage account, right-click Blobs and select Create Blob Container....
Create Blob Container
In the Create Blob Container dialog box, enter images as the name for the blob container and click OK.
Create Blob Container dialog box
The new blob container should be added to the Blobs node. Change the access permissions in the container to make the container public. To do this, right-click the images container and select Properties.
Images container properties
In the Properties window, set the Public Read Access to Container.
Changing public read access property
When prompted if you are sure you want to change the public access property, click Yes.
Microsoft Visual Studio warning
In Server Explorer, right-click the images blob container and select View Blob Container.
View Blob Container
The images container should open in a new window and a legend with no entries should be shown. Click the Upload Blob icon to upload a file to the blob container.
Images container with no entries
Upload the logo-big.png file located in the Assets folder of this lab. Leave the Folder (optional) field empty.
Uploading the asset
When the upload completes, the file should be listed in the images container. Right-click the file entry and select Copy URL.
Copy blob file URL
Open Microsoft Edge and paste the URL. The following image should be shown in the browser.
logo-big.png image from Azure Blob Storage
In this task, you will configure the GeekQuiz solution to consume the image uploaded to Azure Blob Storage (instead of the image located in the web site) by adding an ASP.NET URL rewrite rule in the web.config file.
In Visual Studio, open the web.config file located in the wwwroot folder in the GeekQuiz project and locate the \
Add the following code to add a URL rewrite rule, updating the placeholder with your storage account name.
(Code Snippet - WebSitesInProduction - Ex4 - UrlRewriteRule)
<system.webServer>
<rewrite>
<rules>
<rule name="redirect-images" stopProcessing="true">
<match url="img/(.*)"/>
<action type="Redirect" url="http://[YOUR-STORAGE-ACCOUNT].blob.core.windows.net/images/{R:1}"></action>
</rule>
</rules>
</rewrite>
Note: URL rewriting is the process of intercepting an incoming Web request and redirecting the request to a different resource. The URL rewriting rules tells the rewriting engine when and where a request needs to be redirected. A rewriting rule is composed of two strings: the pattern to look for in the requested URL (usually, using regular expressions), and the string to replace the pattern with, if found. For more information, see URL Rewriting in ASP.NET.
Press CTRL + S to save the changes.
Open the Index.cshtml file located at Views | Home and add the following header row inside the div element with the container class.
<div class="row header">
<img src="@Url.Content("~/img/logo-big.png")" alt="" />
</div>
Updated index view
Now you will deploy the updated application to Azure. Open a new Git Bash console and execute the following commands to push the changes into the repository and trigger a new deployment. Update the [YOUR-APPLICATION-PATH] placeholder with the path to the GeekQuiz solution.
Note: When you deploy content to the FTP host or GIT repository of an Azure Web App you must authenticate using the deployment credentials associated with your subscription. If you do not know your deployment credentials you can easily reset them in the Azure Portal by opening the Web App Settings and clicking Deployment credentials.
cd "[YOUR-APPLICATION-PATH]"
git add .
git commit -m "Added URL rewrite rule in web.config file"
git push azure master
In this task you will use Microsoft Edge to browse the Geek Quiz application and check that the URL rewrite rule for images works and that you are redirected to the image hosted on Azure Blob Storage.
Open Microsoft Edge and navigate to your site (e.g. http://geek-quiz-site.azurewebsites.net/). Log in using the credentials you created previously.
Showing the Geek Quiz website with the image
Press F12 to launch the development tools, select the Network tab and start recording.
Starting network recording
Press CTRL + F5 to refresh the web page.
Once the page has finished loading, you should see an HTTP request for the /img/logo-big.png URL with an HTTP 301 result (redirect) and another request for http://[YOUR-STORAGE-ACCOUNT].blob.core.windows.net/images/logo-big.png URL with an HTTP 200 result.
Verifying the URL redirect
Note: This exercise is optional, since it requires support for Web Load & Performance Testing which is only available for Visual Studio 2015 Ultimate Edition. For more information on specific Visual Studio 2015 features, compare versions here.
Azure Web Apps provides the Autoscale feature for Web Apps running on a Standard plan. Autoscale lets Azure automatically scale the instance count of your Web App depending on the load. When Autoscale is enabled, Azure checks the CPU of your Web App once every five minutes and adds instances as needed at that point in time. If the CPU usage is low, Azure will remove instances once every two hours to ensure that the performance of your Web App is not degraded.
In this exercise you will go through the steps required to configure the Autoscale feature for the Geek Quiz Web App. You will verify this feature by running a Visual Studio load test to generate enough CPU load on the application to trigger an instance upgrade.
In this task you will use the Azure Portal to enable the Autoscale feature for the Web App you created in Exercise 2.
In the Azure Portal, select App Services and click the Web app you created in Exercise 2.
Navigate to the Scale Out (App Service Plan) option in the Settings blade. In the Scale setting blade, select the CPU Percentage option for the Scale by configuration.
Note: When scaling by CPU, Azure dynamically adjusts the number of instances that the Web app uses if the CPU usage changes.
Selecting to scale by CPU
Set the maximum number of Instances to 3 and the Target range to 5-25 percent. Then, click Save in the command bar at the top to save the changes.
Note: This range represents the average CPU usage for your Web App. Azure will add or remove instances to keep the CPU within this range. The minimum and maximum number of instances used for scaling is specified in the Instance configuration. Azure will never go above or beyond that limit.
The default Target range values are modified just for the purposes of this lab. By configuring the CPU range with these small values, you are increasing the chances to trigger Autoscale when a moderate load is placed on the application.
Changing the Target range to be between 5 and 25 percent
Now that Autoscale has been configured, you will create a Web Performance and Load Test Project in Visual Studio to generate some CPU load on your Web App.
Open Visual Studio Ultimate 2015 and select File | New | Project... to start a new solution.
Creating a new project
In the New Project dialog box, select Web Performance and Load Test Project under the Visual C# | Test tab. Make sure .NET Framework 4.5 is selected, name the project WebAndLoadTestProject, choose a Location and click OK.
Creating a new Web and Load Test project
Inside the WebTest1.webtest window, right-click the WebTest1 node and select Add Request.
Adding a request to WebTest1
In the Properties window of the new request node, update the Url property to point to the URL of your Microsoft Azure Web App (e.g. http://geek-quiz.azurewebsites.net/).
Changing the Url property
Back in the WebTest1.webtest window, right-click WebTest1 and select Add Loop....
Adding a loop to WebTest1
In the Add Conditional Rule and Items to Loop dialog box, select the For Loop rule and modify the following properties.
Increment Value: 1
Selecting the For Loop rule and updating the properties
Under the Items in loop section, select the request you created previously as the first and last items for the loop. Click OK to continue.
Selecting the first and last items for the loop
In Solution Explorer, right-click the WebAndLoadTestProject project, expand the Add menu and select Load Test....
Adding a Load Test to the WebAndLoadTestProject project
In the New Load Test Wizard dialog box, click Next.
New Load Test Wizard
In the Scenario page, select Do not use think times and click Next.
Selecting not to use think times
In the Load Pattern page, make sure the Constant Load option is selected. Change the User Count setting to 250 users and click Next.
Changing the user count to 250
In the Test Mix Model page, select Based on sequential test order and click Next.
Selecting the test mix model
In the Test Mix Model page, click Add... to add a test to the mix.
Adding a test to the test mix
In the Add Tests dialog box, double-click WebTest1 to add the test to the Selected tests list. Click OK to continue.
Adding the WebTest1 test
Back in the Test Mix page, click Next.
Completing the Test Mix page
In the Network Mix page, click Next.
Clicking Next in the Network Mix page
In the Browser Mix page, select Internet Explorer 11.0 as the browser type and click Next.
Selecting the browser type
In the Counter Sets page, click Next.
Clicking Next in the Counter Sets page
In the Run Settings page, select Load test duration, make sure the Run duration is set to 5 minutes and then click Finish.
Setting the load test duration to 5 minutes
In Solution Explorer, double-click the Local.settings file to explore the test settings. Make sure that Visual Studio uses your local computer to run the tests.
Note: Alternatively, you can configure your test project to run the load tests in the cloud using Visual Studio Online (VSO). VSO provides a cloud-based load testing service that simulates a more realistic load, avoiding local environment constraints like CPU capacity, available memory and network bandwidth. For more information about using VSO to run load tests, see this article.
You will now execute the load test you created in the previous task and see how your Web App behaves under load.
In Solution Explorer, double-click LoadTest1.loadtest to open the load test.
Opening LoadTest1.loadtest
In the LoadTest1.loadtest windows, right-click the Run Settings1 node and select Properties or press ALT + Enter.
Open Run Settings properties
Update the WebTest Connection Pool Size to 100 and save the changes.
Run Settings properties
In the LoadTest1.loadtest window, click the first button in the toolbox to run the load test.
Running the load test
Wait until the load test completes.
Note: The load test simulates multiple users that send requests to the site simultaneously. When the test is running, you can monitor the available counters to detect any errors, warnings or other information related to your load test run.
Load test running
Once the test completes, go back to the Azure Portal and navigate to the App Service Plan in which your web app was created. In the Scale tile under the Usage section, you should see that the number of instances has increased.
New instance automatically deployed
Note: It may take several minutes for the changes to appear in the graph (press CTRL + F5 periodically to refresh the page). If you do not see any changes, you can try the following:
- Increase the duration of the load test (e.g. to 10 minutes)
- Reduce the maximum and minimum values of the Target CPU range in the Autoscale configuration of your Web App
- Run the load test in the cloud with Visual Studio Online. More information here
In this hands-on lab, you have learned how to set up and deploy your application to a production Web App in Microsoft Azure. You started by detecting and updating your databases using Entity Framework Code First Migrations, then continued by deploying new versions of your site to different deployment slots using Git and performing rollbacks to the latest stable version of your site. Additionally, you learned how to scale your Web App using Storage to move your static content to a Blob container.
Note: You can take advantage of the Visual Studio Dev Essentials subscription in order to get everything you need to build and deploy your app on any platform.


Interface: CtpCongestion
interface CtpCongestion
Commands
command bool
isCongested
()
command void
setClientCongested
(bool congested)
Commands - Details
isCongested
command bool
isCongested
()
setClientCongested
command void
setClientCongested
(bool congested)


About
We are proud to announce a unqiue hackathon, Hack D UnhackD' where anyone can participate. Hack D UnhackD' is organized by the students of IIIT-Naya Raipur. Aim of this event is to serve the development of both programming and hardware community by exploiting the potential of young and worthy developers. Right from a Newbie to a Veteran, all can take advantage of this platform to learn, build, and create stuff from scratch.
~ Mark Zuckerberg
Themes
The themes for Hack D Unhackd' are:
- Social Welfare
- College Life
~ Gilfoyle (Silicon Valley)
Hack Time 36hrs
Universal Solution
Bug Free
Mentors
IBM
Timeline
-
Students assemble in Conference hall
-
Introduction to Hackathon, Rules and Regulations.
-
Talk by Arpit Rastogi
-
Talk by Yash Bajaj
-
GitHub Octocat contest
-
Team Registratoin ends
-
IBM Workshop and Commencement of Hackathon
-
Hackathon ends and Judges starts seeing the hacks.
-
Ending ceremony
Sponsors
~ Steve Jobs
Registration
FAQ's
- Registration - as a team or individually ?
- You can do either of them. If you do not have a team member, you will be assigned as a team with other individual participants on the event commencement day itself.
- Who can Participate?
- Anyone having a valid student ID card of their college or university is eligible to take part in the competition.
- Can a team have members from different colleges?
- Yes.
- How would I know whether I am selected or not?
- We will revert back to you with e-mails provided on the registration form.
- Will I be provided with accomodation?
- Yes, participants selected for the event will be hosted in the IIIT-NR campus. Food and accomodation for the entire duration of the event will be provided for the team members only.
- When will the registeration open?
- The registration will commence from 7 February, 2018 and will be open till 10 March, 2018.
- How many persons can be there in one team?
- One team can have a minimum of 1 and maximum of 3 members.
- Having any other query
- The HDU team is eagerly waiting for you on Facebook, Twitter or mail us instead.
- Registration - as a team or individually ?
- You can do either of them. If you do not have a team member, you will be assigned as a team with other individual participants on the event commencement day itself.
- Who can Participate?
- Anyone having a valid student ID card of their college or university is eligible to take part in the competition.
- Can a team have members from different colleges?
- Yes.
- How would I know whether I am selected or not?
- We will revert back to you with e-mails provided on the registration form.
- Will I be provided with accomodation?
- Yes, participants selected for the event will be hosted in the IIIT-NR campus. Food and accomodation for the entire duration of the event will be provided for the team members only.
- When will the registeration open?
- The registration will commence from 7 February, 2018 and will be open till 10 March, 2018.
- How many persons can be there in one team?
- One team can have a minimum of 1 and maximum of 3 members.
- Having any other query
- The HDU team is eagerly waiting for you on Facebook, Twitter or mail us instead.


Understanding the Apache Release Cycle
In general, Source Release is the key and the required content of Apache. But Binary Release is optional, Dubbo can choose whether to release binary packages to the Apache repository or to the Maven central repository.
Please refer to the following links for more information on ASF's release guide:
Preparation of Local Building Environment
Mainly including the related preparation of signature utilities and Maven repository certification
-
Install GPG,refer to https://www.gnupg.org/download/index.html
-
For example, in Mac OS
sh $ brew install gpg $ gpg --version #check version,should be 2.x
-
Generate the key with GPG
-
Generate the key according to the prompt
```shell $ gpg2 --full-gen-key gpg (GnuPG) 2.0.12; Copyright (C) 2009 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire
= key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key.
Real name: Robert Burrell Donkin Email address<EMAIL_ADDRESS>Comment: CODE SIGNING KEY You selected this USER-ID: "Robert Burrell Donkin (CODE SIGNING KEY<EMAIL_ADDRESS>Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. # enter the password, which will be used frequently when packaging. ```
-
View key id
```sh $ gpg --list-keys pub rsa4096/28681CB1 2018-04-26 # 28681CB1 is the key id uid [ultimate] liujun (apache-dubbo<EMAIL_ADDRESS>sub rsa4096/D3D6984B 2018-04-26
##### Note: Different diaplay for different version.
$ gpg --list-keys pub rsa4096 2018-11-12 [SC] 63AAE9838F4A303E40BAF5FEA3A1CA7A5D4A3981 # Last 8 character(5D4A3981) as key id，it will be used when send public key to keyserver uid [ 绝对 ] Victory Cao (CODE SIGNING KEY<EMAIL_ADDRESS>sub rsa4096 2018-11-12 [E]
send public key to keyserver via key id
$ gpg --keyserver pgpkeys.mit.edu --send-key 28681CB1
Here pgpkeys.mit.edu is a random selection of keyserver. Any key server from the list https://sks-keyservers.net/status/ is acceptable because they are automatically synchronized.
```
-
If there are multiple public keys，you can set the default key
~/.gnupg/gpg.conf
```proper
If you have more than 1 secret key in your keyring, you may want to
uncomment the following option and set your preferred keyid.
default-key 28681CB1 ```
-
If there are multiple public keys, you can also delete unuseful key：
```sh
Delete the private key first, then delete the public key.
$ gpg --yes --delete-secret-keys<EMAIL_ADDRESS>### indicate email address
$ gpg --delete-keys 1808C6444C781C0AEA0AAD4C4D6A8007D20DB8A4
```
-
config your fingerprint.
sh ### Show fingerprint info： $ gpg --fingerprint liujun pub rsa4096 2019-10-17 [SC] 1376 A2FF 67E4 C477 5739 09BD 7DB6 8550 D366 E4C0 uid [ultimate] liujun (CODE SIGNING KEY<EMAIL_ADDRESS>sub rsa4096 2019-10-17 [E]
Save the fingerprint, as above1376 A2FF 67E4 C477 5739 09BD 7DB6 8550 D366 E4C0
, to the fieldOpenPGP Public Key Primary Fingerprint
in you profile page at https://id.apache.org. -
Set up Apache central repository.
-
The parent pom of Dubbo project is apache pom
xml <parent> <groupId>org.apache</groupId> <artifactId>apache</artifactId> <version>19</version> </parent>
-
Add the following contents to .m2/settings.xml
Enter the passwords after encrypting by maven-encryption-plugin
xml <settings> ... <servers> <!-- To publish a snapshot of some part of Maven --> <server> <id>apache.snapshots.https</id> <username> <!-- YOUR APACHE LDAP USERNAME --> </username> <password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password> </server> <!-- To stage a release of some part of Maven --> <server> <id>apache.releases.https</id> <username> <!-- YOUR APACHE LDAP USERNAME --> </username> <password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password> </server> ... <!-- gpg passphrase used when generate key --> <server> <id>gpg.passphrase</id> <passphrase><!-- yourKeyPassword --></passphrase> </server> </servers> </settings>
Pack & Upload
-
Pull the new branch from the master branch as the release branch. If you want to release the ${release_version} version now, pull the new branch ${release_version}-release from 2.6.x. Then the modifications and taggings related to ${release_version} Release Candidates are applied to ${release_version}-release branch, and is merged into the master branch after the final release.
-
First of all, verify that the maven component packing, source packing, signature, etc are working properly on the ${release_version}-release branch.
shell
$ mvn clean install -Papache-release
$ mvn deploy
This push the snapshot package to the maven central repository.
-
~~Release with maven-release-plugin~~ (
Deprecated
，Skip this step and refer to next step) -
~~verify with dryRun~~
shell $ mvn release:prepare -Prelease -Darguments="-Dmaven.test.skip=true" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID -DdryRun=true
-
~~After verification, run release:prepare~~
shell $ mvn release:clean $ mvn release:prepare -Prelease -Darguments="-Dmaven.test.skip=true" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID -DpushChanges=false
If you are promted to input password for pushing to GitHub (basically including adding new commits and tags), do not input your login password of GitHub. Use
Personal access tokens
instead. You can go to https://github.com/settings/profile, clickDeveloper settings
->Personal access tokens
, and generate a new token if not. Please refer to this guide for more infomation. you need to choose the release artifactId, next artifactId and the release tag, the default tag is dubbo-parent-xxxx, you need to change it to dubbo-xxxxAfter executing the above commands, you will find that: 1. source-release.zip and bin-release.zip are generated under dubbo-distribution directory, please unzip it and check the file structure 2.
-DpushChanges=false
tells maven not to push the commits and tags to the remote repostiroy. If not specified, the version tag will be pushed to github repository, you will see a commit called[maven-release-plugin] prepare release dubbo-x.x.x
added. 3. The branch version is upgraded to ${release_version+1}-SNAPSHOT automatically. If-DpushChanges=true
is specified, the modifications will be pushed to the remote repository, you will see a commit called[maven-release-plugin] prepare for next development iteration
added.If
-DpushChanges=false
is specified, you will have to manually push the commit to remote repository before go to next step. -
~~Run release:perform~~
shell $ mvn release:perform -Prelease -Darguments="-Dmaven.test.skip=true" -DautoVersionSubmodules=true -Dusername=YOUR GITHUB ID
Maven will download the source code from the tag you just pushed, compile it, and deploy to remote maven repsoitry in staging state.
use mvn deploy
to deploy
Requirement：maven 3.5+
modify pom version from 2.7.x-SNAPSHOT to 2.7.x . You can search the full-text in the dubbo project.
$ mvn clean install -Prelease
$ mvn deploy -Prelease -DskipTests
After this, maven will deploy jar to remote maven repsoitry in staging state.
Note
When you deploy the package into repository, it will be interrupted for network. So you must restart to desploy.
The problem is that missing package occurred many times at deploying. So you should check the quantity of package, especially parent package.
Prepare Apache Release
-
Prepare the svn local environment (Apache hosting the release content of project by svn)
-
Checkout dubbo to local directory
shell
$ svn checkout https://dist.apache.org/repos/dist/dev/dubbo
Assume that the local directory is ~/apache/dubbo
- The current release version is ${release_version}, new directory
shell
$ cd ~/apache/dubbo # dubbo svn root directory
$ mkdir ${release_version}
- Add public key to KEYS file if you are the first time to be a release manager. KEYS is mainly used to allow people who participate in the voting to be imported locally to verify the correctness of the sign.
shell
$ (gpg --list-sigs <your name> && gpg --armor --export <your name>) >> KEYS
For more information on how to get your key id, please refer to this guide
-
Copy the source.zip package from the Dubbo root directory to the svn local repository dubbo/${release_version}
-
Generate sha512 sign
For source-release.zip
shell
$ shasum -a 512 apache-dubbo-${release_version}-source-release.zip >> apache-dubbo-${release_version}-source-release.zip.sha512
For bin-release.zip
Please add -b
paramter when generating sha512 for bin-release.zip, which indicates it is a binary file.
shell
$ shasum -b -a 512 apache-dubbo-${release_version}-bin-release.zip >> apache-dubbo-${release_version}-bin-release.zip.sha512
You should generate something like this:
b8f13d1df6d6c9a1facc72fafc00b2d22bea1e600517c507467d8fca2f776a7a3877101742da53114bfa629ca5b941eb4d9ef989de43f0833e2a794e7ccf5c8a *apache-dubbo-spring-boot-project-2.7.0-bin-release.zip
Note there is a *
sign before the file name.
- If the binary release is accompanied with the source release. Run the following command in the dubbo-distribution module:
shell
$ mvn install
Go to target directory, copy bin-release.zip and bin-release.zip.asc to svn local repository dubbo/${release_version}, and refer to step 6 to generate sha512 sign.
- Commit to Apache svn
shell
$ svn status
$ svn commit -m 'prepare for ${release_version} RC1'
- Close the maven staging repository
This step is required when prepare for a 2.7.0+ release, where package name has been changed to org.apache. Before that, please make sure all the maven artifacts look good. Login to http://repository.apache.org, click the Staging repositories
on the left bar, search with keyword Dubbo, and you will see a list of repositories. Find the one you just uploaded, and then click the close button in the top area. This will do some sannity check, such as gpg signature check, and checksum check. After that, a link will be shown in the summary tab in the bottom. Please copy that link, it will be used for release vote. The link should look like this: https://repository.apache.org/content/repositories/orgapachedubbo-1015.
Please be aware that it may fail when you close the repository, this is normally due to network issues, please try again if it failed. You can confirm it by clicking the
Activiey
tab next toSummary
.
Verify Release Candidates
A full check list can be found here
The verification link includes but is not limited to the following contents and forms:
Check signatures and hashes are good
check the sha512 sum
$ shasum -c apache-dubbo-${release_version}-source-release.zip.sha512
$ shasum -c apache-dubbo-${release_version}-bin-release.zip.sha512
check the gpg signarure
If it's your first time verify a release candidte, you should import public keys first.
$ curl https://dist.apache.org/repos/dist/dev/dubbo/KEYS >> KEYS # download public keys to local directory
$ gpg --import KEYS # import keys
$ gpg —edit-key liujun
> trust # type trust command
```
Now, you can verify signature with command
```sh
gpg --verify apache-dubbo-2.6.3-source-release.zip.asc apache-dubbo-2.6.3-source-release.zip
gpg --verify apache-dubbo-2.6.3-bin-release.zip.asc apache-dubbo-2.6.3-bin-release.zip
```
### Check source release file content
Unzip apache-dubbo-${release_version}-source-release.zip to the default directory and check the following:
- DISCLAIMER exists
- LICENSE and NOTICE exists and contents are good
- All files and no binary files exist
- All files has standard ASF License header
- Can compile from source
- All unit tests can pass
```sh
mvn clean test # This will run all unit tests
# you can also open rat and style plugin to check if every file meets requirements.
mvn clean test -Drat.skip=false -Dcheckstyle.skip=false
```
- Release candidates match with corresponding tags, you can find tag link and hash in vote email.
- check the version number in pom.xml are the same
- check there are no extra files or directories in the source package, for example, no empty directories or useless log files.
`diff -r rc_dir tag_dir`
- check the top n tag commits, dive into the related files and check if the source package has the same changes
### check third party dependencies
According to ASF policy, any [Category X](https://www.apache.org/legal/resolved.html#what-can-we-not-include-in-an-asf-project-category-x) dependency can not be included in ASF product, this includes common LGPL/GPL licensed dependencies. Even transitive dependencies are not allowed. Therefore we need to run the following command to ensure no such dependencies are included.
```sh
mvn license:add-third-party -Dlicense.useMissingFile
find . -name THIRD-PARTY.txt | xargs grep -E 'GPL|General Public License' | grep -v Apache | grep -v MIT | grep -v CDDL
If one dependency is dual/multiple licensed, just choose the most permissive one.
Check binary distribution file content
Unzip apache-dubbo-${release_version}-bin-release.zip and check:
- Check signatures are good
- LICENSE and NOTICE exists and contents are good
Note that if the binary distribution contains third party files, you may need to update LICENSE file by adding the 3rd party license files. If these dependency is Apache License 2.0, and it contains NOTICE file, you may also need to update NOTICE file as well.
Release vote
The voting just only one round:
Dubbo community votes and sends the voting email to<EMAIL_ADDRESS>After reviewing by community developers and winning 3 binding tickets that agree to release, you can go to the next stage of voting.
The mail template for Apache Dubbo vote：
Hello Dubbo Community,
This is a call for vote to release Apache Dubbo version 2.7.2.
The release candidates:
https://dist.apache.org/repos/dist/dev/dubbo/2.7.2/
The staging repo:
https://repository.apache.org/content/repositories/orgapachedubbo-1005
Git tag for the release:
https://github.com/apache/dubbo/tree/dubbo-2.6.2
Hash for the release tag:
afab04c53edab38d52275d2a198ea1aff7a4f41e
Release Notes:
https://github.com/apache/dubbo/releases/tag/untagged-4775c0a22c60fca55118
The artifacts have been signed with Key : 28681CB1, which can be found in the keys file:
https://dist.apache.org/repos/dist/dev/dubbo/KEYS
The vote will be open for at least 72 hours or until necessary number of votes are reached.
Please vote accordingly:
[ ] +1 approve
[ ] +0 no opinion
[ ] -1 disapprove with the reason
Thanks,
The Apache Dubbo Team
The mail template to announce the vote result:
We’ve received 3 +1 binding votes and one +1 non-binding vote:
+1 binding, Ian Luo
+1 binding, Huxing Zhang
+1 binding, Jun Liu
+1 non-binding, Jerrick
I will release this version today.
Best regards,
The Apache Dubbo Team
Official Release
When the release vote has passed,
- Add the release files to official release directory
- Remove the release files in dev directory
- Remove the the release file for the previous release under official release directory, which will be archived and can be found here
- Publish release notes on Github.
- Update the recommend dependency on Github to the latest version, also update the version in other place if necessary.
- Add the download link to official website http://dubbo.apache.org/en-us/blog/download.html, using the ASF mirror system. The latest release download link should be something like this. The download link for the previous release version should be changed like this. Please refer to the download page for more details.
- Make sure all the commits in the release branch are merged into master branch, and then remove the remote release branch. For example:
git push origin --delete 2.7.0-release
- Send mail to<EMAIL_ADDRESS>, notify the community that the release is completed. The mail template to announce release:
Hello Community,
The Apache Dubbo team is pleased to announce that the
2.6.6 has just been released.
Apache Dubbo™ is a high-performance, java based, open source
RPC framework. Dubbo offers three key functionalities, which include
interface based remote call, fault tolerance & load balancing, and
automatic service registration & discovery.
Both the source release[1] and the maven binary release[2] are available
now, you can also find the detailed release notes here[3].
If you have any usage questions, or have problems when upgrading or find
any problems about enhancements included in this release, please don’t
hesitate to let us know by sending feedback to this mailing list or filing
an issue on GitHub[4].
[1] http://dubbo.apache.org/en-us/blog/download.html
[2] https://repo1.maven.org/maven2/org/apache/dubbo/dubbo
[3] https://github.com/apache/dubbo/releases
[4] https://github.com/apache/dubbo/issues
Complete Maven Convenient Binary release
repository.apache.org The permissions of the nexus repository have been applied, see jira。
To release the maven artifacts, go to repository.apache.org, and choose the staging repository, click the release button. Wait for a moment and verify it at here, make sure your artifacts are there and correct. It will take some time to sync to maven central repository. You can verify it at here
FAQ
gpg: signing failed: Inappropriate ioctl for device
If you've encoutered this error, try the following commands:
export GPG_TTY=$(tty)


The Australian Department of Human Services provide assistance to help you with the cost of child care. You will get subsidy if you :
- Care for a child 13 or younger and not attending secondary school, unless an exemption applies
- Use an approved child care service
- Responsible for paying the child care fees
- Meet residency and immunisation requirements
Find Providers


|
Bullet Collision Detection & Physics Library
|
#include "btHingeConstraint.h"
#include "BulletDynamics/Dynamics/btRigidBody.h"
#include "LinearMath/btTransformUtil.h"
#include "LinearMath/btMinMax.h"
#include <new>
#include "btSolverBody.h"
Go to the source code of this file.
Macros | |
| #define | HINGE_USE_OBSOLETE_SOLVER false |
| #define | HINGE_USE_FRAME_OFFSET true |
Functions | |
| static btScalar | btNormalizeAnglePositive (btScalar angle) |
| static btScalar | btShortestAngularDistance (btScalar accAngle, btScalar curAngle) |
| static btScalar | btShortestAngleUpdate (btScalar accAngle, btScalar curAngle) |
Variables | |
| static btVector3 | vHinge (0, 0, btScalar(1)) |
| #define HINGE_USE_FRAME_OFFSET true |
Definition at line 26 of file btHingeConstraint.cpp.
| #define HINGE_USE_OBSOLETE_SOLVER false |
Definition at line 24 of file btHingeConstraint.cpp.
Definition at line 290 of file btHingeConstraint.cpp.
Definition at line 302 of file btHingeConstraint.cpp.
Definition at line 295 of file btHingeConstraint.cpp.


|
KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
|
Mac Donald's shock benchmark. More...
Public Member Functions | |
| def | __init__ (self, model, settings) |
| Constructor of the benchmark. More... | |
| def | Check (self) |
| This method checks if the input values have physical sense. More... | |
| def | ExecuteInitialize (self) |
| This method sets the topography, the initial conditions and the upstream/downstream boundary conditions. More... | |
Public Attributes | |
| n | |
| q | |
| g | |
| x0 | |
| x100 | |
| h0 | |
| h100 | |
| list_of_bc_processes | |
| upstream_settings | |
| downstream_settings | |
Mac Donald's shock benchmark.
This is a Mac Donald's type solution with a smooth transition and a shock in a short domain, with Manning's friction coefficient. The length of the channel is 100m and the discharge at steady state is q=2m^2/s. The flow is fluvial both upstream and downstream, the boundary conditions are fixed as follows: - upstream: q=2m^2/s - downstream: h=h_ex(100) This process sets the upstream and downstream boundary conditions. O. Delestre, C. Lucas, P.-A. Ksinant, F. Darboux, C. Laguerre, T.N.T. Vo, F. James, S. Cordier SWASHES: a compilation of Shallow Water Analytic Solutions for Hydraulic and Environmental Studies International Journal for Numerical Methods in Fluids, Wiley, 2013, 72 (3), pp.269-300.
| def mac_donald_shock_benchmark.MacDonaldShockBenchmark.__init__ | ( | self, | |
| model, | |||
| settings | |||
| ) |
Constructor of the benchmark.
The base class validates the settings and sets the model_part, the variables and the benchmark_settings
| def mac_donald_shock_benchmark.MacDonaldShockBenchmark.Check | ( | self | ) |
This method checks if the input values have physical sense.
| def mac_donald_shock_benchmark.MacDonaldShockBenchmark.ExecuteInitialize | ( | self | ) |
This method sets the topography, the initial conditions and the upstream/downstream boundary conditions.
| mac_donald_shock_benchmark.MacDonaldShockBenchmark.downstream_settings |
| mac_donald_shock_benchmark.MacDonaldShockBenchmark.g |
| mac_donald_shock_benchmark.MacDonaldShockBenchmark.h0 |
| mac_donald_shock_benchmark.MacDonaldShockBenchmark.h100 |
| mac_donald_shock_benchmark.MacDonaldShockBenchmark.list_of_bc_processes |
| mac_donald_shock_benchmark.MacDonaldShockBenchmark.n |
| mac_donald_shock_benchmark.MacDonaldShockBenchmark.q |
| mac_donald_shock_benchmark.MacDonaldShockBenchmark.upstream_settings |
| mac_donald_shock_benchmark.MacDonaldShockBenchmark.x0 |
| mac_donald_shock_benchmark.MacDonaldShockBenchmark.x100 |


@(body: String = "")
Since this is your first visit to the site, you are seeing this message. It will not be displayed on subsequent visits.


First Name is required
Last Name is required
Email is required
Password is required
Birth Date is required


This is a picture of Alice in Chains This paragraph will include an introduction to this band with information to get the viewer interested.


WITNESS LIST Jurisprudence Committee May 3, 1999-9:00A HB 381 Registering, but not testifying: For: Rushing, Allan (Tax Assessor-Collectors Association), Huntsville, Tx Tidwell, Sandy (Tax Assessors Collectors Association), Granbury, Texas HB 662 FOR: Duncan, Russ (Self), Kerrville, Tx HB 819 FOR: Martha Ross (Self), Dallas, Texas AGAINST: Shelton, David (Texas Fathers Alliance), Dallas, Texas Registering, but not testifying: For: Buchanan, Bree (Texas Council on Family Violence), Austin, Texas HB 1141 FOR: Adair, Cecelia (County and District Clerks Association), San Marcos, Tx HB 1324 ON: Pemberton, Robert H. (Supreme Court of Texas), Austin, Texas Registering, but not testifying: For: Hile, Richard C. (Texas Trial Lawyers Association), Austin, Texas HB 1411 FOR: Ross, Martha (ACES - Denton County), Dallas, Texas AGAINST: Shelton, David (Texas Fathers Alliance), Dallas, Texas Registering, but not testifying: For: Buchanan, Bree (Texas Council on Family Violence), Austin, Texas HB 1462 ON: Shinder, Dr. James N. (Self), Waco, Texas Registering, but not testifying: For: Shelton, David (Texas Fathers Alliance), Dallas, Texas HB 1507 Registering, but not testifying: For: Dobson, Casey (Block Financial Corporation), Austin, Texas Shelton, David (Texas Fathers Alliance), Dallas, Texas Against: Jones, Jerry (Texas Academy of Probate Lawyers), Austin, Texas HB 2208 Registering, but not testifying: For: Montague, David H. (Children's Advocacy Centers of Texas), Ft. Worth, Tx HB 2353 AGAINST: Schock, Cheryl (Self), Houston, Texas Registering, but not testifying: For: Shelton, David (Texas Fathers Alliance), Dallas, Texas HB 2439 Registering, but not testifying: For: Shelton, David (Texas Fathers Alliance), Dallas, Texas HB 2442 FOR: Speight, Susan (Texas Association for Marriage and Family Therapy), Austin, Texas Registering, but not testifying: For: Milholland, Dr. Tom (Texas Association of Marriage and Family Therapy), Austin, Texas HB 2846 Registering, but not testifying: For: Allison, Jim (County Judges Commissioners Association of Texas), Austin, Texas Mendez, Mark (Tarrant County Commissioners Court), Ft. Worth, Tx Against: Westbrook, Steve (Sheriffs Association of Texas), Austin, Texas HB 3271 Registering, but not testifying: On: Alexander, Cindy (Comptroller of Public Accounts), Austin, Texas Person, Leona (Comptroller of Public Accounts), Austin, Texas SB 920 FOR: Riester, Eric (Bexar County), San Antonio, Tx ON: Baldwin, Howard G. (Office of Attorney General), Austin, Texas Rhoads, Mary (Texas Association of Domestic Relations Offices), Wichita Falls SB 1479 FOR: Ashmore, Joseph E. (Self), Dallas, Texas


Details
Help Me Pick New Logo Through 3 April 2016!
I am in the process of running a logo design contest on 99designs and have created a poll with 6 of the best logo designs I've received. I would love for you to vote on the logo design. It only takes a minute.
Like Sci-Fi? Read My New Online Fiction Series.
Do you like Sci-Fi? While I finish up my next novel, I have started an online fiction series called Forbearance. Picking up from the canteen scene in Bellicose, we meet Keius Minjen, a postal marine, as he tries to survive the battle planet Guna to exact revenge and one day liberate his homeland.
Sign-up if you want me to send you news about upcoming installments of Forbearance or my other writings.
INTERACTIVE HISTORY – PETTY DETAILS
All values given below are subject to change if the situation so warrants and the GM so decrees.
* Conversion from Aria to FUDGE
* FUDGE dice
* Military values
* Disasters and critical junctures
* Number of actions
* Strategic actions
* Resolution
* Technological advancement
Conversion from Aria to FUDGE
In Aria system attributes had values either in 1-20 scale (isolation, interaction, resources, trade, exploitation, humanities) or in 0-10 (technological rate of advancement / assimilation, skills) scale. The conversion table from them to FUDGE values is given below. Please note that converting the game from Aria to FUDGE did not preserve the game intact. This is because the probability distributions of Aria and FUDGE dice are very different. However, since the original system was very interpretative, and so is the converted one, this is not a big problem.
1-20 0-10 FUDGE Value
19-20 10 Legendary +4
17-18 9 Superb +3
15-16 8 Great +2
13-14 7 Good +1
9-12 5-6 Fair 0
7-8 4 Mediocre -1
5-6 3 Poor -2
3-4 2 Terrible -3
1-2 0-1 Miserable -4
The dice distributions are a problem. If a straight equality of +4 = Legendary (Mythic) success is used, the Legendary successes suddenly become annoyingly numerous. Fortunately there is a simple solution to this. It appears that if the FUDGE results are divided by two and rounded (away from zero), a probability distribution pretty much like that of Aria is achieved. Therefore results are transformed to success values as follows:
Result Success value Effects
+7 Mythic success cool… +6,+5 Extraordinary success special/permanent effects possible +4,+3 Superior success +2 increase possible +2,+1 Complete success +1 to one or two determinants 0 Marginal result none, or balanced modifiers -1,-2 Complete failure -1 to one or two determinants -3,-4 Severe failure -2 increase possible -5,-6 Miserable failure special/permanent effects possible %3c -7 Catastrophic failure cool…
This also implies that all Aria modifiers are divided by 2 before applied to FUDGE values.
FUDGE dice
One fudge dice (1DF) is a normal D6 with two sides labeled -1, two sides 0 and two sides +1, ie. there is equal probability for -1, 0 and +1. Normally four dices are rolled and summed. This gives the range of values from -4 to +4. In the open-ended version of 4DF in case of +4 (or -4) another 4DF is rolled and in case it is positive (or negative) it is added to the result. And so on.
Value (prob.) Skill (benchmark) Task Size +4 (1%25) Legendary (guru) Epic Vast +3 (5%25) Superb (master) Huge Huge +2 (13%25) Great (expert) Very hard Great +1 (19%25) Good (professional) Hard Big/large 0 (24%25) Fair (journeyman) Normal Fair -1 (19%25) Mediocre (amateur) Easy Mediocre -2 (13%25) Poor (beginner) Routine Small -3 (5%25) Terrible (ungifted) Trivial Very small -4 (1%25) Miserable (cursed) Insignificant Catastrophe Tiny
Military values
Base for military force and size: Military type Force Size Standing Fair Scope-1 Provisional Mediocre Scope+1
Modifiers: Philosophical orientation Force Size Survival 0 +2 War +1 +1 Conquest +1 +1 Equilibrium 0 0 Peace 0 -1 Knowledge -1 -1 Military infrastructure Force Size Professional +2 0 Mercenary +1 0 Feodal +1 0 Conscript 0 0 Volunteer, militia +-1 (Phl.or.) 0 All-inclusive +-2 (Phl.or.) +2
Note: standing professional army requires money, money and money. Ie. at least Good wealth. Otherwise the economy becomes strained.
Note: the mancount of an army does not multiply by 10 for each size increase, but only by 3. The peg is … hmmm … that the smaller the total population, the bigger part of the people can take part in military effort – distances are smaller. Right? Doesn’t sound really plausible, does it?
Anyway here are some kind of figures of what different sized armies are like. Size is the size of the society. Population is the population of the society and military%25 is the percentage of the population involved in military service. Nominal is the nominal army size for that society and also shows how big is an army of size ‘Fair’. Since the size of standing forces is scope-1 and the size of provisional forces is scope+1, the mancount for standing and (maximum) provisional forces is also given for different sized societies.
Size Population Military%25 Nominal Standing# Provisional#
Vast >500 mil 0.1%25 >500’000 >200’000 >2 mil Huge 500 mil 0.1%25 500’000 200’000 2 mil Great 200 mil 0.1%25 200’000 100’000 500’000 Big 20 mil 0.5%25 100’000 30’000 200’000 Fair 2 mil 1.5%25 30’000 10’000 100’000 Mediocre 200’000 5%25 10’000 3’000 30’000 Small 20’000 15%25 3’000 1’000 10’000 Very small 2’000 50%25 1’000 300 2’000 Tiny 200 100%25 200 20 200
Secondary forces
A nation typically has primary forces (standing, in arms all or most of the time) and secondary forces (provisional, raised in times of crisis). During peace time, nations do not have armed secondary forces.
By using an action, a nation can raise (the) secondary forces. Forces equal to one less than the specified size can be raised without problems. However, each size increament after that decreases exploitation (or e.g. resources) of the society by -1 for that year. In case of severe losses in battle, these decreaments start to effect future years, too.
Supply
In battle, an army without a secure supply line suffers a -1 to force for every year it is cut off. The exceptions are small armies capable of ‘living off the land’ and rare instances where an entire clan moves with the army.
Recovering
When the army is struck by casualities, its mother society can replenish the army by up to base size -1 of the army type (primary/secondary). An army without a secure supply line to its mother society will not be able to recover. Military conflict resolution
- Battle force First determine the largest military unit on battle field. Then reduce the Force of all other military units by their size difference with that unit. The actual Force value of each side is the maximum of the Force values of its military units after reduction.
- Modifiers Take special modifiers into account: fortifications, military leaders, relative magic force, moral. If on its own ground, the defending army gets +1.
- Winning Roll 4DF for both sides. Best result wins. The win-loose ratio in manforce is 1:(Result+1). For example on winning result of +2, the win-loose ratio is 1:3. What this means is that for every dead on the winning side, there is 3 dead on the loosing side.
- Casualities To determine the actual casualities, decide what are the casualities of the winning side. As a default take the average of total army size on both sides and reduce it by two. This is modified by the bloodiness of the battle: for very savage battle reduce only by one, for a formal battle reduce by three. This is the amount of casualities taken by the winning side. The loosing side takes casualities as indicated by the win-loose ratio. The ratio can be translated to unit Size values by taking into account that the mancount triples for every Size-increase, ie. for 1:3 ratio there is +1, for 1:9 there is +2.
- Other results Besides casualities, there may be other effects: tactical advantages or special effects.
Disasters and critical junctures
There are several different kind of natural environmental disasters: an epidemic is the most common, with famine coming close second. Other disasters include a flood, hurricane, earthquake, tornado and drought. The disaster is always assumed to be worst of its kind, so the task should be appropriately difficult. The action determinant is the scope of the society +1, and the task level should be Huge or Epic (-3 or -4). In Elyria game the rounds are 1 year each. To get to the 10%25 for a 5 year period, a ~2%25 per year chance is used, or +-4 on 4DF.
Critical junctures are societal/political situations of depression or unrest. An internal critical juncture appears if:
* the ruling agency tyrannizes its people (Power - Authority >= +2)
* consent or power is very low (Consent / Power %3c= Poor)
* tolerance of any humanity is very low (Tolerance %3c= Terrible and Prevalence >= Mediocre)
* severe economic depression (Wealth %3c= Terrible)
* a severe political scandal has occured, like a negotations pledge is broken, an intrigue attempt is failed, ...
External critical juncture occures if some society has severily meddled in some other societies actions, or their relations have dropped below Poor (Relations %3c= Terrible). The difficulity of a critical juncture is either Hard or Very hard (-1 or -2).
Number of actions
The basic number of actions per society is 4. This can be varied, however:
- . extra: -1 to the extra action
- . extras: -1 to both extras, and a -1 to one additional
- . extras: -1 to all extras, and -1 to two additionals
- . extras: all at -1
You can try to remove the action penalty (on a per action basis) by stating that you go cautiously or try something small (relavetive to society scope, of course). The effects won’t be that great in the case, though. You can also submit fewer actions, ie. expend extra effort to some actions:
- . less: +1 on one action (also called a “double” action)
- . less: +1 on two actions
- . less: +2 on one action
Strategic actions
Strategic actions are announced with the keyword ‘strategic’. They stretch over a longer period of time, at least two years, at the end of which they are resolved. However, the length of the strategic action need not be declared beforehand. The player just continues the action until he feels that it is ripe time to resolve it. As specific steps, the resolution goes as follows:
- . Player declares strategic action, giving the goal or time estimation.
- . GM determines basic difficulity or gives a time estimation.
. The player need not adhere to his chosen time limit, however if he uses less time, he’ll get penalties:
1/4 of time -> -3 1/2 of time -> -2 3/4 of time -> -1
Extra time will grant positive modifiers, for example:
1.5x the time -> +1 2x the time -> +2 3x of time -> +3
. Each round the GM rolls 1DF and tells the player how the project fares. The player may also get modifiers to the strategic action by making appropriately linked normal actions.
- . On the resolve year, decided by the player, 4DF is rolled. This is summed with all previous rolls (and other possible modifiers) and this is multiplied by 4/(N+4) where N is the number of years.
Resolution
Task resolution in FUDGE is very simple: Result = Skill – Task + Dice
In IH context the Skill equals the average of the respective determinants. The task is Normal (0) by default. Both of these can be modified if the situation so warrants. Consult the list below for guidelines on modifiers:
* 0 for unsignificant change in Task/Skill or a small effect from a separately determined random component
* +-1 for a significant change or a normal effect (think about increasing task level from normal to hard)
* +-2 for a big change (task level from normal to very hard) or several (>2) significant changes
* +-3 for an overwhelming change (task level from normal to huge) or several big changes
In Elyria the actions will get bonuses for extensive planning/descriptions in the actions description.
Technological advancement
Depending on the goal the task of making technological advancement is from very hard (-2) to epic (-4) with a tactical action. With strategic action of appropriate length this is lessened to normal in proportion to basic probability:
Very hard (-2) task becomes normal with 1/0.18 = 5 years, Huge (-3) task becomes normal with 1/0.06 = 17 years Epic task (-4) task becomes normal with 1/0.01 = 100 years
Scope naturally effects the difficulity. Determinants include wealth, resources, scholastics (and possibly magic) prevalence and diversity. The social attitude towards research are governed by scholastics (and/or magic) tolerance.
The results of innovation action may be determined as follows: the success value is used as a base point pool. The various effects have point values and the GM picks out a suitable set.
+1 the attempt succeeds! +1 there is naturally a great demand for it +1 no need to spread the innovation – just by existing it benefits
everyone
+1 it spreads the customer base of the society +1 a celebrated artist/crafter who uses the new technique +1 a genuine technology advance -1 opponents can easily adapt to it (e.g. in warfare) -1 it is easy to plagiarize (e.g. a new model/fashion) -1 it’s a great innovation, but it has no real (apparent) use -1 penalties to spreading attempt (e.g. morally questionable) -1 setbacks in resources/consent/wealth, shift in power balance -1 there is a hidden flaw (e.g. it isn’t profitable after all
due to large amount of work/equipment/training)


Video Rack Guide
26 Aug 2016Intro
The video rack is a bit of a beast of a rig. Don’t be frightened by it. There are a lot of wires and components on the inside of it, but most of the actual signal flow is relatively simple. In this tutorial we’ll break down the sections of it that you need to know, and explain how the signals flow into, out of and within the rack.
Major Sections
Mac Pro Multiview Converters IO Panel USB Hub
IO Panel
This is where all the signals come into and out of the rack. As such, if you need to troubleshoot anything, this is the place to start. In an ideal world, you shouldn’t change anything further down the signal chain than the IO Panel. If changing things here doesn’t resolve your issues, think long and hard before you go changing any connections beyond this point.
IO Panel Connections
-
SWITCHED:
This is the switched power that feeds the Furman relay. It is switched via the switch on the front of the Furman, and feeds power to a number of the video converters.
-
UNSWITCHED:
- This power connection feeds :
-
Creston:
- This is the Crestron Fiber optic connection
- FW32
- NETWORK
-
NETWORK
-
USB
-
PROJECTOR:
- This is the DVI feed out to the Projector. The cable travels along the trough under FOH and comes up in Projection Boot and plugs into one of the DVI ports on the bottom of front panel of the left most rack by the projectors.
- STAGE IN SDI
- This is fed from V37 and is used to route a signal from somewhere on stage up to the KUMO
- STAGE OUT SDI
- This feeds V38 and is used to route a signal from one of the KUMO inputs to a display feed somewhere other than FOH, usually for confidence monitors or projectors on stage.
- AMX MON
- (INACTIVE?)
-
BLANK SDI
- FOH IN
- This is where the FOH HDMI cable patches into the video rack. From here it connects to the FOH HDMI AJA Converter and from there into the Decimator Multiview and on to the KUMO.
- MULTIVIEW
- This is the HDMI feed that comes from the Multiview and goes to the Right hand Display on the FOH desk.
- DISPLAY (?)
- CRESTRON
- This is the HDMI port that feeds the HDMI input on the Crestron panel on the ABP under the FOH Desk.
MIDI IN MIDI OUT * AES3 IN * AES3 OUT * KUMO L * KUMO R
Making Sense of it All
The biggest thing that will help you to understand how the video rack works is to have an understanding of the underlying signal flow. If you can understand how the signals move around and are altered in an abstract fashion, making sense of the cable mess becomes, if not easier, then a little more straightforward.
The video signals that run into, out of and around the video rack come in two ‘flavors’, SDI (specifically ____) and HDMI. Any time you need to make a change between the two formats, you need a converter. The converters in the rack take the form of the small grey AJA boxes. These AJA boxes accomplish the same function as the larger, bright red Decimator boxes that you may have seen around before.
Now, why exactly are we converting between SDI and HDMI in the first place? Why can’t we just use one format? The answer to those questions has to do with the nature of the Hardware we use for various purposes in the hall. HDMI can be thought of as more of a consumer level format. You use it to connect your laptop or computer to a monitor or TV or a small projector. SDI on the other hand, is a format used in higher profile professional hardware, such as the NEC Projector (the one in the projection booth), video switching hardware like the AJA KUMO, and for transporting video signals over distances longer than a couple feet without signal degradation.
Since we often deal with multiple video signals that we like to be able to switch between for displaying various media during shows, we use specialized hardware to be able to switch between all of our signals. For us, this hardware is the AJA KUMO 1604, which has 16 SDI inputs and 4 SDI outputs. The KUMO can route any of the 16 inputs to any of the 4 outputs and can switch back and forth relatively seamlessly, with control being accessed via a network connection than you can call up in a browser (See the ‘KUMO’ bookmark in Chrome on the FOH Mac Pro).
So if we have an HDMI signal on a laptop at FOH that we want to be able to route to a display on stage, one way to do this would be to just hook the HDMI up to a Decimator, take the SDI output, patch it to the ABP and do the opposite on stage. However if we want to be able to switch the signal that the display receives, we would want to hook the HDMI upto an HDMI to SDI converter (like the Decimator or the AJA boxes), and run the SDI into the AJA, so that we can switch the display’s feed back and forth between this HDMI and the other signal.
Multiview
So we’ve covered why we need to convert signals and how the KUMO accomplishes the signal switching we like to be able to do, but one thing we’ve yet to discuss is the Multiview and how that fits into the signal chain.
When we’re switching back and forth between the various video feeds we have to deal with during a show, it’s convenient if not necessary to be able to see what each signal is to ensure that we’re not going to go live on a blank screen or some other unsuitable feed. The Multiview allows us to quickly inspect a lot of different signals quickly to make sure everything is how it should be. However in order to do this, it needs all the signals we worry about to flow through it. This makes our lives a little more difficult in terms of troubleshooting things, and certainly makes the video rack a lot messier, but provides necessary functionality that outweighs these costs.
So to revisit our previous example, we have an HDMI signal we want to be able to get from a laptop at FOH down to a display or projector on the stage. We patch into the FOH HDMI cable that sits at the desk. That cable goes into the IO Panel on the back of the video rack. From there an HDMI cable runs inside the rack to an AJA HDMI to SDI converter. The SDI cable that comes out of that carrying our signal goes into an input on the multiview and comes out unchanged on a loop output from the multiview. From the multiview the new SDI cable patches to an input on the back of the AJA KUMO.
An important part of this is that the signal the Multiview is getting and showing us from the FOH HDMI is the same as the signal it then sends to the input on the KUMO. The multiview lets us look at a number of the signals we’re getting on the ‘Preview Monitor’, so that we can know what we’re getting before we switch our signals with the KUMO.


Patches to use 'dplyr' on remote data sources ('SQL' databases, 'Spark' 2.0.0 and above) in a reliable "generic" fashion (generic meaning user code works similarly on all such sources, without needing per-source adaption). Due to the fluctuating nature of 'dplyr'/'dbplyr'/'rlang' 'APIs' this package is going into maintenance mode. Most of the 'replyr' functions are already done better by one of the non-monolithic replacement packages: 'wrapr', 'seplyr', 'rquery', or 'cdata'.
| Version: | 0.9.8 |
| Depends: | R (≥ 3.4.0), wrapr (≥ 1.6.2) |
| Imports: | dplyr (≥ 0.7.0), rlang (≥ 0.2.0), DBI |
| Suggests: | testthat, knitr, rmarkdown, sparklyr, ggplot2, igraph, DiagrammeR, RSQLite |
| Published: | 2018-09-19 |
| Author: | John Mount [aut, cre], Nina Zumel [aut], Win-Vector LLC [cph] |
| Maintainer: | John Mount <jmount at win-vector.com> |
| BugReports: | https://github.com/WinVector/replyr/issues |
| License: | GPL-3 |
| URL: | https://github.com/WinVector/replyr/, https://winvector.github.io/replyr/ |
| NeedsCompilation: | no |
| Materials: | README NEWS |
| CRAN checks: | replyr results |
| Reference manual: | replyr.pdf |
| Vignettes: |
Join Dependency Sorting Parametric Programming in R coalesce Join Controller let Example replyr summary |
| Package source: | replyr_0.9.8.tar.gz |
| Windows binaries: | r-devel: replyr_0.9.8.zip, r-release: replyr_0.9.8.zip, r-oldrel: replyr_0.9.8.zip |
| OS X binaries: | r-release: replyr_0.9.8.tgz, r-oldrel: replyr_0.9.8.tgz |
| Old sources: | replyr archive |
Please use the canonical form https://CRAN.R-project.org/package=replyr to link to this page.


{% extends "site_base.html" %} {% load i18n %} {% load bootstrap_tags %} {% block head_title %}{% trans "Submit Proposal" %}{% endblock %} {% block body %}
{% blocktrans with title=proposal.title %}Are you sure you want to submit {{ title }}?{% endblocktrans %}
You will be able to edit your proposal after it has been submitted. The program committee may ask questions, provide feedback, and even suggest changes to your proposal as part of the review processes.


KDIGradientView
@interface KDIGradientView : UIView
#else
@interface KDIGradientView : NSView
#endif
/**
Set and get the colors of the underlying CAGradientLayer.
The array should contain either UIColor or NSColor instances.
*/
@property (copy,nonatomic,nullable) NSArray<KDIColor *> *colors;
/**
Set and get the locations of the underlying CAGradientLayer.
The gradient stops are specified as values between 0 and 1. The values must be monotonically increasing. If nil, the stops are spread uniformly across the range. Defaults to nil.
*/
@property (copy,nonatomic,nullable) NSArray<NSNumber *> *locations;
/**
The start point of the underlying CAGradientLayer.
The point is defined in unit coordinate space.
*/
@property (assign,nonatomic) KDIPoint startPoint;
/**
The end point of the underlying CAGradientLayer.
The point is defined in the unit coordinate space.
*/
@property (assign,nonatomic) KDIPoint endPoint;
@end
Undocumented
-
Set and get the colors of the underlying CAGradientLayer.
The array should contain either UIColor or NSColor instances.
Declaration
Objective-C
@property (nonatomic, copy, nullable) NSArray<UIColor *> *colors;
-
Set and get the locations of the underlying CAGradientLayer.
The gradient stops are specified as values between 0 and 1. The values must be monotonically increasing. If nil, the stops are spread uniformly across the range. Defaults to nil.
Declaration
Objective-C
@property (nonatomic, copy, nullable) NSArray<NSNumber *> *locations;
-
The start point of the underlying CAGradientLayer.
The point is defined in unit coordinate space.
Declaration
Objective-C
@property (nonatomic) CGPoint startPoint;
-
The end point of the underlying CAGradientLayer.
The point is defined in the unit coordinate space.
Declaration
Objective-C
@property (nonatomic) CGPoint endPoint;