'use strict'
Annotated Source Code for the PubNub AngularJS library. Welcome! Thank you for reading this documentation - if you have any feedback or suggestions, please file a GitHub issue and we’ll take a look right away!
Using this library should be as easy as:
bower install pubnub-angular
For step-by-step instructions, check out https://github.com/pubnub/pubnub-angular/blob/master/README.md
We love strict mode.
'use strict'
Set up an Angular module. Notice the identifier pubnub.angular.service
, used when declaring a dependency on the PubNub Angular library.
angular.module('pubnub.angular.service', [])
Set up a factory for injecting a PubNub
service into your Angular Controller or Service. Depends on the Angular $rootScope so that the PubNub object is persistent across controller instantiations.
.factory 'PubNub', ['$rootScope', '$q', '$timeout', ($rootScope, $q, $timeout) ->
Initialize an object for the PubNub service’s data. Set the current version, instance, channels, presence, and jsapi for advanced access.
c = {
Our current version of this PubNub Angular library
'VERSION' : '1.2.0-beta.1'
A reference to the PubNub vanilla JavaScript API object (aka PUBNUB from https://github.com/pubnub/javascript/blob/master/web/pubnub.js)
'_instance' : null
The list of channels that we currently know about
'_channels' : []
A map of channel name to channel members that we currently know about
'_presence' : {}
A map of references to vanilla JavaScript API functions for advanced client usage
'jsapi' : {}
}
Include the “map” and “each” functions into the PubNub Angular API as helper functions. We create and invoke a closure to capture both the angular context method name into the helper function.
for k in ['map', 'each']
if PUBNUB?[k] instanceof Function
((kk) -> c[kk] = ->
c['_instance']?[kk].apply c['_instance'], arguments)(k)
Add bindings to the original vanilla JavaScript PubNub API methods under the “jsapi” key. We create and invoke a closure to capture both the angular context method name into the helper function.
for k of PUBNUB
if PUBNUB?[k] instanceof Function
((kk) -> c['jsapi'][kk] = ->
c['_instance']?[kk].apply c['_instance'], arguments)(k)
Add a field so that clients can tell the library has been initialized.
c.initialized = -> !!c['_instance']
Initialize the PubNub Client API. You must do this before trying to use the API to establish account credentials. Overwrites the current state, so this method should only be called once when instantiating an Angular application.
c.init = ->
c['_instance'] = PUBNUB.init.apply PUBNUB, arguments
c['_channels'] = []
c['_presence'] = {}
c['_presData'] = {}
c['_instance']
Destroy the PubNub Angular library state. This is currently partial / best-effort because the vanilla PubNub library does not have a destroy method yet.
c.destroy = ->
c['_instance'] = null
c['_channels'] = null
c['_presence'] = null
c['_presData'] = null
TODO - destroy PUBNUB instance & reset memory using PUBNUB’s destroy method when it’s available.
Internal method that creates a message handler for a specified channel name. Uses a closure so that we capture the channel name within the message handler callback.
c._ngFireMessages = (realChannel) ->
(messages, t1, t2) ->
c.each messages[0], (message) ->
$rootScope.$broadcast "pn-message:#{realChannel}", {
message: message
channel: realChannel
}
Internal method that creates wrappers for the message and presence event handlers. Wrappers are necessary because we want the Angular library to keep track of channels and presence events on the application’s behalf.
c._ngInstallHandlers = (args) ->
oldmessage = args.message
Create a message handler wrapper that broadcasts the message event and calls the original user-provided message handler.
args.message = ->
$rootScope.$broadcast c.ngMsgEv(args.channel), {
message: arguments[0],
env: arguments[1],
channel: args.channel
}
oldmessage(arguments) if oldmessage
Create a presence handler wrapper that broadcasts the presence event and calls the original user-provided presence handler.
oldpresence = args.presence
args.presence = ->
event = arguments[0]
channel = args.channel
We must handle two sources of presence data: here_now
and presence
events. The here_now
events include a uuids
field. Normal presence
events have a uuid
field and an action
field (join or leave).
if event.uuids
c.each event.uuids, (uuid) ->
state = if uuid.state then uuid.state else null
uuid = if uuid.uuid then uuid.uuid else uuid
c['_presence'][channel] ||= []
c['_presence'][channel].push uuid if c['_presence'][channel].indexOf(uuid) < 0
c['_presData'][channel] ||= {}
c['_presData'][channel][uuid] = state if state
else
if event.uuid && event.action
c['_presence'][channel] ||= []
c['_presData'][channel] ||= {}
if event.action == 'leave'
cpos = c['_presence'][channel].indexOf event.uuid
c['_presence'][channel].splice cpos, 1 if cpos != -1
delete c['_presData'][channel][event.uuid]
else
c['_presence'][channel].push event.uuid if c['_presence'][channel].indexOf(event.uuid) < 0
c['_presData'][channel][event.uuid] = event.data if event.data
$rootScope.$broadcast c.ngPrsEv(args.channel), {
event: event,
message: arguments[1],
channel: channel
}
oldpresence(arguments) if oldpresence
args
The PubNub Angular API takes care of keeping track of currently subscribed channels. Call the PubNub.ngListChannels()
method to return a list of presently subscribed channels.
c.ngListChannels = ->
c['_channels'].slice 0
The PubNub Angular API takes care of keeping track of channel presence information. Call the PubNub.ngListPresence(channel)
method to return a list of presently subscribed user uuids in the specified channel.
c.ngListPresence = (channel) ->
c['_presence'][channel]?.slice 0
It’s also possible to retrieve the extended Presence state data for users in a channel using the PubNub.ngPresenceData(channel)
function. Returns a map of UUID to state data.
c.ngPresenceData = (channel) -> c['_presData'][channel] || {}
Subscribing to channels is accomplished by calling the PubNub ngSubscribe
method. After the channel is subscribed, the app can register root scope message events by calling $rootScope.$on
with the event string returned by PubNub.ngMsgEv(channel)
.
c.ngSubscribe = (args) ->
c['_channels'].push args.channel if c['_channels'].indexOf(args.channel) < 0
c['_presence'][args.channel] ||= []
args = c._ngInstallHandlers args
c.jsapi.subscribe(args)
Unsubscribing is as easy as calling the PubNub.ngUnsubscribe()
method. The library even takes care of removing the Angular event handlers for you to prevent unsightly memory leaks!
c.ngUnsubscribe = (args) ->
cpos = c['_channels'].indexOf(args.channel)
c['_channels'].splice cpos, 1 if cpos != -1
c['_presence'][args.channel] = null
delete $rootScope.$$listeners[c.ngMsgEv(args.channel)]
delete $rootScope.$$listeners[c.ngPrsEv(args.channel)]
c.jsapi.unsubscribe(args)
Publishing to channels is trivial - just use the PubNub.ngPublish()
method.
c.ngPublish = -> c['_instance']['publish'].apply c['_instance'], arguments
It can be super-handy to gather the previous several hundred messages from the PubNub channel history. The PubNub Angular API makes this easy by bridging the event model of the PubNub JS history API and the AngularJS event broadcast model so that historical messages come through the same event interface.
c.ngHistory = (args) ->
TODO: in the next API version, save & restore the callback
args.callback = c._ngFireMessages args.channel
c.jsapi.history args
Sometimes, it’s better to retrieve history as a promise. The ‘ngHistoryQ’ method returns a promise that is fulfilled when the history call returns. More about history. This method does not send historical events through the root scope event mechanism.
c.ngHistoryQ = (args) ->
deferred = $q.defer()
oldcallback = args.callback
args.callback = (x) ->
deferred.resolve(x)
$rootScope.$apply()
oldcallback(x) if oldcallback
args.error = (x) ->
deferred.reject(x)
c['jsapi']['history'].apply c['_instance'], [args]
deferred.promise
It’s also easy to integrate presence events using the Angular API. In the example above, we just add an additional couple lines of code to call the PubNub.ngHereNow()
method (retrieve current users in a channel).
c.ngHereNow = (args) ->
args = c._ngInstallHandlers(args)
args.state = true
args.callback = args.presence
delete args.presence
delete args.message
c.jsapi.here_now(args)
You can obtain information about the current list of a channels to which a uuid is subscribed to by calling the ngWhereNow()
function in your application. More info on ngWhereNow.
c.ngWhereNow = (args) -> c.jsapi.where_now(args)
You can obtain information about the current metadata associated with a uuid by calling the ngState()
function in your application. More info on ngState.
c.ngState = (args) -> c.jsapi.state(args)
Each channel has a unique “message event name” for message events. The method ngMsgEv(channel)
returns that broadcast event name for message events for a given channel as they are broadcast via $rootScope
.
c.ngMsgEv = (channel) -> "pn-message:#{channel}"
Each channel has a unique “presence event name” for presence events. The method ngPrsEv(channel)
returns that broadcast event name for presence events for a given channel as they are broadcast via $rootScope
.
c.ngPrsEv = (channel) -> "pn-presence:#{channel}"
c.ngAuth = -> c['_instance']['auth'].apply c['_instance'], arguments
Often times, it’s desirable to lock down applications and channels. With PAM (PubNub Access Manager), it’s easy. There are 2 calls: ngGrant
which grants access for users having a specified auth key, and ngAudit
which returns the current policy configuration. Note: to perform access control operations, the PubNub client must be initialized with the secret key (which should always be protected by server-only access).
c.ngAudit = -> c['_instance']['audit'].apply c['_instance'], arguments
c.ngGrant = -> c['_instance']['grant'].apply c['_instance'], arguments
PubNub DataSync BETA
c.datasync_BETA = {}
_makeDataSyncOperation = (op) -> (args) ->
return unless args && args['object_id']
deferred = $q.defer()
oldcallback = args.callback
args.callback = (x) ->
deferred.resolve(x)
$rootScope.$apply()
oldcallback(x) if oldcallback
args.error = (x) ->
deferred.reject(x)
c['jsapi'][op].apply c['_instance'], [args]
deferred.promise
PubNub DataSync BETA: Get Object. Returns a $q promise
c.datasync_BETA.ngGet = _makeDataSyncOperation('get')
PubNub DataSync BETA: Set Object. Returns a $q promise
c.datasync_BETA.ngSet = _makeDataSyncOperation('set')
PubNub DataSync BETA: Merge Object. Returns a $q promise
c.datasync_BETA.ngMerge = _makeDataSyncOperation('merge')
PubNub DataSync BETA: Remove Object. Returns a $q promise
c.datasync_BETA.ngRemove = _makeDataSyncOperation('remove')
PubNub DataSync BETA: Internal use only. Creates a callback for sync events
_syncCallback = (name, object_id, path) -> (r) ->
$rootScope.$broadcast(c.datasync_BETA.ngObjPathRecEv(object_id, path), {
action: name
object_id : object_id
path : path
payload : r
})
$rootScope.$apply()
PubNub DataSync BETA: Sync object. Retrieves the specified object and metadata, with live updates and Angular $broadcast events enabled. NOTE: only one of ‘ngSync’ or ‘ngWatch’ may be used for a given object. Using both appears to corrupt the connection.
c.datasync_BETA.ngSync = (object_id) ->
return unless object_id
result = c['jsapi']['sync'].apply c['_instance'], [object_id]
['ready','change','update','remove','set','error'].forEach (x) -> result.on[x](_syncCallback(x, object_id, null))
['connect','disconnect','reconnect'].forEach (x) -> result.on.network[x](_syncCallback(x, object_id, null))
result
PubNub DataSync BETA: $rootScope broadcast event name for object/path combination
c.datasync_BETA.ngObjPathEv = (object_id, path) -> 'pn-datasync-obj:' + c.datasync_BETA.ngObjPathChan(object_id, path)
PubNub DataSync BETA: $rootScope broadcast event name for recursive object/path combination
c.datasync_BETA.ngObjPathRecEv = (object_id, path) -> 'pn-datasync-obj-rec:' + c.datasync_BETA.ngObjPathRecChan(object_id, path)
PubNub DataSync BETA: $rootScope broadcast event name for object datastore operations
c.datasync_BETA.ngObjDsEv = (object_id) -> 'pn-datasync-obj-ds:' + c.datasync_BETA.ngObjDsChan(object_id)
PubNub DataSync BETA: Watch an object. Events are broadcast on $rootScope. NOTE: only one of ‘ngSync’ or ‘ngWatch’ may be used for a given object. Using both appears to corrupt the connection.
c.datasync_BETA.ngWatch = (args) ->
return unless args && args['object_id']
object_id = args['object_id']
path = args['path']
datastore = { chan : c.datasync_BETA.ngObjDsChan(object_id), ev : c.datasync_BETA.ngObjDsEv(object_id) }
object_ds = { chan : c.datasync_BETA.ngObjPathChan(object_id, path), ev : c.datasync_BETA.ngObjPathEv(object_id, path) }
object_ds_rec = { chan : c.datasync_BETA.ngObjPathRecChan(object_id, path), ev : c.datasync_BETA.ngObjPathRecEv(object_id, path) }
oldcallback = args.callback
[object_ds, object_ds_rec, datastore].forEach (cfg) ->
((chan, ev) ->
args.channel = chan
args.callback = (o) ->
payload = {
event: ev
channel: chan
object_id : object_id
path : path
payload : o
}
$rootScope.$broadcast(ev, payload)
oldcallback(payload) if oldcallback
c['jsapi']['subscribe'].apply c['_instance'], [args]
)(cfg.chan, cfg.ev)
PubNub DataSync BETA: Internal use only. Channel Name for object/path combination
c.datasync_BETA.ngObjPathChan = (object_id, path) -> 'pn_ds_' + object_id + (if path then '.' + path else '')
PubNub DataSync BETA: Internal use only. Channel Name for recursive object/path combination
c.datasync_BETA.ngObjPathRecChan = (object_id, path) -> c.datasync_BETA.ngObjPathChan(object_id, path) + '.*'
PubNub DataSync BETA: Internal use only. Channel Name for object data store operations
c.datasync_BETA.ngObjDsChan = (object_id) -> 'pn_dstr_' + object_id
… And we’re done! We return this object as the PubNub AngularJS service instance.
c
]


California officer kills friend and self, wounds father
FRESNO, Calif. (AP) - Authorities in California say an off-duty law enforcement officer killed a police officer and critically wounded his father before killing himself in a shooting during a birthday party.
Kings County sheriff’s detectives say 32-year-old Ramiro Trevino Jr. died after fatally shooting 31-year-old Johnathan Diaz and critically wounding 58-year-old Ramiro Trevino Sr. Saturday in Hanford.
Authorities say Diaz was a Lemoore police officer and a friend of Trevino Jr., who worked as a Kings County welfare fraud investigator.
Investigators say the shooting occurred around 9 p.m. at the party for the elder Trevino in the community about 33 miles (53 kilometers) south of Fresno.
Detectives say the two men intervened in a fight between Trevino Jr. and his girlfriend and soon after he armed himself with more than one gun.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


@(opprtunityid : String,applicantId:String,message:Integer) @main("Client Survey") {
(This is a great place to share with us a testimonial on our service or suggestions on how we can improve)


refresh owner size
refresh arr owner size
{{count}}
add count
{{$host.count}}
kaca
{{outer.value}} -
{{ha.count}}


Overview
This describes the resources that make up the official GitHub API v3. If you have any problems or requests please contact support.
- Current Version
- Schema
- Parameters
- Root Endpoint
- Client Errors
- HTTP Redirects
- HTTP Verbs
- Authentication
- Hypermedia
- Pagination
- Rate Limiting
- User Agent Required
- Conditional requests
- Cross Origin Resource Sharing
- JSON-P Callbacks
- Timezones
Current Version
By default, all requests receive the v3 version of the API.
We encourage you to explicitly request this version via the Accept
header.
Accept: application/vnd.github.v3+json
Schema
All API access is over HTTPS, and accessed from the https://api.github.com
. All data is
sent and received as JSON.
curl -i https://api.github.com/users/octocat/orgs HTTP/1.1 200 OK Server: nginx Date: Fri, 12 Oct 2012 23:33:14 GMT Content-Type: application/json; charset=utf-8 Connection: keep-alive Status: 200 OK ETag: "a00049ba79152d03380c34652f2cb612" X-GitHub-Media-Type: github.v3 X-RateLimit-Limit: 5000 X-RateLimit-Remaining: 4987 X-RateLimit-Reset:<PHONE_NUMBER> Content-Length: 5 Cache-Control: max-age=0, private, must-revalidate X-Content-Type-Options: nosniff
Blank fields are included as null
instead of being omitted.
All timestamps are returned in ISO 8601 format:
YYYY-MM-DDTHH:MM:SSZ
Summary Representations
When you fetch a list of resources, the response includes a subset of the attributes for that resource. This is the "summary" representation of the resource. (Some attributes are computationally expensive for the API to provide. For performance reasons, the summary representation excludes those attributes. To obtain those attributes, fetch the "detailed" representation.)
Example: When you get a list of repositories, you get the summary representation of each repository. Here, we fetch the list of repositories owned by the octokit organization:
GET /orgs/octokit/repos
Detailed Representations
When you fetch an individual resource, the response typically includes all attributes for that resource. This is the "detailed" representation of the resource. (Note that authorization sometimes influences the amount of detail included in the representation.)
Example: When you get an individual repository, you get the detailed representation of the repository. Here, we fetch the octokit/octokit.rb repository:
GET /repos/octokit/octokit.rb
The documentation provides an example response for each API method. The example response illustrates all attributes that are returned by that method.
Parameters
Many API methods take optional parameters. For GET requests, any parameters not specified as a segment in the path can be passed as an HTTP query string parameter:
curl -i "https://api.github.com/repos/vmg/redcarpet/issues?state=closed"
In this example, the 'vmg' and 'redcarpet' values are provided for the :owner
and :repo
parameters in the path while :state
is passed in the query
string.
For POST, PATCH, PUT, and DELETE requests, parameters not included in the URL should be encoded as JSON with a Content-Type of 'application/json':
curl -i -u username -d '{"scopes":["public_repo"]}' https://api.github.com/authorizations
Root Endpoint
You can issue a GET
request to the root endpoint to get all the endpoint categories that the API supports:
curl https://api.github.com
Client Errors
There are three possible types of client errors on API calls that receive request bodies:
-
Sending invalid JSON will result in a
400 Bad Request
response.HTTP/1.1 400 Bad Request Content-Length: 35 {"message":"Problems parsing JSON"}
-
Sending the wrong type of JSON values will result in a
400 Bad Request
response.HTTP/1.1 400 Bad Request Content-Length: 40 {"message":"Body should be a JSON object"}
-
Sending invalid fields will result in a
422 Unprocessable Entity
response.HTTP/1.1 422 Unprocessable Entity Content-Length: 149 { "message": "Validation Failed", "errors": [ { "resource": "Issue", "field": "title", "code": "missing_field" } ] }
All error objects have resource and field properties so that your client can tell what the problem is. There's also an error code to let you know what is wrong with the field. These are the possible validation error codes:
| Error Name | Description |
|---|---|
missing |
This means a resource does not exist. |
missing_field |
This means a required field on a resource has not been set. |
invalid |
This means the formatting of a field is invalid. The documentation for that resource should be able to give you more specific information. |
already_exists |
This means another resource has the same value as this field. This can happen in resources that must have some unique key (such as Label names). |
Resources may also send custom validation errors (where code
is custom
). Custom errors will always have a message
field describing the error, and most errors will also include a documentation_url
field pointing to some content that might help you resolve the error.
HTTP Redirects
API v3 uses HTTP redirection where appropriate. Clients should assume that any
request may result in a redirection. Receiving an HTTP redirection is not an
error and clients should follow that redirect. Redirect responses will have a
Location
header field which contains the URI of the resource to which the
client should repeat the requests.
| Status Code | Description |
|---|---|
301 |
Permanent redirection. The URI you used to make the request has been superseded by the one specified in the Location header field. This and all future requests to this resource should be directed to the new URI. |
302 , 307
|
Temporary redirection. The request should be repeated verbatim to the URI specified in the Location header field but clients should continue to use the original URI for future requests. |
Other redirection status codes may be used in accordance with the HTTP 1.1 spec.
HTTP Verbs
Where possible, API v3 strives to use appropriate HTTP verbs for each action.
| Verb | Description |
|---|---|
HEAD |
Can be issued against any resource to get just the HTTP header info. |
GET |
Used for retrieving resources. |
POST |
Used for creating resources. |
PATCH |
Used for updating resources with partial JSON data. For instance, an Issue resource has title and body attributes. A PATCH request may accept one or more of the attributes to update the resource. PATCH is a relatively new and uncommon HTTP verb, so resource endpoints also accept POST requests. |
PUT |
Used for replacing resources or collections. For PUT requests with no body attribute, be sure to set the Content-Length header to zero. |
DELETE |
Used for deleting resources. |
Authentication
There are three ways to authenticate through GitHub API v3. Requests that
require authentication will return 404 Not Found
, instead of
403 Forbidden
, in some places. This is to prevent the accidental leakage
of private repositories to unauthorized users.
Basic Authentication
curl -u "username" https://api.github.com
OAuth2 Token (sent in a header)
curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com
OAuth2 Token (sent as a parameter)
curl https://api.github.com/?access_token=OAUTH-TOKEN
Read more about OAuth2. Note that OAuth2 tokens can be acquired programmatically, for applications that are not websites.
OAuth2 Key/Secret
curl 'https://api.github.com/users/whatever?client_id=xxxx&client_secret=yyyy'
This should only be used in server to server scenarios. Don't leak your OAuth application's client secret to your users.
Read more about unauthenticated rate limiting.
Failed login limit
Authenticating with invalid credentials will return 401 Unauthorized
:
curl -i https://api.github.com -u foo:bar HTTP/1.1 401 Unauthorized { "message": "Bad credentials", "documentation_url": "https://developer.github.com/v3" }
After detecting several requests with invalid credentials within a short period,
the API will temporarily reject all authentication attempts for that user
(including ones with valid credentials) with 403 Forbidden
:
curl -i https://api.github.com -u valid_username:valid_password HTTP/1.1 403 Forbidden { "message": "Maximum number of login attempts exceeded. Please try again later.", "documentation_url": "https://developer.github.com/v3" }
Hypermedia
All resources may have one or more *_url
properties linking to other
resources. These are meant to provide explicit URLs so that proper API clients
don't need to construct URLs on their own. It is highly recommended that API
clients use these. Doing so will make future upgrades of the API easier for
developers. All URLs are expected to be proper RFC 6570 URI templates.
You can then expand these templates using something like the uri_template gem:
>> tmpl = URITemplate.new('/notifications{?since,all,participating}')
>> tmpl.expand
=> "/notifications"
>> tmpl.expand :all => 1
=> "/notifications?all=1"
>> tmpl.expand :all => 1, :participating => 1
=> "/notifications?all=1&participating=1"
Pagination
Requests that return multiple items will be paginated to 30 items by
default. You can specify further pages with the ?page
parameter. For some
resources, you can also set a custom page size up to 100 with the ?per_page
parameter.
Note that for technical reasons not all endpoints respect the ?per_page
parameter,
see events for example.
curl 'https://api.github.com/user/repos?page=2&per_page=100'
Note that page numbering is 1-based and that omitting the ?page
parameter will return the first page.
For more information on pagination, check out our guide on Traversing with Pagination.
Link Header
The pagination info is included in the Link header. It is important to follow these Link header values instead of constructing your own URLs. In some instances, such as in the Commits API, pagination is based on SHA1 and not on page number.
Link: <https://api.github.com/user/repos?page=3&per_page=100>; rel="next",
<https://api.github.com/user/repos?page=50&per_page=100>; rel="last"
Linebreak is included for readability.
This Link
response header contains one or more Hypermedia link relations, some of which may require expansion as URI templates.
The possible rel
values are:
| Name | Description |
|---|---|
next |
The link relation for the immediate next page of results. |
last |
The link relation for the last page of results. |
first |
The link relation for the first page of results. |
prev |
The link relation for the immediate previous page of results. |
Rate Limiting
For requests using Basic Authentication or OAuth, you can make up to 5,000 requests per hour. For unauthenticated requests, the rate limit allows you to make up to 60 requests per hour. Unauthenticated requests are associated with your IP address, and not the user making requests. Note that the Search API has custom rate limit rules.
You can check the returned HTTP headers of any API request to see your current rate limit status:
curl -i https://api.github.com/users/whatever HTTP/1.1 200 OK Date: Mon, 01 Jul 2013 17:27:06 GMT Status: 200 OK X-RateLimit-Limit: 60 X-RateLimit-Remaining: 56 X-RateLimit-Reset:<PHONE_NUMBER>
The headers tell you everything you need to know about your current rate limit status:
| Header Name | Description |
|---|---|
X-RateLimit-Limit |
The maximum number of requests that the consumer is permitted to make per hour. |
X-RateLimit-Remaining |
The number of requests remaining in the current rate limit window. |
X-RateLimit-Reset |
The time at which the current rate limit window resets in UTC epoch seconds. |
If you need the time in a different format, any modern programming language can get the job done. For example, if you open up the console on your web browser, you can easily get the reset time as a JavaScript Date object.
new Date(1372700873 * 1000)
// => Mon Jul 01 2013 13:47:53 GMT-0400 (EDT)
Once you go over the rate limit you will receive an error response:
HTTP/1.1 403 Forbidden Date: Tue, 20 Aug 2013 14:50:41 GMT Status: 403 Forbidden X-RateLimit-Limit: 60 X-RateLimit-Remaining: 0 X-RateLimit-Reset:<PHONE_NUMBER> { "message": "API rate limit exceeded for xxx.xxx.xxx.xxx. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)", "documentation_url": "https://developer.github.com/v3/#rate-limiting" }
You can also check your rate limit status without incurring an
API hit.
Increasing the unauthenticated rate limit for OAuth applications
If your OAuth application needs to make unauthenticated calls with a higher rate limit, you can pass your app's client ID and secret as part of the query string.
curl -i 'https://api.github.com/users/whatever?client_id=xxxx&client_secret=yyyy' HTTP/1.1 200 OK Date: Mon, 01 Jul 2013 17:27:06 GMT Status: 200 OK X-RateLimit-Limit: 5000 X-RateLimit-Remaining: 4966 X-RateLimit-Reset:<PHONE_NUMBER>
This method should only be used for server-to-server calls. You should never share your client secret with anyone or include it in client-side browser code.
Staying within the rate limit
If you are using Basic Authentication or OAuth, and you are exceeding your rate limit, you can likely fix the issue by caching API responses and using conditional requests.
Abuse Rate Limits
To protect the quality of service from GitHub, additional rate limits may apply to some actions. For example, rapidly creating content, polling aggressively instead of using webhooks, making API calls with a high concurrency, or repeatedly requesting data that is computationally expensive may result in abuse rate limiting.
It is not intended for this rate limit to interfere with any legitimate use of the API.  To ensure you're acting as a good API citizen, check out our Best Practices guidelines.
If your application triggers this rate limit, you'll receive an informative response:
HTTP/1.1 403 Forbidden Content-Type: application/json; charset=utf-8 Connection: close { "message": "You have triggered an abuse detection mechanism and have been temporarily blocked from content creation. Please retry your request again later.", "documentation_url": "https://developer.github.com/v3#abuse-rate-limits" }
User Agent Required
All API requests MUST include a valid User-Agent
header. Requests with no User-Agent
header will be rejected. We request that you use your GitHub username, or the name of your
application, for the User-Agent
header value. This allows us to contact you if there are problems.
Here's an example:
User-Agent: Awesome-Octocat-App
If you provide an invalid User-Agent
header, you will receive a 403 Forbidden
response:
curl -iH 'User-Agent: ' https://api.github.com/meta HTTP/1.0 403 Forbidden Connection: close Content-Type: text/html Request forbidden by administrative rules. Please make sure your request has a User-Agent header. Check https://developer.github.com for other possible causes.
Conditional requests
Most responses return an ETag
header. Many responses also return a Last-Modified
header. You can use the values
of these headers to make subsequent requests to those resources using the
If-None-Match
and If-Modified-Since
headers, respectively. If the resource
has not changed, the server will return a 304 Not Modified
.
Note: Making a conditional request and receiving a 304 response does not count against your Rate Limit, so we encourage you to use it whenever possible.
curl -i https://api.github.com/user HTTP/1.1 200 OK Cache-Control: private, max-age=60 ETag: "644b5b0155e6404a9cc4bd9d8b1ae730" Last-Modified: Thu, 05 Jul 2012 15:31:30 GMT Status: 200 OK Vary: Accept, Authorization, Cookie X-RateLimit-Limit: 5000 X-RateLimit-Remaining: 4996 X-RateLimit-Reset:<PHONE_NUMBER> curl -i https://api.github.com/user -H 'If-None-Match: "644b5b0155e6404a9cc4bd9d8b1ae730"' HTTP/1.1 304 Not Modified Cache-Control: private, max-age=60 ETag: "644b5b0155e6404a9cc4bd9d8b1ae730" Last-Modified: Thu, 05 Jul 2012 15:31:30 GMT Status: 304 Not Modified Vary: Accept, Authorization, Cookie X-RateLimit-Limit: 5000 X-RateLimit-Remaining: 4996 X-RateLimit-Reset:<PHONE_NUMBER> curl -i https://api.github.com/user -H "If-Modified-Since: Thu, 05 Jul 2012 15:31:30 GMT" HTTP/1.1 304 Not Modified Cache-Control: private, max-age=60 Last-Modified: Thu, 05 Jul 2012 15:31:30 GMT Status: 304 Not Modified Vary: Accept, Authorization, Cookie X-RateLimit-Limit: 5000 X-RateLimit-Remaining: 4996 X-RateLimit-Reset:<PHONE_NUMBER>
Cross Origin Resource Sharing
The API supports Cross Origin Resource Sharing (CORS) for AJAX requests from any origin. You can read the CORS W3C Recommendation, or this intro from the HTML 5 Security Guide.
Here's a sample request sent from a browser hitting
http://example.com
:
curl -i https://api.github.com -H "Origin: http://example.com"
HTTP/1.1 302 Found
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
Access-Control-Allow-Credentials: true
This is what the CORS preflight request looks like:
curl -i https://api.github.com -H "Origin: http://example.com" -X OPTIONS
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-GitHub-OTP, X-Requested-With
Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE
Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
Access-Control-Max-Age: 86400
Access-Control-Allow-Credentials: true
JSON-P Callbacks
You can send a ?callback
parameter to any GET call to have the results
wrapped in a JSON function. This is typically used when browsers want
to embed GitHub content in web pages by getting around cross domain
issues. The response includes the same data output as the regular API,
plus the relevant HTTP Header information.
curl https://api.github.com?callback=foo /**/foo({ "meta": { "status": 200, "X-RateLimit-Limit": "5000", "X-RateLimit-Remaining": "4966", "X-RateLimit-Reset": "1372700873", "Link": [ // pagination headers and other links ["https://api.github.com?page=2", {"rel": "next"}] ] }, "data": { // the data } })
You can write a JavaScript handler to process the callback. Here's a minimal example you can try out:

Open up your browser's console.

All of the headers are the same String value as the HTTP Headers with one
notable exception: Link. Link headers are pre-parsed for you and come
through as an array of [url, options]
tuples.
A link that looks like this:
Link: <url1>; rel="next", <url2>; rel="foo"; bar="baz"
... will look like this in the Callback output:
{
"Link": [
[
"url1",
{
"rel": "next"
}
],
[
"url2",
{
"rel": "foo",
"bar": "baz"
}
]
]
}
Timezones
Some requests allow for specifying timestamps or generate timestamps with time zone information. We apply the following rules, in order of priority, to determine timezone information for API calls.
Explicitly provide an ISO 8601 timestamp with timezone information
For API calls that allow for a timestamp to be specified, we use that exact timestamp. An example of this is the Commits API.
These timestamps look something like 2014-02-27T15:05:06+01:00
. Also see
this example for
how these timestamps can be specified.
Time-Zone
header
Using the It is possible to supply a Time-Zone
header which defines a timezone according
to the list of names from the Olson database.
curl -H "Time-Zone: Europe/Amsterdam" -X POST https://api.github.com/repos/github/linguist/contents/new_file.md
This means that we generate a timestamp for the moment your API call is made in the timezone this header defines. For example, the Contents API generates a git commit for each addition or change and uses the current time as the timestamp. This header will determine the timezone used for generating that current timestamp.
Using the last known timezone for the user
If no Time-Zone
header is specified and you make an authenticated call to the
API, we use the last known timezone for the authenticated user. The last known
timezone is updated whenever you browse the GitHub website.
UTC
If the steps above don't result in any information, we use UTC as the timezone to create the git commit.


Visualise the results of F test to compare two variances, Student's t-test, test of equal or given proportions, Pearson's chi-squared test for count data and test for association/correlation between paired samples.
| Version: | 0.1.0 |
| Depends: | R (≥ 3.4.0) |
| Imports: | ggplot2, rlang, stats |
| Suggests: | knitr, MASS, rmarkdown |
| Published: | 2018-11-19 |
| Author: | Charalampos Bratsas [aut], Anastasia Foudouli [aut], Kleanthis Koupidis [aut, cre] |
| Maintainer: | Kleanthis Koupidis <koupidis at okfn.gr> |
| BugReports: | https://github.com/okgreece/gginference/issues |
| License: | GPL-2 | file LICENSE |
| URL: | https://github.com/okgreece/gginference |
| NeedsCompilation: | no |
| Materials: | README |
| CRAN checks: | gginference results |
| Reference manual: | gginference.pdf |
| Package source: | gginference_0.1.0.tar.gz |
| Windows binaries: | r-devel: gginference_0.1.0.zip, r-release: gginference_0.1.0.zip, r-oldrel: gginference_0.1.0.zip |
| OS X binaries: | r-release: gginference_0.1.0.tgz, r-oldrel: gginference_0.1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=gginference to link to this page.


Apple Developer Academy | March 2020 - Des 2020
Learn coding, design, and business with Challange Based Learning framework
PT. Intan Sari Abadi | Nov 2019 - Nov 2019
Managed web company and web admin projects from start to finish
Manual testing app and create documentation of projects
Communicate and coordinate between the project owner and the coder
Badan Pengelolaan dan Aset Daerah Kota Batam | Sep 2017 - Des 2018
Junior application consultant SIPKAD Batam
Database entry with Microsoft Excel, operator, verifier data asset of Embung Fatimah Hospital
Badan Pengusahaan Batam | Jan 2017 - Mei 2017
Create a website application for visualizing LPSE BP Batam


|
ReactPhysics3D
0.6.0
Physics engine library
|
This class computes the collision detection algorithms. More...
#include <CollisionDetection.h>
Public Member Functions | |
| CollisionDetection (CollisionWorld *world, MemoryAllocator &memoryAllocator) | |
| Constructor. | |
| ~CollisionDetection () | |
| Destructor. | |
| void | setCollisionDispatch (CollisionDispatch *collisionDispatch) |
| Set the collision dispatch configuration. | |
| NarrowPhaseAlgorithm * | getCollisionAlgorithm (CollisionShapeType shape1Type, CollisionShapeType shape2Type) const |
| Return the Narrow-phase collision detection algorithm to use between two types of shapes. | |
| void | addProxyCollisionShape (ProxyShape *proxyShape, const AABB &aabb) |
| Add a proxy collision shape to the collision detection. | |
| void | removeProxyCollisionShape (ProxyShape *proxyShape) |
| Remove a proxy collision shape from the collision detection. | |
| void | updateProxyCollisionShape (ProxyShape *shape, const AABB &aabb, const Vector3 &displacement=Vector3(0, 0, 0), bool forceReinsert=false) |
| Update a proxy collision shape (that has moved for instance) | |
| void | addNoCollisionPair (CollisionBody *body1, CollisionBody *body2) |
| Add a pair of bodies that cannot collide with each other. | |
| void | removeNoCollisionPair (CollisionBody *body1, CollisionBody *body2) |
| Remove a pair of bodies that cannot collide with each other. | |
| void | askForBroadPhaseCollisionCheck (ProxyShape *shape) |
| Ask for a collision shape to be tested again during broad-phase. More... | |
| void | computeCollisionDetection () |
| Compute the collision detection. | |
| void | testCollisionBetweenShapes (CollisionCallback *callback, const std::set< uint > &shapes1, const std::set< uint > &shapes2) |
| Compute the collision detection. | |
| void | reportCollisionBetweenShapes (CollisionCallback *callback, const std::set< uint > &shapes1, const std::set< uint > &shapes2) |
| Report collision between two sets of shapes. | |
| void | raycast (RaycastCallback *raycastCallback, const Ray &ray, unsigned short raycastWithCategoryMaskBits) const |
| Ray casting method. | |
| bool | testAABBOverlap (const CollisionBody *body1, const CollisionBody *body2) const |
| Test if the AABBs of two bodies overlap. | |
| bool | testAABBOverlap (const ProxyShape *shape1, const ProxyShape *shape2) const |
| Test if the AABBs of two proxy shapes overlap. | |
| void | broadPhaseNotifyOverlappingPair (ProxyShape *shape1, ProxyShape *shape2) |
| Allow the broadphase to notify the collision detection about an overlapping pair. More... | |
| void | computeNarrowPhaseBetweenShapes (CollisionCallback *callback, const std::set< uint > &shapes1, const std::set< uint > &shapes2) |
| Compute the narrow-phase collision detection. | |
| CollisionWorld * | getWorld () |
| Return a pointer to the world. | |
| EventListener * | getWorldEventListener () |
| Return the world event listener. | |
| MemoryAllocator & | getWorldMemoryAllocator () |
| Return a reference to the world memory allocator. | |
| virtual void | notifyContact (OverlappingPair *overlappingPair, const ContactPointInfo &contactInfo) |
| Called by a narrow-phase collision algorithm when a new contact has been found. | |
| void | createContact (OverlappingPair *overlappingPair, const ContactPointInfo &contactInfo) |
| Create a new contact. | |
Friends | |
| class | DynamicsWorld |
| class | ConvexMeshShape |
This class computes the collision detection algorithms.
We first perform a broad-phase algorithm to know which pairs of bodies can collide and then we run a narrow-phase algorithm to compute the collision contacts between bodies.
|
inline |
Ask for a collision shape to be tested again during broad-phase.
We simply put the shape in the list of collision shape that have moved in the previous frame so that it is tested for collision again in the broad-phase.
| void CollisionDetection::broadPhaseNotifyOverlappingPair | ( | ProxyShape * | shape1, |
| ProxyShape * | shape2 | ||
| ) |
Allow the broadphase to notify the collision detection about an overlapping pair.
This method is called by the broad-phase collision detection algorithm.


math::calculus::romberg - Romberg integration
The romberg procedures in the math::calculus package perform numerical integration of a function of one variable. They are intended to be of "production quality" in that they are robust, precise, and reasonably efficient in terms of the number of function evaluations.
The following procedures are available for Romberg integration:
Integrates an analytic function over a given interval.
Integrates an analytic function over a half-infinite interval.
Integrates a function that is expected to be analytic over an interval except for the presence of an inverse square root singularity at the lower limit.
Integrates a function that is expected to be analytic over an interval except for the presence of an inverse square root singularity at the upper limit.
Integrates a function that is expected to be analytic over an interval except for the presence of a power law singularity at the lower limit.
Integrates a function that is expected to be analytic over an interval except for the presence of a power law singularity at the upper limit.
Integrates an exponentially growing function; the lower limit of the region of integration may be arbitrarily large and negative.
Integrates an exponentially decaying function; the upper limit of the region of integration may be arbitrarily large.
Function to integrate. Must be expressed as a single Tcl command, to which will be appended a single argument, specifically, the abscissa at which the function is to be evaluated. The first word of the command will be processed with namespace which in the caller's scope prior to any evaluation. Given this processing, the command may local to the calling namespace rather than needing to be global.
Lower limit of the region of integration.
Upper limit of the region of integration. For the romberg_sqrtSingLower, romberg_sqrtSingUpper, romberg_powerLawLower, romberg_powerLawUpper, romberg_expLower, and romberg_expUpper procedures, the lower limit must be strictly less than the upper. For the other procedures, the limits may appear in either order.
Power to use for a power law singularity; see section IMPROPER INTEGRALS for details.
Requests that the integration machinery proceed at most until the estimated absolute error of the integral is less than epsilon. The error may be seriously over- or underestimated if the function (or any of its derivatives) contains singularities; see section IMPROPER INTEGRALS for details. Default is 1.0e-08.
Requests that the integration machinery proceed at most until the estimated relative error of the integral is less than epsilon. The error may be seriously over- or underestimated if the function (or any of its derivatives) contains singularities; see section IMPROPER INTEGRALS for details. Default is 1.0e-06.
Requests that integration terminate after at most n triplings of the number of evaluations performed. In other words, given n for -maxiter, the integration machinery will make at most 3**n evaluations of the function. Default is 14, corresponding to a limit approximately 4.8 million evaluations. (Well-behaved functions will seldom require more than a few hundred evaluations.)
Requests that an extrapolating polynomial of degree d be used in Romberg integration; see section DESCRIPTION for details. Default is 4. Can be at most m-1.
The romberg procedure performs Romberg integration using the modified midpoint rule. Romberg integration is an iterative process. At the first step, the function is evaluated at the midpoint of the region of integration, and the value is multiplied by the width of the interval for the coarsest possible estimate. At the second step, the interval is divided into three parts, and the function is evaluated at the midpoint of each part; the sum of the values is multiplied by three. At the third step, nine parts are used, at the fourth twenty-seven, and so on, tripling the number of subdivisions at each step.
Once the interval has been divided at least d times, a polynomial is fitted to the integrals estimated in the last d+1 divisions. The integrals are considered to be a function of the square of the width of the subintervals (any good numerical analysis text will discuss this process under "Romberg integration"). The polynomial is extrapolated to a step size of zero, computing a value for the integral and an estimate of the error.
This process will be well-behaved only if the function is analytic over the region of integration; there may be removable singularities at either end of the region provided that the limit of the function (and of all its derivatives) exists as the ends are approached. Thus, romberg may be used to integrate a function like f(x)=sin(x)/x over an interval beginning or ending at zero.
Note that romberg will either fail to converge or else return incorrect error estimates if the function, or any of its derivatives, has a singularity anywhere in the region of integration (except for the case mentioned above). Care must be used, therefore, in integrating a function like 1/(1-x**2) to avoid the places where the derivative is singular.
Romberg integration is also useful for integrating functions over half-infinite intervals or functions that have singularities. The trick is to make a change of variable to eliminate the singularity, and to put the singularity at one end or the other of the region of integration. The math::calculus package supplies a number of romberg procedures to deal with the commoner cases.
Integrates a function over a half-infinite interval; either a or b may be infinite. a and b must be of the same sign; if you need to integrate across the axis, say, from a negative value to positive infinity, use romberg to integrate from the negative value to a small positive value, and then romberg_infinity to integrate from the positive value to positive infinity. The romberg_infinity procedure works by making the change of variable u=1/x, so that the integral from a to b of f(x) is evaluated as the integral from 1/a to 1/b of f(1/u)/u**2.
Integrate a function that has an integrable power law singularity at either the lower or upper bound of the region of integration (or has a derivative with a power law singularity there). These procedures take a first parameter, gamma, which gives the power law. The function or its first derivative are presumed to diverge as (x-a)**(-gamma) or (b-x)**(-gamma). gamma must be greater than zero and less than 1.
These procedures are useful not only in integrating functions that go to infinity at one end of the region of integration, but also functions whose derivatives do not exist at the end of the region. For instance, integrating f(x)=pow(x,0.25) with the origin as one end of the region will result in the romberg procedure greatly underestimating the error in the integral. The problem can be fixed by observing that the first derivative of f(x), f'(x)=x**(-3/4)/4, goes to infinity at the origin. Integrating using romberg_powerLawLower with gamma set to 0.75 gives much more orderly convergence.
These procedures operate by making the change of variable u=(x-a)**(1-gamma) (romberg_powerLawLower) or u=(b-x)**(1-gamma) (romberg_powerLawUpper).
To summarize the meaning of gamma:
If f(x) ~ x**(-a) (0 < a < 1), use gamma = a
If f'(x) ~ x**(-b) (0 < b < 1), use gamma = b
These procedures behave identically to romberg_powerLawLower and romberg_powerLawUpper for the common case of gamma=0.5; that is, they integrate a function with an inverse square root singularity at one end of the interval. They have a simpler implementation involving square roots rather than arbitrary powers.
These procedures are for integrating a function that grows or decreases exponentially over a half-infinite interval. romberg_expLower handles exponentially growing functions, and allows the lower limit of integration to be an arbitrarily large negative number. romberg_expUpper handles exponentially decaying functions and allows the upper limit of integration to be an arbitrary large positive number. The functions make the change of variable u=exp(-x) and u=exp(x) respectively.
If you need an improper integral other than the ones listed here, a change of variable can be written in very few lines of Tcl. Because the Tcl coding that does it is somewhat arcane, we offer a worked example here.
Let's say that the function that we want to integrate is f(x)=exp(x)/sqrt(1-x*x) (not a very natural function, but a good example), and we want to integrate it over the interval (-1,1). The denominator falls to zero at both ends of the interval. We wish to make a change of variable from x to u so that dx/sqrt(1-x**2) maps to du. Choosing x=sin(u), we can find that dx=cos(u)*du, and sqrt(1-x**2)=cos(u). The integral from a to b of f(x) is the integral from asin(a) to asin(b) of f(sin(u))*cos(u).
We can make a function g that accepts an arbitrary function f and the parameter u, and computes this new integrand.
proc g { f u } { set x [expr { sin($u) }] set cmd $f; lappend cmd $x; set y [eval $cmd] return [expr { $y / cos($u) }] }
Now integrating f from a to b is the same as integrating g from asin(a) to asin(b). It's a little tricky to get f consistently evaluated in the caller's scope; the following procedure does it.
proc romberg_sine { f a b args } { set f [lreplace $f 0 0 [uplevel 1 [list namespace which [lindex $f 0]]]] set f [list g $f] return [eval [linsert $args 0 romberg $f [expr { asin($a) }] [expr { asin($b) }]]] }
This romberg_sine procedure will do any function with sqrt(1-x*x) in the denominator. Our sample function is f(x)=exp(x)/sqrt(1-x*x):
proc f { x } { expr { exp($x) / sqrt( 1. - $x*$x ) } }
Integrating it is a matter of applying romberg_sine as we would any of the other romberg procedures:
foreach { value error } [romberg_sine f -1.0 1.0] break puts [format "integral is %.6g +/- %.6g" $value $error] integral is 3.97746 +/- 2.3557e-010
This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category math :: calculus of the Tcllib Trackers. Please also report any ideas for enhancements you may have for either package and/or documentation.
When proposing code changes, please provide unified diffs, i.e the output of diff -u.
Note further that attachments are strongly preferred over inlined patches. Attachments can be made by going to the Edit form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.
Mathematics
Copyright © 2004 Kevin B. Kenny<EMAIL_ADDRESS>All rights reserved. Redistribution permitted under the terms of the Open Publication License <http://www.opencontent.org/openpub/>


This is my paragraph.
This second paragraph has words that are bold, italicized, and regular. Most of the words are regular though.
Some paragraphs have a line break in the middle of them.
there is a comment above me, but you can't see it


Create QRcode in R.
| Version: | 0.1.1 |
| Depends: | R (≥ 3.0.0) |
| Imports: | R.utils, stringr, stats, utils |
| Published: | 2015-08-23 |
| Author: | Victor Teh |
| Maintainer: | Victor Teh <victorteh at gmail.com> |
| License: | GPL-3 |
| NeedsCompilation: | no |
| Materials: | README |
| CRAN checks: | qrcode results |
| Reference manual: | qrcode.pdf |
| Package source: | qrcode_0.1.1.tar.gz |
| Windows binaries: | r-devel: qrcode_0.1.1.zip, r-release: qrcode_0.1.1.zip, r-oldrel: qrcode_0.1.1.zip |
| OS X binaries: | r-release: qrcode_0.1.1.tgz, r-oldrel: qrcode_0.1.1.tgz |
| Reverse depends: | baRcodeR |
Please use the canonical form https://CRAN.R-project.org/package=qrcode to link to this page.


Postulates
Introduction text (if needed) goes here.
- "Let it have been postulated to draw a straight-line from any point to any point."
- "And to produce a finite straight-line continuously in a straight-line."
- "And to draw a circle with any center and radius."
- "And that all right-angles are equal to one another."
- "And that if a straight-line falling across two (other) straight-lines makes internal angles on the same side (of itself whose sum is) less than two right-angles, then the two (other) straight-lines, being produced to infinity, meet on that side (of the original straight-line) that the (sum of the internal angles) is less than two right-angles (and do not meet on the other side).""


wordpress481
Just another WordPress site
For more information related to the content in this course, contact
Admin login
The rich content of this course was developed in partnership with the VE Design team
Image credit: Charlievdb


📅 (2022-10-28 13:50:54 UTC)
# Packages matching: installed # Name # Installed # Synopsis base-bigarray base base-num base Num library distributed with the OCaml compiler base-threads base base-unix base camlp5 7.14 Preprocessor-pretty-printer of OCaml conf-findutils 1 Virtual package relying on findutils conf-perl 2 Virtual package relying on perl coq 8.8.0 Formal proof management system num 0 The Num library for arbitrary-precision integer and rational arithmetic ocaml 4.05.0 The OCaml compiler (virtual package) ocaml-base-compiler 4.05.0 Official 4.05.0 release ocaml-config 1 OCaml Switch Configuration ocamlfind 1.9.5 A library manager for OCaml # opam file: opam-version: "2.0" maintainer<EMAIL_ADDRESS>homepage: "http://mattam.org/research/russell/fingertrees.en.html" license: "LGPL" build: [make "-j%{jobs}%"] install: [make "install"] remove: ["rm" "-R" "%{lib}%/coq/user-contrib/FingerTree"] depends: [ "coq" {>= "8.8" & < "8.9~"} ] tags: [ "keyword: data structures" "keyword: dependent types" "keyword: Finger Trees" "category: Computer Science/Data Types and Data Structures" "date: 2009-02" ] authors: [ "Matthieu Sozeau<EMAIL_ADDRESS>[http://mattam.org]" ] bug-reports: "https://github.com/coq-contribs/finger-tree/issues" dev-repo: "git+https://github.com/coq-contribs/finger-tree.git" synopsis: "Dependent Finger Trees" description: """ A verified generic implementation of Finger Trees""" flags: light-uninstall url { src: "https://github.com/coq-contribs/finger-tree/archive/v8.8.0.tar.gz" checksum: "md5=f706927eba694ff80886621fab015dac" }
true
Dry install with the current Coq version:
opam install -y --show-action coq-finger-tree.8.8.0 coq.8.8.0
Dry install without Coq/switch base, to test if the problem was incompatibility with the current Coq/OCaml version:
true
opam list; echo; ulimit -Sv 4000000; timeout 4h opam install -y --deps-only coq-finger-tree.8.8.0 coq.8.8.0
opam list; echo; ulimit -Sv 16000000; timeout 4h opam install -y -v coq-finger-tree.8.8.0 coq.8.8.0
# Packages matching: installed # Name # Installed # Synopsis base-bigarray base base-num base Num library distributed with the OCaml compiler base-threads base base-unix base camlp5 7.14 Preprocessor-pretty-printer of OCaml conf-findutils 1 Virtual package relying on findutils conf-perl 2 Virtual package relying on perl coq 8.8.0 Formal proof management system num 0 The Num library for arbitrary-precision integer and rational arithmetic ocaml 4.05.0 The OCaml compiler (virtual package) ocaml-base-compiler 4.05.0 Official 4.05.0 release ocaml-config 1 OCaml Switch Configuration ocamlfind 1.9.5 A library manager for OCaml [NOTE] Package coq is already installed (current version is 8.8.0). The following actions will be performed: - install coq-finger-tree 8.8.0 <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> Processing 1/1: [coq-finger-tree.8.8.0: http] [coq-finger-tree.8.8.0] downloaded from https://github.com/coq-contribs/finger-tree/archive/v8.8.0.tar.gz Processing 1/1: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> Processing 1/2: [coq-finger-tree: make] + /home/bench/.opam/opam-init/hooks/sandbox.sh "build" "make" "-j7" (CWD=/home/bench/.opam/ocaml-base-compiler.4.05.0/.opam-switch/build/coq-finger-tree.8.8.0) - coq_makefile -f Make -o Makefile.coq - Warning: -extra and -extra-phony are deprecated. - Warning: Write the extra targets in Makefile.coq.local. - - make -f Makefile.coq Makefile - make[1]: Entering directory '/home/bench/.opam/ocaml-base-compiler.4.05.0/.opam-switch/build/coq-finger-tree.8.8.0' - COQDEP VFILES - make[1]: Nothing to be done for 'Makefile'. - make[1]: Leaving directory '/home/bench/.opam/ocaml-base-compiler.4.05.0/.opam-switch/build/coq-finger-tree.8.8.0' - make -f Makefile.coq all - make[1]: Entering directory '/home/bench/.opam/ocaml-base-compiler.4.05.0/.opam-switch/build/coq-finger-tree.8.8.0' - COQC StringInterface.v - COQC Reduce.v - COQC Monoid.v - COQC OrderedType.v - COQC Modules.v - COQC Notations.v - File "./StringInterface.v", line 7, characters 0-49: - Warning: Notation _ ~= _ was already used. [notation-overridden,parsing] - COQC KeyMonoid.v - File "./StringInterface.v", line 21, characters 2-14: - Warning: Notation _ ~= _ was already used. [notation-overridden,parsing] - File "./StringInterface.v", line 42, characters 2-14: - Warning: Notation _ ~= _ was already used. [notation-overridden,parsing] - COQC Digit.v - COQC DigitModule.v - File "./DigitModule.v", line 129, characters 4-78: - Warning: Notation lparr _ rparr was already used. - [notation-overridden,parsing] - File "./DigitModule.v", line 155, characters 4-78: - Warning: Notation lparr _ rparr was already used. - [notation-overridden,parsing] - COQC DependentFingerTreeModule.v - File "./DependentFingerTreeModule.v", line 42, characters 4-50: - Warning: Notation lparr _ rparr was already used. - [notation-overridden,parsing] - COQC DependentFingerTree.v - File "./DependentFingerTree.v", line 529, characters 6-27: - Warning: Use of “Require” inside a section is deprecated. - [require-in-section,deprecated] - File "./DependentFingerTreeModule.v", line 1209, characters 6-80: - Warning: Notation lparr _ rparr was already used. - [notation-overridden,parsing] - Finished transaction in 26.581 secs (8.355u,0.026s) (successful) - File "./DependentFingerTreeModule.v", line 1296, characters 6-80: - Warning: Notation lparr _ rparr was already used. - [notation-overridden,parsing] - COQC FingerTreeModule.v - COQC FingerTree.v - COQC DependentSequence.v - File "./FingerTreeModule.v", line 9, characters 0-45: - Warning: There is no option Standard Proposition Elimination Names. - [unknown-option,option] - File "./FingerTree.v", line 10, characters 0-43: - Warning: Implicit Arguments is deprecated; use Arguments instead - [deprecated-implicit-arguments,deprecated] - Inductive - tree_split (p : Digits.v -> bool) (A : Type) (measure : A -> Digits.v) - (i : Digits.v) : Digits.v -> Type := - mkTreeSplit : forall xsm : Digits.v, - {xs : fingertree measure xsm | - isEmpty xs \/ p (i cdot xsm) = false} -> - forall (x : A) (ysm : Digits.v), - {ys : fingertree measure ysm | - isEmpty ys \/ p (i cdot xsm cdot measure x) = true} -> - tree_split p measure i (xsm cdot measure x cdot ysm) - - For tree_split: Argument A is implicit - For mkTreeSplit: Arguments A, measure, xsm, ysm are implicit - For tree_split: Argument scopes are [function_scope type_scope function_scope - _ _] - For mkTreeSplit: Argument scopes are [function_scope type_scope - function_scope _ _ _ _ _ _] - File "./FingerTree.v", line 66, characters 2-22: - Warning: Use of “Require” inside a section is deprecated. - [require-in-section,deprecated] - COQC RopeModule.v - File "./FingerTree.v", line 187, characters 4-40: - Warning: Use of “Require” inside a section is deprecated. - [require-in-section,deprecated] - COQC Sequence.v - COQC PrioQueue.v - COQC OrdSequence.v - File "./RopeModule.v", line 12, characters 2-18: - Warning: Notation _ ~= _ was already used. [notation-overridden,parsing] - File "./RopeModule.v", line 34, characters 0-159: - Warning: Notation _ ~= _ was already used. [notation-overridden,parsing] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.t"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.eq"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.eq_equiv"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.zero"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.succ"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.pred"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.S"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.P"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.succ_wd"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.pred_wd"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.pred_succ"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.bi_induction"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.one"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.two"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.one_succ"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.two_succ"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.lt"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.le"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.lt_wd"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.lt_eq_cases"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.lt_irrefl"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.lt_succ_r"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.add"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.sub"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.mul"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.add_wd"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.sub_wd"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.mul_wd"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.add_0_l"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.add_succ_l"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.sub_0_r"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.sub_succ_r"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.mul_0_l"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.mul_succ_l"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.max"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.max_l"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.max_r"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.min"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.min_l"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.min_r"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.pred_0"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.recursion"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.recursion_wd"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.recursion_0"! - [masking-absolute-name,deprecated] - File "./RopeModule.v", line 40, characters 2-11: - Warning: Trying to mask the absolute name "NAxioms.recursion_succ"! - [masking-absolute-name,deprecated] - File "./Sequence.v", line 34, characters 2-23: - Warning: Use of “Require” inside a section is deprecated. - [require-in-section,deprecated] - File "./DependentSequence.v", line 210, characters 2-38: - Warning: Use of “Require” inside a section is deprecated. - [require-in-section,deprecated] - File "./DependentSequence.v", line 211, characters 2-48: - Warning: Use of “Require” inside a section is deprecated. - [require-in-section,deprecated] - File "./DependentSequence.v", line 212, characters 2-55: - Warning: Notation _ ::> _ was already used. [notation-overridden,parsing] - File "./RopeModule.v", line 107, characters 2-89: - Warning: sub is declared as a local axiom [local-declaration,scope] - make -f Makefile.coq test - cd extraction/ml/; rm -f *.ml *.mli *.cm* *.o; "coqc" -q -opt -R ../.. FingerTree Extract.v - File "./Extract.v", line 22, characters 0-46: - Warning: The following logical axioms were - encountered: split_size view_right_size. - Having invalid logical axiom in the - environment when extracting may lead to incorrect or non-terminating ML - terms. - [extraction-logical-axiom,extraction] - File "./Extract.v", line 23, characters 0-40: - Warning: The following axiom must be realized in the extracted code: - sub. - [extraction-axiom-to-realize,extraction] - File "./Extract.v", line 23, characters 0-40: - Warning: The following logical axioms were - encountered: split_size view_right_size. - Having invalid logical axiom in the - environment when extracting may lead to incorrect or non-terminating ML - terms. - [extraction-logical-axiom,extraction] - cd extraction/ml/; make all - ocamldep -native StringInterface.mli > ._ncdi/StringInterface.di - ocamldep -native RopeModule.mli > ._ncdi/RopeModule.di - ocamldep -native FingerTreeModule.mli > ._ncdi/FingerTreeModule.di - ocamldep -native DigitModule.mli > ._ncdi/DigitModule.di - ocamldep -native DependentFingerTreeModule.mli > ._ncdi/DependentFingerTreeModule.di - ocamldep -native Modules.mli > ._ncdi/Modules.di - ocamldep -native NDefOps.mli > ._ncdi/NDefOps.di - ocamldep -native NAxioms.mli > ._ncdi/NAxioms.di - ocamldep -native NBase.mli > ._ncdi/NBase.di - ocamldep -native OrdersTac.mli > ._ncdi/OrdersTac.di - ocamldep -native NZAxioms.mli > ._ncdi/NZAxioms.di - ocamldep -native Orders.mli > ._ncdi/Orders.di - ocamldep -native Equalities.mli > ._ncdi/Equalities.di - ocamldep -native Specif.mli > ._ncdi/Specif.di - ocamldep -native Sumbool.mli > ._ncdi/Sumbool.di - ocamldep -native Bool.mli > ._ncdi/Bool.di - ocamldep -native Nat.mli > ._ncdi/Nat.di - ocamldep -native Logic.mli > ._ncdi/Logic.di - ocamldep -native Datatypes.mli > ._ncdi/Datatypes.di - ocamldep StringInterface.ml > ._d/StringInterface.d - ocamldep RopeModule.ml > ._d/RopeModule.d - ocamldep FingerTreeModule.ml > ._d/FingerTreeModule.d - ocamldep DependentFingerTreeModule.ml > ._d/DependentFingerTreeModule.d - ocamldep NDefOps.ml > ._d/NDefOps.d - ocamldep NBase.ml > ._d/NBase.d - ocamldep Modules.ml > ._d/Modules.d - ocamldep NAxioms.ml > ._d/NAxioms.d - ocamldep NZAxioms.ml > ._d/NZAxioms.d - ocamldep DigitModule.ml > ._d/DigitModule.d - ocamldep OrdersTac.ml > ._d/OrdersTac.d - ocamldep Orders.ml > ._d/Orders.d - ocamldep Equalities.ml > ._d/Equalities.d - ocamldep Sumbool.ml > ._d/Sumbool.d - ocamldep Specif.ml > ._d/Specif.d - ocamldep Nat.ml > ._d/Nat.d - ocamldep Datatypes.ml > ._d/Datatypes.d - ocamldep Bool.ml > ._d/Bool.d - ocamldep Logic.ml > ._d/Logic.d - ocamlc -c -for-pack Fingertrees Datatypes.mli - ocamlc -c -for-pack Fingertrees Sumbool.mli - ocamlc -c -for-pack Fingertrees Logic.mli - ocamlopt -c -for-pack Fingertrees -inline 1000 Decimal.ml - ocamlc -c -for-pack Fingertrees Decimal.mli - ocamlc -c -for-pack Fingertrees Bool.mli - ocamlc -c -for-pack Fingertrees Modules.mli - File "Decimal.ml", line 1: - Error: Could not find the .cmi file for interface Decimal.mli. - make[5]: *** [OCamlMakefile:966: Decimal.cmx] Error 2 - make[5]: *** Waiting for unfinished jobs.... - ocamlc -c -for-pack Fingertrees Specif.mli - make[4]: *** [OCamlMakefile:744: native-code-library] Error 2 - make[3]: *** [Makefile.coq.conf:70: test] Error 2 - make[2]: *** [Makefile.coq.conf:66: post-all] Error 2 - make[1]: *** [Makefile.coq:319: all] Error 2 - make[1]: Leaving directory '/home/bench/.opam/ocaml-base-compiler.4.05.0/.opam-switch/build/coq-finger-tree.8.8.0' - make: *** [Makefile:2: all] Error 2 [ERROR] The compilation of coq-finger-tree failed at "/home/bench/.opam/opam-init/hooks/sandbox.sh build make -j7". #=== ERROR while compiling coq-finger-tree.8.8.0 ==============================# # context 2.0.1 | linux/x86_64 | ocaml-base-compiler.4.05.0 | file:///home/bench/run/opam-coq-archive/released # path ~/.opam/ocaml-base-compiler.4.05.0/.opam-switch/build/coq-finger-tree.8.8.0 # command ~/.opam/opam-init/hooks/sandbox.sh build make -j7 # exit-code 2 # env-file ~/.opam/log/coq-finger-tree-18707-865888.env # output-file ~/.opam/log/coq-finger-tree-18707-865888.out ### output ### # [...] # ocamlc -c -for-pack Fingertrees Modules.mli # File "Decimal.ml", line 1: # Error: Could not find the .cmi file for interface Decimal.mli. # make[5]: *** [OCamlMakefile:966: Decimal.cmx] Error 2 # make[5]: *** Waiting for unfinished jobs.... # ocamlc -c -for-pack Fingertrees Specif.mli # make[4]: *** [OCamlMakefile:744: native-code-library] Error 2 # make[3]: *** [Makefile.coq.conf:70: test] Error 2 # make[2]: *** [Makefile.coq.conf:66: post-all] Error 2 # make[1]: *** [Makefile.coq:319: all] Error 2 # make[1]: Leaving directory '/home/bench/.opam/ocaml-base-compiler.4.05.0/.opam-switch/build/coq-finger-tree.8.8.0' # make: *** [Makefile:2: all] Error 2 <><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> +- The following actions failed | - build coq-finger-tree 8.8.0 +- - No changes have been performed # Run eval $(opam env) to update the current shell environment 'opam install -y -v coq-finger-tree.8.8.0 coq.8.8.0' failed.
No files were installed.
true


Help & Support
Log In
Login to your account or
Start free trial
Email:
You need to enter Email or Username
Password:
You need to enter password
Remember me
Forgot password?
or
Start 14-day Trial


Example Class 4 (Week 11 – Week 12)
Please choose one of the following two projects (Project 4A or 4B):
Project 4A: Statistical and topological analysis of social networks
Write a program (in Java, C or C++) to analyze the statistical properties of a social network. For a node in a network (or graph), its degree is the number of other nodes connected with it. In this project, we will calculate and analyze the distribution of node degrees for a graph G that represents a social network, to see if G represents a “scale-free” network.
The following definition of "scale-free network" is from Wikipedia, and it is used in this project:
"A scale-free network is a network whose degree distribution follows a power law, at least asymptotically. That is, the fraction P(k) of nodes in the network having k connections to other nodes goes for large values of k as P(k) ∝ k-γ, where γ is a parameter whose value is typically in the range 2 < γ < 3 , although occasionally it may lie outside these bounds."
The project can be divided into the following steps:
-
Retrieve a real social network dataset of big size: You may use APIs of
some publicly available social networks. For example:
Also, you can choose a social network from SNAP.
A recommended network size is around 5000 nodes. But you may also choose other network sizes. Use either an adjacency matrix or an array of adjacency lists to represent the network. - Calculate node degrees: Design and implement an algorithm to calculate the degrees of all the nodes in the network.
- Study the distribution of node degrees: Plot a histogram for the node degrees in your network, where the variable on x-axis is k (i.e. the node degree), and the variable on y-axis is P(k) (i.e. the fraction of nodes having degree equal to k). Do curve fitting (e.g. using Microsoft Excel or R) of the power-law function to the data, choosing a value for γ that fits the data well.
In your report and presentation, please describe the above steps and results.
Project 4B: Application of BFS to flight scheduling
Construct an undirected graph to represent non-stop airline flights between cities in the world (a hypothetical graph for Asia Pacific is given below). In your graph, please add more cities and flights to make it more realistic. It should contain at least one pair of cities, between which there is no non-stop flight, but there is a route (or path) between them.
Implement the Breadth-first search (BFS) algorithm (using Java or C/C++) to find a route between two cities with the minimum number of stops. That is, when user inputs the names of two cities, your program should return one route with the smallest possible number of stop(s). If a non-stop flight is available, it will just return the departure city and arrival city.
In your report and presentation, please include a description and results of the following steps:
- Measure the CPU times of your program on graphs of different sizes, and analyze how the running times depend on the numbers of cities and non-stop flights.
- Explain whether Depth-first search (DFS) algorithm can be used in place of BFS, why or why not.
Note for Example class 4
Any student who has not done any presentation for his/her group must present.


How Jose Mourinho surprised Tottenham players on his first day at the club
by Magnus EriksenJose Mourinho is reported to have surprised some of his players on his first day as Tottenham manager.
The Portuguese tactician is back in Premier League management again after a spell away from the game since he was sacked by Manchester United last December.
MORE: Why Arsenal job did not appeal to new Tottenham manager Jose Mourinho
Shortly after the sacking of Mauricio Pochettino, Mourinho was announced as the new Spurs manager on Wednesday morning.
Known for being one of the game’s real characters, it’s fair to say the former Man Utd and Chelsea boss’ reputation has perhaps taken a turn for the worse after difficulties in his last few jobs.
Things ended badly for him at Real Madrid, his second stint at Chelsea, and then at United last year, but it seems he’s taken people by surprise at Tottenham.
According to the Evening Standard, the new manager surprised players by how engaging he was as he took the time to speak to every one of his new players individually, as well as giving a talk to the group as a whole.
Spurs fans will now be hoping Mourinho can surprise them too, with his appointment in the place of the extremely popular Pochettino not initially going down too well.


Code Block
def echo(word):
print(word)
Inline
code
is supported.
This table is from Markdown Cheatcheet by Adam
| Tables | Are | Cool |
|---|---|---|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
Using local images is supported. Path specified in Markdown should be either absolute path or path relative to the location of Markdown file.


- isAutomaticReferencingEnabled() - Method in class agilermi.core.RMIRegistry
-
Returns the status of the automatic referencing.
- isCodeDownloadingEnabled() - Method in class agilermi.core.RMIRegistry
-
Gets the code mobility enable flag
- isDisposed() - Method in class agilermi.core.RMIHandler
-
Gets the disposed status of this peer
- isListening() - Method in class agilermi.codemobility.BasicCodeServer
-
- isMethodAsynch(Method) - Method in class agilermi.core.RMIRegistry.MethodAnnotationRegistry
-
Returns the asynchronous status of a remote method.
- isMethodSuppressingFaults(Method) - Method in class agilermi.core.RMIRegistry.MethodAnnotationRegistry
-
Gets the fault suppressing flag of a method.
- isMultiConnectionMode() - Method in class agilermi.core.RMIRegistry
-
Gets the multi-connection mode enable state.
- isOwnStub(Object) - Method in class agilermi.core.RMIHandler
-
Check if the given object is a stub created by this handler
- isRegistered(String) - Method in class agilermi.authentication.StandardRMIAuthenticator
-
Gets the registration status for the given identifier
- isRemote(Class<?>) - Method in class agilermi.core.RMIRegistry
-
Check if a class is marked for automatic referencing.


{% load app_filters %}
You can't see this problem yet, since there are prerequisite problems you have not yet finished.


http://www.speakers-podium.com/susangranger.
Susan Granger's review of "TRUE CRIME" (Warner Bros.)
Clint Eastwood's an insightful director and an often underestimated actor but he needs a more believable story to work with than "True Crime" - along with a more appealing character to play. He's a cynical, amoral reporter on the Oakland "Tribune" who can't keep his pants zipped. In the first scene and in the final scene, he's hitting on 23 year-old girls.  The guy's obviously not guilty and Eastwood - who was given the story as a last-minute fill-in - is determined to prove his innocence within a 12-hour span to get a reprieve before the warden can administer the lethal injection. It's far-fetched but he finds exonerating evidence, plus a witness, that the cops, lawyers, and other reporters haven't unearthed over six years. Meanwhile, he's boffing the wife of the city editor (Dennis Leary) and bantering with the editor-in-chief (James Woods). Actually, the scenes in which Eastwood and Woods trade sardonic zingers are the best in the film. Several extraneous characters are just irritating - like a foul-mouthed panhandler and a pontificating prison minister. There are also the Eastwood family players - remember how he featured his daughter Alison as a singer in "Midnight in the Garden of Good and Evil"? This time, his former girl-friend, Frances Fisher, plays an attorney; his current wife, Dina Ruiz, is a TV reporter (since she is in real-life, it's not a stretch); and his love-child with Fisher cavorts as his daughter (she's adorable). On the Granger Movie Gauge of 1 to 10, "True Crime" is a trite, contrived, tedious 4. It's a crime of excess, filled with people with whom you'd never want to spend one hour, much less two.
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


Check out the source on GitHub.
Maze Game
Get the red square, stay away from the yellow. Use arrow keys.
Level:
1
Restart


Resources For Devs
Technologies
References
Join
About
Resources for developers, by developers.
Web technologies
Learn web development
Developer Tools
The Best place for Web-developers.


{% extends "base.html" %}
{% block page_title %}About{% endblock %}
{% block section %}about{% endblock %}
{% block contents %}
About Me
These days I help teams tick.
In the past I've been a:
- Lead Backend Engineer at Effect Studios
- CTO at Wineloya Digital
- Outreach Lead @ [GDG Ghana][gdg-ghana]
- Consultant Senior Applications Engineer @ MTN & Starbow Airlines(Adaptive Computer Solutions)
- Software Engineer @ Vodafone on the demand and delivery team
- Computer Engineer @ [University of Ghana][1]'s [Remote Sensing & Geographic Information Systems Labs][2]
- Co-Founder/Lead Dev building [thelp]()
- Backend guy at [NibbleIT](http://nibbleitconsult.com/)
- Google Top Contributor (Product Expert)
- Google Student Ambassador
- Computer Engineering Major @ [GTUC](http://gtuc.edu.gh)
[1]: http://ug.edu.gh/
[2]: http://rsgislab.ug.edu.gh/
[gdg-ghana]: https://developers.google.com/groups/chapter/117620641470438104052/
[vodafone]: https://vodafone.com
[MTN]: https://www.mtn.com/
{% endfilter %}


{% extends "base_generic.html" %} {% block content %}
| Portfolio | Net Amount Purchased (£) | Current Value (£) | |
|---|---|---|---|
| Cash | {{cash_net_paid}} | {{cash_net_paid}} | |
| Health Tech | {{health_net_paid}} | {{health_value}} | {% if health_value > 0 %}Analysis{% endif %} |
| ESG | {{ESG_net_paid}} | {{ESG_value}} | {% if ESG_value > 0 %}Analysis{% endif %} |
| TOTAL | £{{total_net_paid}} | £{{total_value}} |
Tip: Click on the series labels to toggle them on or off!


EventData()
Syntax
Data = EventData()Description
Get the data associated with the current event. The event needs to be a custom event sent with PostEvent().
Parameters
None.
Return value
Returns the value associated with the current event. If the current event isn't a custom event sent with PostEvent(), this value is undefined.
See Also
PostEvent(), WindowEvent()
Supported OS
All


SOAP Automation Framework Support
This add-on supports the Automation Framework.
The add-on will import WSDL files containing SOAP endpoints if they are found while spidering but adding them explicitly via a URL or local file is recommended if they are available.
Job: soap
The soap job allows you to import WSDL files locally or from a URL.
- type: soap # SOAP WSDL import
parameters:
wsdlFile: # String: Local file path of the WSDL, default: null, no definition will be imported
wsdlUrl: # String: URL pointing to the WSDL, default: null, no definition will be imported


Talking at LMA in Agrocampus Rennes
30 Nov 2013On November 29 (2013) I had the nice opportunity to visit my French colleagues at the LMA2: Laboratoire de Mathématiques Appliquées (Applied Mathematic Lab) in Agrocampus, Rennes.
The perfect excuse was Sébastien Lê's invitation to give a talk to the grad students specializing in applied statistics.
In case you are wondering who's part of the LMA or what they do? Well it happens that they are one of the most active French groups working with R, and creators of some really cool packages for data analysis like FactoMineR, SensoMineR, missMDA, and FAMT.
This time I was kindly hosted by Julie Josse, who is always enthusiastic to talk about her research and other topics related with data analysis. I also took advantage of my visit to keep the old book signing tradition and ask Jérôme Pagès to sign me a copy of his most recent book (in French) Analyse factorielle multiple avec R.
Context of my talk
You can check the slides of my talk here
Sébastien asked me to make a presentation for the grad students on the work that I've done. First I thought about presenting some case study or some specific statistical analysis application. But then I decided to focus on something slightly different. Instead of giving the typical talk about an XYZ method and how to apply it, I chose to provide a synthesis of my programming experience. More specifically, on my experience developing stats software from within my academia research career.
Basically I'm sharing some personal thoughts around developing stats software at a meta level framework. I didn't talk about any technicalities or how to program. What I presented has to do with the general implications of my work. The take-home question is very simple: What it is that we achieve with a computational-analytical-tool? Personally, when I develop a package, I would like it to help me address at least one of the following principles:


Gmail Notifr Release Notes
0.9.0 (Jan 31, 2014)
- Bugfix & performance optimization
- App Store (paid) version released
0.8.0 (Mar 17, 2013)
- Smaller binary size and memory usage. The app has been re-written (yes again) in Objective-C, of course still open source on github.
- Click Notification Center items to open account. If growl is installed and enabled growl notificatin will be used instead.
- Bugfix: Auto launch not working on some 10.8 machines.
- Optimized icon for retina.
0.7.0 (Sep 16, 2012)
- Mountain Lion 10.8 support. Basic Notification Center feature was also added.
Sorry for the delay on releasing this version.
Special thanks to Kevin Wojniak.
0.6.4 (Feb 25, 2012)
- Bugfix: crash on adding new account (bug in v0.6.3).
0.6.3 (Feb 25, 2012)
- Added browser setting. Now you can set each account to open in different browsers! Support Safari, Google Chrome and Firefox. - thanks to Akinori MUSHA
- Bugfix: mailto handling not working.
- Added Dutch localization. - thanks to Ico Davids
- Note: Doesn't run on Mountain Lion 10.8, not be able to fix it very soon. Follow the author (@ashchan) on twitter if you have suggestions or feedbacks.
0.6.2 (July 31, 2011)
- Fixed Snow Leopard issue.
This version runs on both Snow Leopard and Lion. The app size is bigger than 0.5.2 because it embeds the MacRuby framework.
0.6.1 (July 27, 2011)
Users have reported this version causes crash on Snow Leopard. SL Users: please don't update to this version yet!
- Lion compatible. Note: Intel 64-bit machines required.
- Bugfix: Multiple accounts show same result from a single account.
- Bugfix: Crash on updating menu. Now more stable on Lion.
0.6.0 (July 25, 2011)
- Lion compatible.
- The whole app has been rewritten in MacRuby.
- Several localization and issue fix.
- Note: This is the test build for Lion, some functionalities might not be doing well. Due to the fact it embeds the MacRuby framework, the app size is bigger.
0.5.2 (Aug 30, 2010)
- Enhancements on mailto handler, now should support most situations.
- Localization Fix (German)
0.5.1 (Aug 20, 2010)
- Localization Fix
- Can now set as default email reader to handle mailto link in browser (please set it under Preferences of Mail.app)
0.5.0 (Sep 21, 2009)
- Support separate checking and notification setting for each account
- Option to Enable/Disable account
- Option to hide unread message count in memu bar
- Click on message subject menu item opens that message
- Show message summary as menu item tooltip on message subject
- Show last check time for each account
- Localization for Simplified Chinese, French, Japanese, Italian and German
0.4.4 (Aug 31, 2009)
- Bugfix: Message count doesn’t show in menu bar under Snow Leopard
- Note: A new beta version has also been released (still marked as v0.4.3) at http://ashchan.com/gn-beta.zip. It’s not stable yet so try it at your own risk. Don’t be mad of me if it doesn’t work well.
0.4.3 (Aug 2, 2009)
- New icons from Iiro Jäppinen (http://iirojappinen.com/)
- Do not notify if there’s a connection or wrong username/password error
0.4.2 (Apr 18, 2009)
- Bugfix: Crash when startup items are empty
0.4.1 (Feb 12, 2009)
- Updated icons (don’t update if you like the current icons; don’t be mad if the new set are not looking good for you)
0.4.0 (Feb 3, 2009)
- Added Sparkle Update support and packaged as DMG
- Add unread messages count to menu items for accounts
- Click on menu items for accounts goes to inbox
0.3.5 (Feb 1, 2009)
0.3.4 (Jan 27, 2009)
- Bugfix: Special characters in the password not recognized
0.3.3 (Jan 26, 2009)
- Bugfix: Crash on adding user account
- Reset timer(interval) when check mail by menu
0.3.2 (Jan 8, 2009)
- Bugfix: Username/password could not be saved
0.3.1 (Jan 7, 2009)
- Add hint to guide new user to add an account
- Bugfix: Crash when there’s no account information
- Bugfix: Crash when new message doesn’t have a subject
0.3.0 (Jan 7, 2009)
- Multiple accounts support, finally!
0.2.8 (Dec 7, 2008)
- Do not notify if unread messages unchanged
- Open Inbox with https
0.2.7 (Nov 20, 2008)
- Bugfix: Exit sometimes due to onClick error of the grwol notification
- Handle Gmail feed connect timeout error
0.2.6 (Nov 14, 2008)
- Bugfix: Crash when set launch at login
- Bugfix: Crash on launch
- Do not show count number if there is no new message
0.2.5 (Nov 12, 2008)
- Play the sound when selected in Preferences window
0.2.4 (Nov 7, 2008)
- Added growl and sound notification settings to Preferences
- Got rid of the ssl warning in system log: “peer certificate won’t be verified in this SSL session”
0.2.2 (Nov 3, 2008)
- Goto inbox when click on the growl notification
- Show sender names and subjects of the first three messages
0.2.1 (Oct 31, 2008)
- Bugfix: Crash when registering defaults.
0.2.0 (Oct 30, 2008)
- Added Growl support.
- Play the “Blow” sound when there’re new messages.
0.1.3 (Oct 29, 2008)
- “Open Inbox” goes to the proper url instead of the normal gmail url if hosted domains account is used.
0.1.2 (Oct 4, 2008)


Builder AG opens new specification centre in Dublin
SPECIALIST building products firm AG in Tyrone has opened a new specification centre in Dublin in a move that underlines its commitment to the Irish market and gives it a post-Brexit foothold in the EU.
The third-generation family-owned business, which employs around 200 staff throughout Ireland and the UK, manufactures and sells a wide range of specialist walling, paving and facing brick products used in domestic and commercial hard-landscaping projects.
The Dublin expansion comes on the back of a 30 per cent year-on-year increase in general sales across the business and will see the new centre focus on commercial growth in the Irish market through relationship building with architects, engineers, local authorities and key influencers across multiple sectors.
Eamon Cullen, specification consultant at AG, said: “Our mission is to create innovative quality solutions that are better, safer and faster. We believe this commitment is one of the things that sets us apart in our current markets and that this new facility will provide tangible evidence of our long-term confidence in the Irish marketplace.
“This investment will underline our objective to establish AG as one of the most efficient, innovative and productive companies in our sector.
“Regardless of what happens as a result of Brexit, AG will remain focused on growing sales, profit and performance wherever the opportunities present themselves."


Click the button below to log in
Logged in, but not with a valid account
Click the button below to log out
Ready, waiting for question
Loading...


Ocala events
-
literary period notes romanticism
Age Requirements for each Cruise Line
. Royal Caribbean Cruises; Seabourn Cruises; SeaDream Yacht Club Cruises; Silversea . limitations, impairments, under the influence of alcohol or under a doctor's care. . Standard hospital emergency equipment is available onboard. . Agency, Inc. in MN and OK and AIS Affinity Insurance Agency in NH and NY.
http://cruises.affordabletours.com/search/AgeRequirements/Dover, New Hampshire (NH) profile: population, maps, real estate ...
Dover, New Hampshire detailed profile. . Hospital/medical center in Dover: . Portsmouth Christian Academy (Location: 20 Seaborne Dr.; Grades: K 1-12) .
http://www.city-data.com/city/Dover-New-Hampshire.html
lillian turner larsson escanaba Upcoming events in Ocala
how to teach on online course Hottest Tickets
-
Apr 11rachel ray's party recipes
Amway Center -
Apr 28women's gymnastics 2008 nationals
Amway Center -
Jun 253 4 gram packet
Bob Carr Performing Arts Center -
Mar 30bag of water flys
Amway Center -
Aug 27mating of yellowface bees
Amway Center -
Jun 21content definitions from dictionary com
Amway Center -
Sep 13stellar award nominees 2008
Francis Field -
Mar 17case law on vacate judgement
St Augustine Amphitheatre -
Oct 8who won survivor tocantins
Amway Center -
May 4mating of yellowface bees
Bob Carr Performing Arts Center
Ocala's best venues
-
2011.01.12_CityCouncil.AgendaMaterials
Meeting Location: Council Chambers - 288 Central Avenue, Dover, NH 03820. Meeting Date: Wednesday, January 12, 2011. CITY OF DOVER Meeting Time: 7: .
http://www.docstoc.com/docs/115791489/20110112_CityCouncilAgendaMaterials -
Mass Patriots Volleyball Club North Quincy
Dover Middle School, Dover NH: 16 Daley Drive, Dover, NH 03820. From all points south, take . Pass Newton Wellesley Hospital. Take a left at Woodland . Turn left on Seaborne Drive and look for the gymnasium. Premier Courts: Located .
http://www.masspatriots.com/driving.htm -
NERVA Tournament Facilities Profile | Great Bay Volleyball Club
Other helpful info: Camp chairs allowed and space available, Hospital within 10 miles, Subshops or other nearby . 20 Seabourne Dr. Dover, NH 03820 .
http://www.greatbayvolleyball.com/?page_id=707housing forecast by metro area
98 people's favorite
-
Tournament Directions - Metrowest Juniors Volleyball Club
Go to stoplight and turn left onto Shore Dr. Bancroft School is 1/2 mile on the left. . Pass Newton Wellesley Hospital. . Portsmouth Christian Academy (NH):20 Seaborn Drive Dover, NH - From the North or South: Take Interstate 95 to the .
http://www.metrowestvbc.org/tourney_directions.html -
Report of Proceedings CULTURAL COMPETENCY - Missouri ...
Elvira Trujillo-Schrader. Seaborne Hospital. Yale University School of Medicine. Dover, NH. New Haven, CT. We gratefully acknowledge and thank the following .
http://www.mocmhc.org/documents/Cultural%20Competency%20in%20the%20Age%20of%20Managed%20Care.pdf