source file: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/botocore/model.py
file stats: 326 lines, 214 executed: 65.6% covered
1. # Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. 2. # 3. # Licensed under the Apache License, Version 2.0 (the "License"). You 4. # may not use this file except in compliance with the License. A copy of 5. # the License is located at 6. # 7. # http://aws.amazon.com/apache2.0/ 8. # 9. # or in the "license" file accompanying this file. This file is 10. # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 11. # ANY KIND, either express or implied. See the License for the specific 12. # language governing permissions and limitations under the License. 13. """Abstractions to interact with service models.""" 14. from collections import defaultdict 15. 16. from botocore.utils import CachedProperty, instance_cache 17. from botocore.compat import OrderedDict 18. 19. 20. NOT_SET = object() 21. 22. 23. class NoShapeFoundError(Exception): 24. pass 25. 26. 27. class InvalidShapeError(Exception): 28. pass 29. 30. 31. class OperationNotFoundError(Exception): 32. pass 33. 34. 35. class InvalidShapeReferenceError(Exception): 36. pass 37. 38. 39. class UndefinedModelAttributeError(Exception): 40. pass 41. 42. 43. class Shape(object): 44. """Object representing a shape from the service model.""" 45. # To simplify serialization logic, all shape params that are 46. # related to serialization are moved from the top level hash into 47. # a 'serialization' hash. This list below contains the names of all 48. # the attributes that should be moved. 49. SERIALIZED_ATTRS = ['locationName', 'queryName', 'flattened', 'location', 50. 'payload', 'streaming', 'timestampFormat', 51. 'xmlNamespace', 'resultWrapper', 'xmlAttribute', 52. 'eventstream', 'event', 'eventheader', 'eventpayload', 53. 'jsonvalue'] 54. METADATA_ATTRS = ['required', 'min', 'max', 'sensitive', 'enum', 55. 'idempotencyToken', 'error', 'exception'] 56. MAP_TYPE = OrderedDict 57. 58. def __init__(self, shape_name, shape_model, shape_resolver=None): 59. """ 60. 61. :type shape_name: string 62. :param shape_name: The name of the shape. 63. 64. :type shape_model: dict 65. :param shape_model: The shape model. This would be the value 66. associated with the key in the "shapes" dict of the 67. service model (i.e ``model['shapes'][shape_name]``) 68. 69. :type shape_resolver: botocore.model.ShapeResolver 70. :param shape_resolver: A shape resolver object. This is used to 71. resolve references to other shapes. For scalar shape types 72. (string, integer, boolean, etc.), this argument is not 73. required. If a shape_resolver is not provided for a complex 74. type, then a ``ValueError`` will be raised when an attempt 75. to resolve a shape is made. 76. 77. """ 78. self.name = shape_name 79. self.type_name = shape_model['type'] 80. self.documentation = shape_model.get('documentation', '') 81. self._shape_model = shape_model 82. if shape_resolver is None: 83. # If a shape_resolver is not provided, we create an object 84. # that will throw errors if you attempt to resolve 85. # a shape. This is actually ok for scalar shapes 86. # because they don't need to resolve shapes and shouldn't 87. # be required to provide an object they won't use. 88. shape_resolver = UnresolvableShapeMap() 89. self._shape_resolver = shape_resolver 90. self._cache = {} 91. 92. @CachedProperty 93. def serialization(self): 94. """Serialization information about the shape. 95. 96. This contains information that may be needed for input serialization 97. or response parsing. This can include: 98. 99. * name 100. * queryName 101. * flattened 102. * location 103. * payload 104. * streaming 105. * xmlNamespace 106. * resultWrapper 107. * xmlAttribute 108. * jsonvalue 109. 110. :rtype: dict 111. :return: Serialization information about the shape. 112. 113. """ 114. model = self._shape_model 115. serialization = {} 116. for attr in self.SERIALIZED_ATTRS: 117. if attr in self._shape_model: 118. serialization[attr] = model[attr] 119. # For consistency, locationName is renamed to just 'name'. 120. if 'locationName' in serialization: 121. serialization['name'] = serialization.pop('locationName') 122. return serialization 123. 124. @CachedProperty 125. def metadata(self): 126. """Metadata about the shape. 127. 128. This requires optional information about the shape, including: 129. 130. * min 131. * max 132. * enum 133. * sensitive 134. * required 135. * idempotencyToken 136. 137. :rtype: dict 138. :return: Metadata about the shape. 139. 140. """ 141. model = self._shape_model 142. metadata = {} 143. for attr in self.METADATA_ATTRS: 144. if attr in self._shape_model: 145. metadata[attr] = model[attr] 146. return metadata 147. 148. @CachedProperty 149. def required_members(self): 150. """A list of members that are required. 151. 152. A structure shape can define members that are required. 153. This value will return a list of required members. If there 154. are no required members an empty list is returned. 155. 156. """ 157. return self.metadata.get('required', []) 158. 159. def _resolve_shape_ref(self, shape_ref): 160. return self._shape_resolver.resolve_shape_ref(shape_ref) 161. 162. def __repr__(self): 163. return "<%s(%s)>" % (self.__class__.__name__, 164. self.name) 165. 166. 167. class StructureShape(Shape): 168. @CachedProperty 169. def members(self): 170. members = self._shape_model['members'] 171. # The members dict looks like: 172. # 'members': { 173. # 'MemberName': {'shape': 'shapeName'}, 174. # 'MemberName2': {'shape': 'shapeName'}, 175. # } 176. # We return a dict of member name to Shape object. 177. shape_members = self.MAP_TYPE() 178. for name, shape_ref in members.items(): 179. shape_members[name] = self._resolve_shape_ref(shape_ref) 180. return shape_members 181. 182. 183. class ListShape(Shape): 184. @CachedProperty 185. def member(self): 186. return self._resolve_shape_ref(self._shape_model['member']) 187. 188. 189. class MapShape(Shape): 190. @CachedProperty 191. def key(self): 192. return self._resolve_shape_ref(self._shape_model['key']) 193. 194. @CachedProperty 195. def value(self): 196. return self._resolve_shape_ref(self._shape_model['value']) 197. 198. 199. class StringShape(Shape): 200. @CachedProperty 201. def enum(self): 202. return self.metadata.get('enum', []) 203. 204. 205. class ServiceModel(object): 206. """ 207. 208. :ivar service_description: The parsed service description dictionary. 209. 210. """ 211. 212. def __init__(self, service_description, service_name=None): 213. """ 214. 215. :type service_description: dict 216. :param service_description: The service description model. This value 217. is obtained from a botocore.loader.Loader, or from directly loading 218. the file yourself:: 219. 220. service_description = json.load( 221. open('/path/to/service-description-model.json')) 222. model = ServiceModel(service_description) 223. 224. :type service_name: str 225. :param service_name: The name of the service. Normally this is 226. the endpoint prefix defined in the service_description. However, 227. you can override this value to provide a more convenient name. 228. This is done in a few places in botocore (ses instead of email, 229. emr instead of elasticmapreduce). If this value is not provided, 230. it will default to the endpointPrefix defined in the model. 231. 232. """ 233. self._service_description = service_description 234. # We want clients to be able to access metadata directly. 235. self.metadata = service_description.get('metadata', {}) 236. self._shape_resolver = ShapeResolver( 237. service_description.get('shapes', {})) 238. self._signature_version = NOT_SET 239. self._service_name = service_name 240. self._instance_cache = {} 241. 242. def shape_for(self, shape_name, member_traits=None): 243. return self._shape_resolver.get_shape_by_name( 244. shape_name, member_traits) 245. 246. def resolve_shape_ref(self, shape_ref): 247. return self._shape_resolver.resolve_shape_ref(shape_ref) 248. 249. @CachedProperty 250. def shape_names(self): 251. return list(self._service_description.get('shapes', {})) 252. 253. @instance_cache 254. def operation_model(self, operation_name): 255. try: 256. model = self._service_description['operations'][operation_name] 257. except KeyError: 258. raise OperationNotFoundError(operation_name) 259. return OperationModel(model, self, operation_name) 260. 261. @CachedProperty 262. def documentation(self): 263. return self._service_description.get('documentation', '') 264. 265. @CachedProperty 266. def operation_names(self): 267. return list(self._service_description.get('operations', [])) 268. 269. @CachedProperty 270. def service_name(self): 271. """The name of the service. 272. 273. This defaults to the endpointPrefix defined in the service model. 274. However, this value can be overriden when a ``ServiceModel`` is 275. created. If a service_name was not provided when the ``ServiceModel`` 276. was created and if there is no endpointPrefix defined in the 277. service model, then an ``UndefinedModelAttributeError`` exception 278. will be raised. 279. 280. """ 281. if self._service_name is not None: 282. return self._service_name 283. else: 284. return self.endpoint_prefix 285. 286. @CachedProperty 287. def signing_name(self): 288. """The name to use when computing signatures. 289. 290. If the model does not define a signing name, this 291. value will be the endpoint prefix defined in the model. 292. """ 293. signing_name = self.metadata.get('signingName') 294. if signing_name is None: 295. signing_name = self.endpoint_prefix 296. return signing_name 297. 298. @CachedProperty 299. def api_version(self): 300. return self._get_metadata_property('apiVersion') 301. 302. @CachedProperty 303. def protocol(self): 304. return self._get_metadata_property('protocol') 305. 306. @CachedProperty 307. def endpoint_prefix(self): 308. return self._get_metadata_property('endpointPrefix') 309. 310. def _get_metadata_property(self, name): 311. try: 312. return self.metadata[name] 313. except KeyError: 314. raise UndefinedModelAttributeError( 315. '"%s" not defined in the metadata of the the model: %s' % 316. (name, self)) 317. 318. # Signature version is one of the rare properties 319. # than can be modified so a CachedProperty is not used here. 320. 321. @property 322. def signature_version(self): 323. if self._signature_version is NOT_SET: 324. signature_version = self.metadata.get('signatureVersion') 325. self._signature_version = signature_version 326. return self._signature_version 327. 328. @signature_version.setter 329. def signature_version(self, value): 330. self._signature_version = value 331. 332. 333. class OperationModel(object): 334. def __init__(self, operation_model, service_model, name=None): 335. """ 336. 337. :type operation_model: dict 338. :param operation_model: The operation model. This comes from the 339. service model, and is the value associated with the operation 340. name in the service model (i.e ``model['operations'][op_name]``). 341. 342. :type service_model: botocore.model.ServiceModel 343. :param service_model: The service model associated with the operation. 344. 345. :type name: string 346. :param name: The operation name. This is the operation name exposed to 347. the users of this model. This can potentially be different from 348. the "wire_name", which is the operation name that *must* by 349. provided over the wire. For example, given:: 350. 351. "CreateCloudFrontOriginAccessIdentity":{ 352. "name":"CreateCloudFrontOriginAccessIdentity2014_11_06", 353. ... 354. } 355. 356. The ``name`` would be ``CreateCloudFrontOriginAccessIdentity``, 357. but the ``self.wire_name`` would be 358. ``CreateCloudFrontOriginAccessIdentity2014_11_06``, which is the 359. value we must send in the corresponding HTTP request. 360. 361. """ 362. self._operation_model = operation_model 363. self._service_model = service_model 364. self._api_name = name 365. # Clients can access '.name' to get the operation name 366. # and '.metadata' to get the top level metdata of the service. 367. self._wire_name = operation_model.get('name') 368. self.metadata = service_model.metadata 369. self.http = operation_model.get('http', {}) 370. 371. @CachedProperty 372. def name(self): 373. if self._api_name is not None: 374. return self._api_name 375. else: 376. return self.wire_name 377. 378. @property 379. def wire_name(self): 380. """The wire name of the operation. 381. 382. In many situations this is the same value as the 383. ``name``, value, but in some services, the operation name 384. exposed to the user is different from the operaiton name 385. we send across the wire (e.g cloudfront). 386. 387. Any serialization code should use ``wire_name``. 388. 389. """ 390. return self._operation_model.get('name') 391. 392. @property 393. def service_model(self): 394. return self._service_model 395. 396. @CachedProperty 397. def documentation(self): 398. return self._operation_model.get('documentation', '') 399. 400. @CachedProperty 401. def deprecated(self): 402. return self._operation_model.get('deprecated', False) 403. 404. @CachedProperty 405. def input_shape(self): 406. if 'input' not in self._operation_model: 407. # Some operations do not accept any input and do not define an 408. # input shape. 409. return None 410. return self._service_model.resolve_shape_ref( 411. self._operation_model['input']) 412. 413. @CachedProperty 414. def output_shape(self): 415. if 'output' not in self._operation_model: 416. # Some operations do not define an output shape, 417. # in which case we return None to indicate the 418. # operation has no expected output. 419. return None 420. return self._service_model.resolve_shape_ref( 421. self._operation_model['output']) 422. 423. @CachedProperty 424. def idempotent_members(self): 425. input_shape = self.input_shape 426. if not input_shape: 427. return [] 428. 429. return [name for (name, shape) in input_shape.members.items() 430. if 'idempotencyToken' in shape.metadata and 431. shape.metadata['idempotencyToken']] 432. 433. @CachedProperty 434. def auth_type(self): 435. return self._operation_model.get('authtype') 436. 437. @CachedProperty 438. def error_shapes(self): 439. shapes = self._operation_model.get("errors", []) 440. return list(self._service_model.resolve_shape_ref(s) for s in shapes) 441. 442. @CachedProperty 443. def has_event_stream_input(self): 444. return self.get_event_stream_input() is not None 445. 446. @CachedProperty 447. def has_event_stream_output(self): 448. return self.get_event_stream_output() is not None 449. 450. def get_event_stream_input(self): 451. return self._get_event_stream(self.input_shape) 452. 453. def get_event_stream_output(self): 454. return self._get_event_stream(self.output_shape) 455. 456. def _get_event_stream(self, shape): 457. """Returns the event stream member's shape if any or None otherwise.""" 458. if shape is None: 459. return None 460. for member in shape.members.values(): 461. if member.serialization.get('eventstream'): 462. return member 463. return None 464. 465. @CachedProperty 466. def has_streaming_input(self): 467. return self.get_streaming_input() is not None 468. 469. @CachedProperty 470. def has_streaming_output(self): 471. return self.get_streaming_output() is not None 472. 473. def get_streaming_input(self): 474. return self._get_streaming_body(self.input_shape) 475. 476. def get_streaming_output(self): 477. return self._get_streaming_body(self.output_shape) 478. 479. def _get_streaming_body(self, shape): 480. """Returns the streaming member's shape if any; or None otherwise.""" 481. if shape is None: 482. return None 483. payload = shape.serialization.get('payload') 484. if payload is not None: 485. payload_shape = shape.members[payload] 486. if payload_shape.type_name == 'blob': 487. return payload_shape 488. return None 489. 490. def __repr__(self): 491. return '%s(name=%s)' % (self.__class__.__name__, self.name) 492. 493. 494. class ShapeResolver(object): 495. """Resolves shape references.""" 496. 497. # Any type not in this mapping will default to the Shape class. 498. SHAPE_CLASSES = { 499. 'structure': StructureShape, 500. 'list': ListShape, 501. 'map': MapShape, 502. 'string': StringShape 503. } 504. 505. def __init__(self, shape_map): 506. self._shape_map = shape_map 507. self._shape_cache = {} 508. 509. def get_shape_by_name(self, shape_name, member_traits=None): 510. try: 511. shape_model = self._shape_map[shape_name] 512. except KeyError: 513. raise NoShapeFoundError(shape_name) 514. try: 515. shape_cls = self.SHAPE_CLASSES.get(shape_model['type'], Shape) 516. except KeyError: 517. raise InvalidShapeError("Shape is missing required key 'type': %s" 518. % shape_model) 519. if member_traits: 520. shape_model = shape_model.copy() 521. shape_model.update(member_traits) 522. result = shape_cls(shape_name, shape_model, self) 523. return result 524. 525. def resolve_shape_ref(self, shape_ref): 526. # A shape_ref is a dict that has a 'shape' key that 527. # refers to a shape name as well as any additional 528. # member traits that are then merged over the shape 529. # definition. For example: 530. # {"shape": "StringType", "locationName": "Foobar"} 531. if len(shape_ref) == 1 and 'shape' in shape_ref: 532. # It's just a shape ref with no member traits, we can avoid 533. # a .copy(). This is the common case so it's specifically 534. # called out here. 535. return self.get_shape_by_name(shape_ref['shape']) 536. else: 537. member_traits = shape_ref.copy() 538. try: 539. shape_name = member_traits.pop('shape') 540. except KeyError: 541. raise InvalidShapeReferenceError( 542. "Invalid model, missing shape reference: %s" % shape_ref) 543. return self.get_shape_by_name(shape_name, member_traits) 544. 545. 546. class UnresolvableShapeMap(object): 547. """A ShapeResolver that will throw ValueErrors when shapes are resolved. 548. """ 549. def get_shape_by_name(self, shape_name, member_traits=None): 550. raise ValueError("Attempted to lookup shape '%s', but no shape " 551. "map was provided.") 552. 553. def resolve_shape_ref(self, shape_ref): 554. raise ValueError("Attempted to resolve shape '%s', but no shape " 555. "map was provided.") 556. 557. 558. class DenormalizedStructureBuilder(object): 559. """Build a StructureShape from a denormalized model. 560. 561. This is a convenience builder class that makes it easy to construct 562. ``StructureShape``s based on a denormalized model. 563. 564. It will handle the details of creating unique shape names and creating 565. the appropriate shape map needed by the ``StructureShape`` class. 566. 567. Example usage:: 568. 569. builder = DenormalizedStructureBuilder() 570. shape = builder.with_members({ 571. 'A': { 572. 'type': 'structure', 573. 'members': { 574. 'B': { 575. 'type': 'structure', 576. 'members': { 577. 'C': { 578. 'type': 'string', 579. } 580. } 581. } 582. } 583. } 584. }).build_model() 585. # ``shape`` is now an instance of botocore.model.StructureShape 586. 587. :type dict_type: class 588. :param dict_type: The dictionary type to use, allowing you to opt-in 589. to using OrderedDict or another dict type. This can 590. be particularly useful for testing when order 591. matters, such as for documentation. 592. 593. """ 594. def __init__(self, name=None): 595. self.members = OrderedDict() 596. self._name_generator = ShapeNameGenerator() 597. if name is None: 598. self.name = self._name_generator.new_shape_name('structure') 599. 600. def with_members(self, members): 601. """ 602. 603. :type members: dict 604. :param members: The denormalized members. 605. 606. :return: self 607. 608. """ 609. self._members = members 610. return self 611. 612. def build_model(self): 613. """Build the model based on the provided members. 614. 615. :rtype: botocore.model.StructureShape 616. :return: The built StructureShape object. 617. 618. """ 619. shapes = OrderedDict() 620. denormalized = { 621. 'type': 'structure', 622. 'members': self._members, 623. } 624. self._build_model(denormalized, shapes, self.name) 625. resolver = ShapeResolver(shape_map=shapes) 626. return StructureShape(shape_name=self.name, 627. shape_model=shapes[self.name], 628. shape_resolver=resolver) 629. 630. def _build_model(self, model, shapes, shape_name): 631. if model['type'] == 'structure': 632. shapes[shape_name] = self._build_structure(model, shapes) 633. elif model['type'] == 'list': 634. shapes[shape_name] = self._build_list(model, shapes) 635. elif model['type'] == 'map': 636. shapes[shape_name] = self._build_map(model, shapes) 637. elif model['type'] in ['string', 'integer', 'boolean', 'blob', 'float', 638. 'timestamp', 'long', 'double', 'char']: 639. shapes[shape_name] = self._build_scalar(model) 640. else: 641. raise InvalidShapeError("Unknown shape type: %s" % model['type']) 642. 643. def _build_structure(self, model, shapes): 644. members = OrderedDict() 645. shape = self._build_initial_shape(model) 646. shape['members'] = members 647. 648. for name, member_model in model['members'].items(): 649. member_shape_name = self._get_shape_name(member_model) 650. members[name] = {'shape': member_shape_name} 651. self._build_model(member_model, shapes, member_shape_name) 652. return shape 653. 654. def _build_list(self, model, shapes): 655. member_shape_name = self._get_shape_name(model) 656. shape = self._build_initial_shape(model) 657. shape['member'] = {'shape': member_shape_name} 658. self._build_model(model['member'], shapes, member_shape_name) 659. return shape 660. 661. def _build_map(self, model, shapes): 662. key_shape_name = self._get_shape_name(model['key']) 663. value_shape_name = self._get_shape_name(model['value']) 664. shape = self._build_initial_shape(model) 665. shape['key'] = {'shape': key_shape_name} 666. shape['value'] = {'shape': value_shape_name} 667. self._build_model(model['key'], shapes, key_shape_name) 668. self._build_model(model['value'], shapes, value_shape_name) 669. return shape 670. 671. def _build_initial_shape(self, model): 672. shape = { 673. 'type': model['type'], 674. } 675. if 'documentation' in model: 676. shape['documentation'] = model['documentation'] 677. if 'enum' in model: 678. shape['enum'] = model['enum'] 679. return shape 680. 681. def _build_scalar(self, model): 682. return self._build_initial_shape(model) 683. 684. def _get_shape_name(self, model): 685. if 'shape_name' in model: 686. return model['shape_name'] 687. else: 688. return self._name_generator.new_shape_name(model['type']) 689. 690. 691. class ShapeNameGenerator(object): 692. """Generate unique shape names for a type. 693. 694. This class can be used in conjunction with the DenormalizedStructureBuilder 695. to generate unique shape names for a given type. 696. 697. """ 698. def __init__(self): 699. self._name_cache = defaultdict(int) 700. 701. def new_shape_name(self, type_name): 702. """Generate a unique shape name. 703. 704. This method will guarantee a unique shape name each time it is 705. called with the same type. 706. 707. :: 708. 709. >>> s = ShapeNameGenerator() 710. >>> s.new_shape_name('structure') 711. 'StructureType1' 712. >>> s.new_shape_name('structure') 713. 'StructureType2' 714. >>> s.new_shape_name('list') 715. 'ListType1' 716. >>> s.new_shape_name('list') 717. 'ListType2' 718. 719. 720. :type type_name: string 721. :param type_name: The type name (structure, list, map, string, etc.) 722. 723. :rtype: string 724. :return: A unique shape name for the given type 725. 726. """ 727. self._name_cache[type_name] += 1 728. current_index = self._name_cache[type_name] 729. return '%sType%s' % (type_name.capitalize(), 730. current_index)


The XML schema instance namespace defines xsi:type allowing elements be be explicitly annotated with type information. This can be used as an alternative mechanism to substitution groups, but also provides a way to jump back into a schema from within xs:any content. An example of this is shown below using an XML document that has no schema.
The document element 'myLink' is not defined in the schema, so is processed as if it were subject to xs:any and a default no-schema mapping is employed. This unidentified element is treated as unqualified and is defined in the default namespace set by the xmlns parameter.
The link schema doesn't define the 'myLink' element, but it does define the 'SimpleLink' content. The XML instance refers to this using an xsi:type attribute. The RDF mapping for this generates a corresponding rdf:type statement. The content of 'myLink' is then processed according to the content model of 'SimpleLink', so we have escaped from the xs:any no-schema mapping.
<?xml version="1.0" encoding="UTF-8"?> <myLink xmlns:eg="http://example.org/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="eg:SimpleLink" xlink:href="foo.xml" />
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.org/" xmlns:xlink="http://www.w3.org/1999/xlink"> <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd" /> <xs:complexType name="SimpleLink"> <xs:attributeGroup ref="xlink:simpleLink"/> </xs:complexType> </xs:schema>
The use of the 'SimpleLink' content model is evidenced by the correct datatyping of the xlink:href and the insertion of the xlink:type implied by the xlink attribute group.
@prefix ns2: <http://example.org/> . @prefix ns1: <http://example.org/def/> . @prefix eg: <http://example.org/> . @prefix xlink_: <http://www.w3.org/1999/xlink#> . @prefix xs_: <http://www.w3.org/2001/XMLSchema#> . @prefix xlink: <http://www.w3.org/1999/xlink> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix xs: <http://www.w3.org/2001/XMLSchema> . <http://example.org/linkType.xml> ns1:myLink [ a ns2:SimpleLink ; xlink_:href "http://example.org/foo.xml"^^xs_:anyURI ; xlink_:type "simple"^^xs_:string ] .


Created by OCHA's Centre for Humanitarian Data / @humdata
Press right on your keyboard or swipe left to navigate.
All data exercises start with a question. Questions drive our data collection, focus our analysis and shape our visual design choices. In this lesson, we will get back to basics in order to learn the art of good questions.
This session includes a series of slides to build your knowledge, a set of five xx videos to demonstrate xx and a short quiz to test your knowledge. The expected length of time to complete all segments is 25 minutes.
In this introductory session to formulating questions using examples from the COVID-19 pandemic, you will learn:
We formulate questions to frame our data exercises. These framing questions can be thought of as our research question. They help define the data we need and guides our entire process. Data-driven insight starts with good framing questions.
We also ask questions to gather data. These types of questions help us bring together the data we need to answer our framing question. How we ask these question shapes the answers we get and therefore the resulting data. High quality data start with good data collection questions.
When the data we need to answer our framing question does not exist, we may have to collect it ourselves.
In this section, we will focus on fine-tuning our data collection questions to ensure that we get the data we need.
“What are community perceptions about transmission of COVID-19?”. If we look at one dimension of community perceptions (preventative measures) and one indicator (handwashing frequency), one measure for answering this question is the number of times people wash their hands per day. We can collect this data by asking a similar question in a number of different ways. Each question will result in slight different data.
Different data collection questions yield different data. The wording, response options & prompt and question type all influence the data you produce. This has implications for the type of analysis you can do. with that data.
Data collection questions have three distinct components, all of which influence the data you will collect.
Broadly speaking, during a data collection exercise, there are two types of questions that you can: open-ended and closed-ended questions. By understanding the difference between the two, you can learn to ask better questions and get better, more actionable data. This is evidenced in the expample below.
Open-ended questions give your respondents the opportunity to answer in their own words, instead of limiting their response to a set of pre-determined answers. Examples include:
Note: It is often common to include an open-ended response option of “Other, Specify” in closed-ended questions.
Opened-ended questions result in unstructured data. This type of data can be rich with information impossible to gather through closed-ended questions. Open-ended questions help you learn about respondent needs you did not know existed and can help focus attention on topics you had not considered.
The drawbacks of opened-ended questions is that unstructured data often takes longer to analyse and has limitations in terms of the analytics that can be performed.
Close-ended questions produce structured data. This makes it easier to collect, clean and perform quantitative analysis. Below are a few types of closed-ended questions.
Close-ended questions have an expected pointed response. The data you get back (e.g. level of precision on answers, standardization, etc.) will depend on the response options available and permitted, and the prompts or guidance provided.
One of the differences between types of multiple choice questions is whether to let respondents choose multiple response options or just one.
Depending on how you ask a question, you will produce different types of data. We will explore two broad categories of data. Categorical data is qualitative and can either be nominal or ordinal. Numerical data is quantitative and can either be interval or ratio.
Categorical nominal data is data that has two or more categories that do not have an intrinsic or logical order. Countries, gender and humanitarian sectors are all examples of this type of data. Categorical nominal data questions present respondents with predefined response options that are non-numeric in nature.
With nominal data, we can calculate frequencies (how often each category occurs) and would use the mode as the measure of central tendency. The nominal data can be grouped together into categories, and for each category, the frequency or percentage can be calculated. The data can also be presented visually, such as by using a pie chart.
Ordinal data is categorical data in which the categories can be arranged in a meaningful order. To remember the difference, think ordered for ordinal and named for nominal. One important caveat is that on an ordinal scale, the order of response categories is significant but you cannot quantify the exact difference between each category.
If you have ordinal data you can calculate the frequencies and percentage for the different categories. For the measure of central tendency you can use both the mode and the median. Bar charts are great for visualising ordinal data.
ADD AN EXAMPLE
Numerical data can either use an interval or ratio scale.
Ratio data is what we commonly think of when we think about numerical data. The number of people in need, number of confirmed cases of COVID-19 and age are all examples of ratio data. In data collection forms, collecting clean ratio data means using data validation and prompts to gather a specific-response.
Statistically, this data is the most versatile.
In this section we will focus on how you can use simple features in Excel to add data validation, prompts and error messages in spreadsheet data collection forms. Taking these simple steps will improve your forms and ensure that your data questions result in high-quality data.


How to play: In this game you should get close to 21 if you are 22 or more you lose The player who gets closer to 21 wins You always going to win if you are the closer, there is no draw.


| 033:045 Khan | : |
O Prophet (MuhammadSAW )! Verily, We have sent you as witness, and a bearer of glad tidings, and a warner, |
| 033:045 Maulana | : |
O Prophet, surely We have sent thee as a witness, and a bearer of good news and a warner, |
| 033:045 Pickthal | : |
O Prophet! Lo! We have sent thee as a witness and a bringer of good tidings and a warner. |
| 033:045 Rashad | : |
O prophet, we have sent you as a witness, a bearer of good news, as well as a warner. |
| 033:045 Sarwar | : |
Prophet, We have sent you as a witness, a bearer of glad news, a warner, |
| 033:045 Shakir | : |
O Prophet! surely We have sent you as a witness, and as a bearer of good news and as a warner, |
| 033:045 Sherali | : |
O Prophet ! truly WE have sent thee as a Witness and a Bearer of glad tidings, and a Warner, |
| 033:045 Yusufali | : |
O Prophet! Truly We have sent thee as a Witness, a Bearer of Glad Tidings, and Warner,- |
Concepts/Themes Covered: أركان الإسلام > (محمد (صلى الله عليه وسلم > أخلاقه وصفاته Pillars of Islam> The Blessed Muhammad(PBUH)> His Manners and Attributes أركان الإسلام > (محمد (صلى الله عليه وسلم > تأييد رسالته Pillars of Islam> The Blessed Muhammad(PBUH)> Supporting his Message أركان الإسلام > (محمد (صلى الله عليه وسلم > شهادته هو وأمته على الناس Pillars of Islam> The Blessed Muhammad(PBUH)> His Testimony and His Nation's for People أركان الإسلام > (محمد (صلى الله عليه وسلم > طبيعة رسالته Pillars of Islam> The Blessed Muhammad(PBUH)> His Mission's Nature(PBUH) أركان الإسلام > (محمد (صلى الله عليه وسلم > مخاطبة الله إياه Pillars of Islam> The Blessed Muhammad(PBUH)> Allah's Address to Him(PBUH)
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


In a micro-world like a LightBot level, the coordinates that identify the upper left corner of the world are:
There are no hints for this question
When we create a new class that inherits from an existing class, we use this keyword to specify the class to inherit from:
There are no hints for this question
An instance of a class is called:
There are no hints for this question
The set of values of all of the attributes defining an object are called its:
There are no hints for this question
A LightBot can perform these actions:
There are no hints for this question
When we create a new class that inherits from another, we call this new class a:
There are no hints for this question
A LightBot command that can run multiple commands is:
There are no hints for this question
There are no hints for this question
A special kind of method that is used to initialize a brand new object is called:
There are no hints for this question
Some methods take additional values that provide information about what the method should do. These additional values are called:
There are no hints for this question


6 Ways to Work From Home Effectively During
the Coronavirus
The Coronavirus Lockdown
A lockdown has been announced in many countries around the world becouse of ongoing problems surrounding coronaviris
This is leaving many people with no choice but to conduct their business from home. Naturally, people should have a
plan in place and some strategies to ensure that they will be able to make the most if this temporary containment
Success will always come to those who are hard-working, dedicated, commited, and persistent. They are the ones who were
taking action instead of sitting around and talking endlessly about a wide range of unimportant staff, which is never going
to provide them with measurable results
Managing your body
The fact that you work from home these days does not mean that you can relax your exercising routine.
It also does not mean that it is no longer necessary to look at your physical health.Instead, now can be the
perfect time to set new standards and to program them into your consciousness to such an extent thhat they will
become a way of living long after work from home period has ceased. There is a whole lot of exercises which can
be done without the need to have specialized equipment.
A lot can be accomplished simply by using the doing exercise at home, and therefore is no need to lower your standards as
far as exercising is concerned.
Have Firm Office Hours
Just because you have been forced to work from home does not mean that you can justify altering your schedule.
It's important to stay in routine and to ensure that everething remains as normal and organized as it always has been.
This will also make it easier to get up to speed once the locdown has been canceled.


April 11, 2020
I’m had some great opportunities to work national datasets such as National Assessment of Educational Progress (NAEP). But, throughout my use of the various datasets I’ve started diving into, I’ve kept coming up with questions about the complex design of the sampling frame. I’m slowly building my understanding of the complexities of sampling, and NAEP certainly gives me a lot of food for thought. For NAEP, these sampling design nuances boils down into multiple levels such as
- Strata,
- Schools, and
- Students
and there are even more levels and nuances. Basically, during my work with these data I’ve had a fun time trying to wrap my mind around these issues and how they influence downstream analyses. The downstream analyses is what I primarily focus on and want to try to get a better understanding on what needs to happen to appropriately handle these nuances.
I’ve been reading up on some of the issues with complex sampling design in Thomas Lumley’s Complex Surveys text and the survey package. Which have been great resources for more information how these survey issues are handled in various contexts. One issue that I have not been able to find a nice solution so yet is the relationship between survey weights and Bayesian inference. Basically, I’m learning a lot and trying to figure out how survey inferences can map into these other areas I’m learning about so it’s all kinda of mess at the moment. Anyways, I’m starting to really like modeling from a Bayesian context and I’m enjoying the coding, math, and theory behind a lot of the Bayes I’ve done so far. But, this issue of survey’s hasn’t really come up yet and I wanted to dive into it a bit. This brought me to a post by Bob Carpenter here and I’m interigued by these ideas. Which also led me back to Thomas’ blog where he talks a lot of survey designs and gives some great updates on the survey package. Next I wanted to try out some of Bob’s ideas to see if I can reproduce these issues.
A normal data sampling issue
I’m going to take a page from some previous work I did in undergrad and build up a small population and try to bring it back down to something I can take bite out of.
So, suppose we have a population of size \(N_{pop}\), which we can roughly say what this size is. We want to sample from this population to approximate what a particular parameter is, say \(\theta\), of this population is. That is, we could take
- A simple random sample of size \(N_{obs}\).
- A stratified random sample where we split the total population into groups then sample within these groups so that we get a total of \(N_{obs}\).
I’m not well versed yet in the nuances of different types of stratified or cluster sampling so I’m going to try to keep this simple-ish. So lets say in the population we have a characteristic \(Y\) we are interested in where \[Y\sim N(\theta, \sigma^2)\] so we have a relatively simple characteristic we are interested in, namely the mean/location parameter of the normal distribution. I’m gonna build this population and see what I can do to futz with it.
N_pop <- 10000 # total population
mu <- 50 # population mean
sigma <- 10 # population SD
SO, we now have a fancy population that is approximately a old-school T-distribution for test scores. Great, it’s so not helpful at all for helping me understand survey weights… Let’s add in some fun with levels to the data, say we have 100 groups/strata that this population can be grouped in. But to make things even more fun lets say these groups have slightly different means, that is the group means vary randomly around the population mean.
G <- 5 # number of groups
mu_g <- rnorm(G, 0, 1) # group deviation from population mean
G_mean <- mu + mu_g # group mean
Now, let’s build a population that’s a little more fancy looking (and yes, I completely realize this is likely missing the forest for the trees…). I essentially just wanted to build a population where sampling proportional to size may be probablematic.
G_size <- N_pop*c(0.4, 0.3, 0.1, 0.1, 0.1)
Mg <- rep(G_mean, G_size)
Y_pop <- rnorm(length(Mg), Mg, 10)
popdata <- data.frame(Y=Y_pop, G=factor(rep(1:G, G_size)))
Now that we have some fancy looking clustered data, let’s sample from it and see what we can get out.
Simple random sample
Here an SRS is straightforward, we take our population \(N_{pop}\) and we take a random sample from it. This means that every case is equally likely to be sampled. Or said another way, the probability of being sampled is equal for all observations.
\[\pi_i = 1/N_{pop}\] where \(\pi_i\) is the probability of being included in the sample.
popdata$pi_srs <- 1/N_pop
N_obs <- 100
Y_obs <- sample(x=popdata$Y, size=N_obs, prob=popdata$pi_srs)
mean(Y_obs)
## [1] 50.0389
sd(Y_obs)
## [1] 10.34016
So when we take our simple random sample from the population we a sample mean and SD that seem close, but how well does this work if we did it a huge number of times?
I want to find out.
SRS Recovery
I don’t know a better term that recovery for looking at how well we can sample and get the population characteristic back out. First, a model can be used for describing the mean.
library(rstan)
## Loading required package: StanHeaders
## Loading required package: ggplot2
## rstan (Version 2.19.2, GitRev: 2e1f913d3ca3)
## For execution on a local, multicore CPU with excess RAM we recommend calling
## options(mc.cores = parallel::detectCores()).
## To avoid recompilation of unchanged Stan programs, we recommend calling
## rstan_options(auto_write = TRUE)
## For improved execution time, we recommend calling
## Sys.setenv(LOCAL_CPPFLAGS = '-march=native')
## although this causes Stan to throw an error on a few processors.
model <- "
data {
int n;
real Y[n];
}
parameters {
real mu;
}
model {
//data model
Y ~ normal(mu, 10);
//prior
mu ~ normal(50,20);
}
"
Below is a simple simulation to check this out.
nsim <- 1000
sim.mean <- numeric(nsim)
sim.sd <- numeric(nsim)
sim.ll <- numeric(nsim)
sim.ul <- numeric(nsim)
sim.cov <- numeric(nsim)
i <- 1
for(i in 1:nsim){
yi <- sample(x=popdata$Y, size=N_obs, prob=popdata$pi_srs)
dati <- list(n=length(yi), Y=yi)
fit <- stan(model_code=model, data = dati,
chains = 1, iter = 1000, refresh=0)
mu_ss <- extract(fit)$mu
sim.mean[i] <- mean(mu_ss)
sim.sd[i] <- sd(mu_ss)
sim.ll[i] <- quantile(mu_ss, 0.025)
sim.ul[i] <- quantile(mu_ss, 0.975)
sim.cov[i] <- (sim.ll[i] < mu) & (sim.ul[i] > mu)
}
# coverage
mean(sim.cov)
## [1] 0.962
# Average Width
mean(sim.ul - sim.ll)
## [1] 3.876474
sim <- data.frame(M = sim.mean, SD=sim.sd, LL=sim.ll, UL=sim.ul)
library(ggplot2)
cols=c("MEAN"="#CC79A7","LL 2.5%"="#E69F00", "UL 97.5%"="#56B4E9")
ggplot()+
geom_boxplot(data=sim, aes(y=M, color="MEAN"),
coef=0, outlier.shape=NA)+
geom_boxplot(data=sim, aes(y=LL, color="LL 2.5%"),
coef=0, outlier.shape=NA)+
geom_boxplot(data=sim, aes(y=UL, color="UL 97.5%"),
coef=0, outlier.shape=NA)+
geom_point(aes(x=0,y=50), color="red",size=2)+
scale_color_manual(name=NULL,values=cols)+
lims(y=c(45,55))+
theme_bw()
Well, that works as it should. We get what I assume is nominal coverage using a 95% confidence interval (z=1.96), and we get a pretty picture of what the mean, lower and upper bound looked like across iterations.
Now let’s sample differently…
Stratified random sample
For this I’ll sample say 20 observations from each group.
nsim <- 1000
sim.mean <- numeric(nsim)
sim.sd <- numeric(nsim)
sim.ll <- numeric(nsim)
sim.ul <- numeric(nsim)
sim.cov <- numeric(nsim)
i <- 1
for(i in 1:nsim){
yi <- unlist(tapply(popdata[,1], popdata[,2], sample, size=20))
dati <- list(n=length(yi), Y=yi)
fit <- stan(model_code=model, data = dati,
chains = 1, iter = 1000, refresh=0)
mu_ss <- extract(fit)$mu
sim.mean[i] <- mean(mu_ss)
sim.sd[i] <- sd(mu_ss)
sim.ll[i] <- quantile(mu_ss, 0.025)
sim.ul[i] <- quantile(mu_ss, 0.975)
sim.cov[i] <- (sim.ll[i] < mu) & (sim.ul[i] > mu)
}
# coverage
mean(sim.cov)
## [1] 0.946
# Average Width
mean(sim.ul - sim.ll)
## [1] 3.867119
sim <- data.frame(M = sim.mean, SD=sim.sd, LL=sim.ll, UL=sim.ul)
cols=c("MEAN"="#CC79A7","LL 2.5%"="#E69F00", "UL 97.5%"="#56B4E9")
ggplot()+
geom_boxplot(data=sim, aes(y=M, color="MEAN"),
coef=0, outlier.shape=NA)+
geom_boxplot(data=sim, aes(y=LL, color="LL 2.5%"),
coef=0, outlier.shape=NA)+
geom_boxplot(data=sim, aes(y=UL, color="UL 97.5%"),
coef=0, outlier.shape=NA)+
geom_point(aes(x=0,y=50), color="red",size=2)+
scale_color_manual(name=NULL,values=cols)+
lims(y=c(45,55))+
theme_bw()
The coverage was below the nominal rate. This is likely because participants had an unequal probability of selection. In the case above, the probability of inclusion were proportional to the group size, that is \[\pi_i = \pi_g = \frac{1}{ng} = \{0.00025,\ 0.0003,\ 0.001,\ 0.001,\ 0.001\}\]
So, a method for getting the coverage rate back up to the nominal level would be to weight each case by the probability of inclusion. Meaning we can account for this in the model and various ways exist for doing so. A few methods include
- Weighting the likelihood function by the inverse of the probability of inclusion
- Explicitly modeling the levels of the design
- Modeling generativey
Weighted Likelihood Method
Weighting the likelihood can go my various names such as pseudo-likelihood as well. Because cases are weighted differentially, the likelihood is not a true likelihood and may case some issues in the estimation. So instead of a normal likelihood, we can have
\[\ell(Y \mid \theta) = \sum w_if(y_i \mid \theta)\]
model <- "
data {
int n;
real Y[n];
real pi[n];
}
parameters {
real mu;
}
model {
//data model
for(i in 1:n){
target += inv(pi[i])*normal_lpdf(Y[i]| mu, 10);
}
//prior
mu ~ normal(50,20);
}
"
nsim <- 1000
sim.mean <- numeric(nsim)
sim.sd <- numeric(nsim)
sim.ll <- numeric(nsim)
sim.ul <- numeric(nsim)
sim.cov <- numeric(nsim)
i <- 1
for(i in 1:nsim){
yi <- unlist(tapply(popdata[,1], popdata[,2], sample, size=20))
pi <- c(0.00025,0.0003,0.001,0.001,0.001)
dati <- list(n=length(yi), Y=yi, pi=sort(rep(pi, 20)))
fit <- stan(model_code=model, data = dati,
chains = 1, iter = 1000, refresh=0)
mu_ss <- extract(fit)$mu
sim.mean[i] <- mean(mu_ss)
sim.sd[i] <- sd(mu_ss)
sim.ll[i] <- quantile(mu_ss, 0.025)
sim.ul[i] <- quantile(mu_ss, 0.975)
sim.cov[i] <- (sim.ll[i] < mu) & (sim.ul[i] > mu)
}
# coverage
mean(sim.cov)
## [1] 0.034
# Average Width
mean(sim.ul - sim.ll)
## [1] 0.08498207
sim <- data.frame(M = sim.mean, SD=sim.sd, LL=sim.ll, UL=sim.ul)
cols=c("MEAN"="#CC79A7","LL 2.5%"="#E69F00", "UL 97.5%"="#56B4E9")
ggplot()+
geom_boxplot(data=sim, aes(y=M, x=1, color="MEAN"),
coef=0, outlier.shape=NA)+
geom_boxplot(data=sim, aes(y=LL,x=0, color="LL 2.5%"),
coef=0, outlier.shape=NA)+
geom_boxplot(data=sim, aes(y=UL, x=2, color="UL 97.5%"),
coef=0, outlier.shape=NA)+
geom_point(aes(x=1,y=50), color="red",size=2)+
scale_color_manual(name=NULL,values=cols)+
lims(y=c(45,55))+
theme_bw()
So, that was poor…


Posted Ads
Jefferson Ighalo
| Image | Title and Year | Location | Update Price | Status |
|---|---|---|---|---|
| Toyota Corolla 2011 | 23 James Street, Surulere | Edit | ||
| Toyota Corolla 2011 | 21 Ayo Street, Surulere | Edit | ||
| Toyota Corolla 2011 | 23 Adelabu Street, Surulere | Edit | ||
| Toyota Corolla 2011 | 19 James Street, Yaba | Edit |
My Garage
| Image | Title and Year | Location | Update Bid | |
|---|---|---|---|---|
| Toyota Corolla 2011 | 23 John Street, Surulere |


Landscape Generator
This is an implementation of an algorithm based on
this great blog post
.
Iterations:
10
|
Speed:
5
FPS |
▶⏸ Play/Pause
↺ Reset


Toggle navigation
Start Bootstrap
About
Services
Contact
A better Bootstrap starter template.
Complete with pre-defined file paths that you won't have to change!


 Hundreds of more precise definitions of forest are used throughout the world, incorporating factors such as tree density, tree height, land use, legal standing and ecological function. According to the widely
used Food and Agriculture Organization definition, forests covered four billion hectares (15 million square miles) or approximately 30 percent of the world's land area in 2006.Forests are the dominant terrestrial ecosystem of Earth, and
are distributed across the globe.
12 Columnas
6 Columnas
3 Columnas
3 Columnas
Forests account for 75% of the gross primary productivity of the Earth's biosphere, and contain 80% of the Earth's plant biomass. Forests at different latitudes and elevations form distinctly different ecozones: boreal forests near the poles,
tropical forests near the equator and temperate forests at mid-latitudes
12 Columnas
6 Columnas
3 Columnas
3 Columnas
Forests account for 75% of the gross primary productivity of the Earth's biosphere, and contain 80% of the Earth's plant biomass. Forests at different latitudes and elevations form distinctly different ecozones: boreal forests near the poles,
tropical forests near the equator and temperate forests at mid-latitudes
12 Columnas
6 Columnas
3 Columnas
3 Columnas
Forests account for 75% of the gross primary productivity of the Earth's biosphere, and contain 80% of the Earth's plant biomass. Forests at different latitudes and elevations form distinctly different ecozones: boreal forests near the poles,
tropical forests near the equator and temperate forests at mid-latitudes
12 Columnas
6 Columnas
3 Columnas
3 Columnas
Forests account for 75% of the gross primary productivity of the Earth's biosphere, and contain 80% of the Earth's plant biomass. Forests at different latitudes and elevations form distinctly different ecozones: boreal forests near the poles,
tropical forests near the equator and temperate forests at mid-latitudes


Choose crashes involved either death or injury
Choose the specific weather conditions when crashes happened
Choose a day of a week
Select the number of fatalities
Value:
Select the number of injury
Value:
Input the month and the day. For example: January, Monday
| Attribute | Value |
|---|---|
| Month | |
| Day | |
| Fatal Number | |
| Injury Number | |
| Weather |


--- layout: page title: "about" description: "Programming and DevOps; using Ansible, Docker, Java, Spring, and AngularJS" ---
Hello, my name is Tony Waters. I am a DevOps Engineer specialising in Docker.
I also have strong core Java, Spring and Design Patterns. I am a Sun Certified Java Programmer, and Sun Certified Web Component Developer. I am also a CIW Certified Instructor and CIW Certified Enterprise Developer.
On the DevOps side, I mainly use Ansible, Packer, TerraForm, and Kubernetes/OpenShift. I can set up servers manually from scratch, but prefer to use Packer. I mostly work in the cloud these days, mainly AWS and vCloud
I spend most of my time in an IDE or on the command-line.
I have server-side and client-side skills, including a good understanding of JavaScript, HTML, CSS, and AngularJS.
I have worked with big database systems like Oracle, and run my tests in RAM on tiny ones like H2. I am also familiar with ORM technologies and happy using JPA and SQL
The posts here and related sources on GitHub and Docker Hub should give you an idea of the level of my coding.
You can Email me - tony - at the domain in the address bar


My Team
Manager
Jared
ID: 11
Email:
<EMAIL_ADDRESS>Office: 24
Engineer
Greg
ID: 55
Email:
<EMAIL_ADDRESS>Github:
greghithub
Engineer
Sarah
ID: 46
Email:
<EMAIL_ADDRESS>Github:
sarahgithub
Intern
Monica
ID: 6
Email:
<EMAIL_ADDRESS>School: Vassar


MochiKit.DragAndDrop - drag and drop elements with MochiKit
// Create a draggable new Draggable('mydrag'); // Create a corresponding droppable new Droppable('mydrop', { accept: ['drag-class'], ondrop: function (element) { alert('"' + element.id + '" was dropped on me'); } });
MochiKit.DragAndDrop enables you the power of dragging elements through your pages, for richer interfaces.
The implementation was adapted from Scriptaculous.
Draggable(element[, options]):
A object that can be drag with the mouse.
You have the following options, with corresponding default values:
- handle (false):
- Option for giving the element where starting the drag. By default it's the element itself, but you can either put a class of a subelement or the id of another element as handle.
- starteffect (MochiKit.Visual.Opacity):
- Function called once the drag has begun, taking the dragged element as argument. It's an effect by default but you can define any callback.
- reverteffect (MochiKit.Visual.Move):
- Effect applied when drag is cancelled. You have to define the revert option to enable the call. By default it brings the element back to its initial position, so you should know what you want when you modify this. The function should return an effect that can be cancelled.
- endeffect (MochiKit.Visual.Opacity):
- Pending part of starteffect. If you have modified your element during start, you'd usually want to revert it in the function.
- zindex (1000):
- Zindex of the drag element. By default it brings it to front.
- revert (false):
- Indicate if the reverteffect function should be called. If you define a function here, this function will be called before reverteffect, with the element as first argument.
- snap (false):
- Define the behaviour of the drag element when moving. It can either be a function, a value or an array of two values. If it's a function, it should take the (x, y) position of the element as arguments, and return the position draw in the browser. If its a value, it's used as a modulo for each coordinates. If it's an array, each value is applied for the corresponding coordinate.
- selectclass (null):
- If defined, name of CSS class applied during the drag.
- ghosting (null):
- Make a ghost from the draggable: clone it at start, then remove the clone at end.
- onchange (MochiKit.Base.noop):
- Function called when updates are made on the draggable object.
- scroll (false):
- Element to scroll around, if precised. For example, window will allow the draggable to scroll in the page.
- scrollSensitivity (20):
- Scroll sensitivity, used when scroll is used.
- scrollSpeed (15):
- Scroll speed, used when scroll is used.
A draggable generates some signals during its lifetime: start, drag and end. They are available through the Draggables handler, and are called with a draggable as argument. You can register a callback for these events like this:
onStart = function (draggable) { // Do some stuff }; connect(Draggables, 'start', onStart);
- Availability:
- Available in MochiKit 1.4+
Droppable(element[, options]):
A object where you can drop a draggable.
You have the following options, with corresponding default values:
- greedy (true):
- Stop on this droppable when a draggable drops over it.
- hoverclass (null):
- If defined, name of CSS class applied when a draggable is hover the droppable element (hover state).
- hoverfunc (MochiKit.Base.noop):
- Function called on hover state.
- accept (null):
- Array of CSS classes allowed to drop on this.
- activeclass (null):
- If defined, name of CSS class applied if a possible draggable begins its start (active state).
- onactive (MochiKit.Base.noop):
- Function called on active state.
- containment ([]):
- Specify a list of elements to check for active state: only the children of the specified elements can be dropped. Mainly useful for Sortable.
- onhover (MochiKit.Base.noop):
- Specific hover function, mainly used for Sortable.
- ondrop (MochiKit.Base.noop):
- Function called when a draggable is dropped. The function takes three arguments: the draggable element, the droppable element, and the event that raised the drop.
- Availability:
- Available in MochiKit 1.4+
Copyright 2005 Bob Ippolito<EMAIL_ADDRESS>This program is dual-licensed free software; you can redistribute it and/or modify it under the terms of the MIT License or the Academic Free License v2.1.
Portions adapted from Scriptaculous are available under the terms of the MIT License.


{% include head.html %}
{% include adventurePages/victoriaFalls/nav.html %} {% include adventurePages/victoriaFalls/header.html %} {% include adventurePages/victoriaFalls/adventureTitle1.html %} {% include adventurePages/victoriaFalls/topiconsvic.html %} {% include adventurePages/victoriaFalls/mainbodyvic.html %} {% include adventurePages/victoriaFalls/slidervictoriafalls.html %} {% include adventurePages/victoriaFalls/contactAdv.html %} {% include adventurePages/victoriaFalls/aside.html %} {% include adventurePages/victoriaFalls/footer.html %} {% include scripts.html %}


Selected American and British Poems
by FCIT
Specimen of an Induction to a Poem
by John Keats
Additional Information
- Year Published: 1817
- Language: English
- Country of Origin: England
- Source: John Keats, Poems 1817 (Whitefish: Kessinger, 1817)
-
Readability:
- Flesch–Kincaid Level: 9.0
- Word Count: 547
- Genre: Poetry
- ✎ Cite This
Downloads
Lo! I must tell a tale of chivalry;
For large white plumes are dancing in mine eye.
Not like the formal crest of latter days:
But bending in a thousand graceful ways;
So graceful, that it seems no mortal hand,
Or e'en the touch of Archimago's wand,
Could charm them into such an attitude.
We must think rather, that in playful mood,
Some mountain breeze had turned its chief delight,
To show this wonder of its gentle might.
Lo! I must tell a tale of chivalry;
For while I muse, the lance points slantingly
Athwart the morning air: some lady sweet,
Who cannot feel for cold her tender feet,
From the worn top of some old battlement
Hails it with tears, her stout defender sent:
And from her own pure self no joy dissembling,
Wraps round her ample robe with happy trembling.
Sometimes, when the good Knight his rest would take,
It is reflected, clearly, in a lake,
With the young ashen boughs, 'gainst which it rests,
And th' half seen mossiness of linnets' nests.
Ah! shall I ever tell its cruelty,
When the fire flashes from a warrior's eye,
And his tremendous hand is grasping it,
And his dark brow for very wrath is knit?
Or when his spirit, with more calm intent,
Leaps to the honors of a tournament,
And makes the gazers round about the ring
Stare at the grandeur of the balancing?
No, no! this is far off:—then how shall I
Revive the dying tones of minstrelsy,
Which linger yet about lone gothic arches,
In dark green ivy, and among wild larches?
How sing the splendour of the revelries,
When buts of wine are drunk off to the lees?
And that bright lance, against the fretted wall,
Beneath the shade of stately banneral,
Is slung with shining cuirass, sword, and shield?
Where ye may see a spur in bloody field.
Light–footed damsels move with gentle paces
Round the wide hall, and show their happy faces;
Or stand in courtly talk by fives and sevens:
Like those fair stars that twinkle in the heavens.
Yet must I tell a tale of chivalry:
Or wherefore comes that knight so proudly by?
Wherefore more proudly does the gentle knight,
Rein in the swelling of his ample might?
Spenser! thy brows are arched, open, kind,
And come like a clear sun–rise to my mind;
And always does my heart with pleasure dance,
When I think on thy noble countenance:
Where never yet was ought more earthly seen
Than the pure freshness of thy laurels green.
Therefore, great bard, I not so fearfully
Call on thy gentle spirit to hover nigh
My daring steps: or if thy tender care,
Thus startled unaware,
Be jealous that the foot of other wight
Should madly follow that bright path of light
Trac'd by thy lov'd Libertas; he will speak,
And tell thee that my prayer is very meek;
That I will follow with due reverence,
And start with awe at mine own strange pretence.
Him thou wilt hear; so I will rest in hope
To see wide plains, fair trees and lawny slope:
The morn, the eve, the light, the shade, the flowers:
Clear streams, smooth lakes, and overlooking towers.


Event Location:
Microsoft
201 Jones Rd
Waltham, Massachusetts
Abstract:
This session is for the Type A DBAs who are serious about managing their servers as efficiently as possible. The Dynamic Management Objects--a set of views and functions that first shipped with SQL Server 2005--are a window into the inner workings of your SQL Server instance. Locked within the objects is the information you need to help you solve virtually any performance problem, quickly debug problems as they're occurring, and gain insight into what's actually happening on your server, right now. This session is a fast-paced tour of the ins, outs, whys, hows, and even pitfalls of 15 of the most important views and functions. You will learn how to understand transaction behavior, locking, wait statistics, sessions, requests, and much more.
Speaker(s): Adam Machanic,
Abstract:
This session will focus on how best to use and access execution plans. The use of execution plans will focus on identifying and fixing common performance and execution problems within TSQL. The methods defined for using execution plans will follow a problem/solution paradigm in order to show practical ways that execution plans can help solve common problems. Access of execution plans is normally only defined as being from the Management Studio GUI. This session will show methods of access that include direct queries into the procedure cache using dynamic management views and functions and plans captured through the use of trace events defined in Profiler. Access through XQuery against the XML will be demonstrated through several practical a
Speaker(s): Grant Fritchey,
Abstract:
In this talk, Mike will show us some of the tools that come with SQL Server and how they can be used to analyze the performance of our database code. We will take a quick walk through indexing, best practices, some quick tips and then have a more in depth look at Execution Plans, IO Statistics and Profiler. Plus as a DBA, Mike can give a few pointers in working with your organization's own "Dr. No" along the way. Rough Agenda: • Review of Best Practices • Indexing/Table Structure High Level Overview • Will your queries use the index? • Query Plans don’t have to be scary • IO Statistics, Profiler • Put Them Together (Use the tools before you say, "Done!" • Interaction with the DBA (How to be a partner in performance with the DB
Speaker(s): Mike Walsh,
Abstract:
PowerShell is a relatively new scripting environment from Microsoft and SQLCMD is a replacement of OSQL. Every day we perform many similar database-related tasks. Why not write once and then reuse that code multiple times? I will give an overview of Powershell and SQLCMD. Then we will see how to use them in SQL Server environment to automate repetitive tasks, write a flexible code, perform tasks while away from the computer, and perform many other time-saving activities.
Speaker(s): Varsham Papikian,
Abstract:
If you are new to SQL Server environment, you will learn how we are using Clustering and Mirroring technologies together to achieve High Availability and minimize data loss in the event of a disaster. This session is for you if you want to learn techniques we have used to minimize downtime while migrating from SQL Server 2005 to 2008. If you use SQL Server 2005 failover clustering and want to learn about upgrading to Windows Server 2008 and SQL Server 2008, this is the session for you.
Speaker(s): Ayad Shammout,
Abstract:
In this session, I will cover the new PowerPivot (formerly known as Gemini Project) a data analysis add-in that delivers computational power directly within MS Excel 2010. By combining native Excel 2010 functionality with PowerPivot’s in-memory engine will allow users to interactively explore and perform calculations on large data sets. You can easily streamline the process of integrating data from multiple sources – including corporate databases, spreadsheets, reports, and data feeds. Share and collaborate by easily publishing your analysis to SharePoint 2010 and have other users enjoy the same slicer and fast-query capabilities when working on your Excel Services reports.
Speaker(s): Ayad Shammout,
Abstract:
This session explains how to create SSIS packages and defines the basic objects contained in the control flow and data flow. We will work through how to Create SSIS Packages, Data Sources and Package Connections Create Control Flow Tasks Use Control Flow Containers Use Data Flow Adapters and Transformations
Speaker(s): Slava Kokaev,
Abstract:
Whether you are new to the role of DBA, being "forced" to take on the responsibility of one or are starting at a new role as a DBA, knowing where to start can often mean the difference between success or failure. In this chat, Mike will help us wade through the noise that attacks a DBA and figure out just what our priorities should be. By focusing on the "itties" of Database Administration (Recoverability, Availability - Health Performance - , Security and Reliability) we can see a natural priority build. Throughout this interactive discussion we will also have a look at some of the available tools and scripts to help us see where our environments rate with the "itties" of Database Administration.
Speaker(s): Mike Walsh,
Abstract:
A critical, but often overlooked step when deploying SQL Server is the design, layout and provisioning of storage. In this talk, Pete will discuss storage design and layout for various SQL workloads, I/O analysis and the methods used to gather storage performance metrics. Other topics such as planning for storage based replication with SQL Server, storage alignment, solid state drives, stress testing and validation prior to deployment will also be discussed.
Speaker(s): Peter Tassmer,
Abstract:
A collection of little things you can do with Management Studio so you can start faster, work smarter, prevent mistakes, and present better.
Speaker(s): Aaron Bertrand,
Abstract:
This session will be a cornucopia of three sub-sessions. The first part will be to convince the skeptics. Why does every organization should consider SQL Server Reporting as part of its front-end solution? What will SSRS do better than a typical web application/site or a client-server application? The second portion will be a quick demo of the possibility and will be the shortest. The final part will talk about the best practices, tips from the field and will cover the implementation techniques.
Speaker(s): Bala Subra,
Abstract:
Leading your database development solution to a leaner, more automated method of development and deployment is an essential step to implementing a successful Agile/SCRUM based methodology. Scott Abrants will take an existing SQL Server database and import it into Visual Studio Team Edition for Database Developers GDR version prepearing it for an automated continous integration build. Lean some of the tips and techniques that will have you well on your way to integrating with an automated build taking advanatge of the power of Visual Studio Team Edition for Database Developers.
Speaker(s): Scott Abrants,
Abstract:
This session is for you if you want to learn tips and techniques that are used to optimize database development with special emphasis on SQL Server 2005. If you write lot of stored procedures and want to learn the tools of a DBA, this is the session for you. If you are new to SQL Server development environment, you will learn how the various constructs compare to each other and better performance can be produced every time with a brief introduction to understanding Execution Plans.
Speaker(s): Bala Subra,
Abstract:
Basic show-off of how to get the most out of VSTS Database Edition aka "Data Dude" also a dog-and pony show of 2010 and some TFS thrown in.
Speaker(s): Charles Hyman,
Abstract:
ADO.NET Entity Framework (EF) can help you more easily create and maintain data-driven applications using flexible data models featuring entities and relationships. Entity Framework 4, part of .NET Framework 4 and Visual Studio 2010, includes many new features and improvements. This session will start with a brief introduction to EF, then focus on what’s new in EF 4, including designer improvements, persistence ignorance, model-first support, lazy loading, N-Tier, complex types, foreign keys, and more.
Speaker(s): Chris Bowen,
Abstract:
This is a high level intro of how to develop for SQL Azure either using traditional ASP.Net IIS or Windows Azure as a host. I will go over the differences between SQL Azure and Azure Storage. Considerations that need to be made if using Azure Cloud Hosting with ASP.Net Authentication and session states as well as how to use SQL Azure as a Sql(Membership,Role,Profile)Provider. I will share the tips and tricks that I have discovered as I worked with SQL Azure.
Speaker(s): Matt Van Horn,
Abstract:
Over the past few months many financial houses have been severely ‘hit’ by the current slump in the sub prime mortgage market. This has lead to severe losses and considerable client liability. Many firms are now starting to take a ‘serious look’ at the potential utilization of data mining techniques as part of their ongoing efforts to control their risk exposure. This beginner to intermediate level hands-on presentation is aimed at showing the attendee some of the ‘data mining’ prototypes solutions that we are currently developing with SQL Server 2005 / 2008, as a part of our ongoing efforts to manage our risk.
Speaker(s): Steve Simon,
Abstract:
Live Labs recently released Pivot a tool to visualize data which can allow uses to see patterns in data like never before. In this session I will provide a basic intro to Pivot and discuss how to use you existing database and the pivotcollectiontools(on codeplex) SDK that I have released to dynamically build Pivot Collections.
Speaker(s): Matt Van Horn,
Abstract:
SSRS 2008 R2 has some exciting new features. In this session I will show you how you can use Report Builder 3.0 (new to R2) to consume spatial data and Bing maps in your Reports. I will also show Report Manager look and feel changes with Sharepoint-like interaction and menus; and other features such as Data Bars, Sparklines.
Speaker(s): Sunil Kadimdiwan,
Abstract:
This session will describe the value of an ETL framework, what should be included in it, and architectural considerations. A production implementation using Sql, SSIS, ASP.Net, and SSRS will be referenced.
Speaker(s): Mike Litchfield,
Abstract:
Many DBAs and developers are faced with tuning poorly performing SQL statements. There is no way to learn everything you need to know about SQL tuning in an hour, but you can learn a process to employ when badly written SQLs are ruining database performance. However, many tuning projects fail because the process being used is inefficient. This presentation will walk through a process Confio Software uses with great success and will include topics such as: SQL diagramming, wait type data, column selectivity, and several more that will help you succeed on future tuning projects.
Speaker(s): Dean Richards,
Abstract:
How often have our SQL Servers been bogged down with a myriad of users issuing lengthy and poorly constructed or poorly performing queries against our tables and views. More often than not, nearly bringing our systems to their knees. Nowhere is this truer than within the financial world where heavy number crunching is par for the course. This beginners to intermediate level hands-on presentation is aimed at the SQL Server developer and business analyst alike and will show the attendee how we have managed to eliminate 90 % of our poorly performing queries by creating data access layers which provides our end users with a suite of well developed and tuned SQL Server FUNCTIONS with which to render their data.
Speaker(s): Steve Simon,
Abstract:
This session will cover many common issues, challenges and problems encountered when developing for, or administering SQL Server as well as examining best ways to modify, script and copy database objects from development to production environment. Session materials for the attendees will include custom utility tools and stored procedures written by the speaker for simplifying SQL Server development and database update deployment.
Speaker(s): Roman Rehak,
Abstract:
At PDC 2009, Microsoft announced "Dallas", a Data-as-a-Service offering that leverages the Windows Azure cloud computing platform. "Dallas" makes well-known and vetted public and commercial data sets from entties such as the Associated Press and Data.gov available to the development and data analysis communities. This session explores getting started with "Dallas" and accessing its data sets programmatically and via Excel 2010's PowerPivot feature.
Speaker(s): Jim O'Neil,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
LinkedIn: https://www.linkedin.com/in/roman-rehak-bb83702/
Contact: http://sqlblog.com/blogs/roman_rehak/
Roman Rehak is a Principal Database Architect at MyWebGrocer.com in Burlington, VT. He specializes in SQL Server development and database architecture. He writes articles for Visual Studio Magazine, SQL Server Magazine, SearchSqlServer.com and other technical publications. Roman presents at user groups and conferences in US and Canada. He has served as the Tech Chair for the SQL Server track at DevTeach and PASS conferences, and is the president of the Vermont SQL Server User Group.
LinkedIn: http://www.linkedin.com/in/mikepwalsh
Contact: https://www.straightpathsql.com
Mike Walsh is an experienced SQL Server professional and has worked with SQL Server since version 6.5. He has been in the role of DBA, developer, and performance tuner, but always leans on his DBA and tuning experience. He has been awarded the SQL Server (now Data Platform) designation 6 times since 2011 and is a current MVP. He runs a SQL Server consultancy focused on DBA services and cloud enablement. He has spoken several times at PASS and regional events.
Contact: http://blogs.msdn.com/jimoneil
Jim is a Developer Evangelist for Microsoft who covers the Northeast District (namely, New England and upstate New York). His overall focus is to engage with the development community in the area through user groups, code camps, BarCamps, Microsoft-sponsored events, etc., and just in general serve as ambassador for Microsoft. Over the past few years, Jim has been focusing on software development scenarios using cloud computing and Windows Azure.
LinkedIn: http://www.linkedin.com/in/scarydba
Contact: http://scarydba.com
Grant Fritchey is a Data Platform MVP with over 20 years’ experience in IT, including time spent in support and development. He has worked with SQL Server since 6.0 back in 1995. He has also developed in VB, VB.NET, C#, and Java. Grant has written books for Apress and Simple-Talk. Grant presents at conferences and user groups, large and small, all over the world. He joined Redgate Software as a product evangelist in January 2011.
Assistant Vice President - IT Architect and Developer Income Research Management
Contact: http://www.anythingtheycando.com/blog/index.php
Matt Van Horn is a Sr. Consultant with Services group at Infragistics, a world leader in user interface (UI) development tools and experts in the User Experience (UX) market. In his current role, Matt is responsible for working with our customers to develop innovative applications.
LinkedIn: https://www.linkedin.com/in/sunilkadimdiwan
Contact: http://www.infotrove.com/events.html
Sunil Kadimdiwan Sunil Kadimdiwan has 25+ years’ experience in architecting and implementing database solutions. He has deep knowledge of the Microsoft SQL Server and Business Intelligence technology stack. He is a frequent speaker at SQLSaturdays, Code Camps, User Group meetings
Contact: http://twitter.com/bsubra
I have more than a decade of experience in Microsoft technologies but have not presented outside the borwonbag sessions at companies which I consult.
I have worked in the IT field for over 20 years. I am currently employed by a SaaS provider that takes in point-of-sales data, scrubs it, cubes that data, and presents it to the end user; the Microsoft stack is heavily relied upon as part of that solution. I have written several SQL Server related articles and maintain an active presence within the SQL Server user communities. I am one of the founding officers of the Southern New England SQL Server Users Group as well as a past president.
Contact: http://www.whccorp.com
Peter Tassmer is the owner of William Henry Consulting in Burlington, MA. He has worked exclusively with SQL Server since version 6.5 and focuses on SQL Server performance and storage management.
Contact: http://www.linkedin.com/in/ayadshammout
I have been involved in IT for 20 years as a Developer, System Engineer, System Analyst and Database Consultant. I worked exclusively with MS SQL Server and Microsoft Applications for the last 14 years. I have extensive experience in System Management and Analysis, Security, High Availability, Disaster Recovery, Database Design, Performance Tuning, Troubleshooting, Business Intelligence and more. I was awarded “SQL Server Innovators Awards 2006”. I'm an MCDBA, MCSE, MCITP and MCT.
Contact: http://www.anythingtheycando.com/blog/index.php
Matt Van Horn is a Sr. Consultant with Services group at Infragistics, a world leader in user interface (UI) development tools and experts in the User Experience (UX) market. In his current role, Matt is responsible for working with our customers to develop innovative applications.
Contact: http://www.infogoldusa.com
Steve Simon is an AVP with State Street Corporation Boston. He has been involved with database design and analysis for over 23 years. He has presented papers at eight PASS Summits and PASS Europe 2009 2010. He is the chairman of the PASS SQL Server / Oracle Virtual Chapter in addition to being a PASS Regional Mentor. He is also a regular presenter at SQLSaturdays and regional Code Camps.
Contact: http://blogs.msdn.com/cbowen/
I am Developer Evangelist for Microsoft's Northeast district, which includes New England and upstate New York.
Contact: http://sqlblog.com/blogs/aaron_bertrand/
Aaron is a senior consultant for SQL Sentry, makers of performance monitoring and event management software for SQL Server, Analysis Services, and Windows. He has been blogging at sqlblog.com since 2006, focusing on manageability, performance, and new features; has been an MVP since 1997-98; and speaks frequently at user group meetings and SQLSaturday events.
LinkedIn: http://www.linkedin.com/in/kokaev/
Contact: http://bostonbi.org/Blog.aspx
Slava Kokaev is a lead BI architect. Over a 6 years he spend on Business Analytics side Modeling, Analyzing and Optimizing business processes. Designing and deploying Analytical Solutions. Last 10 years Slava is specializing in Design and Development of the BI Systems and Custom BI Applications He is the leader of the Boston Microsoft BI Users Group. And heavily involved in MS BI Community by: organizing and speaking in BI Code Camps, Firestarters, SqlSaturdays and recording video tutoria
Mr. Hyman is an IT professional with over twenty years experience, currently specializing is Business Intelligence, Data Warehousing and Back-End Process IT systems. Mr Hyman currently splits his time, between consulting assignments, and mentoring/training assignments. Mr. Hyman is considered an Expert in the Microsoft SQL Server Products as well as the ETL and Reporting tools, BizTalk and SharePoint. Building Data Warehouses from disparate systems is his specialty
Contact: http://www.linkedin.com/in/ayadshammout
I have been involved in IT for 20 years as a Developer, System Engineer, System Analyst and Database Consultant. I worked exclusively with MS SQL Server and Microsoft Applications for the last 14 years. I have extensive experience in System Management and Analysis, Security, High Availability, Disaster Recovery, Database Design, Performance Tuning, Troubleshooting, Business Intelligence and more. I was awarded “SQL Server Innovators Awards 2006”. I'm an MCDBA, MCSE, MCITP and MCT.
LinkedIn: http://www.linkedin.com/in/varshampapikian
Varsham Papikian has 20+ years of experience working with databases and different Microsoft technologies. He works as a Principal Database Architect, Developer and DBA at Wolters Kluwer Financial Services. He speaks at different events like SQLSaturday or user group meetings. Varsham helped to start and then run 'Boston Business Intelligence' user group for some time. Previously he was also involved in running 'New England SQL Server' user group.
Contact: http://www.infogoldusa.com
Steve Simon is an AVP with State Street Corporation Boston. He has been involved with database design and analysis for over 23 years. He has presented papers at eight PASS Summits and PASS Europe 2009 2010. He is the chairman of the PASS SQL Server / Oracle Virtual Chapter in addition to being a PASS Regional Mentor. He is also a regular presenter at SQLSaturdays and regional Code Camps.
LinkedIn: http://www.linkedin.com/in/mikepwalsh
Contact: https://www.straightpathsql.com
Mike Walsh is an experienced SQL Server professional and has worked with SQL Server since version 6.5. He has been in the role of DBA, developer, and performance tuner, but always leans on his DBA and tuning experience. He has been awarded the SQL Server (now Data Platform) designation 6 times since 2011 and is a current MVP. He runs a SQL Server consultancy focused on DBA services and cloud enablement. He has spoken several times at PASS and regional events.
LinkedIn: https://www.linkedin.com/in/adammachanic
Contact: http://sqlblog.com/blogs/adam_machanic
Adam Machanic is a Boston-based SQL Server developer, writer, and speaker. He focuses on large-scale data warehouse performance and development, and is the author of the award-winning SQL Server monitoring stored procedure, quot;sp_WhoIsActive.quot; He has contributed to several books on SQL Server, including quot;T-SQL Queryingquot; (Microsoft Press, 2015). He is a Microsoft Most Valuable Professional (MVP) for SQL Server.
Contact: http://twitter.com/bsubra
I have more than a decade of experience in Microsoft technologies but have not presented outside the borwonbag sessions at companies which I consult.
LinkedIn: http://www.linkedin.com/pub/dean-richards/6/167/a90
Dean Richards is a Senior DBA for DBMS Insights and has helped hundreds of companies solve database and virtualization performance issues. Dean has over 20 years of experience in both development and database administration and has focused his entire career on performance tuning of Oracle and SQL Server environments. Most recently Dean has focused on the trend to virtualize and move databases to the cloud.
The following is a list of sponsors that helped fund the event.


About Me
I am an aspiring web developer sharpening my skills at the University of Richmond Coding Boot Camp. I am building on the knowledge I gained earning my Bachelor of Science degree in Computer Science from the University of Denver (class of 2004).
I began my career in the financial services industry, working at Charles Schwab & Co. from 2004 to 2010. As a licensed broker, I worked extensively with financial management and trading web sites and desktop applications. From 2010 to 2013, I contributed in many roles at Offbeat Entertainment - a startup music-focused video game development studio. I led the team that developed content for the Rock Band Network and was the primary content designer for the Facebook game Rockstar Rising.
After spending the past few years at home with my young son, I am excited to be updating my coding skills! In my free time, I enjoy video games, board games, Magic: The Gathering, and outdoor activities.


2. Special guardianship
Special guardianship offers a child safety and security with a carer without stopping the relationship with the birth parents.
Carers make most decisions to do with the child’s upbringing, including where the child lives, goes to school and what medical treatment they can receive.
Birth parents don’t lose their parental responsibility, but they can’t exercise it except in certain circumstances.
Carers may apply for a Special Guardianship Order after caring for the child for 12 months or sooner with permission from the court.
For more information please contact the Kinship Care Team on 0113 378 3537 (Monday to Thursday, 9am to 5pm, Friday 9am to 4:30pm).


git-remote-ext - Bridge smart transport to external command.
git remote add <nick> "ext::<command>[ <arguments>...]"
This remote helper uses the specified <command> to connect to a remote Git server.
Data written to stdin of the specified <command> is assumed to be sent to a git:// server, git-upload-pack, git-receive-pack or git-upload-archive (depending on situation), and data read from stdout of <command> is assumed to be received from the same service.
Command and arguments are separated by an unescaped space.
The following sequences have a special meaning:
*(Aq% *(Aq
Literal space in command or argument.
%%
Literal percent sign.
%s
Replaced with name (receive-pack, upload-pack, or upload-archive) of the service Git wants to invoke.
%S
Replaced with long name (git-receive-pack, git-upload-pack, or git-upload-archive) of the service Git wants to invoke.
%G (must be the first characters in an argument)
This argument will not be passed to <command>. Instead, it will cause the helper to start by sending git:// service requests to the remote side with the service field set to an appropriate value and the repository field set to rest of the argument. Default is not to send such a request.
This is useful if remote side is git:// server accessed over some tunnel.
%V (must be first characters in argument)
This argument will not be passed to <command>. Instead it sets the vhost field in the git:// service request (to rest of the argument). Default is not to send vhost in such request (if sent).
GIT_TRANSLOOP_DEBUG
If set, prints debugging information about various reads/writes.
GIT_EXT_SERVICE
Set to long name (git-upload-pack, etc...) of service helper needs to invoke.
GIT_EXT_SERVICE_NOPREFIX
Set to long name (upload-pack, etc...) of service helper needs to invoke.
This remote helper is transparently used by Git when you use commands such as "git fetch <URL>", "git clone <URL>", , "git push <URL>" or "git remote add <nick> <URL>", where <URL> begins with ext::. Examples:
"ext::ssh -i /home/foo/.ssh/somekey<EMAIL_ADDRESS>%S foo/repo"
Like host.example:foo/repo, but use /home/foo/.ssh/somekey as keypair and user as user on remote side. This avoids needing to edit .ssh/config.
"ext::socat -t3600 - ABSTRACT-CONNECT:/git-server %G/somerepo"
Represents repository with path /somerepo accessible over git protocol at abstract namespace address /git-server.
"ext::git-server-alias foo %G/repo"
Represents a repository with path /repo accessed using the helper program "git-server-alias foo". The path to the repository and type of request are not passed on the command line but as part of the protocol stream, as usual with git:// protocol.
"ext::git-server-alias foo %G/repo %Vfoo"
Represents a repository with path /repo accessed using the helper program "git-server-alias foo". The hostname for the remote server passed in the protocol stream will be "foo" (this allows multiple virtual Git servers to share a link-level address).
"ext::git-server-alias foo %G/repo% with% spaces %Vfoo"
Represents a repository with path /repo with spaces accessed using the helper program "git-server-alias foo". The hostname for the remote server passed in the protocol stream will be "foo" (this allows multiple virtual Git servers to share a link-level address).
"ext::git-ssl foo.example /bar"
Represents a repository accessed using the helper program "git-ssl foo.example /bar". The type of request can be determined by the helper using environment variables (see above).
Part of the git(1) suite


HOME
BACK
CIT261
Javascript Mobile Development
Designing, Defining, and Triggering CSS3 Transitions without Custom Libraries
NEXT
Music Service Review
Name:
Please select your favorite music service(s):
iTunes
Last.fm
Spotify
Comments:
Submit review


Content-type: text/html;charset=UTF-8 Set-cookie: session=7777
Hockett (1958) defines grammatical genders as "classes of nouns reflected in the behavior of associated words." Gender is, therefore, a phenomenon that appears in patterns of agreement. Some languages have no genders, others divide nouns into two genders (e.g. masculine and feminine, animate and inanimate, or rational and non-rational), while still others have more. Some languages have genders that are subtypes of other genders; for example, a language may distinguish between inanimate nouns and animate nouns, and within the animate nouns, between masculine and feminine. Any number of genders and the relationship between them can be described by creating a type hierarchy, below. The hierarchy you define will determine what values of the gender feature are available later in the questionnaire.
Please describe the gender hierarchy in your language. Add all the values of gender that the language's grammar distinguishes. For each you may provide one or more supertypes, using the other gender values you have defined or the root type gender (which will be assumed if no supertype is provided). If your language does not have gender as a grammatical category, leave this section blank.
Hockett, Charles F. 1958. A Course in Modern Linguistics. New York: Macmillan.


{% extends 'base/base.html' %} {% block body %}
This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content.
Ler mais


A plan is a collection of task frames
that provide a solution to a goal.
The goal is defined by a goal-statement that matches a post-condition in a task frame in some ontology.
A plan is instantiated from an ontology that contains the needed frames
by back-chaining from the task that achieves the end-goal through all of the prerequisite tasks.
Plan fromOntology: o1 onGoalStatement: goalStmt.
Sometimes a plan cannot run until certain pre-conditions are satisfied.
The external environment informs the plan of such conditions by invoking ... signalCondition: ...
For example:
plan signalCondition: 'Customer is at front of order-entry-queue.'.
One checks to see if a plan is able to run by invoking
plan isRunnable.
One runs a plan by invoking
plan run.
A plan has helpers. Those helpers include:
A plan executes in an environment. The environment includes:
Different kinds of environments generate goals in different ways. The goal generator depends on the nature of the environment: simulation, real-world, or game.
If the environment is a simulation,
the Simulator will drive the environment.
The Simulator will generate goals and plans and then execute the plans in the simulated environment.
The Simulator needs some specification that defines the generation of goals.
Some kind of schedule or event-generation specification is required.
A schedule could be a simple list of times and goals.
A event-generation specification could be a set of goals with the distribution of arrival times broken down by calendar days and hours.
The event-generation specification could generate a schedule.
The schedule could then be examined and re-run if needed.
It the environment is a real-world environment,
some connection to the real-world is required.
For example, if the business process is operating on a web site,
the Speaker will need to operate the dialog frames via the web.
The dialog frames may then lead to a goal which defines a plan to execute.
When the plan needs user-provided data at for initialization,
the Speaker will ask the on-line user.
When the plan completes,
the Speaker will inform the user (on-line or via e-mail).
The Speaker resembles a web servlet in this context.
The plan's run-time environment resembles a work-flow engine.
(Multiple plans may be operating simultaneously
and plans may be long-running processes.)
If the environment is a game,
the situation resembles a combination of real-world and simulation.
The environment needs a connection to the gamers.
It also needs to generate events related to the simulated world of the game.
Those events could be generated by schedulers or by "sensors" that detect the actions of the gamers in the virtual world of the game.


Consignment Number: ???
Customer Reference: ???
Delivery Due Date: ???
Collection Date: ???
Destination Country: ???
Quantity of pieces: ???
Status Data: