This section explains differences between Oracle's PL/SQL and
PostgreSQL's PL/pgSQL languages in the hopes of helping developers
port applications from Oracle to PostgreSQL. Most of the code here
is from the ArsDigitaClickstream
module that I ported to PostgreSQL when I took an
internship with OpenForce
Inc. in the Summer of 2000.
PL/pgSQL is similar to PL/SQL in many aspects. It is a block
structured, imperative language (all variables have to be
declared). PL/SQL has many more features than its PostgreSQL
counterpart, but PL/pgSQL allows for a great deal of functionality
and it is being improved constantly.
In PostgreSQL you need to escape single quotes inside your
function definition. This can lead to quite amusing code at
times, especially if you are creating a function that generates
other function(s), as in
Example 19-6.
One thing to keep in mind
when escaping lots of single quotes is that, except for the
beginning/ending quotes, all the others will come in even
quantity.
Table 19-1 gives the scoop. (You'll
love this little chart.)
Table 19-1. Single Quotes Escaping Chart
No. of Quotes
Usage
Example
Result
1
To begin/terminate function bodies
CREATE FUNCTION foo() RETURNS INTEGER AS '...'
LANGUAGE 'plpgsql';
as is
2
In assignments, SELECT statements, to delimit strings, etc.
a_output := ''Blah'';
SELECT * FROM users WHERE f_name=''foobar'';
SELECT * FROM users WHERE f_name='foobar';
4
When you need two single quotes in your resulting string
without terminating that string.
a_output := a_output || '' AND name
LIKE ''''foobar'''' AND ...''
AND name LIKE 'foobar' AND ...
6
When you want double quotes in your resulting string
and terminate that string.
a_output := a_output || '' AND name
LIKE ''''foobar''''''
AND name LIKE 'foobar'
10
When you want two single quotes in the resulting string
(which accounts for 8 quotes) and
terminate that string (2 more). You will probably only need
that if you were using a function to generate other functions
(like in Example 19-6).
a_output := a_output || '' if v_'' ||
referrer_keys.kind || '' like ''''''''''
|| referrer_keys.key_string || ''''''''''
then return '''''' || referrer_keys.referrer_type
|| ''''''; end if;'';
if v_<...> like ''<...>'' then return ''<...>''; end if;
CREATE OR REPLACE FUNCTION cs_fmt_browser_version(v_name IN varchar, v_version IN varchar)
RETURN varchar IS
BEGIN
IF v_version IS NULL THEN
RETURN v_name;
END IF;
RETURN v_name || '/' || v_version;
END;
/
SHOW ERRORS;
Let's go through this function and see the differences to PL/pgSQL:
PostgreSQL does not have named
parameters. You have to explicitly alias them inside your
function.
Oracle can have IN, OUT,
and INOUT parameters passed to functions.
The INOUT, for example, means that the
parameter will receive a value and return another. PostgreSQL
only has "IN" parameters and functions can return
only a single value.
The RETURN key word in the function
prototype (not the function body) becomes
RETURNS in PostgreSQL.
On PostgreSQL functions are created using single quotes as
delimiters, so you have to escape single quotes inside your
functions (which can be quite annoying at times; see Section <IP_ADDRESS>).
The /show errors command does not exist in
PostgreSQL.
So let's see how this function would look when ported to
PostgreSQL:
CREATE OR REPLACE FUNCTION cs_fmt_browser_version(VARCHAR, VARCHAR)
RETURNS VARCHAR AS '
DECLARE
v_name ALIAS FOR $1;
v_version ALIAS FOR $2;
BEGIN
IF v_version IS NULL THEN
return v_name;
END IF;
RETURN v_name || ''/'' || v_version;
END;
' LANGUAGE 'plpgsql';
Example 19-6. A Function that Creates Another Function
The following procedure grabs rows from a
SELECT statement and builds a large function
with the results in IF statements, for the
sake of efficiency. Notice particularly the differences in
cursors, FOR loops, and the need to escape
single quotes in PostgreSQL.
CREATE OR REPLACE PROCEDURE cs_update_referrer_type_proc IS
CURSOR referrer_keys IS
SELECT * FROM cs_referrer_keys
ORDER BY try_order;
a_output VARCHAR(4000);
BEGIN
a_output := 'CREATE OR REPLACE FUNCTION cs_find_referrer_type(v_host IN VARCHAR, v_domain IN VARCHAR,
v_url IN VARCHAR) RETURN VARCHAR IS BEGIN';
FOR referrer_key IN referrer_keys LOOP
a_output := a_output || ' IF v_' || referrer_key.kind || ' LIKE ''' ||
referrer_key.key_string || ''' THEN RETURN ''' || referrer_key.referrer_type ||
'''; END IF;';
END LOOP;
a_output := a_output || ' RETURN NULL; END;';
EXECUTE IMMEDIATE a_output;
END;
/
show errors
Here is how this function would end up in PostgreSQL:
CREATE FUNCTION cs_update_referrer_type_proc() RETURNS INTEGER AS '
DECLARE
referrer_keys RECORD; -- Declare a generic record to be used in a FOR
a_output varchar(4000);
BEGIN
a_output := ''CREATE FUNCTION cs_find_referrer_type(VARCHAR,VARCHAR,VARCHAR)
RETURNS VARCHAR AS ''''
DECLARE
v_host ALIAS FOR $1;
v_domain ALIAS FOR $2;
v_url ALIAS FOR $3;
BEGIN '';
--
-- Notice how we scan through the results of a query in a FOR loop
-- using the FOR <record> construct.
--
FOR referrer_keys IN SELECT * FROM cs_referrer_keys ORDER BY try_order LOOP
a_output := a_output || '' IF v_'' || referrer_keys.kind || '' LIKE ''''''''''
|| referrer_keys.key_string || '''''''''' THEN RETURN ''''''
|| referrer_keys.referrer_type || ''''''; END IF;'';
END LOOP;
a_output := a_output || '' RETURN NULL; END; '''' LANGUAGE ''''plpgsql'''';'';
-- This works because we are not substituting any variables
-- Otherwise it would fail. Look at PERFORM for another way to run functions
EXECUTE a_output;
END;
' LANGUAGE 'plpgsql';
Example 19-7. A Procedure with a lot of String Manipulation and OUT Parameters
The following Oracle PL/SQL procedure is used to parse a URL and
return several elements (host, path and query). It is an
procedure because in PL/pgSQL functions only one value can be returned
(see Section 19.11.3). In
PostgreSQL, one way to work around this is to split the procedure
in three different functions: one to return the host, another for
the path and another for the query.
CREATE OR REPLACE PROCEDURE cs_parse_url(
v_url IN VARCHAR,
v_host OUT VARCHAR, -- This will be passed back
v_path OUT VARCHAR, -- This one too
v_query OUT VARCHAR) -- And this one
is
a_pos1 INTEGER;
a_pos2 INTEGER;
begin
v_host := NULL;
v_path := NULL;
v_query := NULL;
a_pos1 := instr(v_url, '//'); -- PostgreSQL doesn't have an instr function
IF a_pos1 = 0 THEN
RETURN;
END IF;
a_pos2 := instr(v_url, '/', a_pos1 + 2);
IF a_pos2 = 0 THEN
v_host := substr(v_url, a_pos1 + 2);
v_path := '/';
RETURN;
END IF;
v_host := substr(v_url, a_pos1 + 2, a_pos2 - a_pos1 - 2);
a_pos1 := instr(v_url, '?', a_pos2 + 1);
IF a_pos1 = 0 THEN
v_path := substr(v_url, a_pos2);
RETURN;
END IF;
v_path := substr(v_url, a_pos2, a_pos1 - a_pos2);
v_query := substr(v_url, a_pos1 + 1);
END;
/
show errors;
Here is how this procedure could be translated for PostgreSQL:
CREATE OR REPLACE FUNCTION cs_parse_url_host(VARCHAR) RETURNS VARCHAR AS '
DECLARE
v_url ALIAS FOR $1;
v_host VARCHAR;
v_path VARCHAR;
a_pos1 INTEGER;
a_pos2 INTEGER;
a_pos3 INTEGER;
BEGIN
v_host := NULL;
a_pos1 := instr(v_url,''//'');
IF a_pos1 = 0 THEN
RETURN ''''; -- Return a blank
END IF;
a_pos2 := instr(v_url,''/'',a_pos1 + 2);
IF a_pos2 = 0 THEN
v_host := substr(v_url, a_pos1 + 2);
v_path := ''/'';
RETURN v_host;
END IF;
v_host := substr(v_url, a_pos1 + 2, a_pos2 - a_pos1 - 2 );
RETURN v_host;
END;
' LANGUAGE 'plpgsql';
Note: PostgreSQL does not have an instr function,
so you can work around it using a combination of other functions.
I got tired of doing this and created my own
instr functions that behave exactly like
Oracle's (it makes life easier). See the Section 19.11.6 for the code.
Oracle procedures give a little more flexibility to the developer
because nothing needs to be explicitly returned, but it can be
through the use of INOUT or OUT parameters.
An example:
CREATE OR REPLACE PROCEDURE cs_create_job(v_job_id IN INTEGER) IS
a_running_job_count INTEGER;
PRAGMA AUTONOMOUS_TRANSACTION;(1)
BEGIN
LOCK TABLE cs_jobs IN EXCLUSIVE MODE;(2)
SELECT count(*) INTO a_running_job_count
FROM cs_jobs
WHERE end_stamp IS NULL;
IF a_running_job_count > 0 THEN
COMMIT; -- free lock(3)
raise_application_error(-20000, 'Unable to create a new job: a job is currently running.');
END IF;
DELETE FROM cs_active_job;
INSERT INTO cs_active_job(job_id) VALUES (v_job_id);
BEGIN
INSERT INTO cs_jobs (job_id, start_stamp) VALUES (v_job_id, sysdate);
EXCEPTION WHEN dup_val_on_index THEN NULL; -- don't worry if it already exists(4)
END;
COMMIT;
END;
/
show errors
Procedures like this can be easily converted into PostgreSQL
functions returning an INTEGER. This procedure in
particular is interesting because it can teach us some things:
You also cannot have transactions in PL/pgSQL procedures. The
entire function (and other functions called from therein) is
executed in a transaction and PostgreSQL rolls back the results if
something goes wrong. Therefore only one
BEGIN statement is allowed.
The exception when would have to be replaced by an
IF statement.
So let's see one of the ways we could port this procedure to PL/pgSQL:
CREATE OR REPLACE FUNCTION cs_create_job(INTEGER) RETURNS INTEGER AS '
DECLARE
v_job_id ALIAS FOR $1;
a_running_job_count INTEGER;
a_num INTEGER;
-- PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
LOCK TABLE cs_jobs IN EXCLUSIVE MODE;
SELECT count(*) INTO a_running_job_count
FROM cs_jobs
WHERE end_stamp IS NULL;
IF a_running_job_count > 0
THEN
-- COMMIT; -- free lock
RAISE EXCEPTION ''Unable to create a new job: a job is currently running.'';
END IF;
DELETE FROM cs_active_job;
INSERT INTO cs_active_job(job_id) VALUES (v_job_id);
SELECT count(*) into a_num
FROM cs_jobs
WHERE job_id=v_job_id;
IF NOT FOUND THEN -- If nothing was returned in the last query
-- This job is not in the table so lets insert it.
INSERT INTO cs_jobs(job_id, start_stamp) VALUES (v_job_id, sysdate());
RETURN 1;
ELSE
RAISE NOTICE ''Job already running.'';(1)
END IF;
RETURN 0;
END;
' LANGUAGE 'plpgsql';
Note: I haven't done much with packages myself, so if there are
mistakes here, please let me know.
Packages are a way Oracle gives you to encapsulate PL/SQL
statements and functions into one entity, like Java classes, where
you define methods and objects. You can access these
objects/methods with a "."
(dot). Here is an example of an Oracle package from ACS 4 (the
ArsDigita Community
System):
CREATE OR REPLACE PACKAGE BODY acs
AS
FUNCTION add_user (
user_id IN users.user_id%TYPE DEFAULT NULL,
object_type IN acs_objects.object_type%TYPE DEFAULT 'user',
creation_date IN acs_objects.creation_date%TYPE DEFAULT sysdate,
creation_user IN acs_objects.creation_user%TYPE DEFAULT NULL,
creation_ip IN acs_objects.creation_ip%TYPE DEFAULT NULL,
...
) RETURN users.user_id%TYPE
IS
v_user_id users.user_id%TYPE;
v_rel_id membership_rels.rel_id%TYPE;
BEGIN
v_user_id := acs_user.new (user_id, object_type, creation_date,
creation_user, creation_ip, email, ...
RETURN v_user_id;
END;
END acs;
/
show errors
We port this to PostgreSQL by creating the different objects of
the Oracle package as functions with a standard naming
convention. We have to pay attention to some other details, like
the lack of default parameters in PostgreSQL functions. The above
package would become something like this:
CREATE FUNCTION acs__add_user(INTEGER,INTEGER,VARCHAR,TIMESTAMP,INTEGER,INTEGER,...)
RETURNS INTEGER AS '
DECLARE
user_id ALIAS FOR $1;
object_type ALIAS FOR $2;
creation_date ALIAS FOR $3;
creation_user ALIAS FOR $4;
creation_ip ALIAS FOR $5;
...
v_user_id users.user_id%TYPE;
v_rel_id membership_rels.rel_id%TYPE;
BEGIN
v_user_id := acs_user__new(user_id,object_type,creation_date,creation_user,creation_ip, ...);
...
RETURN v_user_id;
END;
' LANGUAGE 'plpgsql';
The PostgreSQL version of EXECUTE works
nicely, but you have to remember to use
quote_literal(TEXT) and
quote_string(TEXT) as described in Section 19.5.4. Constructs of the type
EXECUTE ''SELECT * from $1''; will not work
unless you use these functions.
PostgreSQL gives you two function creation modifiers to optimize
execution: iscachable (function always returns
the same result when given the same arguments) and
isstrict (function returns NULL if any
argument is NULL). Consult the CREATE
FUNCTION reference for details.
To make use of these optimization attributes, you have to use the
WITH modifier in your CREATE
FUNCTION statement. Something like:
CREATE FUNCTION foo(...) RETURNS INTEGER AS '
...
' LANGUAGE 'plpgsql'
WITH (isstrict, iscachable);
--
-- instr functions that mimic Oracle's counterpart
-- Syntax: instr(string1,string2,[n],[m]) where [] denotes optional params.
--
-- Searches string1 beginning at the nth character for the mth
-- occurrence of string2. If n is negative, search backwards. If m is
-- not passed, assume 1 (search starts at first character).
--
-- by Roberto Mello<EMAIL_ADDRESS>-- modified by Robert Gaszewski<EMAIL_ADDRESS>-- Licensed under the GPL v2 or later.
--
CREATE FUNCTION instr(VARCHAR,VARCHAR) RETURNS INTEGER AS '
DECLARE
pos integer;
BEGIN
pos:= instr($1,$2,1);
RETURN pos;
END;
' LANGUAGE 'plpgsql';
CREATE FUNCTION instr(VARCHAR,VARCHAR,INTEGER) RETURNS INTEGER AS '
DECLARE
string ALIAS FOR $1;
string_to_search ALIAS FOR $2;
beg_index ALIAS FOR $3;
pos integer NOT NULL DEFAULT 0;
temp_str VARCHAR;
beg INTEGER;
length INTEGER;
ss_length INTEGER;
BEGIN
IF beg_index > 0 THEN
temp_str := substring(string FROM beg_index);
pos := position(string_to_search IN temp_str);
IF pos = 0 THEN
RETURN 0;
ELSE
RETURN pos + beg_index - 1;
END IF;
ELSE
ss_length := char_length(string_to_search);
length := char_length(string);
beg := length + beg_index - ss_length + 2;
WHILE beg > 0 LOOP
temp_str := substring(string FROM beg FOR ss_length);
pos := position(string_to_search IN temp_str);
IF pos > 0 THEN
RETURN beg;
END IF;
beg := beg - 1;
END LOOP;
RETURN 0;
END IF;
END;
' LANGUAGE 'plpgsql';
--
-- Written by Robert Gaszewski<EMAIL_ADDRESS>-- Licensed under the GPL v2 or later.
--
CREATE FUNCTION instr(VARCHAR,VARCHAR,INTEGER,INTEGER) RETURNS INTEGER AS '
DECLARE
string ALIAS FOR $1;
string_to_search ALIAS FOR $2;
beg_index ALIAS FOR $3;
occur_index ALIAS FOR $4;
pos integer NOT NULL DEFAULT 0;
occur_number INTEGER NOT NULL DEFAULT 0;
temp_str VARCHAR;
beg INTEGER;
i INTEGER;
length INTEGER;
ss_length INTEGER;
BEGIN
IF beg_index > 0 THEN
beg := beg_index;
temp_str := substring(string FROM beg_index);
FOR i IN 1..occur_index LOOP
pos := position(string_to_search IN temp_str);
IF i = 1 THEN
beg := beg + pos - 1;
ELSE
beg := beg + pos;
END IF;
temp_str := substring(string FROM beg + 1);
END LOOP;
IF pos = 0 THEN
RETURN 0;
ELSE
RETURN beg;
END IF;
ELSE
ss_length := char_length(string_to_search);
length := char_length(string);
beg := length + beg_index - ss_length + 2;
WHILE beg > 0 LOOP
temp_str := substring(string FROM beg FOR ss_length);
pos := position(string_to_search IN temp_str);
IF pos > 0 THEN
occur_number := occur_number + 1;
IF occur_number = occur_index THEN
RETURN beg;
END IF;
END IF;
beg := beg - 1;
END LOOP;
RETURN 0;
END IF;
END;
' LANGUAGE 'plpgsql';


Placeholder for the title
delete
cancel
save
Alterac Valley
Arathi Basin
Arathi Highlands
Ashenvale
Azeroth
Azshara
Badlands
Blasted Lands
Burning Steppes
Darkshore
Darnassus
Deadwind Pass
Desolace
Dun Morogh
Durotar
Duskwood
Dustwallow Marsh
Eastern Kingdoms
Eastern Plaguelands
Elwynn Forest
Felwood
Feralas
Hillsbrad Foothills
Ironforge
Kalimdor
Loch Modan
Moonglade
Mulgore
Orgrimmar
Redridge Mountains
Searing Gorge
Silithus
Silverpine Forest
Stonetalon Mountains
Stormwind
Stranglethorn Vale
Swamp of Sorrows
Tanaris
Teldrassil
The Barrens
The Hinterlands
Thousand Needles
Thunder Bluff
Tirisfal Glades
Undercity
Ungoro Crater
Warsong Gulch
Western Plaguelands
Westfall
Wetlands
Winterspring
list
print
save
import
load
clear
help
I am a tooltip!


auth0.js
Client Side Javascript toolkit for Auth0 API.
If you want to read the full API documentation of auth0.js, see here.
Index
- Install
- auth0.WebAuth
- auth0.Authentication
- auth0.Management
- Documentation
- Migration
- Develop
- Issue Reporting
- Author
- License
Install
From CDN:
<!-- Latest patch release -->
<script src="https://cdn.auth0.com/js/auth0/9.11.3/auth0.min.js"></script>
From npm:
npm install auth0-js
After installing the auth0-js
module, you'll need
bundle it up along with all of its dependencies.
auth0.WebAuth
Provides support for all the authentication flows.
Initialize
var auth0 = new auth0.WebAuth({
domain: '{YOUR_AUTH0_DOMAIN}',
clientID: '{YOUR_AUTH0_CLIENT_ID}'
});
Parameters:
-
domain {REQUIRED, string}: Your Auth0 account
domain such as
'example.auth0.com'
or'example.eu.auth0.com'
. - clientID {REQUIRED, string}: The Client ID found on your Application settings page.
- redirectUri {OPTIONAL, string}: The URL where Auth0 will call back to with the result of a successful or failed authentication. It must be whitelisted in the "Allowed Callback URLs" in your Auth0 Application's settings.
- scope {OPTIONAL, string}: The default scope used for all authorization requests.
- audience {OPTIONAL, string}: The default audience, used if requesting access to an API.
-
responseType {OPTIONAL, string}: Response type
for all authentication requests. It can be any space separated
list of the values
code
,token
,id_token
. If you don't provide a globalresponseType
, you will have to provide aresponseType
for each method that you use. -
responseMode {OPTIONAL, string}: The default
responseMode used, defaults to
'fragment'
. TheparseHash
method can be used to parse authentication responses using fragment response mode. Supported values arequery
,fragment
andform_post
. Thequery
value is only supported whenresponseType
iscode
. -
_disableDeprecationWarnings {OPTIONAL, boolean}:
Indicates if deprecation warnings should be output to the browser
console, defaults to
false
.
API
-
authorize(options): Redirects to the
/authorize
endpoint to start an authentication/authorization transaction. Auth0 will call back to your application with the results at the specifiedredirectUri
. The default scope for this method isopenid profile email
.
auth0.authorize({
audience: 'https://mystore.com/api/v2',
scope: 'read:order write:order',
responseType: 'token',
redirectUri: 'https://example.com/auth/callback'
});
- parseHash(options, callback): Parses a URL hash fragment to extract the result of an Auth0 authentication response.
This method requires that your tokens are signed with RS256. Please check our Migration Guide for more information.
auth0.parseHash({ hash: window.location.hash }, function(err, authResult) {
if (err) {
return console.log(err);
}
// The contents of authResult depend on which authentication parameters were used.
// It can include the following:
// authResult.accessToken - access token for the API specified by `audience`
// authResult.expiresIn - string with the access token's expiration time in seconds
// authResult.idToken - ID token JWT containing user profile information
auth0.client.userInfo(authResult.accessToken, function(err, user) {
// Now you have the user's information
});
});
-
checkSession(options, callback): Allows you to
acquire a new token from Auth0 for a user who already has an SSO
session established against Auth0 for your domain. If the user is
not authenticated, the authentication result will be empty and
you'll receive an error like this:
{error: 'login_required'}
.The method accepts any valid OAuth2 parameters that would normally be sent to/authorize
. Everything happens inside an iframe, so it will not reload your application or redirect away from it.
auth0.checkSession(
{
audience: 'https://mystore.com/api/v2',
scope: 'read:order write:order'
},
function(err, authResult) {
// Authentication tokens or error
}
);
The contents of authResult
are identical to those
returned by parseHash()
.
Important: If you're not using the hosted login page to do social logins, you have to use your own social connection keys. If you use Auth0's dev keys, you'll always get
login_required
as an error when callingcheckSession
.
Important: Because there is no redirect in this method,
responseType: 'code'
is not supported and will throw an error.
Remember to add the URL where the authorization request originates from to the Allowed Web Origins list of your Auth0 Application in the Dashboard under your Applications's Settings.
-
client.login(options, callback): Authenticates a
user with username and password in a realm using
/oauth/token
. This will not initialize a SSO session at Auth0, hence can not be used along with silent authentication.
auth0.client.login(
{
realm: 'Username-Password-Authentication', //connection name or HRD domain
username<EMAIL_ADDRESS>password: 'areallystrongpassword',
audience: 'https://mystore.com/api/v2',
scope: 'read:order write:order'
},
function(err, authResult) {
// Auth tokens in the result or an error
}
);
The contents of authResult
are identical to those
returned by parseHash()
.
auth0.Authentication
Provides an API client for the Auth0 Authentication API.
Initialize
var auth0 = new auth0.Authentication({
domain: '{YOUR_AUTH0_DOMAIN}',
clientID: '{YOUR_AUTH0_CLIENT_ID}'
});
API
-
buildAuthorizeUrl(options): Builds and returns
the
/authorize
url in order to initialize a new authN/authZ transaction. https://auth0.com/docs/api/authentication#database-ad-ldap-passive- - buildLogoutUrl(options): Builds and returns the Logout url in order to initialize a new authN/authZ transaction. https://auth0.com/docs/api/authentication#logout
-
loginWithDefaultDirectory(options, cb): Makes a
call to the
oauth/token
endpoint withpassword
grant type. https://auth0.com/docs/api-auth/grant/password -
login(options, cb): Makes a call to the
oauth/token
endpoint withhttps://auth0.com/oauth/grant-type/password-realm
grant type. -
oauthToken(options, cb): Makes a call to the
oauth/token
endpoint. -
userInfo(token, cb): Makes a call to the
/userinfo
endpoint and returns the user profile.
auth0.Management
Provides an API Client for the Auth0 Management API (only methods
meant to be used from the client with the user token). You should
use an access_token with the
https://YOUR_DOMAIN.auth0.com/api/v2/
audience to make
this work. For more information, read
the user management section of the Auth0.js documentation.
Initialize
var auth0 = new auth0.Management({
domain: '{YOUR_AUTH0_DOMAIN}',
token: '{ACCESS_TOKEN_FROM_THE_USER}'
});
API
- getUser(userId, cb): Returns the user profile. https://auth0.com/docs/api/management/v2#!/Users/get_users_by_id
- patchUserMetadata(userId, userMetadata, cb): Updates the user metadata. It will patch the user metadata with the attributes sent. https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id
- patchUserAttributes(userId, user, cb): Updates the user attributes. It will patch the root attributes that the server allows it. To check what attributes can be patched, go to https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id
- linkUser(userId, secondaryUserToken, cb): Link two users. https://auth0.com/docs/api/management/v2#!/Users/post_identities
Documentation
For a complete reference and examples please check our docs.
Migration
If you need help migrating to v9, please refer to the v9 Migration Guide.
If you need help migrating to v8, please refer to the v8 Migration Guide.
Develop
Run npm start
and point your browser to
https://localhost:3000/example
to run the example page.
Run npm run test
to run the test suite.
Run npm run test:watch
to run the test suite while you
work.
Run npm run test:coverage
to run the test suite with
coverage report.
Run npm run lint
to run the linter and check code
styles.
Issue Reporting
If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The Responsible Disclosure Program details the procedure for disclosing security issues.
For auth0 related questions/support please use the Support Center.
Author
License
This project is licensed under the MIT license. See the LICENSE file for more info.


Finite cubical complexes#
AUTHORS:
John H. Palmieri (2009-08)
This module implements the basic structure of finite cubical complexes. For full mathematical details, see Kaczynski, Mischaikow, and Mrozek [KMM2004], for example.
Cubical complexes are topological spaces built from gluing together cubes of various dimensions; the collection of cubes must be closed under taking faces, just as with a simplicial complex. In this context, a “cube” means a product of intervals of length 1 or length 0 (degenerate intervals), with integer endpoints, and its faces are obtained by using the nondegenerate intervals: if \(C\) is a cube – a product of degenerate and nondegenerate intervals – and if \([i,i+1]\) is the \(k\)-th nondegenerate factor, then \(C\) has two faces indexed by \(k\): the cubes obtained by replacing \([i, i+1]\) with \([i, i]\) or \([i+1, i+1]\).
So to construct a space homeomorphic to a circle as a cubical complex, we could take for example the four line segments in the plane from \((0,2)\) to \((0,3)\) to \((1,3)\) to \((1,2)\) to \((0,2)\). In Sage, this is done with the following command:
sage: S1 = CubicalComplex([([0,0], [2,3]), ([0,1], [3,3]),
....: ([0,1], [2,2]), ([1,1], [2,3])]); S1
Cubical complex with 4 vertices and 8 cubes
The argument to CubicalComplex
is a list of the maximal “cubes” in
the complex. Each “cube” can be an instance of the class Cube
or
a list (or tuple) of “intervals”, and an “interval” is a pair of
integers, of one of the two forms \([i, i]\) or \([i, i+1]\). So the
cubical complex S1
above has four maximal cubes:
sage: len(S1.maximal_cells())
4
sage: sorted(S1.maximal_cells())
[[0,0] x [2,3], [0,1] x [2,2], [0,1] x [3,3], [1,1] x [2,3]]
The first of these, for instance, is the product of the degenerate interval \([0,0]\) with the unit interval \([2,3]\): this is the line segment in the plane from \((0,2)\) to \((0,3)\). We could form a topologically equivalent space by inserting some degenerate simplices:
sage: S1.homology() # needs sage.modules
{0: 0, 1: Z}
sage: X = CubicalComplex([([0,0], [2,3], [2]), ([0,1], [3,3], [2]),
....: ([0,1], [2,2], [2]), ([1,1], [2,3], [2])])
sage: X.homology() # needs sage.modules
{0: 0, 1: Z}
Topologically, the cubical complex X
consists of four edges of a
square in \(\RR^3\): the same unit square as S1
, but embedded in
\(\RR^3\) with \(z\)-coordinate equal to 2. Thus X
is homeomorphic to
S1
(in fact, they’re “cubically equivalent”), and this is
reflected in the fact that they have isomorphic homology groups.
Note
This class derives from
GenericCellComplex
, and so
inherits its methods. Some of those methods are not listed here;
see the Generic Cell Complex
page instead.
- class sage.topology.cubical_complex.Cube(data)#
Bases:
SageObject
Define a cube for use in constructing a cubical complex.
“Elementary cubes” are products of intervals with integer endpoints, each of which is either a unit interval or a degenerate (length 0) interval; for example,
\[[0,1] \times [3,4] \times [2,2] \times [1,2]\]is a 3-dimensional cube (since one of the intervals is degenerate) embedded in \(\RR^4\).
- Parameters:
data – list or tuple of terms of the form
(i,i+1)
or(i,i)
or(i,)
– the last two are degenerate intervals.- Returns:
an elementary cube
Each cube is stored in a standard form: a tuple of tuples, with a nondegenerate interval
[j,j]
represented by(j,j)
, not(j,)
. (This is so that for any intervalI
,I[1]
will produce a value, not anIndexError
.)EXAMPLES:
sage: from sage.topology.cubical_complex import Cube sage: C = Cube([[1,2], [5,], [6,7], [-1, 0]]); C [1,2] x [5,5] x [6,7] x [-1,0] sage: C.dimension() # number of nondegenerate intervals 3 sage: C.nondegenerate_intervals() # indices of these intervals [0, 2, 3] sage: C.face(1, upper=False) [1,2] x [5,5] x [6,6] x [-1,0] sage: C.face(1, upper=True) [1,2] x [5,5] x [7,7] x [-1,0] sage: Cube(()).dimension() # empty cube has dimension -1 -1
- alexander_whitney(dim)#
Subdivide this cube into pairs of cubes.
This provides a cubical approximation for the diagonal map \(K \to K \times K\).
INPUT:
dim
– integer between 0 and one more than the dimension of this cube
OUTPUT:
a list containing triples
(coeff, left, right)
This uses the algorithm described by Pilarczyk and Réal [PR2015] on p. 267; the formula is originally due to Serre. Calling this method
alexander_whitney
is an abuse of notation, since the actual Alexander-Whitney map goes from \(C(K \times L) \to C(K) \otimes C(L)\), where \(C(-)\) denotes the associated chain complex, but this subdivision of cubes is at the heart of it.EXAMPLES:
sage: from sage.topology.cubical_complex import Cube sage: C1 = Cube([[0,1], [3,4]]) sage: C1.alexander_whitney(0) [(1, [0,0] x [3,3], [0,1] x [3,4])] sage: C1.alexander_whitney(1) [(1, [0,1] x [3,3], [1,1] x [3,4]), (-1, [0,0] x [3,4], [0,1] x [4,4])] sage: C1.alexander_whitney(2) [(1, [0,1] x [3,4], [1,1] x [4,4])]
- dimension()#
The dimension of this cube: the number of its nondegenerate intervals.
EXAMPLES:
sage: from sage.topology.cubical_complex import Cube sage: C = Cube([[1,2], [5,], [6,7], [-1, 0]]) sage: C.dimension() 3 sage: C = Cube([[1,], [5,], [6,], [-1,]]) sage: C.dimension() 0 sage: Cube([]).dimension() # empty cube has dimension -1 -1
- face(n, upper=True)#
The nth primary face of this cube.
- Parameters:
n – an integer between 0 and one less than the dimension of this cube
upper (boolean; optional, default=True) – if True, return the “upper” nth primary face; otherwise, return the “lower” nth primary face.
- Returns:
the cube obtained by replacing the nth non-degenerate interval with either its upper or lower endpoint.
EXAMPLES:
sage: from sage.topology.cubical_complex import Cube sage: C = Cube([[1,2], [5,], [6,7], [-1, 0]]); C [1,2] x [5,5] x [6,7] x [-1,0] sage: C.face(0) [2,2] x [5,5] x [6,7] x [-1,0] sage: C.face(0, upper=False) [1,1] x [5,5] x [6,7] x [-1,0] sage: C.face(1) [1,2] x [5,5] x [7,7] x [-1,0] sage: C.face(2, upper=False) [1,2] x [5,5] x [6,7] x [-1,-1] sage: C.face(3) Traceback (most recent call last): ... ValueError: can only compute the nth face if 0 <= n < dim
- faces()#
The list of faces (of codimension 1) of this cube.
EXAMPLES:
sage: from sage.topology.cubical_complex import Cube sage: C = Cube([[1,2], [3,4]]) sage: C.faces() [[2,2] x [3,4], [1,2] x [4,4], [1,1] x [3,4], [1,2] x [3,3]]
- faces_as_pairs()#
The list of faces (of codimension 1) of this cube, as pairs (upper, lower).
EXAMPLES:
sage: from sage.topology.cubical_complex import Cube sage: C = Cube([[1,2], [3,4]]) sage: C.faces_as_pairs() [([2,2] x [3,4], [1,1] x [3,4]), ([1,2] x [4,4], [1,2] x [3,3])]
- is_face(other)#
Return True iff this cube is a face of other.
EXAMPLES:
sage: from sage.topology.cubical_complex import Cube sage: C1 = Cube([[1,2], [5,], [6,7], [-1, 0]]) sage: C2 = Cube([[1,2], [5,], [6,], [-1, 0]]) sage: C1.is_face(C2) False sage: C1.is_face(C1) True sage: C2.is_face(C1) True
- nondegenerate_intervals()#
The list of indices of nondegenerate intervals of this cube.
EXAMPLES:
sage: from sage.topology.cubical_complex import Cube sage: C = Cube([[1,2], [5,], [6,7], [-1, 0]]) sage: C.nondegenerate_intervals() [0, 2, 3] sage: C = Cube([[1,], [5,], [6,], [-1,]]) sage: C.nondegenerate_intervals() []
- product(other)#
Cube obtained by concatenating the underlying tuples of the two arguments.
- Parameters:
other – another cube
- Returns:
the product of
self
andother
, as a Cube
EXAMPLES:
sage: from sage.topology.cubical_complex import Cube sage: C = Cube([[1,2], [3,]]) sage: D = Cube([[4], [0,1]]) sage: C.product(D) [1,2] x [3,3] x [4,4] x [0,1]
You can also use
__add__
or+
or__mul__
or*
:sage: D * C [4,4] x [0,1] x [1,2] x [3,3] sage: D + C * C [4,4] x [0,1] x [1,2] x [3,3] x [1,2] x [3,3]
- tuple()#
The tuple attached to this cube.
EXAMPLES:
sage: from sage.topology.cubical_complex import Cube sage: C = Cube([[1,2], [5,], [6,7], [-1, 0]]) sage: C.tuple() ((1, 2), (5, 5), (6, 7), (-1, 0))
- class sage.topology.cubical_complex.CubicalComplex(maximal_faces=None, maximality_check=True)#
Bases:
GenericCellComplex
Define a cubical complex.
- Parameters:
maximal_faces – set of maximal faces
maximality_check (boolean; optional, default True) – see below
- Returns:
a cubical complex
maximal_faces
should be a list or tuple or set (or anything which may be converted to a set) of “cubes”: instances of the classCube
, or lists or tuples suitable for conversion to cubes. These cubes are the maximal cubes in the complex.In addition,
maximal_faces
may be a cubical complex, in which case that complex is returned. Also,maximal_faces
may instead be any object which has a_cubical_
method (e.g., a simplicial complex); then that method is used to convert the object to a cubical complex.If
maximality_check
is True, check that each maximal face is, in fact, maximal. In this case, when producing the internal representation of the cubical complex, omit those that are not. It is highly recommended that this be True; various methods for this class may fail if faces which are claimed to be maximal are in fact not.EXAMPLES:
The empty complex, consisting of one cube, the empty cube:
sage: CubicalComplex() Cubical complex with 0 vertices and 1 cube
A “circle” (four edges connecting the vertices (0,2), (0,3), (1,2), and (1,3)):
sage: S1 = CubicalComplex([([0,0], [2,3]), ([0,1], [3,3]), ....: ([0,1], [2,2]), ([1,1], [2,3])]); S1 Cubical complex with 4 vertices and 8 cubes sage: S1.homology() # needs sage.modules {0: 0, 1: Z}
A set of five points and its product with
S1
:sage: pts = CubicalComplex([([0],), ([3],), ([6],), ([-12],), ([5],)]) sage: pts Cubical complex with 5 vertices and 5 cubes sage: pts.homology() # needs sage.modules {0: Z x Z x Z x Z} sage: X = S1.product(pts); X Cubical complex with 20 vertices and 40 cubes sage: X.homology() # needs sage.modules {0: Z x Z x Z x Z, 1: Z^5}
Converting a simplicial complex to a cubical complex:
sage: S2 = simplicial_complexes.Sphere(2) sage: C2 = CubicalComplex(S2) sage: all(C2.homology(n) == S2.homology(n) for n in range(3)) # needs sage.modules True
You can get the set of maximal cells or a dictionary of all cells:
sage: X.maximal_cells() # random: order may depend on the version of Python {[0,0] x [2,3] x [-12,-12], [0,1] x [3,3] x [5,5], [0,1] x [2,2] x [3,3], [0,1] x [2,2] x [0,0], [0,1] x [3,3] x [6,6], [1,1] x [2,3] x [0,0], [0,1] x [2,2] x [-12,-12], [0,0] x [2,3] x [6,6], [1,1] x [2,3] x [-12,-12], [1,1] x [2,3] x [5,5], [0,1] x [2,2] x [5,5], [0,1] x [3,3] x [3,3], [1,1] x [2,3] x [3,3], [0,0] x [2,3] x [5,5], [0,1] x [3,3] x [0,0], [1,1] x [2,3] x [6,6], [0,1] x [2,2] x [6,6], [0,0] x [2,3] x [0,0], [0,0] x [2,3] x [3,3], [0,1] x [3,3] x [-12,-12]} sage: sorted(X.maximal_cells()) [[0,0] x [2,3] x [-12,-12], [0,0] x [2,3] x [0,0], [0,0] x [2,3] x [3,3], [0,0] x [2,3] x [5,5], [0,0] x [2,3] x [6,6], [0,1] x [2,2] x [-12,-12], [0,1] x [2,2] x [0,0], [0,1] x [2,2] x [3,3], [0,1] x [2,2] x [5,5], [0,1] x [2,2] x [6,6], [0,1] x [3,3] x [-12,-12], [0,1] x [3,3] x [0,0], [0,1] x [3,3] x [3,3], [0,1] x [3,3] x [5,5], [0,1] x [3,3] x [6,6], [1,1] x [2,3] x [-12,-12], [1,1] x [2,3] x [0,0], [1,1] x [2,3] x [3,3], [1,1] x [2,3] x [5,5], [1,1] x [2,3] x [6,6]] sage: S1.cells() {-1: set(), 0: {[0,0] x [2,2], [0,0] x [3,3], [1,1] x [2,2], [1,1] x [3,3]}, 1: {[0,0] x [2,3], [0,1] x [2,2], [0,1] x [3,3], [1,1] x [2,3]}}
Chain complexes, homology, and cohomology:
sage: T = S1.product(S1); T Cubical complex with 16 vertices and 64 cubes sage: T.chain_complex() # needs sage.modules Chain complex with at most 3 nonzero terms over Integer Ring sage: T.homology(base_ring=QQ) # needs sage.modules {0: Vector space of dimension 0 over Rational Field, 1: Vector space of dimension 2 over Rational Field, 2: Vector space of dimension 1 over Rational Field} sage: RP2 = cubical_complexes.RealProjectivePlane() sage: RP2.cohomology(dim=[1, 2], base_ring=GF(2)) # needs sage.modules {1: Vector space of dimension 1 over Finite Field of size 2, 2: Vector space of dimension 1 over Finite Field of size 2}
Joins are not implemented:
sage: S1.join(S1) Traceback (most recent call last): ... NotImplementedError: joins are not implemented for cubical complexes
Therefore, neither are cones or suspensions.
- alexander_whitney(cube, dim_left)#
Subdivide
cube
in this cubical complex into pairs of cubes.See
Cube.alexander_whitney()
for more details. This method just calls that one.INPUT:
cube
– a cube in this cubical complexdim
– integer between 0 and one more than the dimension of this cube
OUTPUT: a list containing triples
(coeff, left, right)
EXAMPLES:
sage: C = cubical_complexes.Cube(3) sage: c = list(C.n_cubes(3))[0]; c [0,1] x [0,1] x [0,1] sage: C.alexander_whitney(c, 1) [(1, [0,1] x [0,0] x [0,0], [1,1] x [0,1] x [0,1]), (-1, [0,0] x [0,1] x [0,0], [0,1] x [1,1] x [0,1]), (1, [0,0] x [0,0] x [0,1], [0,1] x [0,1] x [1,1])]
- algebraic_topological_model(base_ring=None)#
Algebraic topological model for this cubical complex with coefficients in
base_ring
.The term “algebraic topological model” is defined by Pilarczyk and Réal [PR2015].
INPUT:
base_ring
- coefficient ring (optional, defaultQQ
). Must be a field.
Denote by \(C\) the chain complex associated to this cubical complex. The algebraic topological model is a chain complex \(M\) with zero differential, with the same homology as \(C\), along with chain maps \(\pi: C \to M\) and \(\iota: M \to C\) satisfying \(\iota \pi = 1_M\) and \(\pi \iota\) chain homotopic to \(1_C\). The chain homotopy \(\phi\) must satisfy
\(\phi \phi = 0\),
\(\pi \phi = 0\),
\(\phi \iota = 0\).
Such a chain homotopy is called a chain contraction.
OUTPUT: a pair consisting of
chain contraction
phi
associated to \(C\), \(M\), \(\pi\), and \(\iota\)the chain complex \(M\)
Note that from the chain contraction
phi
, one can recover the chain maps \(\pi\) and \(\iota\) viaphi.pi()
andphi.iota()
. Then one can recover \(C\) and \(M\) from, for example,phi.pi().domain()
andphi.pi().codomain()
, respectively.EXAMPLES:
sage: # needs sage.modules sage: RP2 = cubical_complexes.RealProjectivePlane() sage: phi, M = RP2.algebraic_topological_model(GF(2)) sage: M.homology() {0: Vector space of dimension 1 over Finite Field of size 2, 1: Vector space of dimension 1 over Finite Field of size 2, 2: Vector space of dimension 1 over Finite Field of size 2} sage: T = cubical_complexes.Torus() sage: phi, M = T.algebraic_topological_model(QQ) sage: M.homology() {0: Vector space of dimension 1 over Rational Field, 1: Vector space of dimension 2 over Rational Field, 2: Vector space of dimension 1 over Rational Field}
- cells(subcomplex=None)#
The cells of this cubical complex, in the form of a dictionary: the keys are integers, representing dimension, and the value associated to an integer d is the list of d-cells.
If the optional argument
subcomplex
is present, then return only the faces which are not in the subcomplex.- Parameters:
subcomplex (a cubical complex; optional, default None) – a subcomplex of this cubical complex
- Returns:
cells of this complex not contained in
subcomplex
- Return type:
dictionary
EXAMPLES:
sage: S2 = cubical_complexes.Sphere(2) sage: sorted(S2.cells()[2]) [[0,0] x [0,1] x [0,1], [0,1] x [0,0] x [0,1], [0,1] x [0,1] x [0,0], [0,1] x [0,1] x [1,1], [0,1] x [1,1] x [0,1], [1,1] x [0,1] x [0,1]]
- chain_complex(subcomplex=None, augmented=False, verbose=False, check=False, dimensions=None, base_ring=Integer Ring, cochain=False)#
The chain complex associated to this cubical complex.
- Parameters:
dimensions – if None, compute the chain complex in all dimensions. If a list or tuple of integers, compute the chain complex in those dimensions, setting the chain groups in all other dimensions to zero. NOT IMPLEMENTED YET: this function always returns the entire chain complex
base_ring (optional, default ZZ) – commutative ring
subcomplex (optional, default empty) – a subcomplex of this cubical complex. Compute the chain complex relative to this subcomplex.
augmented (boolean; optional, default False) – If True, return the augmented chain complex (that is, include a class in dimension \(-1\) corresponding to the empty cell). This is ignored if
dimensions
is specified.cochain (boolean; optional, default False) – If True, return the cochain complex (that is, the dual of the chain complex).
verbose (boolean; optional, default False) – If True, print some messages as the chain complex is computed.
check (boolean; optional, default False) – If True, make sure that the chain complex is actually a chain complex: the differentials are composable and their product is zero.
Note
If subcomplex is nonempty, then the argument
augmented
has no effect: the chain complex relative to a nonempty subcomplex is zero in dimension \(-1\).EXAMPLES:
sage: # needs sage.modules sage: S2 = cubical_complexes.Sphere(2) sage: S2.chain_complex() Chain complex with at most 3 nonzero terms over Integer Ring sage: Prod = S2.product(S2); Prod Cubical complex with 64 vertices and 676 cubes sage: Prod.chain_complex() Chain complex with at most 5 nonzero terms over Integer Ring sage: Prod.chain_complex(base_ring=QQ) Chain complex with at most 5 nonzero terms over Rational Field sage: C1 = cubical_complexes.Cube(1) sage: S0 = cubical_complexes.Sphere(0) sage: C1.chain_complex(subcomplex=S0) Chain complex with at most 1 nonzero terms over Integer Ring sage: C1.homology(subcomplex=S0) {0: 0, 1: Z}
Check that github issue #32203 has been fixed:
sage: # needs sage.modules sage: Square = CubicalComplex([([0,1],[0,1])]) sage: EdgesLTR = CubicalComplex([([0,0],[0,1]),([0,1],[1,1]),([1,1],[0,1])]) sage: EdgesLBR = CubicalComplex([([0,0],[0,1]),([0,1],[0,0]),([1,1],[0,1])]) sage: Square.homology(subcomplex=EdgesLTR)[2] == Square.homology(subcomplex=EdgesLBR)[2] True
- cone()#
The cone on this cubical complex.
NOT IMPLEMENTED
The cone is the complex formed by taking the join of the original complex with a one-point complex (that is, a 0-dimensional cube). Since joins are not implemented for cubical complexes, neither are cones.
EXAMPLES:
sage: C1 = cubical_complexes.Cube(1) sage: C1.cone() Traceback (most recent call last): ... NotImplementedError: cones are not implemented for cubical complexes
- connected_sum(other)#
Return the connected sum of self with other.
- Parameters:
other – another cubical complex
- Returns:
the connected sum
self # other
Warning
This does not check that self and other are manifolds, only that their facets all have the same dimension. Since a (more or less) random facet is chosen from each complex and then glued together, this method may return random results if applied to non-manifolds, depending on which facet is chosen.
EXAMPLES:
sage: T = cubical_complexes.Torus() sage: S2 = cubical_complexes.Sphere(2) sage: T.connected_sum(S2).cohomology() == T.cohomology() # needs sage.modules True sage: RP2 = cubical_complexes.RealProjectivePlane() sage: T.connected_sum(RP2).homology(1) # needs sage.modules Z x Z x C2 sage: RP2.connected_sum(RP2).connected_sum(RP2).homology(1) # needs sage.modules Z x Z x C2
- disjoint_union(other)#
The disjoint union of this cubical complex with another one.
- Parameters:
right – the other cubical complex (the right-hand factor)
Algorithm: first embed both complexes in d-dimensional Euclidean space. Then embed in (1+d)-dimensional space, calling the new axis \(x\), and putting the first complex at \(x=0\), the second at \(x=1\).
EXAMPLES:
sage: S1 = cubical_complexes.Sphere(1) sage: S2 = cubical_complexes.Sphere(2) sage: S1.disjoint_union(S2).homology() # needs sage.modules {0: Z, 1: Z, 2: Z}
- graph()#
The 1-skeleton of this cubical complex, as a graph.
EXAMPLES:
sage: cubical_complexes.Sphere(2).graph() Graph on 8 vertices
- is_pure()#
True iff this cubical complex is pure: that is, all of its maximal faces have the same dimension.
Warning
This may give the wrong answer if the cubical complex was constructed with
maximality_check
set to False.EXAMPLES:
sage: S4 = cubical_complexes.Sphere(4) sage: S4.is_pure() True sage: C = CubicalComplex([([0,0], [3,3]), ([1,2], [4,5])]) sage: C.is_pure() False
- is_subcomplex(other)#
Return True if
self
is a subcomplex ofother
.- Parameters:
other – a cubical complex
Each maximal cube of
self
must be a face of a maximal cube ofother
for this to be True.EXAMPLES:
sage: S1 = cubical_complexes.Sphere(1) sage: C0 = cubical_complexes.Cube(0) sage: C1 = cubical_complexes.Cube(1) sage: cyl = S1.product(C1) sage: end = S1.product(C0) sage: end.is_subcomplex(cyl) True sage: cyl.is_subcomplex(end) False
The embedding of the cubical complex is important here:
sage: C2 = cubical_complexes.Cube(2) sage: C1.is_subcomplex(C2) False sage: C1.product(C0).is_subcomplex(C2) True
C1
is not a subcomplex ofC2
because it’s not embedded in \(\RR^2\). On the other hand,C1 x C0
is a face ofC2
. Look at their maximal cells:sage: C1.maximal_cells() {[0,1]} sage: C2.maximal_cells() {[0,1] x [0,1]} sage: C1.product(C0).maximal_cells() {[0,1] x [0,0]}
- join(other)#
The join of this cubical complex with another one.
NOT IMPLEMENTED.
- Parameters:
other – another cubical complex
EXAMPLES:
sage: C1 = cubical_complexes.Cube(1) sage: C1.join(C1) Traceback (most recent call last): ... NotImplementedError: joins are not implemented for cubical complexes
- maximal_cells()#
The set of maximal cells (with respect to inclusion) of this cubical complex.
- Returns:
Set of maximal cells
This just returns the set of cubes used in defining the cubical complex, so if the complex was defined with no maximality checking, none is done here, either.
EXAMPLES:
sage: interval = cubical_complexes.Cube(1) sage: interval Cubical complex with 2 vertices and 3 cubes sage: interval.maximal_cells() {[0,1]} sage: interval.product(interval).maximal_cells() {[0,1] x [0,1]}
- n_cubes(n, subcomplex=None)#
The set of cubes of dimension n of this cubical complex. If the optional argument
subcomplex
is present, then return then
-dimensional cubes which are not in the subcomplex.- Parameters:
n (integer) – dimension
subcomplex (a cubical complex; optional, default None) – a subcomplex of this cubical complex
- Returns:
cells in dimension
n
- Return type:
set
EXAMPLES:
sage: C = cubical_complexes.Cube(3) sage: C.n_cubes(3) {[0,1] x [0,1] x [0,1]} sage: sorted(C.n_cubes(2)) [[0,0] x [0,1] x [0,1], [0,1] x [0,0] x [0,1], [0,1] x [0,1] x [0,0], [0,1] x [0,1] x [1,1], [0,1] x [1,1] x [0,1], [1,1] x [0,1] x [0,1]]
- n_skeleton(n)#
The n-skeleton of this cubical complex.
- Parameters:
n (non-negative integer) – dimension
- Returns:
cubical complex
EXAMPLES:
sage: S2 = cubical_complexes.Sphere(2) sage: C3 = cubical_complexes.Cube(3) sage: S2 == C3.n_skeleton(2) True
- product(other)#
The product of this cubical complex with another one.
- Parameters:
other – another cubical complex
EXAMPLES:
sage: RP2 = cubical_complexes.RealProjectivePlane() sage: S1 = cubical_complexes.Sphere(1) sage: RP2.product(S1).homology()[1] # long time: 5 seconds Z x C2
- suspension(n=1)#
The suspension of this cubical complex.
NOT IMPLEMENTED
- Parameters:
n (positive integer; optional, default 1) – suspend this many times
The suspension is the complex formed by taking the join of the original complex with a two-point complex (the 0-sphere). Since joins are not implemented for cubical complexes, neither are suspensions.
EXAMPLES:
sage: C1 = cubical_complexes.Cube(1) sage: C1.suspension() Traceback (most recent call last): ... NotImplementedError: suspensions are not implemented for cubical complexes
- wedge(other)#
The wedge (one-point union) of this cubical complex with another one.
- Parameters:
right – the other cubical complex (the right-hand factor)
Algorithm: if
self
is embedded in \(d\) dimensions andother
in \(n\) dimensions, embed them in \(d+n\) dimensions:self
using the first \(d\) coordinates,other
using the last \(n\), translating them so that they have the origin as a common vertex.Note
This operation is not well-defined if
self
orother
is not path-connected.EXAMPLES:
sage: S1 = cubical_complexes.Sphere(1) sage: S2 = cubical_complexes.Sphere(2) sage: S1.wedge(S2).homology() # needs sage.modules {0: 0, 1: Z, 2: Z}
- class sage.topology.cubical_complex.CubicalComplexExamples#
Bases:
object
Some examples of cubical complexes.
Here are the available examples; you can also type “cubical_complexes.” and hit TAB to get a list:
Sphere Torus RealProjectivePlane KleinBottle SurfaceOfGenus Cube
EXAMPLES:
sage: cubical_complexes.Torus() # indirect doctest Cubical complex with 16 vertices and 64 cubes sage: cubical_complexes.Cube(7) Cubical complex with 128 vertices and 2187 cubes sage: cubical_complexes.Sphere(7) Cubical complex with 256 vertices and 6560 cubes
- Cube(n)#
A cubical complex representation of an \(n\)-dimensional cube.
- Parameters:
n (non-negative integer) – the dimension
EXAMPLES:
sage: cubical_complexes.Cube(0) Cubical complex with 1 vertex and 1 cube sage: cubical_complexes.Cube(3) Cubical complex with 8 vertices and 27 cubes
- KleinBottle()#
A cubical complex representation of the Klein bottle, formed by taking the connected sum of the real projective plane with itself.
EXAMPLES:
sage: cubical_complexes.KleinBottle() Cubical complex with 42 vertices and 168 cubes
- RealProjectivePlane()#
A cubical complex representation of the real projective plane. This is taken from the examples from CHomP, the Computational Homology Project: http://chomp.rutgers.edu/.
EXAMPLES:
sage: cubical_complexes.RealProjectivePlane() Cubical complex with 21 vertices and 81 cubes
- Sphere(n)#
A cubical complex representation of the \(n\)-dimensional sphere, formed by taking the boundary of an \((n+1)\)-dimensional cube.
- Parameters:
n (non-negative integer) – the dimension of the sphere
EXAMPLES:
sage: cubical_complexes.Sphere(7) Cubical complex with 256 vertices and 6560 cubes
- SurfaceOfGenus(g, orientable=True)#
A surface of genus g as a cubical complex.
- Parameters:
g (non-negative integer) – the genus
orientable (bool, optional, default True) – whether the surface should be orientable
In the orientable case, return a sphere if \(g\) is zero, and otherwise return a \(g\)-fold connected sum of a torus with itself.
In the non-orientable case, raise an error if \(g\) is zero. If \(g\) is positive, return a \(g\)-fold connected sum of a real projective plane with itself.
EXAMPLES:
sage: cubical_complexes.SurfaceOfGenus(2) Cubical complex with 32 vertices and 134 cubes sage: cubical_complexes.SurfaceOfGenus(1, orientable=False) Cubical complex with 21 vertices and 81 cubes
- Torus()#
A cubical complex representation of the torus, obtained by taking the product of the circle with itself.
EXAMPLES:
sage: cubical_complexes.Torus() Cubical complex with 16 vertices and 64 cubes


HEAD
Document
Hi, It's Me, Ahmed Deaa
i have school rn, after i complete i makethis page, sorry for this
=======
AnHalfGuy's Profile
hi
This Updated On 2021/10/11
>>>>>>> a8807a79dccabe33cd680cc5d7cd19495538310f


Ruby ClassesNov 8th
Photo credit: therefromhere / Foter / CC BY-NC-SA
When I first started diving into Ruby, I often heard of the terms "classes", "objects", and "instances". I knew that in object oriented programming, just about everything can be considered an object, but I had no concrete definition of what an object is when writing code, and what it can do. In an attempt to demystify the concept of the Class as well as tools such as the instance variable and instance method in Ruby, let's take a closer look at what an object is.
Suppose we are writing a program that will display your collection of video game consoles. We know that we will be dealing with game consoles, and will have to display different information for each one such as the manufacturer, the number of controllers supported, the year it was released, etc. We can think of this console as an object, or a thing that can have different properties. Now, anyone not exposed to class design might jump at the opportunity and start to translate these into variables:
console_1_name = "xbox" console_1_year = 2001 coneole_1_controllers = 4 console_2_name = "playstation2" console_2_year = 2000 coneole_2_controllers = 2
Now, you can quickly see how if we were talking about types of clothing, or cars, that we will end up with a plethora of separate variable names that point to each object we want to reference. This is where the power of the object in object oriented programming comes in, and to define what an object is, we need to think in terms of a class. Take a look at the variables and you'll notice they all have one thing in common: "console" is in the name of each of these variables. Let's define our console class. Think of our class as a template that defines what properties they will have upon their creation and what type of behaviors they will able to do at that particular time.
class Console def initialize(name, manufacturer, year, controllers) @name = name @manufacturer = manufacturer @year = year @controllers = controllers end end
Here, we've defined our Console class which can spawn our objects. The initialize method you see here is allowing us to pass in the name, manufacturer, year, and controllers as arguments to describe what our new object will be like. We call this object it will create as an instance of class Console.
xbox = Console.new("Xbox", "Microsoft", 2001, 4) ps2 = Console.new("Playstation 2", "Sony", 2000, 2) #<Console:0x000000030b82b0 @name="Xbox", @manufacturer="Microsoft", @year=2001, @controllers=4> #<Console:0x000000030a9620 @name="Playstation 2", @manufacturer="Sony", @year=2000, @controllers=2>
You might be wondering how we can have one defined set of variables of @name, @year, etc. but have multiple objects, each with its own properties. That is because these are instance variables, denoted by the '@' symbol, which designates that a name property only belongs to an instance of the class Console. In other words, a Console does not have a name, manufacturer, and year, but an instance of Console does! This is an important distinction.
Now that we stored a few properties of our object using instance variables, we can define some behavior using instance methods! Let's write a method that simply outputs the properties we want. There is a shortcut to this using attr_reader method, but let's write it out so we can see what is happening.
class Console def initialize(name, manufacturer, year, controllers) @name = name @manufacturer = manufacturer @year = year @controllers = controllers end def name @name end def manufacturer @manufacturer end def year @year end def controllers @controllers end end
We've created a method to return the @name when we call the name method. Same for the others. Let's see it in action:
xbox.name => "Xbox" xbox.manufacturer => "Microsoft" xbox.year => 2001 xbox.controllers => 4
When we type in xbox.name, the name method gets called on to the xbox object, which already has its own instance variable of @name which stored "xbox". This is how our objects can contain its own unique properties while still belonging to a more generalized class. It's helpful to think of the object as just "one example of", or "type of" Console.


BARNSTORM GAME NODE
Developed as the Capstone project for Thinkful's Node Js course Barnstorm is the result of a combination of several JavaScript frameworks. A co-op browser based multiplayer arcade game the app utilizes socket.io for real-time interaction between players, mongoose for storing data and create.js for client side graphics. Games can be played both in single player or with a friend.


Privacy Policy & Terms of Service
Gaminum LTD (“Gaminum”) is interested in protecting the privacy of its users (“users” or “you”). In this Privacy Policy, “Gaminum” refers to Gaminum LTD and its “Affiliates”,
which shall mean subsidiaries, parent companies, joint ventures and other corporate entities under common ownership. We may also refer to Gaminum as “we” or “us”. This Privacy Policy has been created to inform you about how Gaminum manages, collects, stores, uses and protects the information you provide in connection with any Gaminum game or application (“Service”). Also, this Privacy Policy describes how you can access and update that information. Please note that the scope of this Privacy Policy is limited only to the information collected by Gaminum through your use of a Service. By using the Service, you agree to the collection and use of your personal information as outlined in this Privacy Policy. Gaminum may amend the Privacy Policy from time to time, and Gaminum encourages you to consult the Privacy Policy regularly for changes.
Gaminum may amend the Privacy Policy from time to time, and Gaminum encourages you to consult the Privacy Policy regularly for changes. Gaminum’s primary objective in collecting user information is to provide and enhance its Services, and to enable users to enjoy its Services. When you install any of its Services, Gaminum may collect and record the information you provide to Gaminum, whether through the Services themselves, or through social networks or other third party services (“Account Information”). We may collect information about you directly from you and from third parties, as well as automatically through your use of our Site, Applications or Services. Information We Collect Directly From You and As You Play Our Games and Information We Collect About You From Facebook, or Google or other platform. You have choices about the data we collect. When you are asked to provide personal data, you may decline. But if you choose not to provide the data that is necessary to provide a product or feature, you may not be able to use that product or feature. The data we collect depends on the context of your interactions with Gaminum, the choices you make, including your privacy settings, and the products and features you use. When you log into our mobile application through your relevant account, you will be asked to enter your relevant email address and password. Facebook or Google controls the information collected from you during the log-in process; Gaminum does not control the information that Facebook or Google collects from you. When you use any of our Applications (whether our mobile application or if you access our Facebook or Google application), we will collect the following information: (i) access and collect your Facebook or Google basic information (this includes your name, profile picture, gender, networks, user IDs, list of friends, date of birth, email address, and any other information you have set to public on your Facebook or Google account); (ii) send you email; (iii) post to your Wall; (iv) access posts in your news feed; and (v) access your Facebook or Google data at any time even if you are not using Facebook or Google. Please note, if you allow Gaminum to have access to this information, then Gaminum will have access to this information even if you have chosen not to make that information public. Google collects from you. When you use any of our Applications (whether our mobile application or if you access our Facebook or Google application), we will collect the following information: (i) access and collect your Facebook or Google basic information (this includes your name, profile picture, gender, networks, user IDs, list of friends, date of birth, email address, and any other information you have set to public on your Facebook or Google account); (ii) send you email; (iii) post to your Wall; (iv) access posts in your news feed; and (v) access your Facebook or Google data at any time even if you are not using Facebook or Google. Please note, if you allow Gaminum to have access to this information, then Gaminum will have access to this information even if you have chosen. s your name, profile picture, gender, networks, user IDs, list of friends, date of birth, email address, and any other information you have set to public on your Facebook or Google account); (ii) send you email; (iii) post to your Wall; (iv) access posts in your news feed; and (v) access your Facebook or Google data at any time even if you are not using Facebook or Google. Please note, if you allow Gaminum to have access to this information, then Gaminum will have access to this information even if you have chosen.
which shall mean subsidiaries, parent companies, joint ventures and other corporate entities under common ownership. We may also refer to Gaminum as “we” or “us”. This Privacy Policy has been created to inform you about how Gaminum manages, collects, stores, uses and protects the information you provide in connection with any Gaminum game or application (“Service”). Also, this Privacy Policy describes how you can access and update that information. Please note that the scope of this Privacy Policy is limited only to the information collected by Gaminum through your use of a Service. By using the Service, you agree to the collection and use of your personal information as outlined in this Privacy Policy. Gaminum may amend the Privacy Policy from time to time, and Gaminum encourages you to consult the Privacy Policy regularly for changes.


TSmarT
These are the TSmarT devices. A tool for retrieving environment data and establish alarms in your experiments within the OrganiCity EaaS platform.
This tool is based on the widespread TSmarT platform and its goal is to take advantage of sensor integration capabilities to provide not only a source of data but also a point to be handled remotely.
TSmarT devices are integrated with OrganiCity platform and therefore able to share data retrieved by their sensors with experimenters and users, who can check those values through the OrganiCity Observatory. On a first stage, up to 15 TSmarT devices will be available for experimenters through OrganiCity platform. They will be initially located in different spots in Spain, with the majority of them sending data from Santander, but also from Madrid and Barcelona.
OrganiCity TSmart devices act as a source of data, providing information related to environmental conditions thanks to the sensors integrated in them. Experimenters will be able to check periodically temperature, humidity and illuminance values wherever the devices are located, as well as establish simple alarms that could help them when creating their applications.
Technical capabilities
TSmarT is a modular wireless communications platform designed to facilitate the development and implementation of M2M, monitoring and remote control applications in different markets. The TSmarT family encompasses two programmable devices (TSmoTe & TSgaTe) and expansion modules for the different wireless technologies supported (ZigBee, Wi-Fi, GPRS, NFC/RFID, GPS).
These products address OEMs, engineering companies and system integrators seeking for a simple way to integrate wireless technologies into their products.
Among its main technical features the following should be highlighted:
- Standard ANSI C programing
- Multiple communication interfaces: ZigBee, Wi-Fi, Sigfox GPRS, RFID/NFC, GPS
- Real-time multi-tasking operating system
- Open source tools
- Powerful low-energy 32 bits microcontroller
- Sensor interfaces: UART, I2C, SPI, analog and digital I/Os, RS485
TSmarT devices support SIGFOX network, being this the technology employed to communicate them with OrganiCity platform. SIGFOX counts on wireless networks to connect low-energy objects, such as TSmarT devices, therefore offering global connectivity global cellular connectivity for the Internet of Things.
TSmarT Configuration website
A specific webpage devoted to let experimenters manage and configure TSmarT devices is offered within OrganiCity framework. Upon accessing its "experimenter area" on the OrganiCity Experimenter Portal, users who have required to perform some activities within their projects employing TSmarT devices will have the option to direct themselves to the TSmarT configuration webpage.
There, in the main screen they will find a list summarizing all the devices they can handle as well as their location over a map. By clicking on each device a new pop-up window will show up offering additional information, which can be expanded by clicking the ‘STATUS’ button or selecting the desired device from the left side menu. In addition, a couple of graphs below show the last measurements registered by that device sensors.
User has the chance to explore with more detail what is exactly happenning in each device. The screen will show all the information concerning each individual device:
- Name
- Group
- ID
- Date and Time of the last measurement
- Latitude and longitude
- Sensors values and alarms
When clicking on "CONFIGURE ALARMS" a new pop-up window will appear on screen, letting experimenters modify the alarm values and establish the thresholds they prefer. Given the design characteristics and looking for guaranteeing a long device battery life, there are certain constraints related to the configuration of those alarms into the actual devices, being the changes introduced by experimenters applied twice a day.
All in all, this configuration webpage is an easy to handle tool which can complement your OrganiCity experience.


HOME
EXPLORE
ABOUT
SIGN IN
REGISTER
SIGN IN
REGISTER
Sign in
Sign in with Facebook account
Sign in with Google account
or
Keep me signed in
Forgot password?
Sign in


| RGBASM(1) | General Commands Manual | RGBASM(1) |
rgbasm
—
Game Boy assembler
rgbasm |
[-EhLVvw ] [-b
chars] [-D
name[=value]]
[-g chars]
[-i path]
[-M depend_file]
[-MG ] [-MP ]
[-MT target_file]
[-MQ target_file]
[-o out_file]
[-p pad_value]
[-r recursion_depth]
[-W warning]
file ... |
rgbasm
program creates an RGB object file from an
assembly source file. The input file can be a file path,
or -
denoting stdin
.
Note that options can be abbreviated as long as the abbreviation
is unambiguous: --verb
is
--verbose
, but
--ver
is invalid because it
could also be --version
. The
arguments are as follows:
-b
chars,
--binary-digits
chars-D
name[=value],
-
-define
name[=value]name EQUS
"
value"
’ in code, or
‘name EQUS
"1"
’ if value is not
specified.-E
,
--export-all
-g
chars,
--gfx-chars
chars-h
,
--halt-without-nop
rgbasm
inserts a
nop
instruction immediately after any
halt
instruction. The -h
option disables this behavior.-i
path,
--include
path-L
,
--preserve-ld
LD
[$FF00+n8],A
into the opcode LDH
[$FF00+n8],A
in order to have full control of the result in the
final ROM.-M
depend_file,
--dependfile
depend_file-MG
-M
. This makes
rgbasm
assume that missing files are
auto-generated: when INCLUDE
or
INCBIN
is attempted on a non-existent file, it is
added as a dependency, then rgbasm
exits normally
instead of erroring out. This feature is used in automatic updating of
makefiles.-MP
-MT
target_file-M
. The exact
string provided will be written, including spaces and special characters.
-MT
-fileA
-MT
-fileB
-MT
-'fileA
-fileB'
.
-MQ
is specified, the output
file name is used.-MQ
target_file-MT
, but additionally escapes any special
make(1) characters, essentially ‘$’.-o
out_file,
--output
out_file-p
pad_value,
--pad-value
pad_value-r
recursion_depth,
--recursion-depth
recursion_depth-V
,
--version
-v
,
--verbose
-W
warning,
--warning
warning-w
-Werror
-Werror=
-Werror=obsolete
), and this warning is
implicitly enabled and turned into an error. This is an error if used with
a meta warning, such as -Werror=all
.The following warnings are “meta” warnings, that enable a collection of other warnings. If a specific warning is toggled via a meta flag and a specific one, the more specific one takes priority. The position on the command-line acts as a tie breaker, the last one taking effect.
-Wall
-Wextra
-Weverything
The following warnings are actual warning flags; with each
description, the corresponding warning flag is included. Note that each of
these flag also has a negation (for example,
-Wempty-entry
enables the warning that
-Wno-empty-entry
disables). Only the non-default
flag is listed here. Ignoring the “no-” prefix, entries are
listed alphabetically.
-Wno-assert
WARN
-type
assertions fail. (See “Aborting the assembly process” in
rgbasm(5) for ASSERT
).-Wbuiltin-args
STRSUB
() with indexes outside of the string's
bounds. This warning is enabled by -Wall
.-Wdiv
-Wempty-entry
db
,
dw
, dl
list. This warning
is enabled by -Wextra
.-Wlarge-constant
-Wall
.-Wlong-string
-Wall
.-Wno-obsolete
jp [hl]
instruction or HOME
section type are
encountered.-Wshift
-Wshift-amount
-Wno-truncation
db
)
loses some bits.-Wno-user
WARN
built-in is executed. (See
“Aborting the assembly process” in
rgbasm(5) for WARN
).Straightforward way:
$ rgbasm -o bar.o
foo.asm
Pipes way:
$ cat foo.asm | rgbasm -o bar.o
-
$ rgbasm -o bar.o - <
foo.asm
The resulting object file is not yet a usable ROM image—it must first be run through rgblink(1) and then rgbfix(1).
rgbasm
was originally written by Carsten Sørensen
as part of the ASMotor package, and was later packaged in RGBDS by Justin
Lloyd. It is now maintained by a number of contributors at
https://github.com/rednex/rgbds.
| July 8, 2019 | General |


[1]
Call quality. Personalization. Integration; Wish is synced with iTunes easier
[2]
ITS OS ANDRIOD I LOVE IT; it should have full qwerty keyboard


My name is Sal and I'm a data scientist located in Seattle. I'll be using this site to publish ideas I have and projects I've worked on.
If you have questions about my work or have interesting data science projects that you would like assistance with, please contact me via email, located in the Contact menu on the right-hand side of the navigation bar, with details.
I rely on streaming services such as Soundcloud and Spotify to get new recommendations on House music to listen to. One shortcoming of these recommender system is that they only recommend individual songs at a time. I realized I would find it valuable to explore entire artist recommendations so as to explore music that I like in larger quantities for a more immersive experience than one-off songs from a variety of artists that I may or may not like.
Visit salstuff.com/artistrecommender to navigate to the artist recommender.
For a breakdown of how the recommender was built, visit github.com/salmank09/artistrecommender.
Python Machine Learning Apache Spark Recommender Systems Collaborative Filtering
Thanks for visiting my website. This is my first of many posts to come, stay tuned.


Return back.
Send answer.
Quantity of correct answers is:
Quantity of incorrect answers is:
Start Quiz!
Try again!


Here's how I started with a very pleasurable and unexpected experience. I had been reading reports of smoking coffee, seeing as most hard drugs are hard for me to obtain as I live with my parents. Anyway I had read accounts of people smoking coffee and it's stimulating effects. I figured it wouldn't really work, or if it did it would be so weak I didn't notice. I was wrong.
Anyway I went into my kitchen one afternoon while my parents were away, and took some coffee out. I got some standard computer paper and rolled it into a joint, putting in maybe 2-3 grams. I continued out into my backyard and lit it up. I smoked the whole thing in a bout ten mintues (it was very harsh smoke, lots of coughing) and went back inside. Even as I was walking inside I could feel some effects. It started very light with my vision becoming sharper and brighter. I went inside and started watching tv, and when I stood up about 5 minutes later I could really feel it. I would say closest to a small dose of opiates, with the same euphoric feeling, except the drowsyness was replaced with energy.
It's been about an hour since I smoked the joint, and I can still feel the effects somewhat, though the major effects wore off about 30 minutes after I smoked. Didn't cause any problems, no hangover or headache, just happyness and energy.
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.


Put whatever content you need here. I personally used it for comments and tags :)
Mikes Modal Library is a javascript library to work and behave much like Facebook's Photo viewing experience. Clicking an individual photo will bring up the photo gallery window. It is designed to be used on social networking sites where a photo is on the left and some content is meant for the right side.


Artie Bradic
About
(current)
Portfolio
Contact
Portfolio
Medicine
Campaigns
Mobile Gaming
Universities
Tech
Philanthropy


×
Driver's Name : Amy
Efficient 4.8 /5.0
Reliability 4.8 /5.0
Safe Driver 4.8 /5.0
×
Driver's Name : Yasu
Efficient 2.7 /5.0
Reliability 3.5 /5.0
Safe Driver 4.0 /5.0
×
Modal Header
Some text in the modal.
×
Modal Header
Some text in the modal.


This is the official AtomicDEX mobile beta program channel -
Android: https://play.google.com/store/apps/details?id=com.komodoplatform.atomicdex - iOS: https://testflight.apple.com/join/c2mOLEoC - Please use https://github.com/KomodoPlatform/atomicdex/issues for bug reports and feature requests. For critical security bug reports please do send us your encrypted (https://pgp.mit.edu/pks/lookup?op=get&search=0x379287998EE6CF47) report to<EMAIL_ADDRESS>and allow up to 24h for reply. For atomicDEX API (mm2) related issue reports or feature requests please do use https://github.com/KomodoPlatform/atomicDEX-API/issues
100 messages
Before 05-Dec-19 12:00 AM
Booster99x31-Oct-19 12:59 PM
@RNI I once swaped my mom with a few nuggets
Strob31-Oct-19 01:00 PM
Yesterday I got my 2 fisrt swaps really easily but today no. I will try to create utxo in my wallets
ca33331-Oct-19 01:00 PM
@Hooftly of course we will honour the users who are helping us to gather all this important data and metrics!
TonyL31-Oct-19 01:00 PM
@Malti sent some 4d0a71482dd1d717b9d73e88d887f1dadac7c7ce12b3aa3ef3f266903022b071
1
NWhiskeyTango31-Oct-19 01:00 PM
there aint 7 on an address yet
Mark8131-Oct-19 01:00 PM
there is no need for utxos!
ѕℓιм31-Oct-19 01:00 PM
do I pick the price in the orderbook at the top?
ca33331-Oct-19 01:00 PM
@Strob no need to create UTXOs - the wallet handles this automatically
Hooftly31-Oct-19 01:00 PM
that's cool but what about the shot at the grand prize I mean that's why we're all here let's be honest(edited)
ca33331-Oct-19 01:00 PM
best is to try one by one - and without others pending orders
farl31-Oct-19 01:00 PM
@ca333 Only cancel after 10 minutes waiting?
Strob31-Oct-19 01:00 PM
ok
RNI31-Oct-19 01:00 PM
i'll try again later .. stresstest goes till 18h gmt right?
ca33331-Oct-19 01:01 PM
@farl after 10 - 20 seconds
or as soon as you see the cancel button
Dirty Moe31-Oct-19 01:01 PM
yes @RNI
farl31-Oct-19 01:01 PM
Ok
ca33331-Oct-19 01:01 PM
yes @RNI - until 6pm UTC/GMT
RNI31-Oct-19 01:02 PM
Booster99x31-Oct-19 01:02 PM
Some orders go from canceleable to uncancealable and vise versa, I don't get why
NWhiskeyTango31-Oct-19 01:02 PM
ya ^^
vanity3331-Oct-19 01:03 PM
and the rick balance changed without being able to complete a single swap yet
NWhiskeyTango31-Oct-19 01:03 PM
both my balances changed too
[deleted]31-Oct-19 01:03 PM
rick and morty balances are jumping between full balance and zero..
ѕℓιм31-Oct-19 01:03 PM
so guys u gotta pick the order at the top of the order book right
Artist31-Oct-19 01:04 PM
Every order is pending
Lol
duskonaut31-Oct-19 01:04 PM
I don't know how 1 Rick is not matched with 1 morty....Step 0/3 forever(edited)
vanity3331-Oct-19 01:05 PM
same here
[deleted]31-Oct-19 01:05 PM
Rick is more valuable than morty
danbedford31-Oct-19 01:05 PM
@ca333 I see the cancel button immediately on every single Taker order I place
RNI31-Oct-19 01:05 PM
same for me
ѕℓιм31-Oct-19 01:05 PM
me too
Hooftly31-Oct-19 01:06 PM
sigh
ubhillutd31-Oct-19 01:06 PM
Ditto
danbedford31-Oct-19 01:06 PM
Just simply doing 1:1 trades each time, always see cancel immediately
ubhillutd31-Oct-19 01:07 PM
Also. Intermittently the dex screen gets stuck at 'loading orderbook'
27aume31-Oct-19 01:07 PM
Same
Hooftly31-Oct-19 01:07 PM
benzo36531-Oct-19 01:07 PM
No orders going through
Artist31-Oct-19 01:07 PM
Same xD
duskonaut31-Oct-19 01:07 PM
great stats...someone completed 6 trades in 1 hour(edited)
Pwnz31-Oct-19 01:07 PM
step 0/3 ain't changing
Booster99x31-Oct-19 01:08 PM
So strange that "cancel" button appear and disappear "randomly"
CrisF31-Oct-19 01:08 PM
Hi @Hooftly, woul;d be nice to win a prize. I could use the cash.
Even so I'll get more benefit out of the stats that this test collects. The dex is a valuable tool.
siu - Chainmakers31-Oct-19 01:08 PM
Which are the pairs to trade?
dudezmobi31-Oct-19 01:08 PM
Kmd rick
27aume31-Oct-19 01:09 PM
What size the successful trade
Pwnz31-Oct-19 01:09 PM
rick/morty
Artist31-Oct-19 01:09 PM
Same here xD @CrisF
Hooftly31-Oct-19 01:10 PM
yeah but its unfair to offer a prize than only a few users are able to attain. Just saying 30 trades might not have been the best determining factor for entry considering the beta state of the software @CrisF(edited)
Nagato 法31-Oct-19 01:10 PM
0.05 @27aume
1
dudezmobi31-Oct-19 01:10 PM
@Hooftly hahaha
costa243931-Oct-19 01:10 PM
the important thing is not to do 30 exchanges, the important thing is to saturate atomicdex so that the devs can check for errors
dudezmobi31-Oct-19 01:10 PM
Lol
duskonaut31-Oct-19 01:10 PM
for 30 trades I need 30 days
ѕℓιм31-Oct-19 01:11 PM
lol
Hooftly31-Oct-19 01:11 PM
doing one at a time
CryptoBrandon31-Oct-19 01:11 PM
It keep showing Step 0/3
dudezmobi31-Oct-19 01:11 PM
Most of the participants are after the prize of course
ubhillutd31-Oct-19 01:11 PM
Loving how everyones first priority is helping the devs collect data...
1
1
1
gigamesh31-Oct-19 01:11 PM
we can trade any pairs right(edited)
?
[deleted]31-Oct-19 01:11 PM
no
Patrick Crypto31-Oct-19 01:11 PM
Shocking that people are complaining. Sorry you are broke!
dudezmobi31-Oct-19 01:11 PM
We would not have pqrticiption without that prize
Patrick Crypto31-Oct-19 01:12 PM
It's a stress test of beta software
dudezmobi31-Oct-19 01:12 PM
Lol yeah
duskonaut31-Oct-19 01:12 PM
is stress test working?
or this was by design?
Dirty Moe31-Oct-19 01:12 PM
I was keen for the prize but also thought it'd be a bit of fun to see how many transactions i could do! I'm personally not too bothered that its not working as it is a stress test
ubhillutd31-Oct-19 01:12 PM
@dudezmobi will have to disagree with u on that mate. Some of us were here for the first stress test. There were no rewards then.
duskonaut31-Oct-19 01:12 PM
mission impossible
ѕℓιм31-Oct-19 01:12 PM
stress stress stress
dudezmobi31-Oct-19 01:12 PM
But we dont have critical.mass
CrisF31-Oct-19 01:12 PM
Seems like some will be able to attain it. Maybe not me at this rate, but I have the same chance, just not my day @Hooftly.
coingirl8731-Oct-19 01:13 PM
People please stop crying...this stress test helps devs to improve dex...so what have you expected??? This is the first ever big stress test for a new technology....its normal that not all work perfect...so stop crying and try to swap again and again so team can collect data to customizing and improve
3
Mark8131-Oct-19 01:13 PM
wow got 1/3 finger crossed!
2
dudezmobi31-Oct-19 01:13 PM
Look how many logs in issue github
vanity3331-Oct-19 01:13 PM
not even a single swap so far
duskonaut31-Oct-19 01:13 PM
We all like stuck transactions.... looks like Bitcoin
Hooftly31-Oct-19 01:13 PM
is it the scripters freezing out real users though?(edited)
Dirty Moe31-Oct-19 01:13 PM
@Mark81 he's a wizard!
dudezmobi31-Oct-19 01:13 PM
@ubhillutd
smk762 - dracocanis ominator31-Oct-19 01:13 PM
the aim was to stress the system and get data. just keep trying, 30 is a goal but there are also bonus prizes
Mark8131-Oct-19 01:13 PM
pure luck so far!
Patrick Crypto31-Oct-19 01:14 PM
5 more hours for you to try and claim your $30 prize if that's so important
Mark8131-Oct-19 01:14 PM
now 2/3
duskonaut31-Oct-19 01:14 PM
how about prizes for people who get 1 transaction?
JaNuS31-Oct-19 01:14 PM
Finally one Swap completed after trying for 1 hour i am stressed the swap itself also took quite a few minutes, in my experience that was way faster with kmd and verus
dudezmobi31-Oct-19 01:14 PM
It would fail @Mark81
Lol
Hooftly31-Oct-19 01:14 PM
its about asking for effort from users not about the anount if the prize @Patrick Crypto lmao.
Dirty Moe31-Oct-19 01:14 PM
did the swap happen straight after you put the order in with it going to 1/3?
Mark8131-Oct-19 01:14 PM
yes straight away
Dirty Moe31-Oct-19 01:15 PM
thanks
did you just pick a random order in the order book?
coingirl8731-Oct-19 01:15 PM
Are you doing test for prize or for being part of something big?
2
smk762 - dracocanis ominator31-Oct-19 01:15 PM
not trading pair has been this heavily traded in such a short timeframe, it gives us valuable insights about where to fortify etc.


2 Kings 4:17
And the woman conceived, and bare a son at that season that Elisha had said unto her, according to the time of life.


---
layout: post
title: lnnvl() ftw
date: '2007-02-26T19:02:00.000-06:00'
author: Don Seiler
tags:
- 'null'
- oracle
- lnnvl
modified_time: '2010-11-19T22:48:47.479-06:00'
blogger_id: tag:blogger.com,1999:blog-7032512792942232766.post-2218595970420689413
blogger_orig_url: http://www.seiler.us/2007/02/lnnvl-ftw.html
---
Courtesy of Jonathan Lewis, I present you with LNNVL(). For those of you who forget to consider the possibility of NULL values in your query predicates, this could be a godsend. Should clean up a lot of predicates that had to use OR cases just to separately check for NULLs.
As Jonathan describes it: "The function lnnvl(predicate) returns true if its parameter returns false or null."


personal info
- first name : Bhavya
- last name : Jain
- Age : 20 Years
- Nationality : Indian
- Address : Bhilwara, Rajasthan, India
- Email<EMAIL_ADDRESS>- languages : English (Full professional proficiency), Hindi(Native or bilingual proficiency)
My Skills
python
java
c++
canva
c
GitHub
ML
dbms
Experience & Education
-
2021
Pyhton For Machine Learning Great Learning
Content of the course -Intro to NumPy -Joining NumPy Array -NumPy Array Mathematics -Saving and Loading NumPy Array -Intro to Pandas -Pandas Series Object -Intro to Pandas DataFrame -Pandas Function
See credential
Credential ID: XUMRZFWQ -
2021
Problem Solving (Basic) HackerRank
It covers basic topics of Data Structures (such as Arrays, Strings) and Algorithms (such as Sorting and Searching).
See credential
Credential ID: 395AF48A05C4 -
2020
Python Basic HackerRank
It covers topics like Scalar Types, Operators and Control Flow, Strings, Collections and Iteration, Modularity, Objects and Types and Classes.
See credential
Credential ID: 165EA86D19A1
-
2019 - Present
Bachelor Degree Poornima Group Of Institution, Jaipur
Computer Science
-
2017-2019
Higher Secondary MDS Senior Secondary, Udaipur
Percentange: 80%
-
2003-2017
Secondary School Central Academy Senior Secondary, Bhilwara
CGPA: 10 out of 10


{% extends "base.html" %} {% block content %}
Active Users
Wait Member
Projects / Builds
Create a Project


Step 1
Set up account
Username: xxxx
Email<EMAIL_ADDRESS>Name: xx xxx xxx
Mobile Phone: 123456789
Birth Date: 02-02-1990
Gender: Male


Copyright © 2019 STMicroelectronics
The STM32Cube HAL and LL, an STM32 abstraction layer embedded software, ensure maximized portability across STM32 portfolio.
The portable APIs layer provides a generic, multi instanced and simple set of APIs to interact with the upper layer (application, libraries and stacks). It is composed of native and extended APIs set. It is directly built around a generic architecture and allows the build-upon layers, like the middleware layer, to implement its functions without knowing in-depth the used STM32 device. This improves the library code reusability and guarantees an easy portability on other devices and STM32 families.
The Low Layer (LL) drivers are part of the STM32Cube firmware HAL that provides a basic set of optimized and one shot services. The Low layer drivers, contrary to the HAL ones are not fully portable across the STM32 families; the availability of some functions depends on the physical availability of the relative features on the product. The Low Layer (LL) drivers are designed to offer the following features:
Maintenance release
For HAL drivers usage, stm32l5xx_hal_conf_template.h file must be copied in user application as stm32l5xx_hal_conf.h with optional configuration update.
For LL drivers usage, stm32_assert_template.h file must be copied in user application as stm32_assert.h with optional assert configuration update.
Maintenance release
Maintenance release of HAL and Low Layer drivers for STM32L552xx/STM32L562xx devices
Superset features device STM32L562xx API User Manual available (STM32L562xx_User_Manual.chm)
For HAL drivers usage, stm32l5xx_hal_conf_template.h file must be copied in user application as stm32l5xx_hal_conf.h with optional configuration update.
For LL drivers usage, stm32_assert_template.h file must be copied in user application as stm32_assert.h with optional assert configuration update.
Fourth release
Fourth release of HAL and Low Layer drivers for STM32L552xx/STM32L562xx devices
Superset features device STM32L562xx API User Manual available (STM32L562xx_User_Manual.chm)
For HAL drivers usage, stm32l5xx_hal_conf_template.h file must be copied in user application as stm32l5xx_hal_conf.h with optional configuration update.
For LL drivers usage, stm32_assert_template.h file must be copied in user application as stm32_assert.h with optional assert configuration update.
Third release
Third official release of HAL and Low Layer drivers for STM32L552xx/STM32L562xx devices
Superset features device STM32L562xx API User Manual available (STM32L562xx_User_Manual.chm)
For HAL drivers usage, stm32l5xx_hal_conf_template.h file must be copied in user application as stm32l5xx_hal_conf.h with optional configuration update.
For LL drivers usage, stm32_assert_template.h file must be copied in user application as stm32_assert.h with optional assert configuration update.
Second release
Second official release of HAL and Low Layer drivers for STM32L552xx/STM32L562xx devices
Superset features device STM32L562xx API User Manual available (STM32L562xx_User_Manual.chm)
For HAL drivers usage, stm32l5xx_hal_conf_template.h file must be copied in user application as stm32l5xx_hal_conf.h with optional configuration update.
For LL drivers usage, stm32_assert_template.h file must be copied in user application as stm32_assert.h with optional assert configuration update.
First release
First official release of HAL and Low Layer drivers for STM32L552xx/STM32L562xx devices
Superset features device STM32L562xx API User Manual available (STM32L562xx_User_Manual.chm)
For HAL drivers usage, stm32l5xx_hal_conf_template.h file must be copied in user application as stm32l5xx_hal_conf.h with optional configuration update.
For LL drivers usage, stm32_assert_template.h file must be copied in user application as stm32_assert.h with optional assert configuration update.


FIRST blog
Handicraft encompasses many different crafts that are used traditionally in everyday life. Gardening, sewing, knitting, crochet, paper making, leather making, spinning, bead work, stained glass, pottery, quilting, needlepoint, metal work, doll making and woodwork all are examples of handicrafts, as only hands or simple tools are used to produce artistic objects used in daily life.
Handicraft encompasses many different crafts that are used traditionally in everyday life. Gardening, sewing, knitting, crochet, paper making, leather making, spinning, bead work, stained glass, pottery, quilting, needlepoint, metal work, doll making and woodwork all are examples of handicrafts, as only hands or simple tools are used to produce artistic objects used in daily life.


This pool will randomly assign prizes to a group of contestants.
To duplicate a line in either box, enter it like this: 10x General Electric Toaster Blank lines and leading and trailing spaces are ignored.
If there are more contestants than prizes, some contestants won't get a prize.
If there are more prizes than contestants, .
No modern web site is complete without disclaimers or copyright. Source code is on GitHub.


--- layout: post title: 'Computational Physics' ---
The following are some of my favourite projects I have done relating to computational physics:
The Ising model is a model of how magnets work at the atomic level, and is an interesting physical problem with a complicated solution. If you actually try to solve this problem analytically (i.e. with pen and paper), it would actually take longer than the age of the universe, but with Monte Carlo algorithms you can solve it in a reasonable time (you also end up with cool visualizations).
The plot below shows how the magnetization of the system evolves over time for two different systems. I let the simulations run for a period of time before plotting the results, so the magnetizations appear to fluctuate around a certain magnetization value:
As it turns out, most problems in quantum mechanics actually don't have an analytic solution (something you can solve with pen and paper). For physical systems more complicated than the hydrogen atom, you typically need to utilize numerical techniques to solve. One famous technique is called the Numerov algorithm, which I implemented to solve some special cases.
The plot below is an example that shows the probability of finding a particle within an electic potential:


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is experimental and somewhat different from what we usually offer, so please
do send your feedback.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Shockumentary
Rate My Poo
Rate My Kitten
Rate My Finger
Penny Postcards
Phallic
Dr. Sputnik
Boners
Dead Pool
NNDB
Home
Make Dailyrotten your start page
|
|
|
February 05, 2003
Indian court rejects eunuch mayor
BBC | Submitted by: MagicalMysteryRoy
Important prededent: "A court has said eunuchs are still technically men in a controversial ruling set to force a mayor from a job held for women... The landmark judgement in the central northern state of Madhya Pradesh has thrown the political status of eunuchs throughout India into doubt."
|
|
Read article...
|
|
Courtney Love arrested on flight
Boston Globe | Submitted by: AnnePage
"Singer-actress Courtney Love was detained by police Tuesday as she arrived at Heathrow airport on a trans-Atlantic flight, an airline said... Love was "verbally abusive" to cabin crew during a Virgin Atlantic flight from Los Angeles, a spokesman for the airline said. TV channel Sky News showed pictures of Love being escorted by two officers from the plane to a police van parked on the runway."
|
|
Read article...
|
|
Benicia woman lost $85 million lottery ticket
UPN 31 | Submitted by: Rockpile
"A 44 year old Costco employee says she won $85 million in the California Lottery, but now she's misplaced the ticket... No matter... Carole Warner isn't sure she wants the money anyway. Money changes everything, she points out, and she likes her life as is."
|
|
Read article...
|
|
Men spent a year in prison because of Customs error
Sign on San Diego | Submitted by: Rockpile
"Rivera and Calderón, brothers in law and partners in a small family-owned Tijuana printing business, said the marijuana was already inside the 1997 Nissan Pathfinder when Rivera bought it in San Diego at an auction of vehicles that had been seized by U.S. Customs."
|
|
Read article...
|
|
Absurd tax writeoffs
CNN Money | Submitted by: Crazy Quagga
"The year the [Social Security number] was required, the number of dependents [claimed by taxpayers] plummeted by something like 7 million,' said Gerry Voss of B&G Accounting and Tax Service in Hazel Park, Mich. 'People had been deducting their pets."
|
|
Read article...
|
|
Jackson still having kiddie sleepovers
London Telegraph | Submitted by: Rockpile
"The singer said that "very few" had actually stayed in his bed. Asked if he thought it appropriate conduct for a grown man, he replied: "Why can't you share your bed? The most loving thing to do, is to share your bed with someone. "When you say bed, they make that sexual. It's not sexual. We're going to sleep."
|
|
Read article...
|
|
Jacko *IS* Peter Pan
Wire Services | Submitted by: Aarkwilde
"I think it's my favorite thing, having water-balloon fights and climbing trees." Asked if he doesn't prefer making love, Jacko says he likes water-balloon fights better. Jackson, a former child star who was physically abused by his father, insisted his interest in children was not sexual, saying he liked to tuck them in bed and give them hot milk and cookies." We've never heard it called that before.
|
|
Read article...
|
|
Ripper family considering legal action
BBC | Submitted by: Vomit
"In a macabre twist to the story, a transcript of his final hours found by his family a week after his death shows that his online friends (sic) egged him on to take more and more drugs including Klonopin, Methadone and Restoril... Questions are being asked about how much liability should be taken by the man's online companions and by the internet service provider which hosted a chatroom dedicated to stories of how to get hold of prescription drugs."
|
|
Read article...
|
|
Did budget cuts kill the Columbia and crew?
Guardian | Submitted by: Ann Onymous
"NASA's head, Sean O'Keefe, is a protege of Dick Cheney, and was sent in with a mission to impose financial rigour. Safety, he has been assuring everyone since he became famous three days ago, was always the top priority. Yet after the nine-strong safety advisory panel warned last year that cutbacks imperilled the shuttles, five were dismissed and a sixth resigned in protest."
|
|
Read article...
|
|
Pentagon adviser: France no longer an ally
UPI | Submitted by: JON BLAST
"France is no longer an ally of the United States and the NATO alliance "must develop a strategy to contain our erstwhile ally or we will not be talking about a NATO alliance" the head of the Pentagon's top advisory board said in Washington Tuesday... Richard Perle, a former assistant secretary of defense in the Reagan administration and now chairman of the Pentagon's Policy Advisory Board, condemned French and German policy on Iraq in the strongest terms at a public seminar organized by Iraqi exiles and American Middle East and security officials."
|
|
Read article...
|
|
Thirty six hour bonerpill
Melbourne Herald Sun | Submitted by: MagicalMysteryRoy
"From today Australian men will be among the first in the world to access a new 36-hour erection drug being marketed as a rival to Viagra... The timeframe may sound a bit scary for wives and partners but the makers of Cialis, Eli Lilly, stress the drug requires sexual stimulation to take effect... Cialis is available on prescription, with a four-pill pack costing about $75."
|
|
Read article...
|
|
Tommy Franks under investigation
Globe and Mail | Submitted by: Ann Onymous
"U.S. Army General Tommy Franks, who would command a U.S. led war in Iraq, is under investigation for allegations of abuses of his office relating to his wife, Defense Department officials said Tuesday... Officials speaking on condition of anonymity said the Inspector General has been looking into allegations that Gen. Franks allowed his wife, Cathy, to attend classified briefings, gave her a military bodyguard she was not entitled to and may not have properly reimbursed the government for all of her travel when she accompanied him on official trips."
|
|
Read article...
|
|
Be a winner, loser, idiot & cadaver all at once
Court TV | Submitted by: Tim Howard
"The medical examiner listed homicide as the cause of death of a Toughman contestant. But law enforcement officials said they would not seek criminal charges, noting the bouts are legal in the state... He was taken to the hospital Jan. 4, shortly after falling unconscious after winning his bout at Soaring Eagle Casino and Resort in Mount Pleasant. Toughman, a form of boxing where contestants compete for small cash prizes, has been linked to at least nine deaths since 1979." So who gets his prize money?
|
|
Read article...
|
|
Prime time drug czar payola
Media Awareness Project | Submitted by: ChaosRing
Government officials and their contractors began approving, and in some cases altering, the scripts of shows before they were aired to conform with the government's anti-drug messages. "Script changes would be discussed between ONDCP and the show -- negotiated," says one participant... Rick Mater, the [Warner Brothers] network's senior vice president for broadcast standards, acknowledges: "The White House did view scripts. They did sign off on them... they read scripts, yes."
|
|
Read article...
|
|
|
|
|


Here at Black Cell Security we specialize in providing network security services such as penetration testing, vulnerability assessment, and Wi-Fi assessments. We can also provide services such as open-source PBX installation, configuration, and hardening the PBX platform. Our team is comprised of certified ethical hackers who have worked for major telecoms, US Navy, US Air force, and as DoD contractors providing security for large networks. We can also provide computer forensic services on various platforms. Whether your preparing for a major audit or wanting to test a new solution before deployment we can help you identify your risks and help you plan your remediation. Feel free to contact us regarding the services we provide and to plan your next assessment. |
EMAIL: |
|||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
|
Security Focus: www.securityfocus.com IT Security: www.itsecurity.com CERT: www.cert.org Security Tracker: www.securitytracker.com Common Vulnerabilities and Exposures: cve.mitre.org |
07 Nov 2006 Attackers end-run around IE security Robert Lemos, 2006-11-07 indepth Microsoft shored up the security of its flagship browser with the latest release, but the software still lets through attacks on ActiveX flaws in other components of Windows.. 08 Nov 2006Microsoft trains partners to improve security News Brief, 2006-11-08 The software giant will put its OEMs through two-and-a-half days of training on its secure software development practices as the company prepares to ship Windows Vista. 07 Nov 2006Wikipedia targeted by virus writer News Brief, 2006-11-07 Online fraudsters slipped a virus into the German edition of the Internet encyclopedia to use as an infection point for a phishing campaign, says an antivirus firm. |
|||||||||||||||||||||||||||||||||||||
| site design: | © 2007 Black Cell Security | ||||||||||||||||||||||||||||||||||||||


1 Kings 1:27
Is this thing done by my lord the king, and thou hast not showed it unto thy servant, who should sit on the throne of my lord the king after him?


PRODUCT
FEATURES
PRICING
.
LOGIN
New
Monograph Dashboard
Powerful insights into your team
Project planning and time tracking for agile teams
SCHEDULE A DEMO
To see a preview