/** * @license AngularJS v1.6.5-build.5353+sha.136a42a * (c) 2010-2017 Google, Inc. http://angularjs.org * License: MIT */ (function(window, angular) {'use strict'; var $resourceMinErr = angular.$$minErr('$resource'); // Helper functions and regex to lookup a dotted path on an object // stopping at undefined/null. The path must be composed of ASCII // identifiers (just like $parse) var MEMBER_NAME_REGEX = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/; function isValidDottedPath(path) { return (path != null && path !== '' && path !== 'hasOwnProperty' && MEMBER_NAME_REGEX.test('.' + path)); } function lookupDottedPath(obj, path) { if (!isValidDottedPath(path)) { throw $resourceMinErr('badmember', 'Dotted member path "@{0}" is invalid.', path); } var keys = path.split('.'); for (var i = 0, ii = keys.length; i < ii && angular.isDefined(obj); i++) { var key = keys[i]; obj = (obj !== null) ? obj[key] : undefined; } return obj; } /** * Create a shallow copy of an object and clear other fields from the destination */ function shallowClearAndCopy(src, dst) { dst = dst || {}; angular.forEach(dst, function(value, key) { delete dst[key]; }); for (var key in src) { if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) { dst[key] = src[key]; } } return dst; } /** * @ngdoc module * @name ngResource * @description * * # ngResource * * The `ngResource` module provides interaction support with RESTful services * via the $resource service. * * *

 * * See {@link ngResource.$resourceProvider} and {@link ngResource.$resource} for usage. */ /** * @ngdoc provider * @name $resourceProvider * * @description * * Use `$resourceProvider` to change the default behavior of the {@link ngResource.$resource} * service. * * ## Dependencies * Requires the {@link ngResource } module to be installed. * */ /** * @ngdoc service * @name $resource * @requires $http * @requires ng.$log * @requires $q * @requires ng.$timeout * * @description * A factory which creates a resource object that lets you interact with * [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources. * * The returned resource object has action methods which provide high-level behaviors without * the need to interact with the low level {@link ng.$http $http} service. * * Requires the {@link ngResource `ngResource`} module to be installed. * * By default, trailing slashes will be stripped from the calculated URLs, * which can pose problems with server backends that do not expect that * behavior. This can be disabled by configuring the `$resourceProvider` like * this: * * ```js app.config(['$resourceProvider', function($resourceProvider) { // Don't strip trailing slashes from calculated URLs $resourceProvider.defaults.stripTrailingSlashes = false; }]); * ``` * * @param {string} url A parameterized URL template with parameters prefixed by `:` as in * `/user/:username`. If you are using a URL with a port number (e.g. * `http://example.com:8080/api`), it will be respected. * * If you are using a url with a suffix, just add the suffix, like this: * `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')` * or even `$resource('http://example.com/resource/:resource_id.:format')` * If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be * collapsed down to a single `.`. If you need this sequence to appear and not collapse then you * can escape it with `/\.`. * * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in * `actions` methods. If a parameter value is a function, it will be called every time * a param value needs to be obtained for a request (unless the param was overridden). The function * will be passed the current data value as an argument. * * Each key value in the parameter object is first bound to url template if present and then any * excess keys are appended to the url search query after the `?`. * * Given a template `/path/:verb` and parameter `{verb:'greet', salutation:'Hello'}` results in * URL `/path/greet?salutation=Hello`. * * If the parameter value is prefixed with `@`, then the value for that parameter will be * extracted from the corresponding property on the `data` object (provided when calling actions * with a request body). * For example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of * `someParam` will be `data.someProp`. * Note that the parameter will be ignored, when calling a "GET" action method (i.e. an action * method that does not accept a request body) * * @param {Object.<Object>=} actions Hash with declaration of custom actions that will be available * in addition to the default set of resource actions (see below). If a custom action has the same * key as a default action (e.g. `save`), then the default action will be *overwritten*, and not * extended. * * The declaration should be created in the format of {@link ng.$http#usage $http.config}: * * {action1: {method:?, params:?, isArray:?, headers:?, ...}, * action2: {method:?, params:?, isArray:?, headers:?, ...}, * ...} * * Where: * * - **`action`** – {string} – The name of action. This name becomes the name of the method on * your resource object. * - **`method`** – {string} – Case insensitive HTTP method (e.g. `GET`, `POST`, `PUT`, * `DELETE`, `JSONP`, etc). * - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of * the parameter value is a function, it will be called every time when a param value needs to * be obtained for a request (unless the param was overridden). The function will be passed the * current data value as an argument. * - **`url`** – {string} – action specific `url` override. The url templating is supported just * like for the resource-level urls. * - **`isArray`** – {boolean=} – If true then the returned object for this action is an array, * see `returns` section. * - **`transformRequest`** – * `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` – * transform function or an array of such functions. The transform function takes the http * request body and headers and returns its transformed (typically serialized) version. * By default, transformRequest will contain one function that checks if the request data is * an object and serializes it using `angular.toJson`. To prevent this behavior, set * `transformRequest` to an empty array: `transformRequest: []` * - **`transformResponse`** – * `{function(data, headersGetter, status)|Array.<function(data, headersGetter, status)>}` – * transform function or an array of such functions. The transform function takes the http * response body, headers and status and returns its transformed (typically deserialized) * version. * By default, transformResponse will contain one function that checks if the response looks * like a JSON string and deserializes it using `angular.fromJson`. To prevent this behavior, * set `transformResponse` to an empty array: `transformResponse: []` * - **`cache`** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the * GET request, otherwise if a cache instance built with * {@link ng.$cacheFactory $cacheFactory} is supplied, this cache will be used for * caching. * - **`timeout`** – `{number}` – timeout in milliseconds.
 * **Note:** In contrast to {@link ng.$http#usage $http.config}, {@link ng.$q promises} are * **not** supported in $resource, because the same value would be used for multiple requests. * If you are looking for a way to cancel requests, you should use the `cancellable` option. * - **`cancellable`** – `{boolean}` – if set to true, the request made by a "non-instance" call * will be cancelled (if not already completed) by calling `$cancelRequest()` on the call's * return value. Calling `$cancelRequest()` for a non-cancellable or an already * completed/cancelled request will have no effect.
 * - **`withCredentials`** - `{boolean}` - whether to set the `withCredentials` flag on the * XHR object. See * [requests with credentials](https://developer.mozilla.org/en/http_access_control#section_5) * for more information. * - **`responseType`** - `{string}` - see * [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType). * - **`interceptor`** - `{Object=}` - The interceptor object has two optional methods - * `response` and `responseError`. Both `response` and `responseError` interceptors get called * with `http response` object. See {@link ng.$http $http interceptors}. * - **`hasBody`** - `{boolean}` - allows to specify if a request body should be included or not. * If not specified only POST, PUT and PATCH requests will have a body. * * @param {Object} options Hash with custom settings that should extend the * default `$resourceProvider` behavior. The supported options are: * * - **`stripTrailingSlashes`** – {boolean} – If true then the trailing * slashes from any calculated URL will be stripped. (Defaults to true.) * - **`cancellable`** – {boolean} – If true, the request made by a "non-instance" call will be * cancelled (if not already completed) by calling `$cancelRequest()` on the call's return value. * This can be overwritten per action. (Defaults to false.) * * @returns {Object} A resource "class" object with methods for the default set of resource actions * optionally extended with custom `actions`. The default set contains these actions: * ```js * { 'get': {method:'GET'}, * 'save': {method:'POST'}, * 'query': {method:'GET', isArray:true}, * 'remove': {method:'DELETE'}, * 'delete': {method:'DELETE'} }; * ``` * * Calling these methods invoke an {@link ng.$http} with the specified http method, * destination and parameters. When the data is returned from the server then the object is an * instance of the resource class. The actions `save`, `remove` and `delete` are available on it * as methods with the `$` prefix. This allows you to easily perform CRUD operations (create, * read, update, delete) on server-side data like this: * ```js * var User = $resource('/user/:userId', {userId:'@id'}); * var user = User.get({userId:123}, function() { * user.abc = true; * user.$save(); * }); * ``` * * It is important to realize that invoking a $resource object method immediately returns an * empty reference (object or array depending on `isArray`). Once the data is returned from the * server the existing reference is populated with the actual data. This is a useful trick since * usually the resource is assigned to a model which is then rendered by the view. Having an empty * object results in no rendering, once the data arrives from the server then the object is * populated with the data and the view automatically re-renders itself showing the new data. This * means that in most cases one never has to write a callback function for the action methods. * * The action methods on the class object or instance object can be invoked with the following * parameters: * * - "class" actions without a body: `Resource.action([parameters], [success], [error])` * - "class" actions with a body: `Resource.action([parameters], postData, [success], [error])` * - instance actions: `instance.$action([parameters], [success], [error])` * * * When calling instance methods, the instance itself is used as the request body (if the action * should have a body). By default, only actions using `POST`, `PUT` or `PATCH` have request * bodies, but you can use the `hasBody` configuration option to specify whether an action * should have a body or not (regardless of its HTTP method). * * * Success callback is called with (value (Object|Array), responseHeaders (Function), * status (number), statusText (string)) arguments, where the value is the populated resource * instance or collection object. The error callback is called with (httpResponse) argument. * * Class actions return empty instance (with additional properties below). * Instance actions return promise of the action. * * The Resource instances and collections have these additional properties: * * - `$promise`: the {@link ng.$q promise} of the original server interaction that created this * instance or collection. * * On success, the promise is resolved with the same resource instance or collection object, * updated with data from server. This makes it easy to use in * {@link ngRoute.$routeProvider resolve section of $routeProvider.when()} to defer view * rendering until the resource(s) are loaded. * * On failure, the promise is rejected with the {@link ng.$http http response} object, without * the `resource` property. * * If an interceptor object was provided, the promise will instead be resolved with the value * returned by the interceptor. * * - `$resolved`: `true` after first server interaction is completed (either with success or * rejection), `false` before that. Knowing if the Resource has been resolved is useful in * data-binding. * * The Resource instances and collections have these additional methods: * * - `$cancelRequest`: If there is a cancellable, pending request related to the instance or * collection, calling this method will abort the request. * * The Resource instances have these additional methods: * * - `toJSON`: It returns a simple object without any of the extra properties added as part of * the Resource API. This object can be serialized through {@link angular.toJson} safely * without attaching AngularJS-specific fields. Notice that `JSON.stringify` (and * `angular.toJson`) automatically use this method when serializing a Resource instance * (see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#toJSON%28%29_behavior)). * * @example * * # Credit card resource * * ```js // Define CreditCard class var CreditCard = $resource('/user/:userId/card/:cardId', {userId:123, cardId:'@id'}, { charge: {method:'POST', params:{charge:true}} }); // We can retrieve a collection from the server var cards = CreditCard.query(function() { // GET: /user/123/card // server returns: [ {id:456, number:'1234', name:'Smith'} ]; var card = cards[0]; // each item is an instance of CreditCard expect(card instanceof CreditCard).toEqual(true); card.name = "J. Smith"; // non GET methods are mapped onto the instances card.$save(); // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'} // server returns: {id:456, number:'1234', name: 'J. Smith'}; // our custom method is mapped as well. card.$charge({amount:9.99}); // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'} }); // we can create an instance as well var newCard = new CreditCard({number:'0123'}); newCard.name = "Mike Smith"; newCard.$save(); // POST: /user/123/card {number:'0123', name:'Mike Smith'} // server returns: {id:789, number:'0123', name: 'Mike Smith'}; expect(newCard.id).toEqual(789); * ``` * * The object returned from this function execution is a resource "class" which has "static" method * for each action in the definition. * * Calling these methods invoke `$http` on the `url` template with the given `method`, `params` and * `headers`. * * @example * * # User resource * * When the data is returned from the server then the object is an instance of the resource type and * all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD * operations (create, read, update, delete) on server-side data. ```js var User = $resource('/user/:userId', {userId:'@id'}); User.get({userId:123}, function(user) { user.abc = true; user.$save(); }); ``` * * It's worth noting that the success callback for `get`, `query` and other methods gets passed * in the response that came from the server as well as $http header getter function, so one * could rewrite the above example and get access to http headers as: * ```js var User = $resource('/user/:userId', {userId:'@id'}); User.get({userId:123}, function(user, getResponseHeaders){ user.abc = true; user.$save(function(user, putResponseHeaders) { //user => saved user object //putResponseHeaders => $http header getter }); }); ``` * * You can also access the raw `$http` promise via the `$promise` property on the object returned * ``` var User = $resource('/user/:userId', {userId:'@id'}); User.get({userId:123}) .$promise.then(function(user) { $scope.user = user; }); ``` * * @example * * # Creating a custom 'PUT' request * * In this example we create a custom method on our resource to make a PUT request * ```js * var app = angular.module('app', ['ngResource', 'ngRoute']); * * // Some APIs expect a PUT request in the format URL/object/ID * // Here we are creating an 'update' method * app.factory('Notes', ['$resource', function($resource) { * return $resource('/notes/:id', null, * { * 'update': { method:'PUT' } * }); * }]); * * // In our controller we get the ID from the URL using ngRoute and $routeParams * // We pass in $routeParams and our Notes factory along with $scope * app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes', function($scope, $routeParams, Notes) { * // First get a note object from the factory * var note = Notes.get({ id:$routeParams.id }); * $id = note.id; * * // Now call update passing in the ID first then the object you are updating * Notes.update({ id:$id }, note); * * // This will PUT /notes/ID with the note object in the request payload * }]); * ``` * * @example * * # Cancelling requests * * If an action's configuration specifies that it is cancellable, you can cancel the request related * to an instance or collection (as long as it is a result of a "non-instance" call): * ```js // ...defining the `Hotel` resource... var Hotel = $resource('/api/hotel/:id', {id: '@id'}, { // Let's make the `query()` method cancellable query: {method: 'get', isArray: true, cancellable: true} }); // ...somewhere in the PlanVacationController... ... this.onDestinationChanged = function onDestinationChanged(destination) { // We don't care about any pending request for hotels // in a different destination any more this.availableHotels.$cancelRequest(); // Let's query for hotels in '<destination>' // (calls: /api/hotel?location=<destination>) this.availableHotels = Hotel.query({location: destination}); }; ``` * */ angular.module('ngResource', ['ng']). info({ angularVersion: '1.6.5-build.5353+sha.136a42a' }). provider('$resource', function ResourceProvider() { var PROTOCOL_AND_IPV6_REGEX = /^https?:\/\/\[[^\]]*][^/]*/; var provider = this; /** * @ngdoc property * @name $resourceProvider#defaults * @description * Object containing default options used when creating `$resource` instances. * * The default values satisfy a wide range of usecases, but you may choose to overwrite any of * them to further customize your instances. The available properties are: * * - **stripTrailingSlashes** – `{boolean}` – If true, then the trailing slashes from any * calculated URL will be stripped.
 * (Defaults to true.) * - **cancellable** – `{boolean}` – If true, the request made by a "non-instance" call will be * cancelled (if not already completed) by calling `$cancelRequest()` on the call's return * value. For more details, see {@link ngResource.$resource}. This can be overwritten per * resource class or action.
 * (Defaults to false.) * - **actions** - `{Object.<Object>}` - A hash with default actions declarations. Actions are * high-level methods corresponding to RESTful actions/methods on resources. An action may * specify what HTTP method to use, what URL to hit, if the return value will be a single * object or a collection (array) of objects etc. For more details, see * {@link ngResource.$resource}. The actions can also be enhanced or overwritten per resource * class.
 * The default actions are: * ```js * { * get: {method: 'GET'}, * save: {method: 'POST'}, * query: {method: 'GET', isArray: true}, * remove: {method: 'DELETE'}, * delete: {method: 'DELETE'} * } * ``` * * #### Example * * For example, you can specify a new `update` action that uses the `PUT` HTTP verb: * * ```js * angular. * module('myApp'). * config(['$resourceProvider', function ($resourceProvider) { * $resourceProvider.defaults.actions.update = { * method: 'PUT' * }; * }); * ``` * * Or you can even overwrite the whole `actions` list and specify your own: * * ```js * angular. * module('myApp'). * config(['$resourceProvider', function ($resourceProvider) { * $resourceProvider.defaults.actions = { * create: {method: 'POST'}, * get: {method: 'GET'}, * getAll: {method: 'GET', isArray:true}, * update: {method: 'PUT'}, * delete: {method: 'DELETE'} * }; * }); * ``` * */ this.defaults = { // Strip slashes by default stripTrailingSlashes: true, // Make non-instance requests cancellable (via `$cancelRequest()`) cancellable: false, // Default actions configuration actions: { 'get': {method: 'GET'}, 'save': {method: 'POST'}, 'query': {method: 'GET', isArray: true}, 'remove': {method: 'DELETE'}, 'delete': {method: 'DELETE'} } }; this.$get = ['$http', '$log', '$q', '$timeout', function($http, $log, $q, $timeout) { var noop = angular.noop, forEach = angular.forEach, extend = angular.extend, copy = angular.copy, isArray = angular.isArray, isDefined = angular.isDefined, isFunction = angular.isFunction, isNumber = angular.isNumber, encodeUriQuery = angular.$$encodeUriQuery, encodeUriSegment = angular.$$encodeUriSegment; function Route(template, defaults) { this.template = template; this.defaults = extend({}, provider.defaults, defaults); this.urlParams = {}; } Route.prototype = { setUrlParams: function(config, params, actionUrl) { var self = this, url = actionUrl || self.template, val, encodedVal, protocolAndIpv6 = ''; var urlParams = self.urlParams = Object.create(null); forEach(url.split(/\W/), function(param) { if (param === 'hasOwnProperty') { throw $resourceMinErr('badname', 'hasOwnProperty is not a valid parameter name.'); } if (!(new RegExp('^\\d+$').test(param)) && param && (new RegExp('(^|[^\\\\]):' + param + '(\\W|$)').test(url))) { urlParams[param] = { isQueryParamValue: (new RegExp('\\?.*=:' + param + '(?:\\W|$)')).test(url) }; } }); url = url.replace(/\\:/g, ':'); url = url.replace(PROTOCOL_AND_IPV6_REGEX, function(match) { protocolAndIpv6 = match; return ''; }); params = params || {}; forEach(self.urlParams, function(paramInfo, urlParam) { val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam]; if (isDefined(val) && val !== null) { if (paramInfo.isQueryParamValue) { encodedVal = encodeUriQuery(val, true); } else { encodedVal = encodeUriSegment(val); } url = url.replace(new RegExp(':' + urlParam + '(\\W|$)', 'g'), function(match, p1) { return encodedVal + p1; }); } else { url = url.replace(new RegExp('(/?):' + urlParam + '(\\W|$)', 'g'), function(match, leadingSlashes, tail) { if (tail.charAt(0) === '/') { return tail; } else { return leadingSlashes + tail; } }); } }); // strip trailing slashes and set the url (unless this behavior is specifically disabled) if (self.defaults.stripTrailingSlashes) { url = url.replace(/\/+$/, '') || '/'; } // Collapse `/.` if found in the last URL path segment before the query. // E.g. `http://url.com/id/.format?q=x` becomes `http://url.com/id.format?q=x`. url = url.replace(/\/\.(?=\w+($|\?))/, '.'); // Replace escaped `/\.` with `/.`. // (If `\.` comes from a param value, it will be encoded as `%5C.`.) config.url = protocolAndIpv6 + url.replace(/\/(\\|%5C)\./, '/.'); // set params - delegate param encoding to $http forEach(params, function(value, key) { if (!self.urlParams[key]) { config.params = config.params || {}; config.params[key] = value; } }); } }; function resourceFactory(url, paramDefaults, actions, options) { var route = new Route(url, options); actions = extend({}, provider.defaults.actions, actions); function extractParams(data, actionParams) { var ids = {}; actionParams = extend({}, paramDefaults, actionParams); forEach(actionParams, function(value, key) { if (isFunction(value)) { value = value(data); } ids[key] = value && value.charAt && value.charAt(0) === '@' ? lookupDottedPath(data, value.substr(1)) : value; }); return ids; } function defaultResponseInterceptor(response) { return response.resource; } function Resource(value) { shallowClearAndCopy(value || {}, this); } Resource.prototype.toJSON = function() { var data = extend({}, this); delete data.$promise; delete data.$resolved; delete data.$cancelRequest; return data; }; forEach(actions, function(action, name) { var hasBody = action.hasBody === true || (action.hasBody !== false && /^(POST|PUT|PATCH)$/i.test(action.method)); var numericTimeout = action.timeout; var cancellable = isDefined(action.cancellable) ? action.cancellable : route.defaults.cancellable; if (numericTimeout && !isNumber(numericTimeout)) { $log.debug('ngResource:\n' + ' Only numeric values are allowed as `timeout`.\n' + ' Promises are not supported in $resource, because the same value would ' + 'be used for multiple requests. If you are looking for a way to cancel ' + 'requests, you should use the `cancellable` option.'); delete action.timeout; numericTimeout = null; } Resource[name] = function(a1, a2, a3, a4) { var params = {}, data, success, error; switch (arguments.length) { case 4: error = a4; success = a3; // falls through case 3: case 2: if (isFunction(a2)) { if (isFunction(a1)) { success = a1; error = a2; break; } success = a2; error = a3; // falls through } else { params = a1; data = a2; success = a3; break; } // falls through case 1: if (isFunction(a1)) success = a1; else if (hasBody) data = a1; else params = a1; break; case 0: break; default: throw $resourceMinErr('badargs', 'Expected up to 4 arguments [params, data, success, error], got {0} arguments', arguments.length); } var isInstanceCall = this instanceof Resource; var value = isInstanceCall ? data : (action.isArray ? [] : new Resource(data)); var httpConfig = {}; var responseInterceptor = action.interceptor && action.interceptor.response || defaultResponseInterceptor; var responseErrorInterceptor = action.interceptor && action.interceptor.responseError || undefined; var hasError = !!error; var hasResponseErrorInterceptor = !!responseErrorInterceptor; var timeoutDeferred; var numericTimeoutPromise; forEach(action, function(value, key) { switch (key) { default: httpConfig[key] = copy(value); break; case 'params': case 'isArray': case 'interceptor': case 'cancellable': break; } }); if (!isInstanceCall && cancellable) { timeoutDeferred = $q.defer(); httpConfig.timeout = timeoutDeferred.promise; if (numericTimeout) { numericTimeoutPromise = $timeout(timeoutDeferred.resolve, numericTimeout); } } if (hasBody) httpConfig.data = data; route.setUrlParams(httpConfig, extend({}, extractParams(data, action.params || {}), params), action.url); var promise = $http(httpConfig).then(function(response) { var data = response.data; if (data) { // Need to convert action.isArray to boolean in case it is undefined if (isArray(data) !== (!!action.isArray)) { throw $resourceMinErr('badcfg', 'Error in resource configuration for action `{0}`. Expected response to ' + 'contain an {1} but got an {2} (Request: {3} {4})', name, action.isArray ? 'array' : 'object', isArray(data) ? 'array' : 'object', httpConfig.method, httpConfig.url); } if (action.isArray) { value.length = 0; forEach(data, function(item) { if (typeof item === 'object') { value.push(new Resource(item)); } else { // Valid JSON values may be string literals, and these should not be converted // into objects. These items will not have access to the Resource prototype // methods, but unfortunately there value.push(item); } }); } else { var promise = value.$promise; // Save the promise shallowClearAndCopy(data, value); value.$promise = promise; // Restore the promise } } response.resource = value; return response; }); promise = promise['finally'](function() { value.$resolved = true; if (!isInstanceCall && cancellable) { value.$cancelRequest = noop; $timeout.cancel(numericTimeoutPromise); timeoutDeferred = numericTimeoutPromise = httpConfig.timeout = null; } }); promise = promise.then( function(response) { var value = responseInterceptor(response); (success || noop)(value, response.headers, response.status, response.statusText); return value; }, (hasError || hasResponseErrorInterceptor) ? function(response) { if (hasError && !hasResponseErrorInterceptor) { // Avoid `Possibly Unhandled Rejection` error, // but still fulfill the returned promise with a rejection promise.catch(noop); } if (hasError) error(response); return hasResponseErrorInterceptor ? responseErrorInterceptor(response) : $q.reject(response); } : undefined); if (!isInstanceCall) { // we are creating instance / collection // - set the initial promise // - return the instance / collection value.$promise = promise; value.$resolved = false; if (cancellable) value.$cancelRequest = cancelRequest; return value; } // instance call return promise; function cancelRequest(value) { promise.catch(noop); timeoutDeferred.resolve(value); } }; Resource.prototype['$' + name] = function(params, success, error) { if (isFunction(params)) { error = success; success = params; params = {}; } var result = Resource[name].call(this, params, this, success, error); return result.$promise || result; }; }); Resource.bind = function(additionalParamDefaults) { var extendedParamDefaults = extend({}, paramDefaults, additionalParamDefaults); return resourceFactory(url, extendedParamDefaults, actions, options); }; return Resource; } return resourceFactory; }]; }); })(window, window.angular);


{% extends 'layout.html' %} {% block pageTitle %} Getting a pension estimate, what age do you want to start taking your pension? {% endblock %} {% block content %}
The earliest age you can start taking your pension is 55, the latest age is 75.


On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}} were engaged.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}} announced their engagement.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}} filed for their marriage license.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}} signed their marriage contract.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}} set the dowry.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}} were married.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}} had a common law marriage.
{{m.other}}
The census at {{m.city}}, {{m.state}} in the county of {{m.county}} on {{m.date1}}, showed the marriage of, {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}}.
{{m.other}}
On {{m.date1}}, {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}} filed for divorce at {{m.city}}, {{m.state}} in the county of {{m.county}} .
{{m.other}}
On {{m.date1}}, {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}} revieved a divorce at {{m.city}}, {{m.state}} in the county of {{m.county}} .
{{m.other}}
On {{m.date1}}, {{vm.data.fullName}} at {{m.city}}, {{m.state}} in the county of {{m.county}} {{vm.data.fullName}} and {{vm.data.spouses[vm.data.curSpouse].fullName}} had the following:
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} was adopted by {{vm.data.fathers[vm.data.curFather].fullName}}.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} born to {{vm.data.father[vm.data.curfather].fullName}} and {{vm.data.mothers[vm.data.curMother].fullName}}
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} was baptized.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} had his Bar Mitzah.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} had her Bah Mitzah.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} was confirmed.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} received hisher blessing affilation.
{{m.other}}
The census at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}} on {{m.date1}}, {{vm.data.fullName}} took hisher first communion.
{{m.other}}
On {{m.date1}}, {{vm.data.fullName}} was christened as an adult at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}.
{{m.other}}
On {{m.date1}}, {{vm.data.fullName}} died at {{m.city}}, {{m.state}} in the county of {{m.county}} ,{{m.country}}.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{vm.data.fullName}} was cremated.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}} the will for {{vm.data.fullName}} was probated.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}} the will for {{vm.data.fullName}} was filed.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}} {{vm.data.fullName}} became a naturalized citizen.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}} {{vm.data.fullName}} emmigrated.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}} {{vm.data.fullName}} immigrated.
{{m.other}}
The census at {{m.city}}, {{m.state}} in the county of {{m.county}} on {{m.date1}}, showed an event for {{vm.data.fullName}}.
{{m.other}}
On {{m.city}}, {{m.state}} in the county of {{m.county}} on {{m.date1}}, {{vm.data.fullName}} graduated.
{{m.other}}
On {{m.date1}}, {{vm.data.fullName}} at {{m.city}}, {{m.state}} in the county of {{m.county}} {{vm.data.fullName}} had the following:
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} changed his name.
{{m.other}}
On {{m.date1}} {{vm.data.fullName}} was described as:
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, the following scholastic information for {{vm.data.fullName}} was found.
{{m.other}}
{{vm.data.fullName}} was a member of the following tribe:
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} had the following occupation.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} had the following items:
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}, {{vm.data.fullName}} was affiliated with the following religion:
{{m.other}}
On {{m.date1}}, {{vm.data.fullName}} lived at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}}.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}} {{vm.data.fullName}} received the following title.
{{m.other}}
On {{m.date1}}, at {{m.city}}, {{m.state}} in the county of {{m.county}}, {{m.country}} {{vm.data.fullName}} was a member of the following caste:
{{m.other}}
On {{m.date1}}, {{vm.data.fullName}} at {{m.city}}, {{m.state}} in the county of {{m.county}} {{vm.data.fullName}} had the following attribute:
{{m.other}}
{{m.theTitle}}
{{m.theTitle}}
{{m.theTitle}}
{{m.theTitle}}


--- layout: default title: Flatter ---
Flatter is a project I worked on with some colleagues through Summer of Tech's 2019 Create Camp. We won the technology prize. The site is active at flatters.herokuapp.com and you can see it in action down below:


You’re Fired
by BRIEFDENVER — Denver attorney and talk show host Craig Silverman says right-wing radio station KNUS fired him in the middle of his show Saturday for criticizing President Trump.
Copyright © 2019 courthousenews.com
DENVER — Denver attorney and talk show host Craig Silverman says right-wing radio station KNUS fired him in the middle of his show Saturday for criticizing President Trump.
Copyright © 2019 courthousenews.com


| 1 Oct 1924 |
Jimmy Carter born, Plains, GA. |
| 6 Jan 1969 |
Jimmy Carter sees an Unidentified
Flying Object in Leary, GA. Also witnessing the craft are his fellow Lions
Club members. But the strangest part about this is, it was Carter and
not Governor Jerry Brown. |
| Nov 1970 |
Elected Governor of Georgia. |
| Nov 1974 |
Loses re-election as Governor of Georgia. |
| 2 Nov 1976 |
Jimmy Carter elected 39th U.S. President. |
| 1976 |
In an interview with Norman Mailer, Jimmy Carter declares: "I don't care if people say fuck." |
| 1979 |
Jimmy Carter's fishing boat is attacked by a swimming rabbit, which the President manages to fend off with an oar. |
| 20 Jul 1979 |
Jimmy Carter signs Executive Order 12148, creating the Federal Emergency Management Administration, or FEMA. |
| 9 Oct 1980 |
John Hinckley arrested in Nashville TN for attempting to bring three handguns onto an airliner. Fined $62.50 plus confiscation of the handguns. President Jimmy Carter was in Nashville at this moment. |
| 27 Apr 1998 |
Submarine U.S.S. Jimmy Carter christened. |
| 12 May 2002 |
Visits Fidel Castro in Cuba. |


Sign up
for the coolest
service ever!


Emacs Keybindings in OS X Nov 02
Some fancy, very simple shortcuts that make a huge difference in text editing productivity.
You can use Emacs keybindings anywhere in OSX to do things like move the cursor to the end of the line, select a word, or start a new line of text.
I had a hard time finding these online, so I worked them out by trial and error:
Ctrl+D : Delete character Ctrl+K : Delete to end of line Ctrl+V : End of document Ctrl+W : Selects word Ctrl+O : Starts new line Ctrl+T : Transpose Ctrl+P : Previous Line Ctrl+N : Next Line Ctrl+F : Forward one character Ctrl+B : Backward one character
This works best is you map your Caps Lock to to the Ctrl key (it's in the System Preferences).
These keybindings keep me away from the arrow keys about 90% of the time, a big win for keyboard ergonomics.


Go to http://repl.it/languages/Python
You should see a white area on the left, and a dark area on the right.
Write your code on the left, then click the 'play' button to run your code.
print("Hello")
Did that work? It should bring "Hello" (without speech marks) to the console.
If you make a mistake, you'll get an error message instead. Try leaving out one of the speech marks, like this:
print("Hello)
Error!
That won't work. An error message appears, and tries to tell you what the problem is. (But it's not always good at explaining.)
Cool, now you know Python!
Let's try printing a picture made out of letters.  Maybe you can draw something better.
You can kind of do math with text:
print("hello" * 5)
Try it.
If we add an empty space inside the speech marks, we'll get a space between the words. Can you see where I've added the space?
print("hello " * 5)
Some kinds of math won't work:
print("hello" - 3)
Error!
You can't do that. You'll have to delete that line before we carry on.
What does the following program print to the screen? See if you can guess correctly before running the program.
print("ha "*4)
print("ba" + "na"*2)
print("He" + "l"*2 + "o" + "!"*10)
Now that you know how to do calculations on text, now what? Why is it useful? Well, let’s say you wanted to draw an ASCII art rectangle that is 30 characters long and 3 characters high. You could either draw it the hard way, like this:
#stop, don't actually type this out!
print("##############################")
print("##############################")
print("##############################")
Or you could save time and draw it the easy way, like this:
#this is the easy way!
print("#" * 30)
print("#" * 30)
print("#" * 30)
Both give you exactly the same rectangle printed to the screen.
You could even use calculations to make interesting patterns, like this wave:
print("/\ "*10)
print(" \/"*10)
That was much easier than typing out the whole pattern!
Your best friend is having an 11th birthday party, and as a gift you've decided to code them a scarf! Use calculations wherever possible to make your own scarf pattern.
If you're feeling generous, you could even code them a cake (including candles) to go with it!


Methods
above()
(above i1 i2 is ...) → image? Constructs an image by placing all of the argument images in a vertical row,
aligned along their centers.
beside()
(beside i1 i2 is ...) → image? Constructs an image by placing all of the argument images in a horizontal row,
aligned along their centers.
besideAlign()
(beside/align y-place i1 i2 is ...) → image?
Constructs an image by placing all of the argument images in a horizontal row,
lined up as indicated by the y-place argument.
circle(radius, mode, penOrColor) → {Shape|promise}
(circle radius mode color) → image? or (circle radius outline-mode pen-or-color) → image?
Parameters:
| Name | Type | Description |
|---|---|---|
radius |
Number | not negative. |
mode |
"solid" | "outline" | 0..255 | solid=255, outline=0, inbetween transparency |
penOrColor |
Pen | Color | a Pen or Color type ctx.lineCap = "butt" || "round" || "square"; ctx.lineJoin = "bevel" || "round" || "miter"; |
Returns:
-
- Type
- Shape
-
- Type
- promise
ellipse()
(ellipse width height mode color) → image?
graphF(f, minX, maxX, color)
graph f(x) between minX and maxX
Parameters:
| Name | Type | Description |
|---|---|---|
f |
function | eg Math.sin |
minX |
Number | left hand starting number |
maxX |
Number | right hand ending number |
color |
color | CSS color |
line(x1, y1) → {Promise}
Constructs an image representing a line segment that connects the points (0,0) to (x1,y1).
Parameters:
| Name | Type | Description |
|---|---|---|
x1 |
pixel | end point from 0 (or start point to 0 if negative) |
y1 |
pixel | end point from 0 (or start point to 0 if negative) |
Returns:
- Type
- Promise
Example
line(30, -30, "red")
overlay()
(overlay i1 i2 is ...) → image?
The first argument goes on top of the second argument,
which goes on top of the third argument, etc.
Parameters:
| Name | Type | Description |
|---|---|---|
angle |
degree |
square()
(square side-len mode color) → image?
text()
(text string font-size color) → image?
Constructs an image that draws the given string, using the font size and color.
Example
text("Hello", 24, "olive")
transparencyFillShape()
A gotcha here is htdp uses a 0..255 byte range whereas JavaScript a 0.0..1.0 range
triangle()
(triangle side-length mode color) → image? Constructs a upward-pointing equilateral triangle.
Type Definitions
Color
Can be a CSS permitted color: keyword, rgb, rgba or hsl
Type:
- String
Pen
(struct pen (color width style cap join)...
Type:
- Object
Properties:
| Name | Type | Description |
|---|---|---|
color |
Color | |
width |
0..255 | |
style |
"solid" | "dot" | "long-dash" | "short-dash" | "dot-dash" | |
cap |
"round" | "projecting" | "butt" | |
join |
"round" | "bevel" | "miter" |


When I think about something for a while, I tend to write about it. I post everything I write at Medium.
The only way to learn from others. I document everything I read at Goodreads.
I stream when I play. It forces me to play through my backlog.
How I pay rent. Most of the code I write is private. But, I do contribute to open source from time to time.
I love presenting although I haven't spoken recently. These talks are all security focused.
I like to travel try new things. Mainly as an excuse to visit places and try their food.


{% extends "layout.html" %} {% block page_title %} SFS {% endblock %} {% block content %} SFS home Hackney Skills & Training Contracts 7 new alerts to review Funding claims 3 new alerts to review Statistics 2 new alerts to review Sub-contracting 7 new alerts to review Apprenticeship Service {% endblock %}


2 DAYS IN THE VALLEY (1996) A film review by Steve Rhodes Copyright 1996 Steve Rhodes
RATING (0 TO ****): ***
Last year Robert Altman brought us his delightful SHORT CUTS. That film is formed out of a set of seemly unrelated stories that find their way together.
Similarly in 2 DAYS IN THE VALLEY, writer and director John Herzfeld weaves us a tale of strange and apparently unrelated characters. Herzfeld's characters border on the bizarre, and yet each is endearing. The context that will bring them all together and provide the hook for the audience is a murder. The mystery is why was the person killed.
By midway you have learned the mystery's answer, but by then you are wrapped up in the story and must know how all of the mini-dramas that have burst forth will be resolved. In short, the characters are all compelling, and except for the one completely bad guy, you empathize and care about them all. As for the one pure villain, he is carefully drawn and quite effective.
As the movie starts, many parallel stories begin to blossom. In the first, two hit men, Lee (James Spader) and his partner Dosmo (Danny Aiello), break into Roy Fox (Peter Horton) and his ex wife, Becky Fox's (Teri Hatcher), bedroom in the middle of the night. Lee is fond of sticking his stop watch in front of people's eyes and giving them exactly one minute to do whatever he tells them. Roy flunks the one minute pop quiz about Korean espionage and is terminated. Becky has been drugged into unconsciousness and thus is unable to help him with the answers.
At the same time vice cops Alex (Jeff Daniels) and his partner Wes (Eric Stoltz) are trying to bust a massage parlor, but Wes develops too soft a heart so the bust is a bust. Alex wants to be a homicide detective but has been stuck in the wrong jobs in the police department for the last ten years.
Lee goes back to his motel room where his girlfriend and coconspirator Helga (Charlize Theron) are staying. They engage in some very impressive sex which again features his infamous stop watch.
Across town art dealer Alan Hooper has a kidney stone attack in the middle of the street.
A despondent, highly unsuccessful, but extremely sweet writer and director, Teddy (played by real life writer, director and actor Paul Mazursky), is trying to find someone to take care of his little dog.  He is helped by nurse Audrey (Marsha Mason) who says his dog can come to live at her brother Alan's house since he is an art dealer and has lots of room.
Dosmo ends up holding the art dealer and his secretary (Glenne Headly) hostage. Dosmo is a sensitive hit man, and Headly thinks she recognizes him from somewhere. At any rate, Dosmo fixes everyone some pasta using his favorite recipe.
Back at the crime scene, our vice cops get to help out until Doug (Keith Carradine) comes along. Doug is a real homicide cop so he sends the amateurs away.
This all happens in the first ten minutes or so. The rest of the picture has all of these characters revealing themselves and getting more and more intertwined.
The script is great. The art dealer is a real pain. He tells his personal secretary that she needs liposuction and perhaps some silicon implants, and he would be happy to pay for it. This is not a come on, he is just a fastidious type. He has already paid to have her nose fixed. If you are rich enough, the moral seems to be that even your middle-aged secretary should be flawless.

Every character has a story to tell. None are one dimensional. We learn that Becky Fox is an Olympic skier with an obsessive training program, but she has never finished higher than fourth place.
The acting is excellent. One of my favorite small scenes is at the cemetery where Teddy is about to blow his brains out, but his cute little dog just keeps looking at him with complete love and adoration. The dog's innocence and ignorance is so poignant.
This intricate story all comes together nicely. The overall mystery is not predictable nor are a lot of the minor dramas. The parts of the show that are predictable are still compelling. Although I thought the picture was weird when it began, I soon got into its rhythms and loved it. I got to know a fascinating group of people, and what more should one ask of a movie.
2 DAYS IN THE VALLEY runs about two hours. It is rated R. There is sex, nudity, violence and bad language. On an offensive scale, they would all score pretty low, and I think the film would be fine for most teenagers. I recommend this quirky but rewarding little mystery and character study to you, and I give it ***.
**** = One of the top few films of this or any year. A must see film. *** = Excellent show. Look for it. ** = Average movie. Kind of enjoyable. * = Poor show.  Totally unbearable.
REVIEW WRITTEN ON: August 22, 1996
Opinions expressed are mine and not meant to reflect my employer's.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


AC Service And Repair
Washing Machine Service & Repair
RO Or Water Purigier Repair
Refrigerator Repair
Microwave Oven Repair
Gas Cooktops Service & Repair
Flour Mill Repair


Engineer - Developer - Innovator
Welcome! My name is Harsh Guraya.
I am entering my fourth year of Electrical & Biomedical Engineering at Mcmaster University in Canada.
I've always been fascinated by the potential of technology to revolutionize the world, especially within the software industry where millions of lives can be improved through innovation.
I am an avid learner who is always open to taking on new challenges. For now, i'm attempting to gain as much experience as possible. You can learn more about my education, work experience, and extra cirricular involement by scrolling below. Thanks for taking the time to view my website!


Shock and Awe
Shock and Awe is a movie starring Woody Harrelson, James Marsden, and Rob Reiner. A group of journalists covering former President George W. Bush's planned invasion of Iraq in 2003 are skeptical of the President's claim that Saddam...


I’m not going to lie – I found this week’s assignment really, really difficult. More on that later.
Nearly all of the coding I’ve done has been in front-end web development. I like playing with HTML structure and seeing what I can do with CSS. Lately, I’ve been creating a blog template which added some significant PHP and jQuery. I enjoy working in text editors, the command line, and the development tools in Chrome. I like text.
Scratch is the complete opposite. Everything you do is represented with graphics. Loops are large brackets which take blocks of code, operators modify events as different shapes…I didn’t find it very intuitive, to be completely honest. I spent most of my time trying to remember which color corresponded with which shape so I could get into the correct menu. There was a lot of clicking, a lot of eye rubbing, and more than one trip away from the computer to clear my head.
The entire process of programming in Scratch is rooted in abstraction and decomposition. I know what actions I want the sprite to make, but in order to get that to happen, I need to think through each and every step leading up to the result. Once I had an idea of what steps needed to be accomplished, it was time to put them into sequence and think about how to chunk the project up.
I started with a small drawing program. It isn’t very advanced…but it took me a while to get through because I had to think through each block and what it was doing step by step.
After adding each command, I would test the program…then debug. Rinse. Wash. Repeat.
It still amazes me how much the final product changes from the initial idea. At first, I wanted the sprite to jump around the page, drawing random lines to see what could be generated by chance alone. That isn’t much fun for the user, so I moved it to a follow-the-mouse game. A concept I remember from my art classes is continuous-line drawing, where you draw without lifting the tip of the pencil. I always enjoyed that style, so I decided to put it into a little game you can play.
creative commons licensed ( BY ) flickr photo shared by Asbestos Bill
Now that I have some chops, I went back to the game-of-chance idea. This game is based on luck alone, and it came from the “do something surprising” prompt in the Creative Computing handbook.
This project threw a new loop at me (get it? loop?) and I really struggled with writing separate scripts for each individual sprite in the editor. I expected one main editing interface, and was really confused about where my scripts would go as I added sprites and backdrops. Again, I think this goes back to my experience with written code and managing everything in the flow of one document. (If you’re curious, this is called “object-oriented programming,” something I’m familiar with, but not nearly competent in.) So, this exercise turned into a major learning experience for me.
I found myself – again – digging through, step by step, experimenting and testing, until I found patterns that I could build off of.
It’s important to remember that Computational Thinking is all about the problem-solving process.
I was sketching diagrams, talking out loud, and looking at other examples as I figured out where I was failing. The great thing about computers is that we can rapidly implement ideas and iterate toward a working solution…they help us quickly isolate problems and work toward solutions. So, the computer is extending not only our creative capabilities, it’s helping us refine those ideas in an efficient way.
We can emulate that process in any activity, especially in the classroom.
It’s important to remember the struggle we feel I felt during this exercise is how someone feels daily in my classroom. Patience, empathy, and understanding the components of working through problems are essential for me as a leader and equally essential for students to learn.
Leave a comment


Power analysis is used in the estimation of sample sizes for experimental designs. Most programs and R packages will only output the highest recommended sample size to the user. Often the user input can be complicated and computing multiple power analyses for different treatment comparisons can be time consuming. This package simplifies the user input and allows the user to view all of the sample size recommendations or just the ones they want to see. The calculations used to calculate the recommended sample sizes are from the 'pwr' package.
| Version: | 1.0.1 |
| Imports: | pwr (≥ 1.1-3) |
| Suggests: | knitr |
| Published: | 2015-11-06 |
| Author: | Aaron McGarvey |
| Maintainer: | Aaron McGarvey <amcgarve at mail.uoguelph.ca> |
| License: | GPL (≥ 3) |
| NeedsCompilation: | no |
| In views: | ExperimentalDesign |
| CRAN checks: | easypower results |
| Reference manual: | easypower.pdf |
| Vignettes: |
Factorial ANOVA Examples |
| Package source: | easypower_1.0.1.tar.gz |
| Windows binaries: | r-devel: easypower_1.0.1.zip, r-release: easypower_1.0.1.zip, r-oldrel: easypower_1.0.1.zip |
| OS X binaries: | r-release: easypower_1.0.1.tgz, r-oldrel: easypower_1.0.1.tgz |
Please use the canonical form https://CRAN.R-project.org/package=easypower to link to this page.


#
INFO 610 Fall 2019
Week 11, Nov 5, 2019
REST, Data, Insert
chrisfauerbach.github.io/info610_fall_2019/
--- # What's an API?
* Application Programming Interface * Act as a common interface between systems --- # REST Functions
Method
Purpose
GET
Retrieve
POST
Create
PUT
Replace
PATCH
Update
DELETE
Delete
--- # HTTP GET * Collection: Retrieve the URIs of the member resources of the collection resource in the response body. ```bash $ curl https://api.example.com/collection/ [{"id":1},{"id":2}] ``` * Resource: Retrieve representation of the member resource in the response body. ```bash $ curl https://api.example.com/collection/1 {"id":1,"name":"item1", "created":"01/01/2001 00:00:00Z"} ``` --- # HTTP POST * Create a member resource in the member resource using the instructions in the request body. * The URI of the created member resource is automatically assigned and returned in the response ```bash $ curl -XPOST -H "Content-Type: application/json" \ http://api.example.com/collection -d '{"name":"item3"}' {"id":3,"name":"item3", "created":"01/01/2001 00:00:00Z"} ``` --- # HTTP PUT * Replace all the representations of the member resource or create the member resource if it does not exist, with the representation in the request body. ```bash $ curl -XPUT -H "Content-Type: application/json" \ http://api.example.com/collection/3 -d '{"name":"newNameItem3"}' {"id":3,"name":"newNameItem3", "created":"01/01/2001 00:00:00Z"} ``` --- # HTTP PATCH * Update all the representations of the member resource, or may create the member resource if it does not exist, using the instructions in the request body. Different between PATCH and PUT - PUT replaces the entire document. PATCH updates only 'fields' specified in update. --- # HTTP DELETE * Delete all the representations of the member resource. ```bash $ curl -XDELETE https://api.example.com/collection/1 {"status":"ok"} ``` --- # Mapping REST to SQL
Method
Purpose
SQL
GET
Retrieve
SELECT
POST
Create
INSERT
PUT
Replace
UPDATE *
PATCH
Update
UPDATE *
DELETE
Delete
DELETE
\* UPSERT! --- # Upsert * "UPSERT" is a DBMS feature that allows a DML statement's author to atomically either insert a row, or on the basis of the row already existing, UPDATE that existing row instead, while safely giving little to no further thought to concurrency. * One of those two outcomes must be guaranteed, regardless of concurrent activity, which has been called "the essential property of UPSERT". ```sql INSERT INTO users (id, name) VALUES ('fbdf0e604e', 'chris.fauerbach') ON CONFLICT DO UPDATE SET name='chris.fauerbach'; ``` --- # Back to the python ```python # Adding GET @app.route('/country/
', methods=['GET']) def get_country(id): conn = psycopg2.connect(dbname="postgres", user="postgres", password="postgres", host="localhost", port=5432) cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) cur.execute("SELECT * FROM country WHERE country_id = %s;", (id, )) res = cur.fetchone() cur.close() conn.close() return res # Adding DELETE @app.route('/country/
', methods=['DELETE']) def del_country(id): conn = psycopg2.connect(dbname="postgres", user="postgres", password="postgres", host="localhost", port=5432) cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) cur.execute("DELETE FROM country WHERE country_id = %s;", (id, )) res = cur.fetchone() cur.close() conn.close() return res ``` --- # DRY - Donate Repeat Yourself --- # --- # --- # --- # --- # --- # --- # --- # --- #


This project is mainly focusing on health-related problems. Chatbots in healthcare would be useful during this COVID-19 pandemic, the most domain NLP Platform which is used was Dialog flow and Front end for integration. AI-powered chatbots can be used to trigger patients and guide them to receive the appropriate help. Chatbots are considered a more reliable and accurate alternative to online searches patients carry out when they’re trying to understand the cause of their symptoms. It can understand user queries.


Emergencies with your home.
Making a plan and being prepared are key to resilience. Here's some tips on how to prepare, what to do if disaster strikes and how to get back to normal as soon as possible afterwards.
Flood advice.
Think about flooding before it happens. Over five million people live in flood risk areas in the UK, so make sure you are prepared. Sign up for free flood warnings and create a personal flood plan.
-
Call Floodline.
Check if your home is at risk. Floodline provides warning information and general advice 24 hours a day on 0345 988 1188.
-
If you are at risk.
Choose furnishings that can be easily removed to store at higher levels.
-
Prevent floodwaters.
Buy unfilled sandbags and fill with sand from builders merchants. Consider other types of barriers that might prevent flood water coming into your home through airbricks, doors and windows.
-
Learn how to turn off your mains supply.
Find out how to turn off your electricity, gas and water in advance.
-
Alert neighbours.
Check that elderly and vulnerable people are ok if its safe to do so.
-
Don't walk, swim or drive through floodwater.
Keep your family and pets indoors and away from flood waters. Floods are dangerous, you can get swept over in as little as six inches and the water may be contaminated with sewage.
-
Don't walk on riverbanks and sea defences.
Don't be tempted to see where the flooding is occurring as the water can rise rapidl.y
-
Turn off mains supplies.
Turn off gas, electricity and water.
-
If you need to evacuate.
If the emergency services ask you to leave, shut your windows and lock doors.  The council will find you somewhere on a temporary basis.
-
Only return once safe.
Take care if driving or walking through floodwater for hidden dangers such as raised manhole covers. Do not step in puddles of standing water if power lines are down outside your home.
-
Check for safety.
Don't use electrical and gas appliances until they have been declared safe. Boil tap water until the water supply has been declared safe for consumption.
-
Contact your insurer.
Take photos that clearly show the water damage to your home and contents. Do not start cleaning until they have assessed the damage.
-
Cleaning up.
After the insurer completes their assessment, ensure all standing water has been removed particularly under the floors. Remove all damaged carpets but keep samples for the insurers. Wear protective clothes and a standard face mask while disinfecting all affected areas with a brush, hot soapy water and disinfectant.
Fire.
There are thousands of house fires each year, many of which are preventable.
-
Fit a smoke detector on every floor.
Check the smoke alarm every week and never disable them
-
Take extra care in the kitchen.
Make sure appliances such as hobs are turned off after use.
-
Turn off portable heaters.

-
Be careful with naked flames.
Take care to extinguish candles, cigarettes and fires.
-
Don't overload sockets
-
Plan an escape route and make sure everyone knows it.
Make sure its kept clear at all times and door keys are easy to find.
-
Get out and stay out.
Don't enter a burning building.
-
Call emergency services.
Dial 999
-
Leave safely.
If a door feels hot don't open it. Never use a lift.
-
If trapped.
If smoke, heat or flames block your exit stay in the room with the door closed. Put a wet towel under the door and call 999 Wave brightly coloured cloth or use a torch to signal for help
-
Confirm it's safe.
Never re-enter your home until the fire service has confirmed it's safe.
-
Contact your insurance company as soon possible.
You may need to arrange temporary accommodation. Contact the mains gas, electricity and water suppliers.
Power Cut.
-
Find where your fusebox is.
When the power goes out you need to check if it's a problem in your house or a power cut
-
Have a windup torch in your emergency pack.
When the power is out you'll need a torch.
-
Check if your neighbours have electricity.
If they don't, it's likely that the fault is on the electricity network.
-
Prevent a spike.
Turn off and unplug all electrical equipment. Sensitive electronics can be damaged when the electricity comes back on.
-
Leave a light on.
So you know when the power is back on.
-
Check when the power may be restored.
You can check your outages here
-
Stay safe.
Do not touch downed electrical power lines and keep your family and pets away.
-
Check your freezer.
If food in freezer is colder than 4degrees C and has ice crystal on it, you can refreeze it.
-
Find out more
-
Affiliates
-
Stay in touch


Formation mechanism of Co 3O 4/TiO 2 hierarchical heterostructures. SEM images of Co 3O 4/TiO 2 hierarchical heterostructures (before annealing) at various reaction stages by setting the reaction time 1 h (a), 1.5 h (b), 2 h (c), 4 h (d), 6 h (e), and 9 h (f). And schematic of the formation process of Co 3O 4/TiO 2 hierarchical heterostructures (g).


 This is a film of comedy and pathos as well as horror. Billy Bob Thornton, co-writer of ONE FALSE MOVE, writes, directs, and stars in one terrific film. The plot may be a bit straightforward but the film is an audience- pleaser. It is a well-observed film about life in an Arkansas town. Expect to enjoy this one. Rating: +3 (-4 to +4) New York Critics: 15 positive, 2 negative, 1 mixed
Very little seen but central to the film TO KILL A MOCKINGBIRD is the figure of Boo Radley, played by Robert Duvall in his theatrical cinema debut. For years Radley has been his town's legendary monster stemming from an act of seemingly senseless violence against his own family. Radley is, in reality, a simple and likable man who redeems himself by another act of violence, a revolt against the hatred of others. Radley is not responsible for his own violence, but focuses the callousness and evil around him, redirecting it back at its origin. A nearly identical character--right down to having his shirt sleeves too long--is Karl Childers, the center of an enigmatic black comedy that is at times horrifying and at others amiable. SLING BLADE was written by, directed by, and stars Billy Bob Thornton. It is an expansion of the short film "Some Folks Call It a Sling Blade," directed by George Hickenlooper but also written by and directed by Thornton. In both films he plays Karl Childers a patient in an Arkansas state mental institution. Life there would not be bad if he did not have to be immersed in the sadistic sexual recountings of another patient, a predator played superbly by J. T. Walsh.
Karl is given a chance to tell his own story to a visiting reporter and though presented in a horrifying manner we begin to see Karl as a victim, yet somehow one without an ounce of self-pity. If we blame Karl's parents for his condition, it is our decision and not Karl's. Karl remains completely dispassionate about his past and his ability to do so makes his even more disturbing. Maintaining through the film a stone-like face with jutting lower lip he never shows any emotion. We are never sure what is happening behind that face and indeed when one of the characters probes later in the film we find it is either nothing or more likely it is well-hidden. Reportedly up to Karl telling his own story was all there was to Hickenlooper's original short film, but Thornton was apparently intrigued by the character he had written and played. SLING BLADE continues the story with Karl being released into what is for him a bewildering world.
Karl is out for just a few hours when he befriends a boy about twelve, Frank (Lucas Black) with roughly Karl's own mental capacity. Karl and the unquestioning Frank become fast friends and he is accepted almost as a family member in Frank's distressed family. That Frank's mother Linda (Natalie Canderday) accepts Karl seems almost more believable than her acceptance of her own abusive boy friend Doyle (Dwight Yoakam).
The plot from this point follows a predictable path, but the story is not as important as the style and the textured look at life in a small Arkansas town. One can tell when a script is respected by the people who agree to be in small roles in the film. In SLING BLADE one spots several familiar faces in tiny roles including Jim Jarmusch as an ice cream stand boy and Robert Duvall in a tiny part as Karl's father, perhaps as an allusion to his own Boo Radley role. The photography is usually a bit straightforward and not as interesting as it could be, but as a first-time director Thornton has a sure hand. And he writes a script that is by turns sad, horrifying, and funny. If the ending is a little too neat, it also is clever and ironic.
The subject matter may not be to everybody's taste but the film is a winner on just about all counts. Rate this one a +3 on the -4 to +4 scale.
Mark R. Leeper<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Filter by date
Day
Month
Year
Filter applied:
0 items
matched.
View updated timeline
Reset
timeline filter
2020-05-22
Brownfield collector
.
No new resources collected.
2020-05-21
Brownfield collector
.
3 new resources collected.
2020-05-20
Error
Brownfield collector
.
No run information available.
2020-05-19
!
Brownfield collector
.
3 issues with the endpoints.
2020-04-22
Brownfield collector
.
No new resources collected.
2020-04-21
Brownfield collector
.
3 new resources collected.
2020-04-20
Error
Brownfield collector
.
No run information available.
2020-04-19
!
Brownfield collector
.
3 issues with the endpoints.
2020-03-06
Brownfield collector
.
No new resources collected.
2020-03-05
Brownfield collector
.
3 new resources collected.
2020-03-04
Error
Brownfield collector
.
No run information available.
2020-03-03
!
Brownfield collector
.
3 issues with the endpoints.


--- layout: default --- {% comment %} This layout is used by the jekyll-archives plugin to generate tag pages for all tags found in documents {% endcomment %} {% include breadcrumbs.html %}


8
allowed in a character class are the hyphen (“
-
”) and circumflex (“
^
”). When used between two
characters the hyphen represents a range of characters. The circumflex, when used as the first
character, negates the expression. If two patterns match the same string, the longest match wins.
In case both matches are the same length, then the first pattern listed is used.
... definitions ...
%%
... rules ...
%%
... subroutines ...
Input to Lex is divided into three sections with
%%
dividing the sections. This is best illustrated by
example. The first example is the shortest possible lex file:
%%
Input is copied to output one character at a time. The first
%%
is always required, as there must
always be a rules section. However if we don’t specify any rules then the default action is to match
everything and copy it to output. Defaults for input and output are
stdin
and
stdout
, respectively.
Here is the same example with defaults explicitly coded:
%%
/* match everything except newline */
.
ECHO;
/* match newline */
\n
ECHO;
%%
int yywrap(void) {
return 1;
}
int main(void) {
yylex();
return 0;
}
Two patterns have been specified in the rules section. Each pattern must begin in column one. This
is followed by whitespace (space, tab or newline) and an optional action associated with the pattern.
The action may be a single C statement, or multiple C statements, enclosed in braces. Anything
not starting in column one is copied verbatim to the generated C file. We may take advantage of
this behavior to specify comments in our lex file. In this example there are two patterns,
“
.
” and
“
\n
”, with an
ECHO
action associated for each pattern. Several macros and variables are
predefined by lex.
ECHO
is a macro that writes code matched by the pattern. This is the default
action for any unmatched strings. Typically,
ECHO
is defined as:
#define ECHO fwrite(yytext, yyleng, 1, yyout)
Variable
yytext
is a pointer to the matched string (NULL-terminated) and
yyleng
is the length of
the matched string. Variable
yyout
is the output file and defaults to stdout. Function
yywrap
is
called by lex when input is exhausted. Return 1 if you are done or 0 if more processing is required.
Every C program requires a
main
function. In this case we simply call
yylex
that is the main entry-
point for lex. Some implementations of lex include copies of
main
and
yywrap
in a library thus
eliminating the need to code them explicitly. This is why our first example, the shortest lex program,
functioned properly.


Without web-service support, an action which collects the data for displaying a list of people might look something like this:
def list @people = Person.find(:all) end
Here’s the same action, with web-service support baked in:
def list @people = Person.find(:all) respond_to do |wants| wants.html wants.xml { render :xml => @people.to_xml } end end
What that says is, "if the client wants HTML in response to this action, just respond as we would have before, but if the client wants XML, return them the list of people in XML format." (Rails determines the desired response format from the HTTP Accept header submitted by the client.)
Supposing you have an action that adds a new person, optionally creating their company (by name) if it does not already exist, without web-services, it might look like this:
def add @company = Company.find_or_create_by_name(params[:company][:name]) @person = @company.people.create(params[:person]) redirect_to(person_list_url) end
Here’s the same action, with web-service support baked in:
def add company = params[:person].delete(:company) @company = Company.find_or_create_by_name(company[:name]) @person = @company.people.create(params[:person]) respond_to do |wants| wants.html { redirect_to(person_list_url) } wants.js wants.xml { render :xml => @person.to_xml(:include => @company) } end end
If the client wants HTML, we just redirect them back to the person list. If they want Javascript (wants.js), then it is an RJS request and we render the RJS template associated with this action. Lastly, if the client wants XML, we render the created person as XML, but with a twist: we also include the person’s company in the rendered XML, so you get something like this:
<person> <id>...</id> ... <company> <id>...</id> <name>...</name> ... </company> </person>
Note, however, the extra bit at the top of that action:
company = params[:person].delete(:company) @company = Company.find_or_create_by_name(company[:name])
This is because the incoming XML document (if a web-service request is in process) can only contain a single root-node. So, we have to rearrange things so that the request looks like this (url-encoded):
person[name]=...&person[company][name]=...&...
And, like this (xml-encoded):
<person> <name>...</name> <company> <name>...</name> </company> </person>
In other words, we make the request so that it operates on a single entity—a person. Then, in the action, we extract the company data from the request, find or create the company, and then create the new person with the remaining data.
Note that you can define your own XML parameter parser which would allow you to describe multiple entities in a single request (i.e., by wrapping them all in a single root note), but if you just go with the flow and accept Rails’ defaults, life will be much easier.
If you need to use a MIME type which isn’t supported by default, you can register your own handlers in environment.rb as follows.
Mime::Type.register "image/jpg", :jpg
[ show source ]
# File vendor/rails/actionpack/lib/action_controller/mime_responds.rb, line 101 101: def respond_to(*types, &block) 102: raise ArgumentError, "respond_to takes either types or a block, never bot" unless types.any? ^ block 103: block ||= lambda { |responder| types.each { |type| responder.send(type) } } 104: responder = Responder.new(block.binding) 105: block.call(responder) 106: responder.respond 107: end


... by Andrew Birkett<EMAIL_ADDRESS>If you are lazy, skip the explanation and jump to the table at the bottom of the page
When you compile programs with DevStudio in debug mode, all of your calls to malloc() and free() use a special "debug" implementation. Rather than being blazingly fast, the debug heap concerns itself with spotting heap errors. It achieves this by surrounding your memory blocks with guard bytes (aka "no mans land", 0xFD) so that it can detect buffer overruns and underruns. It also initialises newly allocated memory to a fixed value (0xCD) to aid reproducability. Finally, it sets free()d blocks to a known value (0xDD) so that it can detect that people are writing through dangling pointers.
Mnemonics for remembering what each fill-pattern means:
The debug CRT heap defers most of the heavy work to the Win32 heap functions HeapAlloc() and HeapFree(). Therefore, you won't see any first-fit or "buddy system" code in the debug CRT. The 4Gb virtual memory space which you process has is sliced up and managed by the Win32 heap inside kernel32.dll.
If you call malloc(8), the debug CRT will request a 48 byte block from HeapAlloc(). It needs the extra 40 bytes to store information about the memory blocks - such as the file/line where malloc() was called, and space for links to the next/prev heap block. In the table below, all of the debug CRT information is colored in shades of red.
HeapAlloc() itself needs bookkeeping information. The HeapAlloc(40) call will, in turn, reserve a total of 80 bytes from your process's address space. Eight bytes of bookkeeping appear below the requested 40 bytes, and the other 32 bytes appear above it. In the table below, the Win32 heap bookkeeping is colored grey. The memory which you get back from HeapAlloc() is always initialised to the 4 byte pattern 0xBAADF00D.
(As an aside, when you request pages from the VM manager via VirtualAlloc, they are initialized to zero, so HeapAlloc is actually doing additional work to re-initialize them to this pattern).
Once the debug CRT has got it's 40 byte block, it will fill in it's book-keeping information. The first 2 words are links to the previous and next blocks on the CRT heap. The choice of names is confusing, because the "next" pointer actually takes you the block which was allocated before this one chronologically, while the "previous" pointer takes you to the one allocated subsequently. The reason for the naming is that the linked list starts at the last-allocated block, and progresses back in time as you follow "next" links. The debug CRT heap also internally maintains pointers to the first and last blocks (_pFirstBlock and _pLastBlock) to allow heap-checking code to traverse all the blocks.
If the filename and line number of the malloc() call are known, they are stored in the next 2 words. Following that, the next word tells you how many bytes were requested. The next word gives a type field. Usually this is "1" which means a normal block, allocated by malloc/new. It will be "2" for blocks allocate by the CRT for its own internal purposes, and "0" for blocks which have been freed but not released back to the win32 heap (see below for more info). The final word is a simple counter which increases everytime an allocation is made.
Surrounding the 8-byte malloc()'d memory there are areas of "no mans land". These are filled with a known value (0xFD), and when the block is free()d, the CRT will check that they still have the right value. If they've changed, then your program contains an error. Unfortunately, the corruption may have happened a long time ago. You can use Purify or Boundschecker to stop at the corruption point, or if you don't fancy spending any money, you can wait a few days until I write an article telling you how to do it using only a bit of ingenuity!
The eight bytes which were originally requested are initialised with 0xCD. If you see this pattern appearing in your variables, you have forgotten to initialise something.
When you call free() on the 8-byte block, the CRT sets the whole 48-byte block (including its bookkeeping) to 0xDDDDDDDD. This means that it can tell if the block gets subsequently altered (ie. via a dangling pointer) by checking that the pattern is still there.
At this point, two things can happen. Normally, HeapFree() will be called to return the block to the win32 heap. This causes the block to be overwritten with the win32 heap's "freed memory" pattern, which is 0xFEEEFEEE. Note that the debug CRT does not maintain any "free lists" - all of that is done within the black box of HeapFree().
However, you can also tell the debug heap to keep hold of free()d blocks. You do this by passing the _CRTDBG_DELAY_FREE_MEM_DF flag to _CrtSetDbgFlag(). In this case, the debug CRT will keep hold of the block. This is useful if you are trying to track down a dangling pointer error, since memory blocks will not be reused and you should expect them to remain filled with 0xDDDDDDDD unless someone is writing to the free()d block. You can call _CrtCheckMemory() and it will tell you if any of these values have been tampered with.
I called malloc(8) followed by free() and stepped through the CRT calls to see how the memory was changed. Read the columns from left to right, and you will see what values appear in memory at various stages during malloc() and free(). The call to malloc(8) returned a block at address 0x00321000, and I've included offsets from that address so that you can find out the information for one of your allocations.
| Address | Offset | After HeapAlloc() | After malloc() | During free() | After HeapFree() | Comments |
| 0x00320FD8 | -40 | 0x01090009 | 0x01090009 | 0x01090009 | 0x0109005A | Win32 heap info |
| 0x00320FDC | -36 | 0x01090009 | 0x00180700 | 0x01090009 | 0x00180400 | Win32 heap info |
| 0x00320FE0 | -32 | 0xBAADF00D | 0x00320798 | 0xDDDDDDDD | 0x00320448 | Ptr to next CRT heap block (allocated earlier in time) |
| 0x00320FE4 | -28 | 0xBAADF00D | 0x00000000 | 0xDDDDDDDD | 0x00320448 | Ptr to prev CRT heap block (allocated later in time) |
| 0x00320FE8 | -24 | 0xBAADF00D | 0x00000000 | 0xDDDDDDDD | 0xFEEEFEEE | Filename of malloc() call |
| 0x00320FEC | -20 | 0xBAADF00D | 0x00000000 | 0xDDDDDDDD | 0xFEEEFEEE | Line number of malloc() call |
| 0x00320FF0 | -16 | 0xBAADF00D | 0x00000008 | 0xDDDDDDDD | 0xFEEEFEEE | Number of bytes to malloc() |
| 0x00320FF4 | -12 | 0xBAADF00D | 0x00000001 | 0xDDDDDDDD | 0xFEEEFEEE | Type (0=Freed, 1=Normal, 2=CRT use, etc) |
| 0x00320FF8 | -8 | 0xBAADF00D | 0x00000031 | 0xDDDDDDDD | 0xFEEEFEEE | Request #, increases from 0 |
| 0x00320FFC | -4 | 0xBAADF00D | 0xFDFDFDFD | 0xDDDDDDDD | 0xFEEEFEEE | No mans land |
| 0x00321000 | +0 | 0xBAADF00D | 0xCDCDCDCD | 0xDDDDDDDD | 0xFEEEFEEE | The 8 bytes you wanted |
| 0x00321004 | +4 | 0xBAADF00D | 0xCDCDCDCD | 0xDDDDDDDD | 0xFEEEFEEE | The 8 bytes you wanted |
| 0x00321008 | +8 | 0xBAADF00D | 0xFDFDFDFD | 0xDDDDDDDD | 0xFEEEFEEE | No mans land |
| 0x0032100C | +12 | 0xBAADF00D | 0xBAADF00D | 0xDDDDDDDD | 0xFEEEFEEE | Win32 heap allocations are rounded up to 16 bytes |
| 0x00321010 | +16 | 0xABABABAB | 0xABABABAB | 0xABABABAB | 0xFEEEFEEE | Win32 heap bookkeeping |
| 0x00321014 | +20 | 0xABABABAB | 0xABABABAB | 0xABABABAB | 0xFEEEFEEE | Win32 heap bookkeeping |
| 0x00321018 | +24 | 0x00000010 | 0x00000010 | 0x00000010 | 0xFEEEFEEE | Win32 heap bookkeeping |
| 0x0032101C | +28 | 0x00000000 | 0x00000000 | 0x00000000 | 0xFEEEFEEE | Win32 heap bookkeeping |
| 0x00321020 | +32 | 0x00090051 | 0x00090051 | 0x00090051 | 0xFEEEFEEE | Win32 heap bookkeeping |
| 0x00321024 | +36 | 0xFEEE0400 | 0xFEEE0400 | 0xFEEE0400 | 0xFEEEFEEE | Win32 heap bookkeeping |
| 0x00321028 | +40 | 0x00320400 | 0x00320400 | 0x00320400 | 0xFEEEFEEE | Win32 heap bookkeeping |
| 0x0032102C | +44 | 0x00320400 | 0x00320400 | 0x00320400 | 0xFEEEFEEE | Win32 heap bookkeeping |
(I've tried to helpfully color-code things. Blue and grey is for Win32 heap stuff, and reds are for the debug crt heap stuff. If you hate the color scheme, the colors are set up using CSS at the top of this .html file - go edit them yourself!)
If you want to read more, check out Debugging Windows Programs, part of the DevelopMentor series.
Any comments or feedback? Please email me.


Profile
Friends
Additional Information
Friends of Doncho
Pesho Ivanov
Student
Vankata
Software developer
Bai Gosho
System admin


All together now:
Input 1:
Input 2:
Span:
{{ text }}
Binding To Disabled, Changing Bindings
Shipping Address
Name:
Address:
Billing Address
Same as Shipping Address
Name:
Address:


Extract XML text or an XML attribute via XPath.
xml_extract(x, xpath, extract_type, extract_value = NULL, ret_var_name = NULL)
extract_type = "attr"
.xml_extract
may be used as part of an assignment statement. If this
is the case, then the parameter ret_var_name
should remain
NULL
. But if xml_extract
is to be used as part of a functional
pipeline then it may be necessary to name the returned value.The extracted text or attribute value from an XML tag.
May be used as a UDF that is part of a dplyr
pipeline. The most
simple use is to include xml_extract
as part of a dplyr::mutate
function. For details see vignette("chunked-invoke-rows-xml")
.
A more complex use would be to use as a UDF to parse an arbitrary number of
text and attribute values from an XML document. This can be accomplished
utilizing a dataframe holding parameter values and purrr::pmap
.
Because xml_find_first is the function utilized in
xml_extract
, errors are consumed. This is helpful when iterating over
a set of XML documents where the schemas are inconsistent.
Suggested resources for XPath are
See vignette("chunked-invoke-rows")
for usage.


Ahoy! Here are the results of last week's Fishing King Championship Tournament! Do you see your name on the list? If you do, claim your prize money! Remember, you have only *one week* to claim your prize. Don't fret if your name isn't listed this time. Next week, there will be a new group of winners!
| Ranking | Fisherman | Length |
| Ranking | Reward Item | Quantity |
| 1st | %prizeItem% | %prizeFirst% |
| 2nd | %prizeItem% | %prizeTwo% |
| 3rd | %prizeItem% | %prizeThree% |
| 4th | %prizeItem% | %prizeFour% |
| 5th | %prizeItem% | %prizeFive% |


The contrib directory has contributed software that
uses the TIFF library or which is associated with the library
(typically glue and guidance for ports to non-UNIX platforms, or tools that
aren't directly TIFF related).
| contrib/dbs | various tools from Dan & Chris Sears, including a simple X-based viewer |
| contrib/ras | two programs by Patrick Naughton for converting between Sun rasterfile format and TIFF (these require libpixrect.a, as opposed to the one in tools that doesn't) |
|
contrib/mac-mpw contrib/mac-cw |
scripts and files from Niles Ritter for building the library and tools under Macintosh/MPW C and code warrior. |
| contrib/acorn | scripts and files from Peter Greenham for building the library and tools on an Acorn RISC OS system. |
| contrib/win32 | scripts and files from Scott Wagner for building the library under Windows NT and Windows 95. (The makefile.vc in the libtiff/libtiff directory may be sufficient for most users.) |
| contrib/win_dib | two separate implementations of TIFF to DIB code suitable for any Win32 platform. Contributed by Mark James, and Philippe Tenenhaus. |
| contrib/ojpeg | Patch for IJG JPEG library related to support for some Old JPEG in TIFF files. Contributed by Scott Marovich. |
| contrib/dosdjgpp | scripts and files from Alexander Lehmann for building the library under MSDOS with the DJGPP v2 compiler. |
| contrib/tags | scripts and files from Niles Ritter for adding private tag support at runtime, without changing libtiff. |
| contrib/mfs | code from Mike Johnson to read+write images in memory without modifying the library |
| contrib/pds | various routines from Conrad Poelman; a TIFF image iterator and code to support ``private sub-directories'' |
| contrib/iptcutil | A utility by Bill Radcliffe to convert an extracted IPTC Newsphoto caption from a binary blob to ASCII text, and vice versa. IPTC binary blobs can be extracted from images via the ImageMagick convert(1) utility. |
| contrib/addtiffo | A utility (and supporting subroutine) for building one or more reduce resolution overviews to an existing TIFF file. Supplied by Frank Warmerdam. |
| contrib/stream | A class (TiffStream) for accessing TIFF files through a C++ stream interface. Supplied by Avi Bleiweiss. |
Questions regarding these packages are usually best directed toward their authors.


This steering behavior produces a force that keeps a vehicle at a specified offset from a leader vehicle.


Amazon and Online Shopping
Authored By: Robert Diasio
Founded in 1996 by Jeff Bezos, Amazon capitalized on the fact that many people just simply do not want to leave their house when shopping for goods, or in some cases, cannot find an item they need in the stores around them. For a while Amazon seemed to be one of the only sites where online shopping of this sort was possible. Then, in the early thousands, eBay came along and snagged the spot of being the No.1 online shopping website (peaking at No.4).
Come 2010 it can be seen that Amazon broke into the Top 5 most visited websites. No longer was eBay the most prevalent. Although, eBay still had a niche. However, when looking at the numbers, there is no denying that Amazon was more successful than any other wanna-be competitor. Sure, Amazon may not be in the top 10 most visited websites currently, but does that really matter when you are Jeff Bezos? Of course not. Bezos made his fortune off of Amazon's success, and while he may not be the most respectable man in the world, he is definitely one of the brightest men out there when it comes to money.
First Ever TRILLIONAIRE?
It is reported that by 2026 Bezos might actually become the worlds first trillionaire. That is $1,000,000,000,000. A feat that no one else has accomplished.


- gapBetweenBars - Static variable in class com.wsfmn.habittracker.R.attr
-
May be a dimension value, which is a floating point number appended with a
unit such as "14.5sp
".
- Geolocation - Class in com.wsfmn.model
-
Created by ${WeiLi5} on ${12}.
- Geolocation() - Constructor for class com.wsfmn.habit.Geolocation
-
Created a Habit object
- Geolocation(String, LatLng) - Constructor for class com.wsfmn.habit.Geolocation
-
Created a Habit object
- GeolocationTest - Class in com.wsfmn.view.model
-
Created by ${WeiLi5} on ${12}.
- GeolocationTest() - Constructor for class com.wsfmn.habittracker.habit.GeolocationTest
-
- get(int) - Method in class com.wsfmn.habit.HabitHistory
-
Get the HabitEvent at a given index in the HabitHistory.
- get(int) - Static method in class com.wsfmn.habitcontroller.HabitHistoryController
-
Return the HabitEvent at a particular index.
- getAddress() - Method in class com.wsfmn.habit.Geolocation
-
- getComment() - Method in class com.wsfmn.habit.HabitEvent
-
- getCount() - Method in class com.wsfmn.habit.RequestAdapter
-
- getCurrentPhotoPath() - Method in class com.wsfmn.habit.HabitEvent
-
Get the path of the file where image is stored for the habit Event
- getDate() - Method in class com.wsfmn.habit.Habit
-
Gets the starting date of a habit
- getDate() - Method in class com.wsfmn.habit.HabitEvent
-
Get the date of when the HabitEvent was created
- getDateUI() - Method in class com.wsfmn.habittracker.AddNewHabitActivity
-
- getDateUI() - Method in class com.wsfmn.habittracker.HabitListViewDetailActivity
-
- getDay() - Method in class com.wsfmn.habit.Date
-
Returns the day of Date
- getDay(int) - Method in class com.wsfmn.habit.WeekDays
-
Gets the value for an entry according to the index day, either true or false
- getDayOfWeek() - Method in class com.wsfmn.habit.Date
-
Returns the day of the week that the day value of this calling objects corresponds to
- getDaysInMonth() - Method in class com.wsfmn.habit.Date
-
According to the current year, month, and day for the Date object,
returns the total number of days for a month
- getGeolocation() - Method in class com.wsfmn.habit.HabitEvent
-
- getHabit() - Method in class com.wsfmn.habit.HabitEvent
-
- getHabit(int) - Method in class com.wsfmn.habit.HabitList
-
- getHabit(int) - Method in class com.wsfmn.habitcontroller.HabitListController
-
- getHabitEventList() - Method in class com.wsfmn.habit.HabitHistory
-
Get the Habit
- getHabitEventList() - Static method in class com.wsfmn.habitcontroller.HabitHistoryController
-
- GetHabitEvents() - Constructor for class com.wsfmn.habitcontroller.OnlineController.GetHabitEvents
-
- getHabitEventTitle() - Method in class com.wsfmn.habit.HabitEvent
-
- getHabitFromEvent() - Method in class com.wsfmn.habit.HabitEvent
-
Get the Habit the user selects for the HabitEvent
- GetHabitHistory() - Constructor for class com.wsfmn.habitcontroller.OfflineController.GetHabitHistory
-
- getHabitList() - Method in class com.wsfmn.habit.HabitList
-
- getHabitList() - Method in class com.wsfmn.habitcontroller.HabitListController
-
- GetHabitList() - Constructor for class com.wsfmn.habitcontroller.OfflineController.GetHabitList
-
- GetHabits() - Constructor for class com.wsfmn.habitcontroller.OnlineController.GetHabits
-
- getHabitsForToday() - Method in class com.wsfmn.habit.HabitList
-
- getHabitsForToday() - Method in class com.wsfmn.habitcontroller.HabitListController
-
- getHabitTitle() - Method in class com.wsfmn.habit.HabitEvent
-
Get the Habit title for the Habit Event
- getId() - Method in class com.wsfmn.habit.Habit
-
- getId() - Method in class com.wsfmn.habit.HabitEvent
-
Get Id for ElasticSearch
- getId() - Method in class com.wsfmn.habit.ProfileName
-
Method to receive ID from ProfileName.
- getInstance() - Static method in class com.wsfmn.habitcontroller.HabitHistoryController
-
Access the instance of the HabitHistoryController singleton.
- getInstance() - Static method in class com.wsfmn.habitcontroller.HabitListController
-
Accesses the instance of HabitListController singleton
- getInstance() - Static method in class com.wsfmn.habitcontroller.ProfileController
-
Instantiate the habitHistory attribute.
- getItem(int) - Method in class com.wsfmn.habit.RequestAdapter
-
- getItemId(int) - Method in class com.wsfmn.habit.RequestAdapter
-
- getLatLng() - Method in class com.wsfmn.habit.Geolocation
-
- getMonth() - Method in class com.wsfmn.habit.Date
-
Returns the month of Date
- getName() - Method in class com.wsfmn.habit.Profile
-
- getName() - Method in class com.wsfmn.habit.ProfileName
-
Method to receive name from ProfileName
- getReason() - Method in class com.wsfmn.habit.Habit
-
- getRequest(int) - Method in class com.wsfmn.habit.RequestList
-
- GetRequest() - Constructor for class com.wsfmn.habitcontroller.OnlineController.GetRequest
-
- getRequestType() - Method in class com.wsfmn.habit.Request
-
Method to get the type of Request from Request.
- getSearchName() - Method in class com.wsfmn.habit.Request
-
Method to receive the searchName from Request
- getTitle() - Method in class com.wsfmn.habit.Habit
-
- getTotalOccurrence() - Method in class com.wsfmn.habit.Habit
-
calculates the total number of times that the habit could have
occurred in if it was followed according to schedule
- getTotalOccurrence() - Method in class com.wsfmn.habit.MockHabit
-
- getType(int) - Method in class com.wsfmn.habit.RequestAdapter
-
- GetUserProfile() - Constructor for class com.wsfmn.habitcontroller.OfflineController.GetUserProfile
-
- getView(int, View, ViewGroup) - Method in class com.wsfmn.habit.RequestAdapter
-
- getWeekDays() - Method in class com.wsfmn.habit.Habit
-
Gets the days of the week the habit will occur in
- getYear() - Method in class com.wsfmn.habit.Date
-
Returns the year part of Date
- ghost_view - Static variable in class com.wsfmn.habittracker.R.id
-
- goIcon - Static variable in class com.wsfmn.habittracker.R.attr
-
May be a reference to another resource, in the form
"@[+][package:]type/name
" or a theme
attribute in the form
"?[package:]type/name
".
- google_maps_key - Static variable in class com.wsfmn.habittracker.R.string
-
- google_play_services_version - Static variable in class com.wsfmn.habittracker.R.integer
-
- googleg_disabled_color_18 - Static variable in class com.wsfmn.habittracker.R.drawable
-
- googleg_standard_color_18 - Static variable in class com.wsfmn.habittracker.R.drawable
-