seriously tho who tf sells at this price LOL
people that bought before May 2017 or are mining if for a decent profit
Deleted User02-Aug-18 02:54 PM
to be fair they had all the time in the world to sell before now LOL
I bought in sept (edited)
ComputerGenie02-Aug-18 02:55 PM
no part of me wants to sell at a pseudo of $1.36, but the electric co doesn't want to hear "well the market will eventually come up and I'll have double what I have now"
one must do what one must do
Deleted User02-Aug-18 02:56 PM
aka find a growhouse
and leech electricity (edited)
ComputerGenie02-Aug-18 02:57 PM
and there are those that couldn't afford to be in the markets to begin with, bought in at last year's bubble, and are letting fear finally win
Hollowman900002-Aug-18 02:58 PM
I should have sold 85% ago
ComputerGenie02-Aug-18 02:58 PM
every burger flipper in the world dreams of being the next crypto Warren Buffett
1
1
Deleted User02-Aug-18 03:00 PM
its a hard life being on grill fry, being yelled at by some 15 year old no lifer manager
TEN TO ONE
FIVE TO ONE
DO WE HAVE ANY FISH FILLETS LEFT
almost gives me ptsd
1
snowdamn02-Aug-18 03:07 PM
look for $10k BTC next run up
run up might last long
like 2-3 months
goal to hit $12k
if $10k fails, we're in for a long wait
Deleted User02-Aug-18 03:15 PM
Neo dropping so hard they about to rebrand back to antshares
ComputerGenie02-Aug-18 03:21 PM
goal to hit $12k@snowdamn what other delusions do you suffer from?(edited)
snowdamn02-Aug-18 03:22 PM
delusions? 2-3 months is a long time
ComputerGenie02-Aug-18 03:28 PM
There's no logic holding BTC over 4k, much less up to 12k
snowdamn02-Aug-18 03:28 PM
oh, this is about logic
ok
ComputerGenie02-Aug-18 03:29 PM
doesn't invest in some random guy selling a unicorn that supposedly shits rainbows
snowdamn02-Aug-18 03:29 PM
jl777?
ComputerGenie02-Aug-18 03:30 PM
a 12k BTC price is nothing more than emotion and no tech to support it
jl777 provides tech that is actually of value
ergo
BTC =
KMD =
snowdamn02-Aug-18 03:33 PM
yes, i'm here for KMD, but with the current state of crypto i can't see alts doing much with BTC < $12k. not because i say so, but because of prior trading /volume levels
ComputerGenie02-Aug-18 03:33 PM
BTC is a flaming dogshit that has no more current real-world value (other than pure hype and name recognition) than ZET
clinging to BTC and $100k pipe-dreams is Like driving around in a Model-A Ford and telling people how it's faster, better, and safer than their new car with seat-belts, air-bags, and bumpers
BTC is literally behind in the race for tech they invented ffs
snowdamn02-Aug-18 03:37 PM
you're talking tech (agree), i'm talking BTC already having futures and one step before ETF
i.e. trading
CHMEX02-Aug-18 03:37 PM
coinfairvalue.com
Looks at usage and takes out the speculation btc at 4k; kmd at 4usd(edited)
Cryptoon02-Aug-18 03:37 PM
I wonder, notaries/miners and the likes need to sell more units of kmd or btc when price in usd is lower to cover costs, wich suppresses price
1
1
1
ComputerGenie02-Aug-18 03:37 PM
And I'm saying that any future BTC price is based on unicorn farts and glitter(edited)
1
Cryptoon02-Aug-18 03:38 PM
But with price in fiat higher, they need to sell less to cover costs
Isn't that kind of a downward spiral when prices keep dropping?
Prices keep dropping -> they need to sell more units of kmd to cover fiat costs -> price drops more -> they need to sell more units of kmd to cover fiat costs -> ...
Bottom is when they turn of the miners/equipment?
ComputerGenie02-Aug-18 03:39 PM
@CHMEX I'd never seen that site before, but I like the BTC number they came up with
CHMEX02-Aug-18 03:40 PM
Yes I think they have a good algo to get the speculation out
ComputerGenie02-Aug-18 03:40 PM
I can't say I agree with a $4 KMD though
at the point where your tech has outpaced granddaddy, your value should too
CHMEX02-Aug-18 03:41 PM
Maybe add all assets and it will be higher
xRobeSx02-Aug-18 03:41 PM
I like how Tether is 0.79$ hah
snowdamn02-Aug-18 03:41 PM
they give Tether ~$0.80
do they know something we don't know?
ComputerGenie02-Aug-18 03:42 PM
do they know something we don't know?
That the USD is built on the same unicorn farts and glitter that BTC is...
CHMEX02-Aug-18 03:42 PM
Etherum transacts all assets on top of eth KMD could be seen as transacting all assetchains on top of kmd... -》 value would be higher
xRobeSx02-Aug-18 03:42 PM
good point @CHMEX
Cryptoon02-Aug-18 03:43 PM
P/E highest for KMD
CHMEX02-Aug-18 03:44 PM
And currently they look at kmd transactions even looking at payments would skyrocket their valuation(edited)
Blocktivity.info looks at payments
snowdamn02-Aug-18 03:45 PM
anything less than $50 KMD will mean crypto is officially
so don't worry too much about it
ComputerGenie02-Aug-18 03:45 PM
it's not dead, it's just an irrational market based on fuzzy feelings and not much more
snowdamn02-Aug-18 03:46 PM
it's only $10B counting total supply in > 10 years
Hollowman900002-Aug-18 03:46 PM
I could use $50 KMD right about now
Then I’d have more z9’s than @ComputerGenie
ComputerGenie02-Aug-18 03:46 PM
doubt that
Hollowman900002-Aug-18 03:47 PM
Any reason to choose the mini over the full size?
ComputerGenie02-Aug-18 03:47 PM
because mini has specs and "full size" is anyone's guess
we still don't know that z9 actually has 4x chips the minis have
if it has less chips pre-OCd, then it's less value than equiv # of minis
if it has 4x chips then value difference is nominal
Hollowman900002-Aug-18 03:48 PM
Think they’re juicing the settings to get more
ComputerGenie02-Aug-18 03:50 PM
KMD @ pseudo of $50 and you only dumping 34k will not get you above me
at a pseudo of $50, I'd be tapping my cold storage wallets(edited)
is all in and in it to win it
Hollowman900002-Aug-18 03:51 PM
Tariffs fucked you up at all or did the z9’s avoid a hit
ComputerGenie02-Aug-18 03:52 PM
I got batch 1 before that mess and we have a month to go for batch 2, so I dunno yet
Hollowman900002-Aug-18 03:52 PM
Gotcha
blackjok3r02-Aug-18 04:24 PM
@Cryptoon Notaries cant just turn their gear off if makeing a loss...
But we can downsize our servers. etc... Myself I got my own server upfront, so its purly hosting fees... and I tell you it hurts to dump KMD at these prices to pay for that even. If I was a notary from last year... I'd be cashed up and it wouldnt matter, but i started with like 3k in capital from a stress test on BarterDEX
There are notaries losing money at these prices for sure.
But I doubt those guys would be selling
Cryptoon02-Aug-18 04:32 PM
@blackjok3r yeah turning of rigs wasnt meant for the notaries
jl777c02-Aug-18 04:33 PM
painful as it might be, the selling pressure from notaries will be a very small percentage of daily volumes
blackjok3r02-Aug-18 04:33 PM
Yeah I doubt selling 500 KMD is making much diffrence.(edited)
Cryptoon02-Aug-18 04:33 PM
I wish I had a big piggybank so I could set up a private LP for notaries so they could sell to me instead of the 'open market'


Secure Impersonation using UserGroupInformation.doAs
Introduction
This document describes how a superuser can submit jobs or access hdfs on behalf of another user in a secured way.
Use Case
The code example described in the next section is applicable for the following use case.
A superuser oozie wants to submit job and access hdfs on behalf of a user joe. The superuser has kerberos credentials but user joe doesn't have any. The tasks are required to run as user joe and any file accesses on namenode are required to be done as user joe. It is required that user joe can connect to the namenode or job tracker on a connection authenticated with oozie's kerberos credentials. In other words oozie is impersonating the user joe.
Code example
In this example oozie's kerberos credentials are used for login and a proxy user ugi object is created for joe. The operations are performed within the doAs method of this proxy user ugi object.
... UserGroupInformation ugi = UserGroupInformation.createProxyUser(user, UserGroupInformation.getLoginUser()); ugi.doAs(new PrivilegedExceptionAction<Void>() { public Void run() throws Exception { //Submit a job JobClient jc = new JobClient(conf); jc.submitJob(conf); //OR access hdfs FileSystem fs = FileSystem.get(conf); fs.mkdir(someFilePath); } }
Configurations
The superuser must be configured on namenode and jobtracker to be allowed to impersonate another user. Following configurations are required.
<property> <name>hadoop.proxyuser.oozie.groups</name> <value>group1,group2</value> <description>Allow the superuser oozie to impersonate any members of the group group1 and group2</description> </property> <property> <name>hadoop.proxyuser.oozie.hosts</name> <value>host1,host2</value> <description>The superuser can connect only from host1 and host2 to impersonate a user</description> </property>
If these configurations are not present, impersonation will not be allowed and connection will fail.
Caveats
The superuser must have kerberos credentials to be able to impersonate another user. It cannot use delegation tokens for this feature. It would be wrong if superuser adds its own delegation token to the proxy user ugi, as it will allow the proxy user to connect to the service with the privileges of the superuser.
However, if the superuser does want to give a delegation token to joe, it must first impersonate joe and get a delegation token for joe, in the same way as the code example above, and add it to the ugi of joe. In this way the delegation token will have the owner as joe.


This invitation is no longer valid
Increase your chances of finding the right job
Download the JobStreet.com app


My Thinking Style and Learning
According to my personal thinking style assessment I think concrete sequentially, concrete abstractly, abstract randomly, and abstract sequentially in equal measure. I suppose this is accurate, but it doesn't really explain how my thinking works precisely. So how do I think? My mind in it's default state is extremely rigid and analytical. Even during idle conversation my mind is constantly labeling, classifying, and ultimately evaluating the validity of each statement and ordering it into a hierarchy of relative importance. This tendency can be extremely annoying!
Over the years I have tried to bring my mind into a more balanced state. It is through these efforts that I have gone from an almost completely concrete sequential thinking style to a more balanced multi-modal state. However, it is still a work in progress.
In addition to my extremely concrete sequential thinking I was also very fixed in my mindset. I thought of the world in very pessimistic terms and as a result I had little motivation to improve myself. In recent years this has given way to a much more optimistic world view where I embrace the present and look forward to the future. Like my thinking style this is a work in progress.
It is my hope that the social programming model at DBC will not only help me expand my understanding of programming, but also give me a chance to continue my efforts at being positive and maintaining a balanced thinking process that considers logic, experience, compassion, and theory in equal measure.


Millions of Arizonans affected by Equifax breach must decide now
by Amy-Xiaoshi DePaola – Cronkite NewsAs many as 3 million Arizonans whose personal data may have been exposed in a 2017 data breach have to decide by Nov. 19 whether to be part of a settlement with Equifax for that breach.
They can opt out of the settlement now and reserve the right to sue the credit monitoring firm later, or take a settlement that includes up to 10 years of credit monitoring or a cash payment that one advocate said is “less than a parking ticket.”
Even though it’s not much, consumer advocates say it’s probably better to take the sure thing.
“It’s up to the consumers, but if they back out, what do they get?” asked Ed Mierzwinski of the Arizona Public Interest Research Group.


Nathaniel Hawthorne
Nathaniel Hawthorne was a 19th century American novelist and short story writer and one of the major contributors to the development of American literature. Hawthorne was born in Salem, Massachusetts, which influenced much of his writing. Hawthorne wrote many short stories and sketches, publishing them anonymously or pseudonymously in The New-England Magazine and The United States Democratic Review, and later published them as collections under his own name. He is known today for his short stories and the novels The Scarlet Letter (1850), The House of the Seven Gables (1851), The Blithedale Romance (1852) and The Marble Faun (1860).
- Nationality: American
- Birth Date: 4 July 1804
- Death Date: 19 May 1864
Available Works
- The Scarlet Letter (1850)
- The Scarlet Letter, published in 1850, is set in Puritan New England in the 17th century. Exploring the issues of grace, legalism, and guilt, it tells the story of Hester Prynne, a Puritan woman who commits adultry then struggles to create a new life.
- The House of the Seven Gables (1851)
- The House of the Seven Gables, published in 1851, explores issues of class and the pursuit of wealth against the backdrop of decaying residences.
- The Blithedale Romance (1852)
- The Blithedale Romance is the third of the major novels of Nathaniel Hawthorne. Much of the action of the novel is set at Blithedale, a utopian socialist community that is founded upon anti-capitalist ideals, yet is destroyed by the self-interested behavior of its members.
- The Marble Faun (1860)
- The Marble Faun is a gothic romance concerning three young Americans and one young Italian Count who meet in Rome. The book features picturesque descriptions of historic art and architecture in Rome as a backdrop to a tale of mystery, murder, and romance.
Individual Passages
- The Snow-Image: A Childish Miracle
- Two children, Violet and Peony, construct a girl out of snow. This snow-image comes to life, however, their parents think she is a human girl and bring her inside where she promptly melts.


QuickStart Two
The previous QuickStart introduced configuration and mapping. This tutorial extends that information while working with a sharded data set. This tutorial also extends the mapping functionality to include list and object properties on the model class.
Sharded data introduces two complexities:
- How do I uniquely identify and locate a record, which might be on any shard?
- How do I manage data on one shard and related data on a foreign shard?
This walkthrough illustrates how both challenges can be met.
Create the Project
If you are following along at home with a new project, in Visual Studio create a new “ASP.NET Core Web Application” project. When prompted, select the “API” project type. Once the solution is created, open your dependencies and add the following NuGet packages:
- ArgentSea.Sql or ArgentSea.Pg - for SQL Sever or PostgreSQL databases respectively
- Swashbuckle.Aspnetcore - for Swagger and for invoking the API without creating a client
To follow a standard convention for an MVC project, create folders for Models, InputModels, and Stores (or “Repositories” if you prefer).
The Sample Data
Whether you simply downloaded the walkthrough or a creating a new project, you will need to create some sample shards.
Our sample application is going to track Customers. The data set is completely made-up and not especially realistic. Customers can have multiple Locations (1:∞). Customers can also have Contacts, but the Contacts can belong to more than one Customer (∞:∞). The Contact may not exist in the same shard as the Customer.
Note
The data is set up this way to illustrate one of the difficulties with sharded data: managing relationships between records that exist on different shards. In this case, a Customer may be associated with a Contact on any shard. Managing this — an managing this efficiently — adds substantial complexity.
In our sample model, the ∞:∞ relationship between a Contact and a Customer is managed by a linking table, CustomerContacts. Given the id of a local Customer, the table lists the keys of the associated Contacts. What happens if instead I have the id of a Contact and want to find all of the Customers? With only that table, it would be necessary to query every shard to determine whether they have a related Customer!
To better optimize this, the data model creates a second ContactCustomers linking table. With this approach, if I have a Contact and want to find Customers (including those in foreign shards), or Customers and want to find Contacts (again, even those not local), I can use the appropriate linking table and query only the shards with relevant records data. The downside is that when the Customer and Contact are on different shards, this relationship must be managed in different tables on different databases.
In a real implementation, it might be beneficial to include additional information in the linking tables, like including the contact name within the CustomerContact table for example, so that common lookups do not require secondary lookups from related shards just to get the contact name. The QuickStart example doesn’t do this so that it can illustrate performing these secondary lookups.
Naturally, deleting a Customer means removing the ContactCustomers link from each Contact also, which could be on any shard. This shard list must be retrieved from the CustomerContacts list before it is deleted. Updating a Customer’s Contacts could also impact multiple shards in two ways: a removed foreign-shard Contact must be deleted and a additional foreign-shard Contacts must be added.
The SQL for the sample data is found in the GitHub source repository, at https://github.com/argentsea/quickstarts/tree/master/QuickStart2.Sql/QuickStart2.Sql/SqlSetup.
The first SQL script to execute is ServerSetup.sql, which creates four databases and two logins.
Caution
The logins contain weak passwords (that are published on the Internet), so you might consider changing them; on the other hand, these will only have permission to execute procedures or functions in a specific namespace, so it’s not a big risk.
Note
Conceptually, these four databases would correspond to regional data stores in the United States, Brazil, Europe, and China. In my real global application I would replicate the data from each region to each other region. Therefore, each region would have one writable data store and three readable ones. In this way, the “local” shard is writeable, the “foreign” shards are read-only. Writes to a foreign shard must be done across the WAN. Your implementation may vary.
Our walkthrough, however, only needs four simple databases on one server. We’ll only imagine the rest.
Next, after the databases have been created, connect to each database in turn and run the ShardSetup.sql SQL script. This will created the schemas, tables, stored procedures, reference data, etc. for our sample databases.
Finally, run the shard-specific SQL scripts — ShardUS.sql, ShardBR.sql, ShardUS.sql, ShardUS.sql — within their respective databases. This will load the shard-specific sample data.
At this point, we should have four database with identical table structures. SQL Server instances should also have a identical set of stored procedures.
The Shard Set Record Key
Each of the four databases needs an identifier. ArgentSea uses a short
(Int32/tinyint) to identify each shard, and a generic type as a record id. The combination of shard id and record id becomes a “virtual compound key”, which is called a ShardKey. A thorough discussion of the options and impact is here.
Some tables may require a compound key themselves. For these, ArgentSea offers ShardKeys with generic overloads, which may consist of a shard id, record id, child id, grandchild id, and even great grandchild id! Because all the the record and child id types are generic, they can accommodate most data column types.
Configuring Connections
Because sharded data may require a large number of data connections, ArgentSea offers a more flexible way of managing this than by using connection strings. ArgentSea offers the “Hereditary Configuration Hierarchy”. This allows you to set an attribute at the parent level and all children will inherit this value, unless overwritten by a child. A more thorough discussion is here.
In our sample application, we can use the same server or host for all connections; each shard connection only changes the database name. (In a production deployment, the configuration might be exactly backwards: the databases have identical names, but each is on a different host). We also want to use the webWriter user for write connections and webReader for read connections.
So the configuration settings looks like this (with annotations):
{
"SqlShardSets": [¹
{
"ShardSetName": "Customers",²
"DataSource": ".",³
"DefaultShardId": 1,⁴
"Write": {⁵
"UserName": "webWriter",
"Password": "Pwd567890",
},
"Read": {⁵
"ApplicationIntent": "ReadOnly",
"UserName": "webReader",
"Password": "Pwd123456"
},
"Shards": [⁶
{
"ShardId": 1,⁷
"InitialCatalog": "CustomerShardUS"⁸
},
{
"ShardId": 2,⁷
"InitialCatalog": "CustomerShardEU"⁸
},
{
"ShardId": 3,⁷
"InitialCatalog": "CustomerShardBR"⁸
},
{
"ShardId": 4,⁷
"InitialCatalog": "CustomerShardZH"⁸
}
]
}
]
}
Annotations
¹ SqlShardSets
is the root JSON section for all the shard configuration metadata. It contains an array of shard sets.
² ShardSetName
is a required key for this specific shard set. Multiple shard sets are possible and each will be identified by this key. This value must exactly match the value used in your code to invoke this shard set.
³ DataSourceName
is a connection attribute. Connection attributes can appear anywhere in the hierarchy. Because it appears at the “shard set” level, all shards in the shard set will inherit this server name.
⁴ DefaultShardId
this setting determins which shard is presented as the ShardSet.DefaultShard
. This is useful for determining which shard should be actively accepting new records for this client.
⁵ Read
and Write
are peculiar, and optional, members of shard set’s “inheritance” chain, as their children are indirect. Any attributes defined in the shard set’s Write
section apply only to write connections. Likewise, for Read
connections. These values can be overwritten by shard or connection attributes.
⁶ Shards
is an array of shard connections, one for each shard in the shard set.
⁷ ShardId
is a required identifier for the shard. This value is essential for finding and identifying a sharded record. It cannot be duplicated within a shard set. The value must be a number.
⁸ InitialCatalog
is a connection attribute. Because it appears at the shard level, both read connections and write connections for this shard will inherit this value.
This hierarchy, then, defines a server name once, to be used for the entire shard set. The read and write logins are also defined once, to be used by all read or write connections in the shard set. Each shard has a distinct database name. ArgentSea can build read and write connections to each data store without the need to configure any of this data redundantly — the login, server name, and database names are each managed only once.
When you save this configuration to project’s appsettings file, be sure to update the JSON to the appropriate server references.
You might consider moving the login password information to the UserSecrets store, which is a best practice. Simply remove the password entries from the appsettings.json hierarchy and add them to the usersecrets.json file. Ideally, the password should also be changed to a different value.
User Secrets Entry
{
"SqlShardSets": [
{
"Write": {
"Password": "Pwd567890",
},
"Read": {
"Password": "Pwd123456"
}
}
]
}
Warning
The configuration arrays in appsettings.json and usersecrets.json will not match if they do not appear in exactly the same order. In this sample, we have only one shard set and the passwords are not in the Shards
array, so this is not a concern.
Creating the Models
The process of creating a model class was introduced in Quickstart 1. Essentially, it simply requires adding attributes to properties, which the Mapper can then use. This QuickStart adds four new wrinkles: shard keys, object properties, list properties, and inheritance.
The complete code is on GitHub, at https://github.com/argentsea/quickstarts/tree/master/QuickStart2.Sql/QuickStart2.Sql for SQL Server, or https://github.com/argentsea/quickstarts/tree/master/QuickStart2.Pg/QuickStart2.Pg for PostgreSQL. The classes and SQL you need are located there; it is not fully reproduced here.
To use the attributes, each Model class should include a using ArgentSea.Sql
statement.
using ArgentSea.Sql;
Advanced Model Mapping
The previous walthrough demonstrated mapping to standard .NET types like strings, numbers, and dates. This walkthrough illustrates mapping to objects, lists, and child classes.
Properties with Object Types
Our data contains Location data with latitude and longitude values. Generally, these are usually managed as a value pair. Geographic functions would likely expect a single geographic coordinates argument, rather than the two separate values. It would be handy to map data directly to/from a coordinates class, which would be a property of the Location class.
That is exactly what the MapToModel
attribute does. This attribute tells the mapper that the property is a child object that also has properties to be included in the mapping.
// The coordinates class:
public class CoordinatesModel
{
[MapToSqlFloat("Latitude")]
public double Latitude { get; set; }
[MapToSqlFloat("Longitude")]
public double Longitude { get; set; }
}
// The location, which contains the coordinates class as a property:
public class LocationModel
{
//include other properties here...
[MapToModel]
public CoordinatesModel Coordinates { get; set; }
}
If the Coordinates property is null, the Mapper will instantiate an instance before setting the properties. Of course, the CoordinatesModel must have a default constructor and the property must be settable. If you want to make the property read-only, just make sure that the Coordinates object exists:
[MapToModel]
public CoordinatesModel Coordinates { get; } = new CoordinatesModel();
Properties with List Types
One of the most expensive activities an application can do is reach out to another server. Our high-performance application should do everything possible to minimize database server round-trips. This means getting all the data necessary to populate our Customer model in a single request. The ArgentSea Mapper can automatically handle multiple results from a single request.
Our Customer can have any number of Locations. Our Customer can also have any number of Contacts. Our query returns the Customer, Location and Contact information in a single round-trip.
Tip
The base Customer record could be returned in either output parameters or in a single-row SELECT result. The first would use the Mapper’s MapOutput
method, the other requires the MapReader
method; both would use the data reader to handle list properties.
To map the multiple data reader results to the Model, we tell the Mapper the order of the results when we fetch:
var prms = new QueryParameterCollection()
.AddSqlIntInputParameter("@CustomerId", customerKey.RecordId)
.CreateOutputParameters<CustomerModel>(_logger);
return await _shardSet[customerKey].Read.MapOutputAsync<CustomerModel, LocationModel, ContactModel>(Queries.CustomerGet, prms, cancellation);
The CustomerModel
type in the first generic position tells the Mapper that that is the base object type. The Mapper will automatically create a new instance of the CustomerModel type and populate its properties from the query’s output parameters.
The LocationModel
type in the next generic position indicates that the first data reader result contains this type. The Mapper will build a list of locations, find a property of type List<LocationModel>
or IList<LocationModel>
, and set the property to the list object.
Likewise, the third generic argument tells the Mapper that the next data reader result is a list of Contacts, which the Mapper will use to populate the Contacts property.
Only a few lines of code are all that is required to manage this complex result.
Model Inheritance
The sample application has a CustomerListItem
Model, which contains a record key and a customer name property. The CustomerModel
include those same values, plus some others. By inheriting from first Model, the CustomerModel
inherits the key and an customer name, including their mapping attributes.
Because database queries often return subsets of entity columns, this object inheritance technique is useful in allowing the mapping attributes to be defined only once.
The ShardKey
The final object type which may combine multiple data records is the ShardKey type. This type is described in detail here.
[MapShardKey('c', "@CustomerId")]
[MapToSqlInt("@CustomerId")]
public ShardKey<int> CustomerKey { get; set; }
Note
The ShardKey in this example does not specify a ShardId data mapping. Because the client knows the ShardId, ArgentSea will populate the ShardId value from this configuration data. If you provide a ShardId mapping (and include the shardid argument in the MapShardKey
attribute), ArgentSea will understand that you want to use the data value instead.
The ShardKey type supports table compound keys in your sharded data. In this sample application, the Customer Location records are identified by a compound key including both a CustomerId and LocationId.
[MapShardKey('L', "CustomerId", "LocationId")]
[MapToSqlInt("CustomerId")]
[MapToSqlSmallInt("LocationId")]
public ShardKey<int, int> CustomerLocationKey { get; set; }
It would be possible for ArgentSea to include a “ShardGrandChild” struct, for three-column compound keys, (or even a “ShardGreatGrandChild”) but the need for this hasn’t arisen.
Loading the Shard Service
Loading and injecting the ArgentSea ShardSets service is identical to the Databases services explained in the last tutorial.
Calling the ArgentSea AddSqlService
extension method will load both the ArgentSea sharding and database services.
using ArgentSea.Sql;
...
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSqlServices(this.Configuration);
...
}
Note
The ShardSets
services implicitly loads the Databases
service also. Of course, if no databases are configured, the collection will be empty.
Queries and Data
Our implementation adds two static classes which help describe our data. The first is a simple list of constants, which correspond to the “origin” parameter of ShardKey
object. the “Origin” helps prevent accidental use of, say, an Inventory key to delete an Order record. By using constants, you cam more explicitly distinguish the “c” used for Contact data from the “C” used for Customer data, which might otherwise be confusing.
The second static class consolodates query definitions, as described in the Creating SQL Queries tutorial. This serves two purposes: first, it becomes easy to determine which queries are actually used by the code (on large projects, this can be difficult). Also, the optional parameter list can limit the parameters that are set when Model attributes have more parameters than the query requires.
The code for these are in the DataOrigins
and Queries
classes respectively. The code is self explainitory.
The Repository Pattern
Our sample code uses a CustomerStore
class, which implements all of the actual data access logic. The theory of the repository pattern is help contain the coupling between the data layer and application logic. We could theorectically replace the data store by only changing the CustomerStore
implementation. Because this is a web service that provides data access, the virtue of this approach is not compelling in our sample. Your milage may vary.
Because our web service does very little except read and write data, there is actually very little for the controller to do. You will find nearly all of the ArgentSea implemetation in the CustomerStore
class.
Note
The code in the CustomerStore
would have been even simpler if there was no relationship between Customers and Contacts. The sample is intended to illustrate handling a challenging sharding scenario, but without this relationship the code would have been half as long.
This class is injected into the controller, so it need to be a registered as a service at startup.
services.AddTransient<Stores.CustomerStore>();
The injectable CustomerStore
class in turn uses the injected ShardSets
service. Obtaining the injectible ShardSets
service in your repository class is straightforward:
public class CustomerStore
{
private readonly ShardSets.ShardSet _shardSet;
private readonly ILogger<CustomerStore> _logger;
public CustomerStore(ShardSets shardSets, ILogger<CustomerStore> logger)
{
_shardSet = shardSets["Customers"];
_logger = logger;
}
....
If you elected to use the ArgentSea shard sets collection instead, things are just a little more verbose:
public class CustomerStore
{
private readonly SqlShardSets<byte>.ShardSet _shardSet;
private readonly ILogger<CustomerStore> _logger;
public CustomerStore(SqlShardSets<byte> shardSets, ILogger<CustomerStore> logger)
{
_shardSet = shardSets["Customers"];
_logger = logger;
}
....
Using a ShardSet
instance, you generally simply provide a query, set parameters, and invoke a method. You can query across all shards, some shards, or within a single shard instance. Querying across all or some shards can return all results in a unified list or the first valid result.
The code necessary to query all shards is very simple:
public async Task<CustomerModel> FindByLogonName(string loginName, CancellationToken cancellation)
{
var prms = new ParameterCollection()
.AddSqlNVarCharInputParameter("@LoginName", loginName, 255)
.CreateOutputParameters<CustomerModel>(_logger);
return await _shardSet.ReadFirst.MapOutputAsync<CustomerModel, LocationModel, ContactListItem>(Queries.CustomerFind, prms, cancellation);
}
Optimizing Multi-Record Saves
The principal means of optimizing data access is to limit the number of round-trips to the database server. If the need to save ten records generates ten distinct calls to the database, the solution will not be very efficient. Unfortuantely, there is no standard way of handling multi-record saves; fortunately, there are platform-specific ways of managing it.
SQL Server uses Table Valued Parameters to save multiple records. Our sample data saves a Customer with multiple Locations and multiple Contacts. These are both passed to Table Valued Parameters. This also allows the related records to be managed in a single internally-managed (low oeverhead) transaction.
Table Valued Parameters require a “User Defined Type”, which defines the column names and types for each row. ArgentSea offers a SQL Server-specific Mapper which converts the metadata attrributes to the correct format for this paramteter. (Like its siblings, it also uses expression trees to to compile a high-performance solution when it is initially run). In our sample implementation, the combined mapping attributes created more columns than the User Defined Type required. To solve this, we can simply provide a list or array of names; then, only those are used.
var prms = new ParameterCollection()
.CreateInputParameters(customer, _logger)
.AddSqlTableValuedParameter("@Locations", customer.Locations, customerLocationTypeColumns, _logger)
.AddSqlTableValuedParameter<ContactListItem, byte, int>("@Contacts", customer.Contacts, "ShardId", System.Data.SqlDbType.TinyInt, "RecordId", System.Data.SqlDbType.Int);
In this example, there are two AddSqlTableValuedParameter
overloads, the first uses a Model and maps to the Unser Defined Type using mapping attributes; the second example maps only the key values, using the column names supplied.
You can learn more in the section on Multi-Record Saves.
Using Swagger
when you launch the web API project, it will open to thw Swagger UI by default. If you are creating a new project, open project properties, go to the Debug tab, then change the Launch browser: text value to “swagger”.
The first GET method returns all customers, across all shards (you don't want to do this in the real world).
You can selected any ShardKey in the resulting list and provide that to the other GET method, which takes a ShardKey string argument. This methods returns a complex JSON result with extended customer detail.
You can edit the customer detail and provide that to the PATCH method to update the database values.
The POST method allows you to create a new customer. If successful, it returns the ShardKey of the created record. To create a new customer you can provide the following JSON:
{
"name": "New Customer",
"type": "WalkIn",
"locations": [
{
"type": "RetailStore",
"streetAddress": "123 Main Street",
"locality": "Chicago",
"region": "IL",
"postalCode": "60612",
"iso3166": "us",
"coordinates": {
"latitude": 41.867789,
"longitude": -87.675839
}
},
{
"type": "RetailStore",
"streetAddress": "456 Oak Avenue",
"locality": "Dallas",
"region": "TX",
"postalCode": "75211",
"iso3166": "us",
"coordinates": {
"latitude": 32.730430,
"longitude": -87.675839
}
}
],
"contacts": [
{
"origin": "c",
"shardId": 1,
"recordId": 7
},
{
"origin": "c",
"shardId": 2,
"recordId": 4
},
{
"origin": "c",
"shardId": 1,
"recordId": 8
}
]
}
Finally, you can DELETE a customer by providing a ShardKey.


Gecode::ArgArrayBase< T > Class Template Reference
Inherited by Gecode::PrimArgArray< T >.Detailed Description
template<class T>
class Gecode::ArgArrayBase< T >
Base-class for argument arrays.
Argument arrays are used as convenient mechanism of passing arguments when calling functions as they combine both the size and the elements of an array. For a small number of elements, memory is allocated by creating an argument array object. Otherwise the memory is allocated from the heap.
This base-class is not to be used directly, use PrimArgArray for argument arrays of primitive types and VarArgArray for argument arrays storing variables.
Definition at line 270 of file array.icc.
Constructors and initialization | |
| ArgArrayBase (int n) | |
| Allocate array with n elements. | |
| ArgArrayBase (const ArgArrayBase< T > &a) | |
| Initialize from argument array a (copy elements). | |
| const ArgArrayBase< T > & | operator= (const ArgArrayBase< T > &a) |
| Initialize from view array a (copy elements). | |
Array size | |
| int | size (void) const |
| Return size of array (number of elements). | |
Array elements | |
| T & | operator[] (int i) |
| Return element at position i. | |
| const T & | operator[] (int i) const |
| Return element at position i. | |
Destructor | |
| ~ArgArrayBase (void) | |
| Destructor. | |
Protected Member Functions | |
| T * | allocate (int n) |
| Allocate memory for n elements. | |
Protected Attributes | |
| int | n |
| Number of elements. | |
| T * | a |
| Element array. | |
| T | onstack [onstack_size] |
| In-array storage for elements. | |
Static Protected Attributes | |
| static const int | onstack_size = 16 |
| How much elements are possible inside array. |
Constructor & Destructor Documentation
|
|
Allocate array with n elements.
|
|
|
Initialize from argument array a (copy elements).
|
|
|
Destructor.
|
Member Function Documentation
|
|
Allocate memory for n elements.
|
|
|
Initialize from view array a (copy elements).
|
|
|
Return size of array (number of elements).
|
|
|
Return element at position i.
Reimplemented in Gecode::BoolVarArgs. |
|
|
Return element at position i.
Reimplemented in Gecode::BoolVarArgs. |
Member Data Documentation
|
|
Number of elements.
|
|
|
Element array.
|
|
|
How much elements are possible inside array.
|
|
|
In-array storage for elements.
|
The documentation for this class was generated from the following file:
- gecode/kernel/array.icc (Revision: 3741)


RectTransform¶
The RectTransform module.
RectTransform add_reapplyDrivenProperties¶
-
UnityEngineRectTransform.
__add_reapplyDrivenProperties__UnityEngineRectTransformReapplyDrivenProperties__SystemVoid
(UnityEngine.RectTransform+ReapplyDrivenProperties value)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform DetachChildren¶
-
UnityEngineRectTransform.
__DetachChildren__SystemVoid
(UnityEngine.RectTransform instance)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
op_Equality¶
-
UnityEngineRectTransform.
__op_Equality__UnityEngineObject_UnityEngineObject__SystemBoolean
(UnityEngine.Object UnityEngine.Object)¶
outputs: unnamed (Boolean
)
flow: none
RectTransform Equals¶
-
UnityEngineRectTransform.
__Equals__SystemObject__SystemBoolean
(UnityEngine.RectTransform instanceSystem.Object other)¶
outputs: unnamed (Boolean
)
flow: none
RectTransform Find¶
-
UnityEngineRectTransform.
__Find__SystemString__UnityEngineTransform
(UnityEngine.RectTransform instanceSystem.String n)¶
outputs: unnamed (Transform
)
flow: none
RectTransform ForceUpdateRectTransforms¶
-
UnityEngineRectTransform.
__ForceUpdateRectTransforms__SystemVoid
(UnityEngine.RectTransform instance)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform get_anchoredPosition¶
-
UnityEngineRectTransform.
__get_anchoredPosition__UnityEngineVector2
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector2
)
flow: none
RectTransform get_anchoredPosition3D¶
-
UnityEngineRectTransform.
__get_anchoredPosition3D__UnityEngineVector3
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform get_anchorMax¶
-
UnityEngineRectTransform.
__get_anchorMax__UnityEngineVector2
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector2
)
flow: none
RectTransform get_anchorMin¶
-
UnityEngineRectTransform.
__get_anchorMin__UnityEngineVector2
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector2
)
flow: none
RectTransform get_childCount¶
-
UnityEngineRectTransform.
__get_childCount__SystemInt32
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Int32
)
flow: none
RectTransform get_eulerAngles¶
-
UnityEngineRectTransform.
__get_eulerAngles__UnityEngineVector3
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform get_forward¶
-
UnityEngineRectTransform.
__get_forward__UnityEngineVector3
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform get_gameObject¶
-
UnityEngineRectTransform.
__get_gameObject__UnityEngineGameObject
(UnityEngine.RectTransform instance)¶
outputs: unnamed (GameObject
)
flow: none
RectTransform get_hasChanged¶
-
UnityEngineRectTransform.
__get_hasChanged__SystemBoolean
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Boolean
)
flow: none
RectTransform get_hierarchyCapacity¶
-
UnityEngineRectTransform.
__get_hierarchyCapacity__SystemInt32
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Int32
)
flow: none
RectTransform get_hierarchyCount¶
-
UnityEngineRectTransform.
__get_hierarchyCount__SystemInt32
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Int32
)
flow: none
RectTransform get_localEulerAngles¶
-
UnityEngineRectTransform.
__get_localEulerAngles__UnityEngineVector3
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform get_localPosition¶
-
UnityEngineRectTransform.
__get_localPosition__UnityEngineVector3
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform get_localRotation¶
-
UnityEngineRectTransform.
__get_localRotation__UnityEngineQuaternion
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Quaternion
)
flow: none
RectTransform get_localScale¶
-
UnityEngineRectTransform.
__get_localScale__UnityEngineVector3
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform get_localToWorldMatrix¶
-
UnityEngineRectTransform.
__get_localToWorldMatrix__UnityEngineMatrix4x4
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Matrix4x4
)
flow: none
RectTransform get_lossyScale¶
-
UnityEngineRectTransform.
__get_lossyScale__UnityEngineVector3
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform get_name¶
-
UnityEngineRectTransform.
__get_name__SystemString
(UnityEngine.RectTransform instance)¶
outputs: unnamed (String
)
flow: none
RectTransform get_offsetMax¶
-
UnityEngineRectTransform.
__get_offsetMax__UnityEngineVector2
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector2
)
flow: none
RectTransform get_offsetMin¶
-
UnityEngineRectTransform.
__get_offsetMin__UnityEngineVector2
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector2
)
flow: none
RectTransform get_parent¶
-
UnityEngineRectTransform.
__get_parent__UnityEngineTransform
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Transform
)
flow: none
RectTransform get_pivot¶
-
UnityEngineRectTransform.
__get_pivot__UnityEngineVector2
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector2
)
flow: none
RectTransform get_position¶
-
UnityEngineRectTransform.
__get_position__UnityEngineVector3
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform get_rect¶
-
UnityEngineRectTransform.
__get_rect__UnityEngineRect
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Rect
)
flow: none
RectTransform get_right¶
-
UnityEngineRectTransform.
__get_right__UnityEngineVector3
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform get_root¶
-
UnityEngineRectTransform.
__get_root__UnityEngineTransform
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Transform
)
flow: none
RectTransform get_rotation¶
-
UnityEngineRectTransform.
__get_rotation__UnityEngineQuaternion
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Quaternion
)
flow: none
RectTransform get_sizeDelta¶
-
UnityEngineRectTransform.
__get_sizeDelta__UnityEngineVector2
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector2
)
flow: none
RectTransform get_transform¶
-
UnityEngineRectTransform.
__get_transform__UnityEngineTransform
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Transform
)
flow: none
RectTransform get_up¶
-
UnityEngineRectTransform.
__get_up__UnityEngineVector3
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform get_worldToLocalMatrix¶
-
UnityEngineRectTransform.
__get_worldToLocalMatrix__UnityEngineMatrix4x4
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Matrix4x4
)
flow: none
RectTransform GetChild¶
-
UnityEngineRectTransform.
__GetChild__SystemInt32__UnityEngineTransform
(UnityEngine.RectTransform instanceSystem.Int32 index)¶
outputs: unnamed (Transform
)
flow: none
RectTransform GetComponent¶
-
UnityEngineRectTransform.
__GetComponent__SystemType__UnityEngineComponent
(UnityEngine.RectTransform instanceSystem.Type type)¶
outputs: unnamed (Component
)
flow: none
RectTransform GetComponentInChildren¶
-
UnityEngineRectTransform.
__GetComponentInChildren__SystemBoolean__T
(UnityEngine.RectTransform instanceSystem.Boolean includeInactiveSystem.Type type)¶
outputs: T (Object
)
flow: none
RectTransform GetComponentInParent¶
-
UnityEngineRectTransform.
__GetComponentInParent__SystemType__UnityEngineComponent
(UnityEngine.RectTransform instanceSystem.Type t)¶
outputs: unnamed (Component
)
flow: none
RectTransform GetComponents¶
-
UnityEngineRectTransform.
__GetComponents__ListT__SystemVoid
(UnityEngine.RectTransform instanceSystem.Collections.Generic.List`1[UnityEngine.Object] results)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform GetComponentsInChildren¶
-
UnityEngineRectTransform.
__GetComponentsInChildren__SystemBoolean_ListT__SystemVoid
(UnityEngine.RectTransform instanceSystem.Boolean includeInactiveSystem.Collections.Generic.List`1[UnityEngine.Object] result)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform GetComponentsInParent¶
-
UnityEngineRectTransform.
__GetComponentsInParent__SystemBoolean_ListT__SystemVoid
(UnityEngine.RectTransform instanceSystem.Boolean includeInactiveSystem.Collections.Generic.List`1[UnityEngine.Object] results)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform GetEnumerator¶
-
UnityEngineRectTransform.
__GetEnumerator__SystemCollectionsIEnumerator
(UnityEngine.RectTransform instance)¶
outputs: unnamed (IEnumerator
)
flow: none
RectTransform GetHashCode¶
-
UnityEngineRectTransform.
__GetHashCode__SystemInt32
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Int32
)
flow: none
RectTransform GetInstanceID¶
-
UnityEngineRectTransform.
__GetInstanceID__SystemInt32
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Int32
)
flow: none
RectTransform GetLocalCorners¶
-
UnityEngineRectTransform.
__GetLocalCorners__UnityEngineVector3Array__SystemVoid
(UnityEngine.RectTransform instanceUnityEngine.Vector3[] fourCornersArray)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform GetSiblingIndex¶
-
UnityEngineRectTransform.
__GetSiblingIndex__SystemInt32
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Int32
)
flow: none
RectTransform GetType¶
-
UnityEngineRectTransform.
__GetType__SystemType
(UnityEngine.RectTransform instance)¶
outputs: unnamed (Type
)
flow: none
RectTransform GetWorldCorners¶
-
UnityEngineRectTransform.
__GetWorldCorners__UnityEngineVector3Array__SystemVoid
(UnityEngine.RectTransform instanceUnityEngine.Vector3[] fourCornersArray)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
op_Implicit¶
-
UnityEngineRectTransform.
__op_Implicit__UnityEngineObject__SystemBoolean
(UnityEngine.Object)¶
outputs: unnamed (Boolean
)
flow: none
op_Inequality¶
-
UnityEngineRectTransform.
__op_Inequality__UnityEngineObject_UnityEngineObject__SystemBoolean
(UnityEngine.Object UnityEngine.Object)¶
outputs: unnamed (Boolean
)
flow: none
RectTransform InverseTransformDirection¶
-
UnityEngineRectTransform.
__InverseTransformDirection__UnityEngineVector3__UnityEngineVector3
(UnityEngine.RectTransform instanceUnityEngine.Vector3 direction)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform InverseTransformPoint¶
-
UnityEngineRectTransform.
__InverseTransformPoint__UnityEngineVector3__UnityEngineVector3
(UnityEngine.RectTransform instanceUnityEngine.Vector3 position)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform InverseTransformVector¶
-
UnityEngineRectTransform.
__InverseTransformVector__UnityEngineVector3__UnityEngineVector3
(UnityEngine.RectTransform instanceUnityEngine.Vector3 vector)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform IsChildOf¶
-
UnityEngineRectTransform.
__IsChildOf__UnityEngineTransform__SystemBoolean
(UnityEngine.RectTransform instanceUnityEngine.Transform parent)¶
outputs: unnamed (Boolean
)
flow: none
RectTransform LookAt¶
-
UnityEngineRectTransform.
__LookAt__UnityEngineTransform__SystemVoid
(UnityEngine.RectTransform instanceUnityEngine.Transform target)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform remove_reapplyDrivenProperties¶
-
UnityEngineRectTransform.
__remove_reapplyDrivenProperties__UnityEngineRectTransformReapplyDrivenProperties__SystemVoid
(UnityEngine.RectTransform+ReapplyDrivenProperties value)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform Rotate¶
-
UnityEngineRectTransform.
__Rotate__UnityEngineVector3_SystemSingle__SystemVoid
(UnityEngine.RectTransform instanceUnityEngine.Vector3 axisSystem.Single angle)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform RotateAround¶
-
UnityEngineRectTransform.

__SetAsFirstSibling__SystemVoid
(UnityEngine.RectTransform instance)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform SetAsLastSibling¶
-
UnityEngineRectTransform.
__SetAsLastSibling__SystemVoid
(UnityEngine.RectTransform instance)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform SetInsetAndSizeFromParentEdge¶
-
UnityEngineRectTransform.
__SetInsetAndSizeFromParentEdge__UnityEngineRectTransformEdge_SystemSingle_SystemSingle__SystemVoid
(UnityEngine.RectTransform instanceUnityEngine.RectTransform+Edge edgeSystem.Single insetSystem.Single size)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform SetParent¶
-
UnityEngineRectTransform.
__SetParent__UnityEngineTransform__SystemVoid
(UnityEngine.RectTransform instanceUnityEngine.Transform p)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform SetPositionAndRotation¶
-
UnityEngineRectTransform.
__SetPositionAndRotation__UnityEngineVector3_UnityEngineQuaternion__SystemVoid
(UnityEngine.RectTransform instanceUnityEngine.Vector3 positionUnityEngine.Quaternion rotation)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform SetSiblingIndex¶
-
UnityEngineRectTransform.
__SetSiblingIndex__SystemInt32__SystemVoid
(UnityEngine.RectTransform instanceSystem.Int32 index)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform SetSizeWithCurrentAnchors¶
-
UnityEngineRectTransform.
__SetSizeWithCurrentAnchors__UnityEngineRectTransformAxis_SystemSingle__SystemVoid
(UnityEngine.RectTransform instanceUnityEngine.RectTransform+Axis axisSystem.Single size)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
RectTransform ToString¶
-
UnityEngineRectTransform.
__ToString__SystemString
(UnityEngine.RectTransform instance)¶
outputs: unnamed (String
)
flow: none
RectTransform TransformDirection¶
-
UnityEngineRectTransform.
__TransformDirection__UnityEngineVector3__UnityEngineVector3
(UnityEngine.RectTransform instanceUnityEngine.Vector3 direction)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform TransformPoint¶
-
UnityEngineRectTransform.
__TransformPoint__UnityEngineVector3__UnityEngineVector3
(UnityEngine.RectTransform instanceUnityEngine.Vector3 position)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform TransformVector¶
-
UnityEngineRectTransform.
__TransformVector__UnityEngineVector3__UnityEngineVector3
(UnityEngine.RectTransform instanceUnityEngine.Vector3 vector)¶
outputs: unnamed (Vector3
)
flow: none
RectTransform Translate¶
-
UnityEngineRectTransform.
__Translate__UnityEngineVector3__SystemVoid
(UnityEngine.RectTransform instanceUnityEngine.Vector3 translation)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed


lib
/
fyi.modules.auth
Package fyi.modules.auth
Types
Auth
class
Auth
Responsible for handling all Authentication related requests.


lwIP code documentationslipif.hGo to the documentation of this file.00001 /* 00002 * Copyright (c) 2001, Swedish Institute of Computer Science. 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions 00007 * are met: 00008 * 1. Redistributions of source code must retain the above copyright 00009 * notice, this list of conditions and the following disclaimer. 00010 * 2. Redistributions in binary form must reproduce the above copyright 00011 * notice, this list of conditions and the following disclaimer in the 00012 * documentation and/or other materials provided with the distribution. 00013 * 3. Neither the name of the Institute nor the names of its contributors 00014 * may be used to endorse or promote products derived from this software 00015 * without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 00018 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00019 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00020 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 00021 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00022 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 00023 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00024 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00025 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 00026 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00027 * SUCH DAMAGE. 00028 * 00029 * This file is part of the lwIP TCP/IP stack. 00030 * 00031 * Author: Adam Dunkels<EMAIL_ADDRESS>00032 * 00033 */ 00034 #ifndef __NETIF_SLIPIF_H__ 00035 #define __NETIF_SLIPIF_H__ 00036 00037 #include "lwip/netif.h" 00038 00039 err_t slipif_init(struct netif * netif); 00040 00041 #endif 00042 |


| Top |
| int | vips_conv () |
| int | vips_convf () |
| int | vips_convi () |
| int | vips_conva () |
| int | vips_convsep () |
| int | vips_convasep () |
| int | vips_compass () |
| int | vips_gaussblur () |
| int | vips_sharpen () |
| int | vips_spcor () |
| int | vips_fastcor () |
These operations convolve an image in some way, or are operations based on simple convolution, or are useful with convolution.
int vips_conv (VipsImage *in
,VipsImage **out
,VipsImage *mask
,...
);
Optional arguments:
precision
: VipsPrecision, calculation accuracy
layers
: gint
, number of layers for approximation
cluster
: gint
, cluster lines closer than this distance
Convolution.
Perform a convolution of in
with mask
.
Each output pixel is calculated as:
sigma[i]{pixel[i] * mask[i]} / scale + offset
where scale and offset are part of mask
.
If precision
is VIPS_PRECISION_INTEGER, then
elements of mask
are converted to
integers before convolution, using rint()
,
and the output image
always has the same VipsBandFormat as the input image.
For VIPS_FORMAT_UCHAR images, vips_conv()
uses a fast vector path based on
fixed-point arithmetic. This can produce slightly different results.
Disable the vector path with --vips-novector
or VIPS_NOVECTOR
or
vips_vector_set_enabled()
.
If precision
is VIPS_PRECISION_FLOAT then the convolution is performed
with floating-point arithmetic. The output image
is always VIPS_FORMAT_FLOAT unless in
is VIPS_FORMAT_DOUBLE, in which case
out
is also VIPS_FORMAT_DOUBLE.
If precision
is VIPS_PRECISION_APPROXIMATE then, like
VIPS_PRECISION_INTEGER, mask
is converted to int before convolution, and
the output image
always has the same VipsBandFormat as the input image.
Larger values for layers
give more accurate
results, but are slower. As layers
approaches the mask radius, the
accuracy will become close to exact convolution and the speed will drop to
match. For many large masks, such as Gaussian, n_layers
need be only 10% of
this value and accuracy will still be good.
Smaller values of cluster
will give more accurate results, but be slower
and use more memory. 10% of the mask radius is a good rule of thumb.
See also: vips_convsep()
.
in |
input image |
|
out |
output image |
|
mask |
convolve with this mask |
|
... |
|
int vips_convf (VipsImage *in
,VipsImage **out
,VipsImage *mask
,...
);
Convolution. This is a low-level operation, see vips_conv()
for something
more convenient.
Perform a convolution of in
with mask
.
Each output pixel is
calculated as sigma[i]{pixel[i] * mask[i]} / scale + offset, where scale
and offset are part of mask
.
The convolution is performed with floating-point arithmetic. The output image
is always VIPS_FORMAT_FLOAT unless in
is VIPS_FORMAT_DOUBLE, in which case
out
is also VIPS_FORMAT_DOUBLE.
See also: vips_conv()
.
in |
input image |
|
out |
output image |
|
mask |
convolve with this mask |
|
... |
|
int vips_convi (VipsImage *in
,VipsImage **out
,VipsImage *mask
,...
);
Integer convolution. This is a low-level operation, see vips_conv()
for
something more convenient.
mask
is converted to an integer mask with rint()
of each element, rint of
scale and rint of offset. Each output pixel is then calculated as
sigma[i]{pixel[i] * mask[i]} / scale + offset
The output image always has the same VipsBandFormat as the input image.
For VIPS_FORMAT_UCHAR images, vips_convi()
uses a fast vector path based on
fixed-point arithmetic. This can produce slightly different results.
Disable the vector path with --vips-novector
or VIPS_NOVECTOR
or
vips_vector_set_enabled()
.
See also: vips_conv()
.
in |
input image |
|
out |
output image |
|
mask |
convolve with this mask |
|
... |
|
int vips_conva (VipsImage *in
,VipsImage **out
,VipsImage *mask
,...
);
Optional arguments:
Perform an approximate integer convolution of in
with mask
.
This is a low-level operation, see
vips_conv()
for something more convenient.
The output image
always has the same VipsBandFormat as the input image.
Elements of mask
are converted to
integers before convolution.
Larger values for layers
give more accurate
results, but are slower. As layers
approaches the mask radius, the
accuracy will become close to exact convolution and the speed will drop to
match. For many large masks, such as Gaussian, layers
need be only 10% of
this value and accuracy will still be good.
Smaller values of cluster
will give more accurate results, but be slower
and use more memory. 10% of the mask radius is a good rule of thumb.
See also: vips_conv()
.
in |
input image |
|
out |
output image |
|
mask |
convolution mask |
|
... |
|
int vips_convsep (VipsImage *in
,VipsImage **out
,VipsImage *mask
,...
);
Optional arguments:
precision
: calculation accuracy
layers
: number of layers for approximation
cluster
: cluster lines closer than this distance
Perform a separable convolution of in
with mask
.
See vips_conv()
for a detailed description.
The mask must be 1xn or nx1 elements.
The image is convolved twice: once with mask
and then again with mask
rotated by 90 degrees. This is much faster for certain types of mask
(gaussian blur, for example) than doing a full 2D convolution.
See also: vips_conv()
, vips_gaussmat()
.
in |
input image |
|
out |
output image |
|
mask |
convolution mask |
|
... |
|
int vips_convasep (VipsImage *in
,VipsImage **out
,VipsImage *mask
,...
);
Optional arguments:
layers
: gint
, number of layers for approximation
Approximate separable integer convolution. This is a low-level operation, see
vips_convsep()
for something more convenient.
The image is convolved twice: once with mask
and then again with mask
rotated by 90 degrees.
mask
must be 1xn or nx1 elements.
Elements of mask
are converted to
integers before convolution.
Larger values for layers
give more accurate
results, but are slower. As layers
approaches the mask radius, the
accuracy will become close to exact convolution and the speed will drop to
match. For many large masks, such as Gaussian, layers
need be only 10% of
this value and accuracy will still be good.
The output image always has the same VipsBandFormat as the input image.
See also: vips_convsep()
.
in |
input image |
|
out |
output image |
|
mask |
convolve with this mask |
|
... |
|
int vips_gaussblur (VipsImage *in
,VipsImage **out
,double sigma
,...
);
Optional arguments:
precision
: VipsPrecision for blur, default VIPS_PRECISION_INTEGER
min_ampl
: minimum amplitude, default 0.2
This operator runs vips_gaussmat()
and vips_convsep()
for you on an image.
Set min_ampl
smaller to generate a larger, more accurate mask. Set sigma
larger to make the blur more blurry.
See also: vips_gaussmat()
, vips_convsep()
.
in |
input image |
|
out |
output image |
|
sigma |
how large a mask to use |
|
... |
|
int vips_sharpen (VipsImage *in
,VipsImage **out
,...
);
Optional arguments:
sigma
: sigma of gaussian
x1
: flat/jaggy threshold
y2
: maximum amount of brightening
y3
: maximum amount of darkening
m1
: slope for flat areas
m2
: slope for jaggy areas
Selectively sharpen the L channel of a LAB image. The input image is transformed to VIPS_INTERPRETATION_LABS.
The operation performs a gaussian blur of radius radius
and subtracts
from in
to generate a high-frequency signal. This signal is passed
through a lookup table formed from the five parameters and added back to
in
.
The lookup table is formed like this:
^ y2 |- - - - - ----------- | / | / slope m2 | .../ -x1 | ... | -------------------...----------------------> | ... | x1 |... slope m1 / | / m2 | / | / | / | / | ______/ _ _ _ _ _ _ | -y3 |
For screen output, we suggest the following settings (the defaults):
sigma == 0.5 x1 == 2 y2 == 10 (don't brighten by more than 10 L*) y3 == 20 (can darken by up to 20 L*) m1 == 0 (no sharpening in flat areas) m2 == 3 (some sharpening in jaggy areas)
If you want more or less sharpening, we suggest you just change the m2 parameter.
The sigma
parameter changes the width of the fringe and can be
adjusted according to the output printing resolution. As an approximate
guideline, use 0.5 for 4 pixels/mm (display resolution),
1.0 for 12 pixels/mm and 1.5 for 16 pixels/mm (300 dpi == 12
pixels/mm). These figures refer to the image raster, not the half-tone
resolution.
See also: vips_conv()
.
int vips_spcor (VipsImage *in
,VipsImage *ref
,VipsImage **out
,...
);
Calculate a correlation surface.
ref
is placed at every position in in
and the correlation coefficient
calculated. The output
image is always float.
The output image is the same size as the input. Extra input edge pixels are made by copying the existing edges outwards.
The correlation coefficient is calculated as:
sumij (ref(i,j)-mean(ref))(inkl(i,j)-mean(inkl)) c(k,l) = ------------------------------------------------ sqrt(sumij (ref(i,j)-mean(ref))^2) * sqrt(sumij (inkl(i,j)-mean(inkl))^2)
where inkl is the area of in
centred at position (k,l).
from Niblack "An Introduction to Digital Image Processing", Prentice/Hall, pp 138.
If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.
The output image is always float, unless either of the two inputs is double, in which case the output is also double.
See also: vips_fastcor()
.
in |
input image |
|
ref |
reference image |
|
out |
output image |
|
... |
|
int vips_fastcor (VipsImage *in
,VipsImage *ref
,VipsImage **out
,...
);
Calculate a fast correlation surface.
ref
is placed at every position in in
and the sum of squares of
differences calculated.
The output image is the same size as the input. Extra input edge pixels are made by copying the existing edges outwards.
If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.
The output type is uint if both inputs are integer, float if both are float or complex, and double if either is double or double complex. In other words, the output type is just large enough to hold the whole range of possible values.
See also: vips_spcor()
.
in |
input image |
|
ref |
reference image |
|
out |
output image |
|
... |
|


Issue 4509: "Run to line" debugging shortcut is activated neither by Ctrl-click nor by middle-click on line number
Run To This Line via context menu
Steps to reproduce
Open Firebug
Enable the Console and Script and switch to the Script panel
Reload the page ⇒ Script execution should stop at line 10 (debugger;)
Right-click on line 12 (console.log("Run To Line should stop here.");) and choose Run To This Line from the context menu ⇒ The execution indicator should now stand at line 12 (console.log("Run To Line should stop here.");)
Switch to the Console panel ⇒ That's the first log line. should be listed inside the console
Expected result
Run To This Line should execute the script to the clicked line
Run to line via Ctrl/⌘+click on Breakpoint Column
Steps to reproduce
Open Firebug
Enable the Console and Script and switch to the Script panel
Reload the page ⇒ Script execution should stop at line 10 (debugger;)
Hold down Ctrl/⌘ and click on the Breakpoint Column at line 12 (console.log("Run To Line should stop here.");) ⇒ The execution indicator should now stand at line 12 (console.log("Run To Line should stop here.");)
Switch to the Console panel ⇒ That's the first log line. should be listed inside the console
Expected result
Ctrl/⌘+clicking in the Breakpoint Column should execute the script to the clicked line
Run to line via middle-click on Breakpoint Column
Steps to reproduce
Open Firebug
Enable the Console and Script and switch to the Script panel
Reload the page ⇒ Script execution should stop at line 10 (debugger;)
Middle-click on the Breakpoint Column at line 12 (console.log("Run To Line should stop here.");) ⇒ The execution indicator should now stand at line 12 (console.log("Run To Line should stop here.");)
Switch to the Console panel ⇒ That's the first log line. should be listed inside the console
Expected result
Middle-clicking in the Breakpoint Column should execute the script to the clicked line


Hello there, awesome person!
Be kind, always.
Here is a list of my favourite websites!
https://www.google.com
My favorite site is
GitHub
!
https://www.youtube.com


Generate Code Documentation
Spinx includes a feature it calls autodoc. The idea is that if you run the generator a file will be created in
reStructuredText for each code file found. In turn, those files, will include directives that generate documentation
from the code comments.
Generate code documentation RST files Automatically
- There are two parts to the sphinx code documentation engine I want to highlight
- Directives that go into an RST file to read code files. The documentation you do in the code is read into
- the template and output in a format such as HTML. You can hand code RST files.
- sphinx-apidoc build engine which will generate RST files based on the structure of your code files.
In this project there is a make.bat file for Windows, and Makefile for linux, which has been modified to support
using sphinx-apidoc to generate the RST files.


headache treatment PTH subjects study studies acute included n = ) preventive Headache pharmacological reported {border-style px;} #ffffff;} data mean migraine patients used injury following nerve post-traumatic prophylactic relief retrospective Pharmacological Treatment. defined frequency metoclopramide articles clinical follow-up received response children medication outcome primary review search time traumatic trials Acute Ashina blocks brain mTBI provide International addition, future px; reduction topiramate treatment. {font-family PTH. Post-traumatic RCTs Single-center, age drugs font-size inclusion patient prescribed rate) seven years days months GON Pain Preventive TBI Treatment criteria disability double; effect follow-up. investigated mild month number open-label pediatric percent peripheral placebo-controlled resolution sustained treatments (median ./s--- Cephalalgia. Classification Follow-up abortive amitriptyline attributed based border-color border-width conducted decrease efficacy group guidelines headaches improved intervention intravenous ketorolac lost medication. military occipital placebo prochlorperazine prospective relevant screened solid; terms therapy treated {font-style {font-weight (i.e. ./j.-...x Disorders Headache. However, Neurol Thus, assessment baseline blocks. bold characteristics chronic cohort complete continued controlled courier; database design. did dosages dose: drug em; gabapentin head headache: high included: intake international investigator lidocaine list mTBI. measured medications pain partial patients. performed physical population present provided pt;} quality rating reduced reporting research responder scale scores secondary symptoms systematic triptans using mg, mg/day


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 2
This recipe features the classic match of bread sauce with a game bird - along with lemony kale. The guinea fowl is cooked with plenty of butter to keep it moist.
For the jus, preheat the oven to 150C/300F/Gas 2. Place all the ingredients along with 250ml/9fl oz water into a small saucepan with a lid. Place a piece of greaseproof on top of the ingredients and place a lid on top.
Cook in the oven for two hours. Remove from the oven and pass the jus through a sieve.
For the guinea fowl, using kitchen string, tie the legs in front of the bird and season with salt and pepper.
In a large casserole, melt 150g/5½oz of the butter and brown the bird over a moderate heat until really well browned all over, basting with the brown butter as you go.
Place the bird on a trivet on top of a roasting tin and cook in the oven at 150C/300F/Gas 2 for about 35 minutes, or until the juices run clear when pierced with a skewer.
Fry the onion in 50g/1¾oz of the butter in a pan, add the cloves, bay leaves and milk, bring to a simmer and then set aside.
Remove the crusts from the bread and blend the crusts into breadcrumbs in a food processor. Set aside the white of the bread for now.
Sprinkle the crumbs onto an oven tray, dot with all but a knob of the remaining butter and cook for 10 minutes.
Dice the white crumb of the remaining bread, add it to the infused milk and remove the cloves and bay leaves. Bring back to a simmer and do not stir. Add a knob of butter and leave it to cook over a low heat.
Take the bird from the oven, cover and set aside to rest for 20 minutes in a warm place. Place the tin over a medium heat and add the jus. Let it bubble, stirring all the time to remove any meat sediment in the tray.
Heat the oil in a separate pan and fry the kale and cavolo nero until tender. Season with salt and pepper.
Beat the bread sauce and then spoon it onto each plate. Serve some greens alongside. Carve the bird and place on the cabbage, spoon the roasting juice over and serve the toasted breadcrumbs on the side.