The functions and views published in this repository are some of those, which I regularly need in my daily job.
As these procedures are sort of essential, at least to me, I install them in the public schema. That way they are available for everyone without having to know a schema name.
All functions and views are covered by tests. The tests are done in simple SQL statements. Each test does raise division by zero if it fails.
The tests have been done with PostgreSQL 9.6 and 10. There have been some changes in the behaviour in PostgreSQL 10, Timestamp and Date functions and conversions have become more strict.
All examples have been done with PostgreSQL 10, differences in the behaviour of previous versions are noted.
The main repository is now on GitLab. A mirror will stay on GitHub.
If you discover any issue, please file them on https://gitlab.com/sjstoelting/pgsql-tweaks/issues.
All functions and tests are located in single files.
The files for the extension are build by the shell script "create-sql.sh".
To be able to run the script, you need to have a configuration with the
connection information. Please copy "build.cfg.example" to "build.cfg" and
change the configuration to fit your environment.
The script assumes, that you have a
.pgpass
file with login information matching the configuration.
You may either, install all functions as a package, or install single functions of your choice.
Get the source by either, download the code as ZIP file, or by git clone.
cd pgsql_tweaks
make install
Afterwards you are able to create the extension in a database:
CREATE EXTENSION pgsql_tweaks;
pgsql_tweaks is now available over the PostgreSQL extension management, PGXN.
The installation is done with the PGXN installer.
pgxn install pgsql_tweaks
Afterwards you are able to create the extension in a database:
1.1 Functions to check data types
1.1.1 FUNCTION is_date
1.1.2 FUNCTION is_time
1.1.3 FUNCTION is_timestamp
1.1.4 FUNCTION is_real
1.1.5 FUNCTION is_double_precision
1.1.6 FUNCTION is_numeric
1.1.7 FUNCTION is_bigint
1.1.8 FUNCTION is_integer
1.1.9 FUNCTION is_smallint
1.1.10 FUNCTION is_boolean
1.1.11 FUNCTION is_json
1.1.12 FUNCTION is_jsonb
1.1.13 FUNCTION is_empty
1.2 Functions about encryption
1.2.1 FUNCTION sha256
1.3 Functions and views to get extended system information
1.3.1 FUNCTION pg_schema_size
1.3.2 VIEW pg_db_views
1.3.3 VIEW pg_foreign_keys
1.3.4 VIEW pg_functions
1.3.4 VIEW pg_active_locks
1.3.5 VIEW pg_table_matview_infos
1.4 Functions about encodings
1.4.1 FUNCTION is_encoding
1.4.2 FUNCTION is_latin1
1.4.3 FUNCTION return_not_part_of_latin1
1.4.4 FUNCTION replace_latin1
<IP_ADDRESS> replace_latin1(s VARCHAR)
<IP_ADDRESS> replace_latin1(s VARCHAR, replacement VARCHAR)
<IP_ADDRESS> replace_latin1(s VARCHAR, s_search VARCHAR[], s_replace VARCHAR[])
1.4.5 FUNCTION return_not_part_of_encoding
1.4.6 FUNCTION replace_encoding
<IP_ADDRESS> replace_encoding(s VARCHAR, e VARCHAR)
<IP_ADDRESS> replace_encoding(s VARCHAR, e VARCHAR, replacement VARCHAR)
<IP_ADDRESS> replace_encoding(s VARCHAR, s_search VARCHAR[], s_replace VARCHAR[])
1.5 User defined aggregates
1.5.1 AGGREGATE gap_fill
1.5.2 AGGREGATE array_min
1.5.3 AGGREGATE array_max
1.5.4 AGGREGATE array_avg
1.5.5 AGGREGATE array_sum
1.6 Format functions
1.6.1 FUNCTION date_de
1.6.2 FUNCTION datetime_de
1.7 Conversion functions
1.7.1 FUNCTION to_unix_timestamp
1.8 Other functions
1.8.1 FUNCTION array_trim
The function checks strings for being a date.
You might pass a second parameter to use a format string. Without the format,
the default format of PostgreSQL is used.
There has been a behaviour change in PostgreSQL 10. A conversion is now handled strict, as in previous versions the conversion tried to calculate dates.
SELECT is_date('31.02.2018', 'DD.MM.YYYY') AS res;
-- Result is true because the conversion would return a valid result for
SELECT to_date('31.02.2018', 'DD.MM.YYYY');
Result PostgreSQL 9.6 and previous versions:
| to_date |
|---|
| 2018-03-03 |
/**
* Parameter is in PostgreSQL default format
*/
SELECT is_date('2018-01-01') AS res;
Result:
| res |
|---|
| t |
SELECT is_date('2018-02-31') AS res;
Result:
| res |
|---|
| f |
/**
* Parameter is in PostgreSQL German format
*/
SELECT is_date('01.01.2018', 'DD.MM.YYYY') AS res;
Result:
| res |
|---|
| t |
SELECT is_date('31.02.2018', 'DD.MM.YYYY') AS res;
Result:
| res |
|---|
| f |
The function checks strings for being a time.
You might pass a second parameter to use a format string. Without the format,
the default format of PostgreSQL is used.
There has been a behaviour change in PostgreSQL 10. A conversion is now handled strict, as in previous versions the conversion tried to calculate time.
SELECT is_time('25.33.55,456574', 'HH24.MI.SS,US') AS res;
-- Result is true because the conversion would return a valid result for
SELECT to_timestamp('25.33.55,456574', 'HH24.MI.SS,US')::TIME;
Result PostgreSQL 9.6 and previous versions:
| to_timestamp |
|---|
| 01:33:55.456574 |
/**
* Parameter is in PostgreSQL default format
*/
SELECT is_time('14:33:55.456574') AS res;
Result:
| res |
|---|
| t |
SELECT is_time('25:33:55.456574') AS res;
Result:
| res |
|---|
| f |
/**
* Parameter is some time format
*/
SELECT is_time('14.33.55,456574', 'HH24.MI.SS,US') AS res;
Result:
| res |
|---|
| t |
SELECT is_time('25.33.55,456574', 'HH24.MI.SS,US') AS res;
Result:
| res |
|---|
| f |
The function checks strings for being a timestamp.
You might pass a second parameter to use a format string. Without the format,
the default format of PostgreSQL is used.
There has been a behaviour change in PostgreSQL 10. A conversion is now handled strict, as in previous versions the conversion tried to calculate a date.
SELECT is_timestamp('2018-01-01 25:00:00') AS res;
-- Result is true because the conversion would return a valid result for
SELECT to_timestamp('01.01.2018 25:00:00', 'DD.MM.YYYY HH24.MI.SS')::TIMESTAMP;
Result PostgreSQL 9.6 and previous versions:
| to_timestamp |
|---|
| 2018-01-02 01:00:00 |
/**
* Parameter is in PostgreSQL default format
*/
SELECT is_timestamp('2018-01-01 00:00:00') AS res;
Result:
| res |
|---|
| t |
SELECT is_timestamp('2018-01-01 25:00:00') AS res;
-- Result is false in PostgreSQL >= 10
Result:
| res |
|---|
| f |
/**
* Parameter is in PostgreSQL German format
*/
SELECT is_timestamp('01.01.2018 00:00:00', 'DD.MM.YYYY HH24.MI.SS') AS res;
Result:
| res |
|---|
| t |
SELECT is_timestamp('01.01.2018 25:00:00', 'DD.MM.YYYY HH24.MI.SS') AS res;
Result:
| res |
|---|
| f |
The function checks strings for being of data type REAL.
SELECT is_real('123.456') AS res;
Result:
| res |
|---|
| t |
SELECT is_real('123,456') AS res;
-- Result is false
Result:
| res |
|---|
| f |
The function checks strings for being of data type DOUBLE PRECISION.
SELECT is_double_precision('123.456') AS res;
Result:
| res |
|---|
| t |
SELECT is_double_precision('123,456') AS res;
-- Result is false
Result:
| res |
|---|
| f |
The function checks strings for being of data type NUMERIC.
SELECT is_numeric('123') AS res;
Result:
| res |
|---|
| t |
SELECT is_numeric('1 2') AS res;
-- Result is false
Result:
| res |
|---|
| f |
The function checks strings for being of data type BIGINT.
SELECT is_bigint('3243546343') AS res;
-- Result is true
Result:
| res |
|---|
| t |
SELECT is_bigint('123.456') AS res;
-- Result is false
The function checks strings for being of data type INTEGER.
SELECT is_integer('123') AS res;
-- Result is true
Result:
| res |
|---|
| t |
SELECT is_integer('123.456') AS res;
-- Result is false
The function checks strings for being of data type SMALLINT.
SELECT is_smallint('123') AS res;
-- Result is true
Result:
| res |
|---|
| t |
SELECT is_smallint('123.456') AS res;
-- Result is false
Result:
| res |
|---|
| f |
The function checks a string variable for containing valid BOOLEAN values.
| boolean strings |
|---|
| t |
| f |
| T |
| F |
| y |
| n |
| Y |
| N |
| true |
| false |
| TRUE |
| FALSE |
| yes |
| no |
| YES |
| NO |
| 0 |
| 1 |
SELECT is_boolean('t');
-- Result is true
Result:
| res |
|---|
| t |
SELECT is_boolean('F');
-- Result is true
Result:
| res |
|---|
| t |
SELECT is_boolean('True');
-- Result is true
Result:
| res |
|---|
| t |
SELECT is_boolean('False');
-- Result is true
Result:
| res |
|---|
| t |
SELECT is_boolean('0');
-- Result is true
Result:
| res |
|---|
| t |
SELECT is_boolean('1');
-- Result is true
Result:
| res |
|---|
| t |
SELECT is_boolean('-1');
-- Result is false
Result:
| res |
|---|
| f |
The function checks a string variable for containing a valid JSON.
SELECT is_json('{"review": {"date": "1970-12-30", "votes": 10, "rating": 5, "helpful_votes": 0}, "product": {"id": "1551803542", "group": "Book", "title": "Start and Run a Coffee Bar (Start & Run a)", "category": "Business & Investing", "sales_rank": 11611, "similar_ids": ["0471136174", "0910627312", "047112138X", "0786883561", "0201570483"], "subcategory": "General"}, "customer_id": "AE22YDHSBFYIP"}') AS res;
Result:
| res |
|---|
| t |
SELECT is_json('Not a JSON') AS
Result:
| res |
|---|
| f |
The function checks a string variable for containing a valid JSONB.
SELECT is_jsonb('{"review": {"date": "1970-12-30", "votes": 10, "rating": 5, "helpful_votes": 0}, "product": {"id": "1551803542", "group": "Book", "title": "Start and Run a Coffee Bar (Start & Run a)", "category": "Business & Investing", "sales_rank": 11611, "similar_ids": ["0471136174", "0910627312", "047112138X", "0786883561", "0201570483"], "subcategory": "General"}, "customer_id": "AE22YDHSBFYIP"}') AS res;
Result:
| res |
|---|
| t |
SELECT is_jsonb('Not a JSONB') AS
Result:
| res |
|---|
| f |
The function checks a string variable for being either, NULL or ''.
SELECT is_empty('abc');
-- Result is false
Result:
| res |
|---|
| f |
SELECT is_empty('');
-- Result is true
Result:
| res |
|---|
| t |
SELECT is_empty(NULL);
-- Result is true
Result:
| res |
|---|
| t |
Creates a function which returns a SHA256 hash for the given string.
The parameter has to be converted into a binary string of bytea.
SELECT sha256('test-string'::bytea) AS res;
Result:
| res |
|---|
| ffe65f1d98fafedea3514adc956c8ada5980c6c5d2552fd61f48401aefd5c00e |
The function returns the size for schema given as parameter in bytes.
-- Returns the size of the schema public in bytes
SELECT pg_schema_size('public');
Result:
| pg_schema_size |
|---|
| 348536832 |
-- Returns the size of the schema public formatted
SELECT pg_size_pretty(pg_schema_size('public'));
Result:
| pg_schema_size |
|---|
| 332 MB |
Creates a view to get all views of the current database but excluding system views and all views which do start with "pg" or "_pg".
SELECT * FROM pg_db_views;
| view_catalog | view_schema | view_name | view_definition |
|---|---|---|---|
| chinook | public | v_json_artist_data | WITH tracks AS ( |
| SELECT "Track"."AlbumId" AS album_id, | |||
| "Track"."TrackId" AS track_id, | |||
| "Track"."Name" AS track_name, | |||
| "Track"."MediaTypeId" AS media_type_id, | |||
| "Track"."Milliseconds" AS milliseconds, | |||
| "Track"."UnitPrice" AS unit_price | |||
| FROM "Track" | |||
| ), json_tracks AS ( | |||
| SELECT row_to_json(tracks.*) AS tracks | |||
| FROM tracks | |||
| ), albums AS ( | |||
| SELECT a."ArtistId" AS artist_id, | |||
| a."AlbumId" AS album_id, | |||
| a."Title" AS album_title, | |||
| array_agg(t.tracks) AS album_tracks | |||
| FROM ("Album" a | |||
| JOIN json_tracks t ON ((a."AlbumId" = ((t.tracks ->> 'album_id'::text))::integer))) | |||
| GROUP BY a."ArtistId", a."AlbumId", a."Title" | |||
| ), json_albums AS ( | |||
| SELECT albums.artist_id, | |||
| array_agg(row_to_json(albums.*)) AS album | |||
| FROM albums | |||
| GROUP BY albums.artist_id | |||
| ), artists AS ( | |||
| SELECT a."ArtistId" AS artist_id, | |||
| a."Name" AS artist, | |||
| jsa.album AS albums | |||
| FROM ("Artist" a | |||
| JOIN json_albums jsa ON ((a."ArtistId" = jsa.artist_id))) | |||
| ) | |||
| SELECT (row_to_json(artists.*))::jsonb AS artist_data | |||
| FROM artists; |
Creates a view to get all views of the current database but excluding system views and all views which do start with "pg" or "_pg".
SELECT * FROM pg_foreign_keys;
| table_catalog | table_schema | table_name | column_name | foreign_table_name | foreign_column_name |
|---|---|---|---|---|---|
| chinook | public | Album | ArtistId | Artist | ArtistId |
| chinook | public | Customer | SupportRepId | Employee | EmployeeId |
| chinook | public | Employee | ReportsTo | Employee | EmployeeId |
| chinook | public | Invoice | CustomerId | Customer | CustomerId |
| chinook | public | InvoiceLine | InvoiceId | Invoice | InvoiceId |
| chinook | public | InvoiceLine | TrackId | Track | TrackId |
| chinook | public | PlaylistTrack | PlaylistId | Playlist | PlaylistId |
| chinook | public | PlaylistTrack | TrackId | Track | TrackId |
| chinook | public | Track | AlbumId | Album | AlbumId |
| chinook | public | Track | GenreId | Genre | GenreId |
| chinook | public | Track | MediaTypeId | MediaType | MediaTypeId |
Creates a view to get all functions of the current database, excluding those in the schema pg_catalog and information_schema.
As there have been changes to the system tables used in this view, there are now two scripts dependend on the PostgreSQL version on which it has to be used, one for PostgreSQL 11 or newer and one for PostgreSQL 10 or older. This is handled in the script that creates the view.
SELECT * FROM pg_functions;
| schema_name | function_name | returning_data_type | parameters | function_type | function_comment |
|---|---|---|---|---|---|
| public | date_de | character varying | d date | function | Creates a function which returns the given date in German format |
| public | datetime_de | character varying | t timestamp without time zone | function | Creates a function which returns the given timestamp in German format |
Creates a view to view all live locks with all necessary information about the connections and the query.
The view needs PostgreSQL 9.2 as minimum version. The column application_name was added in 9.2.
SELECT * FROM pg_active_locks;
Result:
| pid | state | datname | usename | application_name | client_addr | query_start | wait_event_type | wait_event | locktype | mode | query |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 8872 | active | chinook | stefanie | psql | <IP_ADDRESS> | 2018-02-18 14:45:53.943047+01 | relation | AccessShareLock | SELECT * FROM pg_active_locks; | ||
| 8872 | active | chinook | stefanie | psql | <IP_ADDRESS> | 2018-02-18 14:45:53.943047+01 | virtualxid | ExclusiveLock | SELECT * FROM pg_active_locks; |
Creates a view with information about the size of the table/materialized view and sizes of indexes on that table/materialized view. It does also list all indexes on that table in an array.
SELECT * FROM pg_table_matview_infos;
Result:
| type | schemaname | tablename | tableowner | tablespace | indexes | table_size | indexes_size | total_relation_size | table_size_pretty | indexes_size_pretty | total_relation_size_pretty |
|---|---|---|---|---|---|---|---|---|---|---|---|
| table | public | MediaType | stefanie | [NULL] | {PK_MediaType} | 8192 | 16384 | 24576 | 8192 bytes | 16 kB | 24 kB |
| table | public | Playlist | stefanie | [NULL] | {PK_Playlist} | 8192 | 16384 | 24576 | 8192 bytes | 16 kB | 24 kB |
The function checks if all characters are in included in a given encoding. That is especially useful, if you have to deal with exports into other encodings than the database encoding.
The function with two parameters uses UTF-8 as source encoding,
The one with three parameters uses the third parameter as source encoding.
SELECT is_encoding('Some characters', 'LATIN1') AS res;
Result:
| res |
|---|
| f |
SELECT is_encoding('Some characters, ğ is Turkish and not latin1', 'LATIN1') AS res;
-- Returns false: The Turkish character ğ is not part of latin1
Result:
| res |
|---|
| f |
SELECT is_encoding('Some characters', 'LATIN1', 'UTF8') AS res;
Result:
| res |
|---|
| t |
SELECT is_encoding('Some characters, ğ is Turkish and not latin1', 'UTF8', 'LATIN1') AS res;
-- Returns false: The Turkish character ğ is not part of latin1
Result:
| res |
|---|
| f |
The function is a shortcut for is_encoding('Some characters', 'LATIN1'), you don't have to give the target encoding.
SELECT is_latin1('Some characters') AS res;
Result:
| res |
|---|
| t |
SELECT is_latin1('Some characters, ğ is Turkish and not latin1') AS res;
-- Returns false: The Turkish character ğ is not part of latin1
Result:
| res |
|---|
| f |
The function returns a distinct array containing all characters, which are not defined in latin1.
The function depends on is_latin1 which is part of this repository.
-- Returns an array containing the characters ğ and Ƶ each one time
SELECT return_not_part_of_latin1('ağbƵcğeƵ') AS res;
Result:
| res |
|---|
| {ğ,Ƶ} |
The function has three implementations. All implementations depend on the function is_latin1, the function is included in this repository.
The function takes one parameter with characters to be checked and replaced with an empty string, if they are not part of latin1.
SELECT replace_latin1('Some characters, ğ is Turkish and not latin1') AS res;
Result:
| res |
|---|
| Some characters, is Turkish and not latin1 |
The function takes a second parameter which is used to replace all characters, which are not part of latin1.
SELECT replace_latin1(
'Some characters, ğ is Turkish and not latin1 and replaced with a g',
'g'
) AS res;
Result:
| res |
|---|
| Some characters, g is Turkish and not latin1 and replaced with a g |
The function takes as first parameter a string which may or may not have none latin1 characters. The second parameter is an arrays containing all characters, that should be replaced. The third parameter is an array, too. The characters defined in s_search are replaced with the characters in s_replace, it takes the position in the array to identify which character should be replaced by which one.
-- First identify the characters which should be replaced, which are {ğ,Ƶ}
SELECT return_not_part_of_latin1('ağbƵcğeƵ') AS res;
-- The ğ will be replaced whit a g and the Ƶ with a Z}
SELECT 'ağbƵcğeƵ' AS original
, replace_latin1(
'ağbƵcğeƵ',
string_to_array('ğ,Ƶ', ','),
string_to_array('g,Z', ',')
) AS res;
Result:
| original | res |
|---|---|
| ağbƵcğeƵ | agbZcgeZ |
The function returns a distinct array containing all characters, which are not defined in the second parameter as encoding.
The function depends on is_encoding which is part of this repository.
-- Returns an array containing the characters ğ and Ƶ each one time
SELECT return_not_part_of_encoding('ağbƵcğeƵ', 'latin1') AS res;
Result:
| res |
|---|
| {ğ,Ƶ} |
The function has three implementations. All implementations depend on the function is_encoding, the function is included in this repository.
The function takes one parameter with characters to be checked and replaced with an empty string, if they are not part of the encoding given in the second parameter.
SELECT replace_encoding(
'Some characters, ğ is Turkish and not latin1',
'latin1'
) AS res;
Result:
| res |
|---|
| Some characters, is Turkish and not latin1 |
The function takes a third parameter which is used to replace all characters which are not part of the encoding given in parameter 2.
SELECT replace_encoding(
'Some characters, ğ is Turkish and not latin1 and replaced with a g',
'latin1',
'g'
) AS res;
Result:
| res |
|---|
| Some characters, g is Turkish and not latin1 and replaced with a g |
The function takes as first parameter a string which may or may not have none latin1 characters. The second parameter is an arrays containing all characters, that should be replaced. The third parameter is an array, too. The characters defined in s_search are replaced with the characters in s_replace, it takes the position in the array to identify which character should be replaced by which one.
-- First identify the characters which should be replaced, which are {ğ,Ƶ}
SELECT return_not_part_of_latin1('ağbƵcğeƵ') AS res;
-- The ğ will be replaced whit a g and the Ƶ with a Z}
SELECT 'ağbƵcğeƵ' AS original
, replace_encoding(
'ağbƵcğeƵ',
string_to_array('ğ,Ƶ', ','),
string_to_array('g,Z', ',')
) AS res;
Result:
| original | res |
|---|---|
| ağbƵcğeƵ | agbZcgeZ |
The aggregate is used in Window Functions to show the last value in case the current value is null.
BEGIN;
CREATE TABLE test_gap_fill(id INTEGER, some_value VARCHAR);
INSERT INTO test_gap_fill(id, some_value) VALUES
(1, 'value 1'),
(1, NULL),
(2, 'value 2'),
(2, NULL),
(2, NULL),
(3, 'value 3')
;
SELECT id
, some_value
FROM test_gap_fill
;
ROLLBACK;
Result:
| id | some_value |
|---|---|
| 1 | value 1 |
| 1 | |
| 2 | value 2 |
| 2 | |
| 2 | |
| 3 | value 3 |
BEGIN;
CREATE TABLE test_gap_fill(id INTEGER, some_value VARCHAR);
INSERT INTO test_gap_fill(id, some_value) VALUES
(1, 'value 1'),
(1, NULL),
(2, 'value 2'),
(2, NULL),
(2, NULL),
(3, 'value 3')
;
-- Fill the empty rows with values
SELECT id
, gap_fill(some_value) OVER (ORDER BY id) AS some_value
FROM test_gap_fill
;
ROLLBACK;
Result:
| id | some_value |
|---|---|
| 1 | value 1 |
| 1 | value 1 |
| 2 | value 2 |
| 2 | value 2 |
| 2 | value 2 |
| 3 | value 3 |
Calculate minimum values from arrays.
Supported data types are SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, NUMERIC, and TEXT;
SELECT array_min(ARRAY[45, 60, 43, 99]::SMALLINT[]);
Result:
| array_min |
|---|
| 43 |
SELECT array_min(ARRAY[45, 60, 43, 99]::INTEGER[]);
Result:
| array_min |
|---|
| 43 |
SELECT array_min(ARRAY[45, 60, 43, 99]::BIGINT[]);
Result:
| array_min |
|---|
| 43 |
SELECT array_min(ARRAY[45.6, 60.8, 43.7, 99.3]::REAL[]);
Result:
| array_min |
|---|
| 43.7 |
SELECT array_min(ARRAY[45.6, 60.8, 43.7, 99.3]::DOUBLE PRECISION[]);
Result:
| array_min |
|---|
| 43.7 |
SELECT array_min(ARRAY[45.6, 60.8, 43.7, 99.3]::NUMERIC[]);
Result:
| array_min |
|---|
| 43.7 |
SELECT array_min(ARRAY['def', 'abc', 'ghi']::TEXT[]);
Result:
| array_min |
|---|
| abc |
Calculate minimum values from arrays.
Supported data types are SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, NUMERIC, and TEXT;
SELECT array_max(ARRAY[45, 60, 43, 99]::SMALLINT[]);
Result:
| array_max |
|---|
| 99 |
SELECT array_max(ARRAY[45, 60, 43, 99]::INTEGER[]);
Result:
| array_max |
|---|
| 99 |
SELECT array_max(ARRAY[45, 60, 43, 99]::BIGINT[]);
Result:
| array_max |
|---|
| 99 |
SELECT array_max(ARRAY[45.6, 60.8, 43, 99.3]::REAL[]);
Result:
| array_max |
|---|
| 99.3 |
SELECT array_max(ARRAY[45.6, 60.8, 43, 99.3]::DOUBLE PRECISION[]);
Result:
| array_max |
|---|
| 99.3 |
SELECT array_max(ARRAY[45.6, 60.8, 43, 99.3]::NUMERIC[]);
Result:
| array_max |
|---|
| 99.3 |
SELECT array_max(ARRAY['def', 'abc', 'ghi']::TEXT[]);
Result:
| array_max |
|---|
| ghi |
Calculate average values from arrays.
Supported data types are SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, and NUMERIC;
SELECT array_avg(ARRAY[45, 60, 43, 99]::SMALLINT[]);
Result:
| array_avg |
|---|
| 62 |
SELECT array_avg(ARRAY[45, 60, 43, 99]::INTEGER[]);
Result:
| array_avg |
|---|
| 62 |
SELECT array_avg(ARRAY[45, 60, 43, 99]::BIGINT[]);
Result:
| array_avg |
|---|
| 62 |
SELECT array_avg(ARRAY[45.6, 60.8, 43, 99.3]::REAL[]);
Result:
| array_avg |
|---|
| 62.1750001907349 |
SELECT array_avg(ARRAY[45.6, 60.8, 43, 99.3]::DOUBLE PRECISION[]);
Result:
| array_avg |
|---|
| 62.175 |
SELECT array_avg(ARRAY[45.6, 60.8, 43, 99.3]::NUMERIC[]);
Result:
| array_avg |
|---|
| 62.1750000000000000 |
Calculate sum of values from arrays.
Supported data types are SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, and, NUMERIC;
SELECT array_sum(ARRAY[45, 60, 43, 99]::SMALLINT[]);
Result:
| array_sum |
|---|
| 247 |
SELECT array_sum(ARRAY[45, 60, 43, 99]::INTEGER[]);
Result:
| array_sum |
|---|
| 247 |
SELECT array_sum(ARRAY[45, 60, 43, 99]::BIGINT[]);
Result:
| array_sum |
|---|
| 247 |
SELECT array_sum(ARRAY[45.6, 60.8, 43.7, 99.3]::REAL[]);
Result:
| array_sum |
|---|
| 249.4 |
SELECT array_sum(ARRAY[45.6, 60.8, 43.7, 99.3]::DOUBLE PRECISION[]);
Result:
| array_sum |
|---|
| 249.4 |
SELECT array_sum(ARRAY[45.6, 60.8, 43.7, 99.3]::NUMERIC[]);
Result:
| array_sum |
|---|
| 249.4 |
Several countries use different formats for numbers, dates, and timestamps. Therefore I needed some functions, which is easy to remember than the format codes which differ in different programming languages.
Creates a function which returns the given date in German format.
SELECT date_de('2018-01-01') AS d_de;
Result:
| d_de |
|---|
| 01.01.2018 |
Creates a function which returns the given timestamp in German format.
SELECT datetime_de('2018-01-01 13:30:30 GMT') AS ts_de;
Result:
| ts_de |
|---|
| 01.01.2018 14:30:30 |
Creates two functions which returns unix timestamp for the a given timestamp or a given timestamp with time zone.
-- Timestamp without time zone, server uses German / Berlin time zone
SELECT to_unix_timestamp('2018-01-01 00:00:00') AS unix_timestamp;
Result:
| unix_timestamp |
|---|
|<PHONE_NUMBER> |
-- Timestamp with time zone
SELECT to_unix_timestamp('2018-01-01 00:00:00+01') AS unix_timestamp;
Result:
| unix_timestamp |
|---|
|<PHONE_NUMBER> |
Removes empty strings and null entries from a given array. In addition the function can remove duplicate entries. The function supports strings, numbers, dates, and timestamps with or without time zone.
-- Untrimmed timestamp array with time zone with duplicates
SELECT array_trim(ARRAY['2018-11-11 11:00:00 MEZ',NULL,'2018-11-11 11:00:00 MEZ']::TIMESTAMP WITH TIME ZONE[]) AS trimmed_array;
Result:
| untrimmed_array |
|---|
| {'2018-11-11 11:00:00.000',,'2018-11-11 11:00:00.000'} |
-- Timestamp array with time zone with duplicates
SELECT ARRAY['2018-11-11 11:00:00 MEZ',NULL,'2018-11-11 11:00:00 MEZ']::TIMESTAMP WITH TIME ZONE[] AS untrimmed_array;
Result:
| trimmed_array |
|---|
| {'2018-11-11 11:00:00.000','2018-11-11 11:00:00.000'} |
-- Timestamp array with time zone without duplicates
SELECT array_trim(ARRAY['2018-11-11 11:00:00 MEZ',NULL,'2018-11-11 11:00:00 MEZ']::TIMESTAMP WITH TIME ZONE[], TRUE) AS trimmed_array_distinct;
Result:
| trimmed_array_distinct |
|---|
| {'2018-11-11 11:00:00.000'} |


Wage Timer - Powered by Blazor
GitHub
My Website
About Blazor
Javascript is required for this to run.
Loading...


Choosing desks
Pixels/metre:
Instructions:
Available desks are green
Occupied desks are blue
Unsafe desks are red
Press Change to toggle between placing and choosing desks
Press Clear to delete all desks
Choose/deselect seats by clicking on them
Place/delete desks by clicking on the map
Set the pixel/metre ratio by typing a number in the field and pressing Submit


Advanced Topics
Overview
When authoring Spark applications, there are many things to consider, such as caching and bundling applications and their resources. In addition, there are many Tips and Tricks that may be helpful when getting up and running with Spark for the first time.
Shader Resource
Spark's Shader Resource provides a way to create a amazing shader effects, leveraging the GPU to render impressive visuals, as well as effects like blur or shadow.
OpenGL shaders are fully programmable - and provide near limitless possibility !!
Read more on the Shader Resource
Shader ResourceSVG Support
Spark's SVG provides a way to create a rich visual experience with either inline or small, downloadable files as an alternative to heavyweight images. In addition, it provides support for some features not covered by the Spark API, such as gradients, rounded rectangles and non-linear lines.
Read more on SVG Support
SVG SupportHTTP Caching
In Spark, downloaded HTTP image files and Javascript files are cached on the disk to avoid repetitive downloads of unmodified data. This is done to speedup processing by removing network download time of same data.
Caching mechanism:
- Default maximum cache size is 20 MB. Maximum cache size can be changed if needed.
- Default cache directory is /tmp/cache. Default cache directory can be changed if needed
- For every downloaded image/Javascript file, unique number is generated, which is used as cache file name
- Every file in cache has HTTP header and payload data. Every cache data is attached with the expiry date, based on the HTTP response field parameters
- When the maximum cache size is reached or when sufficient space for new file download is not available, oldest file in cache will be removed, to provide space for new file downloaded
- When a file (say Javascript or image file) is required in pxScene application, cache will be checked for availability. If it is available and valid, it will be retrieved and used for application.Else, new data will be downloaded,cached and returned to application
- Cache control mechanism mentioned in https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 is followed.Caching is implemented based on the rules given in the specification
Cache data validation:
- HTTP header and payload is cached only if it is not expired and headers does not contain "Cache-Control:no-store" field
- When cache data is requested for reuse, below validations are done, before providing cache data to the application:
- If data in cache is expired and the cached HTTP header contains "Cache-Control:must-revalidate", cached data is revalidated by sending a new HTTP request with "Cache-Control: max-age=0" parameter. Based on server response, same cached data will be sent back to application. Or new updated data from server is stored in cache and returned back to application
- If data in cache is not expired and the cached HTTP header contains "Cache-Control:no-cache", cached data is revalidated by sending a new HTTP request with "Cache-Control: max-age=0" parameter. Based on server response, same cached data will be sent back to application. Or new updated data from server is stored in cache and returned back to application
- If data in cache is not expired and the cached HTTP header contains "Cache-Control:no-cache=<header params>", cached HTTP header fields mentioned in params alone is revalidated by sending a new HTTP request with "Cache-Control: max-age=0" parameter. Based on server response, new header fields will be updated in cache and the updated cache data will be sent back to application
- If cached HTTP header contains ETag parameter, new request is sent to server with the header option "If-None-Match:<Etag-id>".If the response from the server is 302, cached data is returned to the application. Else, new data received from server is updated in cache and provided to application
Example of Server Configuration (Apache)
Add directives to httpd.conf. The following is an example of adding cache-control response header for a specific directory. This example also turns off ETags to avoid round trips to servers.
Sample directives to add in httpd.conf on a server:
# Add cache-response headers for slice app <Directory "/var/www/html/px_apps/slice"> ExpiresActive On ExpiresDefault "access plus 1 day" Header set Cache-Control "max-age=86400" Header unset ETag </Directory>
Service Bubbling
Service bubbling allows scenes within a heirarchy to provide services to other scenes. A parent scene can indicate that it wishes to vend a service by using the addServiceProvider(serviceProviderFunction) function. Then a scene wishing to use that service would call scene.getService(serviceName) where the serviceName is the name of the service the scene wishes to use. More details are explained below in this section.
scene supports two functions for providing service:
- addServiceProvider(serviceProviderFunction)
- removeServiceProvider(serviceProviderFunction)
A scene that wishes to provide a service must call addServiceProvider, passing it a serviceProviderFunction.
The serviceProviderFunction will be called whenever a scene in the hierarchy requests a service by name. The serviceProviderFunction must do the following:
- Accept two arguments
- serviceName: when the serviceProviderFunction is called, this will be the name of the service being requested.
- All service names should be properly namespaced
- All service names should include a version number
- Ex. com.mycompany.myService_1
- serviceContext: when the serviceProviderFunction is called, this will contain information about the scene that is requesting the service.
This gives the provider the opportunity to deny access to the service to specific requesters, as required. ServiceContext has the following properties:
- url: url is the originating URL from which the script requesting the service was loaded
- serviceContext: this is an object, that if populated, is a property bag from the requesting scene.
- permissions: TBD
- serviceName: when the serviceProviderFunction is called, this will be the name of the service being requested.
- Evaluate serviceName and serviceContext to determine if and what service should be provided
- Returns one of the following:
- Object - An object representing the service being requested
- "DENY" - the process of locating services is halted immediately. A null value will be returned from getService
- "ALLOW" - this serviceProvider can't provide the service, but will allow the search for the service to continue
A scene that has called addServiceProvider should call removeServiceProvider when it no longer wishes to vend the service or when it closing.
scene supports a function for scenes to request vended services by name:
scene.getService(serviceName)
Internally, Spark will do the following:
- Check the current scene for any service provider functions
- If a serviceProvider is found, it calls each service provider function found, passing the service name and service context
- If a service (object other than "DENY" or "ALLOW") is returned from the service provider function, the service provider function is returned from getService
- If DENY is returned from the service provider function, the search for a service is halted, getService returns null
- If ALLOW is returned from the service provider function, the search is allowed to continue
- If all service provider functions of a scene return ALLOW, the search bubbles up to the parent scene's service provider functions.
- This bubbling continues up the scene hierarchy to the root scene.
Image 1: Some possibilities with service provider functions:
- Child Scenes C + D can access service 2, 3, 4 and 5.
- Child Scenes C + D cannot access service 1, as Child Scene A denies it.
- Child Scenes E + F can access service 1, 2, 3, and 4. But service 1 will be a different implementation as provided by Child Scene B.
Application Packaging
There are several choices available when considering bundling/packaging options for your applications.
TBD


{% extends "base.html" %} {% block title %}How much did you miss out on?{% endblock %} {% block content %}
Hello! I'm Brandon.
I am currently a full time student at Florida International University(FIU). I was previously in a career with retail pharmacy. My first degree was a Pharm.D. from the University of Florida(UF).
{% endblock %}


About canned ACLs
private : Owner gets full control. No one else has access rights.
public-read : Owner gets full control.  Anyone can see and write in the bucket. (Not recommended)
authenticated-read : Owner gets full control. All the authenticated users can read in the bucket.
About group of users
Authenticated users : All AWS accounts. Access permission to this group allows any AWS account to access {{detailedBucket.bucket}} and its content (authenticated requests only).
All users : Access permission to this group allows anyone to access {{detailedBucket.bucket}} and its content.
About permissions
Read : {{user}} can see all of the objects in {{bucketName}}
Write : {{user}} can create, replace and delete objects in {{bucketName}}
Read ACP : {{user}} can read {{detailedBucket.bucket}}'s access list
Write ACP : {{user}} can edit the {{detailedBucket.bucket}}'s access list
Full Control : {{user}} can Read, Write, Read ACP and Write ACP in {{bucketName}}


Rounded:
Circle:
Bordered:
Text:
The w3-round class adds rounded corners to an image:
The w3-circle class shapes an image to a circle:
The w3-border class adds borders around the image:
Wrap any of the w3-card-* classes around the  element to display it as a card (add shadows):
The boss of all bosses
Position the text in an image with the w3-display-classes:
Top Left
Top Right
Bottom Left
Bottom Right
Left
Right
Top Middle
Bottom Middle
An image can be set to automatically resize itself to fit the size of its container.
If you want the image to scale down if it has to, but never scale up to be larger than its original size, use the w3-image class.
If you want the image to scale both up and down on responsiveness, set the CSS width property to 100%:
If you want to restrict a responsive image to a maximum size, use the max-width property:
The w3-opacity classes make images transparent:
Normal
w3-opacity-min
w3-opacity
w3-opacity-max
The w3-grayscale classes add a grayscale effect to an image:
Normal
w3-grayscale-min
w3-grayscale
w3-grayscale-max
Note: The w3-grayscale classes are not supported in IE 11 and earlier versions.
The w3-sepia classes add a sepia深褐色的 effect to an image:
Normal
w3-sepia-min
w3-sepia
w3-sepia-max
Note: The w3-sepia classes are not supported in IE 11 and earlier versions.
You can also add special effects on hover/mouse-over.
w3-hover-opacity
w3-hover-grayscale
w3-hover-sepia
Example

Add transparency on hover:
Remove transparency on hover:
The w3-hover-opacity class adds transparency to the image on mouse-over, and the w3-hover-opacity-off class removes transparency on mouse-over.
Example

In this example we use the W3.CSS Responsive Grid system to create a photo album that looks good on all devices.
Click on the image to display it as a modal, in full size:


Welcome
Guest !
Call to order 099-412035 /<PHONE_NUMBER>
Login
Register
Register As Restaurent
Register As User
Register As Driver
Account
CART
10
Register
Personal Information
First Name
Last Name
Email
Teliphone
Your Password
Password
Password Confirm
Newsletter Subscribe
yes
No
Your Address
Company
Address 1
Address 2
City
Post Code
Country
--- Please Select ---
Aaland Islands
Afghanistan
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Australia
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bonaire, Sint Eustatius
Bosnia and Herzegovina
Botswana
Bouvet Island
Brazil
British Indian Ocean Territory
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Canary Islands
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo
Cook Islands
Costa Rica
Cote D'Ivoire
Croatia
Cuba
Curacao
Cyprus
Czech Republic
Democratic Republic of Congo
Denmark
Djibouti
Dominica
Dominican Republic
East Timor
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands (Malvinas)
Faroe Islands
Fiji
Finland
France, Metropolitan
French Guiana
French Polynesia
French Southern Territories
FYROM
Gabon
Gambia
Georgia
Germany
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard and Mc Donald
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran (Islamic Republic of)
Iraq
Ireland
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Korea, Republic of
Kuwait
Kyrgyzstan
Lao People's Democratic Republic
Latvia
Lebanon
Lesotho
Liberia
Libyan Arab Jamahiriya
Liechtenstein
Lithuania
Luxembourg
Macau
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia, Federated States of
Moldova, Republic of
Monaco
Mongolia
Montenegro
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Korea
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestinian Territory, Occupied
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn
Poland
Portugal
Puerto Rico
Qatar
Reunion
Romania
Russian Federation
Rwanda
Saint Kitts and Nevis
Saint Lucia
Saint Vincent and the
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia
Seychelles
Sierra Leone
Singapore
Slovak Republic
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia
South Sudan
Spain
Sri Lanka
St. Barthelemy
St. Helena
St. Martin (French part)
St. Pierre and Miquelon
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syrian Arab Republic
Taiwan
Tajikistan
Tanzania, United Republic of
Thailand
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United Kingdom
United States
United States Minor Outlying
Uruguay
Uzbekistan
Vanuatu
Vatican City State
Venezuela
Viet Nam
Virgin Islands (British)
Virgin Islands (U.S.)
Wallis and Futuna Islands
Western Sahara
Yemen
Zambia
Zimbabwe
State
--- Please Select ---
Aberdeen
Aberdeenshire
Anglesey
Angus
Argyll and Bute
Bedfordshire
Berkshire
Blaenau Gwent
Bridgend
Bristol
Buckinghamshire
Caerphilly
Cambridgeshire
Cardiff
Carmarthenshire
Ceredigion
Cheshire
Clackmannanshire
Conwy
Cornwall
County Antrim
County Armagh
County Down
County Fermanagh
County Londonderry
County Tyrone
Cumbria
Denbighshire
Derbyshire
Devon
Dorset
Dumfries and Galloway
Dundee
Durham
East Ayrshire
East Dunbartonshire
East Lothian
East Renfrewshire
East Riding of Yorkshire
East Sussex
Edinburgh
Essex
Falkirk
Fife
Flintshire
Glasgow
Gloucestershire
Greater London
Greater Manchester
Gwynedd
Hampshire
Herefordshire
Hertfordshire
Highlands
Inverclyde
Isle of Man
Isle of Wight
Kent
Lancashire
Leicestershire
Lincolnshire
Merseyside
Merthyr Tydfil
Midlothian
Monmouthshire
Moray
Neath Port Talbot
Newport
Norfolk
North Ayrshire
North Lanarkshire
North Yorkshire
Northamptonshire
Northumberland
Nottinghamshire
Orkney Islands
Oxfordshire
Pembrokeshire
Perth and Kinross
Powys
Renfrewshire
Rhondda Cynon Taff
Rutland
Scottish Borders
Shetland Islands
Shropshire
Somerset
South Ayrshire
South Lanarkshire
South Yorkshire
Staffordshire
Stirling
Suffolk
Surrey
Swansea
Torfaen
Tyne and Wear
Vale of Glamorgan
Warwickshire
West Dunbartonshire
West Lothian
West Midlands
West Sussex
West Yorkshire
Western Isles
Wiltshire
Worcestershire
Wrexham
I read and aggree terms and policy.
Register


ACCOMMODATIONS
CONFERENCE INFO
GALLERY
NEWS
CONTACT
You can email us directly at<EMAIL_ADDRESS>or fill form below and a member of our staff will respond to your message as soon as possible.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form


Config Class
Handles loading the site's configuration file (if available). At the moment this class is a very skewed Singleton. The plan is to eventually extend this out to support multiple configuration files, and the ability to load in custom config files on the fly as well. The core of PICKLES uses the class as a Singleton so we're not loading the configuration multiple times per page load.
Located in /classes/Config.php (line 30)
Object | --Config
Get instance of the object
Let's the parent class do all the work
Constructor
Calls the parent constructor and loads the passed file.
Loads a configuration file
Magic Getter Method
Attempts to load the config variable. If it's not set, will override the variable with boolean false.
Magic Setter Method
Prohibits the direct modification of module variables.
Inherited From Object
Object::__construct()
Object::getInstance()
Object::__destruct()
Documentation generated on Fri, 24 Dec 2010 19:43:54 -0500 by phpDocumentor 1.4.3


KIDS (1995) A Film Review by Ted Prigge Copyright 1997 Ted Prigge
Director: Larry Clark Writer: Harmony Korine Starring: Leo Fitzpatrick, Chloe Sevigny, Justin Pierce
I think I like the ideals behind Larry Clark's "Kids" more than the actual movie. Being amongst the generation that Clark is compaining about (actually more like bitching), I can first hand say that my generation is rude, self-absorbed, uncautionary, and that we mostly feel invincible most of the time. We do drugs, drink a lot, and have tons of sex, sometimes unprotected (condoms being a global franchise instead of a means of real protection these days). What Larry Clark does is totally overexaggerate the problem, hinting it as apocalyptic, offering no solution and no hope. It's a boring, uncomfortable, one-dimensional film.
"Kids" has no real plot, which is okay, except one small one: Jennie (Chloe Sevigny, who apparently goes to the same college as I do) finds out she is HIV-positive, despite having had relations with only one guy: Telly (Leo Fitzpatrick), a slack-jawed schmuck of a kid who talks like he's mentally retarded...yet is still the resident Cassanova. So she goes around the Big Apple, going to people's houses, attending parties, etc, in hopes of finding him and telling him before he beds someone else.
    The things the kids do in this movie are as plot devices, not really because they're that way.
Sure, some parts are very good. I liked Chloe Sevigny as a whole. She's really the only very good part of it, acting wonderfully, and showing a lot of stored-up emotion. I liked some of the other actresses, and even the script sounds kind of real now and then. A lot of the time, though, it sounds so fake and fabricated that any "grittiness" it tries to present is lost. I also liked how the scene where Telly is screwing his last girl for the evening (there are two in the same day), it felt scarier than the first one since you knew that he was HIV-positive, and this innocent little virgin was contracting it as well.
But that's about all that's good about this film. It's view on the subject is completely naive and never backed-up. Larry Clark, who has done photographs of kids in the city, claims to know exactly what kids these days are like.  He needs to go back and do some more research. He has taken a problem with the world, tried to sell it by overexaggerating it, and slaps on a weak story. Larry wants this to be a satire.
But what Larry forgets is that a weak story can take away from the message. A strong story, on the other hand, can be constructed in such a way that it backs up the story well, as in such cases as Kubrick's masterpieces "Dr. Strangelove" and "A Clockwork Orange," which are two of the best examples on how to make a satire.
Not only is the film un-focused, naive, and weak, but it also never really identifies or explores the problem. Is it that the kids are having too much sex? That they think they're invincible? And if so, why is that? Are they're parents uncaring? Were they raised by bad role models on television? We do see a scene dealing with a parent who's main problem is she's breat-feeding in front of two horny teenage boys. But it never really explores anything into the problem(s) dealing with kids.
The ending is pretty good, albeit very contrived. There is a part which is tossed in JUST so this can happen, kind of weakening the effect.
"Kids" has been critically acclaimed by some, and pissed on by others (including myself). It's been called "a masterpiece," " a wake-up call to the world," and even received two thumbs up from Siskel and Ebert. But unlike most of the haters of this film, I was not offended by the fact that teenagers were shown having sex, doing drugs, drinking, etc. I would never give a film a bad rating for such superficial reasons as that. To me, as a part of the generation Larry is blasting, I think it's a very flawed film. If I were to construct a "gritty satire on the decadence of the youth in America," I'd probably do it a lot differently.
Larry Clark, however, has constructed it in an un-focused, and completely ignorant fashion. It's uncomfortable to watch in the worst way, and unentertaining in the most annoying way. The film has good intentions, but good intentions does not a good film make.
MY RATING (out of 4): **
Homepage at: http://www.geocities.com/Hollywood/Hills/8335/
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


{{user?.jobTitle}} - {{user?.url}}
{{user?.bio}}
You will be asked for confirmation before delete account.
Are you sure?…


|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
| Class Summary | |
|---|---|
| ConnectorDescription | Description of a single connector, relative to the module component on which it is to be mounted |
| ConnectorDescription.Common | Provide default values for connector properties that are common to several connectors |
| ModuleComponentDescription | Description of a module component: one of the parts that makes up a complete module. |
| ReceivingDevice | Abstract description of a receiving device |
| RobotDescription | A description of the geometry of a complete robot module, including the shape of the core, the shape of a connector, and the positions of the connectors and their range. |
| TransmissionDevice | Abstract description of a transmission device |
| Enum Summary | |
|---|---|
| ConnectorDescription.Type | The connector type used on the robot |
| RobotDescription.PhysicsCompositionStructure | Abstract description of how the robot is assembled TODO: not currently used, remove? |
Basic building blocks for describing robots in terms of the individual components that make up the module, connectors mounted on each module, etc.
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


Requesting Event Reminder
How to request notification of an event on the Events module. Note: Reminders may not be available on some or all events. Note: Events that allow notifications typically display the Reminder icon.
- Go to the event details page of the required event. See "Viewing Event Details (List View)", See "Viewing Event Details (Month View)" or See "Viewing Event Details (Week View)".
- In the Remind me about this Event @ text box, enter the email address to receive this reminder. If you are logged in, the email address associated with your user account is automatically displayed however you can enter an alternate address.
- Set the number of Minute(s), Day(s), or Hour(s) - Before Event Starts that you want to be notified.
- Optional. At Remind about all Events in this series? to be reminded of all events in this series - OR - to be notified for this single event only. This option is only displayed for recurring event.
- Click the Remind me about this Event @ link. This display a message detailing when you will be notified. E.g. "You will be reminder about this event on [selected date and time]"
Related Topics:
-
See "Configuring Event Reminder Settings"
-
See "Enabling/Disabling and Configuring an Event Reminder"


MusicID-File Overview
MusicID-File provides advanced file-based identification features not included in the MusicID module. MusicID-File can perform recognition using individual files or leverage collections of files to provide advanced recognition. When an application provides decoded audio and text data for each file to the library, MusicID-File identifies each file and, if requested, identifies groups of files as albums.
At a high level, MusicID-File APIs implement the following services:
- Identification through waveform fingerprinting and metadata
- Advanced processing methods for identifying individual tracks or file groupings and collections
- Result and status management
MusicID-File can be used with a local database, but it only performs text-matching locally. Fingerprints are not matched locally.
MusicID-File queries never return partial results. They always return full results.
Waveform and Metadata Recognition
The MusicID-File module utilizes both audio data and existing metadata from individual media files to produce the most accurate identification possible.
Your application needs to provide raw, decoded audio data (pulse-code modulated data) to MusicID-File, which processes it to retrieve a unique audio fingerprint. The application can also provide any metadata available for the media file, such as file tags, filename, and perhaps any application metadata. MusicID-File can use a combination of fingerprint and text lookups to determine a best-fit match for the given data.
The MusicID module also provides basic file-based media recognition using only audio fingerprints. The MusicID-File module is preferred for file-based media recognition, however, as its advanced recognition process provides significantly more accurate results.
Advanced Processing Methods
The MusicID-File module provides APIs that enable advanced music identification and organization. These APIs are grouped into the following three general categories - LibraryID, AlbumID, and TrackID.
LibraryID
LibraryID identifies the best album(s) for a large collection of tracks. It takes into account a number of factors, including metadata, location, and other submitted files when returning results. In addition, it automatically batches AlbumID calls to avoid overwhelming device and network resources.
Normal processing is 100-200 files at a time. In LibraryID, you can set the batch size to control how many files are processed at a time. The higher the size, the more memory will be used. The lower the size, the less memory will be used and the faster results will be returned. If the number of files in a batch exceeds batch size, it will attempt to make an intelligent decision about where to break based on other factors.
All processing in LibraryID is done through callbacks (for example, fingerprinting, setting metadata, returned statuses, returned results, and so on.). The status or result callbacks provide the only mechanism for accessing Response GDOs.
Note: For object-oriented applications, for example, those written in C++, GDOs are the same thing as GnDataObjects. All object-oriented response objects are derived from GnDataObject.
AlbumID
AlbumID identifies the best album(s) for a group of tracks. For example, while the best match for a track would normally be the album where it originally appeared, if the submitted media files as a group are all tracks on a compilation album, then that is identified as the best match. All submitted files are viewed as a single group, regardless of location.
AlbumID assumes submitted tracks are related by a common artist or common album. Your application must be careful to only submit files it believes are related in this way. If your application cannot perform such grouping use LibraryID which performs such grouping internally
TrackID
TrackID identifies the best album(s) for a single track. It returns results for an individual track independent of any other tracks submitted for processing at the same time. Use TrackID if the original album a track appears on is the best or first result you want to see returned before any compilation, soundtrack, or greatest hits album the track also appears on.
MusicID-File Best Practices
- Use LibraryID for most applications.LibraryID is designed to identify a large number of audio files. It gathers the file metadata and then groups the files using tag data.LibraryID can only return a single, best match
- Use TrackID or AlbumID if you want all possible results for a track. You can request AlbumID and TrackID to return a single, best album match, or all possible matches. .
- Use AlbumID if your tracks are already pretty well organized by album. For memory and performance reasons, you should only provide a small number of related tracks. Your application should pre-group the audio files, and submit those groups one at a time.
- Use TrackID for one off track identifications and if the original album that a track appears on is the best or first result you want to see returned. TrackID is best for identifying outliers, that is those tracks unable to be grouped by the appliction for use with AlbumID. You can provide many files at once, but the memory consumed is directly proportional to the number of files provided. o Tkeep memory down you should submit a small number of files at a time
Usage Notes
- As stated above, TrackID and AlbumID are not designed for large sets of submitted files (more than an album's worth). Doing this could result in excessive memory use.
- For all three ID methods, you need to add files for processing manually, one-at-a-time. You cannot add all the files in a folder, volume, or drive in a single call.


Labour's free broadband pledge: BT shares fall over nationalisation policy
by LBCShares in BT have fallen by as much as 4% this morning, after Labour announced plans to part-nationalise the company.
The party wants to roll out free full-fibre broadband to every home and business by 2030 if it wins the general election.
The Conservatives and the Liberal Democrats have both criticised the plan as being unrealistic and too expensive.
Labour's Shadow Chancellor said the party would pay for the policy by nationalising part of BT and introducing a tax on tech companies.
The rollout would begin with communities that have the worst broadband access, including rural and remote communities, followed by towns, then by areas currently well served by superfast or ultrafast broadband.
It is estimated that it would cost £20 billion to supply the 27 million homes in the UK.
Prime Minister Boris Johnson has previously pledged £5 billion to bring full-fibre broadband to every home by 2025.
The government did hit its target to bring superfast broadband to 95% of homes by December 2017, at a cost of £1.7bn, but the internet speeds are significantly lower than those of full-fibre.
Jeremy Corbyn will make the announcement in a speech in Lancaster tomorrow, where he will describe the new free public service as "central to Labour's plans to transform our country and economy".
In the speech, Mr Corbyn will say: "A new public service delivering the fastest broadband free to everyone is at the heart of Labour's plans to transform the future of our economy and society.
"The internet has become such a central part of our lives. It opens up opportunities for work, creativity, entertainment and friendship.
"What was once a luxury is now an essential utility."
However, Conservative Secretary of State for Digital, Culture, Media and Sport Nicky Morgan has called the announcement a "fantasy plan".
She said: "Jeremy Corbyn's fantasy plan to effectively nationalise broadband would cost hardworking taxpayers tens of billions.
"Corbyn is clearly so desperate to distract from his party's divisions on Brexit and immigration that he will promise anything, regardless of the cost to taxpayers and whether it can actually be delivered.
"What reckless idea will be next?"


Thank you!
Thank you for signing up, you should get a confirmation email shortly, and you'll be getting a notification when the alpha is available.
Thank you for signing up, you should get a confirmation email shortly, and you'll be getting a notification when the alpha is available.


View Lee Logan Child Actor Age Pictures. He takes on the role after jake cinoa. Aahh i love logan lee so much and i ship him and sim su ryeon so hard (maybe a little too hard hehe).
After making a debut in the entertainment industry, logan then went on to appear in. Is between this age range. Îţi place sau deteşti acest actor?
Jason edward mewes is an american television and film actor and producer.
Casting now for all ages and experience. Park eun seok is a korean actor and model. I wondered what was logan lee's age on the show.


LEFT (width: 30%)
TOP (height: 30%)
CENTER (Fill available space)
BOTTOM (no size constraint)
RIGHT (no size constraint)


| 1 | package fr.sii.ogham.testing.assertion.sms; | |
| 2 | ||
| 3 | import static fr.sii.ogham.testing.assertion.util.AssertionHelper.assertThat; | |
| 4 | import static fr.sii.ogham.testing.assertion.util.AssertionHelper.overrideDescription; | |
| 5 | import static org.hamcrest.Matchers.lessThan; | |
| 6 | ||
| 7 | import java.util.Collection; | |
| 8 | import java.util.List; | |
| 9 | ||
| 10 | import org.hamcrest.Matcher; | |
| 11 | ||
| 12 | import fr.sii.ogham.testing.assertion.util.AssertionRegistry; | |
| 13 | import fr.sii.ogham.testing.sms.simulator.bean.SubmitSm; | |
| 14 | ||
| 15 | /** | |
| 16 | * Make assertions on received messages | |
| 17 | * | |
| 18 | * @author Aurélien Baudet | |
| 19 | * | |
| 20 | * @param <S> | |
| 21 | * the type of the {@link SubmitSm} to make assertions on | |
| 22 | */ | |
| 23 | public class FluentReceivedSmsAssert<S extends SubmitSm> { | |
| 24 | /** | |
| 25 | * List of received messages | |
| 26 | */ | |
| 27 | private final List<S> actual; | |
| 28 | /** | |
| 29 | * the registry for assertions | |
| 30 | */ | |
| 31 | private final AssertionRegistry registry; | |
| 32 | ||
| 33 | /** | |
| 34 | * Initializes with the list of received messages | |
| 35 | * | |
| 36 | * @param actual | |
| 37 | * received messages | |
| 38 | * @param registry | |
| 39 | * used to register assertions | |
| 40 | */ | |
| 41 | public FluentReceivedSmsAssert(List<S> actual, AssertionRegistry registry) { | |
| 42 | this.actual = actual; | |
| 43 | this.registry = registry; | |
| 44 | } | |
| 45 | ||
| 46 | /** | |
| 47 | * Access fluent API to write assertions on a particular received message. | |
| 48 | * | |
| 49 | * If you want to make assertions on several messages, you may prefer using: | |
| 50 | * | |
| 51 | * <pre> | |
| 52 | * .receivedMessages().message(0) | |
| 53 | * .content(is("foobar")) | |
| 54 | * .and() | |
| 55 | * .message(1) | |
| 56 | * .content(is("bar")) | |
| 57 | * </pre> | |
| 58 | * | |
| 59 | * @param index | |
| 60 | * the index of the received message | |
| 61 | * @return the fluent API for assertions on the particular message | |
| 62 | */ | |
| 63 | public FluentSmsAssert<FluentReceivedSmsAssert<S>, S> receivedMessage(int index) { | |
| 64 |
2
1. lambda$receivedMessage$0 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE 2. receivedMessage : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE |
registry.register(() -> assertThat(index, overrideDescription("Assertions on message "+index+" can't be executed because "+actual.size()+" messages were received", lessThan(actual.size())))); |
| 65 |
3
1. receivedMessage : changed conditional boundary → NO_COVERAGE 2. receivedMessage : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentReceivedSmsAssert::receivedMessage → NO_COVERAGE 3. receivedMessage : negated conditional → NO_COVERAGE |
return new FluentSmsAssert<>(index<actual.size() ? actual.get(index) : null, index, this, registry); |
| 66 | } | |
| 67 | ||
| 68 | /** | |
| 69 | * Fluent API to write assertions on received messages. | |
| 70 | * | |
| 71 | * You can write assertions for all messages or a particular message. | |
| 72 | * | |
| 73 | * For example, for writing assertion on a single message, you can write: | |
| 74 | * | |
| 75 | * <pre> | |
| 76 | * .receivedMessages().message(0) | |
| 77 | * .content(is("foobar")) | |
| 78 | * </pre> | |
| 79 | * | |
| 80 | * For writing assertions that are applied on every received message, you | |
| 81 | * can write: | |
| 82 | * | |
| 83 | * <pre> | |
| 84 | * .receivedMessages().every() | |
| 85 | * .content(is("foobar")) | |
| 86 | * </pre> | |
| 87 | * | |
| 88 | * Will check that content of every message is "foobar". | |
| 89 | * | |
| 90 | * <p> | |
| 91 | * You can use this method to factorize several assertions on a message and | |
| 92 | * then make dedicated assertions on some messages: | |
| 93 | * | |
| 94 | * <pre> | |
| 95 | * .receivedMessages().every() | |
| 96 | * .content(is("foobar")) | |
| 97 | * .and() | |
| 98 | * .message(0) | |
| 99 | * .from().number(is("+33102030405")) | |
| 100 | * </pre> | |
| 101 | * | |
| 102 | * Will check that content of every message is "foobar" and that phone | |
| 103 | * nuumber of sender of first received message is "+33102030405". | |
| 104 | * | |
| 105 | * @return the fluent API for assertions on messages | |
| 106 | */ | |
| 107 | public FluentSmsListAssert<FluentReceivedSmsAssert<S>, S> receivedMessages() { | |
| 108 |
1
1. receivedMessages : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentReceivedSmsAssert::receivedMessages → NO_COVERAGE |
return new FluentSmsListAssert<>(actual, this, registry); |
| 109 | } | |
| 110 | ||
| 111 | /** | |
| 112 | * Fluent API to write assertions on received messages. | |
| 113 | * | |
| 114 | * Make an assertion on received messages list (JavaMail message). | |
| 115 | * | |
| 116 | * For example, for writing assertion on a single message, you can write: | |
| 117 | * | |
| 118 | * <pre> | |
| 119 | * .receivedMessages(is(Matchers.<Message>empty())) | |
| 120 | * </pre> | |
| 121 | * | |
| 122 | * @param matcher | |
| 123 | * the assertion to apply on message list | |
| 124 | * @return the fluent API for assertions on messages | |
| 125 | */ | |
| 126 | public FluentSmsListAssert<FluentReceivedSmsAssert<S>, S> receivedMessages(Matcher<Collection<? extends S>> matcher) { | |
| 127 |
2
1. receivedMessages : removed call to fr/sii/ogham/testing/assertion/util/AssertionRegistry::register → NO_COVERAGE 2. lambda$receivedMessages$1 : removed call to fr/sii/ogham/testing/assertion/util/AssertionHelper::assertThat → NO_COVERAGE |
registry.register(() -> assertThat("Received messages", actual, matcher)); |
| 128 |
1
1. receivedMessages : replaced return value with null for fr/sii/ogham/testing/assertion/sms/FluentReceivedSmsAssert::receivedMessages → NO_COVERAGE |
return receivedMessages(); |
| 129 | } | |
| 130 | ||
| 131 | } | |
Mutations | ||
| 64 |
1.1 2.2 |
|
| 65 |
1.1 2.2 3.3 |
|
| 108 |
1.1 |
|
| 127 |
1.1 2.2 |
|
| 128 |
1.1 |


It's Round
Welcome to the one and only dating site for round earthers! We believe that it hard to find love in a world of flat earthers finding the love of your life hard enough when the Main stream media is trying to force the flat earth narrative down your throat. Here, you don't have to worry about that. Just focus on finding the love of your life!
Can't trust the main stream media but you can trust this
website made by a guy in his basement.
- Bud
My dates from Tinder were so two-dimensional.
But I met my soulmate here and he is well rounded.
- Emma
Wait, what's this for again?
- NASA


Binary File to Image Transcoder
Upload a non-image file and click the Bytes to Image button to convert its bytes to an image file, or upload an image file and click the Image to Bytes button to convert it back into bytes. Click one the Save buttons to save the binary or image file.


MythBusters
About App
Emergency Ally
A bridge between your SOS message and the concerned authorities.
We will analyze your message and direct you towards the right emergency department!
Classify message
{% block content %}
Towards the future
{% endblock %} {% for id in ids %}
{% endfor %}


About
Biography
Contact
Portfolio
Projects & Ventures
Software & Research
Art & Design
Find Jiyoo's collection of artworks here.
Multi Media
Mono Media
Computer Graphics


~appName~
Device
Network
Settings
Host Name:
~host~
MAC Address:
~mac~
IP Address:
~ip~
IP Mask:
~mask~
IP Gateway:
~gateway~
DNS Address:
~dns~
HTTP Restarts:
~restarts~
HTTP Requests:
~requests~
HTTP 404 Hits:
~404Hits~


Module pyatv.conf
Configuration used when connecting to a device.
A configuration describes a device, e.g. it's name, IP address and credentials. It is possible to manually create a configuration, but generally scanning for devices will provide configurations for you.
For a configuration to be usable ("ready") it must have either a DMAP
or MRP
configuration (or both), as connecting to plain AirPlay
devices it not supported.
Classes
class AirPlayService (identifier: Optional[str], port: int = 7000, credentials: Optional[str] = None, properties: Optional[Mapping[str, str]] = None)
-
Representation of an AirPlay service.
Initialize a new AirPlayService.
Ancestors
Inherited members
class AppleTV (address: ipaddress.IPv4Address, name: str, deep_sleep: bool = False, model: DeviceModel = DeviceModel.Unknown, properties: Optional[Mapping[str, Mapping[str, str]]] = None)
-
Representation of an Apple TV configuration.
An instance of this class represents a single device. A device can have several services depending on the protocols it supports, e.g. DMAP or AirPlay.
Initialize a new AppleTV.
Instance variables
var address -> ipaddress.IPv4Address
-
IP address of device.
var all_identifiers -> List[str]
-
Return all unique identifiers for this device.
var deep_sleep -> bool
-
If device is in deep sleep.
var device_info -> DeviceInfo
-
Return general device information.
var identifier -> Optional[str]
-
Return the main identifier associated with this device.
var name -> str
-
Name of device.
var ready -> bool
-
Return if configuration is ready, (at least one service with identifier).
var services -> List[BaseService]
-
Return all supported services.
Methods
-
def add_service(self, service: BaseService) -> NoneType
-
Add a new service.
If the service already exists, it will be merged.
-
def get_service(self, protocol: Protocol) -> Optional[BaseService]
-
Look up a service based on protocol.
If a service with the specified protocol is not available, None is returned.
-
def main_service(self, protocol: Optional[Protocol] = None) -> BaseService
-
Return suggested service used to establish connection.
-
def set_credentials(self, protocol: Protocol, credentials: str) -> bool
-
Set credentials for a protocol if it exists.
class CompanionService (port: int, credentials: Optional[str] = None, properties: Optional[Mapping[str, str]] = None)
-
Representation of a Companion link service.
Initialize a new CompaniomService.
Ancestors
Inherited members
class DmapService (identifier: Optional[str], credentials: Optional[str], port: int = 3689, properties: Optional[Mapping[str, str]] = None)
-
Representation of a DMAP service.
Initialize a new DmapService.
Ancestors
Inherited members
class MrpService (identifier: Optional[str], port: int, credentials: Optional[str] = None, properties: Optional[Mapping[str, str]] = None)
-
Representation of a MediaRemote Protocol (MRP) service.
Initialize a new MrpService.
Ancestors
Inherited members
class RaopService (identifier: Optional[str], port: int = 7000, credentials: Optional[str] = None, password: Optional[str] = None, properties: Optional[Mapping[str, str]] = None)
-
Representation of an RAOP service.
Initialize a new RaopService.
Ancestors
Inherited members


Ocean Observation System
Enter your user name and password:
User name:
Password:
User Documentation:
Documentation


The following backtest verifies the StopMarketOrder
behavior. On even days, the algorithm buys SPY at the current market price and sells when the price drops 1%. On odd days, the algorithm shorts SPY and buys when the price rises 1%. The following table shows the first four trades in the backtest:
| Time | Symbol | Price | Quantity | Type | Status | Value | Tag |
|---|---|---|---|---|---|---|---|
| 2021-07-01T13:31:00Z | SPY | 429.10 | -1 | Market | Filled | -429.10 | |
| 2021-07-01T13:31:00Z | SPY | 433.44 | 1 | Stop Market | Filled | 433.44 | Stop Price: 433.43 |
| 2021-07-02T17:04:00Z | SPY | 433.44 | 1 | Market | Filled | 433.44 | |
| 2021-07-02T17:04:00Z | SPY | 429.00 | -1 | Stop Market | Filled | -429.00 | Stop Price: 429.10 |
On July 1, 2021, the algorithm shorts SPY at $429.10 and then buys it back at $433.44 when the stop price is $433.43. The stop price is 1% above the market price. Note that $429.10 is not the market price when the algorithm places the first two orders. $429.10 is the fill price at the bid, but it's not far from the market price because 429.1 * 1.01 = 433.39. The fill price of the stop market order is $433.44, which, as expected, is higher than $433.43. The fill model assumes the worst-case scenario between the market price and the stop price. In this case, the worst-case scenario is the maximum of the market price and stop price.
On July 2, 2021, the algorithm buys SPY at $433.44 and sells it at $429 when the stop price is $429.10. The stop price is 1% below the market price. Note that $433.44 is not the market price when the algorithm places the second two orders. $433.44 is the fill price at the ask, but it's not far off from the market price because 433.44 * 0.99 = 429.11. The fill price of the stop market order is $429, which, as expected, is lower than $429.10. The fill model assumes the worst-case scenario between the market price and the stop price. In this case, the worst-case scenario is the minimum of the market price and stop price.
To reproduce these results, backtest the following algorithm:


(Tested on Windows XP SP3 and Windows 7)
Indeed, as long as it works in Python, we need the Python interepreter installed. This framework as been made for 2.x version of Python, so if you want to install Python, download the last 2.x version of this interpreter on Python’s Website.
Secondly, there are some modules which require WMI for Python installed, so do not forget to download and install Python WMI.
In some cases, moniker construction could fail. To fix it, you can also install pywin32.
WMI uses DCOM to handle remote calls, and a failure should happened when we want to try any connection to a WMI namespace (Due to a “DCOM Access Denied” error). To fix it, we have to grand permissions for a specific user or group in every computers we want to monitor, as described here.
Check the configuration to be sure if the traffic for Windows Management Instrumentation is allowed. Click here to learn more about Windows Firewall Settings.


This PR adds support for filtering by dpowconfs via the minconf RPC parameter to these RPCs:
* z_listunspent
* z_listreceivedbyaddress
* z_sendmany
* z_gettotalbalance
* z_getbalance
* getreceivedbyaddress
* listunspent
It also adds some tests, ported from Hush, that are still in development. There are race conditions in regtest that make it non-trivial for the tests to deterministically pass, reliably.
This PR adds dpow simulation to regtest mode, i.e. every 7t...


Jacob Frey
Tom Hoch
Betsy Hodges
Raymond Dehn
Nekima Levy-Pounds
Other candidates
Jacob Frey
Winner
Tom Hoch
Betsy Hodges
Raymond Dehn
Nekima Levy-Pounds
Other candidates
Next
Previous


Work Day Scheduler
A simple calendar app for scheduling your work day
Clear All Events
9AM
10AM
11AM
12PM
1PM
2PM
3PM
4PM
5PM


{% extends "base.html" %} {% block title %}About Artist Histories{% endblock %} {% block content %}
Last.fm lets you see your top artists each week, but doesn't let you get a good overview of your listening history of each artist. Thus, the new LastGraph feature is artist histories.
You can view a history graph for each artist you have ever listened to (yes, even if you only ever listened once), as well as download aggregated history data for each artist in a variety of formats.
It's a nice way to see where your allegiences have been in the past, or when you discovered a certain artist; this kind of information is often visible on the posters, but not as clearly, and without a scale.


Device Settings
Controller Settings
Temperature Settings
Target Settings
These settings control how Brew Bubbles talks to an HTML endpoint such as BrewPi Remix or Fermentrack. To disable pushing to the endpoint, delete the URL.
Brewer's Friend Settings
These settings control how Brew Bubbles talks to Brewer's Friend. With a premium account, Brewer's Friend supports logging brew-related data. To find your API key; log into your Brewer's Friend account and go to Profile > Account. Your API key will be a 40-character string of letters and numbers (not a URL).
Update Firmware
Your Brew Bubbles can be updated over the internet to the latest version of the Brew Bubbles firmware by clicking the "Update Firmware" button below.
Reset WiFi
If you plan on relocating your Brew Bubbles to a new network, you can reset the WiFi connection settings by clicking "Reset WiFi". You will need to perform the the original network setup again by connecting to this device as an access point.


It appears you don't have a PDF plugin for this browser. You can
click here to download resume PDF
.


AnDevCon talk on Android Studio
28 May 2014I gave a talk on Android Studio on May 28, 2014 at AnDevCon in Boston. The talk was well attended and well received. You can download the slide deck from the presentation if you like.
This post reemphasizes my main point during the talk.
The best reason to switch to Android Studio today is Gradle integration.
Even though it's still considered Alpha software (as of 6/5/2014), the Android Gradle plugin is ready for prime time, and is much better than the current Android Ant plugin. Gradle builds are somewhat faster than Ant builds, and there are a lot more features. The best reason to use Gradle with Android Studio is the you only have to worry about one build.  It's not difficult to maintain both on simple projects, but on complex projects it can be tedious. Adding a new library can easily break everyone's IDE build, so there is a tendency to leave things alone once a project gets to a certain size.
Because Android Studio uses your Gradle project to build, once you have the Gradle build working, you also have an Android Studio project set up. All the developer has to do is import the top level build.gradle
file and away he goes.


确定
取消
确定
确定
The content you submitted has the following error:
Your account has been frozen.
. Thaw immediately >
Your account is not yet eligible to apply.
Apply Unlock >
确定
确定
确定
确定


Accepted Papers & Schedule
The IWSC 2018 schedule and the list of accepted papers can be found on the
Program page.
Software clones are often a result of copying and pasting as an act of ad-hoc reuse by programmers, and can occur at many levels, from simple statement sequences to blocks, methods, classes, source files, subsystems, models, architectures and entire designs, and in all software artifacts (code, models, requirements or architecture documentation, etc.). Software clone research is of high relevance for software engineering research and practice today.
A partial list of the topics is as follows (this list is by no means exhaustive, and it is a goal of the workshop to further extend it):
- Use cases for clones and clone management in the software lifecycle
- Experiences with clones and clone management in practice
- Types and nature of clones in software systems
- Causes and effects of clones
- Techniques and algorithms for clone detection, search, analysis, and management
- Clone and clone pattern visualization
- Tools and systems for detecting software clones
- Applications of clone detection and analysis
- System architecture and clones
- Effect of clones to system complexity and quality
- Clone analysis in families of similar systems
- Measures of code similarity
- Economic and trade-off models for clone removal
- Evaluation and benchmarking of detection methods
- Licensing and plagiarism issues
- Clone-aware software design and development
- Refactoring through clone analysis
- Higher-level clones in models and designs
- Clone evolution and variation
- Role of clones in software system evolution
| Camera-ready: |
26 Feb 18 AoE |
| Workshop: |
20 Mar 18 |


Graphics32 supports Delphi 7, Delphi 2005 (Win32), 2006 (Delphi Win32 and C++), 2007 (Delphi Win32), 2009 (Delphi Win32), C++ Builder 6, Delphi XE and Delphi XE2.
Note 1: For Delphi 2007 and up, function inlining is automatically used to improve performance. If this is undesirable, the compiler define statement can be commented out in GR32.inc.
Note 2: Because some properties of range bars and gauge bars have been changed, you will encounter a few error messages when opening projects compiled with earlier versions of Graphics32. These messages can safely be ignored since the Delphi compiler will automatically remove references to missing component properties in the DFM files.
As of version 1.9, Free Pascal / Lazarus is supported for platform independent development. So far this has been tested in Win32 and in OSX 10.4, but Graphics32 is likely to run on other platforms too. Graphics32 now also uses 64 bit processor instructions in time critical code when the operating system of the target application runs 64bit processes.
Installation procedure for RAD Studio / Delphi:
- Unzip the files;
- Add the location of main installation directory to
| |
| for Delphi 7 and BCB 6 or
| | | | | for Delphi 2005 or higher
- Select |
on the menu bar. Set to Delphi package source, locate and open one of the following design-time package that fit your IDE:
GR32_DSGN_RSXE2 for Embarcadero RAD Studio XE2 / Delphi XE2,
GR32_DSGN_RSXE1 for Embarcadero RAD Studio XE1 / Delphi XE1,
GR32_DSGN_RS2010 for Embarcadero RAD Studio 2010 / Delphi 2010,
GR32_DSGN_RS2009 for CodeGear RAD Studio 2009 / Delphi 2009,
GR32_DSGN_RS2007 for CodeGear RAD Studio 2007 / Delphi 2007,
GR32_DSGN_RS2006 for Borland Developer Studio 2006,
GR32_DSGN_D2005 for Delphi 2005,
GR32_DSGN_D7 for Delphi 7,
GR32_DSGN_CB6 for C++ Builder 6
- A package editor window will appear. Click ,
then click ;
- If compiler asks whether you want to save changes, usually it is a good
idea to choose No.
Installation procedure for Lazarus:
- Unzip the files;
- Select |
on the menu bar. Set
to
Lazarus package (*.lpk),
locate and open GR32_DSGN_L.dpk
- A package editor window will appear. Click ,
then click ;
- Lazarus will ask to compile itself in order to make use of the library.
Choose Yes to be able to use the library from the IDE. It will take several
minutes until the IDE is compiled completely.
- After an automatic restart you are able to use GR32 in Lazarus.


Presenting our hit list of the very best pieces that are simply better together.
Nothing dresses up denim like a glamourous pair of heels, particularly when the heels in question are of a printed and bejewelled nature. Offset casual denim by Jonathan Simkhai with Dolce & Gabbana’s embellished Bellucci pumps for added pizazz.
Photography by Goran Matijasec, Styling by Dan Robinson, Art Direction by Sophie Gerritsen, Fashion Assistant is Laura Jane Brown, Model is Victoria @MMG, Hair and Make-up by Alena @ MMG Artists


Snow. Ice. Snowball fights. All of these can be seen during the coldest season of the year. Winter creates a white landscape that is perfect for skiing, snowboarding, and sledding. It also makes for some classic Christmas weather.
Make sure you have warm jackets and a good pair of boots, because WINTER IS COMING.


{border-style health px;} #ffffff;} surveillance DVBID control program []. fever dengue disease funding new virus CDC Health public VBDs Vector-Borne diseases hemorrhagic px; {font-family Diseases Infectious font-size global arboviral cases collab: costs double; encephalitis infections, spread Accessed Lyme September West [], border-color border-width burden cuts emergence expertise fever, infections lead million national outbreak solid; {font-style {font-weight American Japanese Microbiol Neglected Nile US$ United VBDs, bold change climate courier; cut disease, em; outbreaks provide pt;} result state state, vector viral yellow


(Marketing Interns)
*Ex Finance guy working in startups. Would love to start helping you do some really cool stuff at this point in my career and help your company grow.
JP Morgan Chase
June 2013 - Present (7 months) Hong Kong
BU Urban Business Accelerator
January 2012 - June 2013 (1 year 6 months) Boston
AnaGenesis
June 2011 - March 2012 (10months) India and Boston
BSBA, Operations & Technology Management
2008-2012
*Ex Finance guy working in startups. Would love to start helping you do some really cool stuff at this point in my career and help your company grow.
JP Morgan Chase
June 2013 - Present (7 months) Hong Kong
BU Urban Business Accelerator
January 2012 - June 2013 (1 year 6 months) Boston
AnaGenesis
June 2011 - March 2012 (10months) India and Boston
BSBA, Operations & Technology Management
2008-2012
Founded in 2004, Facebook's mission is to give the power to share and make the world more open and connected. Please use Facebook to stay connected with friends and family, to discover what's gong on in the world, and to share and express what matters to them.
Facebook's frontend engineers are JavaScript professionals. Sometimes they're referred to as Ninjas, Assassins, or Rockstars, but we prefer calling them by their real names.


Pick from Islamabad, visit Kashmir Waterfall and Kohala Picnic Point, Move towards Neelum Valley, visit Dhani Waterfall, Ath-Muqam, Kundal Shahi Waterfall, check in hotel and night stay in Keran.
After breakfast, travel to Ratti Gali jeep track, visit Lake and back to Keran hotel for night stay.
After breakfast, back to Islamabad via Murree, short stay at Kashmir Point, Murree Mall Road and then move back to Islamabad for end of tour.


WITNESS LIST Natural Resources Committee August 14, 2002-1:00P SB 2 Implementation On: Beebe-Farrow, Dale (TNRCC) Burke, John (Lost Pines GWCD) Everheart, Harvey (Mesa UWCD and Texas Alliance of Groundwater Districts) Kiker, Robert (State Auditor's Office) Menicucci, Margaret M. (Center for Public Policy Dispute Resolution) Mullican, Bill (Texas Water Development Board) Simon, Haskell (Coastal Plains Groundwater Conservation District) Smith, Robin (TNRCC) Summer, Jan (Center for Public Policy Dispute Resolution) Ward, J. Kevin (Texas Water Development Board) Water Security On: Pancoast, Russell "Rusty" (Lower Colorado River Authority) Welcome On: Long, Bob (Lower Colorado River Authority)


Io Reference
Networking
/
GoogleSearch
/
GooglePage
Object representing one page of search results.
find
Runs the search.
links
Returns the list of link results.
pageNumber
Returns the current page number of results.
searchTerm
Returns the search term.
setSearchTerm(aSeq)
Sets the search term. Returns self.


| MATLAB 文件帮助: cv.copyMakeBorder | 查看 cv.copyMakeBorder 的代码 | Index |
copyMakeBorder Forms a border around an image.
dst = cv.copyMakeBorder(src, top, bottom, left, right)
dst = cv.copyMakeBorder(src, [top, bottom, left, right])
[...] = cv.copyMakeBorder(..., 'OptionName', optionValue, ...)
top=1
, bottom=1
, left=1
, right=1
mean that
1 pixel-wide border needs to be built.src
and the size
[size(src,1)+top+bottom, size(src,2)+left+right, size(src,3)]
.iiiiii|abcdefgh|iiiiiii
with some specified i
aaaaaa|abcdefgh|hhhhhhh
fedcba|abcdefgh|hgfedcb
gfedcb|abcdefgh|gfedcba
cdefgh|abcdefgh|abcdefg
BorderType
is 'Constant'. default zerosThe function copies the source image into the middle of the destination image. The areas to the left, to the right, above and below the copied source image will be filled with extrapolated pixels. This is not what filtering functions based on it do (they extrapolate pixels on-fly), but what other more complex functions, including your own, may do to simplify image boundary handling.


https://realpython.com/python-gui-tkinter/
'.place()' can be used to control the precise location that a widget should occupy in a window or Frame.
.place() is not used often, because it has two main drawbacks:
(1) layout can be difficult to manage with .place(),
(2) layouts created with .place() are not responsive.
import tkinter as tk root = tk.Tk() frame = tk.Frame(root, width=300, height=300) frame.grid() # .grid() is here label1 = tk.Label(frame, text="I'm at (0, 0)", bg="red") label1.place(x=0, y=0) # top left, in pixels label2 = tk.Label(frame, text="I'm at (75, 75)", bg="yellow") label2.place(x=75, y=75) # in pixels from top left root.mainloop() # run the tkinter event loop


Below is a list of pointers to some of the more interesting bits of
code in the ContextLogger2 codebase, in the authors' opinion.
The files listed are to the "main" files demonstrating the concept.
| Concept |
Description |
Files |
| A generic AO that completes immediately |
A Symbian active object (AO) that does nothing but gives the event loop a chance to run before invoking its callback. |
daemon/src/ut_immediate_epoc.cpp, daemon/src/ut_immediate_epoc.hpp |
| Catching SMS control messages |
Quietly observing and processing SMS control messages on Symbian. |
daemon/src/kr_sms_trigger_epoc.cpp, daemon/src/kr_sms_trigger_epoc.hpp |
| Checking AP types |
Checking whether an access point with a given ID is a modem one (GSM) or not (WLAN). |
daemon/src/epoc-iap.cpp |
| Configuring Lua for Symbian |
|
lua/src/luaconf.h |
| Configuring SQLite3 for Symbian |
|
sqlite3h/src/sqlite3/sqlite3_config.h |
| Double byte string / UTF-8 conversion utilities |
A number of different utility functions for conveniently converting between UTF-8 and the native UTF-16 encoding on Symbian. |
daemon/src/utils_cl2.h, daemon/src/utils_cl2_cxx.cpp |
| Flexible error reporting |
A powerful set of functions and macros for handling error reporting for different error (object) types. |
daemon/src/er_errors.c, daemon/src/er_errors.h |
| Gzipping files with Crypto++ |
Straightforward gzip file compression with Crypto++. |
daemon/src/ut_compress_cryptopp_gzip.cpp |
| Lua based config files |
Implementing a Lua language based configuration file, using a Lua runtime instance for in-memory storage. |
daemon/src/cf_rcfile.cpp, daemon/src/cf_rcfile.h |
| Multipart HTTP posting |
Multipart HTTP(S) POSTing using the Symbian HTTP client API. |
daemon/src/up_poster_epoc.cpp, daemon/src/up_poster_epoc.hpp |
| Multipart HTTP posting (Qt) |
Multipart HTTP(S) POSTing using the QtNetwork API. |
daemon/src/up_uploader_qt.cpp, daemon/src/up_uploader_qt_private.hpp |
| Observing SMS events |
Detecting and getting information about incoming and outgoing SMS messages. |
daemon/src/epoc-smsevent.cpp, daemon/src/ut_sms_epoc.cpp |
| Observing call status events |
Detecting phone call status changes and querying for additional information about any call. |
daemon/src/epoc-callstatus.cpp |
| Phone number to contact name |
Resolving a phone number to the name of a matching contact on Symbian. |
daemon/src/ut_telno_epoc.cpp |
| Portable assertions |
Assertions that are actually visible or logged on Symbian. |
shared/common/assertions.h, shared/common/assertions_cxx.cpp |
| Portable logging |
Logging to a file on Symbian, and to console elsewhere. |
shared/common/logging.cpp, shared/common/logging_c.h |
| Porting SQLite3 to Symbian |
|
sqlite3h/src/sqlite3/os_symbian.c |
| QIODevice input device composing sub-QIODevices |
An abstraction for reading sequentially from multiple QIODevices. |
daemon/src/iodeviceseq_qt.cpp, daemon/src/iodeviceseq_qt.hpp |
| QXmpp and Lua based remote control mechanism |
Accepting remote commands via XMPP and executing them using a Lua runtime. |
daemon/src/rk_remokon_qt.cpp, daemon/src/rk_remokon_qt.hpp |
| Resolving AP names |
Resolving an access point name to its ID on Symbian. |
daemon/src/epoc-iap.cpp |
| Simple file compression |
Straightforward file compression based on (raw) zlib. |
daemon/src/ut_compress_zlib_raw.c |
| Timer-based retries on Symbian |
An API that encapsulates logic for repeating failed operations after increasing (and semi-randomized) time intervals. |
daemon/src/ut_retry_epoc.cpp, daemon/src/ut_retry_epoc.hpp |
| Tracking application focus on Symbian |
Keeping track of which application has the focus. |
daemon/src/epoc-appfocus.cpp, daemon/src/epoc-appfocus.hpp |
| Tracking music playback on Symbian |
Receiving events from the Music player on Symbian. |
daemon/src/epoc-music.cpp, daemon/src/epoc-music.hpp |