git2go
Go bindings for libgit2. The master
branch follows the latest libgit2 release. The versioned branches indicate which libgit2 version they work against.
Installing
This project wraps the functionality provided by libgit2. If you're using a stable version, install it to your system via your system's package manager and then install git2go as usual.
Otherwise (next
which tracks an unstable version), we need to build libgit2 as well. In order to build it, you need cmake
, pkg-config
and a C compiler. You will also need the development packages for OpenSSL and LibSSH2 installed if you want libgit2 to support HTTPS and SSH respectively.
Stable version
git2go has master
which tracks the latest release of libgit2, and versioned branches which indicate which version of libgit2 they work against. Install the development package on your system via your favourite package manager or from source and you can use a service like gopkg.in to use the appropriate version. For the libgit2 v0.22 case, you can use
import "gopkg.in/libgit2/git2go.v22"
to use a version of git2go which will work against libgit2 v0.22 and dynamically link to the library. You can use
import "github.com/libgit2/git2go"
to use the version which works against the latest release.
From next
The next
branch follows libgit2's master branch, which means there is no stable API or ABI to link against. git2go can statically link against a vendored version of libgit2.
Run go get -d github.com/libgit2/git2go
to download the code and go to your $GOPATH/src/github.com/libgit2/git2go
directory. From there, we need to build the C code and put it into the resulting go binary.
git checkout next
git submodule update --init # get libgit2
make install
will compile libgit2. Run go install
so that it's statically linked to the git2go package.
Parallelism and network operations
libgit2 uses OpenSSL and LibSSH2 for performing encrypted network connections. For now, git2go asks libgit2 to set locking for OpenSSL. This makes HTTPS connections thread-safe, but it is fragile and will likely stop doing it soon. This may also make SSH connections thread-safe if your copy of libssh2 is linked against OpenSSL. Check libgit2's THREADSAFE.md
for more information.
Running the tests
For the stable version, go test
will work as usual. For the next
branch, similarly to installing, running the tests requires linking against the local libgit2 library, so the Makefile provides a wrapper
make test
Alternatively, if you want to pass arguments to go test
, you can use the script that sets it all up
./script/with-static.sh go test -v
which will run the specified arguments with the correct environment variables.
License
M to the I to the T. See the LICENSE file if you've never seen a MIT license before.


| DOSE: |
25 mg |
smoked |
5-MeO-DMT |
(powder / crystals) |
In an attempt to find out what lay at the edges of the slight curling vibrations at the onset of a mild 5-meo-dmt experience, I found the edge. First and foremost, I would like to recommend that no person try this ever. I have some friends who have been where I have and they are changed.
Me and my friend J were sitting around his house pondering what to do with our evening. A gram of 'pond' 5-meo-dmt, a meth pipe and minutes or hours to waste. Having spent the greater part of the previous months tripping foxy or taking nitrous or eating pills... something more substantive was on the horizon.
The night started out simply enough with us watching cartoons and smoking small (3-5 mgs) doses of meo-dmt. The small doses of 5-meo-dmt have the wonderous ability to slide one from ones body into positions of slight rapture. Rapture I call it; it is the experience of having ones nerves firing simultaniously and the beginnings of the violent seperation to come.
 J had gone into his bathroom to hit it and hadn't nearly cleared out the 10mg's he put in the pipe. He handed it to me with not a word.
At this point I had decided to take the substance to the next level, and I put approx 20 mgs of 5-meo-dmt into the pipe. I sat down on his toilet and looked in the pipe. I could see there was a little more than there should be. I looked at the edge of the cliff, my sense of self preservation safely tucked away under months of successful, non-death causing drug use.
Throwing caution to the wind is a term that while quite cliche, it manages to summerize the moment quite well. The lighter sparked, the flame hungry, the pipe, quite hot. Once one has performed numerous (100+) hits off a pipe of 5-meo-dmt, one begins to expect the hazy amber smoke that one gets. Today I got milk, think the purest white milk in high contrast, in a photograph... against a black backdrop.
As it began to enter my lungs... the sensation I can recall thinking most clearly was a profound, wordless, 'OH SHIT.' The walls immediately grayed into a sensational breakdown of color. Things all grayed into a scene something like static on a tv tuned to an unaired channel. TORN. My cognisant being managed to become lodged in a synapse somewhere in my brain as a torrent of raw essential chemical energy washed over me tossing me about like a rag doll.
I would imagine that I have had an experience quite like a rafter caught in the well of a waterfall being tossed and thrown without ability to object. I was aware only of my inability to have awareness. I was forced into existance without check or balance, without ego or memory. I was simply being washed away.
I was experiencing sound louder than I'd ever heard, sight brighter than my eyes could see, vibrations more physically intense than any feeling. They all coincided, they were not seperate feelings. There was unity: feeling, sight, sound all inside this rushing, swirling vortex of unimaginable intensity. Think electrocution while being drowned in a washing machine and having your entire body perferated with needles while a mini sun set to strobe light flies around into fantastic patterns.
I seem to remember hearing the echoing, orgasmic, thundering words, pounding in my skull, 'OH MY GOD, HOLY SHIT, OH MY GOD,' etc... As the torrent of scouring energy pulsed through my body, I began to hear a sensation. I EMERGED for a moment from the ether to see my best friend, pulling on my shirt, asking me if I was ok. I went under again... my name called more... coming out. I came out.
I appologized, I'm so sorry, I'm so sorry; over and over again. I had been torn away from my self, I existed at that moment as only the person who had been awakened from the entirity of the universe by my best friend. There was nothing else... there was everything, then there was me there, being saved by my friend.
10 or 15 minutes... I was on his bathroom floor, screaming at the top of my lungs. Staring, but unseeing. He thought I was going to die.
I felt as though I'd commited the worlds most filthy sin. I was simply shattered.
Flashbacks occured for a couple of months afterwards. The sense panic at my ego being torn from my hands was present each time. It can be described as a most beautiful terror. There is something quite artistic to the pain of it and something quite mucky and dirty about re-entering the world of ego based communication.
Would I ever do it again?  Should you try it? You should be beaten to death with your own shoe for asking. Has it changed my life? In every concievable way.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


MNFNetworthAccount
@interface MNFNetworthAccount : MNFObject
MNFNetworth represents the main networth class from which you fetch main info and lists with Networth information. Networth accounts
-
@abstract The ID of the networth account. @duscission this is an accountId and is therefore also applicable in MNFAccount
Declaration
Objective-C
@property (readonly, strong, nonatomic) NSNumber *_Nonnull accountId;
-
@abstract The name of the networth account. @duscission Updating the account name will also affect the corresponding MNFAccount
Declaration
Objective-C
@property (readwrite, copy, nonatomic) NSString *_Nonnull accountName;
-
@abstract The realmAccountTypeId of the networth account. @duscission This is identical to the the corresponding property in MNFAccount
Declaration
Objective-C
@property (readonly, strong, nonatomic) NSNumber *_Nonnull accountTypeId;
-
@abstract A flag indicating whether the networth account has been imported by the system.
Declaration
Objective-C
@property (readonly, strong, nonatomic) NSNumber *_Nonnull isImport;
-
@abstract A flag indicating whether the networth account has been created by the user @discussion Only manual accounts can be updated
Declaration
Objective-C
@property (readonly, strong, nonatomic) NSNumber *_Nonnull isManual;
-
@abstract A flag indicating if the manual account should be included or excluded from net worth. @discussion Only manual accounts can be updated
Declaration
Objective-C
@property (readwrite, strong, nonatomic) NSNumber *_Nonnull isExcluded;
-
@abstract The net worth type. @discussion Should be either
Asset
orLiability
.Declaration
Objective-C
@property (readonly, copy, nonatomic) NSString *_Nonnull netWorthType;
-
@abstract Current balance of the account. @discussion Must be a positive number. The service changes it according to the net worth type.
Declaration
Objective-C
@property (readonly, strong, nonatomic) NSNumber *_Nonnull currentBalance;
-
@abstract List of balance history for the networth account. @discussion If fetched as a summery this list will include interpolated/estimated history values.
Declaration
Objective-C
@property (readonly, copy, nonatomic) NSArray<MNFNetworthBalanceHistory *> *_Nonnull history;
-
@abstract Account type of the networth account. @discussion This is identical to the account type of the corresponding MNFAccount.
Declaration
Objective-C
@property (readonly, strong, nonatomic) MNFAccountType *_Nonnull accountType;
-
+createWithInitialBalance:balance:accountIdentifier:displayName:networthType:initialBalanceDate:completion:
@abstract Instantiates a new networth account object. - parameter: initialBalance The initial balance of the account at the time of initialBalancedate. If nil, balance will be used. - parameter: balance The current balance of the networth account. - parameter: accountIdentifier Identifier for the account set by the originating bank. This identifier is used when getting account statements. - parameter: displayName The name of the networth account. - parameter: networthType The networth type, either
Asset
orLiability
. - parameter: initialBalanceDate the initial date for balance history on the networth account. If nil [NSDate date] will be used. - parameter: completion completion executing with an error or nil. - returns: an error or a new MNFNetworthAccount object. @discussion This will instantiate a new networth account object on the remote with the parameters specified and with isManual equal to true. - note: To get the object, use one of the fetch methods.Declaration
Objective-C
+ (nonnull MNFJob *) createWithInitialBalance:(nullable NSNumber *)initialBalance balance:(nonnull NSNumber *)balance accountIdentifier:(nullable NSString *)accountIdentifier displayName:(nonnull NSString *)displayName networthType:(nonnull NSString *)networthType initialBalanceDate:(nullable NSDate *)initialBalanceDate completion:(nullable MNFSingleNetworthAccountsCompletionHandler) completion;
Parameters
initialBalance
The initial balance of the account at the time of initialBalancedate. If nil, balance will be used.
balance
The current balance of the networth account.
accountIdentifier
Identifier for the account set by the originating bank. This identifier is used when getting account statements.
displayName
The name of the networth account.
networthType
The networth type, either
Asset
orLiability
.initialBalanceDate
the initial date for balance history on the networth account. If nil [NSDate date] will be used.
completion
completion executing with an error or nil.
Return Value
an error or a new MNFNetworthAccount object.
-
@abstract Fetches a networth account with the specified id. - parameter: identifier networth account id. - parameter: completion completion executing with an error or result - returns: an MNFJob with result or error @discussion The balance history in these Networth objects wil NOT include interpolated/estimated history values. i.e. balance history which has been estimated if there is no existing history for a specific period. Note: Unknown account types are ignored
Declaration
Objective-C
+ (nonnull MNFJob *) fetchWithId:(nonnull NSNumber *)identifier completion:(nullable MNFSingleNetworthAccountsCompletionHandler)completion;
Parameters
identifier
networth account id.
completion
completion executing with an error or result
Return Value
an MNFJob with result or error
-
@abstract Fetches a list of networth accounts and balance history. - parameter: startDate The minimum date of the balance history - parameter: endDate The maximum date of the balance history - parameter: interPolation If true, the API will return estimated values for months with no imported or manually added values. - parameter: completion completion executing with an error or result - returns: An MNFJob containing an array of networth accounts or an error. @discussion Unknown account types are ignored
Declaration
Objective-C
+ (nonnull MNFJob *) fetchWithStartDate:(nonnull NSDate *)startDate endDate:(nonnull NSDate *)endDate interPolation:(BOOL)useInterpolation completion: (nullable MNFMultipleNetworthAccountsCompletionHandler)completion;
Parameters
startDate
The minimum date of the balance history
endDate
The maximum date of the balance history
interPolation
If true, the API will return estimated values for months with no imported or manually added values.
completion
completion executing with an error or result
Return Value
An MNFJob containing an array of networth accounts or an error.
-
@abstract Fetches the date of the first entry in the networth balance history - parameter: excludedAccounts Flag indicating if accounts that are excluded from net worth should be excluded. - parameter: completion completion executing with an error or result - returns: Returns an MNFJob with result or error.
Declaration
Objective-C
+ (nonnull MNFJob *) firstEntrydateWithExcludedAccounts:(BOOL)excludedAccounts completion: (nullable MNFSingleNetworthBalanceHistoryCompletionHandler) completion;
Parameters
excludedAccounts
Flag indicating if accounts that are excluded from net worth should be excluded.
completion
completion executing with an error or result
Return Value
Returns an MNFJob with result or error.
-
@abstract Fetches the available networth account types. - parameter: completion completion executing with an error or result - returns: Returns an MNFJob with results or error.
Declaration
Objective-C
+ (nonnull MNFJob *)fetchNetworthTypesWithCompletion: (nonnull MNFMultipleAccountTypesCompletionHandler)completion;
Parameters
completion
completion executing with an error or result
Return Value
Returns an MNFJob with results or error.
-
@abstract Updates the current networth account with name and visibility - parameter: completion completion executing with an error or nil. - returns: Returns an MNFJob with result or error. @discussion Only networth accounts which are manually created can be updated
Declaration
Objective-C
- (nonnull MNFJob *)saveWithCompletion: (nullable MNFErrorOnlyCompletionHandler)completion;
Parameters
completion
completion executing with an error or nil.
Return Value
Returns an MNFJob with result or error.
-
@abstract Deletes the account from networth. - parameter: completion completion executing with an error or nil. - returns: MNFJob A job containing a result or an error. The task result will always be nil. @discussion This will remove the entity and all history for the current networth account. NOTE: Only manually added accounts can be deleted
Declaration
Objective-C
- (nonnull MNFJob *)deleteAccountWithCompletion: (nullable MNFErrorOnlyCompletionHandler)completion;
Parameters
completion
completion executing with an error or nil.
Return Value
MNFJob A job containing a result or an error. The task result will always be nil.
-
@abstract Adds the balance history to the networth. - parameter: balanceHistory An MNFNetworthBalanceHistory object containing date and balance. - parameter: completion completion executing with an error or nil. - returns: MNFJob A job containing an error. @discussion This will add the balance history entry to the networth NOTE: You can only add balance history to manually created accounts
Declaration
Objective-C
- (nonnull MNFJob *) addBalanceHistory:(nonnull MNFNetworthBalanceHistory *)balanceHistory completion:(nullable MNFErrorOnlyCompletionHandler)completion;
Parameters
balanceHistory
An MNFNetworthBalanceHistory object containing date and balance.
completion
completion executing with an error or nil.
Return Value
MNFJob A job containing an error.


Regina Compton
Code wrangler. Storyteller. Perennial student.
Regina learned to code as an act of quiet defiance. The inflexibility of online, depressing drag-and-drop templates troubled Regina, who imagined more vibrant, more flexible, more beautiful ways to shape the web. So, she learned to code. Though a once self-proclaimed Luddite, Regina now enjoys the long stretches of time she spends having conversations with her Mac machine. Presently, Regina studies the art-of-talking-to-computers at Dev Bootcamp in Chicago.
Regina also likes to think about music, in particular opera. She dedicated the last three years of her life to the study of "simple recitative," a style of music that carries the dialogue in dramatic works. Scholars once ignored simple recitative, as though it were a stray dog or the last kid picked for dodge ball in gym class. Regina acknowledged the beauty and excitement of simple recitative. For this, some people said "good work, you." Regina continues to research and contemplate music: she sneaks away to the Newberry Library on Saturdays to study scores, and she anticipates each performance of the CSO and Lyric Opera.


AngularJs Validation
Userid ::
Userid Is Required!!
Invalid Userid!!
Password ::
Password Is Required!!
Invalid Password!!
Email ::
Email Is Required!!
Invalid Email Address!!
Reset
Submit


The MAVIS libraries provide a modular and extensible protocol for authorization and authentication tasks. Authorization/authentication modules are stackable and configurable. Both synchronous and asynchronous operation modes are available.
The modules are reentrant, but not thread-save.
The MAVIS system consists of the MAVIS library (libmavis.so) and various MAVIS modules (libmavis_*.so). The library glues the modules together, sends requests to and receives answers from the modules. A module may answer (or modify) a request or pass it on to the module loaded later. It may intercept and modify the response from that module.
Example: Consider the following set-up:
An incoming request, e.g. for FTP authentication, first reaches the log module, which simply passes it on to the limit module. The limit module checks the IP address of the client and rejects the request if that address is blacklisted. Otherwise, the request is passed on to the auth module, which leaves it alone and passes it on to the cache module. If the request is not cached within the cache module it is passed on to the pam module, which sets some attribute-value pairs and sends the request back to the cache module. The cache module in turn adds the request data to its cache database and passes it back the auth module for authentication checking. [Remaining steps omitted.]
--. .--> | | .===|===<log>==============================================|===. | | log -----' | | | request <----. | >===|===<limit>============================================|===< | '--> client IP ------(YES)------> reject ----------->| | | .--- blacklisted? .---> request | | | | | | | | (NO) (YES)-- add IP to --(NO)--' | | | blacklist? <-------. | >===|===<auth>=============================================|===< | | verify -----' | | | authentication <----. | >===|===<cache>============================================|===< | '--> answer for request ---(YES)---> answer request -->| | | .--- already cached? | | | | | | | (NO) cache -----' | | | request <----. | >===|===<pam>==============================================|===< | '--> retrieve authentication information from ---------' | | PAM sub-system and system files | '--------------------------------------------------------------'
Some MAVIS modules have both synchronous and asynchronous operation modes. For low and medium performance applications it's sufficient to have one authentication daemon processing all incoming requests, with all the MAVIS modules utilized by mavisd operating synchronously. However, this introduces a serialization of all queries, causing requests that could immediately be answered by e.g. the limit or cache module to be deferred until database queries got processed. One possible solution to remedy this is to add one or more secondary authentication daemon for asynchronous processing of queries for synchronous-only modules. The remote module automatically distributes queries between the configured MAVIS daemons.
Stand alone setup: Authentication requests are processed synchronously. Only recommended for low-latency modules where no common database is required, e.g. the anonftp module.
.-----------. .-----------. | .-----------. |-| | Client |-| | |-----------| | | | [ log ] | |-' | [ ... ] |-' `-----------'
Remote authentication setup: Authentication request processing is done asynchronous by mavisd. Recommended for medium-latency modules or modules that require access to shared data, e.g. the limit or cache module.
.------------. .-----------. .------------. |<===>| mavisd | .------------. |<=====>|-----------| | Client |<=======>| [ log ] | |------------| |-' | [ limit ] | | [ remote ] |-' | [ auth ] | `------------' | [ cache ] | | [ ... ] | `-----------'
Remote authentication setup with redundancy: Recommended for high-latency modules that are only capable of synchronous request processing, high- performance setups or where redundancy is desired, e.g. suitable for database access modules.
.------------. .------------. .-----------. .------------. |<===>| mavisd |<=======>| mavisd | .------------. |<=====>|------------| .-----------.-| | Client |<=======>| [ log ] |<=====>| mavisd | | |------------| |-' | [ limit ] | |-----------| | | [ remote ] |-' | [ auth ] | | [ log ] |-' `------------' | [ cache ] | | [ ... ] | | [ remote ] | | [ ... ] | `------------' `-----------'
MAVIS modules are configured within the context of the application utilizing them. There's no special configuration file required or even supported.
Top-level configuration directives common to all of the applications using the MAVIS interface are:
include = config
Evaluates configuration file config.
id = ID{ ... }
Defines a configuration section ID, which will be evaluated by a matching server process.
Standard configuration directives which may be used both at top-level and inside the ID sections are:
alias = name { ... }
Defines an alias for the configuration directives inside the curly brackets.
debug = Level ...
Level can be either a integer value or a sequence of debugging keywords, each of which may, optionally, start with + or -, where + will enable debugging, and - will disable it. Supported keywords and their corresponding integer values are:
| PARSE | 1 |
| AUTHOR | 2 |
| AUTHEN | 4 |
| ACCT | 8 |
| CONFIG | 16 |
| PACKET | 32 |
| HEX | 64 |
| LOCK | 128 |
| REGEX | 256 |
| ACL | 512 |
| RADIUS | 1024 |
| CMD | 2049 |
| BUFFER | 4096 |
| PROC | 8192 |
| NET | 16384 |
| PATH | 32768 |
| CONTROL | 65536 |
| INDEX | 131072 |
| AV | 262144 |
| MAVIS | 524288 |
Not all of these debugging flags may have an actual effect. The flags are additive; use the special flag NONE to clear all flags, use ALL to set all flags.
Debugging options may only be available when the package was configured with the --debug command line switch.
Example:
debug = ALL -PARSE -NET
regex-match-case = ( yes | no )
Enables/disables case-sensitive regex pattern matching for the current context. Default: no.
syslog ident = Ident
Set the syslog(3) identity. Defaults to the programs basename.
syslog level = Level
Set the syslog(3) level. Default: INFO.
syslog facility = Facility
Set the syslog(3) facility. Default: UUCP.
syslog default = ( permit | deny )
Enables or disables implicit logging to syslog(3) (if supported). Default is permit.
Standard configuration directives which may be used inside the ID section of MAVIS enabled applications are:
mavis path = Path
Add Path to the module search path.
mavis module = ModuleName { ... }
This directive searchs for module ModuleName in the compiled-in and configured search paths. Alternatively to auto-search, ModuleName may be an absolute path to a MAVIS module. The module will be loaded and will parse the configuration data inside the curly brackets.
An actual configuration could look similar to:
syslog level = INFO syslog facility = DAEMON id = spawnd { listen = { port = 21 } debug = NET background = no spawn = { exec = /usr/local/libexec/ftpd } } id = ftpd { debug = ACL AUTHEN mavis path = /some/none/default/location mavis module = tee { path in = /tmp/av.in path out = /tmp/av.out } mavis module = log { } mavis module = anonftp { userid = 100 groupid = mail home = / root = /tmp/ incoming = /tmp/incoming/ } acl testacl { src = <IP_ADDRESS> } # lots of stuff missing here ... }
The following modules are included in the distribution.
This module implements anonymous FTP authentication. If the cache module is to be used, it has to be loaded after the anonftp module, because the cache module will only cache FTP type queries compatible with the auth module, and queries answered by the anonftp module aren't.
The following configuration directives are mandatory, unless a ftp user exists in the local password database, in which case that information may be gathered from there:
userid = UserID
groupid = GroupID
root = RootDirectory
home = HomeDirectory
There's one optional directive:
upload = UploadPathRegex
By default, anonymous FTP uploads are denied. The upload directive specifies a POSIX regular expression where uploads are permitted.
This module implements FTP authentication via an ASCII file.
file = path
Authentication data is read from path. The generic syntax for individual configuration file lines is:
user:password:uid:gids:type:root:home[:certsubj]
Example file:
customer1:whatever:10000:10001:anon:/home/customers/customer1:/ customer2:whatever:10000:10002:anon:/home/customers/customer2:/:/C=DE/ST=... admin:whatever:10000:10001,10002:real:/home/customers:/admin
This configuration directive is mandatory.
userid ( min | max ) UserID
This directive specifies upper and lower UID limits.
groupid ( min | max ) GroupID
This directive specifies upper and lower GID limits.
This module implements the server side of plain text and certificate based authentication schemes.
The auth module is mandatory for most authentication to work. It needs to be loaded before any caching or database access module, and it won't work over remote links unless mavisd is configured with "transmit-password yes". The anonftp and, depending on the backend, the external module are the only ones that doesn't require this module to be loaded.
The only configuration option available is
authentication-mode = cert [ sufficient | required ]
This option may be used when authentication via digital certificates (currently supported by the system module) is used. If the sufficient keyword is used, no additional password authentication is necessary. The required keyword makes certificate authentication mandatory
This module stores the most recently answered queries in RAM for faster processing of subsequent queries for the same data. For most applications, it has to be loaded after the auth module.
Available configuration directives are:
expire [ Type ] = Seconds
Specifies the caching period for requests of type Type (or of all requests, if no type is given). No caching will be performed unless this directive is given. Valid values for Type are: FTP, TACPLUS.
Example:
# cache everything 100 seconds by default: expire = 100 # Don't cache FTP requests: cache expire FTP = 0
purge-outdated = Seconds
Periodically, outdated entries have to be removed from the cache. By default, this happens every 300 seconds, but you may specify a different garbage collection interval.
This module implements an interface to external authentication programs. An authentication program is expected to read a list of attribute-value pairs on stdin, and write the processed list (plus a result code) to stdout. The programs stderr output will be logged to syslogd.
Sample authentication backends for the external module include various Perl scripts, e.g. for RADIUS and LDAP authentication (see the mavis/perl/ directory), plus C backends. The latter are radmavis (for RADIUS authentication) and pammavis (for PAM authentication, as an alternative to the PAM module). While those may not be as flexible and easily to modify as the Perl scripts, they carry far fewer dependencies, and quite a lot of the usual attribute modifications can be performed using scripts; see the Scripting section below.
Using the external module to interface to external authenticators is probably in most cases favourable to writing custom modules, as external authentication programs may be implemented as easy-to-deploy Perl programs. Plus, you're likely to get get parallelism for free.
| Caveat Emptor | |
|---|---|
|
Chaining external modules in asynchronous mode may not work as expected. Just don't do it. |
The following configuration directives are available:
userid = UserID
Set user id of child process to UserID.
groupid = GroupID
Set group id of child process to GroupID.
home = Directory
Change to Directory before executing child process.
childs ( min | max ) = Number
Set the minimum or maximum number of child processes (defaults: 4, 20).
setenv Variable = Value
Set environment variables.
exec = Path Arguments ...
Set path and arguments (including argv[0]) of the authentication program. It's recommended to enclose the individual arguments in double quotes if they contain non-alphanumeric characters.
This module resolves numerical group IDs returned by a downstream backend to their corresponding ASCII names.
The following configuration directives are available:
resolve gid = ( yes | no )
This tells the module to resolve the primary group id.
resolve gids = ( yes | no )
This tells the module to resolve the group access list.
gid filter = [ not ] gid_start[-gid_end][,gid_start[-gid_end]]*
Establishes a filter on the GID MAVIS attribute. Example:
gid filter = 100,1000-1050
gids filter = [ not ] gid_start[-gid_end][,gid_start[-gid_end]]*
Establishes a filter on the GIDS MAVIS attribute. Example:
gid filter = 100,1000-1050
group filter = [ not ] regex[,regex]*
Establishes a filter on the GID MAVIS attribute after name resolving. Example:
group filter = /^com/
groups filter = [ not ] regex[,regex]*
Establishes a filter on the GIDS MAVIS attribute after name resolving. Example:
groups filter = /^com/
(regex syntax in these examples is PCRE, but standard POSIX will work, too.)
This module implements limitations on the number of failed authentications per IP address.
Available configuration directives are:
blacklist time = Seconds
blacklist count = Count
This limits the number of failed authentication requests per client IP address to Count per Seconds interval. Subsequent requests from the same client IP address will be rejected. This is disabled by default.
purge-outdated = Seconds
Periodically, the module will start a garbage collection run in order to remove outdated data from its internal data structures. This directive sets the garbage-collection period to Seconds (default: 300).
This module performs query logging to syslogd. There are no configuration options.
This module implements an interface for FTP authentication via pluggable authentication modules (PAM). The PAM module doesn't support asynchronous operation; you might be better off using the external module in conjunction with the pammavis program, giving you parallelism and a lot more flexibility for free.
PAMs that perform queries other than the standard username/password aren't supported.
Please take care not to use PAM modules with login delays enabled. E.g., for the pam_unix module, configure your PAM subsystem to use the nodelay (or whatever it's called in your setup) option, e.g. in /etc/pam.conf:
mavis required pam_unix.so nodelay
or in /etc/pam.d/mavis (or whatever service you've specified, see below):
auth required pam_unix.so nodelay account required pam_unix.so password required pam_unix.so session required pam_unix.so
On MacOS, the following should work:
auth required pam_opendirectory.so account required pam_opendirectory.so password required pam_opendirectory.so session required pam_opendirectory.so
| Pluggable Authentiation Modules | |
|---|---|
|
Configuring PAM correctly is pretty system specific. Do not assume that one of the examples above will work on your box. Have a look at your existing PAM configurations instead, and read the documentation that comes with your system. |
Programs utilizing this module may have to run under the user id of root if access to the shadow password file is required.
Available configuration options are:
chroot = ( yes | no )
This activates a chroot environment for PAM users (default: yes). The chroot root directory is either the users' home directory or, if the home directory path contains a /./ sequence, the directory denoted by the path up to that sequence.
service = Service
This specifies the service name to use for PAM initialization. It defaults to mavis.
This module implements communication with mavisd.
Available configuration options are:
local address = IPAddress
Set address for outgoing IP connections.
rebalance = Count
Re-balances peers after Count requests. May be used to reactivate dead peers. Use with care.
Default: unset.
server = { ... }
Specifies a server mavisd runs on. Inside the curly brackets, the following directives are permitted:
path = UnixPath
address = IPAddress
port = UDPPort
blowfish key = Key
blowfish keyfile = KeyFile
These set remote connection endpoint and blowfish key. This directive may be used multiple times. Communication will be Blowfish encrypted if a key is specified.
Communication via PF_UNIX sockets may only work if the host system supports anonymous binds for that protocol family. This works on Linux, which supports an abstract namespace which is independent of the file system, but may or may not be an option on other operating systems.
timeout = Seconds
Sets the maximum number of seconds to wait for a response from one of the remote peers. Defaults to: 5.
tries = Count
Sets the maximum number of attempts to get a response from one of the remote peers. Default is 6 tries.
This module utilizes Bruce Schneier's Blowfish algorithm. Your government may have choosen to implement ridiculous legal restrictions regarding use or export of cryptographic software. Take care.
This module implements on-disk caching of authentication attributes for later authorization. It may be useful to reduce load from the backend, or just to share RADIUS authorization data between tac_plus worker processes.
userid = UserID
Specifies the uid to use for disk access.
groupid = GroupID
Specifies the gid to use for disk access.
directory CacheDir
Specifies the directory to use for caching. Please consider that the daemon will not clean up the files/directories in there.
mavis module = tacinfo_cache { directory = /tmp/tacinfo } mavis module = external { ... }
This module implements FTP authentication via UNIX system accounts or accounts defined in UNIX password-style files. Optionally, certificate based authentication is available. Please note that the pam module may be a better choice for most installations.
Programs utilizing this module will most likely have to run under the user id of root if access to the shadow password file is required.
chroot = ( yes | no )
This activates a chroot environment for system users (default: yes). The chroot root directory is either the users home directory or, if the home directory path contains a /./ sequence, the directory denoted by the path up to that sequence.
ftpusers file = Path
Select ftpusers file (default: /etc/ftpusers).
passwd file = Path
Select UNIX password file. If this is omitted, the systems UNIX accounts are used. On *BSD systems you may wish to set path to /etc/master.passwd.
shells file = Path
Select shells file (default: /etc/shells).
sslusers file = Path
Select sslusers file (default: /etc/ssl.users).
The sslusers file is compatible to the one proposed by Tim Hudson<EMAIL_ADDRESS>in his SSLeay patches to the BSD ftp daemon. It contains lines of the form
user1,user2:/C=US/....
where user1 and user2 are user names, and the /C=US/.... part is a certificate subject.
In case you're unfamiliar with OpenSSL: you may retrieve the certificate subject of a certificate cert.pem using
openssl x509 -subject -noout -in cert.pem
check ( ftpusers | shells | sslusers ) = ( yes | no )
Enables checking of the specified file type.
This module can be used to define static users, e.g. for FTP. It requires the auth module for user authentication.
Syntax for defining users is user = UserName { ... }. The following configuration directives inside the curly brackets are mandatory for FTP, but not enforced:
userid = UserID
groupid = GroupID
home = HomeDirectory
password = ( ( clear | crypt) PasswordString) | mavis
clear indicates a clear-text password, while crypt tells the parser that PasswordString is DES (or MD5) encrypted. The mavis keyword expects the password to be set by a downstream module.
Optional directives are:
root = RootDirectory
cert subject = CertSubject
Arbitrary other MAVIS attributes may be set with
set AttributeName = Value
The following is a valid configuration for ftpd which utilizes various MAVIS backends:
id = spawnd { listen = { port = 21 } spawn = { instances min = 1 } background = no } id = ftpd { mavis path = ../../mavis/obj.%O mavis module = anonftp { userid = 100 groupid = 100 root = /tmp/ home = / upload = /tmp/incoming/ } mavis module = auth { } mavis module = userdb { user = test { #password = clear test password = crypt $1$j/K5hgl2$vyCmLeqUzQmr9DdyPTn01. root = /tmp/ home = / userid = 100 groupid = 100 } } symlinks = all check-uid = no check-gid = no check-perm = no }
This module is used for development only. It writes sent and received attribute-value pairs to disk in a format which may, for example, be used to test external authenticators (see the description of the external module).
Available configuration options are:
userid = UserID
groupid = GroupID
mode = Mode
path ( in | out ) Path
This module comes without any functionality on its own. It may however be used in conjunction with the scripting feature described below.
All MAVIS modules in the distribution come with some basic scripting language support for modifying AV pair and/or module behavior. Scripts can be called when entering or leaving a module and are defined using the script keyword.
Generic syntax for the scripting feature is:
script ( in | out ) = { action+ }
Valid actions are:
{ action+ }
Defines an action block consisting of multiple actions.
continue
Stops processing the remainder of the script and continues with regular module operation.
return
Stops processing the remainder of the script and returns the currently set attributes to the caller.
skip
Skips this module and continue with the next one.
set attribute = value
Sets the specified MAVIS attribute. If the software was compiled with PCRE support (strongly recommended!), the strings $1 ... $9 will be replaced with the substrings from the latest condition matching operation.
unset attribute
Clears the specified MAVIS attribute.
reset attribute
Resets the specified MAVIS attribute to its original value.
toupper attribute
Converts the specified MAVIS attribute to upper case.
tolower attribute
Converts the specified MAVIS attribute to lower case.
eval condition
Evaluates condition, and populates the PCRE substring information vector ($1 ... $9).
if ( condition ) action [ else action ]
Evaluates condition and executes one of the actions, if any.
Syntax for condition:
! condition
Boolean negation.
condition && condition
Boolean AND.
condition || condition
Boolean OR.
attribute == ( attribute | value )
Exact match.
attribute != ( attribute | value )
No exact match.
attribute =~ regex
Exact match. Enclose regex in / for PCRE.
attribute !~ regex
No exact match.
defined ( attribute )
TRUE if attribute is set, false else.
undef ( attribute )
TRUE if attribute is not set, false else.
At least the top-level condition needs to be enclosed in round brackets.
Here's a sample configuration for FTP authentication via RADIUS, using the radmavis binary, called via the external module:
mavis module = external { script in = { if ($TYPE == FTP) { # Make sure $USER is a) lowercase and b) in user@realm format. # This isn't mandatory; I just want to show how to do it: tolower $USER if ( $USER =~ /^([^\\\\]+)\\\\(.*)$/ ) set $USER = $2@$1 else if ( $USER !~ /^([^@]+)@(.*)$/ ) { eval ($USER =~ /^.*$/) set $USER = $1@myrealm } } } script out = { if ( $TYPE == FTP && $PASSWORD == $DBPASSWORD ) { set $ROOT = /export/home eval ( $USER =~ /^.*$/ ) set $HOME = /$1 set $UID = 100 set $GID = 100 set $GIDS = "100,102,129" set $RESULT = ACK # Reset the username to the original value, or upstream # will complain: reset $USER } } exec = /usr/local/sbin/radmavis radmavis "authserver=localhost:1812:mYrAdIuSsEcReT" }
Note that backslashes in regular expressions need to be doubled.
Likewise, the pammavis program may be used for authentication using PAM. Example for TACACS+:
mavis module = external { script out = { # This is actually no longer necessary for recent versions if ($TYPE == TACPLUS) { if ($TACTYPE == AUTH && $PASSWORD == $DBPASSWORD || $TACTYPE == INFO) { set $RESULT = ACK # If you're working with "password = mavis" in user profiles # and have all users defined locally, there's no need to set # any particular TACPROFILE value and you may omit the next # line: set $TACPROFILE = "{ member = noc }" } } } exec = /usr/local/sbin/pammavis pammavis -s pamservicename # Optionally: If tac_plus only queries for attributes and we don't # evaluate those set by pammavis, then there's no use in calling the # latter at all. The "return" will continue with the "out" script: script in = { if ($TYPE == TACPLUS && $TACTYPE == INFO) return } }
As detailed in the PAM module section above, take care not to use a PAM service which implements login delays. The PAM service can be selected using the -s pamservicename option and defaults to mavis. PAMs that perform queries other than the standard username/password aren't supported.
A more sophisticated (and complete) example for TACACS+:
id = spawnd { listen = { port = 49 } } id = tac_plus { mavis module = groups { resolve gids = yes groups filter = /^(guest|staff)$/ script out = { # copy the already filtered UNIX group access list to TACMEMBER eval $GIDS =~ /^(.*)$/ set $TACMEMBER = $1 } } mavis module = external { exec = /usr/local/sbin/pammavis pammavis -s mavis } user backend = mavis login backend = mavis host = global { address = <IP_ADDRESS>/0 key = mykey } group = staff { service = shell { default command = permit default command = permit set priv-lvl = 15 } } group = guest { service = shell { default command = deny set priv-lvl = 15 cmd = show { permit .* } } } }
Another example script emulates the anonftp module functionality:
mavis module = null { script in = { if ($TYPE == FTP && ($USER == ftp || $USER == anonymous)) { set $RESULT = ACK set $FTP_ANONYMOUS = TRUE set $EMAIL = $PASSWORD set $ROOT = /public/ftp set $HOME = / set $UID = 123 set $GID = 123 return } } }
See mavis/mavis.h for a list of supported attributes.
You'll almost certainly want to validate that your backend configuration behaves as expected. You can do so using the mavistest binary. Syntax is:
mavistest [options] <config> <id> <type> <user> [<password>] Options: -P (parse only) -d <debuglevel> (set debug level) Valid <type> values: FTP, TACPLUS Sample usage: mavistest -d -1 /usr/local/etc/tac_plus.cfg tac_plus TACPLUS joe p4ssw0rd
Text enclosed in double quotes may make use of environment variables, e.g.:
filename = "${HOME}/log.txt"
The braces are required.
Please see the source for copyright and licensing information of individual files.
The following applies if the software was compiled with TLS support:
This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit.
This product includes cryptographic software written by Eric
Young<EMAIL_ADDRESS>).
If the software was compiled with PCRE (Perl Compatible Regular Expressions) support, the following applies:
Regular expression support is provided by the PCRE library package, which is open source software, written by Philip Hazel, and copyright by the University of Cambridge, England.
MD5 algorithm
The software uses the RSA Data Security, Inc. MD5 Message-Digest Algorithm.
The Blowfish algorithm:
This software uses Bruce Schneier's Blowfish algorithm.
md5crypt:
"THE BEER-WARE LICENSE" (Revision 42<EMAIL_ADDRESS>wrote this file. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
Portions of the parsing code are taken from Cisco's tac_plus developers kit which is distributed under the following license:
Copyright (c) 1995-1998 by Cisco systems, Inc.
Permission to use, copy, modify, and distribute this software for any purpose and without fee is hereby granted, provided that this copyright and permission notice appear on all copies of the software and supporting documentation, the name of Cisco Systems, Inc. not be used in advertising or publicity pertaining to distribution of the program without specific prior permission, and notice be given in supporting documentation that modification, copying and distribution is by permission of Cisco Systems, Inc.
Cisco Systems, Inc. makes no representations about the suitability of this software for any purpose.
The code written by Marc Huber is distributed under the following license:
Copyright (C) 1999-2015 Marc Huber<EMAIL_ADDRESS>). All
rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
The end-user documentation included with the redistribution, if any, must include the following acknowledgment:
This product includes software developed by Marc Huber (
<EMAIL_ADDRESS>).
Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.


WELCOME TO EARTH TOUR
Earth is the planet we live on. It is the third planet from the Sun. It is the only planet known to have life on it. The Earth formed around 4.5 billion years ago. It is one of four rocky planets on the inside of the Solar System. The other three are Mercury, Venus and Mars. The large mass of the Sun makes the Earth move around it, just as the mass of the Earth makes the Moon move around it. The Earth also turns round in space, so different parts face the Sun at different times. The Earth goes around the Sun once (one "year") for every 365¼ times it turns all the way around (one "day"). The Moon goes around the Earth about every 27? days. As the Earth goes round the Sun at the same time, the changing light of the Moon takes about 29½ days to go from dark to bright to dark again. That is where the idea of "month" came from. However, now most months have 30 or 31 days so they fit into one year. The Earth is the only planet in our Solar System that has a large amount of liquid water. About 71% of the surface of the Earth is covered by oceans. Because of this, it is sometimes called the "Blue Planet". Because of its water, the Earth is home to millions of species of plants and animals. The things that live on Earth have changed its surface greatly. For example, early cyanobacteria changed the air and gave it oxygen. The living part of the Earth's surface is called the "biosphere".


Scope is a funny word in the world of tech. It can refer to the scope of the project we're working on (and its evil twin: scope creep). In video gaming, 360 No Scope is a trick shot that has descended into dank meme status. But we're here to talk programming, and specifically Javascript: so what is scope in Javascript?
Scope in Javascript defines the boundary or threshold in which a declared object or variable is going to be used within the code. We can define an object or variable's scope by two parameter: global or local. It's important to note that we don't explicitly declare the scope of objects or variables in the code: we implicitly define their scope by where they are placed in the context of code. They are can be localised to a function, or global to the whole of the code.
Good, clean code comprises lots of smaller functions that are strongly opinionated and loosely coupled. This means that the individual functions have their tasks are very well specified without having to rely on referring to other functions and their workings. This lets programmers take out functions, refactor or rework them, and put them back into the rest of the code with as little risk of breaking the overall functionality as possible (minimising risk, interruption of delivery of value, and enabling continuous improvement with speed and safety).
With scope, we want our objects and variables to be used by our functions with as much safety as possible, so we can isolate them for exclusive use by the function in question. We also want to optimise the performance of our code, so we want to discard these objects and variables once they have served their purpose. Once the function has finished performing its task, it throws away whatever it doesn't need anymore, freeing our processing power for all the other tasks we need to do.
While it doesn't feel like this would make an impact with the kind of code we're working on for bootcamp, performance optimisation is a big school of thought in the tech world (and an even bigger impact for clients and the products they are expected to run on their infrastructure). We want to build the best habits possible from the very beginning, so we need to take and understand scope very seriously in Javascript.
Sometimes, we have objects and variables that are strongly opinionated by design for the overall code we are delivering. Outside of any functions, and typically at the very beginning of the code, we define all of objects and variables for use.
Global variables and objects can be inherited by functions preceding those variables or objects. We can ask a function to retrieve the value of a global variable or object. We can even ask the function to change the value of that variable or object for the purpose of that function.
However, best practice is to avoid using global variables, and when we do, use them with caution and care. This is particularly important in coding projects involving multiple developers: one global variable that's been defined in different ways by different people can arise in conflicts, both in code and in teams!
OK, I've convinced you that localising your variables is better than globalising them. So how do we do that?
Simply put, any variable or object that you declare within a function is exclusive to that specific function. Here's an example:
function updateCounts () {
var totals = {
blue: 0,
green: 0,
invisible: 0
}
In this example, the object totals
is for the exclusive use of the function updateCounts
. totals
and its parameters cannot be used by any other function in the code (in this context, this is from the game we were asked to build in an earlier sprint).
After this function has been executed, totals
and its parameters are discarded - not to be used or seen again anywhere else in the code!


Bandwidth.Resources.Conferences.Members
Manage conference members.
Summary↑
| add(client, conference_id, member) | Add members to a conference |
| find(client, conference_id, member_id) | Retrieve properties for a single conference member |
| list(client, conference_id) | List all members of a conference |
| update(client, conference_id, member_id, member) | Update a conference member (remove, mute, hold) |
Functions
Specs:
- add(Client.t, binary, Map.t) :: Client.response
Add members to a conference.
Example:
member = %{ callId: "some-call-id" }
case Bandwidth.Resources.Conferences.Members.add(client, "some-conference-id", member) do
{:ok, {201, _, _}} -> IO.puts "Member added"
{:error, reason} -> IO.puts "Error: #{reason}"
end
Specs:
- find(Client.t, binary, binary) :: Client.response
Retrieve properties for a single conference member.
Example:
case Bandwidth.Resources.Conferences.Members.find(client, "some-conference-id", "some-member-id") do
{:ok, {200, member, _}} -> IO.inspect member
{:error, reason} -> IO.puts "Error: #{reason}"
end
Specs:
- list(Client.t, binary) :: Client.response
List all members of a conference.
Example:
case Bandwidth.Resources.Conferences.Members.list(client, "some-conference-id") do
{:ok, {200, members, _}} -> IO.inspect members
{:error, reason} -> IO.puts "Error: #{reason}"
end
Specs:
- update(Client.t, binary, binary, Map.t) :: Client.response
Update a conference member (remove, mute, hold).
Example:
# Remove a member from a conference
member = %{ state: "completed" }
case Bandwidth.Resources.Conferences.Members.update(client, "some-conference-id", "some-member-id", member) do
{:ok, {200, _, _}} -> IO.puts "Member removed"
{:error, reason} -> IO.puts "Error: #{reason}"
end


shell(1f) - shell for demonstrating major modules in libGPF.a (LICENSE:PD)
Synopsis
Description
Options
Usage
Example
Author
License
shell expression| --help| --version|[ -replay][ -read FILENAME]
Example command line interface with command line history, numeric expressions, if/else/elseif/endif logic, and Unix-like command parsing.
--help display this help and exit --version output version information and exit
At the command prompt the following example commands may be used:
#----------------------------------------------------------------------------# | command |exercises | description | #----------------------------------------------------------------------------# | r | M_HISTORY | enter history editor; | | | | ? will produce help | #----------------------------------------------------------------------------# | today format [-help] | M_TIME | display current time using | | | | fmtdate(3f) | #----------------------------------------------------------------------------# | if/else/elseif expression | M_LOGIC | conditionally process input | | | | lines | | endif | M_LOGIC | end IF block | #----------------------------------------------------------------------------# | set dump | M_CALCULATOR | dump currently defined | | | | variable names | | set funcs | M_CALCULATOR | describe functions available| | | | in expressions | | set nc() | JUOWN1/CALC_NC | display list of ncurses() | | | | functions | | set expression [-q] | M_CALCULATOR | anything else is assumed to | | | | be a numeric expression | | set | M_CALCULATOR | If no expression switch to | | | | calculator mode till "." is | | | | entered. | #----------------------------------------------------------------------------# | read file [-q] | M_KRACKEN | read from another input file| | test1 -x -y --help --version| M_KRACKEN | test of DISSECT(3f) | #----------------------------------------------------------------------------# | | M_PIXEL | pixel graphics | |prefsize: specify size of pixel array |vinit: initialize pixel array drawing module | |rect: draw line rectangle given two opposite corners |line: draw line between two points applying line width and color |polyline: draw lines between points |rmove2: relative move |move2: move current position |rdraw2: relative draw |draw2: draw a line from current position to specified point | |point2: Draw a point at x, y | |arc: draw a arc using current line width and color |circle: draw a circle using current line width and color |circleprecision: set number of line segments making up a circle | |drawchar: draw text at the current position |drawstr: draw text at the current position | |linewidth: set line width for lines drawn in pixel image |color: set current color for lines drawn in pixel image |textsize: set text size in world units |ycentertext: set text centering mode on for drawstr(3f) and drawc(3f) in Y direction |xcentertext: set text centering mode for drawstr(3f) and drawc(3f) in X direction |centertext: set text centering mode for drawstr(3f) and drawc(3f) |textang: set angle in degrees to draw text at using drawstr(3f) | |mapcolor: set a color index using RGB values | |strlength: length of string using current font size |getviewport: return viewport in screen pixel coordinates |getdisplaysize: Returns the width and height of the device in pixels |state: print graphics state of M_pixel graphics module |getgp2: get current graphics position | |viewport: Specify which part of the screen to draw in. |ortho2: define the area of the virtual world coordinates to map to the viewport |ortho2_biggest: given a window size, find and set to largest accommodating viewport | |print_ppm: print pixel array as a P3 PPM file |print_ascii: print pixel array as an ASCII block of text | |clear: set background color all to specified color index | |vexit: exit pixel array drawing module | | | | #----------------------------------------------------------------------------# | help | | display this information | | | | this information | | quit|. | | exit program | #----------------------------------------------------------------------------# | anything_else | execute as system command | #----------------------------------------------------------------------------#It can be confusing if you make variables that are command names. An expression on the command line is evaluated and then the program exits.
Sample input file
today year-month-day hour:minute:second today set A=10 set b=20 if lt(A,b) echo A is less than B set C=sin(sqrt(2)) elseif eq(b,10) echo did not expect to get here else echo did not expect to get here either endif#################### calculator mode set x=A+b+C y=cos(A)/sin(b)+C z=max(A,b,C) $A="This is a string" . ####################
set dump # display available functions set funcs
set $str($A," function call") ######################## set up PIXEL display prefsize 500 500 vinit ortho2 -100 100 -100 100 ######################## draw some shapes color 6 makepoly rect -100 -100 0 0 closepoly
color 3 makepoly rect -100 100 0 0 closepoly
makepoly color 4 rect 0 0 100 100 closepoly
makepoly color 5 rect 0 0 100 -100 closepoly
color 2 linewidth 400 circleprecision 128 circle 0 0 100 circle 0 0 50 ######################## Draw X color 1 linewidth 500 set x=100 move2 0-x 0-x draw2 x x move2 0-x x draw2 x 0-x ######################## draw some text linewidth 90 color 7 textsize 10 10 centertext .T. move2 0 0 textang 45 drawstr Hello World! centertext .F. ######################## print_ppm sample.ppm clear vexit ######################## # assuming you have imagemagick installed display sample.ppm ######################## quit
John S. Urban
Public Domain
| Nemo Release 3.1 | shell (1) | July 22, 2023 |


Laravel Weekly #9
Another week, another issue. I've got something special in mind for #10. Might be that next week's issue will be in a slightly different format than the one you're reading now. Very excited about that.
Laravel 4's release date has been set for next week Tuesday. We can almost start using it to build applications which will be stable for production.
There's a lot of cool stuff happening for Laravel in the upcoming weeks. I'll try to keep you guys up-to-date on everything that's happening in Laraland.
Laravel 4 Release Date: May 28
https://twitter.com/laravelphp/status/335027072101675008
Mark your calendars! Laravel 4 will be released on May 28. It's been a long road down the beta but v4.0 is almost upon us. You can almost start to port your L3 apps to L4 and get them ready for production!
Laravel 4 T-shirts
https://twitter.com/laravelphp/status/332838120041115648
The official Laravel 4 T-shirt has arrived! You can get them in various sizes (XS, S, M, L, XL, 2XL and 3XL) and various colors (Soft Cream, Black, White).
The campaign will end in 12 days so get them while they're hot!
Laravel Testing Decoded Release Date
https://twitter.com/jeffrey_way/status/332578079832686594
Seems like we can expect Jeffrey's book to be released on May 28 as well. That's going to make that day even more awesome.
Avatars For The New Laravel Website
https://twitter.com/laravelphp/status/334059176185720832
I don't know if they reached their goal yet but the folks at Laravel still need some avatars for the new website. Send in yours by replying to the tweet above.
New Laravel Wiki Skin
https://twitter.com/jasonclewis/status/336470322339528704
The Laravel wiki has got a fresh look!
Laravel Gittip Community
https://twitter.com/msurguy/status/334052363075715074
Maksim Surguy started a Laravel Gittip community. It still needs about 138 more members before it gets accepted.
Now, what is Gittip exactly? Gittip allows you to give small weekly cash gifts to people who you want to support for their efforts. For example, you could tip Taylor $1 a week for his work on Laravel. It's a small amount but when a lot of people do this it could help him a lot to continue his work. And this goes for everyone who's doing free open-source work.
Resources
- Laravel Webserver Configurations by Dayle Rees
- Practical Laravel – Using Cron Jobs in Laravel by Maksim Surguy
Packages
- Role Model - validation for Eloquent models by Holger Weis
- Anvard - HybridAuth package for Laravel 4 by Atticmedia Ltd
Talks
- 21/05: An Introduction To Eloquent by Keith Pincombe
- 23/05: Laravel 4 & Symfony by Taylor Otwell


| Only One | classifier | Zero, One or Many | Temporal Phenomenon Link |
| Only One | classifier | Zero, One or Many | Timepoint Association |
| Zero, One or Many | classifier | Only One | Temporal Link Type |
| Zero, One or Many | from | Only One | Subject Phenomenon |
| Zero, One or Many | to | Only One | Subject Phenomenon |
| Only One | resource | Zero, One or Many | Temporal Resource Act |
| Only One | source | Zero, One or Many | Temporal Resource For Activity |
| Zero, One or Many | resource | Only One | Temporal Resource |
| Zero, One or Many | source | Only One | Temporal Resource Act |


Running Puppet on Windows
This documentation applies to Puppet versions ≥ 2.7.6 and Puppet Enterprise ≥ 2.5. Earlier versions may behave differently.
If you only plan to run puppet agent on its normal schedule, no further action is necessary — after installing Puppet on Windows, the puppet agent service will run every 30 minutes.
Continue reading for information about running Puppet tasks manually, configuring Puppet, and the context in which Puppet runs on Windows.
Running Puppet Tasks
Finding the Puppet Tools
The Puppet installer creates a “Puppet Enterprise” or “Puppet” folder in the Start menu. Any Start menu items referenced below can be found in this folder.
Fetching Configurations from a Puppet Master
After installation, Puppet on Windows will regularly fetch configurations from a puppet master with no further configuration needed. Every 30 minutes, the puppet agent service will contact the puppet master that was specified during installation, and will fetch and apply a configuration.
Note: just like with any *nix Puppet node, you must sign the node’s certificate request on the puppet master before it can fetch configurations. Use
puppet cert list
to view outstanding certificate requests, andpuppet cert sign <NAME>
to approve them.
Manually Triggering a Puppet Agent Run
You can trigger a puppet agent run at any time with the “Run Puppet Agent” Start menu item. This will show the status of the run in a command prompt window.
Triggering an agent run requires elevated privileges, and must be performed as an administrator. On Windows 7 or 2008, using this Start menu item will automatically ask for User Account Control confirmation:
Configuring the Agent Service
By default, the puppet agent service starts automatically at boot, runs every 30 minutes, and contacts the puppet master specified during installation.
Note: When puppet is running as a daemonized Windows service, the
listen = true
configuration directive or command line argument does not apply. Consequently, it is not possible to use the deprecated puppet kick run mode. Instead, consider using Marionette Collective.
- To start, stop, or disable the service, use the Service Control Manager, which can be launched by choosing “Run…” from the Start menu and typing
Services.msc
. -
You can also use the
sc.exe
command to manage the puppet agent service. To prevent the service from starting on boot:C:\>sc config puppet start= demand [SC] ChangeServiceConfig SUCCESS
To restart the service:
C:\>sc stop puppet && sc start puppet
To change the arguments used when triggering a puppet agent run (this example changes the level of detail that gets written to Puppet’s logs):
C:\>sc start puppet --test --debug
- To change how often the agent runs, change the
runinterval
setting in puppet.conf. - To change which puppet master the agent contacts, change the
server
setting in puppet.conf.
Note: You must restart the puppet agent service after making any changes to Puppet’s config file. Restart the service using the Services control panel item.
Running Other Puppet Tasks
To perform any task other than triggering an agent run, use the “Start Command Prompt with Puppet” Start menu item. This shortcut starts a command prompt window with its environment pre-set to enable the Puppet tools.
For nearly all purposes, you must start this command window with elevated privileges:
- On Windows 2003, make sure you are logged in as an administrator before starting the Puppet command prompt.
-
On Windows 7 or 2008, you must right-click the start menu item and choose “Run as administrator:”
This will ask for UAC confirmation:
Applying Manifests Locally
The puppet apply
subcommand accepts a puppet manifest file, and immediately compiles and applies a configuration from it:
C:\> puppet apply my_manifest.pp
This allows you to manage nodes with Puppet without a central puppet master server, by having every node manage its own configuration.
To use puppet apply
, you must first use the “Start Command Prompt with Puppet” item in the Start menu. This will open a command prompt window in which puppet apply
commands can be issued. Remember to start this command prompt with elevated privileges.
To use puppet apply
effectively, you should distribute your Puppet modules to each agent node and copy them into the modulepath
. This allows the small manifests written for puppet apply
to easily assign pre-existing classes to the node.
Note: The default
modulepath
on Windows is<data directory>
\etc\modules
.
Note: When using a multi-directory modulepath, remember to separate the directories with
;
, rather than:
.
To learn more about using modules, see Module Fundamentals or Learning Puppet.
Interactively Modifying Puppet Resources
The puppet resource
subcommand can interactively view and modify a system’s state using Puppet’s resource types. (For example, it can be used as an alternate interface for creating or modifying user accounts.)
To run puppet resource
, you must use the “Start Command Prompt with Puppet” item in the Start menu. This will open a command prompt window in which puppet resource
commands can be issued. Remember to start this command prompt with elevated privileges.
The standard format of a puppet resource
command is:
C:\> puppet resource <TYPE> <NAME> <ATTRIBUTE=VALUE> <ATTRIBUTE=VALUE>
Specifying attribute=value
pairs will modify the resource, leaving them off will print the resource’s current state. Leaving out the resource name will list every resource of the specified type.
- The resources
puppet resource
can use are the same as those available for Windows manifests. See Writing Manifests for Windows for more details. - See the
puppet resource
man page for more details about the puppet resource subcommand.
Running Facter
When writing manifests for Windows nodes, it can be helpful to see a test system’s actual fact data. Use the “Run Facter” Start menu item to do this.
Configuring Puppet
Puppet’s main puppet.conf
configuration file can be found at <data directory>
\etc\puppet.conf
.
- See Configuring Puppet for more details about Puppet’s main config file. (Puppet’s secondary config files are not used on Windows.)
- See the configuration reference for a complete list of
puppet.conf
settings. - In a command window opened with the “Start Command Prompt with Puppet” Start menu item, you can use
puppet --configprint <SETTING>
to see the current value of any setting.
Note: You must restart the puppet agent service after making any changes to Puppet’s config file. Restart the service using the Services control panel item.
Important Windows Concepts for Unix Admins
Windows differs from *nix systems in many ways, several of which affect how Puppet works.
Security Context
On Unix, puppet is either running as root or not. On Windows, this maps to running with elevated privileges or not.
Puppet agent typically runs as a service under the LocalSystem account, and thus always has elevated privileges. When running puppet from the command line or from a script or scheduled task, you should be aware of User Account Control (UAC) restrictions that may cause Puppet to run without elevated privileges.
If Puppet is accidentally run in a non-elevated security context, it will use a different data directory (specifically, the .puppet
directory in the current user’s home directory) and will try to request a second SSL certificate. Since the puppet master does not allow duplicate certificates, running puppet agent in a non-elevated security context will usually cause it to fail.
- On systems without UAC (i.e. Windows 2003), users in the local Administrators group will typically run all commands with elevated privileges.
- On systems with UAC (i.e. Windows 7 and 2008), you must explicitly elevate privileges, even when running as a member of the local Administrators group. Puppet’s “Run Puppet Agent” Start menu item automatically requests privilege elevation when run, but the “Start Command Prompt with Puppet” item must be manually started with elevated privileges by right-clicking it and choosing “Run as administrator.”
File System Redirection in 64-bit Windows Versions
The Puppet agent process runs as a 32-bit process. When run on 64-bit versions of Windows, there are some issues to be aware of.
-
The File System Redirector will silently redirect all file system access to
%windir%\system32
to%windir%\SysWOW64
instead. This can be an issue when trying to manage files in the system directory, e.g., IIS configuration files. In order to prevent redirection, you can use thesysnative
alias, e.g.C:\Windows\sysnative\inetsrv\config\application Host.config
.Note: 64-bit Windows Server 2003 requires hotfix KB942589 to use the sysnative alias.
-
The Registry Redirector performs a similar function with certain registry keys .


"Free Uros" says Vols' Lamonte Turner after NCAA ruling
KNOXVILLE, Tenn. (WVLT) -- Vols player Lamonte Turner had something to say about the NCAA's ruling against Uroš Plavšić after Tennessee's game against Alabama State on November 20.
Turner and teammate Jordan Bowden both hit a milestone in their career with 1,000 points in Wednesday's game.
But Turner spoke to WVLT News reporter Zack Rickens not about that, but about Arizona State transfer Plavšić. The NCAA recently denied Plavšić's immediate eligibility waiver.
Turner said, "Free my boy Uroš, man, let my dog out."
After the NCAA's decision, Tennessee Athletic Director Phillip Fulmer said, "We are extremely disappointed – quite frankly, stunned – in this outcome, and feel strongly that very compelling facts support clearance for immediate eligibility."
There has been no update since the beginning of November on Plavšić's situation going forward.


Search for trekking guides, scuba diving destinations and liveaboards.
Pre-book tickets for popular attractions like the Eiffel Tower, Burja Khalifa, Shanghai Tower.
Search and buy the cheapest tickets for museums and theme parks.
Spending too much time sending the same messages to 1000s of leads?
We can help you!
Selling travel experiences on your website and want more traffic? Drop us an email.


{% extends "layout.html" %} {% block title %}About COVID-19 Event Planner{% endblock %} {% block main %}
During the pandemic, we're all trying our best to avoid going out -- but sometimes, it's impossible to avoid. To be as safe as possible, we need many different types of information: how to set up as safely as possible, how to contact-trace, and how much risk is involved in a given event.
In those situations, having a way to easily contact-trace, plan a socially distanced layout, and calculate risk is important. So we made the Smart COVID-19 Event Planner, which helps us figure out many of these factors.
Layout planning: Our drag-and-drop front-end interface allows the event planner to customize the layout of the event. There will also be an option to automatically configure the layout for maximum social distancing.
Event management: Event planners will have the option to invite guests to their event using a custom invite link. Guests can view the risk (see below) and make an informed decision before they RSVP.
Risk calculation: Both event planners and guests will be able to view the risk that someone at the event will be positive for covid-19 based on the most current case data for the county in question.
Contact tracing: We will save the data from the layout for easier contact tracing after the event, if necessary.


No clusters found for any applications.
No clusters found for selected regions / namespaces.
| Last Push | {{region}} | ||
|---|---|---|---|
| {{application.application | uppercase}} |
#{{application.build.buildNumber}}
|
- {{application.lastPush | relativeTime }} |
|


Before Change
CreateDigest([FileContent(script_path, script_content.encode(), is_executable=True)]),
)
paths = []
search_path = create_path_env_var(request.search_path)
result = await Get(
FallibleProcessResult,
// We use a volatile process to force re-run since any binary found on the host system today
After Change
if not request.test_args:
return dataclasses.replace(binary_paths, paths=[BinaryPath(path) for path in found_paths])
results = await MultiGet(
Get(
FallibleProcessResult,
UncacheableProcess(
Process(argv=[path, *request.test_args], description=f"Test binary {path}.")
),
)
for path in found_paths
)
return dataclasses.replace(
binary_paths,
paths=[
BinaryPath.fingerprinted(path, result.stdout)
for path, result in zip(found_paths, results)
if result.exit_code == 0
],
)


{% extends "base.html" %} {% load media %} {% block title %}S-P.A.T. > Error{% endblock %} {%block content %}
We're sorry but there's been an error. You can try going back to the previous page and trying with a different set of options. Alternatively you can visit the Home Page or start a new analysis.
If you think the page really should be here please submit an error report


INSTALL.SH (For LinFBB)
(replaces the old INSTAFBB.COM)
INSTWFBB.COM: (Only for WinFBB) This program is a full-screen configuration of INIT.SRV and PORT.SYS. This program has its own program-icon, and can be started by double- clicking that icon. Most of the commands are self-documented. You must only follow the instructions. The changes in INIT.SRV can be done without rebooting the BBS, but changes in PORT.SYS will not affect the BBS until after a reboot of the BBS. INSTALL.SH: (Only for LinFBB) This is a configuration-program for LinFBB. It will configure the most important parts of the file INIT.SRV. Mind you, you will need to check the rest of INIT.SRV manually, too ! FBBSETUP.EXE: (Only for DosFBB) This program is a full-screen configuration of INIT.SRV and PORT.SYS. Most commands are well documented. You must only follow the instructions. FBBSETUP will support multiple language files in same format as ENGLISH.OLH and ENGLISH.MNU if the DEFAULT.OLH and DEFAULT.MNU files do not exists (after a language is selected, the files become the DEFAULT.XXX files). Files normally belonging to FBBSETUP are: FBBSETUP EXE ENGLISH OLH ENGLISH MNU DEFAULT OLH DEFAULT MNU The DEFAULT files may first be created after the first run of FBBSETUP. All files will normally reside in \FBB\BIN directory. For all the above versions: If the INIT.SRV file does not exist, you will be prompted to create a new one. Be sure that you are in the FBB directory when running FBBSETUP.EXE. If the INIT.SRV is not of the right version, you will also be prompted, but be careful, as the results could be hazardous. The comments of the original file are not changed. This page was last updated


Client can use a legitimate WPAD PAC file, filter/blackhole WPAD requests, or there should be a registry setting to disable WPAD or proxy settings (need source).


Best practices associated with using classes vs. IDs
Before diving into the best practices between using classes and IDs, it is important to understand the difference between the two.
A lot of us know about basic tags such as

and

, but the basic set of tags arent always going to cover everything. This is where IDs and Classes come in. In this instance we are talking about how they interact with CSS, but these are also used by other languages like Javascript.
The big thing to remember about these two are that ID's are unique, while classes are not. Each element can only have a single ID, and each page can only have one element with that particular ID. Classes can be used on multiple elements, and multiple classes can be applied to the same element.
Its worth noting that elements can have both an ID AND Classes assigned to it. Now onto some best practices.
Stay Classy in CSS
ID's are for uniquely identifying elements. They should be only used when specifically required. IDs also have a much higher specificity than Classes, which can sometimes cause issues within your HTML if you start trying to overwrite IDs with Classes.
Keep it simple, keep it functional!
Overdoing it with IDs or Classes is a great way to make things more complex than they need to be. Trying to find the one line thats misbehaving is less than ideal at any point in a project. Below you can see an example of a Class thats been added to an anchor element. This is counterproductive, as not only do we know its a link already, butr we can already apply styling via its tag.
Naming: The long and short of it
When it comes to naming your IDs or Classes, make sure its going to be something that doesnt stump you in the future. Trying to remember what .greenthing or #other is in 6 months time isn't going to be fun, and if anyone else is reviewing the code or project, they probably wont be having a great time deciphering it!


More-Recipes
Home
(current)
Recipes
Add recipe
Search
Add recipe
recipe name
Add another
Continue
Previous
next
name your recipe
recipe belongs to what category
List of recipe ingredients
cooking or preparation steps


[gecode-users] Configure fails on Gentoo Linux
Vasilij Savin
Vasilij.Savin.8691 at student.uu.se
Tue Sep 16 09:59:57 CEST 2008
Hello Andrew,
JDK is on PATH, because "shell> javac" works just fine. The problem is
that configure script fails to read it properly.
Once I changed the to JAVAC=javac, it passed the failing step, but
then failed later - while looking for libs and extensions, because the
context is different.
(usr/bin instead of /path/to/JDK)
I am trying to hardcode the pathes for them and see how it works.
Regards,
Vasilij Savin
More information about the gecode-users
mailing list


Open vSwitch can use Intel(R) DPDK lib to operate entirely in userspace. This file explains how to install and use Open vSwitch in such a mode.
The DPDK support of Open vSwitch is considered experimental. It has not been thoroughly tested.
This version of Open vSwitch should be built manually with configure
and make
.
OVS needs a system with 1GB hugepages support.
Required DPDK 1.7
Configure build & install DPDK:
Set $DPDK_DIR
export DPDK_DIR=/usr/src/dpdk-1.7.1
cd $DPDK_DIR
Update config/common_linuxapp
so that DPDK generate single lib file.
(modification also required for IVSHMEM build)
CONFIG_RTE_BUILD_COMBINE_LIBS=y
Then run make install
to build and isntall the library.
For default install without IVSHMEM:
make install T=x86_64-native-linuxapp-gcc
To include IVSHMEM (shared memory):
make install T=x86_64-ivshmem-linuxapp-gcc
For further details refer to http://dpdk.org/
Configure & build the Linux kernel:
Refer to intel-dpdk-getting-started-guide.pdf for understanding DPDK kernel requirement.
Configure & build OVS:
Non IVSHMEM:
export DPDK_BUILD=$DPDK_DIR/x86_64-native-linuxapp-gcc/
IVSHMEM:
export DPDK_BUILD=$DPDK_DIR/x86_64-ivshmem-linuxapp-gcc/
cd $(OVS_DIR)/openvswitch
./boot.sh
./configure --with-dpdk=$DPDK_BUILD
make
To have better performance one can enable aggressive compiler optimizations and
use the special instructions(popcnt, crc32) that may not be available on all
machines. Instead of typing make
, type:
make CFLAGS='-O3 -march=native'
Refer to [INSTALL.userspace.md] for general requirements of building userspace OVS.
Setup system boot Add the following options to the kernel bootline:
default_hugepagesz=1GB hugepagesz=1G hugepages=1
Setup DPDK devices:
modprobe uio
insmod $DPDK_BUILD/kmod/igb_uio.ko
$DPDK_DIR/tools/dpdk_nic_bind.py --bind=igb_uio eth1
Mount the hugetable filsystem
mount -t hugetlbfs -o pagesize=1G none /dev/hugepages
Ref to http://www.dpdk.org/doc/quick-start for verifying DPDK setup.
Start ovsdb-server as discussed in [INSTALL.md] doc:
First time only db creation (or clearing):
mkdir -p /usr/local/etc/openvswitch
mkdir -p /usr/local/var/run/openvswitch
rm /usr/local/etc/openvswitch/conf.db
cd $OVS_DIR
./ovsdb/ovsdb-tool create /usr/local/etc/openvswitch/conf.db \
./vswitchd/vswitch.ovsschema
start ovsdb-server
cd $OVS_DIR
./ovsdb/ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--private-key=db:Open_vSwitch,SSL,private_key \
--certificate=Open_vSwitch,SSL,certificate \
--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --pidfile --detach
First time after db creation, initialize:
cd $OVS_DIR
./utilities/ovs-vsctl --no-wait init
Start vswitchd:
DPDK configuration arguments can be passed to vswitchd via --dpdk
argument. This needs to be first argument passed to vswitchd process.
dpdk arg -c is ignored by ovs-dpdk, but it is a required parameter
for dpdk initialization.
export DB_SOCK=/usr/local/var/run/openvswitch/db.sock
./vswitchd/ovs-vswitchd --dpdk -c 0x1 -n 4 -- unix:$DB_SOCK --pidfile --detach
If allocated more than one GB hugepage (as for IVSHMEM), set amount and use NUMA node 0 memory:
./vswitchd/ovs-vswitchd --dpdk -c 0x1 -n 4 --socket-mem 1024,0 \
-- unix:$DB_SOCK --pidfile --detach
Add bridge & ports
To use ovs-vswitchd with DPDK, create a bridge with datapath_type "netdev" in the configuration database. For example:
`ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev`
Now you can add dpdk devices. OVS expect DPDK device name start with dpdk and end with portid. vswitchd should print (in the log file) the number of dpdk devices found.
ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk
ovs-vsctl add-port br0 dpdk1 -- set Interface dpdk1 type=dpdk
Once first DPDK port is added to vswitchd, it creates a Polling thread and polls dpdk device in continuous loop. Therefore CPU utilization for that thread is always 100%.
Add test flows
Test flow script across NICs (assuming ovs in /usr/src/ovs): Execute script:
```
cd /usr/src/ovs/utilities/
./ovs-ofctl del-flows br0
./ovs-ofctl add-flow br0 inport=1,action=output:2 ./ovs-ofctl add-flow br0 inport=2,action=output:1 ```
Performance tuning
With pmd multi-threading support, OVS creates one pmd thread for each numa node as default. The pmd thread handles the I/O of all DPDK interfaces on the same numa node. The following two commands can be used to configure the multi-threading behavior.
ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=<hex string>
The command above asks for a CPU mask for setting the affinity of pmd threads.
A set bit in the mask means a pmd thread is created and pinned to the
corresponding CPU core. For more information, please refer to
man ovs-vswitchd.conf.db
ovs-vsctl set Open_vSwitch . other_config:n-dpdk-rxqs=<integer>
The command above sets the number of rx queues of each DPDK interface. The
rx queues are assigned to pmd threads on the same numa node in round-robin
fashion. For more information, please refer to man ovs-vswitchd.conf.db
Ideally for maximum throughput, the pmd thread should not be scheduled out which temporarily halts its execution. The following affinitization methods can help.
Lets pick core 4,6,8,10 for pmd threads to run on. Also assume a dual 8 core sandy bridge system with hyperthreading enabled where CPU1 has cores 0,...,7 and 16,...,23 & CPU2 cores 8,...,15 & 24,...,31. (A different cpu configuration could have different core mask requirements).
To kernel bootline add core isolation list for cores and associated hype cores (e.g. isolcpus=4,20,6,22,8,24,10,26,). Reboot system for isolation to take effect, restart everything.
Configure pmd threads on core 4,6,8,10 using 'pmd-cpu-mask':
ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=00000550
You should be able to check that pmd threads are pinned to the correct cores via:
top -p `pidof ovs-vswitchd` -H -d1
Note, the pmd threads on a numa node are only created if there is at least one DPDK interface from the numa node that has been added to OVS.
Note, core 0 is always reserved from non-pmd threads and should never be set in the cpu mask.
Following the steps above to create a bridge, you can now add dpdk rings as a port to the vswitch. OVS will expect the DPDK ring device name to start with dpdkr and end with a portid.
ovs-vsctl add-port br0 dpdkr0 -- set Interface dpdkr0 type=dpdkr
DPDK rings client test application
Included in the test directory is a sample DPDK application for testing the rings. This is from the base dpdk directory and modified to work with the ring naming used within ovs.
location tests/ovs_client
To run the client :
cd /usr/src/ovs/tests/
ovsclient -c 1 -n 4 --proc-type=secondary -- -n "port id you gave dpdkr"
In the case of the dpdkr example above the "port id you gave dpdkr" is 0.
It is essential to have --proc-type=secondary
The application simply receives an mbuf on the receive queue of the ethernet ring and then places that same mbuf on the transmit ring of the ethernet ring. It is a trivial loopback application.
In addition to executing the client in the host, you can execute it within a guest VM. To do so you will need a patched qemu. You can download the patch and getting started guide at :
https://01.org/packet-processing/downloads
A general rule of thumb for better performance is that the client application should not be assigned the same dpdk core mask "-c" as the vswitchd.
Currently DPDK port does not make use any offload functionality.
ivshmem:
Please report problems to bugs@openvswitch.org.


wait()
, notify()
or notifyAll()
not made inside a corresponding synchronized
statement or synchronized method. Calling them on an object
without holding a lock on that object causes IllegalMonitorStateException
.
Such a construct is not necessarily an error, as the necessary lock may be acquired before
the containing method is called, but it's worth looking at.
Example:
class Sync { private final Object lock = new Object(); void test() throws InterruptedException { synchronized (this) { lock.wait(); // 'lock.wait()' is not synchronized on 'lock' } } }


CL-GSERVER.ACTOR-CELL
call ACTOR-CELL MESSAGE &KEY TIME-OUT → result
ACTOR-CELL
:
a
T
MESSAGE
:
a
T
TIME-OUT
:
a
T
result
: a T.
Send a message to a actor-cell instance and wait for a result. Specify a timeout in seconds if you require a result within a certain period of time. Be aware though that this is a resource intensive wait based on a waiting thread. The result can be of different types. Success result: <returned-state> Unhandled result: `:unhandled' Error result: `(cons :handler-error <condition>)' In case of time-out the error condition is a bt:timeout.


Dr. Achalakul works in the fields of big data Analytics, High Performance Computing, and software development since 2000. She has extended experiences working in the IT industry and academia in both the United States and Thailand with two published textbooks, multiple journal and conference papers, and many keynote talks. During the past 13 years, Dr. Achalakul has been participating in many Information Technology projects in both private and public sectors and has served on an advisory board for multiple government agencies. She is a co-founder of 3 technological companies as well as an associate professor at the Department of Computer Engineering, King Mongkut’s University of Technology Thonburi.
Dr Santitham Prom-on is currently an assistant professor at the Department of Computer Engineering, Faculty of Engineering, King Mongkut’s University of Technology Thonburi, Thailand and a honorary research associate at the Department of Speech, Hearing and Phonetic Sciences, University College London, UK. During 2010-2012, Dr Prom-on was awarded by the Royal Society with the Newton International Fellowship scheme, which is the most prestigious post-doctoral research fund from the Royal Society, to conduct research in the field related to speech processing and data analytics.


Had a really great day today outside and was actually a great day for inspiration on some ideas that have been floating around my head. For one, I was really missing SuperCollider, and how after using it for over 10 years now, it is no longer part of my new monome/osc driven setup and workflow. So I ended up doing
something I have never done before, and what I found blew my mind:
[[posterous-content:U7HCL3mqeapX368QtFJa]]
A
Supercollider external for embedding in max patches! OMG! Now I can use SuperCollider in tandem with mlr and a whole slew of other monome patches! And on top of that I can embed it inside of a Max4Live patch and get it running in Ableton! So here's a little one-liner I tested out, look forward to posting more!
play{AllpassC.ar(SinOsc.ar(55).tanh,0.4,TExpRand.ar(2e-4, 0.4,Impulse.ar(8)).round([2e-3,4e-3]),2)};


Creates a new instance of the persistence component.
(optional) a collection name.
The MongoDB connection object.
The MongoDb collection object.
The MongoDB colleciton object.
The MongoDB connection component.
The MongoDB database name.
The MongoDb database object.
The dependency resolver.
The logger.
Clears component state.
(optional) transaction id to trace execution through call chain.
callback function that receives error or null no errors occured.
Closes component and frees used resources.
(optional) transaction id to trace execution through call chain.
callback function that receives error or null no errors occured.
Configures component by passing configuration parameters.
configuration parameters to be set.
Convert object value from public to internal format.
an object in public format to convert.
converted object in internal format.
Converts object value from internal to public format.
an object in internal format to convert.
converted object in public format.
Creates a data item.
an item to be created.
(optional) callback function that receives created item or error.
Deletes data items that match to a given filter.
This method shall be called by a public deleteByFilter method from child class that receives FilterParams and converts them into a filter function.
(optional) transaction id to trace execution through call chain.
(optional) a filter JSON object.
(optional) callback function that receives error or null for success.
Adds index definition to create it on opening
index keys (fields)
index options
Gets a number of data items retrieved by a given filter.
This method shall be called by a public getCountByFilter method from child class that receives FilterParams and converts them into a filter function.
(optional) transaction id to trace execution through call chain.
(optional) a filter JSON object
callback function that receives a data page or error.
Gets a list of data items retrieved by a given filter and sorted according to sort parameters.
This method shall be called by a public getListByFilter method from child class that receives FilterParams and converts them into a filter function.
(optional) transaction id to trace execution through call chain.
(optional) a filter JSON object
(optional) sorting JSON object
(optional) projection JSON object
callback function that receives a data list or error.
Gets a random item from items that match to a given filter.
This method shall be called by a public getOneRandom method from child class that receives FilterParams and converts them into a filter function.
(optional) transaction id to trace execution through call chain.
(optional) a filter JSON object
callback function that receives a random item or error.
Gets a page of data items retrieved by a given filter and sorted according to sort parameters.
This method shall be called by a public getPageByFilter method from child class that receives FilterParams and converts them into a filter function.
(optional) transaction id to trace execution through call chain.
(optional) a filter JSON object
(optional) paging parameters
(optional) sorting JSON object
(optional) projection JSON object
callback function that receives a data page or error.
Checks if the component is opened.
true if the component has been opened and false otherwise.
Opens the component.
(optional) transaction id to trace execution through call chain.
callback function that receives error or null no errors occured.
Sets references to dependent components.
references to locate the component dependencies.
Unsets (clears) previously set references to dependent components.
Generated using TypeDoc
Abstract persistence component that stores data in MongoDB using plain driver.
This is the most basic persistence component that is only able to store data items of any type. Specific CRUD operations over the data items must be implemented in child classes by accessing
this._db
orthis._collection
properties.Configuration parameters
References
*:logger:*:*:1.0
(optional) ILogger components to pass log messages*:discovery:*:*:1.0
(optional) IDiscovery services*:credential-store:*:*:1.0
(optional) Credential stores to resolve credentialsExample
class MyMongoDbPersistence extends MongoDbPersistence<MyData> { public constructor() { base("mydata"); } public getByName(correlationId: string, name: string, callback: (err, item) => void): void { let criteria = { name: name }; this._model.findOne(criteria, callback); }); public set(correlatonId: string, item: MyData, callback: (err) => void): void { let criteria = { name: item.name }; let options = { upsert: true, new: true }; this._model.findOneAndUpdate(criteria, item, options, callback); } } let persistence = new MyMongoDbPersistence(); persistence.configure(ConfigParams.fromTuples( "host", "localhost", "port", 27017 )); persitence.open("123", (err) => { ... }); persistence.set("123", { name: "ABC" }, (err) => { persistence.getByName("123", "ABC", (err, item) => { console.log(item); // Result: { name: "ABC" } }); });


VLOL
Register
Log out
Log in
Home
Admin
About
Contact
Capture the QR Code below:
Return to Administration Menu


You may not want to share your food willingly but you can surely share your recipes and learn new ones too!
Come embrace and expand your cooking skills and knowledge. Get tons of recipes and share your own favourite recipes too with us.
Ahan Khanna, shares his home made aloo tikki .Looks delicious, isn't it?
Ketan shah, shares his home made Coleslaw salad .Looks delicious, isn't it?
Snehita shah, shares her home made pizza.Looks delicious, isn't it?
Mayank Kotiyan, shares his home made Pasta.Looks delicious, isn't it?
Alpesh shah, shares his home made Frankie.Looks delicious, isn't it?
Madhuri Dhere, shares her home made Veg lollypop. Looks delicious, isn't it?