NSRRemoteObject Class Reference
| Inherits from | _NSR_SUPERCLASS |
| Conforms to | NSCoding |
| Declared in | NSRRemoteObject.h |
Overview
NSRRemoteObject
is the primary class in NSRails - any classes that subclass it will be treated with a “remote correspondance” and ActiveResource-like APIs will be available.
Note that you do not have to define an id
property for your Objective-C class, as your subclass will inherit NSRRemoteObject’s remoteID
property.
CoreData
To use NSRails with CoreData, subclass NSRRemoteManagedObject.
Validation Errors
If a create or update failed due to validation reasons, NSRails will package the validation failures into a dictionary. This can be retrieved using the key constant NSRErrorResponseBodyKey
in the userInfo
property of the error. This dictionary contains each failed property as a key, with each respective object being an array of the reasons that property failed validation. For instance,
NSError *error;
if (![user createRemote:&error])
{
NSDictionary *validationErrors = [[error userInfo] objectForKey:NSRErrorResponseBodyKey];
for (NSString *property in validationErrors)
{
for (NSString *reasonForFailure in [validationErrors objectForKey:property])
{
NSLog(@"%@ %@",property,reasonForFailure); //=> "Name can't be blank"
}
}
}
Overriding Behavior
See the “Methods to Override” section of this class reference. These methods can be overriden for custom per-property behavior.
Remember, these are not delegate methods. You must make a call to super
if you’re not overriding behavior for that property.
Finally, check out the NSRails Cookbook for quick overriding recipes.
Tasks
Properties
-
remoteID
The corresponding local property for remote attribute
propertyid
. -
remoteAttributes
The most recent dictionary of all properties returned by Rails, exactly as it returned it. (read-only)
property -
remoteDestroyOnNesting
If true, will remotely destroy this object if sent nested.
property
Common controller requests
-
+ remoteAll:
Returns an array of all remote objects (as instances of receiver’s class.) Each instance’s properties will be set to those returned by Rails.
-
+ remoteAllViaObject:error:
Returns an array of all remote objects (as instances of receiver’s class), constructed with a parent prefix. Each instance’s properties will be set to those returned by Rails.
-
+ remoteAllAsync:
Retrieves an array of all remote objects (as instances of receiver’s class.) Each instance’s properties will be set to those returned by Rails.
-
+ remoteAllViaObject:async:
Retrieves an array of all remote objects (as instances of receiver’s class.) Each instance’s properties will be set to those returned by Rails.
-
+ remoteObjectWithID:error:
Returns an instance of receiver’s class corresponding to the remote object with that ID.
-
+ remoteObjectWithID:async:
Retrieves an instance receiver’s class corresponding to the remote object with that ID.
CRUD
-
– remoteFetch:
Retrieves the latest remote data for receiver and sets its properties to received response.
-
– remoteFetchAsync:
Retrieves the latest remote data for receiver and sets its properties to received response.
-
– remoteUpdate:
Updates receiver’s corresponding remote object.
-
– remoteUpdateAsync:
Updates receiver’s corresponding remote object.
-
– remoteCreate:
Creates the receiver remotely. Receiver’s properties will be set to those given by Rails (including remoteID).
-
– remoteCreateAsync:
Creates the receiver remotely. Receiver’s properties will be set to those given by Rails (including
remoteID
). -
– remoteDestroy:
Destroys receiver’s corresponding remote object. Local object will be unaffected.
-
– remoteDestroyAsync:
Destroys receiver’s corresponding remote object. Local object will be unaffected.
-
– remoteReplace:
“Places” receiver’s corresponding remote object.
-
– remoteReplaceAsync:
“Places” receiver’s corresponding remote object.
Setting and retrieving JSON representations
-
– remoteDictionaryRepresentationWrapped:
Serializes the receiver’s properties into a dictionary.
Uses the coding methods.
-
– setPropertiesUsingRemoteDictionary:
Sets the receiver’s properties given a dictionary.
Initializers
-
+ objectWithRemoteDictionary:
Initializes a new instance of the receiver’s class with a given dictionary input.
-
+ objectsWithRemoteDictionaries:
Returns an array of new or existing instances of the receiver’s class, based off input of any number of remote dictionaries (JSON array from the server).
Methods to override
-
+ remoteModelName
The equivalent name of this class on your server.
-
+ remoteControllerName
The name of this class’s controller on the server - where actions for this class should be routed.
-
– objectUsedToPrefixRequest:
Should be overridden if instances of your subclass class should have their resource path be based off an association.
-
– encodeValueForProperty:remoteKey:
Should return the remote representation for each property, optionally modifying the remote key.
-
– decodeRemoteValue:forRemoteKey:
Should set what you want an Objective-C property to be set to, based off a remote representation.
-
– shouldSendProperty:whenNested:
Should return whether or not a certain property should be sent in the outgoing dictionary.
-
– nestedClassForProperty:
Should return the class for the nested object stored in the property, or nil if it is not a nested object.
-
– shouldOnlySendIDKeyForNestedObjectProperty:
Should return whether or not a nested object should be sent with its entire body (
x_attributes
), or just ID (x_id
). -
– propertyForRemoteKey:
Should return the equivalent Objective-C property for a given remote key.
-
– shouldReplaceCollectionForProperty:
Whether or not to fully replace a collection for a given property, as opposed to simply adding to it.
-
+ config
Should return a configuration for this class and its members.
Methods to override (Ruby-specific)
-
– remoteProperties
Should return an array of all properties to be used by NSRails.
-
– propertyIsDate:
Should return whether or not this property should be encoded/decoded to/from a Date object.
Properties
remoteAttributes
The most recent dictionary of all properties returned by Rails, exactly as it returned it. (read-only)
@property (nonatomic, strong, readonly) NSDictionary *remoteAttributes
Discussion
This will include properties that you may not have defined in your Objective-C class, allowing you to dynamically add fields to your app if the server-side model changes. This dictionary won’t go through any of the encoding methods - it’ll be exactly the dictionary as was sent in JSON.
You’re safe to use this property after any method that sets your object’s properties from remote. For example:
NSError *error;
if ([myObj remoteFetch:&error])
{
NSDictionary *hashSentByRails = myObj.remoteAttributes;
…
}
Calling setPropertiesUsingRemoteDictionary:
will also update remoteAttributes to the dictionary passed in.
Declared In
NSRRemoteObject.h
remoteDestroyOnNesting
If true, will remotely destroy this object if sent nested.
@property (nonatomic) BOOL remoteDestroyOnNesting
Discussion
If true, this object will include a _destroy
key on send (ie, when the model nesting it is sent during a remoteUpdate:
or remoteCreate:
).
This can be useful if you have a lot of nested models you need to destroy - you can do it in one request instead of several repeated destroys on each object.
Note that this is relevant for a nested object only. And, for this to work, make sure :allow_destroy => true
is set in your Rails model.
Declared In
NSRRemoteObject.h
remoteID
The corresponding local property for remote attribute id
.
@property (nonatomic, strong) NSNumber *remoteID
Discussion
It should be noted that this property will be automatically updated after remoteCreate, as will anything else that is returned from that create.
Declared In
NSRRemoteObject.h
Class Methods
config
Should return a configuration for this class and its members.
+ (NSRConfig *)config
Return Value
A configuration for this class and its members.
Discussion
The default behavior is to return <NSRConfig’s> contextuallyRelevantConfig
.
Declared In
NSRRemoteObject.h
objectWithRemoteDictionary:
Initializes a new instance of the receiver’s class with a given dictionary input.
+ (instancetype)objectWithRemoteDictionary:(NSDictionary *)remoteDictionary
Parameters
- remoteDictionary
Remote dictionary to be evaluated. (e.g., keys are “id”, not “remoteID”; “my_property”, not “myProperty”).
Note that this dictionary needs to be JSON-parasable, meaning all keys are strings and all objects are instances of NSString, NSNumber, NSArray, NSDictionary, or NSNull.
Return Value
A new instance of the receiver’s class with properties set using dictionary.
Declared In
NSRRemoteObject.h
objectsWithRemoteDictionaries:
Returns an array of new or existing instances of the receiver’s class, based off input of any number of remote dictionaries (JSON array from the server).
+ (NSArray *)objectsWithRemoteDictionaries:(NSArray *)remoteDictionaries
Parameters
- remoteDictionaries
Array of remote dictionaries to be evaluated.
Note that the dictionaries in this array need to be JSON-parasable, meaning all keys are strings and all objects are instances of NSString, NSNumber, NSArray, NSDictionary, or NSNull.
Return Value
An array of new or existing instances of the receiver’s class, with their properties set using the dictionaries in remoteDictionaries.
Declared In
NSRRemoteObject.h
remoteAll:
Returns an array of all remote objects (as instances of receiver’s class.) Each instance’s properties will be set to those returned by Rails.
+ (NSArray *)remoteAll:(NSError **)error
Parameters
- error
Out parameter used if an error occurs while processing the request. May be
NULL
.
Return Value
NSArray of instances of receiver’s class. Each object’s properties will be set to those returned by Rails.
Discussion
Makes a GET request to /objects
(where objects
is the pluralization of receiver’s model name.)
Request made synchronously. See remoteAllAsync:
for asynchronous operation.
Declared In
NSRRemoteObject.h
remoteAllAsync:
Retrieves an array of all remote objects (as instances of receiver’s class.) Each instance’s properties will be set to those returned by Rails.
+ (void)remoteAllAsync:(NSRFetchAllCompletionBlock)completionBlock
Parameters
- completionBlock
Block to be executed when the request is complete.
Discussion
Asynchronously makes a GET request to /objects
(where objects
is the pluralization of receiver’s model name.)
Declared In
NSRRemoteObject.h
remoteAllViaObject:async:
Retrieves an array of all remote objects (as instances of receiver’s class.) Each instance’s properties will be set to those returned by Rails.
+ (void)remoteAllViaObject:(NSRRemoteObject *)parentObject async:(NSRFetchAllCompletionBlock)completionBlock
Parameters
- parentObject
Remote object by which to request the collection from - establishes pattern for resources depending on nesting. Raises an exception if this object’s
remoteID
is nil, as it is used to construct the route.
- completionBlock
Block to be executed when the request is complete.
Discussion
Asynchronously makes a GET request to /parents/3/objects
(where parents/3
is the path for the parentObject, and objects
is the pluralization of this model name.)
Declared In
NSRRemoteObject.h
remoteAllViaObject:error:
Returns an array of all remote objects (as instances of receiver’s class), constructed with a parent prefix. Each instance’s properties will be set to those returned by Rails.
+ (NSArray *)remoteAllViaObject:(NSRRemoteObject *)parentObject error:(NSError **)error
Parameters
- parentObject
Remote object by which to request the collection from - establishes pattern for resources depending on nesting. Raises an exception if this object’s
remoteID
is nil, as it is used to construct the route.
- error
Out parameter used if an error occurs while processing the request. May be
NULL
.
Return Value
NSArray of instances of receiver’s class. Each object’s properties will be set to those returned by Rails.
Discussion
Makes a GET request to /parents/3/objects
(where parents/3
is the path for the parentObject, and objects
is the pluralization of this model name.)
Request made synchronously. See remoteAllViaObject:async:
for asynchronous operation.
Declared In
NSRRemoteObject.h
remoteControllerName
The name of this class’s controller on the server - where actions for this class should be routed.
+ (NSString *)remoteControllerName
Discussion
The default behavior (when not overriden) is to pluralize remoteModelName
, so if your class was called
User, by default requests involving its controller would be routed to
/users. In the example above for custom model names, it would go to
/subscribers` since remoteModelName was overridden.
However, this can be overridden as well, if, lets say, you have an irregular plural:
@implementation Cactus
+ (NSString *) remoteControllerName
{
return @"cacti";
}
@end
Default Behavior (when not overriden)
Pluralizes remoteModelName
.
Declared In
NSRRemoteObject.h
remoteModelName
The equivalent name of this class on your server.
+ (NSString *)remoteModelName
Discussion
remoteModelName should be overriden if the name of this class in Objective-C is different than its corresponding model on your server. Recommended overriding behavior is to return a string literal:
@implementation User
+ (NSString *) remoteModelName
{
return @"subscriber";
}
@end
The above example would be needed if the same class is called User
in Objective-C but Subscriber
on your server.
Default Behavior (when not overriden)
Returns the name of the subclass, lowercase and underscored if enabled, and with its prefix stripped if enabled.
Warning: When overriding this method, NSRails will no longer autoinflect for determining this class name! What you enter will be used exactly, so make sure it’s lowercase, etc.
Declared In
NSRRemoteObject.h
remoteObjectWithID:async:
Retrieves an instance receiver’s class corresponding to the remote object with that ID.
+ (void)remoteObjectWithID:(NSNumber *)objectID async:(NSRFetchObjectCompletionBlock)completionBlock
Parameters
- objectID
The ID of the remote object.
- completionBlock
Block to be executed when the request is complete.
Discussion
Asynchronously makes a GET request to /objects/1
(where objects
is the pluralization of receiver’s model name, and 1
is objectID)
Declared In
NSRRemoteObject.h
remoteObjectWithID:error:
Returns an instance of receiver’s class corresponding to the remote object with that ID.
+ (instancetype)remoteObjectWithID:(NSNumber *)objectID error:(NSError **)error
Parameters
- objectID
The ID of the remote object.
- error
Out parameter used if an error occurs while processing the request. May be
NULL
.
Return Value
Instance of receiver’s class with properties from the remote object with that ID.
Discussion
Makes a GET request to /objects/1
(where objects
is the pluralization of receiver’s model name, and 1
is objectID
Request made synchronously. See remoteObjectWithID:async:
for asynchronous operation.
Declared In
NSRRemoteObject.h
Instance Methods
decodeRemoteValue:forRemoteKey:
Should set what you want an Objective-C property to be set to, based off a remote representation.
- (void)decodeRemoteValue:(id)remoteObject forRemoteKey:(NSString *)remoteKey
Parameters
- remoteObject
Remote representation of this key. Will be a JSON-parsed object (NSDictionary, NSArray, NSString, NSNumber, or nil).
- remoteKey
The remote key returned from Rails. Use
propertyForRemoteKey:
if you want the Objective-C property version of this key.
Discussion
This method should be overridden if you have a property whose JSON representation should be different than its actual object value when sending and retrieving to/from Rails.
@interface MyClass : NSRRemoteObject
@property (nonatomic, strong) NSURL *URL; //on the server this is a plain string
@property (nonatomic, strong) NSArray *csvArray; //on the server this is a comma-separated string
@end
In the example above, we want URL
to be decoded (saved) as an NSURL locally and csvArray
to be decoded as an NSArray locally, but Rails sends them to us as plain strings. Here’s a possible overridden implementation:
- (void) decodeValue:(id)remoteObject forRemoteKey:(NSString *)remoteKey
{
if ([forRemoteKey isEqualToString:@"csv_array"])
{
self.csvArray = [remoteObject componentsSeparatedByString:@","];
}
else if ([forRemoteKey isEqualToString:@"url"])
{
self.URL = [NSURL URLWithString:remoteObject];
}
else
{
[super decodeValue:remoteObject forRemoteKey:remoteKey];
}
}
Note: the default implementation of this method will automatically take care of NSDates for you, decoding them into an NSDate object using the Rails date format. The format used can be changed in this NSRConfig property.
Also note that this should not be overridden for only a simple change in local/remote property naming. If your server has a different property name than your Objective-C code, but otherwise decodes the same, simply override propertyForRemoteKey:
.
Warning: Make sure you make a call to super if a certain property shouldn’t be custom-coded.
Declared In
NSRRemoteObject.h
encodeValueForProperty:remoteKey:
Should return the remote representation for each property, optionally modifying the remote key.
- (id)encodeValueForProperty:(NSString *)property remoteKey:(NSString **)remoteKey
Parameters
- property
Name of the property.
- remoteKey
Reference to an NSString that contains the key that should be put into the JSON going out. Will contain the key that would be sent by default (ie, underscored, if enabled).
Return Value
Remote representation for this property. Return value must be JSON-parsable (NSDictionary, NSArray, NSString, NSNumber, or (NSNull or nil)).
Discussion
This method should be overridden if you have a property whose JSON representation should be different than its actual object value when sending and retrieving to/from Rails.
@interface MyClass : NSRRemoteObject
@property (nonatomic, strong) NSURL *URL; //on the server this is a plain string
@property (nonatomic, strong) NSArray *csvArray; //on the server this is a comma-separated string
@end
In the example above, we can’t send these objects to a server as-is, since the server expects strings for both of these. We want to send URL
as its actual content (remember, NSURL is not JSON-encodable), and send the array csvArray
as a plain, comma-separated string. Here’s a possible overridden implementation:
@implementation MyClass
- (id) encodeValueForProperty:(NSString *)property remoteKey:(NSString **)remoteKey
{
if ([property isEqualToString:@"csvArray"]) {
return [csvArray componentsJoinedByString:@","];
}
if ([property isEqualToString:@"URL"]) {
return [URL absoluteString];
}
return [super encodeValueForProperty:property remoteKey:remoteKey];
}
@end
Moreover, custom remote keys can be defined here, if the names of your Objective-C property and remote attribute differ. Simply set the contents of the remoteKey reference. That’s the key it will be sent with.
- (id) encodeValueForProperty:(NSString *)property remoteKey:(NSString **)remoteKey
{
if ([property isEqualToString:@"objcProperty"]) {
*remoteKey = @"rails_attr";
}
return [super encodeValueForProperty:property remoteKey:remoteKey];
}
Note: the default implementation of this method will automatically take care of NSDates for you, encoding them into a date format string that’s Rails-friendly. The format used can be changed in this NSRConfig property.
Warning: Make sure you make a call to super if a certain property shouldn’t be custom-coded.
Declared In
NSRRemoteObject.h
nestedClassForProperty:
Should return the class for the nested object stored in the property, or nil if it is not a nested object.
- (Class)nestedClassForProperty:(NSString *)property
Parameters
- property
Name of the property.
Return Value
The class for the nested object stored in the property, or nil if it is not a nested object.
Discussion
The default behavior is to simply return the type of the property if it is a subclass of NSRRemoteObject. Otherwise, returns nil
.
This must be overriden for any to-many relationships (since the property type is just an array, and NSRails doesn’t know what kind of object should be stored).
- (Class) nestedClassForProperty:(NSString *)property
{
// Only necessary for 'responses' (to-many)
// By default, the Author class (to-one) will be picked up through its property type
if ([property isEqualToString:@"responses"]) {
return [Response class];
}
return [super nestedClassForProperty:property];
}
Ruby:
# Because Ruby is not statically typed, this must be overriden for all relationships (necessary for both)
# NSRails can't "guess" what class you want to nest in a property
def nestedClassForProperty(property)
return Response if property == "responses"
return Author if property == "author"
end
Warning: In Objective-C, make sure you make a call to super.
Declared In
NSRRemoteObject.h
objectUsedToPrefixRequest:
Should be overridden if instances of your subclass class should have their resource path be based off an association.
- (NSRRemoteObject *)objectUsedToPrefixRequest:(NSRRequest *)request
Parameters
- request
The request whose path is currently being evalutated. Its route will be the route before adding the prefix (ie, the route used if the behavior is not desired).
Return Value
An object (typically an instance variable) that represents a parent to this class, or nil
if this behavior is not desired.
Discussion
This may be needed if you define your routes in Rails to look something like:
MySweetApp::Application.routes.draw do
resources :users
resources :invites
end
end
Typically, this method is overriden with an instance variable that represents a parent:
@implementation Invite
- (NSRRemoteObject *) objectUsedToPrefixRequest:(NSRRequest *)request
{
return self.user;
}
@end
Now, invites will be accessed in relation to the given user (assume its remoteID
is 1):
GET /users/1/invites.json
POST /users/1/invites.json
GET /users/1/invites/3.json
DELETE /users/1/invites/3.json
Note that if user
’s remoteID
is nil
, an exception will be thrown (its ID is needed in constructing the route).
You may also filter requests that you don’t want to prefix using the request parameter. Let’s say you only want this behavior for POST and GET, but want to keep DELETE and PATCH with their traditional routes:
GET /users/3/invites.json "get all the invites for user 3"
POST /users/3/invites.json "create an invite for user 3"
PATCH /invites/28.json "update user invite 28"
DELETE /invites/28.json "delete user invite 28"
This could be done by checking request’s httpMethod:
- (NSRRemoteObject *) objectUsedToPrefixRequest:(NSRRequest *)request
{
if ([request.httpMethod isEqualToString:@"GET"] || [request.httpMethod isEqualToString:@"POST"]) {
return user;
}
return nil;
}
Declared In
NSRRemoteObject.h
propertyForRemoteKey:
Should return the equivalent Objective-C property for a given remote key.
- (NSString *)propertyForRemoteKey:(NSString *)remoteKey
Parameters
- remoteKey
The key sent in the remote dictionary.
Return Value
The Objective-C property equivalent for a remote key. If your class doesn’t define a property for this remote key, this should return nil
.
Discussion
For example, will return updatedAt
(the Objective-C property) for the updated_at
key in an incoming dictionary, assuming that your class defines an updatedAt
property.
The default behavior is to autoinflect into camelCase (if enabled), or convert id
to remoteID
. If the resulting conversion is not found as a property in the class, returns nil
.
Overriding example:
- (NSString *) propertyForRemoteKey:(NSString *)remoteKey
{
//the "rails" key given from a Rails hash will be translated to the "objc" property when decoding
if ([remoteKey isEqualToString:@"rails"]) {
return @"objc";
}
return [super propertyForRemoteKey:remoteKey];
}
It is possible to also override decodeRemoteValue:forRemoteKey: and setting the objc
property manually for a remoteKey of “rails”, but since decodeRemoteValue:forRemoteKey:
uses this method internally, it is cleaner to just override this method.
The inverse method remoteKeyForProperty does not exist - instead override encodeValueForProperty:remoteKey:
and modify the remote key.
Declared In
NSRRemoteObject.h
propertyIsDate:
Should return whether or not this property should be encoded/decoded to/from a Date object.
- (BOOL)propertyIsDate:(NSString *)property
Parameters
- property
Name of the property.
Return Value
Whether or not this property should be encoded/decoded to/from a Date object.
Discussion
NSRails has no idea what types your properties are in Ruby, so to benefit from automatic Date -> string and string -> Date, it needs to know what properties are dates.
This is unnecessary in Objective-C.
def propertyIsDate(property)
(property == "birthday") || super
end
Note that created_at
and updated_at
are already taken care of as dates.
Warning: Make a call to super.
Declared In
NSRRemoteObject.h
remoteCreate:
Creates the receiver remotely. Receiver’s properties will be set to those given by Rails (including remoteID).
- (BOOL)remoteCreate:(NSError **)error
Parameters
- error
Out parameter used if an error occurs while processing the request. May be
NULL
.
Return Value
YES
if create was successful. Returns NO
if an error occurred.
Discussion
Sends a POST
request to /objects
(where objects
is the pluralization of receiver’s model name), with the receiver’s remoteDictionaryRepresentationWrapped:YES as its body.
Request made synchronously. See remoteCreateAsync: for asynchronous operation.
Declared In
NSRRemoteObject.h
remoteCreateAsync:
Creates the receiver remotely. Receiver’s properties will be set to those given by Rails (including remoteID
).
- (void)remoteCreateAsync:(NSRBasicCompletionBlock)completionBlock
Parameters
- completionBlock
Block to be executed when the request is complete.
Discussion
Asynchronously sends a POST
request to /objects
(where objects
is the pluralization of receiver’s model name), with the receiver’s remote dictionary representation as its body.
Declared In
NSRRemoteObject.h
remoteDestroy:
Destroys receiver’s corresponding remote object. Local object will be unaffected.
- (BOOL)remoteDestroy:(NSError **)error
Parameters
- error
Out parameter used if an error occurs while processing the request. May be
NULL
.
Return Value
YES
if destroy was successful. Returns NO
if an error occurred.
Discussion
Sends a DELETE
request to /objects/1
(where objects
is the pluralization of receiver’s model name, and 1
is the receiver’s remoteID
).
Request made synchronously. See remoteDestroyAsync:
for asynchronous operation.
Declared In
NSRRemoteObject.h
remoteDestroyAsync:
Destroys receiver’s corresponding remote object. Local object will be unaffected.
- (void)remoteDestroyAsync:(NSRBasicCompletionBlock)completionBlock
Parameters
- completionBlock
Block to be executed when the request is complete.
Discussion
Asynchronously sends a DELETE
request to /objects/1
(where objects
is the pluralization of receiver’s model name, and 1
is the receiver’s remoteID
).
Declared In
NSRRemoteObject.h
remoteDictionaryRepresentationWrapped:
Serializes the receiver’s properties into a dictionary.
Uses the coding methods.
- (NSDictionary *)remoteDictionaryRepresentationWrapped:(BOOL)wrapped
Parameters
- wrapped
If
YES
, wraps the dictionary with a key of the model name:{"user"=>{"name"=>"x", "email"=>"y"}}
Return Value
The receiver’s properties as a dictionary.
Declared In
NSRRemoteObject.h
remoteFetch:
Retrieves the latest remote data for receiver and sets its properties to received response.
- (BOOL)remoteFetch:(NSError **)error
Parameters
- error
Out parameter used if an error occurs while processing the request. May be
NULL
.
Return Value
YES
if fetch was successful. Returns NO
if an error occurred.
Discussion
Sends a GET
request to /objects/1
(where objects
is the pluralization of receiver’s model name, and 1
is the receiver’s remoteID).
Request made synchronously. See remoteFetchAsync:
for asynchronous operation.
Requires presence of remoteID
, or will throw an NSRNullRemoteIDException
.
Declared In
NSRRemoteObject.h
remoteFetchAsync:
Retrieves the latest remote data for receiver and sets its properties to received response.
- (void)remoteFetchAsync:(NSRBasicCompletionBlock)completionBlock
Parameters
- completionBlock
Block to be executed when the request is complete.
Discussion
Asynchronously sends a GET
request to /objects/1
(where objects
is the pluralization of receiver’s model name, and 1
is the receiver’s remoteID).
Requires presence of remoteID
, or will throw an
NSRNullRemoteIDException`.
Declared In
NSRRemoteObject.h
remoteProperties
Should return an array of all properties to be used by NSRails.
- (NSMutableArray *)remoteProperties
Return Value
An array of all properties to be used by NSRails.
Discussion
Default behavior is to introspect into the class and return an array of all non-primitive type properties. This also escalates up the class hierarchy to NSRRemoteObject’s properties as well (ie, remoteID
).
If you want to override this, you should add or remove objects from super:
- (NSMutableArray *) remoteProperties
{
NSMutableArray *props = [super remoteProperties];
//remove an object from NSRails entirely
[props removeObject:@"totallyLocal"];
//can even add a property not defined in your class - encodable in encodeValueForProperty:remoteKey:
[props addObject:@"totallyRemote"];
return props;
}
Ruby:
Overriding this method, adding on all of your instance variables is necessary in RubyMotion because properties are created on runtime and Objective-C introspection won’t apply.
def remoteProperties
super + ["author", "content", "created_at"]
end
Declared In
NSRRemoteObject.h
remoteReplace:
“Places” receiver’s corresponding remote object.
- (BOOL)remoteReplace:(NSError **)error
Parameters
- error
Out parameter used if an error occurs while processing the request. May be
NULL
.
Return Value
YES
if place was successful. Returns NO
if an error occurred.
Discussion
Sends an PUT
request to /objects/1
(where objects
is the pluralization of receiver’s model name, and 1
is the receiver’s remoteID
).
The distinction between this method and remoteUpdate:
is that this method will always use the PUT
HTTP method, while remoteUpdate:
is configurable. This is to allow servers that use PATCH
to update attributes using remoteUpdate:
and keep remoteReplace:
for a more accurate “placement” procedure that should occur with the PUT
method. More discussion here.
Request made synchronously. See remoteReplaceAsync: for asynchronous operation.
Requires presence of remoteID
, or will throw an
NSRNullRemoteIDException`.
Warning: No local properties will be set, as (by default) Rails does not return anything for this action. This means that if you update an object with the creation of new nested objects, those nested objects will not locally update with their respective IDs.
Declared In
NSRRemoteObject.h
remoteReplaceAsync:
“Places” receiver’s corresponding remote object.
- (void)remoteReplaceAsync:(NSRBasicCompletionBlock)completionBlock
Parameters
- completionBlock
Block to be executed when the request is complete.
Discussion
Asynchronously sends an PUT
request to /objects/1
(where objects
is the pluralization of receiver’s model name, and 1
is the receiver’s remoteID
).
The distinction between this method and remoteUpdateAsync:
is that this method will always use the PUT
HTTP method, while remoteUpdateAsync:
is configurable. This is to allow servers that use PATCH
to update attributes using remoteUpdateAsync:
and keep remoteReplaceAsync:
for a more accurate “placement” procedure that should occur with the PUT
method. More discussion here.
Requires presence of remoteID
, or will throw an
NSRNullRemoteIDException`.
Warning: No local properties will be set, as (by default) Rails does not return anything for this action. This means that if you update an object with the creation of new nested objects, those nested objects will not locally update with their respective IDs.
Declared In
NSRRemoteObject.h
remoteUpdate:
Updates receiver’s corresponding remote object.
- (BOOL)remoteUpdate:(NSError **)error
Parameters
- error
Out parameter used if an error occurs while processing the request. May be
NULL
.
Return Value
YES
if update was successful. Returns NO
if an error occurred.
Discussion
Sends a request to /objects/1
(where objects
is the pluralization of receiver’s model name, and 1
is the receiver’s remoteID).
Will use the HTTP method defined in the relevant config’s updateMethod
property (default PUT
).
Request made synchronously. See remoteUpdateAsync:
for asynchronous operation.
Requires presence of remoteID
, or will throw an
NSRNullRemoteIDException`.
Warning: No local properties will be set, as (by default) Rails does not return anything for this action. This means that if you update an object with the creation of new nested objects, those nested objects will not locally update with their respective IDs.
Declared In
NSRRemoteObject.h
remoteUpdateAsync:
Updates receiver’s corresponding remote object.
- (void)remoteUpdateAsync:(NSRBasicCompletionBlock)completionBlock
Parameters
- completionBlock
Block to be executed when the request is complete.
Discussion
Sends a request to /objects/1
(where objects
is the pluralization of receiver’s model name, and 1
is the receiver’s remoteID).
Will use the HTTP method defined in the relevant config’s updateMethod
property(default PUT
).
Requires presence of remoteID
, or will throw an
NSRNullRemoteIDException`.
Warning: No local properties will be set, as (by default) Rails does not return anything for this action. This means that if you update an object with the creation of new nested objects, those nested objects will not locally update with their respective IDs.
Declared In
NSRRemoteObject.h
setPropertiesUsingRemoteDictionary:
Sets the receiver’s properties given a dictionary.
- (void)setPropertiesUsingRemoteDictionary:(NSDictionary *)dictionary
Parameters
- dictionary
Dictionary to be evaluated.
Declared In
NSRRemoteObject.h
shouldOnlySendIDKeyForNestedObjectProperty:
Should return whether or not a nested object should be sent with its entire body (x_attributes
), or just ID (x_id
).
- (BOOL)shouldOnlySendIDKeyForNestedObjectProperty:(NSString *)property
Parameters
- property
Name of the property.
Return Value
YES if only the x_id
key should be sent for this nested property, NO if the full x_attributes
should be sent.
Discussion
The default behavior is to return NO
. (You don’t have to make a call to super here.)
This is useful if you have a property whose relationship is “belongs to”. Meaning, the receiving object on the server holds the foreign key - it has, say, a parent_id
, which you want sent instead of parent_attributes
(which would anger Rails).
- (BOOL) shouldOnlySendIDKeyForNestedObjectProperty:(NSString *)property
{
return [property isEqualToString:"group"];
}
Declared In
NSRRemoteObject.h
shouldReplaceCollectionForProperty:
Whether or not to fully replace a collection for a given property, as opposed to simply adding to it.
- (BOOL)shouldReplaceCollectionForProperty:(NSString *)property
Parameters
- property
The name of the collection property.
Return Value
Whether or not to fully replace a collection for a given property, as opposed to simply adding to it.
Discussion
Will only be called for collection properties.
Declared In
NSRRemoteObject.h
shouldSendProperty:whenNested:
Should return whether or not a certain property should be sent in the outgoing dictionary.
- (BOOL)shouldSendProperty:(NSString *)property whenNested:(BOOL)nested
Parameters
- property
The name of the property.
- nested
Whether or not the receiving object is being nested.
Return Value
YES if the property should be included in the dictionary, NO if it shouldn’t.
Discussion
Default behavior is to not send if:
- Property is
remoteID
and it isnil
, or,nested
is false. (Sendingid
is only relevant to ensure nested objects are not re-created.) - Property is not a timestamp (
created at
,updated at
). - Property is a relationship, would send the full
_attributes
, andnested
is true (ie, only send “shallow” copies of objects when they are being nested. This is to prevent infinite loops when recursively sending nested properties that could also include this object). - Property is a relationship, but the value of the property is either
nil
or an empty collection. (No reason to send empty_attributes
).
Otherwise the property is sent. So typically, this method is overridden if you do not wish to have a property in an outgoing request. Overriding this method would look like this:
- (BOOL) shouldSendProperty:(NSString *)property whenNested:(BOOL)nested
{
//never send retrieveOnlyProperty to your server
if ([property isEqualToString:@"retrieveOnlyProperty"]) {
return NO;
}
//deepNest is a property with a has-one/has-many relationship that would otherwise not be sent when this object is *nested*
if ([property isEqualToString:@"deepNest"] && nested) {
return YES;
}
return [super shouldSendProperty:property whenNested:nested];
}
The equivalent for this method for retrieving properties (“shouldSetProperty”) is done through decodeRemoteValue:forRemoteKey:
. Simply override it and do nothing for that property if you do not want to decode & set it from a remote value.
Warning: Make sure you make a call to super if a certain property shouldn’t be manually managed.
Declared In
NSRRemoteObject.h


Read these instructions first!
Remember you have to modify your system's hosts file (usually located in C:/WINDOWS/system32/drivers/etc/ folder) and add this line at the end:
<IP_ADDRESS> pes6gate-ec.winning-eleven.net
Please note: evo-league's Sixserver instance is currently in open beta. After the beta, you'll need a (free) evo-league account to play. You can sign up for an account here.
Please participate in the beta process by posting in the Fiveserver/Sixserver beta thread.


Root-relative link to anchor in a.html
Relative link to anchor in a.html
Relative link to anchor in b.html


First Impressions
Count.
One is a portfolio template for showcasing your talents in a simple and beautiful manner. All the colours, fonts, images are customizable to your specifications.
A template by Heksagon.
One is a portfolio template for showcasing your talents in a simple and beautiful manner. All the colours, fonts, images are customizable to your specifications.


- checkName(String) - Method in class filesystem.File
-
- checkName(String) - Method in class filesystem.FileSystemItem
-
Checks whether a file or directory name contains illegal characters.
- checkNumberOfParameters(int) - Method in class command.framework.Command
-
Can be overwritten by the concrete commands if something must be
checked.
- checkNumberOfParameters(int) - Method in class command.library.CmdDateTime
-
- checkNumberOfParameters(int) - Method in class command.library.CmdFormat
-
- checkNumberOfParameters(int) - Method in class command.library.CmdHelp
-
- checkNumberOfParameters(int) - Method in class command.library.CmdRename
-
- checkNumberOfParameters(int) - Method in class command.library.CmdType
-
Can be overwritten by the concrete commands if something must be
checked.
- checkNumberOfParameters(int) - Method in class command.library.CmdVer
-
- checkParameters(Outputter) - Method in class command.framework.Command
-
Checks the passed parameters.
- checkParameterValues(Outputter) - Method in class command.framework.Command
-
Can be overwritten by the concrete commands if at least the value
of one parameter must be checked.
- checkParameterValues(Outputter) - Method in class command.library.CmdDate
-
Can be overwritten by the concrete commands if at least the value
of one parameter must be checked.
- checkParameterValues(Outputter) - Method in class command.library.CmdFormat
-
- checkParameterValues(Outputter) - Method in class command.library.CmdHelp
-
- checkParameterValues(Outputter) - Method in class command.library.CmdRename
-
- checkParameterValues(Outputter) - Method in class command.library.CmdTime
-
- checkParameterValues(Outputter) - Method in class command.library.CmdType
-
Can be overwritten by the concrete commands if at least the value
of one parameter must be checked.
- checkParameterValues(Outputter) - Method in class command.library.CmdVer
-
- clearHistory() - Method in interface persistence.HistoryDao
-
Clear the whole history. calling readHistory() afterwards returns an
empty list.
- clearHistory() - Method in class persistence.MockHistoryDao
-
- CmdDate - Class in command.library
-
Befehl zum Anzeigen und Setzen des Datums
- CmdDate(String, Drive) - Constructor for class command.library.CmdDate
-
Constructor.
- CmdDateTime - Class in command.library
-
Abstrakte Basisklasse für den Date und Time Command.
- CmdDateTime(String, Drive) - Constructor for class command.library.CmdDateTime
-
Constructor.
- CmdExit - Class in command.library
-
Befehl zum Verlassen der DosBox.
- CmdExit(String, Drive) - Constructor for class command.library.CmdExit
-
Constructor.
- CmdFormat - Class in command.library
-
Format Command.
- CmdFormat(String, Drive) - Constructor for class command.library.CmdFormat
-
Constructor.
- CmdHelp - Class in command.library
-
Gibt das Help für ein entsprechendes Commando aus.
- CmdHelp(String, Drive, CommandFactory) - Constructor for class command.library.CmdHelp
-
- CmdRename - Class in command.library
-
Rename files and directories.
- CmdRename(String, Drive) - Constructor for class command.library.CmdRename
-
Constructor.
- CmdTime - Class in command.library
-
Befehl zum Anzeigen und Setzen der Zeit
- CmdTime(String, Drive) - Constructor for class command.library.CmdTime
-
Constructor.
- CmdType - Class in command.library
-
Type/Cat Command, displays the content of a text file on the screen.
- CmdType(String, Drive) - Constructor for class command.library.CmdType
-
Constructor.
- CmdVer - Class in command.library
-
Ver(sion) Command, shows the application name, authors and version.
- CmdVer(String, Drive) - Constructor for class command.library.CmdVer
-
Constructor.
- Command - Class in command.framework
-
Abstract class for all commands.
- Command(String, Drive) - Constructor for class command.framework.Command
-
Constructor.
- command.framework - package command.framework
-
- command.library - package command.library
-
- CommandFactory - Class in command.library
-
The factory is responsible to create an object of every command supported and
to add it to the list of known commands.
- CommandFactory(Drive) - Constructor for class command.library.CommandFactory
-
Constructor; creates all known commands and adds them to the list of
supported commands.
- CommandInvoker - Class in invoker
-
Invokes commands from a command string passed.
- CommandInvoker(HistoryDao) - Constructor for class invoker.CommandInvoker
-
Constructor.
- CommandInvokerService - Interface in invokerService
-
- compareCmdName(String) - Method in class command.framework.Command
-
Returns true if the passed name and the command name fit.
- configuration - package configuration
-
- Configurator - Class in configuration
-
Configures the system.
- Configurator() - Constructor for class configuration.Configurator
-
- configureBaseSystem() - Method in class configuration.Configurator
-
Configurates the system for a console application.
- configureBaseSystem() - Method in class configuration.DemoConfigurator
-
- console - package console
-
- console - Variable in class configuration.Configurator
-
- Console - Class in console
-
Implements a console.
- Console(CommandInvokerService, Drive) - Constructor for class console.Console
-
Constructor.
- ConsoleOutputter - Class in console
-
Implements the outputter interface that all text is sent to the console
(System.out).
- ConsoleOutputter() - Constructor for class console.ConsoleOutputter
-
- createFromRealDirectory(String) - Method in class filesystem.Drive
-
Builds up a directory structure from the given path on a real drive.
- createHistoryDao(DaoFactory.DaoType) - Static method in class persistence.DaoFactory
-
Creates a DAO to access the command history persistence.
- getCommandList() - Method in class command.library.CommandFactory
-
Returns the list of known commands.
- getContent() - Method in class filesystem.Directory
-
An array list with the content of this directory (files and
subdirectories) is returned.
- getContent() - Method in class filesystem.File
-
null is returned since a files does not contain any subitems.
- getContent() - Method in class filesystem.FileSystemItem
-
Returns the content of the item.
- getCurrentDirectory() - Method in class filesystem.Drive
-
Returns the object of the current directory.
- getDrive() - Method in class command.framework.Command
-
Returns the drive on which the command shall operate.
- getDrive() - Method in class configuration.Configurator
-
- getDriveName() - Method in class filesystem.Drive
-
Returns the drive name with a ending ':'.
- getFileContent() - Method in class filesystem.File
-
Returns file content
- getHelpForCommand(String) - Method in class command.library.CommandFactory
-
Gibt für das entsprechende Kommand den Helptext zurück.
- getInvoker() - Method in class configuration.Configurator
-
- getItemFromPath(String) - Method in class filesystem.Drive
-
Returns the object of a given path name.
- getLabel() - Method in class filesystem.Drive
-
Returns the drive label
- getName() - Method in class filesystem.FileSystemItem
-
Returns the name of the item.
- getNumberOfDirectories() - Method in class filesystem.Directory
-
- getNumberOfDirectories() - Method in class filesystem.File
-
0 is returned since a files does not contain directories.
- getNumberOfDirectories() - Method in class filesystem.FileSystemItem
-
Returns the number of directories contained by this item
- getNumberOfFiles() - Method in class filesystem.Directory
-
Returns the number of files in this directory.
- getNumberOfFiles() - Method in class filesystem.File
-
0 is returned since a files does not contain other files.
- getNumberOfFiles() - Method in class filesystem.FileSystemItem
-
Returns the number of files contained by this item
- getParameters() - Method in class command.framework.Command
-
Returns the list of parameters, e.g. to check parameters by a concrete
command.
- getParent() - Method in class filesystem.FileSystemItem
-
Returns the parent directory.
- getPath() - Method in class filesystem.FileSystemItem
-
Returns the full path of the item
- getPrompt() - Method in class filesystem.Drive
-
Returns the DOS-Prompt, drive name with an ending '>' and a space.
- getRootDirectory() - Method in class filesystem.Drive
-
Returns the object of the root directory.
- getSize() - Method in class filesystem.Directory
-
Returns 0 since directories have no size.
- getSize() - Method in class filesystem.File
-
Returns the size of the file.
- getSize() - Method in class filesystem.FileSystemItem
-
Returns the size of the item


--- layout: secondary ---
iClicker Supports Learning Tools Interoperability (LTI) for Single Sign On (SSO).
It appears that iClicker supports LTI as a SSO. From the IMS Global Learning Consortium page:
Whilst LTI® is not primarily designed as a SSO mechanism, some of the data it passes in a launch request are about the user. Moreover, LTI works on the basis of a trust relationship between the systems which is established by means of a key and a secret - much simpler than providing access to a common identity server. In LTI a user is authenticated by a primary system (such as an LMS) and then can be passed to another system (internal or external) by way of a signed launch message. The system receiving this message can verify its authenticity by inspecting the signature and then implicitly trust the data it carries; there is no need for the user to be authenticated a second time or for their identity to be checked against another system. This approach can make LTI a low cost alternative to implementing SSO between systems.


Dear Sir/Madam, I am Muyiwa Ige Bank Manager of Zenith Bank, Lagos, Nigeria. I have urgent and Very confidential business proposition for you. In February 28, 1998, a Foreign Oil consultant/contractor with the Nigerian National Petroleum Corporation, Mr.Barry Kelly made a numbered time (Fixed)Deposit for twelve calendar months valued at US$20,000,000.00 (Twenty Million Dollars)in my branch. Upon maturity, I sent a routine notification to his forwarding address but got no reply. After a month, I sent a reminder and finally I discovered from his contract employers, the Nigerian National Petroleum Corporation that Mr. Barry Kelly died from an automobile accident.On further investigation, I found out that he died without making a WILL, and all attempts to trace his next of kin was fruitless. I therefore made further investigation and discovered that Mr. Barry Kelly did not declare any kin or relations in all his official documents, including his Bank Deposit paperwork in my Bank. This sum of US$20,000,000.00 has carefully been moved out of my bank to a security company for safekeeping.No one will ever come forward to claim it. According to Nigerian Law, at the expiration of 5 (five) years, the money will revert to the ownership of the Nigerian Government if nobody applies to claim the fund. Consequently, my proposal is that I will want you as a Foreigner to stand as the next of kin. I am writing you because as a public servant (Manager with the bank), I cannot operate a foreign account or have an account that is more than $1m. I therefore want to present you as the next of kin (the rightful owner of the fund) so that you can be able to claim it with the help of an accredited attorney. Finally, I urge you to provide immediately your full names, phone/fax numbers and your current mailing address so as to enable us commence the paperwork that will present you as the rightful beneficiary (next of kin) of the fund. As soon as the money is transferred to you 70% is for me while 20% is for you and 10% will be for any expences made. Please reply immediately via my Email address. Upon your response, I shall then provide you with more details that will help you understand this hitch free (risk free) transaction. Thanks and God bless. Muyiwa Ige


Sports Car Drivers List
- S.no
- Name
- Nationality
- Company
- Points
- {{$index + 1}}
- {{driver.Driver.givenName}} {{driver.Driver.familyName}}
- {{driver.Driver.nationality}}
- {{driver.Constructors[0].name}}
- {{driver.points}}
Get your location by clicking on button below
Click Me to know your location


%PMTKauthor Jarno Vanhatalo % Same as demo_spatial1 from GPstuff-2.0 except % we only run Laplace, not MCMC, for speed %DEMO_SPATIAL1 Demonstration for a disease mapping problem % with Gaussian process prior and Poisson likelihood % % Description % The disease mapping problem consist of a data with number of % death cases, Y, and background population, N, appointed to % co-ordinates, X. The goal is to find a relative risk surface, % which describes if the number of death cases in certain areas is % lower or higher than expected. The data consists of the heart % attacks in Finland from 1996-2000 aggregated into 20kmx20km % lattice cells. % % The model constructed is as follows: % % The number of death cases Y_i in area i is assumed to satisfy % % Y_i ~ Poisson(Y_i| E_i * r_i) % % where E_i is the expected number of deaths (see Vanhatalo and % Vehtari (2007, 2010), how E_i is evaluated) at area i and r_i is % the relative risk. % % We place a zero mean Gaussian process prior for log(R), R = [r_1, % r_2,...,r_n], which implies that at the observed input locations % latent values, f, have prior % % f = log(R) ~ N(0, K), % % where K is the covariance matrix, whose elements are given as % K_ij = k(x_i, x_j | th). The function k(x_i, x_j | th) is % covariance function and th its parameters, hyperparameters. We % place a hyperprior for hyperparameters, p(th). % % Since the data set used in this demo is rather large we use FIC % sparse approximation for the GP prior. % % The inference is conducted first with Laplace approximation and % then via MCMC. We sample from the full posterior p(f, th| data) % by alternating the sampling from the conditional posteriors p(f | % th, data) and p(th | f, data). The sampling from the conditional % posteriors is done by hybrid Monte Carlo (see, for example, Neal, % 1996). % % See Vanhatalo and Vehtari (2007) and Vanhatalo et.al. (2010) for % more detailed discussion. % % This demo is organised in three parts: % 1) data analysis with Laplace approximation % 2) data analysis with integrated Laplace approximation % 3) data analysis with MCMC % % See also DEMO_REGRESSION1, DEMO_CLASSIFIC1 % % % Refernces: % Vanhatalo, J., Pietiläinen V. and Vehtari, A. (2010). Approximate % inference for disease mapping with sparse Gaussian processes. % Statistics in Medicine, 29(15):. % % Jarno Vanhatalo and Aki Vehtari (2007). Sparse Log Gaussian % Processes via MCMC for Spatial Epidemiology. JMLR Workshop and % Conference Proceedings, 1:73-89. (Gaussian Processes in Practice) % Copyright (c) 2008-2010 Jarno Vanhatalo % This software is distributed under the GNU General Public % License (version 2 or later); please refer to the file % License.txt, included with the software, for details. % ===================================== % 1) Laplace approximation % ===================================== % load the data S = which('demo_spatial1'); data = load(strrep(S,'demo_spatial1.m','demos/spatial1.txt')); xx = data(:,1:2); ye = data(:,3); yy = data(:,4); % Now we have loaded the following parameters % xx = co-ordinates % yy = number of deaths % ye = the expexted number of deaths % Set the inducing inputs in a regular grid. Set_PIC returns the % induving inputs and blockindeces for PIC. It also plots the data % points, inducing inputs and blocks. dims = [1 60 1 35]; [trindex, Xu] = set_PIC(xx, dims, 5, 'corners', 0); [n,nin] = size(xx); % Create the covariance functions gpcf1 = gpcf_matern32('init', 'lengthScale', 5, 'magnSigma2', 0.05); pl = prior_t('init'); pm = prior_t('init', 's2', 0.3); gpcf1 = gpcf_matern32('set', gpcf1, 'lengthScale_prior', pl, 'magnSigma2_prior', pm); % Create the likelihood structure likelih = likelih_poisson('init'); % Create the FIC GP data structure so that inducing inputs are not optimized gp = gp_init('init', 'FIC', likelih, {gpcf1}, [], 'X_u', Xu, 'jitterSigma2', 0.001); gp = gp_init('set', gp, 'infer_params', 'covariance'); % --- MAP estimate with Laplace approximation --- % Set the approximate inference method to Laplace approximation gp = gp_init('set', gp, 'latent_method', {'Laplace', xx, yy, 'z', ye}); w=gp_pak(gp); % pack the hyperparameters into one vector fe=str2fun('gpla_e'); % create a function handle to negative log posterior fg=str2fun('gpla_g'); % create a function handle to gradient of negative log posterior % set the options for scg2 opt = scg2_opt; opt.tolfun = 1e-3; opt.tolx = 1e-3; opt.display = 1; % do the optimization and set the optimized hyperparameter values back to the gp structure w=scg2(fe, w, opt, fg, gp, xx, yy, 'z', ye); gp=gp_unpak(gp,w); % make prediction to the data points [Ef, Varf] = la_pred(gp, xx, yy, xx, 'z', ye, 'tstind', [1:n]); % Define help parameters for plotting xxii=sub2ind([60 35],xx(:,2),xx(:,1)); [X1,X2]=meshgrid(1:35,1:60); % Plot the figures % In the results it should be noticed that: % - there is much more people living in the south than in the north. % This results in rather high variance in the north % - The eastern Finland is known to be worse than western Finland in % heart diseases also from other studies. % - The inducing inputs are set slightly too sparsely for this data, % which results in oversmoothness in the maps figure G=repmat(NaN,size(X1)); G(xxii)=exp(Ef); pcolor(X1,X2,G),shading flat colormap(mapcolor(G)),colorbar %set(gca, 'Clim', [0.6 1.5]) axis equal axis([0 35 0 60]) title('Posterior mean of the relative risk, FIC') printPmtkFigure('gpSpatialDemoLaplaceMean') figure G=repmat(NaN,size(X1)); G(xxii)=(exp(Varf) - 1).*exp(2*Ef+Varf); pcolor(X1,X2,G),shading flat colormap(mapcolor(G)),colorbar %set(gca, 'Clim', [0.005 0.03]) axis equal axis([0 35 0 60]) title('Posterior variance of the relative risk, FIC') printPmtkFigure('gpSpatialDemoLaplaceVar') % the MAP estimate of the hyperparameters in kilometers. Notice that the % co-ordinates in the data are not in kilometers. x=1 corresponds to 20km % in real life S2 = sprintf('lengt-scale: %.3f, magnSigma2: %.3f \n', gp.cf{1}.lengthScale, gp.cf{1}.magnSigma2) %{ % --- MCMC --- % Set the approximate inference method to MCMC gp = gp_init('set', gp, 'latent_method', {'MCMC', zeros(size(yy))', @scaled_hmc}); % Set the sampling options % HMC-hyper hmc_opt.steps=3; hmc_opt.stepadj=0.01; hmc_opt.nsamples=1; hmc_opt.persistence=0; hmc_opt.decay=0.8; % HMC-latent latent_opt.nsamples=1; latent_opt.nomit=0; latent_opt.persistence=0; latent_opt.repeat=20; latent_opt.steps=20; latent_opt.stepadj=0.15; latent_opt.window=5; % Here we make an initialization with % slow sampling parameters [rgp,gp,opt]=gp_mc(gp, xx, yy, 'z', ye, 'hmc_opt', hmc_opt, 'latent_opt', latent_opt); % Now we reset the sampling parameters to % achieve faster sampling opt.latent_opt.repeat=1; opt.latent_opt.steps=7; opt.latent_opt.window=1; opt.latent_opt.stepadj=0.15; opt.hmc_opt.persistence=0; opt.hmc_opt.stepadj=0.01; opt.hmc_opt.steps=2; opt.display = 1; opt.hmc_opt.display = 0; opt.latent_opt.display=0; % Define help parameters for plotting xxii=sub2ind([60 35],xx(:,2),xx(:,1)); [X1,X2]=meshgrid(1:35,1:60); % Conduct the actual sampling. % Inside the loop we sample one sample from the latent values and % hyper-parameters at each iteration. After that we plot the samples % so that we can visually inspect the progress of sampling while length(rgp.edata)<1000 % 1000 [rgp,gp,opt]=gp_mc(gp, xx, yy, 'record', rgp, 'z', ye, opt); fprintf(' mean hmcrej: %.2f latrej: %.2f\n', mean(rgp.hmcrejects), mean(rgp.lrejects)) figure(3) clf subplot(1,2,1) plot(rgp.cf{1}.lengthScale, rgp.cf{1}.magnSigma2) xlabel('lenght-scale') ylabel('magnitude') hold on plot(rgp.cf{1}.lengthScale(end), rgp.cf{1}.magnSigma2(end),'r*') drawnow % subplot(2,2,[2 4]) subplot(1,2,2) G=repmat(NaN,size(X1)); G(xxii)=exp(gp.latentValues); pcolor(X1,X2,G),shading flat colormap(mapcolor(G)),colorbar axis equal axis([0 35 0 60]) title('relative risk') drawnow end figure(3) clf G=repmat(NaN,size(X1)); G(xxii)=median(exp(rgp.latentValues)); pcolor(X1,X2,G),shading flat colormap(mapcolor(G)),colorbar set(gca, 'Clim', [0.6 1.5]) axis equal axis([0 35 0 60]) title('Posterior median of relative risk, FIC GP') figure(4) G=repmat(NaN,size(X1)); G(xxii)=std(exp(rgp.latentValues), [], 1).^2; pcolor(X1,X2,G),shading flat colormap(mapcolor(G)),colorbar set(gca, 'Clim', [0.005 0.03]) axis equal axis([0 35 0 60]) title('Posterior variance of relative risk, FIC GP') %}
Cycle 1 Error 2697.954880 Scale 1.000000e+00 Cycle 2 Error 2697.656280 Scale 5.000000e-01 Cycle 3 Error 2697.656274 Scale 2.500000e-01 Tolx and tolfun reached S2 = lengt-scale: 4.457, magnSigma2: 0.037


INVASION OF THE SAUCER MEN(director: Edward L. Cahn; screenply: Al Martin Gurney, Jr./Robert J. Gurney, Jr./Al Martin/from book by Paul W. Fairman, "The Cosmic Frame"; cinematographer: Frederick E. West; cast: Steve Terrell (Johnny), Gloria Castillo (Joan), Frank Gorshin (Joe Gruen), Lyn Osborn (Art Burns), Don Shelton (Mr. Hayden), Sam Buffington (Colonel), Douglas Henderson (Lt. Wilkins), Raymond Hatton (Larkin), Jason Johnson (Detective), 1957)
Reviewed by Dennis Schwartz
A teenage couple making out in lover's lane accidentally runs over a little green alien. The aliens in retaliation kill a drunken opportunist who was looking to cash in on finding aliens, Joe Gruen (Gorshin); and, they will substitute his body for the alien's. The teen couple are not believed by the police when they try to explain to them what happened and are charged with killing Joe; the kids say that an adult would not have had the same problem being believed by the police.
This is an excellent example of a classic bad movie coming out of the '50s sci-fi genre, one that is funny without intending to be funny.
The plot centers around a space ship that lands in Hicksburg (Middle America) and is about to attack the town for no reason. That the army has a secret unit, which happens to be stationed where the space craft lands, and they react to the alien sighting by blowing up the ship but telling the police and the public that it was a jet plane that crashed, leaving no evidence behind that an alien ship ever landed, is a subplot that remains undeveloped. But it should feed the government cover-up advocates and the conspiracy theory junkies with some ammo to make their case that the government is always lying when it says there is no such a thing as flying saucers.
 That is why Joe died.  These slow-moving, goofy looking creatures, who can't be shot, are finally squashed by the lover's lane teens, who take a brief respite from making out to shine their headlights on these creatures, as the strong light makes them evaporate. The assumption is, even though they saved the town, no one will believe them because there are no traces of the aliens left and because no one believes teenagers anyway. This brings out some great paranoia stuff that goes on between the older and younger generations.
The story shifts from the teen couple back to the two drifters who have been in town for a month. Joe, who has been heavily drinking and is frustrated over no job and not having a date on Saturday night, goes riding by himself out in the woods and discovers the dead creature. When he phones his pal, Art (Lyn), who is the narrator of this tale, Art doesn't believe him and goes back to sleep. Art, who will be needed by the teen couple, later on, to clear their name, and he will be taken by them to the woods where the aliens are and will survive an alien attack after he is left in a drunken state. From this experience, he will write a book, complete with photographs of the aliens he took pictures of.
Edward L. Cahn, a master in low-budget schlock, splurges on papier-mache heads for his creatures, and features a disembodied hand that grosses out the young couple who are about to get married without their parents' approval. Johnny (Terrell) works in a garage, while his girlfriend Joan (Castillo), is the daughter of the city attorney (Shelton). He opposes the two dating because he considers Johnny not good enough for his daughter. This little subplot never gets resolved, but adds to the confusion of the story. The story was so confusing, that the film could have been seen in any of the following ways: as a typical teen dating flick, a sci-fi movie, or a comedy spoof of the horror genre. Cahn raises no serious questions about anything- he seems to have a money and brain outage when he made this one. He could have certainly used a much tighter script, better actors, and had more imagination.
There's also some farmer (Hatton ) in this story, who has a shot gun and is running around threatening to shoot everyone who is on his property, as his property is where lover's lane is. He also has a bull that the teens love to get drunk by leaving their beer cans in the meadow. The bull gets so drunk that he gores an alien to death.
Somehow, I got a few laughs out of this flick, and that's good enough for a film that can never go out of style because it is so bad that it never was in style in the first place... This film was originally released on a double bill with "I Was a Teenage Werewolf."
REVIEWED ON 12/30/99 GRADE: C-
Dennis Schwartz: " Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


vignettes/chisq_test.Rmd
chisq_test.Rmd
Note: The type
argument in generate()
is automatically filled based on the entries for specify()
and hypothesize()
. It can be removed throughout the examples that follow. It is left in to reiterate the type of generation process being performed.
library(nycflights13)
library(dplyr)
library(ggplot2)
library(stringr)
library(infer)
set.seed(2017)
fli_small <- flights %>%
na.omit() %>%
sample_n(size = 500) %>%
mutate(season = case_when(
month %in% c(10:12, 1:3) ~ "winter",
month %in% c(4:9) ~ "summer"
)) %>%
mutate(day_hour = case_when(
between(hour, 1, 12) ~ "morning",
between(hour, 13, 24) ~ "not morning"
)) %>%
select(arr_delay, dep_delay, season,
day_hour, origin, carrier)
arr_delay
, dep_delay
season
("winter"
, "summer"
),day_hour
("morning"
, "not morning"
)origin
("EWR"
, "JFK"
, "LGA"
)carrier
Say we wish to assess whether flights out of the three NYC airports have a seasonal component; whether La Guardia gets relatively more winter traffic, say, than JFK. This could be formulated as a test of independence between the origin
(airport) and season
variables.
The recommended approach is to use specify() %>% calculate()
:
obs_chisq <- fli_small %>%
specify(origin ~ season) %>% # alt: response = origin, explanatory = season
calculate(stat = "Chisq")
The observed \(\chi^2\) statistic is 1.7926106.
There also exists a shortcut:
Under the null hypothesis that origin
is independent of season
, we can simulate the distribution of \(\chi^2\) statistics.
chisq_null_perm <- fli_small %>%
specify(origin ~ season) %>% # alt: response = origin, explanatory = season
hypothesize(null = "independence") %>%
generate(reps = 1000, type = "permute") %>%
calculate(stat = "Chisq")
visualize(chisq_null_perm) +
shade_p_value(obs_stat = obs_chisq, direction = "greater")
chisq_null_theor <- fli_small %>%
specify(origin ~ season) %>%
hypothesize(null = "independence") %>%
# generate() ## Not used for theoretical
calculate(stat = "Chisq")
visualize(chisq_null_theor, method = "theoretical") +
shade_p_value(obs_stat = obs_chisq, direction = "right")
## Warning: Check to make sure the conditions have been met for the
## theoretical method. {infer} currently does not check these for you.
We can also overlay the appropriate \(\chi^2\) distribution on top of permuted statistics.
visualize(chisq_null_perm, method = "both") +
shade_p_value(obs_stat = obs_chisq, direction = "right")
## Warning: Check to make sure the conditions have been met for the
## theoretical method. {infer} currently does not check these for you.
The \(\chi^2\) is also useful for determining how different the observed distribution of a single categorical variable is from a proposed theoretical distribution. Let’s test the (trivial) null hypothesis that there is no variability in number of flights that leave from the three NYC area airports. Said another way, we hypothesize that a flat distribution over the airports is a good fit for our data.
chisq_null_perm <- fli_small %>%
specify(response = origin) %>%
hypothesize(null = "point",
p = c("EWR" = .33, "JFK" = .33, "LGA" = .34)) %>%
generate(reps = 1000, type = "simulate") %>%
calculate(stat = "Chisq")
visualize(chisq_null_perm) +
shade_p_value(obs_stat = obs_chisq, direction = "greater")
chisq_null_theor <- fli_small %>%
specify(response = origin) %>%
hypothesize(null = "point",
p = c("EWR" = .33, "JFK" = .33, "LGA" = .34)) %>%
calculate(stat = "Chisq")
visualize(chisq_null_theor, method = "theoretical") +
shade_p_value(obs_stat = obs_chisq, direction = "right")
## Warning: Check to make sure the conditions have been met for the
## theoretical method. {infer} currently does not check these for you.
We can also overlay the appropriate \(\chi^2\) distribution on top of permuted statistics.
visualize(chisq_null_perm, method = "both") +
shade_p_value(obs_stat = obs_chisq, direction = "right")
## Warning: Check to make sure the conditions have been met for the
## theoretical method. {infer} currently does not check these for you.


Lou Andreas Salomé
Here's a time line of the poet of psychoanalysis:
Louise von Salomé was born in St. Petersburg, Russia, on February 12, 1861, the sixth child of the family and the first girl. Lou grew up in a harmonious home where he learned to love and understand. His father, General Gustav von Salomé, was an officer of the Russian Tsar. Extremely affectionate, he exercised paternal authority with love. Capable of small manifestations of tenderness, such as coming back from the receptions promoted by the Tsar bringing bonbons to the children. Lou regarded the father as the "first model of God."
The mother, Mrs. Louise Wilm von Salomé, was a sweet, deeply religious person dedicated to the family, with a great capacity for resolution and independent temperament. Parents loved each other and mutual respect prevailed. When the daughter was born, the general thought it natural to put the name of the wife, the "most beautiful name in the world." Considered rebellious and willful, she often clashed with her mother's authority, a situation that lasted throughout her life.With the intellectual effervescence that he lived and his deep admiration for philosophy, he launched his first book at the beginning of the century, called In the Fight for God.
Shortly thereafter, he showed his great admiration for his friend Nietzsche, publishing his second book: Friedrich Nietzsche and his work. Lou Andreas Salome was a pioneer woman, both in the intellectual and behavioral aspects, and essential in the lives of some of the most important thinkers of all time.  Lou passed away at age 76 on February 5, 1937, and in addition to inspiring some of the most important men in the world, was above all a free, independent woman, a great intellectual and feminine icon of the twentieth century.
Read more...


HALLO.CITY
your best local friend, is working on bringing you a new way to
discover the city:
accommodation, language courses, visa
application, insurance, jobs and more!
Sign up to be the first to know about our launching! 🚀
Days
Hours
Mins
Secs


openssl-crl - CRL command
openssl crl [-help] [-inform DER|PEM] [-outform DER|PEM] [-key filename] [-keyform DER|PEM|P12] [-dateopt] [-text] [-in filename] [-out filename] [-gendelta filename] [-badsig] [-verify] [-noout] [-hash] [-hash_old] [-fingerprint] [-crlnumber] [-issuer] [-lastupdate] [-nextupdate] [-nameopt option] [-CAfile file] [-no-CAfile] [-CApath dir] [-no-CApath] [-CAstore uri] [-no-CAstore] [-provider name] [-provider-path path] [-propquery propq]
This command processes CRL files in DER or PEM format.
Print out a usage message.
The CRL input format; unspecified by default. See openssl-format-options(1) for details.
The CRL output format; the default is PEM. See openssl-format-options(1) for details.
The private key to be used to sign the CRL.
The format of the private key file; unspecified by default. See openssl-format-options(1) for details.
This specifies the input filename to read from or standard input if this option is not specified.
Specifies the output filename to write to or standard output by default.
Output a comparison of the main CRL and the one specified here.
Corrupt the signature before writing it; this can be useful for testing.
Specify the date output format. Values are: rfc_822 and iso_8601. Defaults to rfc_822.
Print out the CRL in text form.
Verify the signature in the CRL.
Don't output the encoded version of the CRL.
Output the fingerprint of the CRL.
Output the number of the CRL.
Output a hash of the issuer name. This can be use to lookup CRLs in a directory by issuer name.
Outputs the "hash" of the CRL issuer name using the older algorithm as used by OpenSSL before version 1.0.0.
Output the issuer name.
Output the lastUpdate field.
Output the nextUpdate field.
This specifies how the subject or issuer names are displayed. See openssl-namedisplay-options(1) for details.
See "Trusted Certificate Options" in openssl-verification-options(1) for details.
See "Provider Options" in openssl(1), provider(7), and property(7).
Convert a CRL file from PEM to DER:
openssl crl -in crl.pem -outform DER -out crl.der
Output the text form of a DER encoded certificate:
openssl crl -in crl.der -text -noout
Ideally it should be possible to create a CRL using appropriate options and files too.
openssl(1), openssl-crl2pkcs7(1), openssl-ca(1), openssl-x509(1), ossl_store-file(7)
Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.


Quiz Board
Fill in the blanks by clicking the right answer to each questions.
1. JavaScript has built-in features. What are they called?
Arrays
Functions
Loops
2. What is the object that lets you store multiple values in a single variable?
A loop
An array
A string
3. What do we call a feature which facilitates the execution of a set of instructions/functions repeatedly?
An executor
A loop
An array
4. What is used in JavaScript to store a series of characters?
A loop
A string
A closure
5. which property indicates that a value is not a legal number?
An indicator
NaN
A Num
SUBMIT
Your scores are:


@(text: String = "No Data is currently available, make sure the SDK is integrated into your app.", hidden: Boolean = true)


contact me
Follow me on Twitter
@Iam_ahead
For futher information submit you query
emailMy name is Shotola Hammed a native Of Ogun state, I am Naive for now but am Willing to learn, I Love Reading and the last book i read was Green and Black a book by Jo fairlay.
Am a dot-net developer (begginer) Proficent with C#, and intemediate with the Asp.net Mvc frameworkFollow me on Twitter
@Iam_ahead
For futher information submit you query
email


Process
I started with defining the mission, vision, and values for Zest Organics.
Next, I created a style guide using Pinterest images. I chose an illustrative style for the foods in my assets, as it felt more friendly & playful than real pictures of food or see-through packaging.
Here are some logo explorations:
For my logo design, I went with a very minimal look that can be easily adapted to various products and marketing assets. I didn't include a food icon in the logo, because the brand encompasses a lot of different types of foods and drinks - I didn't want to be recognized by just one.
I ended up choosing a color scheme that had an earthy-feel to it, while still having the occasional pop of color. After all, I used the word "Zest" in my brand to emphasize energy and delight.
This was an extremely educational and enjoyable process! I became more comfortable with
Photoshop and Illustrator, and now can create product mockups. I also learned the importance of establishing a cohesive brand identity.
< previous project - joinIn


Geogebra Sinewave Function Composer
About
Step 1
- Create your notes table!
Add notes to your table here!
Note
Frequency
Duration
Add
Clear All
My Table
Export
#
Note
Frequency
Equation
Duration
{{ index + 1 }}
f(x) = 2sin({{ note.freq * 2 }}*pi*x)
X
Step 2
- Get your function!
Function Generator
Here's your function!
(Triple-click on the red text to select all!)
{{ geoFunc }}
Step 3
- Copy & paste your function into
Geogebra!
Created by
Sam Carlile
. Source on
Github


“Websites promote you 24/7: No employee will do that.” ― Paul Cookson
A Web Design Porfolio For Jason R. Butts
PAST PROJECTS
ADOBE FLASH
Able to create character animations as well as interactive apps using Adobe Flash and ActionScript
ADOBE ILLUSTRATOR
Highly efficient in Adobe Illustrator for both web and print
ADOBE PHOTOSHOP
Well trained in Adobe Photoshop
AUTODESK: MAYA 3D
Skilled at making three dimensional models and applying realistic textures
ADOBE PREMIERE PRO
Proficient working with audio and video
RESUME
Education
Currently enrolled as a senior at the University of Central Florida pursuing a degree in Digital Media Web Design
Experience
Web Design with experience using HTML, CSS, JavaScript, PHP, Frameworks, and PhpMysql.
2 Years Experience as Dye Sublimation Department Supervisor for Victory Tailgate working closely with entities such as The NCAA Amazon.com, and Guy Harvey


Weather-Latitude Analytics
This is a simple weather analysis dashboard that investigates the climatic variations as a function of latitude through 2-d scatter plots and climactic geomaps. This involves analyzing association between four basic climatic factors including temperature, humidity, cloudiness and wind speed with respecto latitude and latitude-longitude.
The current analysis has heavily focused on temperature records sampled at cities across the world that can easily influenced by the non-uniformity of city distributions. As the land masses are distributed predominantly in the Northern Hemisphere (68%) compared to the Southern Hemisphere (32%), it is quite likely that more cities are located in Northern hemisphere compared to the Southern Hemisphere. The climatic variation has only been assessed with respect to latitude while ignoring other plausible governing factors. It is well know that any climatic phenomenon depends on other factors such as altitude and local topgrapy and clearly, an accurate climatic analysis can be achieved as any potential factor being accounted for global level climatic variations is considered.


playlist_play
Movies
TV Shows
ANIME
+18
Porn
Coming soon
Theater
TEDflix
Concerts
Music
Books
Sports


@* * Copyright 2010-2017 Artima, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import controllers.Application.scaladocsPageUrl @import controllers.Application.latestVersion @import controllers.Application.latestSeleniumVersion @userGuidePage("Using Scala-js") {
ScalaTest @latestVersion includes support for Scala-js. Following the steps in the Scala-js Basic Tutorial, you'll add the following to sbt build file to use ScalaTest:
libraryDependencies += "org.scalatest" %%% "scalatest" % "3.0.0" % "test"
The following is an example test suite written using ScalaTest:
package tutorial.webapp import org.scalatest._ import org.scalajs.jquery.jQuery class TutorialTestWithScalaTest extends FunSpec { // Initialize App TutorialApp.setupUI() describe("TutorialApp") { it("should contain 'Hello World' text in its body") { assert(jQuery("p:contains('Hello World')").length == 1) } it("should append 'You clicked the button!' text when the user clicks on the 'Click me!' button") { def messageCount = jQuery("p:contains('You clicked the button!')").length val button = jQuery("button:contains('Click me!')") assert(button.length == 1) assert(messageCount == 0) for (c <- 1 to 5) { button.click() assert(messageCount == c) } } } }
The first test uses jQuery
to verify that the page contains exactly one <p> element containing the text “Hello World”
after the UI has been set up. The second test checks the behavior that
when 'Click me!' button is clicked, it will append a new <p> element containing the text “Hello World”
in
the body of the page.
You can run the test by issuing test
command in the sbt:
> test [info] TutorialTestWithScalaTest: [info] TutorialApp [info] - should contain 'Hello World' text in its body [info] - should append 'You clicked the button!' text when the user clicks on the 'Click me!' button
Now we can take a look at some goodies ScalaTest has that can help you address specific problems, starting with using Inside.


bottom feeder
`Prev `__
B
`Next `__
--------------
**bottom feeder**: n.
1. An Internet user that leeches off ISPs — the sort you can never
provide good enough services for, always complains about the price, no
matter how low it may be, and will bolt off to another service the
moment there is even the slimmest price difference. While most bottom
feeders infest free or almost free services such as AOL, MSN, and
Hotmail, too many flock to whomever happens to be the cheapest regional
ISP at the time. Bottom feeders are often the classic problem user,
known for unleashing spam, flamage, and other breaches of
`*netiquette* <../N/netiquette.html>`__.
2. Syn. for `*slopsucker* <../S/slopsucker.html>`__, derived from the
fishermen's and naturalists' term for finny creatures who subsist on the
primordial ooze. (This sense is older.)
--------------
+------------------------+----------------------------+--------------------------------+
| `Prev `__ | `Up <../B.html>`__ | `Next `__ |
+------------------------+----------------------------+--------------------------------+
| bot | `Home <../index.html>`__ | bottom-post |
+------------------------+----------------------------+--------------------------------+