Microsoft Azure Storage SDK for Node.js
This project provides a Node.js package that makes it easy to consume and manage Microsoft Azure Storage Services.
If you are looking for the Node.js SDK for other Azure services, visit https://github.com/Azure/azure-sdk-for-node.
Features
- Tables
- Create/Delete Tables
- Query/Create/Read/Update/Delete Entities
- Blobs
- Create/Delete Containers
- Create/Read/Update/Delete Blobs
- Files
- Create/Delete Shares
- Create/Delete Directories
- Create/Read/Update/Delete Files
- Queues
- Create/Delete Queues
- Insert/Peek Queue Messages
- Advanced Queue Operations
- Service Properties
- Get Service Properties
- Set Service Properties
Please check details on API reference documents.
Getting Started
Install
npm install azure-storage
Usage
var azure = require('azure-storage');
When using the Storage SDK, you must provide connection information for the storage account to use. This can be provided using:
Environment variables - AZURE_STORAGE_ACCOUNT and AZURE_STORAGE_ACCESS_KEY, or AZURE_STORAGE_CONNECTION_STRING.
Constructors - For example,
var tableSvc = azure.createTableService(accountName, accountKey);
Table Storage
To ensure a table exists, call createTableIfNotExists:
var azure = require('azure-storage');
var tableService = azure.createTableService();
tableService.createTableIfNotExists('mytable', function(error, result, response) {
if (!error) {
// result contains true if created; false if already exists
}
});
A new entity can be added by calling insertEntity:
var azure = require('azure-storage');
var tableService = azure.createTableService();
var entGen = azure.TableUtilities.entityGenerator;
var entity = {
PartitionKey: entGen.String('part2'),
RowKey: entGen.String('row1'),
boolValueTrue: entGen.Boolean(true),
boolValueFalse: entGen.Boolean(false),
intValue: entGen.Int32(42),
dateValue: entGen.DateTime(new Date(Date.UTC(2011, 10, 25))),
complexDateValue: entGen.DateTime(new Date(Date.UTC(2013, 02, 16, 01, 46, 20)))
};
tableService.insertEntity('mytable', entity, function(error, result, response) {
if (!error) {
// result contains the ETag for the new entity
}
});
Instead of creating entities manually, you can use entityGenerator:
var azure = require('azure-storage');
var entGen = azure.TableUtilities.entityGenerator;
var task = {
PartitionKey: entGen.String('hometasks'),
RowKey: entGen.String('1'),
description: entGen.String('take out the trash'),
dueDate: entGen.DateTime(new Date(Date.UTC(2015, 6, 20))),
};
The method retrieveEntity can then be used to fetch the entity that was just inserted:
var azure = require('azure-storage');
var tableService = azure.createTableService();
tableService.retrieveEntity('mytable', 'part2', 'row1', function(error, result, response) {
if (!error) {
// result contains the entity
}
});
Use TableQuery to build complex queries:
var azure = require('azure-storage');
var tableService = azure.createTableService();
var query = new azure.TableQuery()
.top(5)
.where('PartitionKey eq ?', 'part2');
tableSvc.queryEntities('mytable', query, null, function(error, result, response) {
if (!error) {
// result.entries contains entities matching the query
}
});
Blob Storage
The createContainerIfNotExists method can be used to create a container in which to store a blob:
var azure = require('azure-storage');
var blobService = azure.createBlobService();
blobService.createContainerIfNotExists('taskcontainer', {
publicAccessLevel: 'blob'
}, function(error, result, response) {
if (!error) {
// if result = true, container was created.
// if result = false, container already existed.
}
});
To upload a file (assuming it is called task1-upload.txt and it is placed in the same folder as the script below), the method createBlockBlobFromLocalFile can be used.
var azure = require('azure-storage');
var blobService = azure.createBlobService();
blobService.createBlockBlobFromLocalFile('mycontainer', 'taskblob', 'task1-upload.txt', function(error, result, response) {
if (!error) {
// file uploaded
}
});
For page blobs, use createPageBlobFromLocalFile. There are other methods for uploading blobs also, such as createBlockBlobFromText or createPageBlobFromStream.
There are also several ways to download block and page blobs. For example, getBlobToStream downloads the blob to a stream:
var blobService = azure.createBlobService();
var fs = require('fs');
blobService.getBlobToStream('mycontainer', 'taskblob', fs.createWriteStream('output.txt'), function(error, result, response) {
if (!error) {
// blob retrieved
}
});
To create a Shared Access Signature (SAS), use the generateSharedAccessSignature method. Additionally you can use the date helper functions to easily create a SAS that expires at some point relative to the current time.
var azure = require('azure-storage');
var blobService = azure.createBlobService();
var startDate = new Date();
var expiryDate = new Date(startDate);
expiryDate.setMinutes(startDate.getMinutes() + 100);
startDate.setMinutes(startDate.getMinutes() - 100);
var sharedAccessPolicy = {
AccessPolicy: {
Permissions: azure.BlobUtilities.SharedAccessPermissions.READ,
Start: startDate,
Expiry: expiryDate
},
};
var token = blobService.generateSharedAccessSignature(containerName, blobName, sharedAccessPolicy);
var sasUrl = blobService.getUrl(containerName, blobName, token);
Queue Storage
The createQueueIfNotExists method can be used to ensure a queue exists:
var azure = require('azure-storage');
var queueService = azure.createQueueService();
queueService.createQueueIfNotExists('taskqueue', function(error) {
if (!error) {
// Queue exists
}
});
The createMessage method can then be called to insert the message into the queue:
var queueService = azure.createQueueService();
queueService.createMessage('taskqueue', 'Hello world!', function(error) {
if (!error) {
// Message inserted
}
});
It is then possible to call the getMessage method, process the message and then call deleteMessage inside the callback. This two-step process ensures messages don't get lost when they are removed from the queue.
var queueService = azure.createQueueService(),
queueName = 'taskqueue';
queueService.getMessages(queueName, function(error, serverMessages) {
if (!error) {
// Process the message in less than 30 seconds, the message
// text is available in serverMessages[0].messagetext
queueService.deleteMessage(queueName, serverMessages[0].messageid, serverMessages[0].popreceipt, function(error) {
if (!error) {
// Message deleted
}
});
}
});
File Storage
The createShareIfNotExists method can be used to create a share in which to store a file or a directory of files:
var azure = require('azure-storage');
var fileService = azure.createFileService();
fileService.createShareIfNotExists('taskshare', function(error, result, response) {
if (!error) {
// if result = true, share was created.
// if result = false, share already existed.
}
});
To create a directory, the method createDirectoryIfNotExists can be used.
var azure = require('azure-storage');
var fileService = azure.createFileService();
fileService.createDirectoryIfNotExists('taskshare', 'taskdirectory', function(error, result, response) {
if (!error) {
// if result = true, share was created.
// if result = false, share already existed.
}
});
To upload a file (assuming it is called task1-upload.txt and it is placed in the same folder as the script below), the method createFileFromLocalFile can be used.
var azure = require('azure-storage');
var fileService = azure.createFileService();
fileService.createFileFromLocalFile('taskshare', 'taskdirectory', 'taskfile', 'task1-upload.txt', function(error, result, response) {
if (!error) {
// file uploaded
}
});
There are other methods for uploading files also, such as createFileFromText or createFileFromStream.
There are also several ways to download files. For example, getFileToStream downloads the file to a stream:
var fileService = azure.createFileService();
var fs = require('fs');
fileService.getFileToStream('taskshare', 'taskdirectory', 'taskfile', fs.createWriteStream('output.txt'), function(error, result, response) {
if (!error) {
// file retrieved
}
});
Service Properties
The getServiceProperties method can be used to fetch the logging, metrics and CORS settings on your storage account:
var azure = require('azure-storage');
var blobService = azure.createBlobService();
blobService.getServiceProperties(function(error, result, response) {
if (!error) {
var serviceProperties = result;
// properties are fetched
}
});
The setServiceProperties method can be used to modify the logging, metrics and CORS settings on your storage account:
var azure = require('azure-storage');
var blobService = azure.createBlobService();
var serviceProperties = generateServiceProperties();
blobService.setServiceProperties(serviceProperties, function(error, result, response) {
if (!error) {
// properties are set
}
});
function generateServiceProperties() {
return serviceProperties = {
Logging: {
Version: '1.0',
Delete: true,
Read: true,
Write: true,
RetentionPolicy: {
Enabled: true,
Days: 10,
},
},
HourMetrics: {
Version: '1.0',
Enabled: true,
IncludeAPIs: true,
RetentionPolicy: {
Enabled: true,
Days: 10,
},
},
MinuteMetrics: {
Version: '1.0',
Enabled: true,
IncludeAPIs: true,
RetentionPolicy: {
Enabled: true,
Days: 10,
},
},
Cors: {
CorsRule: [
{
AllowedOrigins: ['www.azure.com', 'www.microsoft.com'],
AllowedMethods: ['GET', 'PUT'],
AllowedHeaders: ['x-ms-meta-data*', 'x-ms-meta-target*', 'x-ms-meta-xyz', 'x-ms-meta-foo'],
ExposedHeaders: ['x-ms-meta-data*', 'x-ms-meta-source*', 'x-ms-meta-abc', 'x-ms-meta-bcd'],
MaxAgeInSeconds: 500,
},
{
AllowedOrigins: ['www.msdn.com', 'www.asp.com'],
AllowedMethods: ['GET', 'PUT'],
AllowedHeaders: ['x-ms-meta-data*', 'x-ms-meta-target*', 'x-ms-meta-xyz', 'x-ms-meta-foo'],
ExposedHeaders: ['x-ms-meta-data*', 'x-ms-meta-source*', 'x-ms-meta-abc', 'x-ms-meta-bcd'],
MaxAgeInSeconds: 500,
},
],
},
};
}
When modifying the service properties, you can fetch the properties and then modify the them to prevent overwriting the existing settings.
var azure = require('azure-storage');
var blobService = azure.createBlobService();
blobService.getServiceProperties(function(error, result, response) {
if (!error) {
var serviceProperties = result;
// modify the properties
blobService.setServiceProperties(serviceProperties, function(error, result, response) {
if (!error) {
// properties are set
}
});
}
});
Code Samples
How-Tos focused around accomplishing specific tasks are available on the Microsoft Azure Node.js Developer Center.
Running Tests
Unit tests can then be run from the module's root directory using:
npm test
Running test is also supported by Grunt by:
grunt # mochaTest as the default task
By default the unit tests are ran with Nock recording data. To run tests against real storage account, please set environment variable to turn off Nock by:
set NOCK_OFF=true
and set up the following environment variables for storage account credentials by
set AZURE_STORAGE_CONNECTION_STRING="valid storage connection string"
or
set AZURE_STORAGE_ACCOUNT="valid storage account name"
set AZURE_STORAGE_ACCESS_KEY="valid storage account key"
To record the data in a test pass against real storage account for future Nock usage:
set AZURE_NOCK_RECORD=true
In order to be able to use a proxy like fiddler, an additional environment variable should be set up:
set HTTP_PROXY=http://<IP_ADDRESS>:8888
On Linux, please use export
other than set
to set the variables.
JsDoc
JsDoc can be generated by grunt jsdoc
.
To load the docs by devserver after generation, run grunt doc
and then browse the docs at http://localhost:8888.
Need Help?
Be sure to check out the Microsoft Azure Developer Forums on MSDN if you have trouble with the provided code or use StackOverflow.
Learn More
Contribute
We gladly accept community contributions.
- Issues: Please report bugs using the Issues section of GitHub
- Forums: Interact with the development teams on StackOverflow or the Microsoft Azure Forums
- Source Code Contributions: If you would like to become an active contributor to this project please follow the instructions provided in Microsoft Azure Projects Contribution Guidelines.
For general suggestions about Microsoft Azure please use our UserVoice forum.


Introduced in Excel 10 (2002) this BIFF record is an FRT record for Charts.
This record is the parent of DATALABEXTCONTENTS , but contains no other information.
Record Data
|
Offset |
Field Name |
Size |
Contents |
|
4 |
rt |
2 |
Record type; this matches the BIFF rt in the first two bytes of the record; =086Ah |
|
6 |
grbitFrt |
2 |
FRT flags; must be zero |
|
8 |
(unused) |
8 |
Reserved; must be zero |


INS
This is to be used in the BODY Tag.
It indicates Text to be Inserted in the Document .
This is a Container Tag and thus needs be CLosed.
Attributes
- CITE :
Indicates Address of Reference for Insertion
.
- DATETIME :
Indicates the Date and Time in Precisely this
Format : YYYY-MM-DDThh:mm:ss-hu:thTZD Or
YYYY-MM-DDThh:mm:ssZ . hu, th represent Hundredth and Thousandth of a
Second Respectively .
Syntax
<INS [CITE="URL"] [DATETIME="DATETIME"]>
....Text to be Inserted....
</INS>
Example
The Following Text is to be
<INS DATETIME="2001-12-29T17:33:43Z">
Inserted in
</INS>
this Place.
Effect
The Following Text is to be
Inserted in
this Place.
Home
About


When the city of Seattle was founded, it was on a tidal flood plain in the Puget Sound. If this seems like a bad move, it was; but then the founders were men from the Midwest who didn't know a whole lot about tides. You'd think they'd have figured it all out before actually building the town, but apparently not. A city was established right there, and construction work began.
The financial district had it the worst, apparently. Every time the tide came in, the whole area would flood. As bad as that sounds, it's even worse when you consider that a large group of humans clustered together for many hours every day will produce a large amount of... well, organic byproducts. There were of course privies for use, but in those days a privy was a shack over a hole in the ground. Thus the privies has this distressing tendency to flood along with everything else, and that meant their contents would go floating away.
All this led many citizens to establish their residences on the hills overlooking the sound and then commute to work. Apparently Seattle's always been the same in certain ways. The problem with this arrangement back then was that the residences also generated organic byproducts, and those were headed right down the hill. Into the regularly-flooding financial district. When they finally built an above-ground sewage pipe to carry it out to sea, they neglected to place the end of the pipe above the tide line, so every time the tide came in, the pipe's flow reversed itself. The few toilets in the region would become fountains of a particularly evil kind.
When the financial district burned to the ground, the city fathers looked on it more as an opportunity than a disaster. Here was an opportunity to do things right. Here was their big chance to finally build a city that would be functional, clean, and attractive. Or at least not flooded with sewage every high tide.
A plan was quickly conceived and approved. The fathers got together with the merchants and explained it. "Here's what we'll do," they said, "we'll raise the ground level of the financial district well above the high-tide line. We're going to cart all the dirt we need down from the hills, fill in the entire area, even build a real sewer system. Once we've done that you can rebuild your businesses on dry, solid ground. What do you think?"
"Not bad," said the businessmen, "not bad at all. A business district that doesn't stink to high heaven would be wonderful, and we're all for it. How long until you're done and we can rebuild?"
"We estimate it'll take about ten years," said the city fathers.
One suspects that the response of the businessmen, once translated from the common expressions of the time, would still be thoroughly unprintable here. This plan obviously wasn't going to work; the businesses had to be rebuilt quickly if they were to have any hope of staying solvent. Some sort of compromise solution was needed.
What they did seems bizarre, but it worked. The merchants rebuilt their businesses right away (using stone and brick this time instead of wood), as they had to do. In the meantime, the project to raise the financial district went ahead more or less as planned, but with one modification. Instead of filling in the whole area, the streets were raised to the desired level. As the filling happened, each block of businesses would be surrounded by a retaining wall, and the streets between the walls would be filled with dirt. This meant that the sidewalks were actually below street level, once the street was filled in, so pedestrians got to walk along a block, scale a ladder or staircase, cross the street, descend back to sidewalk level, and continue onward.
Eventually, of course, they finished the streets and built sidewalks at street level that actually were roofs over the old sidewalks. For some time, there were two levels to the district: street level and the underground. This situation persisted for almost a decade after the project was finished. What finally drove residents to abandon the underground was a rapidly rising rat population, and the attendant joys that come with such a population, like the bubonic plague. The underground was at last shuttered, and now is visited only by tour groups.
All this is not unlike the history of the popular Web, now approaching its tenth anniversary.


A smiling 203 IA walks up to you, holding three cards.
The first is red on both sides, the second is red on one side and black on the other, the third is black on both sides.
Now, he shuffles these three cards, and shows you one of the sides. If you see red, which color do you think is on the underside?
Surely, if you see red, then the other side is either red, or it's black. So it should be 50/50, right?
Let's run an experiment to find out. The buttons below run 1/10/1000 runs of this game and prints the probabilities in the table on the right
| Front / Back | Red | Black |
|---|---|---|
| Red | 0% | 0% |
| Black | 0% | 0% |


vis-timeline/vis-timeline.directive.ts
Use this directive with a div container to show timeline data.
| Selector | [visTimeline] |
Properties |
|
Methods |
|
Inputs |
Outputs |
Public
constructor(elementRef: ElementRef, visTimelineService: VisTimelineService)
|
||||||||||||
|
Defined in vis-timeline/vis-timeline.directive.ts:82
|
||||||||||||
|
Creates an instance of VisTimelineDirective.
Parameters :
|
| visTimeline | |
Type : string
|
|
|
Defined in vis-timeline/vis-timeline.directive.ts:34
|
|
|
The name or identifier of the timeline (must be unique in your application). This property is used once on init and must not be changed. |
| visTimelineGroups | |
Type : DataGroupCollectionType
|
|
|
Defined in vis-timeline/vis-timeline.directive.ts:56
|
|
|
The groups that will be used to create the timeline. Changes will be detected. If the reference changes then setGroups will be called on this timeline instance. |
| visTimelineItems | |
Type : DataItemCollectionType
|
|
|
Defined in vis-timeline/vis-timeline.directive.ts:45
|
|
|
The data that will be used to create the timeline. Changes will be detected. If the reference changes then setData will be called on this timeline instance. |
| visTimelineOptions | |
Type : TimelineOptions
|
|
|
Defined in vis-timeline/vis-timeline.directive.ts:67
|
|
|
The options that will be used with this timeline. Changes will be detected. If the reference changes then setOptions will be called on this timeline instance. |
| initialized | |
Type : EventEmitter<any>
|
|
|
Defined in vis-timeline/vis-timeline.directive.ts:79
|
|
|
This event will be raised when the timline is initialized. At this point of time the timeline is successfully registered with the VisNetworkService and you can register to events. The event data is the name of the timeline as a string. |
| Public ngOnChanges | ||||||
ngOnChanges(changes: literal type)
|
||||||
|
Defined in vis-timeline/vis-timeline.directive.ts:116
|
||||||
|
Update the timeline data, groups or options on reference changes to the visTimelineItems, visTimelineGroups or visTimelineOptions properties.
Parameters :
Returns :
void
|
| Public ngOnDestroy |
ngOnDestroy()
|
|
Defined in vis-timeline/vis-timeline.directive.ts:145
|
|
Calls the destroy function for this timeline instance.
Returns :
void
|
| Public ngOnInit |
ngOnInit()
|
|
Defined in vis-timeline/vis-timeline.directive.ts:102
|
|
Create the timeline when at least visNetwork and visNetworkData are defined.
Returns :
void
|
| Public elementRef |
Type : ElementRef
|
|
Defined in vis-timeline/vis-timeline.directive.ts:92
|
|
The HTML element reference.
|
import { Directive, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange } from '@angular/core';
import { DataGroupCollectionType, DataItemCollectionType, TimelineOptions } from 'vis-timeline/esnext';
import { VisTimelineService } from './vis-timeline.service';
/**
* Use this directive with a div container to show timeline data.
*
* @export
* @class VisTimelineDirective
* @implements {OnInit}
* @implements {OnDestroy}
* @implements {OnChanges}
*/
@Directive({
selector: '[visTimeline]',
})
export class VisTimelineDirective implements OnInit, OnDestroy, OnChanges {
/**
* The name or identifier of the timeline (must be unique in your application).
* This property is used once on init and must not be changed.
*
* @type {string}
* @memberOf VisTimelineDirective
*/
@Input('visTimeline')
public visTimeline: string;
/**
* The data that will be used to create the timeline.
* Changes will be detected. If the reference changes then
* setData will be called on this timeline instance.
*
* @type {VisTimelineItems}
* @memberOf VisTimelineDirective
*/
@Input()
public visTimelineItems: DataItemCollectionType;
/**
* The groups that will be used to create the timeline.
* Changes will be detected. If the reference changes then
* setGroups will be called on this timeline instance.
*
* @type {VisTimelineGroups}
* @memberOf VisTimelineDirective
*/
@Input()
public visTimelineGroups: DataGroupCollectionType;
/**
* The options that will be used with this timeline.
* Changes will be detected. If the reference changes then
* setOptions will be called on this timeline instance.
*
* @type {VisTimelineOptions}
* @memberOf VisTimelineDirective
*/
@Input()
public visTimelineOptions: TimelineOptions;
/**
* This event will be raised when the timline is initialized.
* At this point of time the timeline is successfully registered
* with the VisNetworkService and you can register to events.
* The event data is the name of the timeline as a string.
*
* @type {EventEmitter<any>}
* @memberOf VisTimelineDirective
*/
@Output()
public initialized: EventEmitter<any> = new EventEmitter<any>();
private visTimelineContainer: any;
private isInitialized: boolean = false;
/**
* Creates an instance of VisTimelineDirective.
*
* @param {ElementRef} elementRef The HTML element reference.
* @param {VisTimelineService} visTimelineService The VisTimelineService.
*
* @memberOf VisTimelineDirective
*/
public constructor(public elementRef: ElementRef, private visTimelineService: VisTimelineService) {
this.visTimelineContainer = elementRef.nativeElement;
}
/**
* Create the timeline when at least visNetwork and visNetworkData
* are defined.
*
* @memberOf VisTimelineDirective
*/
public ngOnInit(): void {
if (!this.isInitialized && this.visTimeline && this.visTimelineItems) {
this.createTimeline();
}
}
/**
* Update the timeline data, groups or options on reference changes to
* the visTimelineItems, visTimelineGroups or visTimelineOptions properties.
*
* @param {{[propName: string]: SimpleChange}} changes
*
* @memberOf VisTimelineDirective
*/
public ngOnChanges(changes: { [propName: string]: SimpleChange }): void {
if (!this.isInitialized && this.visTimeline && this.visTimelineItems) {
this.createTimeline();
}
for (const propertyName in changes) {
if (changes.hasOwnProperty(propertyName)) {
const change = changes[propertyName];
if (!change.isFirstChange()) {
if (propertyName === 'visTimelineItems') {
this.visTimelineService.setItems(this.visTimeline, changes[propertyName].currentValue);
}
if (propertyName === 'visTimelineOptions') {
this.visTimelineService.setOptions(this.visTimeline, changes[propertyName].currentValue);
}
if (propertyName === 'visTimelineGroups') {
this.visTimelineService.setGroups(this.visTimeline, changes[propertyName].currentValue);
}
}
}
}
}
/**
* Calls the destroy function for this timeline instance.
*
*
* @memberOf VisTimelineDirective
*/
public ngOnDestroy(): void {
this.isInitialized = false;
this.visTimelineService.destroy(this.visTimeline);
}
private createTimeline(): void {
if (this.visTimelineGroups) {
this.visTimelineService.createWithItemsAndGroups(
this.visTimeline,
this.visTimelineContainer,
this.visTimelineItems,
this.visTimelineGroups,
this.visTimelineOptions,
);
} else {
this.visTimelineService.createWithItems(this.visTimeline, this.visTimelineContainer, this.visTimelineItems, this.visTimelineOptions);
}
this.isInitialized = true;
this.initialized.emit(this.visTimeline);
}
}


AMAZING PEOPLE ARE MAKING AMAZING DESIGNS IN A FUN ENVIRONMENT
AMAZING PEOPLE ARE MAKING AMAZING DESIGNS IN A FUN ENVIRONMENT
When you work with us,you are part of a team of collaboratorss. All aspects of our software develoopment process are integrated,interactive and agile. Our approach unifies design,development and product management to create exeptional products. We start each project by understanding your business gosls, the user's needs and the product requirements Then we help translate them into effective and elegant solutions
Before we sign a contract or write our line of code our team will spend the necessary time needed to understand your product vision The outcome of this scoping session ia proposal or high-level statement of work. based on your requirements,we can provide a complete offering or just the pieces you need.
DESIGN
Design
Our design practice offers a full range of services including brand strategy, interaction and visual design and user experience testing. Throughout your project, our designers create and implement visual design and workflows, solicit user feedback and work with you to make sure what gets built is what is needed.
DEVELOPMENT
Development
All engineers are fluent in the latest enterprise, mobile and web development technologies. They collaborate with your team to write, and improve code on a daily basis, using proven practices such as test-driven development and pair programming.
PRODUCT MANAGEMENT
Product management
Planning and development is iterative. Because we are constantly coding and testing, the products we build are always ready to go live. This iterative process allows for changes as business requirements evolve.
DELANI STUDIO
2019


Guide to Swap Atomic Wallet Token (AWC)
Atomic Wallet’s native AWC token is migrating from the Ethereum to Binance chain. 50.000.000 AWC or 50% of token supply are issued in BEP2 token standard.
In this step-by-step guide you’ll learn how to swap your ERC20-AWC tokens to BEP2-AWC tokens and back without hassle!
The swap process is powered by one of our exchange partners ChangeNOW and takes just a couple of minutes.
- Log on to https://changenow.io/swap/atomic and input the amount of AWC to swap. Click “Swap”.
- Open your Atomic Wallet and find the address of AWC-BNB token. Note that it starts with ‘bnb’!
- Paste the address in ChangeNOW’s form. Leave “Memo” empty. Go next.
- Now check everything. Is that okay? Confirm the transaction, if so.
- Now you need to send the amount indicated to ChangeNOW’s address.
- Let the magic happen! Wait several minutes.
- Tada! Check your wallet in the blockchain and your AWC BNB wallet!
Any troubles with the swap? Don’t worry! Contact<EMAIL_ADDRESS>to get help.
Download Atomic Wallet
Manage your Bitcoin, Ethereum, XRP, Litecoin, XLM and over 300 other coins and tokens.


I'm Wilfrid
,a UX Designer working at Booking.com
About
Twitter
Facebook
Instagram
Pinterest
Dribble
Medium
Behance
Gmail
Yahoo
Linkedin
Usable
Learning 3D


... ... Incomplete wallet All signing devices must be added to this multisig wallet before aureus addresses can be created. Open wallet address not yet available Wallet not backed up Share {{walletAddrs[wallet.id]}} address not available


simple web page aimed to showcase some concepts.
Landing page with Bootstrap grid system (feel free to resize your browser window).


| Transparency |
Description |
| Access |
Differences in representation and how it is accessed |
| Location |
Where a respource is located |
| Migration |
Resource may be moved to another location |
| Relocation |
Resource may be moved to another location while in use |
| Replication |
Resource may have multiple copies |
| Concurrency |
Resource may be shared by multiple users |
| Failure |
Failure and recovery of a resource |
| Persistence |
Resource is in memory or on disk |


---
layout: post
title: at Bangkok,Advertising is too NEW
date: '2005-08-24T10:32:00.001Z'
author: tknv
tags:
- thai
modified_time: '2009-07-09T19:08:21.788Z'
blogger_id: tag:blogger.com,1999:blog-11459759.post-112488103709601109
blogger_orig_url: http://phichyudebow.blogspot.com/2005/08/at-bangkokadvertising-is-too-new.html
---
There is still a few Ad in the tube,But in these days too new Ad's coming at the tube.window Ad is shown by projector.
at Sukhumvit station


classdef (Abstract) VehicleSimple % VehicleSimple Simple vehicle abstract class. % % Abstract class representing a simple vehicle. % % Extend this class in order to create a new vehicle model to be used with the simulator. methods(Abstract) Model(self, t, estados) end properties mT % Mass of the car (tractor) [kg] IT % Moment of inertia the car (tractor) [kg * m2] a % Distance from front axle of the car (tractor) to the center of mass of the car (tractor) [m] b % Distance from center of mass of the car (tractor) to the front axle of the car (tractor) [m] mF0 % Mass over the front axle [kg] mR0 % Mass over the rear axle [kg] lT % Wheelbase [m] nF % Number of front tires nR % Number of rear tires wT % Track of the car (tractor) [m] muy % Operational friction coefficient tire % Tire model deltaf % Steering angle [rad] Fxf % Longitudinal force at F [rad] Fxr % Longitudinal force at R [rad] end methods function value = get.mT(self) value = self.mF0 + self.mR0; end function value = get.a(self) value = self.mR0 / self.mT * self.lT; end function value = get.b(self) value = self.lT - self.a; end end end


Class: Ros::Be::Infra::Cluster::Generator
- Inherits:
-
Thor::Group
- Object
- Thor::Group
- Ros::Be::Infra::Cluster::Generator
- Includes:
- CommonGenerator, Thor::Actions
- Defined in:
- lib/ros/be/infra/cluster/generator.rb
Class Method Summary collapse
Instance Method Summary collapse
Methods included from CommonGenerator
#application, #cluster, #infra
Class Method Details
.a_path ⇒ Object
54 |
# File 'lib/ros/be/infra/cluster/generator.rb', line 54 def self.a_path; File.dirname(__FILE__) end |


| Home > Documentation > Reference > Samples > Java EE sample applications > converter-javaee6 - A simple JSF+Ajax aplication |
JSF (Java Server Faces) provides a set of APIs and associated custom tags to create HTML forms that have complex interfaces. JSF 2.0 provides very easy-to-use Ajax support. It enables you to use Ajax without explicit JavaScript programming and with very simple tags.
This sample is a simple currency exchange converter. For a given amount of money in RMB,the converter will calculate the amount in other kind of currency according to current exchange rate.
This Sample mainly features JSF 2.0 enhancement: AJAX support in JSF 2.0.
Converter-javaee6 application consists of following list of packages and classes.
org.apache.geronimo.samples.javaee6.converter
The list of web application files in the application is depicted in the following.
|- WEB_INF
+- web.xml
+- geronimo-web.xml
|- index.html
|- header.html
|- index.xhtml
The deployment descriptor file web.xml defines the welcome-file of the web application,parameter for the web context and a "Faces Servlet".
The deployment plan file geronimo-web.xml describes information about the project such as module's unique identification and dependencies inside the <sys:environment/> tags. It is one of the best practices to give your module an unique identification, so that it can later be referenced by some other deployable applications. The path specified in the <context-root> tag will be the entry point of this web application. Therefore the sample application can be accessed at http://<hostname>:<port>/ converter-javaee6.
index.xhtml is a page which displays current exchange rate between RMB and other currencies such as USD, HKD, JPY, EUR and GBP. Input the amount of RMB, you will get the converted amount in other kind of currencies within no minutes through AJAX techniques. When you input a letter in the currency amount box, action goes to server, server computes the converted amount of currency and update the values in managed bean, then send the value back to client, replace the element in the DOM tree with new value.
<h:dataTable> is a component that builds a table from a collection. The collection can be accessed via getter method in managed bean.
<f:ajax event="keyup" execute="@this" render="out1" />
ConverterBean.java annotated with @ManagedBean and @RequestScoped is used as a managed bean for index.xhtml page above. The bean defines the properties and methods associated with the UI components used on the page.
Please reference Samples General Information for information on obtaining and building the source for this and other samples.
Once all the sources get checked out the next step is to build converter-javaee6 sample. It requires Maven 2 for building the binaries.
From the < converter-javaee6_home> directory run the following command.
mvn clean install
This process will take a couple of minutes. The binaries will be generated in the corresponding target directory .
Deploying sample application is pretty straight forward as we are going to use the Geronimo Console.
The app is visible at http://localhost:8080/converter-javaee6 .
| Bookmark this on Delicious Digg this | Privacy Policy - Copyright © 2003-2013, The Apache Software Foundation, Licensed under ASL 2.0. |


Susan Granger's review of "SONGCATCHER" In the midst of this summer's fare of dinos revisited and romantic fiascoes, there are a few thoughtful movies - and this Appalachian period drama is one. Oscar nominee Janet McTeer ("Tumbleweeds") stars as Dr. Lily Penleric, an accomplished musicologist who, back in that pre-feminist era, was refused a full professorship at her university. Determined to prove her worth, she ventures deep into the rugged mountains of North Carolina, where her younger sister Elna (Jane Adams) runs a school. There in Bear Creek, she discovers a treasure-trove of traditional Scots-Irish and English folk ballads, given a unique interpretation by the insular locals.
Excited, she sends for recording equipment and persuades Vinie Butler (Pat Carroll) and other self-sustaining mountain folk to share their musical heritage on her Edison phonograph cylinders. Their music, as she puts it, is "as much a part of life here as the air you breathe." That's the main thrust of writer-director Maggie Greenwald's occasionally uneven culture-clash story, which is loosely based on Olive Dame Campbell's foray through the Blue Ridge Mountains in 1908, but there's also some melodramatic romantic spice. Ornery, bearded, banjo-picking Aidan Quinn falls for the statuesque, passionate "songcatcher," while Elna secretly engages in a lesbian relationship with a colleague (E. Katherine Kerr). I'm ready to buy the soulful soundtrack with vocalists like Emmylou Harris, Iris DeMent, Taj Mahal and young opera star Emmy Rossum who plays a pivotal role as McTeer's wide-eyed protégé. Rated PG-13, there's an intense scene of primitive childbirth. On the Granger Movie Gauge of 1 to 10, "Songcatcher" is an intelligent, extraordinary 8, transported by the transcendent power of song.
========== X-RAMR-ID: 28944 X-Language: en X-RT-ReviewID: 237091 X-RT-TitleID: 1102054 X-RT-SourceID: 742 X-RT-AuthorID: 1274 X-RT-RatingText: 8/10
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


jQuery is a JavaScript Library
jQuery was invented in 2006 by John Resig at BarCamp
more1
more2
hide


{% extends 'admin/master.html' %} {% import 'bootstrap/wtf.html' as wtf %} {% block body %}
To moderate comments, click below
To deactivate comments, click below
This will not delete your comment database; you can reactivate later.
Note that when deactivating and reactivating, there is a delay due to browser cache and comments server reset.
{% else %}Note that when deactivating and reactivating, there is a delay due to browser cache and comments server reset.


contact us
We look forward to hearing from you. Please send us a message to either our New York or China offices.
new york
china


Clean as a whistle
All I do is win
How much for that dogg in the window?
I used to have a recurring dream when I was younger.


Batch provider - for parallel batch data processing¶
-
dlutils.
batch_provider
(data, batch_size, processor=None, worker_count=1, queue_size=16, report_progress=True)[source]¶ Return an object that produces a sequence of batches from input data
Input data is split into batches of size
batch_size
which are processed with functionprocessor
Data is split and processed by separate threads and dumped into a queue allowing continuous provision of data. The main purpose of this primitive is to provide easy to use tool for parallel batch processing/generation in background while main thread runs the main algorithm. Batches are processed in parallel, allowing better utilization of CPU cores and disk that may improve GPU utilization for DL tasks with Storage/IO bottleneck.This primitive can be used in various ways. For small datasets, the input
data
list may contain actual dataset, whileprocessor
function does from small to no data processing. For larger datasets,data
list may contain just filenames or keys whileprocessor
function reads data from disk or db.There are many purposes that function
processor
can be used for, depending on your use case.Reading data from disk or db
Data decoding, e.g. from JPEG.
Augmenting data, flipping, rotating adding nose, etc.
Concatenation of data, stacking to single ndarray, conversion to a tensor, uploading to GPU.
Data generation.
Note
Sequential order of batches is guaranteed only if number of workers is 1 (Default), otherwise batches might be supplied out of order.
- Parameters
data (list) – Input data, each entry in the list should be a separate data point.
batch_size (int) – Size of a batch. If size of data is not divisible by
batch_size
, then the last batch will have smaller size.processor (Callable[[list], Any], optional) – Function for processing batches. Receives slice of the
data
list as input. Can return object of any type. Defaults to None.worker_count (int, optional) – Number of workers, should be greater or equal to one. To process data in parallel and fully load CPU
worker_count
should be close to the number of CPU cores. Defaults to one.queue_size (int, optional) – Maximum size of the queue, which is number of batches to buffer. Should be larger than
worker_count
. Typically, one would want this to be as large as possible to amortize all disk IO and computational costs. Downside of large value is increased RAM consumption. Defaults to 16.report_progress (bool, optional) –
Print a progress bar similar to tqdm. You still may use tqdm if you set
report_progress
to False. To use tqdm just dofor x in tqdm(batch_provider(...)): ...
Defaults to True.
- Returns
An object that produces a sequence of batches.
next()
method of the iterator will return object that was produced byprocessor
function- Return type
Iterator
- Raises
StopIteration – When all data was iterated through. Stops the for loop.
Example
def process(batch): images = [misc.imread(x[0]) for x in batch] images = np.asarray(images, dtype=np.float32) images = images.transpose((0, 3, 1, 2)) labeles = [x[1] for x in batch] labeles = np.asarray(labeles, np.int) return torch.from_numpy(images) / 255.0, torch.from_numpy(labeles) data = [('some_list.jpg', 1), ('of_filenames.jpg', 2), ('etc.jpg', 4), ...] # filenames and labels batches = dlutils.batch_provider(data, 32, process) for images, labeles in batches: result = model(images) loss = F.nll_loss(result, labeles) loss.backward() optimizer.step()


Create landing page
Use the lastest technologies to build your landing page without any configuration.
View repository
Go to another page
Powered by:


Follow these steps to select a programming language:
By changing the programming language, new projects are populated with the appropriate file types (.cs or .py). In addition, autocomplete and IntelliSense are verified according to your selected programming language.


class: center, middle # Introduction to Gröbner Bases Shaun Harker Rutgers University 2018-06-05 --- # Talk outline. ## Part 1. Basics of Algebraic Geometry ## Part 2. Gröbner bases ## Part 3. Problems solved by Gröbner bases ## Part 4. Application to DSGRN --- class: center, middle # Part 1. 1. Polynomial Rings over Fields 2. Varieties 3. Ideals 4. Varieties from ideals and ideals from varieties --- ## Basic definitions ### Polynomial Rings over Fields Let $k$ be an algebraically closed field. Then $k[x\_1,\cdots,x\_n]$ denotes the ring of polynomials. The ring is commutative and has an identity. We an interpret its elements as polynomial functions $f : k^n \to k$. * If $n=1$ this is a principal ideal domain. * Generally, it is a *noetherian* ring: every ascending sequence of ideals stabilizes. This is known as the *Hilbert Basis Theorem*. --- ### Varieties A *variety* is a subset of $k^n$ of the form $\\{ x \in k^n : f\_i(x) = 0 \\}$ where $f\_i \in k[x\_1,\cdots,x\_n]$ for $i=1,2\cdots,m$ for some $m \in \mathbb{Z}\_+$. * The union of varieties is a variety; note we can construct it as pairwise products. * The intersection of varieties is a variety; note we can construct it by unioning the defining collections of polynomials. * Given any set, the smallest variety containing it is called its *Zariski closure*. * A variety that cannot be written as a union of other varieties is said to be *irreducible*. * The minimal varieties are the points of $k^n$. --- ### Ideals An *ideal* is a subring which is closed under multiplication by any polynomial in $k[x\_1,\cdots,x\_n]$; i.e. it is a subring that is also a $k[x\_1,\cdots,x\_n]$-module. * The product of ideals is an ideal (defined as the ideal generated by $\\{ab: a \in A \wedge b \in B \\}$). The intersection of ideals is an ideal. * The sum of ideals is an ideal. * An ideal such that $f \in I$ whenever $f^k \in I$ for some $k \in \mathbb{Z}\_+$ is called a *radical ideal*. Given an ideal $I$ we denote the smallest radical ideal containing it (which is in fact $\\{ f \in R : \exists n \; f^n \in I \\}$) as $\sqrt{I}$. The intersection of radical ideals is again radical; the product of radical ideals need not be radical. * An ideal is said to be *prime* if $ab \in I$ implies $a \in I$ and $b \in I$. (Or: if for any ideals $A$, $B$ such that $AB \subset I$ we have $A,B \subset I$, where $AB$ is the ideal generated by $\\{ab: a \in A \wedge b \in B \\}$). * The maximal ideals are of the form $\langle x\_1 - a\_1, \cdots, x\_n - a\_n\rangle$ for $a\_i \in k$, $i = 1,\cdots,n$. --- ### Algebraic-Geometric Correspondence Main idea: there is a 1-to-1 correspondence between radical ideals and algebraic varieties. * For any variety $V$, define the ideal $\mathbf{I}(V) := \\{ f \in k[x\_1,\cdots,x\_n] : \forall x \in V, \; f(x) = 0 \\}$. * For any ideal $I \subset k[x\_1,\cdots,x\_n]$, define the variety $\mathbf{V}(I) := \\{ x \in k^n : \forall f \in I,\; f(x) = 0 \\}$. * $\mathbf{V}(I + J) = \mathbf{V}(I) \cap \mathbf{V}(J)$ * $\mathbf{V}(I \cdot J) = \mathbf{V}(I) \cup \mathbf{V}(J)$ * $\mathbf{V}(I \cap J) = \mathbf{V}(I) \cup \mathbf{V}(J)$ * Nullstellensatz: For any ideal $I \subset k[x\_1,\cdots,x\_n]$, we have $ \mathbf{I}(\mathbf{V}(I)) = \sqrt{I}$. * Zariski Closure: For any $S \subset k^n$, we have $\bar{S} = \mathbf{V}(\mathbf{I}(S))$. * Product and intersection both give same variety because $\sqrt{I \cdot J} = \sqrt{I} \cap \sqrt{J} = \sqrt{I \cap J}$. * Prime ideals correspond to irreducible varieties. * Maximal ideals correspond to points. --- class: center, middle # Part 2. Gröbner bases 1. Monomial ideals 2. Monomial orderings 3. Dickson's Lemma 4. Polynomial division 5. Definition of Gröbner basis 5. Buchberger's criterion 6. Buchberger's algorithm 7. Connection to Knuth-Bendix completion algorithm --- class: center, middle ## Part 3. Problems solved by Gröbner bases 1. Ideal membership problem 2. Equation solving 3. Implicitization problem 4. Elimination Theorem 5. Closure Theorem 5. Computing the intersection of ideals 6. Computing the LCM of polynomials 7. Computing the GCD of polynomials --- class: center, middle ## Part 4. Application to DSGRN 1. Reducing the number of variables 2. Introducing slack variables 3. Computing Gröbner 4. Elimination Ideal 5. Computing CAD 6. 4 variable case --- class: center, middle ## Thank you


Formalizing
Gardam's Disproof
of
Kaplansky's Unit Conjecture
Siddhartha Gadgil
Indian Institute of Science
Anand Rao Tadipatri
IISER, Pune
Group Rings
and
The Unit Conjecture
- Group rings are analogues of polynomials, or better still Laurent polynomials, i.e.,
finite sums
$\sum_{i=1}^n a_i x^{n_i}, n_i\in\mathbb{Z}.$
- We take $a_i$ to be elements of a field.
- Observe that, by considering degrees, for two Laurent polynomials $p(x)$ and $q(x)$:
- If $p(x)q(x)=0$, then $p(x)=0$ or $q(x)=0$.
- If $p(x)q(x)=1$, then both $p(x)$ and $q(x)$ are of the form $cx^d$, $c\neq 0$.
- Laurent polynomials are elements of the group ring $k[\langle x \rangle]$ and Kaplansky conjectures generalise
the above statements.
Group Rings
- Fix a group $G$ and a ring $R$.
- The group ring $R[G]$ is the set of formal sums $$\sum_{i=1}^n a_i g_i, a_i\in R, g_i\in G.$$
- We multiply bilinearly extending $G$:
$$(\sum_{i=1}^k a_i g_i)\cdot (\sum_{j=1}^l b_j h_j) = \sum_{i=1}^k\sum_{j=1}^l
(a_ib_j)(g_ih_j)$$
Why Group Rings
- Any vector space $V$ over $k$ with a linear group of symmetries $G$ forms a
$k[G]$-module.
- Linear transformations respecting symmetries are given by matrices with entries in $k[G]$.
- For example, chain groups of Galois covers of topological spaces give $k[G]$-modules.
- Many fundamental topological invariants, for example, are derived from these matrices.
- We consider group rings over fields $k$.
- If an element $g\in G$ is torsion, i.e., $g^n=e$ for some $n>1$, then we have $0$-divisors in
$k[G]$ as
$$(1-g)(1 + g + \dots + g^{n-1}) = 1 - g^n = 0.$$
-
Similarly, for many groups with torsion, $k[G]$ has non-trivial units, i.e., units not
of the form $a\cdot g$.
- Kaplansky conjectures: if $G$ is torsion-free, $k[G]$ has no zero
divisors and no non-trivial units.
- These are also related to fundamental questions in topology, K-theory etc.
- Theorem (Gardam) Kaplansky's unit conjecture is false.
- More concretely:
- For the field $k=\mathbb{F}_2$ with $2$ elements.
- For a certain group $P$, called the Promislow or Hantzsche–Wendt
group.
- We have elements $\alpha, \alpha'\in \mathbb{F}_2[P]$ with $\alpha\cdot\alpha'=1$.
- $\alpha$ is not of the form $a\cdot g$.
- $P$ is torsion free.
-
There are many descriptions of the group $P$; indeed Gardam gave several.
-
One description is as the fundamental group of a $3$-manifold obtained by gluing two copies of
the orientable twisted $I$-bundle over the Klein bottle.
-
This also gives a description as a Cystallographic group.
-
For our formalization, the most convenient is an explicit description as a Metabelian
group.
Metabelian Groups
- A Metabelian group is a group $G$ with
- An abelian normal subgroup $K$,
- so that the quotient $Q$ is also abelian.
- The simplest examples of such groups are the products $K \times Q$.
- The permutation group $S_3$ is metabelian with $K\cong\mathbb{Z}/3$ and $Q \cong \mathbb{Z}/2$.
- The group $\mathbb{Z}$ has such a description with $K=2\mathbb{Z}$ and $Q\cong \mathbb{Z}/2$.
- Let $G$ be a metabelian group with abelian normal subgroup $K$ and quotient $\varphi: G \to Q$.
- By choosing coset representatives, we have a function $\sigma: Q \to G$ (called a
section) so that $\varphi\circ\sigma$ is the identity on $Q$.
- Each element in $G$ is uniquely of the form $k\cdot\sigma(q)$, giving an identification $G = K
\times Q$ with $k\cdot \sigma(q)\leftrightarrow (k, q)$.
- Choosing the section with $\sigma(0)$ the identity, we have $(k, 0)\cdot (k', 0) = (k + k', 0)$.
-
In cases like $S_3$, the section $\sigma$ can be chosen to be a
homomorphism(so called split extensions).
-
In this case, we also have (identifying $\sigma(q)\leftrightarrow q$) $(0, q)\cdot (0, q') = (0, q +
q')$.
- By our identification $(k, 0)\cdot (0, q) = (k, q)$;
however, in general $(0, q)\cdot (k, 0) \neq (k , q)$.
-
Instead we get a group action of $Q$ on $K$ given by $q\odot k := (0, q)\cdot (k, 0)
\cdot (0, q)^{-1}\in K$.
-
Conversely, given a group action we get a group $G = K \times Q$ with product
$(k, q)\cdot (k', q') = (k + q\odot k', q + q')$.
- As $K$ is abelian, we always get a group action $q\odot k := \sigma(q)\cdot k\cdot\sigma(q)^{-1}$ independent of $\sigma$.
- But, in general $\sigma$ is not a homomorphism.
- We can measure the failure of $\sigma$ to be a homomorphism by considering $c(q, q') := \sigma(q +
q')\cdot(\sigma(q)\cdot\sigma(q'))^{-1}$.
- As $\sigma$ is a section, we deduce $c(q, q')\in K$, so $c: Q \times Q \to K$.
- Associativity implies that $c$ is a cocyle.
- Given a group action and a cocyle, we get a group structure on $K\times Q$ with
product $(k, q)\cdot (k', q') = (k + q\odot k' + c(q, q'), q+ q').$
The group $P$
- The group $P$ is metabelian with $K\cong \mathbb{Z}^3$ and $Q\cong
\mathbb{Z}/2\oplus\mathbb{Z}/2$.
- Gardam gives an explicit description of the group action and the cocyle.
- Thus, we need to formalize:
- A general result that given $K$, $Q$, a group action and a cocycle we get a group.
- In the case of $P$, the result that the given formulas give a group action and a
cocycle.
-
Concrete descriptions are also used to prove torsion-freeness.
-
Torsion-freeness of $P$ follows from:
- If $g\in P$ is a torsion element then so is $g^2$.
- For all $g\in P$, $g^2 \in K \cong \mathbb{Z}^3$; which is torsion free, so torsion elements of $K$ are trivial.
- For all $g\in P$, $g^2=e$ implies $g=e$; using explicit formulas for $g^2=(k, q)^2$ for
the four values of $q\in Q\cong \mathbb{Z}/2\oplus\mathbb{Z}/2$.
-
As $\alpha$ and $\alpha'$ were given explicitly by Gardam, $\alpha\cdot\alpha'=1$ can be
checked by a computation; provided the group ring is constructed in a manner that equality
is Decidable.
Decidability:
Free modules, Enumeration, Bases
-
We construct free modules $R[X]$ so that
- If equality is decidable for $R$ and $X$, it is for $R[X]$; even
when $X$ is infinite.
-
$R$-module homomorphisms on $R[X]$ are induced by functions on $X$ (the Universal Property).
-
We also use type-classes to automatically create decision procedures:
- for properties on finite sets;
- for equality of homomorphisms on finitely generated free abelian groups.


Some questions, some answers.
If you are pleased with how the original admin interface looks, you shouldn’t.
see Troubleshooting.
We are testing with Firefox, Chrome and Safari. IE9 and Opera should work fine as well.
Of course.
Unfortunately, Redactor currently produces strange/wrong HTML. Moreover, we´re missing an easy way to define formatting–options as well as a possibility to insert classes. Once these issue are resolved, we´ll probably switch.
For now, custom Compass-based stylesheets gives us much more flexibility. But we do understand the need to easily customize the admin interface and we´re discussing this issue on a regular basis.
Occasionally, we discuss features and implementations.
Help is very much appreciated.
Our goal is that Grappelli will be redundant eventually.
Grappelli is developed and maintained by Patrick Kranzlmüller & Axel Swoboda of vonautomatisch.


EventTimer()
语法
Timer = EventTimer()概要
After an event of type #PB_Event_Timer (returned by WindowEvent() or WaitWindowEvent()), use this function to determine which timer caused the event.
参数
无.
返回值
The same value that was used in AddWindowTimer() to create the timer.
参阅
AddWindowTimer()
已支持操作系统
所有


Let's Calculate!
With this great calculator, you can add, subtract, multiply, and divide any two single-digit numbers!
7
8
9
0
4
5
6
-
+
1
2
3
/
*
Clear
{{result}}
ENTER
Answer: {{total}}


(PHP 4, PHP 5 < 5.2.1)
ifx_prepare — Prepare an SQL-statement for execution
$query
, resource $link_identifier
[, int $cursor_def
], mixed $blobidarray
) : resource
Prepares a query
for later use with
ifx_do().
For "select-type" queries a cursor is declared and opened. Non-select queries are "execute immediate".
For either query type the number of (estimated or real) affected rows is saved for retrieval by ifx_affected_rows().
If the contents of the TEXT (or BYTE) column allow it, you can also use ifx_textasvarchar(1) and ifx_byteasvarchar(1). This allows you to treat TEXT (or BYTE) columns just as if they were ordinary (but long) VARCHAR columns for select queries, and you don't need to bother with blob id's.
With ifx_textasvarchar(0) or ifx_byteasvarchar(0) (the default situation), select queries will return BLOB columns as blob id's (integer value). You can get the value of the blob as a string or file with the blob functions (see below).
query
The query string.
link_identifier
The link identifier.
cursor_def
This optional parameter allows you to make this a
scroll and/or hold cursor.
It's a bitmask and can be either IFX_SCROLL
,
IFX_HOLD
, or both or'ed together.
blobidarray
If you have BLOB (BYTE or TEXT) columns in the query, you can add
a blobidarray
parameter containing the
corresponding "blob ids", and you should replace those columns
with a "?" in the query text.
Returns a valid result identifier for use by ifx_do(),
or FALSE
on errors.


674
|
|
Oracle Performance Tuning and Optimization
by Edward Whalen
Sams, Macmillan Computer Publishing
ISBN: 067230886x Pub Date: 04/01/96
|
22
1000
Chapter 4 Tuning Methodology
This chapter covers tuning methodologythe manner in which you analytically determine what it is you want to tune and for what ends. If you set out to tune or optimize a system without any goals, there is nothing to measure success against. The first part of the chapter looks at some of the tuning goals you might have; the second part of the chapter is an introduction to a tuning methodology that may help you in your tuning efforts.
Goals
It is important to set tuning goals for your system. Each system has deferent characteristics depending on the needs of the users. You must determine why you are tuning a particular system. The desired goals often influence the kind of changes made and whether those changes are successful or not. People tune their systems for different reasons; the following sections examine a few of them.
Throughput
Throughput is defined as the amount of work done divided by the time it takes to do that work. Work to be done is usually defined in terms of transactions. Therefore, the throughput of the system is defined as follows:
Throughput = #Transactions / Time
The time in this equation is usually some measurement interval during which a large amount of work is done. Consider, for example, a company that takes reservations. If the reservation office is open 8 hours a day and the number of tickets sold for an event must be 25,000 for first day of sales, the required throughput for this system must meet or exceed 3,125 transactions per hour:
Throughput = ( 25,000 Transactions / 8 hours ) = 3,125 Transactions per hour
or 52.1 Transactions per minute
Depending on the complexity of the transaction and the granularity of your measurements, you can express throughput in transactions per hour, transactions per minute, or transactions per second. For some large decision support system (DSS) applications, you may even measure throughput in transactions per day.
For your particular configuration, the most important tuning goal may be system throughput. In some environments such as OnLine Transaction Processing (OLTP), it may be vital to achieve the highest throughput possible, thus getting the most possible work through the system in the shortest possible time.
To achieve the highest possible throughput, you may have to make sacrifices in some areas such as response time and perhaps fault tolerance and recovery time.
Response Time
Response time is the time from when you press the last key for an input form until all the data has been displayed on the display device. Response time is essentially the time the end user spends waiting for the behind-the-scenes processing of the job.
Although some installations require the highest throughput possible, others may have strict response time criteria. In such an environment, slow response times usually mean customers waiting on a phone linethus keeping other customers on hold.
For installations that have strict response time criteria, you may have to tune the system differently. It may be necessary to run the system at a muc
ec9
h lower throughput rate than it can handle or to delay batch jobs until off hours.
Connectivity
Connectivity (the ability to support connections to other systems or clients) may be an important factor in configuring and tuning your system. You may have to configure and tune your system to support large numbers of users in an effective manner. Additionally, you may have to incorporate sufficient capacity to support additional users. Such a system might be used for a business that requires additional employees at various peak times during the year.
To tune for large numbers of connections, memory can be a special concern. You must carefully plan for the memory requirements of these users and make sure that you dont exceed available resources during peak periods. This may mean that you have to configure extra memory into the system that is on stand-by for user connections. OS resources associated with network and user connectivity must be closely monitored.
You can determine the resources associated with these users experimentally. Try running the application with a specific number of users and monitor system resource usage. Increase the number of users and monitor the system again. Comparing the results will give you a fairly good idea of the amount of resources associated with each user.
TIP: When performing these types of tests, it is critical to take good notes. By logging configuration changes and their results, you can get a good idea of how those changes affect the system.
Fault Tolerance
For some installations, it is of the utmost importance that fault tolerance be employed in every aspect of the system. Any down time in such a system may be devastating. A site with high fault tolerance requirements may require frequent checkpoints and frequent backups.
Several tuning considerations come into play when fault tolerance is the highest priority. The disk subsystem should use some type of hardware Redundant Array of Inexpensive Disks (RAID) to protect against disk failures. The memory should be protected with advanced ECC memory. When uptime is critical, you may want to consider a redundant system, which you can use if the primary system fails.
Load Time
Some systems have a requirement that a certain amount of data must be loaded each night to be available for the next days processing. Usually, the load time is limited and it is essential that a specific amount of data be loaded within a certain time. Although the load time requirement can be met, doing so may be costly in terms of additional hardware that may be required.
In this situation, you may have to tune the I/O subsystem for load time. However, configuring for load time may affect the general performance of the system. By tuning for both load time and run time, you can minimize the affect.
NOTE: It is important to realize that your tuning goals and my tuning goals may not be the same. Depending on your installation, there may be drastic differences in configuration. Each site is different and serves a different function; each site must be analyzed individually.
55e
|


iNQUIRE Installation v2.1 26/03/2021
0. Contents
1. Prerequisites
- Microsoft Windows Server 2008 R2 Standard 32bit or (?)64bit
- Microsoft SQL Server 2008 R2
- Microsoft SQL Server Management Studio 2008 R2
- Microsoft Web Platform Installer 3.x+ http://www.microsoft.com/web/downloads/platform.aspx
- UNIX compatible text edititor, eg TextPad http://www.textpad.com/download/index.html
2. Download and Installation of Components
2.1 Microsoft IIS v6/7/7.5
- http://learn.iis.net/page.aspx/29/installing-iis-7-and-above-on-windows-server-2008-or-windows-server-2008-r2/
- Tick "Application Development -> ASP.NET"
- Role Services:
- [* Untick "Common HTTP Features -> Directory Browsing"]
- [* Note: Install only the absolutely necessary IIS services to minimize the IIS installation footprint and also minimize the attack surface]
- Click start, right click "Command prompt", select "Run as administrator"
- Change directory to Microsoft.net Framework directory, either eg "C:\Windows\Microsoft.NET\Framework" on 32bit systems, or eg "C:\Windows\Microsoft.NET\Framework64", change directory to "v4.0.30319"
- Type "aspnet_regiis -ir", hit enter, ASP.NET 4 should be installed
2.2 Microsoft ASP.NET MVC3
2.3 Java SE 7u67+ 32bit
2.4 IIP Image Server
- http://iipimage.sourceforge.net/download/
- Installation instructions can be found on the IIP Image Server site http://iipimage.sourceforge.net/documentation/server/
- Detailed instructions for installing on Windows Server IIS can be found here http://iipimage.sourceforge.net/2011/08/installing-iipimage-on-iis7/
2.5 Apache Solr 4.10.0
- http://www.apache.org/dyn/closer.cgi/lucene/solr
- Copy contents of "example" directory to path with no spaces in name, eg "C:\solr"
2.6 iNQUIRE
-
If you have been supplied precompiled web deployment files then you can skip this step,
else if compiling iNQUIRE from source code it must be compiled with reference to correct
data object class (derived from InqItemBase), you will need to code your own class to map your Solr fields to C# class properties.
Some tips for creating your data class:
- Solr data which refers to images which have IIIF image endpoints (for example if you are using IIPImage Server as your image source) should have a data class that inherits from InqItemImageMetadataWidthAndHeightBase
- Solr data which has been created from data such as a database or Xml harvest which has multi-lingual fields should have a data class which implement IInqItemMultiLingual
- Solr data which has been created from IIIF data manifests should have a data class which inherits from InqItemIIIFBase
Some classes are included as examples which can be used as a starting point:
- InqItemBod: Solr data imported from Xml or database with single language fields
- InqItemBodIIIF: Solr data imported from a IIIF manifest
- InqItemMultiLingualExample: Solr data imported from Xml or database including multi-lingual fields
Points in the code which need references to your data class:
-
Global.asax.cs:
Startup.Init<InqItemBod>(ConfigurationManager.AppSettings["SolrUri"]);
-
SolrRepository.cs
private static ISolrOperations<InqItemBod> _solr; private static ISolrOperations<InqItemBod> Solr { get { if (_solr == null) _solr = ServiceLocator.Current.GetInstance<ISolrOperations<InqItemBod>>(); return _solr; } }
protected SolrSearchResults makeSolrSearchResults(SolrQueryResults<InqItemBod> results) { ... protected SolrSearchResults makeSolrSearchResults(SolrQueryResults<InqItemBod> results, List<KeyValuePair<string, string>> facets, List<FacetRange> facet_ranges) { ...
- Copy Views\Discover\Search\_MetadataFields_default.cshtml to Views\Discover\Search\_MetadataFields.cshtml and edit to match your data class fields
- Copy Views\Discover\Search\_ResultTemplates_default.cshtml to Views\Discover\Search\_ResultTemplates.cshtml and edit to match your data class fields
- Copy Views\Discover\Print_default.cshtml to Views\Discover\Print.cshtml and edit to match your data class fields
- If compiling the source code then copy the build to chosen deployment directory, eg "C:\ASPSites\inquire\", if you have been supplied with a precompiled build then unpack to your desired IIS directory
-
iNQUIRE must be compiled to match the JPEG2000 image server being used (currently supported Djatoka, IIP Image Server)
-
iNQUIRE.Controllers.DiscoverController.cs
public class JP2HelperModule : NinjectModule { public override void Load() { Bind<Helper.IJP2Helper>().To<Helper.IIPImageHelper>(); // Bind<Helper.IJP2Helper>().To<Helper.DjatokaHelper>(); } }
-
Edit JPEG2000 Image Server Settings in Web.Config:
<!-- JPEG2000 Image Server Settings --> <!-- Use thes settings with IIP Image Server --> <!-- <add key="ResolverUri" value="http://<IP_ADDRESS>/imageserver-test/iipsrv.fcgi" /> <add key="ViewerUri" value="http://<IP_ADDRESS>/imageserver-test/iipsrv.fcgi" /> <add key="ProxyResolverFile" value="resolver.iip" /> <add key="Jpeg2000NamespaceReplace" value="info:arm/test/" /> <add key="Jpeg2000Namespace" value="crimea/" /> <add key="ImageFilenameAppend" value=".jp2" /> <add key="DeepZoomQueryParameter" value="DeepZoom" /> --> <!-- End: Use thes settings with IIP Image Server --> <!-- Use these settings with Djatoka --> <add key="ResolverUri" value="http://<IP_ADDRESS>:8080/adore-djatoka/resolver" /> <add key="ViewerUri" value="http://<IP_ADDRESS>:8080/djatoka-viewer/viewer.html" /> <add key="ProxyResolverFile" value="resolver.dja" /> <add key="Jpeg2000NamespaceReplace" value="" /> <add key="Jpeg2000Namespace" value="info:arm/test/" /> <add key="ImageFilenameAppend" value="" /> <add key="DeepZoomQueryParameter" value="rft_id" /> <!-- End: Use these settings with Djatoka --> <add key="DjatokaHome" value="F:\Clients\iNQUiRE\inquire_working\iNQUIRE\iNQUIRE\djatoka" /> <!-- required if using Djatoka and require jpeg2000s to be created on the fly from non-jpeg2000 original source images --> <add key="DeepZoomViewerFile" value="viewer.dzi" /> <!-- end: JPEG2000 Image Server Settings -->
-
Edit the handlers section in Web.Config, comment/uncomment the two lines which refer to IIPImageServer/Djatoka as needed:
<handlers> ... <!-- <add name="DjatokaHandler" path="*.dja" verb="*" type="DjatokaIIS.DjatokaHandler" resourceType="Unspecified" preCondition="integratedMode" /> --> <!-- <add name="DeepZoomHandler" path="*.dzi" verb="*" type="DjatokaIIS.DeepZoomHandler" resourceType="Unspecified" preCondition="integratedMode" /> --> <add name="IIPImageHandler" path="*.iip" verb="*" type="IIPImageIIS.IIPImageHandler" resourceType="Unspecified" preCondition="integratedMode" /> <add name="DeepZoomHandlerIIP" path="*.dzi" verb="*" type="IIPImageIIS.DeepZoomHandlerIIP" resourceType="Unspecified" preCondition="integratedMode" /> ... </handlers>
-
iNQUIRE.Controllers.DiscoverController.cs
-
Edit Web.config to set user security settings, eg minimum password length:
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15"> <providers> <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SqlServices" applicationName="iNQUIRE" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" minRequiredPasswordLength="3" minRequiredNonalphanumericCharacters="0" /> </providers> </membership>
2.7 Microsoft IIS URL Rewrite
[Optional, used eg for short Urls direct linking to individual items (eg Url field in an Xml/Ris export)]
3. Configuration
3.1 Environment Variables
Click "Start -> [Right Click] Computer -> Properties -> Advanced System Settings -> Environment Variables"
3.1.1 User Variables for [user]
- New user variable JAVA_HOME set to JRE installtion directory eg "C:\Program Files (x86)\Java\jre7"
- New user variable SOLR_HOME set to solr multicore installation directory eg "C:\solr\multicore"
- Restart computer
3.2 Sql Database for User Data and User Generated Content (Notes, Collections, etc)
- If you have a bacpac file and are using an Azure database please follow the guide here to restore the iNQUIRE database. You can use your Azure database username and password in your database connection string in web.config (or in ConnectionStrings.config if you are working from source code and not deployment files), the rest of this section can be skipped, jump to "3.3 Solr".
- If you have a dacpac file and are using Sql Server Management Studio or similar please start from step 1.
3.2.1 Sql Server Configuration
- Click start, run Sql Server Configuration Manager
- Expand "SQL Server Network Configuration" in left hand pane
- Highlight "Protocols for MSSQLSERVER", make sure "Shared Memory", "TCP/IP" enabled
- Expand "SQL Native Client xx.x Configuration"
- Highlight "Client Protocols", make sure "Shared Memory", "TCP/IP" and "Named Pipes" are all enabled
- Repeat for 32/64 bit instances as needed
- [*Run "OpenSqlServerPort.bat" as administrator from command line]?
3.2.2 Sql Server Browser Service
- Click "Start -> Administrative Tools -> Services", right click "SQL Server Browser" select "Properties"
- Tab "Log on" as "Built-in account -> Network Service [enter admin password]"
- Tab "General" set startup type to automatic
- Click apply, click ok
- In "Services" window, right click "SQL Server Browser -> Restart"
3.2.3 Sql Server Properties
- Run SQL Server Management Studio, connect to SQL Server instance, right click on server instance in left hand side pane, select "Properties"
- Click "Security" in left hand side pane
- Select "Sql Server and Windows Authentication Mode"
- Click "Connections" in left hand side pane
- Ensure "Allow remote connections to this server" is checked
- Click "Ok"
- Right click on server instance, select "Restart"
3.2.4 Restore iNQUIRE Database
- Start -> Sql Server Management Studio
- Connect to Sql Server
- Extract database .bak file from supplied zip/rar "INQUIRE_Lite"
- Copy database to easily accessible path, eg "C:\"
- Sql Server Management Studio, right click "Databases -> Restore Database"
- Select database from path above
- To database: INQUIRE_Lite
- In "Select the backup sets to restore" tick in restore column, should only be one set [see screenshot]
- Click "Ok"
3.2.5 Create a New User
- Left pane, expand Security, right click Logins -> New Login
- Login name "dreuser2"
- Select Sql Server Authentication, password "[PASSWORD]"
- Untick "Enforce password expiration"
- Select Default database: INQUIRE_Lite
- If there are any issues with using login name "dreuser2", you can try "dreuser[x]" eg "dreuser3", as long as you update your ASP.net web.config with the login name, eg edit "C:\ASPSites\inquire\1.13\web.config" <connectionStrings> section, it may appear multipe times.
3.2.6 Add Users to Databases
- Left pane expand Databases, expand "INQUIRE_Lite", expand "Security", right click "Users -> New User"
- Username as created above eg "dreuser2"
- Login name eg "dreuser2"
- Database role membership, tick: db_datareader, db_datawriter, db_owner
3.3 Solr
- Download latest version or unpack solr\solr-4.10.0.zip, copy contents of "example" directory to path with no spaces in name, eg "C:\solr"
- Set the SOLR_HOME enviroment variable (see Environment Variables)
- If upgrading from Solr v3 to v4 check configuration differences (see solr\solr_example_config.zip and http://myjeeva.com/upgrade-migrate-solr-3x-to-solr-4.html) and also the contents of supplied example "solr_config.zip" which would normally be found in "[solr install dir]\multicore\core1\conf"
- Duplicate initial core to other cores as required (allows flipping between cores so one can be re-populated/re-indexed in the background), eg copy contents of "[solr install dir]\multicore\core1\conf" to "[solr install dir]\multicore\core0\conf"
3.3.1 Running Solr via included server (Jetty)
- To run Solr on demand, with an output window (useful for debugging), copy solr\solr.bat to the Solr installation directory, update to reflect correct JRE path, Jetty/Solr port, etc, then run this batch file from the command line:
"%JAVA_HOME%\bin\java" -Dsolr.solr.home=%SOLR_HOME% -Djetty.port=8983 -jar c:\solr\start.jar
3.3.2 Running Solr via Jetty as a Windows Service (for full documentation see http://www.eclipse.org/jetty/documentation/current/startup-windows-service.html)
- Make "temp" directory in Solr installation path, eg "C:\solr\temp"
- Unpack supplied solr\commons-daemon-1.0.15-bin-windows.zip or download latest Apache Commons Daemon from http://www.apache.org/dist/commons/daemon/binaries/
- Copy prunmgr.exe and [system cpu architecture]\prunsrv.exe to Solr installation path eg "c:\solr"
- Copy solr\install-jetty-service.bat to the Solr installation directory, update the file to reflect the system configuration (see variables highlighted in red):
@echo off set SOLR_BASE=C:\solr set SERVICE_NAME=SolrService set JETTY_HOME=%SOLR_BASE% set JETTY_BASE=%SOLR_BASE% set STOPKEY=inquire set STOPPORT=50001 set PR_INSTALL=%SOLR_BASE%\prunsrv.exe @REM Service Log Configuration set PR_LOGPREFIX=%SERVICE_NAME% set PR_LOGPATH=%SOLR_BASE%\logs set PR_STDOUTPUT=auto set PR_STDERROR=auto set PR_LOGLEVEL=Debug @REM Path to Java Installation set PR_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll set PR_CLASSPATH=%JETTY_HOME%\start.jar;%JAVA_HOME%\lib\tools.jar @REM JVM Configuration set PR_JVMMS=128 set PR_JVMMX=512 set PR_JVMSS=4000 set PR_JVMOPTIONS=-Duser.dir="%JETTY_BASE%";-Djava.io.tmpdir="%SOLR_BASE%\temp";-Djetty.home="%JETTY_HOME%";-Djetty.base="%JETTY_BASE%";-Dsolr.solr.home="%SOLR_HOME%";-Djetty.port=8983 @REM Startup Configuration set JETTY_START_CLASS=org.eclipse.jetty.start.Main set PR_STARTUP=auto set PR_STARTMODE=java set PR_STARTCLASS=%JETTY_START_CLASS% set PR_STARTPARAMS=STOP.KEY="%STOPKEY%";STOP.PORT=%STOPPORT% @REM Shutdown Configuration set PR_STOPMODE=java set PR_STOPCLASS=%JETTY_START_CLASS% set PR_STOPPARAMS=--stop;STOP.KEY="%STOPKEY%";STOP.PORT=%STOPPORT%;STOP.WAIT=10 %PR_INSTALL% //IS/%SERVICE_NAME% ^ --DisplayName="%SERVICE_NAME%" ^ --Install="%PR_INSTALL%" ^ --Startup="%PR_STARTUP%" ^ --LogPath="%PR_LOGPATH%" ^ --LogPrefix="%PR_LOGPREFIX%" ^ --LogLevel="%PR_LOGLEVEL%" ^ --StdOutput="%PR_STDOUTPUT%" ^ --StdError="%PR_STDERROR%" ^ --JavaHome="%JAVA_HOME%" ^ --Jvm="%PR_JVM%" ^ --JvmMs="%PR_JVMMS%" ^ --JvmMx="%PR_JVMMX%" ^ --JvmSs="%PR_JVMSS%" ^ --JvmOptions="%PR_JVMOPTIONS%" ^ --Classpath="%PR_CLASSPATH%" ^ --StartMode="%PR_STARTMODE%" ^ --StartClass="%JETTY_START_CLASS%" ^ --StartParams="%PR_STARTPARAMS%" ^ --StopMode="%PR_STOPMODE%" ^ --StopClass="%PR_STOPCLASS%" ^ --StopParams="%PR_STOPPARAMS%" if not errorlevel 1 goto installed echo Failed to install "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH% goto end :installed echo The Service "%SERVICE_NAME%" has been installed :end
- Run this batch file from the command line as an Administrator
3.4 Installation Specific iNQUIRE Settings
- Edit "[iNQUIRE deployment path]\Web.config"
- Edit email settings
- Edit SolrUri settings (NB: SolrUriXml is redundant and can just point to any instance/core of Solr)
- XmlDataFile is deprecated
- MediaDirectoryRemote is for non Jpeg2000 media, can just be set to "/" if none exist, or create "Media" directory in deployment directory if needed
- ImageDirectory can be set to eg "C:\ASPSites\inquire\1.8\" if no non-jpeg2000 media, or point at non-jp2 media directory
-
connectionStrings: DataSource should be Sql Server machine, eg localhost, user should be the username and password created in Sql Server management utility above:
<add name="BL_DRE_INQUIREConnectionString" connectionString="Data Source=BODL-DIGITAL-DE;Initial Catalog=BL_DRE_INQUIRE;Persist Security Info=True;User ID=dreuser2;Password=[PASSWORD]" providerName="System.Data.SqlClient" />"
NB: MS Sql Server seems to be happy with just eg "Data Source=BODL-DIGITAL-DE", but Sql Server Express needs [machine name]\[instance name] eg "Data Source=ACER-LAPTOP\SQLEXPRESS" - Edit AppSettingsSecrets.config to define your installation specific parameters (see AppSettingsSecrets_empty.config for examples and explanatory notes)
3.5 Styling/Theming of the User Interface
-
If required you can easily change the look of the UI to match your institution's brand guidelines, simply Edit App_Start\BundleConfig.cs to add a custom style sheet (YOUR_STYLESHEET.css below):
bundles.Add(new StyleBundle("~/Content/css").Include( "~/Content/reset.css", "~/Content/bootstrap.css", "~/Content/bootstrap-social.css", "~/Content/font-awesome.css", "~/Content/jquery-ui.min.css", "~/Content/jquery-ui.structure.min.css", "~/Content/jquery-ui.theme.min.css", "~/Content/openid.css", "~/Content/openid-shadow.css", "~/Content/cd-rsn.css", "~/Content/cd-3dnav.css", "~/Content/Site2.css", "~/Content/UserDefined2.css", "~/Content/RKD/YOUR_STYLESHEET.css" ));
Remember to flag this file (.scss or .css as applicable) as ignored by Git to avoid checking it back in to the main source repository. You will need to recompile the project and deploy the site after this change (see section 2.6). -
You can also import a custom scss/css file in to cd-rsn.css to change the appearance of the side information bar, general screen layout, and layout break points (desktop/tablet/mobile):
@import '_cd-properties.scss'; @import '_[YOUR_CSS]-cd-properties.scss'; /* line can be removed if this file not found, it's custom css settings */
and in cd-3dnav.css to change the appearance of the facet filter dropdown:@import '_cd-properties.scss'; @import '_[YOUR_CSS]-cd-properties.scss'; /* line can be removed if this file not found, it's custom css settings */
It is recommended not to edit properties in the _cd-properties.scss file, but to override them in your own scss/css files and import them at the top of cd-rsn.scss and cd-3dnav.scss (as above). Remember to flag any custom scss/css files you add to the project as ignored by Git source control.
3.6 IIS
- Launch IIS, right click "Default Web Site -> Add Application"
- Alias: eg "inquire_1.8", Application pool: "ASP.NET v4.0", Physical path "[inquire deployment directory]", eg "C:\ASPSites\inquire\1.8"
3.7 Microsoft IIS Url Rewrite [Optional]
- Open web.config, copy rewrite section to default website web.config (usually in inetput/wwwroot) so rules are inherited by inquire site.
Then comment out the rewrite section in the inquire web.config. The default
website web.config should thus look similar to the following:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <clear /> <rule name="inquire direct view item (ris export url)" patternSyntax="Wildcard" stopProcessing="false"> <match url="inquire/v/*" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> <action type="Rewrite" url="inquire/Discover/Search/?p=c+0,t+,rsrs+0,rsps+10,fa+,so+id^desc,scids+,pid+,vi+{R:1}" appendQueryString="true" /> </rule> <rule name="iNQUIRE" patternSyntax="Wildcard" stopProcessing="true"> <match url="inquire/*" negate="false" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> <action type="Redirect" url="inquire_1.12/{R:1}" redirectType="Found" /> </rule> </rules> </rewrite> </system.webServer> </configuration>


Core member
ZulipZulip is a powerful, open source group chat application. I worked on various parts of the codebase, with focus on the toolings for development.
Contributor
RustRust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety. I did some work on the error reporting module.


Swat at dog flex claws on the human's belly and purr like a lawnmower and run outside as soon as door open eat all the power cords.Kitty loves pigs fight an alligator and win leave dead animals as gifts.
and destroy the blinds going to catch the red dot today going to catch the red dot today but ooh, are those your $250 dollar sandals? lemme use that as my litter box spit up on light gray carpet instead of adjacent linoleum. Sit on the laptop destroy couch as revenge.  Asdflkjaertvlkjasntvkjn (sits on keyboard) kitty loves pigs. Make muffins. Demand to have some of whatever the human is cooking, then sniff the offering and walk away meow pounce on unsuspecting person and kitty kitty if human is on laptop sit on the keyboard.
Find something else more interesting need to chase tail, and inspect anything brought into the house jump five feet high and sideways when a shadow moves or chase red laser dot and litter kitter kitty litty little kitten big roar roar feed me.  Kitty poochy my water bowl is clean and freshly replenished.

Poop in litter box, scratch the walls have secret plans stare out the window but sweet beast, somehow manage to catch a bird but have no idea what to do next, so play with it until it dies of shock scream for no reason at 4 am. Adventure always.
   Climb leg scream at teh bath yet intrigued by the shower nap all day terrorize the hundred-and-twenty-pound rottweiler and steal his bed, not sorry yet shove bum in owner's face like camera lens.


#set( $text = {
"subject": "Thank you for providing your consent",
"salutation": "Dear {{participant_firstName}},",
"thank_you": "Thank you for signing the consent form for your continued participation in Count Me In.",
"update": "If you need to update any of your other information related to the study, you can complete the process here:",
"button": "Project Dashboard",
"contact": "For your convenience, we have attached a copy of your signed consent form. Please contact us at
${contact.email}
or ${contact.phone} if you have any questions or concerns.",
"closing": "Sincerely,",
"study_team": "The Count Me In Team",
"footnote": "For additional updates, follow us on
Facebook,
Instagram or
Twitter."
})
#parse("reconsent_thank_you.tmpl.html")


|
Input/Output and String Functions
CosmInputSyntax#include "cosm/os_io.h" u32 CosmInput( utf8 * buffer, u32 max_bytes, u32 echo ); DescriptionReads up to max_bytes-1 bytes of UTF-8 from standard input device until EOF or '\n' is reached. buffer will always be a terminated string if input is read. If echo is COSM_IO_NOECHO then the typed characters will not be echoed in any way (for password entry etc), otherwise echo should be COSM_IO_ECHO. Return ValuesNumber of characters input, 0xFFFFFFFF (-1) indicates EOF. ErrorsNone. Exampleutf8 buffer[256]; u32 len; /* ... */ len = CosmInput( buffer, 256, COSM_IO_ECHO ); if ( len == -1 ) { /* EOF */ } CosmInputRawSyntax#include "cosm/os_io.h" u32 CosmInputRaw( utf8 * buffer, u32 length, u32 echo ); DescriptionRead length bytes from stdin into the buffer. If echo is COSM_IO_NOECHO then the typed characters will not be echoed in any way (for password entry etc), otherwise echo should be COSM_IO_ECHO. The buffer will not be terminated with a 0, becasue it is not a string. Usually used with a length of 1. Return ValuesNumber of bytes read, 0xFFFFFFFF (-1) indicates EOF. ErrorsNone. Exampleutf8 * buffer; u32 size; u32 len; /* ... */ CosmPrint( "Hit a key: " ); len = CosmInputRaw( buffer, size, COSM_IO_ECHO ); if ( ( len == -1 ) || ( len != 1 ) ) { /* EOF reached */ } CosmStrBytesSyntax#include "cosm/os_io.h" u32 CosmStrBytes( const utf8 * string ); DescriptionGet the length of the string pointed to by string. Return ValuesThe length of the string in bytes. ErrorsNone. Exampleutf8 * string; u32 length; string = "A 22 byte test string."; length = CosmStrBytes( string ); CosmStrCopySyntax#include "cosm/os_io.h" s32 CosmStrCopy( utf8 * dest, const utf8 * src, u32 max_bytes ); DescriptionCopy a string of up to max_chars-1 bytes from src to dest, including the terminating '\0'. If the src string is longer then max_bytes-1 the function will fail and do nothing. Return ValuesCOSM_PASS on success, or COSM_FAIL on failure. ErrorsPossible causes of an failure:
Example/* !!! */ utf8 string[256]; utf8 copy[256]; u32 size; /* ... */ if ( CosmStrCopy( copy, string, 256 ) != COSM_PASS ) { /* Error */ } CosmStrAppendSyntax#include "cosm/os_io.h" s32 CosmStrAppend( utf8 * stringA, const utf8 * stringB, u32 max_bytes ); DescriptionAppends the stringB to the end of stringA, only if the sum of the string lengths is less than max_bytes-1 Return ValuesCOSM_PASS on success, or COSM_FAIL on failure. ErrorsPossible causes of an failure:
Example/* !!! */ utf8 buffer[256]; /* ... */ if ( CosmStrAppend( buffer, "Test string", 256 ) != COSM_PASS ) { /* Error */ } CosmStrCmpSyntax#include "cosm/os_io.h" s32 CosmStrCmp( const utf8 * stringA, const utf8 * stringB, u32 max_bytes ); DescriptionCompare the two Unicode strings, up to max_bytes or the end of one string. Return Values0 if the strings are identical, a postive number if the codepoint of the first different character in stringA is greater than the codepoint of that character in stringB, or a negative number if the codepoint of the first different character in stringA is less than the codepoint of that character in stringB. If any parameter is NULL/0 then it returns -1 unless stringA == stringB. ErrorsNone. Exampleutf8 stringa[128]; utf8 stringb[128]; u32 max; /* set stringa and stringb to something */ if ( CosmStrCmp( stringa, stringb, max ) != 0 ) { /* Strings do not match */ } CosmStrCharSyntax#include "cosm/os_io.h" utf8 * CosmStrChar( const utf8 * string, utf8 character, u32 max_bytes ); DescriptionLocate character in the string, which is up to max_bytes long. Return ValuesA pointer to the first occurance of character in the string, or NULL if it does not occur in the string. ErrorsNone. Exampleutf8 string[128]; utf8 * found; u32 max; /* read in string */ if ( ( found = CosmStrChar( string, 'a', max ) ) != NULL ) { /* the character 'a' is in the string at found */ } CosmStrStrSyntax#include "cosm/os_io.h" utf8 * CosmStrStr( const utf8 * string, const utf8 * substring, u32 max_bytes ); DescriptionLocate substring in the string, which is up to max_bytes-1 long. Return ValuesA pointer to the first match of substring in string, or NULL if it does not occur in the string. ErrorsNone. ExampleCosm{integral type}StrSyntax#include "cosm/os_io.h" s32 CosmU32Str( u32 * result, utf8 ** end, const utf8 * string, u32 radix ); s32 CosmS32Str( s32 * result, utf8 ** end, const utf8 * string, u32 radix ); s32 CosmU64Str( u64 * result, utf8 ** end, const utf8 * string, u32 radix ); s32 CosmS64Str( s64 * result, utf8 ** end, const utf8 * string, u32 radix ); s32 CosmU128Str( u128 * result, utf8 ** end, const utf8 * string, u32 radix ); s32 CosmS128Str( s128 * result, utf8 ** end, const utf8 * string, u32 radix ); DescriptionConvert the Unicode string written in radix to the number type. Numbers are of the form: [space*][+|-][0|0x|0X]{0-9a-zA-Z}+ Numbers may be in any language form supported by Unicode. radix must be 2-36 or 0. If radix is 0, numbers starting with "0x" or "0X" will be read as base 16, numbers starting with 0 will be interpreted as base 8, and all others will be base 10. If end is not NULL, it will be set to the byte after the last byte used by the number. For u8 and u16 types use the u32 function and typecast the result. Note that use of radixes other then 2, 8, 10, or 16 are generally useless. Return ValuesSets result to the number and returns COSM_PASS on success, or sets result to 0 and returns COSM_FAIL on failure. ErrorsNone. ExampleCosm{float type}StrSyntax#include "cosm/os_io.h" s32 Cosmf32Str( f32 * result, utf8 ** end, const utf8 * string ); s32 Cosmf64Str( f64 * result, utf8 ** end, const utf8 * string ); DescriptionConvert the Unicode base-10 string to a floating point number. Numbers are of the form: [space*][+|-]{{0-9}+[.{0-9}*]|.{0-9}+}[{e|E}[+|-]{0-9}+] Digits can be the base-10 digits of any language that Unicode supports. If end is not NULL, it will be set to the character after the last character used in the number. Return ValuesSets result to the number and returns COSM_PASS on success, or sets result to +/- HUGE_VAL if the number was too large or 0 if the string wasn't a number and returns COSM_FAIL on failure. ErrorsNone. ExampleCosmPrintSyntax#include "cosm/os_io.h" u32 CosmPrint( const utf8 * format, ... ); DescriptionPrints the formatted text to the standard output device. All output buffers will be flushed before return. %[width][.prec]type_char [width]
Return ValuesNumber of bytes output. ErrorsNone. Exampleutf8 * output; void * foo; u32 size; size = 256; output = CosmMemAlloc( (u64) size ); /* ... */ CosmPrint( "Error: %.*s\n", size, output ); CosmPrint( "Size: %04u bytes\n", size ); CosmPrint( "foo points to: %p\nAddress of size is: %p\n", foo, &size ); This would print something similar to (on a 32-bit machine): Error: Timeout -- try again later Size: 0255 bytes foo points to: 08049860 Address of size is: 7FFFF7A8 CosmPrintStrSyntax#include "cosm/os_io.h" u32 CosmPrintStr( utf8 * string, u32 max_bytes, const utf8 * format, ... ); DescriptionPrints the formatted text to the string. No more than max_bytes-1 bytes will be written to the string. See CosmPrint for format usage. Return ValuesNumber of bytes written to string, or -1 if truncated due to max_bytes. ErrorsNone. Exampleutf8 * output; void * foo; u32 chars_output; output = CosmMemAlloc( 256LL ); /* ... */ chars_output = CosmPrintStr( output, 256, "foo points to: %p\nAddress of chars_output is: %p\n", foo, &size ); if ( chars_output == 0 ) { /* Error */ } CosmPrintFileSyntax#include "cosm/os_io.h" u32 CosmPrintFile( cosm_FILE * file, const utf8 * format, ... ); DescriptionPrints the formatted text to the file. See CosmPrint for format usage. Return ValuesNumber of bytes written to file. ErrorsNone. Exampleutf8 * output; u32 chars_written; cosm_FILE * file; /* ... */ chars_written = CosmPrintFile( file, "Error: %.*s\n", 256, output ); if ( chars_written == 0 ) { /* Error */ }
© Copyright Mithral Communications & Design Inc.
1995-.
All rights reserved.
Mithral® and Cosm® are trademarks of
Mithral Communications & Design Inc.
|


| Package | Description |
|---|---|
| com.mongodb | |
| com.mongodb.client | |
| com.mongodb.client.gridfs |
This package contains the new GridFS implementation
|
| com.mongodb.client.jndi |
This package contains a JNDI ObjectFactory implementation.
|
| com.mongodb.client.model | |
| com.mongodb.gridfs |
Contains the classes for supporting MongoDB's specification for storing very large files, GridFS.
|
| com.mongodb.util |
Contains classes that can be used everywhere in the driver, and have no specific domain.
|
| org.apache.commons.codec |
Interfaces and classes used by
the various implementations in the sub-packages.
|
| org.apache.commons.codec.binary |
Base64, Base32, Binary, and Hexadecimal String encoding and decoding.
|
| org.apache.commons.codec.digest |
Simplifies common
MessageDigest tasks and
includes a libc crypt(3) compatible crypt method that supports DES,
MD5, SHA-256 and SHA-512 based algorithms as well as the Apache
specific "$apr1$" variant. |
| org.apache.commons.codec.language |
Language and phonetic encoders.
|
| org.apache.commons.codec.language.bm |
Implementation details of the Beider-Morse codec.
|
| org.apache.commons.codec.net |
Network related encoding and decoding.
|
| org.bson | |
| org.bson.io | |
| org.bson.types | |
| org.bson.util |
Contains helper classes for working with the BSON protocol.
|
| org.elkoserver.foundation.actor |
Elko server classes representing entities with remote connections to a server.
|
| org.elkoserver.foundation.boot |
Elko server startup and environment classes.
|
| org.elkoserver.foundation.json |
JSON message handling infrastructure inside Elko servers.
|
| org.elkoserver.foundation.net |
Classes for message communication over the TCP and HTTP for Elko.
|
| org.elkoserver.foundation.run |
Classes providing a general run queue engine for event loop execution.
|
| org.elkoserver.foundation.server |
Core common server implementation classes for Elko.
|
| org.elkoserver.foundation.server.metadata |
Metadata objects used in the management of Elko servers and communicated
between them.
|
| org.elkoserver.foundation.timer |
Classes supporting timer-driven events in the Elko server environment.
|
| org.elkoserver.json |
Utilities for working with JSON (JavaScript Object Notation) objects.
|
| org.elkoserver.objdb |
The Elko Object Database.
|
| org.elkoserver.objdb.store |
Classes for implementing various Elko object store types.
|
| org.elkoserver.objdb.store.filestore |
A simple
ObjectStore implementation based on
a directory full of small text files. |
| org.elkoserver.objdb.store.mongostore |
An
ObjectStore implementation based on the
MongoDB NoSQL object database. |
| org.elkoserver.server.broker |
The Elko Broker.
|
| org.elkoserver.server.context |
The Elko Context Server.
|
| org.elkoserver.server.context.caps |
A package of mods related to using capability security patterns in Elko
Context Server applications.
|
| org.elkoserver.server.context.mods |
A package of generally useful mods and related objects.
|
| org.elkoserver.server.context.test | |
| org.elkoserver.server.context.users |
A package of mods related to alternative mechanisms for user creation.
|
| org.elkoserver.server.director |
The Elko Director.
|
| org.elkoserver.server.gatekeeper |
The Elko Gatekeeper.
|
| org.elkoserver.server.gatekeeper.passwd |
A simple, password-based
Authorizer implementation for use with the Elko Gatekeeper. |
| org.elkoserver.server.presence |
The Elko Presence Server.
|
| org.elkoserver.server.repository |
The Elko Repository.
|
| org.elkoserver.server.workshop |
The Elko Workshop Server.
|
| org.elkoserver.server.workshop.bank |
Workshop worker and related classes for virtual currency management and
banking.
|
| org.elkoserver.server.workshop.bank.client |
Client for Workshop virtual currency bank.
|
| org.elkoserver.server.workshop.test | |
| org.elkoserver.util |
Miscellaneous utility classes used in the Elko server family.
|
| org.elkoserver.util.test | |
| org.elkoserver.util.trace |
Classes for logging error messages and trace messages for debugging.
|
| org.elkoserver.util.trace.logeater | |
| org.made.neohabitat | |
| org.made.neohabitat.mods | |
| scalablessl | |
| scalablessl.spi |
Copyright © 2017. All rights reserved.


Hi! Dear,
Verify Your E-mail
Please Ensure, that Your E-mail Id is Valid. So Verify by click above button