const get = require('lodash/get');
const map = require('lodash/map');
const matches = require('lodash/matches');
const flatten = require('lodash/flatten');
const values = require('lodash/values');
const filter = require('lodash/filter');
const sequenceFactory = require('./sequence');
const { yieldAll, yieldMatching, yieldUnion, yieldMap } = require('./generator-utils');
/**
* Create a graph
* @namespace graph
* @param fragment - a Cortez object or a JSON-serialized Cortez instance
* @param options - allowUndirected, onAddNode, onAddEdge, onRemoveNode, onRemoveEdge
*/
module.exports = (fragment, options = {}) => {
let { nodes, edges, nodeCount, edgeCount } = Object.assign({}, {
nodeCount: 0,
edgeCount: 0,
nodes: {},
edges: {}
}, (typeof fragment === "string") ? JSON.parse(fragment) : fragment);
const getId = (element) => get(element, 'id', element);
const nodeSeq = sequenceFactory(nodeCount);
const edgeSeq = sequenceFactory(edgeCount);
const pack = () => {
const newGraph = {};
const mapping = {};
for (let n in nodes) {
if (nodes[n]) {
mapping[n] = newGraph.addNode(Object.assign({}, nodes[n]));
}
}
for (let e in edges) {
if (edges[e]) {
const id = newGraph.addEdge(Object.assign({}, edges[e]));
newGraph.edges[id].from = mapping[newGraph.edges[id].from];
newGraph.edges[id].to = mapping[newGraph.edges[id].to];
}
}
return newGraph;
};
const mergeWith = (otherFragment) => {
const operand = fragment(otherFragment);
const newGraph = pack();
const mapping = {};
for (let n in operand.nodes) {
if (operand.nodes[n]) {
mapping[n] = newGraph.addNode(Object.assign({}, operand.nodes[n]));
}
}
for (let e in operand.edges) {
if (operand.edges[e]) {
let id = newGraph.addEdge(Object.assign({}, operand.edges[e]));
newGraph.edges[id].from = mapping[newGraph.edges[id].from];
newGraph.edges[id].to = mapping[newGraph.edges[id].to];
}
}
return newGraph;
};
const addNode = (node) => {
const id = nodeSeq.getNext();
nodes[id] = Object.assign({}, node);
nodes[id].id = id;
nodes[id].graph = this;
if (options.onAddNode) {
(options.onAddNode)(nodes[id], options.context);
}
nodeCount++;
return nodes[id];
};
const addEdge = (edge) => {
const id = edgeSeq.getNext();
edges[id] = Object.assign({}, edge);
edges[id].id = id;
edges[id].graph = this;
if (!nodes[edge.from].outbound[edge.to]) {
nodes[edge.from].outbound[edge.to] = [];
}
if (!nodes[edge.to].inbound[edge.from]) {
nodes[edge.to].inbound[edge.from] = [];
}
nodes[edge.from].outbound[edge.to].push(id);
nodes[edge.from].numOutbound++;
nodes[edge.to].inbound[edge.from].push(id);
nodes[edge.to].numInbound++;
if (options.allowUndirected && !edge.directed) {
if (!nodes[edge.from].hasUndirectedEdges[edge.to]) {
nodes[edge.from].hasUndirectedEdges[edge.to] = 0;
}
if (!nodes[edge.to].hasUndirectedEdges[edge.from]) {
nodes[edge.to].hasUndirectedEdges[edge.from] = 0;
}
nodes[edge.from].hasUndirectedEdges[edge.to]++;
nodes[edge.to].hasUndirectedEdges[edge.from]++;
}
if (options.onAddEdge) {
(options.onAddEdge)(edges[id], options.context);
}
edgeCount++;
return edges[id];
};
const removeNode = (node) => {
const id = getId(node);
if (!nodes[id]) return;
if (options.onRemoveNode) {
(options.onRemoveNode)(nodes[id], options.context);
}
for (let g in nodes[id].inbound) {
for (let e in nodes[id].inbound[g]) {
removeEdge(nodes[id].inbound[g][e]);
}
}
for (let g in nodes[id].outbound) {
for (let e in nodes[id].outbound[g]) {
removeEdge(nodes[id].outbound[g][e]);
}
}
nodeCount--;
delete nodes[id];
};
const removeEdge = (edge) => {
const id = getId(edge);
const edgeObj = edges[id];
if (!edgeObj) return;
if (options.onRemoveEdge) {
(options.onRemoveEdge)(edges[id], options.context);
}
if (options.allowUndirected && !edgeObj.directed) {
nodes[edgeObj.from].hasUndirectedEdges[edgeObj.to]--;
nodes[edgeObj.to].hasUndirectedEdges[edgeObj.from]--;
}
edgeCount--;
delete edges[id];
};
const getNode = (node) => nodes[getId(node)];
const getEdge = (edge) => edges[getId(edge)];
const isDirected = (edge) => edge.directed;
const hasDirectedEdge = (from, to) => !!getNode(from).outbound[getId(to)];
const hasUndirectedEdge = (from, to) => {
const hasUndirectedEdgesFrom = getNode(from).hasUndirectedEdges[getId(to)];
if (hasUndirectedEdgesFrom !== undefined && hasUndirectedEdgesFrom > 0) return true;
const hasUndirectedEdgesTo = getNode(to).hasUndirectedEdges[getId(from)];
return hasUndirectedEdgesTo !== undefined && hasUndirectedEdgesFrom > 0;
};
const hasAnyEdge = (from, to) => {
if (hasDirectedEdge(from, to)) return true;
return hasUndirectedEdge(from, to);
};
const inflateNodes = (nodeIds) => map(nodeIds, getNode);
const inflateEdges = (edgeIds) => map(edgeIds, getEdge);
const inflateNodesGen = function*(nodeIdsGen) {
yield* yieldMap(nodeIdsGen, getNode);
};
const inflateEdgesGen = function*(edgeIdsGen) {
yield* yieldMap(edgeIdsGen, getEdge);
};
const link = (from, to, payload, metadata, directed) => addEdge(
edgeFactory(
getId(from),
getId(to),
payload,
metadata,
directed || !options.allowUndirected
)
);
const getNodes = (query) => query ? filter(nodes, (entry) => matches(query)(entry.payload)) : nodes;
const getNodesByQueryGen = function*(query) {
const matchQuery = matches(query);
const isMatch = (item) => matchQuery(item.payload);
yield* yieldMatching(yieldAll(nodes), isMatch);
};
const getNodesGen = function*(query) {
if (!query) {
yield* yieldAll(nodes);
} else {
yield* getNodesByQueryGen(query);
}
};
const squashEdges = (groups) => flatten(values(groups));
const squashEdgesGen = function*(groups) {
yield* yieldUnion(map(groups, (group) => yieldAll(group)));
};
const getEdges = (directed) => (edgeIds, query) => {
const edgesList = map(edgeIds, getEdge);
const anyDirectedness = directed === undefined;
if (!query && anyDirectedness) {
return edgesList;
} else {
const matchesQuery = matches(query);
if (anyDirectedness) {
return filter(edgesList, (entry) => matchesQuery(entry.payload));
}
const matchesDirectedness = (edge) => directed === isDirected(edge);
return filter(edgesList, (entry) => matchesDirectedness(entry) && matchesQuery(entry.payload));
}
};
const getEdgesGen = (directed) => function*(edgeIdsGenerator, query) {
const edgesGenerator = yieldMap(edgeIdsGenerator, getEdge);
const anyDirectedness = directed === undefined;
if (!query && anyDirectedness) {
yield* edgesGenerator;
} else {
const matchesQuery = matches(query);
if (anyDirectedness) {
yield* yieldMatching(edgesGenerator, (edge) => matchesQuery(edge.payload));
} else {
const matchesDirectedness = (edge) => directed === isDirected(edge);
yield* yieldMatching(edgesGenerator, (edge) => matchesDirectedness(edge) && matchesQuery(edge.payload));
}
}
};
const getEdgesFrom = (directed) => (node, query) => getEdges(directed)(squashEdges(node.outbound), query);
const getEdgesFromGen = (directed) => function*(node, query) {
if (!directed) {
const edgesGen = yieldUnion([squashEdgesGen(node.outbound), squashEdgesGen(node.inbound)]);
yield* getEdgesGen(directed)(edgesGen, query);
} else {
yield* getEdgesGen(directed)(squashEdgesGen(node.outbound), query);
}
};
const getEdgesTo = (directed) => (node, query) => getEdges(directed)(squashEdges(node.inbound), query);
const getEdgesToGen = (directed) => function*(node, query) {
yield* getEdgesGen(directed)(squashEdgesGen(node.inbound), query);
};
const getEdgesBetween = (directed) => (from, to, query) => getEdges(directed)(getNode(from).outbound[getId(to)], query);
const getEdgesBetweenGen = (directed) => function*(from, to, query) {
yield* getEdgesGen(directed)(yieldAll(getNode(from).outbound[getId(to)]), query);
};
const getLinkedNodes = (directed) => (node, query) => map(getEdgesFrom(directed)(node, query), (edge) => nodes[edge.to]);
const getLinkedNodesGen = (directed) => function*(node, query) {
yield* yieldMap(getEdgesFromGen(directed)(node, query), (edge) => nodes[edge.to]);
};
const getLinkingNodes = (directed) => (node, query) => map(getEdgesTo(directed)(node, query), (edge) => nodes[edge.from]);
const getLinkingNodesGen = (directed) => function*(node, query) {
yield* yieldMap(getEdgesToGen(directed)(node, query), (edge) => nodes[edge.from]);
};
const nodeFactory = (payload, metadata) => ({
payload,
metadata,
numOutbound: 0,
numInbound: 0,
outbound: {},
inbound: {},
hasUndirectedEdges: {}
});
const edgeFactory = (from, to, payload, metadata, directed = true) => ({
directed,
payload,
metadata,
from: getId(from),
to: getId(to)
});
return {
nodes,
edges,
nodeCount,
edgeCount,
getId,
node: nodeFactory,
edge: edgeFactory,
/**
* Checks if a pair of nodes has at least one edge connecting them
* @function hasAnyEdge
* @memberof graph
* @param from - a node
* @param to - a node
* @instance
*/
hasAnyEdge: options.allowUndirected ? hasAnyEdge : hasDirectedEdge,
/**
* Checks if a pair of nodes has a directed edge connecting them
* @function hasDirectedEdge
* @memberof graph
* @param from - a node
* @param to - a node
* @instance
*/
hasDirectedEdge,
/**
* Checks if a pair of nodes has an undirected edge connecting them
* @function hasUndirectedEdge
* @memberof graph
* @param from - a node
* @param to - a node
* @instance
*/
hasUndirectedEdge: options.allowUndirected ? hasUndirectedEdge : undefined,
pack,
mergeWith,
/**
* Add a node to the graph
* @function addNode
* @memberof graph
* @param node - a node object generated with cortez.node()
* @fires options.onAddNode
* @instance
*/
addNode,
/**
* Add an edge to the graph
* @function addEdge
* @memberof graph
* @param edge - an edge generated with cortez.edge()
* @fires options.onAddEdge
* @instance
*/
addEdge,
/**
* Retrieve a node given a node object or its id
* @function getNode
* @memberof graph
* @param node - a node object or the id of a node
* @instance
*/
getNode,
/**
* Retrieve an edge given an edge object or its id
* @function getEdge
* @memberof graph
* @param node - an edge object or the id of an edge
* @instance
*/
getEdge,
/**
* Remove a node from a graph
* @function removeNode
* @memberof graph
* @param node - a node object or the id of a node
* @fires options.onRemoveNode
* @instance
*/
removeNode,
/**
* Remove an edge from a graph
* @function removeEdge
* @memberof graph
* @param edge - an edge object or the id of an edge
* @fires options.onRemoveEdge
* @instance
*/
removeEdge,
/**
* Shortcut method to create an edge between two nodes
* @function link
* @memberof graph
* @param from - a node
* @param to - a node
* @param payload - an object to be stored in the node
* @param metadata - an additional object to be stored in the node
* @param directed - whether the edge must be directed or not
* @instance
*/
link,
/**
* Retrieves a list of nodes
* @function inflateNodes
* @memberof graph
* @param nodeIds - an array of ids of nodes to be retrieved
* @instance
*/
inflateNodes,
/**
* Retrieves a list of edges
* @function inflateEdges
* @memberof graph
* @param edgeIds - an array of ids of edges to be retrieved
* @instance
*/
inflateEdges,
/**
* Retrieve nodes matching a query
* @function getNodes
* @memberof graph
* @param query - an object with a list of properties to be matched
* @instance
*/
getNodes,
/**
* Retrieves a list of nodes as a generator
* @function inflateNodesGen
* @memberof graph
* @param nodeIdsGen - a generator producing the ids of nodes to be retrieved
* @instance
*/
inflateNodesGen,
/**
* Retrieves a list of edges as a generator
* @function inflateEdgesGen
* @memberof graph
* @param edgeIdsGen - a generator producing the ids of edges to be retrieved
* @instance
*/
inflateEdgesGen,
/**
* Returns a generator retrieving nodes matching a query
* @function getNodesGen
* @memberof graph
* @param query - an object with a list of properties to be matched
* @instance
*/
getNodesGen,
/**
* Retrieve edges matching a query from a list of candidates
* @function getEdges
* @memberof graph
* @param edgeIds - a list of candidate ids of edges
* @param query - an object with a list of properties to be matched
* @instance
*/
getEdges: getEdges(),
/**
* Retrieve edges extending from a given node
* @function getEdgesFrom
* @memberof graph
* @param node - the source node
* @param query - an object with a list of properties to be matched
* @instance
*/
getEdgesFrom: getEdgesFrom(),
/**
* Retrieve edges reaching a given node
* @function getEdgesTo
* @memberof graph
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getEdgesTo: getEdgesTo(),
/**
* Retrieve edges extending from a given node to another given node
* @function getEdgesBetween
* @memberof graph
* @param node - the source node
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getEdgesBetween: getEdgesBetween(),
/**
* Retrieve edges matching a query from a list of candidates, as a generator
* @function getEdgesGen
* @memberof graph
* @param edgeIdsGenerator - a generator producing the ids of candidate edges
* @param query - an object with a list of properties to be matched
* @instance
*/
getEdgesGen: getEdgesGen(),
/**
* Retrieve edges extending from a given node
* @function getEdgesFromGen
* @memberof graph
* @param node - the source node
* @param query - an object with a list of properties to be matched
* @instance
*/
getEdgesFromGen: getEdgesFromGen(),
/**
* Retrieve edges reaching a given node, as a generator
* @function getEdgesToGen
* @memberof graph
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getEdgesToGen: getEdgesToGen(),
/**
* Retrieve edges extending from a given node to another given node
* @function getEdgesBetweenGen
* @memberof graph
* @param node - the source node
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getEdgesBetweenGen: getEdgesBetweenGen(),
/**
* Retrieve directed edges matching a query from a list of candidates
* @function getDirectedEdges
* @memberof graph
* @param edgeIds - a list of candidate ids of edges
* @param query - an object with a list of properties to be matched
* @instance
*/
getDirectedEdges: getEdges(true),
/**
* Retrieve directed edges extending from a given node
* @function getDirectedEdgesFrom
* @memberof graph
* @param node - the source node
* @param query - an object with a list of properties to be matched
* @instance
*/
getDirectedEdgesFrom: getEdgesFrom(true),
/**
* Retrieve directed edges reaching a given node
* @function getDirectedEdgesTo
* @memberof graph
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getDirectedEdgesTo: getEdgesTo(true),
/**
* Retrieve directed edges extending from a given node to another given node
* @function getDirectedEdgesBetween
* @memberof graph
* @param node - the source node
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getDirectedEdgesBetween: getEdgesBetween(true),
/**
* Retrieve nodes reached by directed edges that extend from a given node
* @function getLinkedNodes
* @memberof graph
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getLinkedNodes: getLinkedNodes(true),
/**
* Retrieve nodes having directed edges that reach a given node
* @function getLinkingNodes
* @memberof graph
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getLinkingNodes: getLinkingNodes(true),
/**
* Retrieve directed edges matching a query from a list of candidates, as a generator
* @function getDirectedEdgesGen
* @memberof graph
* @param edgeIdsGenerator - a generator producing the ids of candidate edges
* @param query - an object with a list of properties to be matched
* @instance
*/
getDirectedEdgesGen: getEdgesGen(true),
/**
* Retrieve directed edges extending from a given node
* @function getDirectedEdgesFromGen
* @memberof graph
* @param node - the source node
* @param query - an object with a list of properties to be matched
* @instance
*/
getDirectedEdgesFromGen: getEdgesFromGen(true),
/**
* Retrieve directed edges reaching a given node, as a generator
* @function getDirectedEdgesToGen
* @memberof graph
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getDirectedEdgesToGen: getEdgesToGen(true),
/**
* Retrieve directed edges extending from a given node to another given node
* @function getDirectedEdgesBetweenGen
* @memberof graph
* @param node - the source node
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getDirectedEdgesBetweenGen: getEdgesBetweenGen(true),
/**
* Retrieve directed nodes reached by directed edges that extend from a given node, as a generator
* @function getLinkedNodesGen
* @memberof graph
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getLinkedNodesGen: getLinkedNodesGen(true),
/**
* Retrieve nodes having directed edges that reach a given node
* @function getLinkingNodesGen
* @memberof graph
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getLinkingNodesGen: getLinkingNodesGen(true),
/**
* Retrieve undirected edges matching a query from a list of candidates
* @function getUndirectedEdges
* @memberof graph
* @param edgeIds - a list of candidate ids of edges
* @param query - an object with a list of properties to be matched
* @instance
*/
getUndirectedEdges: getEdges(false),
/**
* Retrieve undirected edges extending from a given node
* @function getUndirectedEdgesFor
* @memberof graph
* @param node - the source node
* @param query - an object with a list of properties to be matched
* @instance
*/
getUndirectedEdgesFor: getEdgesFrom(false),
/**
* Retrieve undirected edges extending from a given node to another given node
* @function getUndirectedEdgesBetween
* @memberof graph
* @param node - the source node
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getUndirectedEdgesBetween: getEdgesBetween(false),
/**
* Retrieve nodes reached by undirected edges that extend from a given node
* @function getConnectedNodes
* @memberof graph
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getConnectedNodes: getLinkedNodes(false),
/**
* Retrieve undirected edges matching a query from a list of candidates, as a generator
* @function getUndirectedEdgesGen
* @memberof graph
* @param edgeIdsGenerator - a generator producing the ids of candidate edges
* @param query - an object with a list of properties to be matched
* @instance
*/
getUndirectedEdgesGen: getEdgesGen(false),
/**
* Retrieve undirected edges extending from a given node
* @function getUndirectedEdgesForGen
* @memberof graph
* @param node - the source node
* @param query - an object with a list of properties to be matched
* @instance
*/
getUndirectedEdgesForGen: getEdgesFromGen(false),
/**
* Retrieve undirected edges extending from a given node to another given node
* @function getUndirectedEdgesBetweenGen
* @memberof graph
* @param node - the source node
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getUndirectedEdgesBetweenGen: getEdgesBetweenGen(false),
/**
* Retrieve nodes reached by undirected edges that extend from a given node, as a generator
* @function getConnectedNodesGen
* @memberof graph
* @param node - the target node
* @param query - an object with a list of properties to be matched
* @instance
*/
getConnectedNodesGen: getLinkedNodesGen(false),
};
};


Resume
Aspiring Computer Scientist & Freelance Software Developer | Experience with Java, C++, and Python
Education
- Ivy Tech Community College, Columbus, Indiana
Graduated May 2021
Associate of Applied Science in Computer Science GPA: 4.0 out of 4.0 - Rose-Hulman Institute of Technology
Graduating 2023
Bachelor's of Computer Science
Relevant Experience
Software Developer (Independent Contractor)
Spring – Fall 2019
Designed, as well as implemented, the base structure of an application to facilitate the introduction of other assets. Incorporated multiple assets and code from previous coders into a cohesive program that was up to the project manager’s specifications.
- Project was implemented using the C++ language.
- Collaborated with the project manager, as well as coworkers, to define the framework of the project.
- Updated previous code in order to synchronize with both newly established systems and architectures.
Valparaiso University IT Helpdesk Technician
Nov 2016 – Feb 2018
Provided technical support for students with issues on campus. Coordinated support tickets with the administrative system in addition to coworkers and supervisors in order to efficiently resolve problems.
- Consulted with supervisor as to how best tackle issues.
- Evaluated problems on a case-by-case system, and identified both solutions as well as possible roadblocks to granting support.
- If problems arose that were outside the scope of our support, cataloged the issue and set in motion the next steps to resolve the issue.
Skills
Languages
- C++
- Java
- Python
- JavaScript
- Additonal Experience working with HTML5/CSS (6 months), as well as SQLite
Proficient in Microsoft Excel, with a focus on conditional formatting and data analysis (2 years). Additional expertise in both Microsoft Word and PowerPoint.
Honors and Accomplishments
- Dean's List at Ivy Tech (Spring & Fall 2020, Spring 2021)
- Phi Theta Kappa Member
- Brian O'Keefe Presidential Scholarship


Port
folio
Home
About Me
Skills
Contact
Tutorials
Below are some links to learn HTML and CSS
W3Schools
Tutorialspoint
Internetingishard
Created By
Sailee Chitnis
© 2021 rights reserved


Constructor
new VLWholeSlideMicroscopyImageViewer(options)
Create a viewer instance.
Parameters:
| Name | Type | Description | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
Properties
|
Members
areROIsVisible :boolean
Whether annotated regions of interest are currently visible.
Type:
- boolean
imageMetadata :Array.<Object>
DICOM metadata for each VL Whole Slide Microscopy Image instance.
Type:
- Array.<Object>
isDrawInteractionActive :boolean
Whether draw interaction is active
Type:
- boolean
isModifyInteractionActive :boolean
Whether modify interaction is active.
Type:
- boolean
isSelectInteractionActive :boolean
Whether select interaction is active.
Type:
- boolean
numberOfROIs :number
Number of annotated regions of interest.
Type:
- number
Methods
activateDrawInteraction(options)
Activates the draw interaction for graphic annotation of regions of interest.
Parameters:
| Name | Type | Description | ||||||
|---|---|---|---|---|---|---|---|---|
options |
Object | Drawing options.
Properties
|
activateModifyInteraction(options)
Activates modify interaction.
Parameters:
| Name | Type | Description |
|---|---|---|
options |
Object | Modification options. |
addROI(Regions)
Adds a regions of interest.
Parameters:
| Name | Type | Description |
|---|---|---|
Regions |
ROI | of interest. |
deactivateDrawInteraction()
Deactivates draw interaction.
deactivateModifyInteraction()
Deactivates modify interaction.
deactivateSelectInteraction()
Deactivates select interaction.
getAllROIs() → {Array.<ROI>}
Gets all annotated regions of interest.
Returns:
Array of regions of interest.
- Type
- Array.<ROI>
getROI(uid) → {ROI}
Gets an individual annotated regions of interest.
Parameters:
| Name | Type | Description |
|---|---|---|
uid |
string | Unique identifier of the region of interest |
Returns:
Regions of interest.
- Type
- ROI
hideROIs()
Hides annotated regions of interest such that they are no longer
visible on the viewport.
popROI() → {ROI}
Pops the most recently annotated regions of interest.
Returns:
Regions of interest.
- Type
- ROI
removeAllROIs()
Removes all annotated regions of interest.
removeROI(uid)
Removes an individual regions of interest.
Parameters:
| Name | Type | Description |
|---|---|---|
uid |
string | Unique identifier of the region of interest |
render(options)
Renders the images in the specified viewport container.
Parameters:
| Name | Type | Description | ||||||
|---|---|---|---|---|---|---|---|---|
options |
Object | Rendering options.
Properties
|
resize()
Resize the viewer to fit the viewport.
showROIs()
Shows annotated regions of interest such that they become visible
on the viewport ontop of the images.


HTTP stands for Hypertext Transfer Protocol. The language used to communicate between web browsers and servers.If you intercept the connection between your computer and server it is mainly made of GET requests. It is an application-level protocol for distributed, collaborative, hypermedia information systems.
When you open any browser any type any link to website and the server replies to the request in http format.If you want to get some information from any website. If you type GET and website name you are asking the html code for that particular page.
The HTTP protocol is a request/response protocol based on the client/server based architecture where web browsers, robots and search engines, etc. act like HTTP clients, and the Web server acts as a server.
Client: The HTTP client sends a request to the server in the form of a request method, URI, and protocol version, followed by a MIME-like message containing request modifiers, client information, and possible body content over a TCP/IP connection.
Server: The HTTP server responds with a status line, including the message's protocol version and a success or error code, followed by a MIME-like message containing server information, entity meta information, and possible entity-body content.
As you see the second image, the client is first requesting the server to make connection if server accepts it sends acknowledgement back to client. After that the data is send.


Photoaffinity labeling of plasma membrane receptors for aldosterone from human mononuclear leukocytes.
Abstract
Non-genomic effects of aldosterone on the sodium-proton-antiport have been shown in human mononuclear leukocytes which could be related to a new aldosterone membrane receptor. In the present paper plasma membranes from human mononuclear leukocytes were covalently photolabeled with a[ 125I] -aldosterone derivative. Sodium dodecyl sulfate-polyacrylamide gel electrophoresis showed significant aldosterone binding at a molecular weight of approximately 50000 Dalton which was absent with 1 microM cold aldosterone, but not cortisol in the binding media. The presence of the sulfhydryl agent dithiothreitol did not affect results suggesting the absence of disulfide bridges in the steroid binding domain of the receptor. These data are the first to define the molecular weight of the membrane receptor for aldosterone.


My time at the Australian Medical Council will end towards the end of this month. I had a good 3 years with a great team, but it’s time for me to move on. I felt it was also time to move on from Canberra, the city I love to hate and one I have lived in for the past 8 years. I haven’t exactly been the biggest ambassador for the city, so it is probably for the best all round.
I’ve looked at a number of places to move on to. Melbourne has always stood out as my home town. But having looked back over the last 3 years, what I really enjoy is travel. I looked at a few countries I have enjoyed in the past and life there really appealed. And with local inspiration from the ever-moving Tim Riley, I felt I needed to go and see what it’s like for myself.
So, on 21 March 2013 I will be shoving two suitcases full of my life so far and moving to the UK. I have no idea what lies in store for me after that.
For those of you that know me in person, I hope to see you all before I go. I will be at the Sydney RORO meetup in February, RubyConf AU 20-22 February 2013, and Railscamp NZ 22-25 March 2013 (on my way to London).
All in all this is a very exciting time. Maybe i’ll even get to play a full werewolf game before I go.


Mariana Lopez
Groups:
AGILITY FEAT
Dashboard
Profiles
Care Events
Toolbox
Edit Layout
Edit Widget
Delete Widgets
ADD +
hello


Film gallery
Sign In/Sign Out
Loading...
Filtres
By popularity
By realise date (descending)
By realise date (ascending)
By rating (descending)
By rating (ascending)
START
PREV
1
NEXT
END


What is art, anyway?
It’s not often that MONTAG dodges the opportunity to nail its conceptual colours to the mast, but here is one of them. Defining art is an oxymoron. So let’s talk about storytelling instead.
Storytelling is easier to address: it's closer to “craft” and thus comes with less hoity-toity baggage than “art.” But it essentially does the same thing: it entertains, it provokes thought, it divides.
And if storytelling is the act of taking the ephemeral - philosophy, concepts, and anything else knocking around in their heads - and making them tangible, then new technology is about to make that process a lot more exciting for creator and consumer.
 Here’s how.
AR: closing the gap that art opens up
It’s a clattering inevitability that some of the initial uses of Augmented Reality technology have been to make AR versions of the same large-chested-girls-in-fantasy-elfin-bikinis that have been created by horny nerds since the beginning of time.

But really, what Augmented Reality will mean from a creative perspective is that stories will become a lot more woven into your life. The gaps between story and reality are shrinking.
Right now, experiencing a story involves engaging the mind, to overcome an immersion gap. There is a tangible difference between what is happening on the screen - where things are exploding artfully in slow-motion - and in your real life, where you’re sitting on the sofa in your underwear and picking your nose.
Suspension of disbelief is essential for a story to be successful. Watching Aliens means accepting that it’s plausible that the aliens exist, that the spaceship could have travelled that far in space, and that Ripley would have put up with all the dunderheaded men around her without nuking them from orbit ages ago.
And suspension of disbelief is a little more complex than that simple example. Movies, books, paintings, and games aren’t just portrayals of other worlds, they’re also static: the stories and meanings don’t change – and you have to be ready to accept that specific story.
This is where AR creeps into your life and moves all your furniture around while you’re asleep. Microsoft’s Hololens has already put AR tech onto people’s heads, and suddenly even the simplest video games become incredibly personalised real-world experiences.
In Hololems, the titular suicidal lemmings start crawling over your furniture, trying to find new and creative precipices to leap off.
AR can take a brilliant but hoary old game like Lemmings and make it astonishing. The thinking behind it explains how AR will affect your consumption of stories in a nutshell: why force the consumer to experience a created world, when the game can automatically fit to your world?
Soon, you'll be able to introduce elements of fantasy and story into your life. Games are an obvious example, but just think: how could you storify everything you do? Or make everything into art?
Or what about a version of art that you love surrounding you? I love Picobot, a Twitter bot that randomly generates colourful images. If I could have these madly flashing gifs seamlessly appear on billboards, I'd be happier; albeit maybe slightly twitchier.
x-7.26*sin(t)*atan2(7.71,x) #DZY pic.twitter.com/IdNJbYseQ6
— Picobot (@pico8bot) August 6, 2017
But think of the possibilities: a walk to the shops to buy milk could become a dazzling sci-fi adventure that you, and only you, see and play. Or it could become a Total Recall-style spy quest.
Or it could become Super Mario Brothers. No suspension of belief required.

You should never need to explain the appeal of the stories you love, whether they’re in movies, games, books, or music. A story scratches an itch in your brain, and that’s all there is to it, whether that story is Heart Of Darkness or Transformers: Dark of the Moon.
Artificial Intelligence can now be “creative” in it’s own right. And, as Kathryn Lawrence notes elsewhere on MONTAG this week, there’s no reason why AI stories won’t be better than the ones humans write.
And it's not just written stories: the jazz written by the Deepjazz AI software sounds just like the types of outrageously average jazz that’s noodled by aficionados in shoddy bars the world over.
And AI allows for quite subtle wish fulfilment: what if a classic book could be automatically re-written to your liking? What if you’d prefer Moriarty to really get one over Sherlock Holmes? This opens up some brand new questions, chief amongst them being: would you be happy if you got what you wanted?
The wider societal effects are equally interesting. What if Sherlock was automatically, convincingly re-written as a woman - aside from subtle changes in the stories themselves, what positive repercussions would the existence of Her-lock have on teenage female readers?
Thus, we’ll soon reach a point where computer graphics become indistinguishable from reality, stories weave their way into your life, and AI will be producing better creative work than the humans it learnt from.
So how would you take advantage? I know I’d commission a new version of Godfather Part 3 in a heartbeat – and I’ve been waiting for Wayne’s World 3 for over 25 years now...
Automated For The People
We’ve already waxed lyrical here on MONTAG about the paradigm-shifting nature of painting in 3D space, but it’s possible that the bigger step-change in creative storytelling will come from knowing how to fit lots of new interesting tech together.
Modular Creativity is specifically about melding wild tech with human input. A simple example would be for you to paint something in three dimensions with Tilt Brush, then 3D-print it, take a mould of that, and then to cast it in bronze.
I studied some snowy photos in #TiltBrush today because I want to create more winter worlds soon. I love how undefined the color of snow is. pic.twitter.com/qhCtdgpPqK
— Danny Bittman (@DannyBittman) August 5, 2017
But when you fold in more outlandish but feasible technology, things get really exciting. The new tech could kick off a democratisation of “big” creativity: giving everyone access to toolkits previously out of reach.
Imagine if you had access to an AI script editor. Paul Schrader-bot could take that screenplay you’ve been tinkering on for years and polish it to Hollywood standards.
Or let’s say you’re a wannabe movie director. The old path to success takes years of learning the ropes to prove your value. The barrier of entry is too high or too long for the majority of people.
But what if you could buy Hollywood: The App, which comes pre-loaded with 3D scenes, sets, costumes, camera movements, lighting settings, and perfect digitised versions of legendary actors, with synthesized voices to say anything you like?

Finally, we’d get to see 1977-era DeNiro and 1956-era Brando in that boy-meets-boy rom-com the world has been missing.
This technology is not just feasible, it's essentially here in the form of moddable, open-world games like GTA V. If only someone could tie up the licensing agreements with the various actors and they could unleash a wave of classic movies that would otherwise never have existed.
Storytelling may well start to seep into every area of our lives, but automation of creativity won’t mean us humans need take a backseat.
But if being an author director is playing god, it's time we all looked in the mirror and met our makers - and decide how we want our world be.


View My Reports
View All Workspaces
supervisor_account
SWITCH ACCOUNTS
supervisor_account
SWITCH ACCOUNTS
folder_shared
ALL WORKSPACES


%- include common/head.html %>
<%- include common/top.html %>
<%=__("pleaseSignIn")%>
" autofocus="" />
" />
<%=errorMsg %>
<%=__("signIn")%>


If you have some beginning experience in Unix programming, you may have felt the need of some text user interface operations, such as moving the cursor on the screen, editing user input, using colors, ... Such terminal IO related operations are not portable and not defined in C language. You need to either use the low-level termcap library or the curses library. Using curses/ncurses library is much easier and more portable.
#include <curses.h>
To link
the programs you need to use the -lcurses or
-lncurses option, like
gcc -lncurses prog.c
This way the
program is dynamically linked to the ncurses library. To run it in another
computer, the system must have the ncurses library installed. If you want to
avoid the trouble, you may have it statically linked. To do that, find the file
libncurses.a in /usr/lib and do
gcc prog.c libncurses.a
Most Unix systems have curses or ncurses installed as a default option. To find out if it's installed, you can try man ncurses man curses or go to /usr/lib and /usr/include to list the files.
If you're installing Linux or FreeBSD on your own machine, be sure to install the ncurses-development package in order to do ncurses programming.
initscr();
If your program
is going to write to several terminals, you should call newterm instead,
which is another story.
One-character-a-time. To disable the buffering of typed characters by the TTY driver and get a character-at-a-time input, you need to call
cbreak();
No echo. To suppress the automatic echoing of typed characters, you need to call
noecho();
Special keys. In order to capture special keystrokes like
Backspace, Delete and the four arrow keys by
getch()
, you need to call
keypad(stdscr, TRUE);
Before exiting. Before the program is terminated, endwin() must be called to restore the terminal settings.
The default window. A default window called stdscr, which is the size of the terminal screen, is supplied. To use the stdscr window, you don't need to do any initializations. You can also divide the screen to several parts and create a window to represent each part.
Create a new window. The data structure of window is WINDOW, defined in ncurses.h.  Here nline is the height of the window -- number of lines, ncols is the width -- number of columns of the window. y0 and x0 are the coordinates of the upper left corner of win on the screen -- line y0 and columns x0. You should make sure that the area of the new window is inside the screen.
Height and width of the window. The size of the whole screen can be determined by the two global variables COLUMNS and LINES. y0 and x0 should satisfy
0 <= y0 < LINES;
0 <= x0 < COLUMNS;
In X window system, the actual xterm size might be changed leaving these two variables obslete. In this case you should use the macro void getmaxyx(WINDOW *, int y, int x) to get the size of the screen.
int h, w;
getmaxyx(stdscr, h, w);
No overlapping. Windows cannot overlap with each other. Therefore you have two options: only use stdscr and no other windows, or create several non-overlapping windows but do not use stdscr.
Refresh. If you make some change to a window, such as printing something or moving the cursor, the effect is not shown on the screen until you call the wrefresh() function
wrefresh(win);
Clear window. To erase everything written in the window win, call wrefresh(win). refresh() is equivalent to wrefresh(stdscr).
Delete window. If a window win is no longer needed, and you're going to create new windows to overlap it, you should call delwin(win) to delete the window (release the memory it is using).
To move the cursor to a new position on a window, use the function int wmove(WINDOW *win, int y, int x)
wmove(win, y, x);
where
(x, y) are the coordinates of the new position in the window. If
the window has nlines lines and ncolumns
columns, then 0 <= y < nlines 0 <= x < ncolumns
Refresh. The actual cursor motion is not shown on the screen untill you do a wrefresh(win).
move(y, x) is equivalent to the wmove(stdscr, y, x).
int getch(void)
. int ch = getch();No echoing. If you have called
noecho()
, the character ch
will not be printed on the screen, otherwise it will. Disabling automatic
echoing gives you more control over the user interface.
No buffering. If you have called cbreak(void)
each key the user hits is returned
immediately by getch()
. Otherwise the keys hit by
the user are queued until a newline is read. Then calls to getch()
take characters from the queue in FIFO manner until
the queue is empty and the next whole line is read.
No delaying. Usually a call to getch()
waits until a key is hit. If you have called nodelay(stdscr,
TRUE)
, then getch()
will work in a
non-blocking manner -- it will return ERR if the key input is
not ready. This is usually useful for writing game-like programs, where the
promptness of user response matters. For example
int ch; nodelay(stdscr, TRUE); for (;;) { if ((ch = getch()) == ERR) { /* user hasn't responded ... */ } else { /* user has pressed a key ch ... */ } }
Special keys. If you have called keypad(stdstr,
TRUE)
, then if the user hits a special key such as the Delete key, the arrow keys, Ctrl combined keys
and function keys, a single int value will be returned. Here is the definition
of several special keys
key code description KEY_DOWN The four arrow keys ... KEY_UP KEY_LEFT KEY_RIGHT KEY_HOME Home key KEY_BACKSPACE Backspace KEY_F(n) Function keys, for 0 <= n >= 63 KEY_DC Delete character KEY_IC Insert char or enter insert mode KEY_ENTER Enter or sendFor a complete list read the man page of
getch()
.
Catch special keys. To use these keys, you need to check the return
value of getch()
. For example
int ch = getch(); switch (ch) { case KEY_BACKSPACE: /* user pressed backspace */ ... case KEY_UP: /* user pressed up arrow key */ ... case KEY_DOWN: /* user pressed up arrow key */ ... case 'A' .... /* user pressed key 'A' */ ... }Read character from a window. The function
int
wgetch(WINDOW *win)
. reads a key from a window. The user input of
course comes from the keyboard and not the screen window. But the different
windows on the screen might have different delay modes and other properties,
therefore affect the behavior of wgetch()
.
Moving the cursor and read a character. There are also functions which combine cursor moving and character reading together
int mvgetch(int y, int x); int mvwgetch(WINDOW *win, int y, int x);
int waddch(WINDOW * win, chtype
ch)
adds a character on the window at the current cursor position,
and the cursor position is advanced then.
Wrap. If the new position of the cursor is out of the window, it wraps to the beginning of the next line.
Scroll. If the next line is out of the window, and you have called
scrollok(win, TRUE)
when the window was created, the
stuff in the window is scrolled up one line.
Character attribute. The parameter ch
is
of type chtype()
, which is the ASCII value of the
character combined with some video attributes such as colors. The combination is
through the logical OR of the character value and the attribute,
which I will talk about in the section.
Refresh. After a call to waddch
, the
screen is not updated until you call wrefresh(win)
.
mvwaddch(win, y, x, ch);
is equivalent to wmove(win, y, x); waddch(win, ch);
addch(ch);
is equivalent to waddch(stdscr, ch);
.
wechochar(win, ch);
function and echochar(ch)
are equivalent to waddch(win,
ch); wrefresh(win);
and addch(ch);
refresh();
respectively. But echochar
and
wechochar
may be more efficient.
int waddstr(WINDOW *win, const char *str)
and
int addstr(const char *str)
prints a null-terminated
string at the cursor position of the window, and advance the cursor position
accordingly.
The functions int wprintw(WINDOW *win, char *fmt
...)
and int printw(char *fmt ...)
do
formatted output in the same fashion as the analogous standard library function
printf
.
waddch(win, ch)
a character value combined with
attribute. The other is setting the global window attribute.
Character type. When calling waddch(win,
ch)
or addch(ch)
, logical
OR the character value with the attribute. For example, A_UNDERLINE
is the predefined attribute for underlining.
To print the character 'X' with underlining, do
waddch(win, 'X' | A_UNDERLINE);Using several attributes is of course possible. For example, to To print the character 'X' with highlight in color pair 3
waddch(win, 'X' | A_UNDERLINE | COLOR_PAIR(3));
Setting window attribute. int wattron(WINDOW *win,
int attr)
function to turn on an attribute attr
. Then anything printed by subsequent calls to waddch
, addstr
and waddstr
will have the attribute attr
, For example, to print a highlighted message on the
screen
attron(A_STANDOUT); addstr("I am highlighted!\n");Predefined attributes. Here is some attributes defined in ncurses.h
A_NORMAL Normal display (no highlight) A_STANDOUT Best highlighting mode of the terminal. A_UNDERLINE Underlining A_REVERSE Reverse video A_BLINK Blinking A_DIM Half bright A_BOLD Extra bright or bold A_PROTECT Protected mode A_INVIS Invisible or blank mode A_ALTCHARSET Alternate character set A_CHARTEXT Bit-mask to extract a character COLOR_PAIR(n) Color-pair number n
start_color()
.
When start_color()
is called, a set of
colors and color pairs are created which you can use. The number
of available colors and the number of the color pairs are stored in two global
variables COLORS
and COLOR_PAIRS
. To use an predefined color pair as an
attribute, you need to cal the macro COLOR_PAIR(n)
,
where n must satisfy
0 <= n < COLORSExample. To give a window the color attribute defined by color pair #2, so that each subsequent character printed in this window has the foreground and background color defined by color pair #2
wattron(win, COLOR_PAIR(2));The meaning of a color pair can be redefined. For example
init_pair(1,2,0);redefine the color pair #1 with foreground color #2 and background color #0. In the function
int init_pair(short n, short f, short
b)
the parameters must satisfy 0 <= n < COLORS 0 <= f < COLOR_PAIRS 0 <= b < COLOR_PAIRS
When start_color()
is called, 8 basic colors are
initialized
COLOR_BLACK COLOR_RED COLOR_GREEN COLOR_YELLOW COLOR_BLUE COLOR_MAGENTA COLOR_CYAN COLOR_WHITEYou can use these names in
init_pair()
for
specifying foreground and background color.
To find out what foreground color and background color is used by a color
pair, use the function int pair_content(short pair, short *f,
short *b)
. To find out the definition of a color use the function
int color_content(short color, short *r, short *g, short
*b)
Color can also be redefined by int init_color(short n, short
r, short g, short b)
, where n is the index of color, must be less
than COLORS. r, g, and b represent the intensity of red, green and blue. Each
value of r, g and b must be less than 1000.
ACS_BLOCK solid square block ACS_BOARD board of squares ACS_BTEE bottom tee ACS_BULLET bullet ACS_CKBOARD checker board (stipple) ACS_DARROW arrow pointing down ACS_DEGREE degree symbol ACS_DIAMOND diamond ACS_GEQUAL greater-than-or-equal-to ACS_HLINE horizontal line ACS_LANTERN lantern symbol ACS_LARROW arrow pointing left ACS_LEQUAL less-than-or-equal-to ACS_LLCORNER lower left-hand corner ACS_LRCORNER lower right-hand corner ACS_LTEE left tee ACS_NEQUAL not-equal ACS_PI greek pi ACS_PLMINUS plus/minus ACS_PLUS plus ACS_RARROW arrow pointing right ACS_RTEE right tee ACS_S1 scan line 1 ACS_S3 scan line 3 ACS_S7 scan line 7 ACS_S9 scan line 9 ACS_STERLING pound-sterling symbol ACS_TTEE top tee ACS_UARROW arrow pointing up ACS_ULCORNER upper left-hand corner ACS_URCORNER upper right-hand corner ACS_VLINE vertical lineUsually on terminals using these symbols can draw pretty windows and shapes. One place to use this is the
wborder
function, which draws borders for a window. See the man page for details about
the parameters, but usually do it the following way wborder(win, 0, 0, 0, 0, 0, 0, 0, 0);will make a good looking window.
To draw a horizontal line across the window, do
whline(win, ACS_HLINE, ncolumns);
#include <signal.h>
void* resizeHandler(int);
int main(void) {
...
signal(SIGWINCH, resizeHandler);
...
}
void* resizeHandler(int sig)
{
int nh, nw;
getmaxyx(stdscr, nh, nw); /* get the new screen size */
...
}


The Undertaker talks about WWE legend who he goes to advice for
by Nishant JayaramThe Undertaker was recently interviewed by WWE Hall of Famer Stone Cold Steve Austin for the "Broken Skull Sessions" on the WWE Network.
In the show, where he talks about several different things, right from his start in WCW to his WWE run as well as the trials and tribulations that he had to face in his WWE career.
In the interview, he was asked by Stone Cold about which Superstar he went to advice for. The Undertaker revealed that WWE Hall of Famer Jake "The Snake" Roberts, was the legend that he spoke to when 'Taker was a budding Superstar.
"Jake ‘The Snake’ Roberts, man... brilliant, brilliant mind. Unbelievable insight on how to put that character together, and he would tell me, like, he would listen to Pink Floyd or he would listen to Black Sabbath which, you know... that got me, ‘Okay I’m gonna get some heat for this’.
"I would look in the Bible for different verses. Back then it didn’t bother me as much to alter it around a little bit, you know, who am I tell?”
“So I started looking outside the box on how to put all this together and become this character. He didn’t even tell me this, but I heard him tell someone else - ‘once the music starts you are that person’.
"I probably took it a step further because I stayed that person for the first five or six years. He had so many good innovative ways to put things together and to look at different aspects of the business that no one got.”
You can watch the entire interview on the WWE Network.
We want to know what you think of the matches that you see on TV! Go to our WWE page here and rate and comment what you thought of them!


In the windows port there are two executables: deskshell.exe and deskshell_debug.exe If you run the second executable then it will open a console window that will show debug messages and errors from the backend.
To launch an application with the debug executable you can rename it from app.desk to app.desk-debug. Clicking on the app will then automatically launch it will the debug console window.
If you are developing the source code of deskshell then you may run into startup errors that prevent the application from being able to be launched. In this case it can be difficult to know what is going wrong. It is possible to create a .bat file and use that to directly launch the deskshell code and get any fatal errors. An example bat file is shown below. Set DIR variable to point to the deskshell directory and then change app.desk to be the name of your desk file. If you rename the file to be .desk-debug you will also get a console window open.
rem set DIR to hold path to Deskshell folder.
set DIR=%cd%\..\..\Deskshell
%DIR%\bin\win\node.exe %DIR%\bin\win\deskshell.js %cd%\app.desk
pause
Project Wiki


| Autodesk IFC Prototype | Free form surface modelling | ||
| 1996
Autodesk Richard See |
1997
ICEM Soeren Harner |
||
| IAI IFC Prototype | DWG generation from database | ||
| 1998
Autodesk Frank Höber |
1998
Bene CAD/CAM Lösungen Gerd Warmuth |
||
| Autodesk Mechanical solid modelling | AutoCAD, COM & AS 400 utilities | ||
| 1999
Harness Software Ltd Ian Thompson |
2000-2001
CAD/CAM Lösungen Gerd Warmuth |
||
| Web design | Bezier polynomial analysis | ||
| 2001
ofd Otto Fröhlich see the result at http://www.ofd.ch |
2002
Euklid Gregor Hensen |


We design & build brands, campaigns & digital projects for businesses large & small.
Brook embraces a modern look with various enhanced pre-defined page elements.
More detailsBrook embraces a modern look with various enhanced pre-defined page elements.
More detailsBrook embraces a modern look with various enhanced pre-defined page elements.
More details


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
@ApiAudience.Public @ApiStability.Stable @Inheritance.Sealed public interface Kiji
Provides a handle to a Kiji instance that contains table information and access to
Kiji administrative functionality. Kiji instances are identified by a KijiURI
.
The default KijiURI is: kiji://.env/default/
Kiji.Factory.open(KijiURI)
. Cleanup is
requested with the inherited ReferenceCountable.release()
method. Thus the lifecycle of a Kiji
object looks like:
Kiji kiji = Kiji.Factory.open(kijiURI);
// Do some magic
kiji.release();
Upon installation, a Kiji instance contains a KijiSystemTable
, KijiMetaTable
,
and KijiSchemaTable
that each contain information relevant to the operation of Kiji.
These tables can be accessed via the getSystemTable()
, getMetaTable()
,
and getSchemaTable()
methods respectively.
User tables can be accessed using KijiTableFactory.openTable(String)
. Note that they must be closed
after they are no longer necessary.
KijiTable kijiTable = kiji.openTable("myTable");
// Do some table operations
kijiTable.close();
The Kiji administration interface contains methods to create, modify, and delete tables from a Kiji instance:
createTable(TableLayoutDesc)
- creates a Kiji table with a specified layout.modifyTableLayout(TableLayoutDesc)
- updates a Kiji table with a new layout.deleteTable(String)
- removes a Kiji table from HBase.
| Nested Class Summary | |
|---|---|
static class |
Kiji.Factory
Provider for the default Kiji factory. |
| Method Summary | |
|---|---|
void |
createTable(String name,
KijiTableLayout layout)
Deprecated. Replaced by createTable(TableLayoutDesc) |
void |
createTable(String name,
KijiTableLayout layout,
byte[][] splitKeys)
Deprecated. Replaced by createTable(TableLayoutDesc, byte[][]) |
void |
createTable(String name,
KijiTableLayout layout,
int numRegions)
Deprecated. Replaced by createTable(TableLayoutDesc, int) |
void |
createTable(TableLayoutDesc layout)
Creates a Kiji table in an HBase instance. |
void |
createTable(TableLayoutDesc layout,
byte[][] splitKeys)
Creates a Kiji table in an HBase instance. |
void |
createTable(TableLayoutDesc layout,
int numRegions)
Creates a Kiji table in an HBase instance. |
void |
deleteTable(String name)
Deletes a Kiji table. |
Configuration |
getConf()
Deprecated. |
KijiMetaTable |
getMetaTable()
Gets the meta table for this Kiji instance. |
KijiSchemaTable |
getSchemaTable()
Gets the schema table for this Kiji instance. |
KijiSecurityManager |
getSecurityManager()
Gets the security manager for this Kiji. |
KijiSystemTable |
getSystemTable()
Gets the system table for this Kiji instance. |
List<String> |
getTableNames()
Gets the list of Kiji table names. |
KijiURI |
getURI()
|
boolean |
isSecurityEnabled()
Returns whether security is enabled for this Kiji. |
KijiTableLayout |
modifyTableLayout(String name,
TableLayoutDesc update)
Deprecated. Replaced by modifyTableLayout(TableLayoutDesc) . |
KijiTableLayout |
modifyTableLayout(String name,
TableLayoutDesc update,
boolean dryRun,
PrintStream printStream)
Deprecated. Replaced by modifyTableLayout(TableLayoutDesc, boolean, PrintStream) . |
KijiTableLayout |
modifyTableLayout(TableLayoutDesc update)
Sets the layout of a table. |
KijiTableLayout |
modifyTableLayout(TableLayoutDesc update,
boolean dryRun,
PrintStream printStream)
Sets the layout of a table, or print the results of setting the table layout if dryRun is true. |
| Methods inherited from interface org.kiji.schema.KijiTableFactory |
|---|
openTable |
| Methods inherited from interface org.kiji.schema.util.ReferenceCountable |
|---|
release, retain |
| Method Detail |
|---|
@Deprecated Configuration getConf()
KijiURI getURI()
KijiSchemaTable getSchemaTable() throws IOException
The schema table is owned by the Kiji instance : do not close it.
.
IOException
- If there is an error.KijiSystemTable getSystemTable() throws IOException
The system table is owned by the Kiji instance : do not close it.
.
IOException
- If there is an error.KijiMetaTable getMetaTable() throws IOException
The meta table is owned by the Kiji instance : do not close it.
.
IOException
- If there is an error.boolean isSecurityEnabled() throws IOException
IOException
- If there is an error.KijiSecurityManager getSecurityManager() throws IOException
Throws KijiSecurityException if the Kiji security version is not compatible with a
KijiSecurityManager. Use isSecurityEnabled()
to check whether security version
is compatible first.
IOException
- If there is an error opening the KijiSecurityManager.@Deprecated void createTable(String name, KijiTableLayout layout) throws IOException
createTable(TableLayoutDesc)
name
- The name of the table to create.layout
- The initial layout of the table (with unassigned column ids).
IOException
- on I/O error.
KijiAlreadyExistsException
- if the table already exists.void createTable(TableLayoutDesc layout) throws IOException
layout
- The initial layout of the table (with unassigned column ids).
IOException
- on I/O error.
KijiAlreadyExistsException
- if the table already exists.@Deprecated void createTable(String name, KijiTableLayout layout, int numRegions) throws IOException
createTable(TableLayoutDesc, int)
name
- The name of the table to create.layout
- The initial layout of the table (with unassigned column ids).numRegions
- The initial number of regions to create.
IllegalArgumentException
- If numRegions is non-positive, or if numRegions is
more than 1 and row key hashing on the table layout is disabled.
IOException
- on I/O error.
KijiAlreadyExistsException
- if the table already exists.void createTable(TableLayoutDesc layout, int numRegions) throws IOException
layout
- The initial layout of the table (with unassigned column ids).numRegions
- The initial number of regions to create.
IllegalArgumentException
- If numRegions is non-positive, or if numRegions is
more than 1 and row key hashing on the table layout is disabled.
IOException
- on I/O error.
KijiAlreadyExistsException
- if the table already exists.@Deprecated void createTable(String name, KijiTableLayout layout, byte[][] splitKeys) throws IOException
createTable(TableLayoutDesc, byte[][])
name
- The name of the table to create.layout
- The initial layout of the table (with unassigned column ids).splitKeys
- The initial key boundaries between regions. There will be splitKeys
+ 1 regions created. Pass null to specify the default single region.
IOException
- on I/O error.
KijiAlreadyExistsException
- if the table already exists.void createTable(TableLayoutDesc layout, byte[][] splitKeys) throws IOException
layout
- The initial layout of the table (with unassigned column ids).splitKeys
- The initial key boundaries between regions. There will be splitKeys
+ 1 regions created. Pass null to specify the default single region.
IOException
- on I/O error.
KijiAlreadyExistsException
- if the table already exists.void deleteTable(String name) throws IOException
name
- The name of the Kiji table to delete.
IOException
- If there is an error.List<String> getTableNames() throws IOException
IOException
- If there is an error.@Deprecated KijiTableLayout modifyTableLayout(String name, TableLayoutDesc update) throws IOException
modifyTableLayout(TableLayoutDesc)
.
name
- The name of the Kiji table to change the layout of.update
- The new layout for the table.
IOException
- If there is an error.KijiTableLayout modifyTableLayout(TableLayoutDesc update) throws IOException
update
- The new layout for the table.
IOException
- If there is an error.@Deprecated KijiTableLayout modifyTableLayout(String name, TableLayoutDesc update, boolean dryRun, PrintStream printStream) throws IOException
modifyTableLayout(TableLayoutDesc, boolean, PrintStream)
.
name
- The name of the Kiji table to affect.update
- The new layout for the table.dryRun
- true if this is a 'dry run', false if changes should be made.printStream
- the print stream to use for information if dryRun is true.
If null, stdout will be used.
IOException
- If there is an error.KijiTableLayout modifyTableLayout(TableLayoutDesc update, boolean dryRun, PrintStream printStream) throws IOException
update
- The new layout for the table.dryRun
- true if this is a 'dry run', false if changes should be made.printStream
- the print stream to use for information if dryRun is true.
If null, stdout will be used.
IOException
- If there is an error.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


 No? Well, that's what you see at a toy store.
Continue to website ⇒


|
Introduction
|
This tutorial will introduce you to the many ways that you can use Beatnik to add music to your pages. The tutorial also has links in places to related technical reference pages in the documentation.
This document deals initially with only the authoring for Netscape Navigator using the EMBED tag which is used to embed a plug-in in an HTML page. Placing music in an HTML page with Beatnik so that it plays under Navigator as well as Internet Explorer is dealt with towards the end of this tutorial. However, since the Beatnik Plug-in for Netscape Navigator and the Beatnik ActiveX Control for Internet Explorer have been designed to be fully compatible, all the principles that you will learn by reading through this document can be applied to authoring for both environments. The differences in syntax between Navigator's EMBED tag and Internet Explorer's OBJECT tag are finally explained, and a way to author content once for both browsers is also fully demonstrated.


Demonstrates how to use the Animation Metrics API to access the raw parameters that define the animations in the Windows Animation Library.
This enables developers of applications and application frameworks to create animations consistent with Windows and other apps that use the Windows Animation Library.


Christmas holidays are usually fulfilled by joy and gift giving (santa gives, children receive). The idea of gift giving includes knowing and respecting the target kid in terms of his interests, or any other relative attributes from demographic ones (gender, age, or culture) to self-induced ones.
This year is different. This year is even harder for Santa to satisfy all the good kids. This year Santa is not looking only for the good kids, now he is also looking for the good and negative tested for coronavirus kids. Besides that, Santa has a very small pool of available intangible gifts this year, for the less lucky ones. As long as he isn't a sibling for the kid, he can't give them a kiss, or even a hug and Santa RESPECTS this rule, no matter if they're a beautiful high school cheerleader hottie or a miopico-nerdy-MIT student, he can't touch them, at all!
Who is Santa? When and where is he coming? To ease the explanation and to not deepen in paradoxal assertions, russians say that their Santa is named Ded Moroz and he is depicted as bringing presents to well-mannered children, often delivering them in person on New Year's Eve (Russians don't care about coronavirus, so their version of Santa doesn't apply the negative-tested rule this year). Ded Moroz made a deal with their president this year, Vladimir Putin, to deliver free SPUTNIK V anti-covid vaccine developed by them this year as an add-on to gifts given to kids (there are some conspirationists that say Vladimir Putin is the russian Ded Moroz). On the other hand, the rest of the world has the standard version of Santa available this year, the red one with red nose and white beard who is coming to the homes of well-behaved and negative-tested children on the night of Christmas Eve (December 24th) or during the early morning hours of Christmas Day.
In conclusion I would like to say that even if this year is different, Santa is not leaving us alone and will go from home to home, from kid to kid, to give them gifts, of course, while wearing a protection N95 mask in order to respect the new restrictions and if there’re more than 4 members in the family he will stay outside as long as the constraint regarding the maximum number of persons inside is not disposed of.


Welcome to the memory game
Choose number of tiles
16
20
24
Play game
Congrats! You got 'em all!
End game!


This project should fulfill all the user stories referenced in Nightlife Coordination App project. The heroku version was built using Angular. The repo for the app resides at https://github.com/clnhll/whatstonight. This demo should be a completely new version instead of a duplicate.


Harry Potter and His Magic Scroll
问题描述 :
Harry Potter want to make some scrolls to improve his magic power. He has a very big incantation dictionary, and the content of a scroll, must be a continuous passage from the dictionary. To make the scroll more powerful, Harry pick out a few powerful magic words, and want the scroll contains them. Given such magic words, where to start and where to end, to make the total number of words Harry Potter must write down for a scroll minimum? If there are some passages whose length are equal, choose the one which start first.
输入:
The first line is the number of cases.
For each case, there will be the content of the dictionary, which end with a line contains a single "#". Each line of the dictionary will not contain more than 2,000 characters, ant it will contain no more than 100,000 words. In a dictionary, Words are only splited by a single space. A word MAY in two lines.
Then followed by a line contain a integer T, indicates the number of scrolls. For each scroll, First line is an integer m meaning the number of magic words that the scroll must contain, then followed by m such magic words. The length of a word will not exceed 20.
For each case, there will be the content of the dictionary, which end with a line contains a single "#". Each line of the dictionary will not contain more than 2,000 characters, ant it will contain no more than 100,000 words. In a dictionary, Words are only splited by a single space. A word MAY in two lines.
Then followed by a line contain a integer T, indicates the number of scrolls. For each scroll, First line is an integer m meaning the number of magic words that the scroll must contain, then followed by m such magic words. The length of a word will not exceed 20.
输出:
The first line is the number of cases.
For each case, there will be the content of the dictionary, which end with a line contains a single "#". Each line of the dictionary will not contain more than 2,000 characters, ant it will contain no more than 100,000 words. In a dictionary, Words are only splited by a single space. A word MAY in two lines.
Then followed by a line contain a integer T, indicates the number of scrolls. For each scroll, First line is an integer m meaning the number of magic words that the scroll must contain, then followed by m such magic words. The length of a word will not exceed 20.
For each case, there will be the content of the dictionary, which end with a line contains a single "#". Each line of the dictionary will not contain more than 2,000 characters, ant it will contain no more than 100,000 words. In a dictionary, Words are only splited by a single space. A word MAY in two lines.
Then followed by a line contain a integer T, indicates the number of scrolls. For each scroll, First line is an integer m meaning the number of magic words that the scroll must contain, then followed by m such magic words. The length of a word will not exceed 20.
样例输入:
1 Harr y Potter want to make some scrolls to improve his magic power. # 2 2 Harry Potter 1 to
样例输出:
0 11 18 19
(adsbygoogle = window.adsbygoogle || []).push({});
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
PPTV也可以看，D站都被土豆限制了
for(int i=1; i<=m; i++){
for(int j=1; j<=n; j++){
dp = dp [j-1] + 1;
if(s1.charAt(i-1) == s3.charAt(i+j-1))
dp = dp[i-1] + 1;
if(s2.charAt(j-1) == s3.charAt(i+j-1))
dp = Math.max(dp [j - 1] + 1, dp );
}
}
这里的代码似乎有点问题？ dp(i)(j) = dp(i)(j-1) + 1;这个例子System.out.println(ils.isInterleave("aa","dbbca", "aadbbcb"));返回的应该是false
非常不错
不同的编译器，printf(),执行的顺序不同，所以结果也就不同，建议不要那么写
程序是错的吧，明显没有判断不和该节点相邻的其他节点是否相互相邻
输出规范写错了哦~
很高兴你会喜欢这个网站。目前还没有一个开发团队，网站是我一个人在维护，都是用的开源系统，也没有太多需要开发的部分，主要是内容整理。非常感谢你的关注。
有两个重复的话结果是正确的，但解法不够严谨，后面重复的覆盖掉前面的，由于题目数据限制也比较严，所以能提交通过。已更新算法
是穷举，但是代码有优化（v数组），并不是2^n。测试数据应该没问题，之前有超时的代码。
6题应该就是算概率的吧
不错，赞一个！
.net中char类型不是两个字节么
最长回文子串可以使用manacher算法，将时间复杂度降到O(n)。
你指的哪个问题？


Displayed on the homepage
Register a Github application to get a Client ID
Authentication server you deployed


Please fill in all fields with details matching your passport


127 games in category all
| Game Name | Game Type | Notes |
|---|---|---|
| Akira | Famicom | - |
| Dragon Quest | Famicom | Dragon Warrior (US) |
| Dragon Quest II | Famicom | Dragon Warrior II (US) |
| Dragon Quest III | Famicom | Dragon Warrior III (US) |
| Dragon Quest IV | Famicom | Dragon Warrior IV (US) |
| Final Fantasy 1 & 2 | Famicom | - |
| Final Fantasy 3 | Famicom | - |
| God Slayer | Famicom | Crystalis (US) |
| Hercules | Famicom | - |
| Jesus | Famicom | - |
| Just Breed | Famicom | - |
| Labyrinth | Famicom | - |
| Milon's Secret Castle | Famicom | - |
| Mother | Famicom | - |
| Shadowgate | Famicom | - |
| Willow | Famicom | - |
| Clash at Demonhead | NES | - |
| The Terminator | NES | - |
| Total Recall | NES | - |
| Ultima: Quest of the Avatar | NES | - |
| Who Framed Roger Rabbit | NES | - |
| Willow | NES | - |
| Wizards and Warriors | NES | - |
| The Magic of Scheherazade | NES | - |
| Crystalis | NES | - |
| Deja Vu | NES | - |
| Demon Sword | NES | - |
| Double Dribble | NES | - |
| Final Fantasy | NES | - |
| Robin Hood Prince of Thieves | NES | - |
| Home Alone 2 | NES | - |
| John Elway's Quarterback | NES | - |
| Kirby's Adventure | NES | no cart |
| The Little Mermaid | NES | - |
| The Battle of Olympus | NES | - |
| Super Spike V'Ball | NES | - |
| Strider | NES | - |
| Star Tropics | NES | - |
| Friday the 13th | NES | - |
| Assassins Creed 3 | Other | - |
| Final Fantasy XII | Other | - |
| Batman: Arkham City | Other | - |
| Borderlands 2 | Other | - |
| Chrono Trigger | Other | - |
| Crysis 2 | Other | - |
| Dragon Quest 1 & 2 | Other | - |
| Dragon Quest 3 | Other | - |
| Dragon Quest 8 | Other | - |
| Final Fantasy XIII-2 | Other | - |
| Final Fantasy VII | Other | - |
| Final Fantasy XII | Other | - |
| Final Fantasy XIII | Other | - |
| Zelda: Ocarina of Time | Other | - |
| The Warriors | Other | - |
| Uncharted 3 | Other | - |
| Tenchu: Wrath of Heaven | Other | - |
| Star Ocean Blue Sphere | Other | - |
| Splinter Cell | Other | - |
| SOCOM | Other | - |
| Skyrim | Other | - |
| Saints Row The Third | Other | - |
| Rocky | Other | - |
| Pokemon Gold | Other | - |
| Phantasy Star IV | Other | - |
| NHL 14 | Other | - |
| Metal Gear Solid 2 | Other | - |
| Lego Lord of the Rings | Other | - |
| Final Fantasy VIII | Other | - |
| Torin's Passage | PC | - |
| The Legend of Kyrandia: Book 1 | PC | - |
| The Hitchhiker's Guide to the Galaxy | PC | - |
| Space Quest Collection | PC | - |
| Space Quest 6 | PC | - |
| Space Quest 5 | PC | - |
| Space Quest 4 | PC | - |
| Space Quest 3 | PC | - |
| Space Quest 2 | PC | - |
| Space Quest 1 VGA | PC | - |
| Shivers | PC | - |
| Sanitarium | PC | - |
| Quest for Glory II: Trial by Fire | PC | - |
| Police Quest IV: Open Season | PC | - |
| Phantasmagoria | PC | - |
| Leisure Suit Larry's Greatest Hits and Misses | PC | - |
| Laura Bow 2: The Dagger of Amon Ra | PC | - |
| King's Quest VII: The Princeless Bride | PC | - |
| King's Quest VI: Heir Today, Gone Tomorrow | PC | - |
| King's Quest V (Alternate) | PC | - |
| King's Quest IV: The Perils of Rosella | PC | - |
| King's Quest II: Romancing the Throne | PC | - |
| King's Quest I: Quest for the Crown | PC | - |
| Hero's Quest: So You Want to Be a Hero? | PC | - |
| Future Wars | PC | sealed |
| Eye of the Beholder 1 | PC | own 2 |
| Eric the Unready | PC | - |
| Star Trek 25th Anniversary | PC | - |
| King's Quest V: Absences Makes the Heart Go Yonder | PC | - |
| Fire Emblem: Mystery of the Emblem | SFC | - |
| Final Fight | SFC | - |
| Feda: The Emblem of Justice | SFC | - |
| Dragon Quest VI | SFC | - |
| Dragon Quest V | SFC | - |
| Dragon Quest III | SFC | - |
| Dragon Quest 1 & 2 | SFC | - |
| Dark Half | SFC | - |
| Chrono Trigger | SFC | - |
| Albert Odyssey | SFC | - |
| Breath of Fire | SFC | - |
| Actraiser | SFC | - |
| Fifa International Soccer | SNES | no cart |
| Final Fantasy 3 | SNES | - |
| Final Fantasy 2 | SNES | - |
| Final Fantasy Mystic Quest | SNES | - |
| Eye of the Beholder | SNES | - |
| Addams Family Values | SNES | - |
| Illusion of Gaia | SNES | - |
| Mortal Kombat | SNES | - |
| NHL 94 | SNES | no cart |
| NHL 95 | SNES | no cart |
| NHL 97 | SNES | no cart |
| Shadowrun | SNES | own 2 boxes, 2 instructions |
| Sim City | SNES | - |
| Street Fighter 2 Turbo | SNES | - |
| Super Mario All Stars | SNES | - |
| Super Mario Kart | SNES | - |
| Young Merlin | SNES | - |
| Zombies Ate My Neighbors | SNES | - |
127 games in category all


You can still track your journey, your steps will be saved. You could record your steps later once you are online again.


Welcome to partial-apply’s documentation!¶
Partial application of functions and method names, supporting placeholder values for positional arguments.
Unlike functools.partial()
, placeholder values are supported so that
positional arguments for partial application do not need to be supplied solely
from left to right. Keyword arguments are handled equivalently to
functools.partial()
. It is also possible to “partially apply” a method
name, producing a function which looks up the method to call on the object
supplied as its first argument.
-
partial_apply.
Empty
= Empty¶ A placeholder for arguments which will be supplied later.
-
class
partial_apply.
PartialFn
(func, *args, **kwargs)[source]¶ A function partially applied to positional and keyword arguments.
Keyword arguments are handled equivalently to
functools.partial()
, but arbitrary sets of positional arguments can be partially applied.Examples: Skipping partial application of positional arguments using the
Empty
placeholder:Create a partially applied function from
fn
where the third argument is'thing'
.>>> def fn(*args): >>> return args
>>> p = PartialFn(fn, Empty, Empty, 'thing') >>> p PartialFn(<function fn at 0x11b29a598>, Empty, Empty, 'thing')
With two placeholders, you must call
p
with at least two positional arguments. They fill in the placeholders from left to right.>>> p(1, 2) (1, 2, 'thing')
Subsequent positional arguments to
p
are applied after the third parameter.>>> p(1, 2, 3) (1, 2, 'thing', 3)
Variables: - func (callable) – The wrapped function.
- args (tuple) – Positional arguments for the wrapped function.
- kwargs (dict[str, any]) – Keyword arguments for the wrapped function.
-
__init__
(func, *args, **kwargs)[source]¶ Creates a new partially applied function.
Parameters: - func (callable) – The function to wrap.
- args – Positional arguments for the wrapped function.
- kwargs – Keyword arguments for the wrapped function.
Raises: TypeError – If the first argument is not callable.
-
__call__
(*args, **kwargs)[source]¶ Calls the partially applied function.
Parameters: - args – Additional positional arguments for the wrapped function.
- kwargs – Additional keyword arguments for the wrapped function.
Returns: The return value of the wrapped function.
Return type: any
Raises: TypeError – If less positional arguments are supplied than placeholders.
-
class
partial_apply.
PartialMethod
(name, *args, **kwargs)[source]¶ A method name partially applied to positional and keyword arguments.
Keyword arguments are handled equivalently to
functools.partial()
, but arbitrary sets of positional arguments can be partially applied (seePartialFn
for an example). When an instance ofPartialMethod
is called, the object to look up the method on is supplied as the first argument.Examples: Setting up some example classes.
>>> class SomeClass: >>> def method(self, *args): >>> return args
>>> some_instance = SomeClass()
>>> class OtherClass: >>> def method(self, *args): >>> return sum(args)
>>> other_instance = OtherClass()
Create a partially applied function where the method name is
method
and the second positional argument is 1.>>> p = PartialMethod('method', Empty, 1) >>> p PartialMethod('method', Empty, 1)
The partially applied function takes the object to look up the method on as the first argument. Subsequent positional arguments are handled as in
PartialFn
. Apply the function to different objects of different types (they must all have a method namedmethod
).>>> p(some_instance, 2, 3) (2, 1, 3)
>>> p(other_instance, 2, 3) 6
Variables: - name (str) – The method name.
- args (tuple) – Positional arguments for the method.
- kwargs (dict[str, any]) – Keyword arguments for the method.
-
__init__
(name, *args, **kwargs)[source]¶ Creates a new partially applied method name.
Parameters: - name (str) – The method name.
- args – Positional arguments for the method.
- kwargs – Keyword arguments for the method.
Raises: TypeError – If the first argument is not a string.
-
__call__
(obj, *args, **kwargs)[source]¶ Looks up and calls the method.
Parameters: - obj (any) – The object to look up the method on.
- args – Additional positional arguments for the method.
- kwargs – Additional keyword arguments for the method.
Returns: The return value of the method.
Return type: any
Raises: TypeError – If less positional arguments are supplied than placeholders.


I'm an experienced Frontend Developer with a demonstrated history of working well in advertising industry. Skilled in JavaScript, jQuery, UX, CSS3, Angular 1.6 and Sitecore HTML5 Banner ads.
I've been in the development industry for 3+ years now, beginning as an intern with absolutely 0 knowledge of Frontend/Development or anything behind the web page was an incredible challenge for me when I decided to move from the sales to advertising as a developer. Working with fantastic , intelligent people who've mentored me in becoming a person who can work exceptionally well in a team of people to get the job done right, learn while doing so and to have fun as well. I believe a positive work environment is about working with people you get on with, and get things done with.


Codebase is a SASS, CoffeeScript, and Pug website component library.
Two ways of using Codebase:
The styling has been created first as indented syntax SASS mixins and then these are included in classes – all following BEM naming convention. You can include and extend the mixins in your design theme.
The Styling is organised into Basics and Components (analogous to Atomic Design's "Atoms" and "Molecules"). For many of these, codebase-pug/ partials have been created for use in rapid prototyping (their usage is demonstrated in the docs Pug files). You can combine these into your own partial templates ("Organisms"), etc.
Layout is organized selarately from basics and components. Layout consists of four 12-column grid systems. Flexbox classes and mixins (default). Float classes and mixins (deprecated but still if you switch them on). A full range of visibility mixins/classes have also been included.
Minimal decorative styling used throughout the basics and components, based on a common set of decoration variables, which can be either modified or switched off altogether (becoming "style unoppinionated").
Simple decoration classes – similar in principle to BASCSS and Tachyons. These use the same decoration variables as Codebase Basics and Components, so they play well together, and modifying the decoration variables affects the basics, components and decoration.
All margins, paddings, font sizes and line heights are built on an 8px element grid.
Default and enlarged typography. Two sizes, three ways.
All Codebase variables are set as defaults, so that they can be easily overridden.
Extensive documentation, and a few examples.
<a class="btn btn--success" href="getting-started.html">
Get started
</a>


Harold's Photo Album
All
Mom
Dad
Family
Friends
Sleeping
Eating
Smiling
Playing
Birthday
Milestone
Harold Francis Goetz newborn and toddler photos


Created by Adam Robertson, Juan Pablo Trujillo, Ethan Gordon, and Grant Johnson
Definition: A quadratic function is a function that can be described by an equation of the form fx = ax2 + bx + c, where a ≠ 0. Quadratic equations, when drawn on a grid, take the shape of a parabola (arc)


runsweep Initiates acquistion of a single trace. It is the same as pressing the
Run Sweep button.
avg8 Initiates averaging of eight trace sweeps. It is the same as pressing the
Avg 8 button.
readvoltages Initiates a DC read of the collector voltage and current. It is the same as pressing the
Read Voltages button.
filter 0 Un-Checks the
Filter On check box.
filter 1 Checks the
Filter On check box.
live 0 Un-Checks the
Live check box.
live 1 Checks the
Live check box.
clear Clears all stored trace data.
runbasei+ n Performs a
Run
Sweep then adds the signed integer
n, that follows the command (positive or
negative), to the Base current value. A
Set Base I is then executed.
runbasev+ n Performs a
Run
Sweep then adds the signed integer
n, that follows the command (positive or
negative), to the Base voltage value. A
Set Base V is then
executed.
Script Item:
Main:


Tools for working with bounding boxes.
local Area = require('__stdlib__/stdlib/area/area')
| construct([x1=0][, y1=0][, x2=0][, y2=0]) | Creates an area from number parameters. |
| from_key(area_string) | Converts a string key area to an area. |
| from_string(area_string) | Converts an area string to an area. |
| new(area) | Converts an area in either array or table format to an area with a metatable. |
| set(area) | Loads the metatable into the passed Area without creating a new one. |
| adjust(area, amount) | Adjust an area by shrinking or expanding. |
| ceil(area) | Ceils an area by increasing the size of the area outwards |
| center_points(area) | Gets the center positions of the tiles where the given area’s two positions reside. |
| corners(area) | add left_bottom and right_top to the area |
| expand(area, amount) | Expands the area outwards by the given amount. |
| flip(area) | Flip an area such that its value of the width becomes the height, and its value of the height becomes the width. |
| floor(area) | Floors an area by decreasing the size of the area inwards. |
| from_pixels(area) | Convert area from pixels. |
| non_zero(area, amount) | Return a non zero sized area by expanding if needed |
| normalize(area) | Normalizes the given area. |
| offset(area, pos) | Offsets the area by the {x, y} values. |
| recall(area) | Recalls the stored area. |
| round(area) | Rounds an areas points to its closest integer. |
| shrink(area, amount) | Shrinks the area inwards by the given amount. |
| shrink_to_surface_size(area, surface) | Shrinks an area to the size of the surface if it is bigger |
| store(area) | Stores the area for recall later, not deterministic. |
| to_diameter(area, diameter) | Returns the area to the diameter from top_left |
| to_pixels(area) | Convert area to pixels. |
| to_surface_size(area, surface) | Set an area to the whole size of the surface. |
| translate(area, direction, distance) | Translates an area in the given direction. |
| center(area) | Calculates the center of the area and returns the position. |
| collides(area1, area2) | Does either area overlap/collide with the other area. |
| collides_areas(area, areas) | Do all passed areas collide with an area. |
| contains_areas(area, areas) | Are all passed areas completly inside an area. |
| contains_positions(area, positions) | Are the passed positions all located in an area. |
| equals(area1, area2) | Returns true if two areas are the same. |
| is_set(area) | Does the area have the class attached |
| is_zero(area) | Is this a non zero sized area |
| less_than(area1, area2) | Is area1 smaller in size than area2 |
| normalized(area) | Is the area normalized. |
| pack(area) | Pack an area into an array. |
| pack_positions(area) | Pack an area into a simple bounding box array |
| size(area) | Gets the properties of the given area. |
| to_key(area) | Return a suitable string for using as a table key |
| to_string(area) | Converts an area to a string. |
| unpack(area) | Unpack an area into a tuple. |
| unpack_positions(area) | Unpack an area into a tuple of position tables. |
| valid(area) | Is the area non-zero and normalized. |
| Metamethods | Area tables are returned with these Metamethods attached. |
| iterate(area) | Iterates an area. |
| spiral_iterate(area) | Iterates the given area in a spiral as depicted below, from innermost to the outermost location. |
Creates an area from number parameters.
Parameters:
Converts a string key area to an area.
Parameters:
Converts an area string to an area.
Parameters:
Converts an area in either array or table format to an area with a metatable.
Returns itself if it already has a metatable
Parameters:Loads the metatable into the passed Area without creating a new one.
Parameters:
Adjust an area by shrinking or expanding.
Imagine pinching & holding with fingers the top-left & bottom-right corners of a 2D box and pulling outwards to expand and pushing inwards to shrink the box.
Parameters:local area = Area.adjust({{-2, -2}, {2, 2}}, {4, -1})
-- returns {left_top = {x = -6, y = -1}, right_bottom = {x = 6, y = 1}}
Ceils an area by increasing the size of the area outwards
Parameters:
Gets the center positions of the tiles where the given area’s two positions reside.
Parameters:
add left_bottom and right_top to the area
Parameters:
Expands the area outwards by the given amount.
Parameters:
Flip an area such that its value of the width becomes the height, and its value of the height becomes the width.
Parameters:
Floors an area by decreasing the size of the area inwards.
Parameters:
Convert area from pixels.
Parameters:
Return a non zero sized area by expanding if needed
Parameters:
Normalizes the given area.
right_bottom.x
& left_top.x
IF right_bottom.x
< left_top.x
right_bottom.y
& left_top.y
IF right_bottom.y
< left_top.y
Offsets the area by the {x, y}
values.
Parameters:
Recalls the stored area.
Parameters:
Rounds an areas points to its closest integer.
Parameters:
Shrinks the area inwards by the given amount.
The area shrinks inwards from top-left towards the bottom-right, and from bottom-right towards the top-left.
Parameters:Shrinks an area to the size of the surface if it is bigger
Parameters:
Stores the area for recall later, not deterministic.
Only the last area stored is saved.
Parameters:Returns the area to the diameter from top_left
Parameters:
Convert area to pixels.
Parameters:
Set an area to the whole size of the surface.
Parameters:
Translates an area in the given direction.
Parameters:
Calculates the center of the area and returns the position.
Parameters:
Does either area overlap/collide with the other area.
Parameters:
Do all passed areas collide with an area.
Parameters:
Are all passed areas completly inside an area.
Parameters:
Are the passed positions all located in an area.
Parameters:
Returns true if two areas are the same.
Parameters:
Does the area have the class attached
Parameters:
Is this a non zero sized area
Parameters:
Is area1 smaller in size than area2
Parameters:
Is the area normalized.
Parameters:
Pack an area into an array.
Parameters:
Pack an area into a simple bounding box array
Parameters:
Gets the properties of the given area.
This function returns a total of four values that represent the properties of the given area.
Parameters:Return a suitable string for using as a table key
Parameters:
Converts an area to a string.
Parameters:
Unpack an area into a tuple.
Parameters:
Unpack an area into a tuple of position tables.
Parameters:
Is the area non-zero and normalized.
Parameters:
Area tables are returned with these Metamethods attached.
Fields:
Iterates an area.
Parameters:
for x,y in Area.iterate({{0, -5}, {3, -3}}) do
...
end
Iterates the given area in a spiral as depicted below, from innermost to the outermost location.
Parameters:
for x, y in Area.spiral_iterate({{-2, -1}, {2, 1}}) do
print('(' .. x .. ', ' .. y .. ')')
end
prints: (0, 0) (1, 0) (1, 1) (0, 1) (-1, 1) (-1, 0) (-1, -1) (0, -1) (1, -1) (2, -1) (2, 0) (2, 1) (-2, 1) (-2, 0) (-2, -1)


divers - veille techno outils
twitter.com
veille en push sur les projets
sibbel.com
(projets GitHub)
Se base sur les stars et les watchs du compte GitHub associé.
Peut rater des updates si les maintainers utilisent le système de release puis l’abandonnent.
libraries.io
(packages registries)
Surveille les registry pour check les packages déposés.
liens outils online
www.thoughtworks.com/radar : site proposant un radar des technos pour la veille techno (maj annuelle)
Software advice from Dr. Gleb Bahmutov PhD
The Clean Code Blog by Robert C. Martin (Uncle Bob)
See what the GitHub community is most excited about today.
JavaScript
grab data from GitHub repos
bestof.js.org weekly newsletter
Get the latest JS rankings in your inbox every week
JavaScript scene on medium.com
online books
skills and technos lists
Front-end-Developer-Interview-Questions
a-roadmap-to-becoming-a-web-developer-in-2017
articles
How I stay up-to-date as a Developer : hackernoon.com
How to become a better hacker : glebbahmutov.com : 20160127
Frontend Development
- the “App” model is on the decline
- technology and ecosystem is there now for ambitious SPA frontends
- 3 major frameworks (Vue.js, React and Angular)
- frontend can then compile it into native mobile apps
Backend Development
- scale up and down on demand (swarm)
- serverless, or Function-as-a-Service (FaaS)
Language Choices
- JavaScript nowadays is not merely a language, but the web application platform
- plenty of languages to choose from, all of them transpiling to JavaScript at the end of the day
- NoSQL document db are rising because they are just json-storage in the eyes of backend dev and it is a lot easier to manage then LAMP stacks
The Future
- a single team of node.js backend developers can satisfy all your backend needs
- still can’t fully believe it by myself (used to hate JavaScript, loving Elixir and Rust), but I must reiterate it again: JS has won
forums
Stackoverflow hottest questions
devops
Accelerate - Nicole Forsgren, Jez Humble and Gene Kim - 20180327
Scientific study giving results and methodology about the puppet.com states of Devops from 2014 to 2017 (the books authors contributed to theses studies)
Martin Fowler preface


Welcome to Party Pizza Calculator
Start
Number of Pizzas:
Pizza size:
Toppings:
Calculate Pizza Party
Your pizza party will cost:
$


@(title: String = "Welcome!")
@main(title, nav = "home") {
Welcome to Ruber
@if(session.get("username")) {
Good to see you again @{session.get("displayName")}!
} else {
Looks like you're new here!
Please login with arni11 and 123456 to see history
Sign up
Login
}
}


---
layout: archive
title: "Media / Videos"
permalink: /media/
author_profile: true
---
{% if author.googlescholar %}
You can also find my articles on my Google Scholar profile.
{% endif %}
{% include base_path %}
{% for post in site.media reversed %}
{% include archive-single.html %}
{% endfor %}
Building a Better Face Detector Without Detecting Faces
Invited speaker at the VinAI, AI day, 2021, Aug. 26th, 2021, Vietnam (virtual).
A demo of an early (partial) version of our online system, for 3D viewing of faces
This demo was presented before Nobel laureate and Israeli President, the late Mr. Shimon Peres and featured on Channel 10, Israeli TV, November 14th, 2012 (in Hebrew).


Notr
Why Am I Responsible for This?
Sample note.txt
{{errorWarning}}
Draw
Play
Export
{{link.text}}
{{node.text}}
{{node.text}}
{{node.txt1}}
{{node.txt2}}
{{node.txt3}}
{{node.txt4}}
Notr - Developed at HackMIT 2015
Copyright © 2015 J. Lin, J. Huang, H. Do, & S. Song


Create an Intuit account
One account for everything Intuit, including Mint.
Learn moreBy clicking Create account, you agree to our terms and have read and acknowledge our Privacy Statement
Invisible reCAPTCHA by Google Privacy Policy and Terms of Use.


Interests: Open Technology - Travel - Web
Is it selling products?
Is it to help the visitor to find the right product?
As the Drupal community, we need to stop thinking of Drupal as a "content management platform" and start looking at it as a "digital experience platform" used to create ideal visitor experiences.
Not just a bucket of products
Not just a website or an app
Not a tool
Not a one-way communication vehicle
Not standalone
Not IT nor Marketing system
Not a monolithic system
Let's take that apart in what that means in the Drupal Ecosystem to build such a DXP for a customer.
Custom Profiles, registration, login & password management.
Create groups/communities to exchange information.
Structured data, accessibility of rich information. Controlling content consumed over multiple channels.
Roles & Permissions.
Keep a customer profile.
Voice, immersive elements, ...
SSO/Auth2, 2FA, etc..
Team sites, forums, chat, B2B partner sites, ...
Make custom development easy
Deploy in public or private clouds quickly
Allow integrations to be created to expose and interact with data
Multi-channel. Headless/Decoupled/Hybrid.
Easy of use for site visitors, content editors, developers, analysts, ...
Natural language generation, image detection, digital assistants, neural networks in function of assisted decision making.
Development Community.
Prepackaged components for CRM, ERP, HR,...
Creating alternate UI's to/for those channels that cater to people on the move.
Empower users to make the "right" decisions in an intuitive and attractive interfaces.
Make measuring and adjusting effortless for the marketeer.
Capture anonymous & authenticated traffic. Create rules to detect intents.
Change the site according to the intent.
Query the site, find your stuff. Filter using taxonomies (facets)
Introduce personalisation + A/B testing
Add AI to detect patterns in order to help the Marketeer define the segments.
Coupling with marketing automation tools to deliver more targeted content in a 1:1 interaction.
Recommended content or connected content. Federated Search.
Personalise search and/or boost results with AI.
Drupal + Massive ecosystem of functionalities + a vibrant community on drupal.org
Intensive integration with Apache Solr/Elasticsearch using Search API
Many vendors for hosting your Drupal site on steroids
Marketing Automation
Customer Data Platform
Personalisation
Consent management
Make measuring and adjusting effortless for the marketeer.
Capture anonymous & authenticated traffic. Create rules to detect intents.
Change the site according to the intent.
Query the site, find your stuff. Filter using taxonomies (facets)
Introduce personalisation + A/B testing
Add AI to detect patterns in order to help the Marketeer define the segments.
Coupling with marketing automation tools to deliver more targeted content in a 1:1 interaction.
Recommended content or connected content. Federated Search.
Personalise search and/or boost results with AI.
Apache Unomi™: The Open Source Customer Data Platform Apache Unomi™ (pronounced "You know me") is a Java Open Source customer data platform, a Java server designed to manage customers, leads and visitors data and help personalize customers experiences while also offering features to respect visitor privacy rules (such as GDPR)
source: https://support.dropsolid.com/hc/en-us/articles/360016680579-Interacting-with-data-captures
Be on the lookout for lock-in. Many of the vendors out there have great Saas, but who owns your data and where it is stored?
Follow the Open Core principle as much as you can. Pay for support, maintenance but not for licenses. It's what you believe in with Drupal, Apache Solr, Mautic, Nginx, etc... Why settle for less when it comes to data?
https://nickveenhof.github.io/moving-beyond-cms-enter-dxp/
@nick_vh
- CTO


Static IP Configuration IP Address Invalid IP Address Subnet Mask Invalid Subnet Mask Default Gateway Invalid Gateway Address DNS Server 1 Invalid DNS Server address DNS Server 2 Invalid DNS Server Address


Hi, thanks for visiting my page. My name is Salman. I'm a self taught software engineer and data scientist with a primary focus on computer vision problems.
Currently, I'm working at Stainless AI where we're pushing the limits of computer vision in Sports. My role varies from building neural networks for tasks such as image classification, object detection, semantic segmentation etc. to designing and developing deep learning software for both cloud and embedded systems. Most of my work here is generally based off of (but no limited to) TensorFlow and OpenCV and are written in C++ and Python.
In the past, I've worked at a financial company where I bootstrapped a data science department from scratch and developed a machine learning product that increased underwriting efficiency by 25%. The product used NLP techniques to automate a tedious, time consuming data collection process from customers' bank accounts and summarized relevant details in a manner that makes it easy to underwrite. The tech stack used was Python (Flask framework, scikit-learn for ML), Windows Server, and IIS.
Further, I've volunteered at XSCAPE Games—a video game startup that is working to build a real life mario cart game. At XSCAPE, I designed a controller system and a motion control system that allowed players to drive an RC using a simulator and finalized their prototype. I also served as an advisor for other developers.
In terms of education, I have a Bachelor's in Mathematics and machine learning certificate from Springboard bootcamp. For my capstone project, I've designed and image super resolution model and deployed it as a free public service.
If you're looking for a smart, talented, hard-working engineer to join your team and assist you in your projects, shoot me a message on LinkedIn or email. I'd be happy to see how I can help.
My capstone project for Springboard. For this project, I worked 1-on-1 with a mentor to build a model that increases the resolution of an image 2x using a residual neural network. The model implemenation is in tensorflow/keras. The deployment uses Flask as the web framework and a free Linux server from pythonanywhere.com
A startup project that I volunteered for. I designed the controller and motion control backend for the CXC simulator. The incoming telemetry data was trasmitted over UDP using a Pixracer mounted on the RC car. The prototype was designed using Python (primarily Pygame and pymavlink)
A project designed to demonstrate the applicability of machine learning tools to automate underwriting procedures. Experience from this project had helped tremendously in delivering my ML product at Wide Merchant Group
View ProjectA group project during my final quarter at UCLA. In this project, we taught an AI to produce handwritten numbers. The model implemenation was in Keras. We used gaussian mixture sampling to sample from the encoded vector space
View Project | View Paper