a side-by-side reference sheet
grammar and invocation | variables and expressions | arithmetic and logic | strings | regexes | dates and time | arrays | user-defined types | generic types | functions | execution control | exceptions | file handles | files | directories | processes and environment | libraries and namespaces
| pascal | ada | plpgsql | |
|---|---|---|---|
| version used |
Free Pascal 2.4 | GNAT GCC 4.6 Ada 2012 |
Postgres 9.1 |
| show version |
$ fpc -v | $ gnatgcc -gnat12 --version | $ psql --version |
| grammar and invocation | |||
| pascal | ada | plpgsql | |
| hello word | $ cat hello.pas program Hello; begin WriteLn('hello world!'); end. $ fpc hello.pas $ ./hello |
$ cat hello.adb with Text_IO; use Text_IO; procedure Hello is begin Put_Line("Hello World!"); end Hello; $ gnatmake -gnat12 hello.adb $ ./hello Hello World! |
at psql prompt: > create or replace function hello() returns varchar as $$ begin return 'Hello World!'; end; $$ language plpgsql; CREATE FUNCTION > select hello(); hello -------------- Hello World! (1 row) |
| file suffixes | foo.pas foo.o foo |
source: foo.ads: specification foo.adb: body compiler generated: foo.adi: compilation information foo.o: object foo |
|
| source code encoding | -- default is ISO 8859-1: pragma Wide_Character_Encoding(UTF8) |
||
| end-of-line comment | not ISO Pascal: // comment line // another line |
-- comment line -- another line |
-- comment line -- another line |
| multiple line comment | (* comment line another line *) { comment line another line } |
none | none |
| variables and expressions | |||
| pascal | ada | plpgsql | |
| are identifiers case sensitive |
no | no | no |
| declare constant, type, and variable | program Foo; const PI: Real = 3.14159; type Customer = record Id: Integer; Name: String; end; var I: Integer; C: Customer; begin body of program |
procedure Foo is Pi: constant Float := 3.14; N: Integer; type Customer is Record Id: Integer; Name: String(1..4); end Record; C: Customer; begin body of program |
create type customer as ( id integer, name text ); create or replace function foo() returns void as $$ declare pi numeric(10,4) = 3.14; i integer = 42; c customer%rowtype; begin return; end $$ language plpgsql; |
| block with local scope | declare N: Integer; begin N := 7; end; |
declare i integer := 3; begin raise notice 'i is %', i; end; |
|
| assignment |
X := 1; | X := 1; | x = 1; |
| pointer declaration | IP: ^Integer; | type Integer_Ptr is access Integer; Ip: Integer_Ptr; |
none |
| allocate heap |
new(IP); | Ip := new Integer; | none |
| free heap |
dispose(IP); | with Ada.Unchecked_Deallocation; procedure Free_Example is type Integer_Ptr is access Integer; procedure Free is new Ada.Unchecked_Deallocation( Integer, Integer_Ptr); Ip: Integer_Ptr; begin Ip := new Integer; Ip.all := 7; Free(Ip); end Hello; |
none |
| dereference pointer | IP^ := 7; Ans := 6 * IP^; |
Ip.all := 7; ans := 6 * Ip.all; |
none |
| null literal | can only be assigned to pointers: nil |
can only be assigned to access types: null |
NULL |
| null test | X = nil | X = null | x is NULL x = NULL is always false |
| coalesce |
none | 7 + coalesce(x, 0) | |
| nullif |
none | nullif(x, 0) | |
| conditional expression |
none | -- Ada 2012: (if X > 0 then X else -X) |
case when x > 0 then x else -x end |
| arithmetic and logic | |||
| pascal | ada | plpgsql | |
| boolean type |
Boolean | Boolean | BOOL BOOLEAN |
| true and false |
True False | True False | TRUE FALSE |
| falsehoods | False non booleans cause error in boolean context |
False non booleans cause error in boolean context |
FALSE NULL 0 strings and floats cause error in boolean context |
| logical operators |
and or xor not | and or xor not | AND OR none NOT |
| short circuit operators | { in Free Pascal 'and' and 'or' also short circuit } and_then or_else |
and then or else |
AND OR |
| integer type | Integer | Integer | smallint: 2 bytes integer: 4 bytes bigint: 8 bytes |
| float type | Real | Float | real: 4 bytes double precision: 8 bytes |
| fixed type |
four fractional digits: Currency |
type Currency is delta 0.01 digits 18; Amt: Currency; Amt := 3.99; |
numeric(digits, fractional_digits) |
| relational operators |
= <> < > <= >= | = /= < > <= >= | = != also: <> < > <= >= |
| min and max | uses Math; Min(1, 2) Max(1, 2) MinIntValue([1, 2, 3]) MaxIntValue([1, 2, 3]) MinValue([1.0, 2.0, 3.0]) MaxValue([1.0, 2.0, 3.0]) |
Integer'Min(1, 2) Integer'Max(1, 2) Integer'Min(1, Integer'Min(2, 3)) Integer'Max(1, Integer'Max(2, 3)) Float'Min(1.0, Float'Min(2.0, 3.0)) Float'Max(1.0, Float'Max(2.0, 3.0)) |
least(1,2,3) greatest(1,2,3) |
| arithmetic operators |
+ - * / div mod | + - * none / mod or rem | + - * none / % |
| integer division |
7 div 3 | 7 / 3 | 7 / 3 |
| integer division by zero |
raises EDivByZero | raises Constraint_Error | raises division_by_zero |
| float division |
7 / 3 | Float(7) / Float(3) | 7 * 1.0 / 3 |
| float division by zero |
+Inf | raises Constraint_Error | raises division_by_zero |
| power | uses Math; Power(2, 16); |
2 ** 16 | 2 ^ 16 |
| sqrt |
Sqrt(2) | with Ada.Numerics.Elementary_Functions; use Ada.Numerics.Elementary_Functions; -- no implicit type conversion of Integer to Float: Sqrt(2.0) |
sqrt(2) |
| sqrt -1 |
raises EInvalidOp | raises Ada.Numerics.Argument_Error | raises invalid_argument_for_power_function |
| transcendental functions | uses Math; Exp Ln Sin Cos Tan ArcSin ArcCos ArcTan ArcTan2 |
with Ada.Numerics.Elementary_Functions; use Ada.Numerics.Elementary_Functions; Exp Log Sin Cos Tan Arcsin Arccos none Arctan |
exp ln sin cos tan asin acos atan atan2 |
| float truncation towards zero, to nearest integer, down, up |
uses Math; Trunc Round Floor Ceil |
return Float: ?? Float'Rounding Float'Floor Float'Ceiling |
trunc round floor ceil |
| absolute value and sign |
Abs(-7) none |
Abs(-7) none |
abs(-7) sign(-7) |
| integer overflow |
modular arithmetic | modular arithmetic | raises numeric_value_out_of_range |
| float overflow |
raises EOverflow | +Inf******* | raises numeric_value_out_of_range |
| random number integer, float |
Random(100) Random |
with Ada.Numerics.Float_Random; with Ada.Numerics.Discrete_Random; use Ada.Numerics; procedure Foo is type Rand_Range is range 0..99; package Rand_Int is new Discrete_Random(Rand_Range); IG: Rand_Int.Generator; FG: Float_Random.Generator; begin use Rand_Int.Random(IG) use Float_Random.Random(FG) |
floor(100 * random()) random() |
| bit operators |
shl shr and or xor not | << >> & | ^ ~ | |
| strings | |||
| pascal | ada | plpgsql | |
| string literal |
'Don''t say "foo"' | "Don't say ""foo""" | 'Don''t say "foo"' |
| fixed length string type | -- error unless string length is 6 String(1..6) Wide_Wide_String(1..6) |
pads length to n with spaces: char(n) |
|
| bounded length string type | error if n exceeded: varchar(n) |
||
| unbounded length string type | with Ada.Strings.Unbounded; Ada.Strings.Unbounded.Unbounded_String |
text | |
| character type | Character 1 byte Wide_Wide_Character 4 bytes |
char(1) | |
| chr and ord | Chr(65) Ord('A') |
chr(65) ascii('A') |
|
| concatenate |
'hello' + ' world' | "hello" & " world" | 'hello' || ' world' |
| length |
Length('hello') | length('hello') | |
| extract substring |
Copy(S, 1, 4) | substr('hello', 1, 4) | |
| index of substring |
Pos('hell', 'hello') | strpos('hello', 'hell') | |
| case manipulation | uses SysUtils; UpperCase('hello') LowerCase('HELLO') |
upper('hello') lower('HELLO') |
|
| strip | Trim(' foo ') TrimLeft(' foo') TrimRight('foo ') |
trim(' foo ') ltrim(' foo') rtrim('foo ') |
|
| pad on left, pad on right | lpad('foo', 10) rpad('foo', 10) |
||
| convert string to number | uses SysUtils; 7 + StrToInt('12') 73.9 + StrToFloat('.037') |
arithmetic operators automatically convert strings to numbers cast('12' as int) cast('3.14') as real) |
|
| convert number to string | uses SysUtils; 'value: ' + IntToStr(8) 'value: ' + FloatToStr(3.14) |
Integer'Image(8) Float'Image(3.14) |
double pipe operator || converts numbers operands to strings cast(8 to text) cast(3.14 to text) |
| regular expressions | |||
| pascal | ada | plpgsql | |
| match | select * from pwt where name similar to 'r[a-z]+'; |
||
| substitute |
select regexp_replace('foo bar', 'bar$', 'baz'); | ||
| extract subgroup | select (regexp_matches('foobar', '(f..)bar'))[1]; | ||
| dates and time | |||
| pascal | ada | plpgsql | |
| current datetime | with Ada.Calendar; Now: Ada.Calendar.Time; Now := Ada.Calendar.Clock; |
now() | |
| datetime to string | with Ada.Calendar.Formating; -- "2015-03-29 17:46:35": Ada.Calendar.Formatting.Image(Now); |
to_char(now(), 'YYYY-MM-DD HH24:MI:SS') | |
| string to datetime | to_timestamp('2011-09-26 00:00:47', 'YYYY-MM-DD HH24:MI:SS') | ||
| arrays | |||
| pascal | ada | plpgsql | |
| declare array | A: array[1..5] of Integer; | A: array(1..5) of Integer; | a int[]; |
| array length | A'Last | array_length(a, 1) | |
| array element access | A[1] := 3; | A(1) := 3; | a[1] = 3; |
| array initialization | A: array(1..5) of Integer := (1, 3, 5, 2, 4); | a int[] = array[1, 3, 5, 2, 4]; | |
| array slice | A(3..4) := A(1..2); | a[1:2] can assign to slice in UPDATE statement but not in assignment |
|
| array out of bounds behavior | undefined; free pascal permits out of bounds memory access | compiler warning; raises Constraint_Error at runtime | NULL |
| declare multidimensional array | a integer[][]; | ||
| multidimensional array access | a[2][3] = 7; | ||
| user-defined types | |||
| pascal | ada | plpgsql | |
| type synonym | type CustomerId = Integer; |
||
| enumerated type | type Direction = (North, South, East, West); var Wind: Direction = North; begin WriteLn(Wind); { prints 'North' } |
create type direction as enum ( 'north', 'south', 'east', 'west'); create table wind ( origin direction, speed_mph real ); insert into wind values ( 'north', 12 ); |
|
| define record type | in type section: Customer = record Id: Integer; Name: String; end; |
type Customer is record Id: Integer; Name: String(1..4); end record; |
create type customer as ( id integer, name text ); |
| declare record | C: Customer; | C: Customer := (17, "John"); | declare c customer; begin c = (17,'John'); code which uses c |
| record member access | C.Name := 'Fred'; | C.Name := 'Fred'; | c.name = 'Fred' |
| record block | |||
| generic types | |||
| pascal | ada | plpgsql | |
| functions | |||
| pascal | ada | plpgsql | |
| declare | function Add(M: Integer; N: Integer) return Integer; | ||
| define | function Add(M: Integer; N: Integer): Integer; begin Result := M + N; end; |
function Add(M: Integer; N: Integer) return Integer is begin return M + N; end Add; |
create function add(i int, j int) returns int as $$ begin return i + j; end; $$ language plpgsql; |
| call | Sum := Add(7, 3); | Sum := Add(7, 3); | -- in select clause: select add(1, 2); -- in where clause: select * from cust where id = add(1, 2); -- inside PL/pgSQL functions can be used wherever -- expressions are permitted. Can be used as a statement -- with perform: perform add(1, 2); |
| undefine function | none | none | -- parameter types are required: drop function foo(int, int); |
| no return value | procedure Message(Msg: String); begin WriteLn(Msg); end; |
procedure Message(Msg: String) is begin Text_IO.Put_Line(Msg); end Message; |
-- declare return type as void: create or replace function message(msg text) returns void as $$ begin raise notice '%', msg; end; $$ language plpgsql; |
| pass by reference | { declare parameter with var } procedure Incr(var N: Integer); begin N := N + 1; end; var I: Integer; begin I := 3; Incr(I); WriteLn(I); { prints 4 } end. |
procedure Incr(N: in out Integer) is begin N := N + 1; end Incr; I := 3; Incr(3); |
none |
| pass uninitialized variable by reference | procedure Get_Pi(Pi: out Float) is begin Pi := 3.14; end Get_Pi; |
none | |
| nested function | none | ||
| overloaded function | --integer version: create or replace function add(m int, n int) returns int as $$ begin return m + n; end; $$ language plpgsql; --float version: create or replace function add(x real, y real) returns real as $$ begin return x + y; end; $$ language plpgsql; |
||
| forward declaration | function Odd(N: Integer): Boolean; Forward; function Even(N: Integer): Boolean; begin if N = 0 then Result := true else Result := Odd(N - 1); end; function Odd(N: Integer): Boolean; begin if N = 0 then Result := false else Result := Even(N - 1); end; |
none | |
| execution control | |||
| pascal | ada | plpgsql | |
| if | if I = 0 then begin WriteLn('no hits'); end else if I = 1 then begin WriteLn('one hit'); end else WriteLn(IntToStr(I) + ' hits'); |
if I = 0 then Put_Line("no hits"); elsif I = 1 then Put_Line("one hit"); else Put_Line(Integer'Image(I) & " hits"); end if; |
if i = 0 then return 'no hits'; elsif i = 1 then return 'one hit'; else return i || ' hits'; end if; |
| switch | |||
| while | I := 0; while I < 10 do begin WriteLn(IntToStr(I)); I := I + 1; end |
I := 0; while I < 10 loop Put_Line(Integer'Image(I)); I := I + 1; end loop; |
i = 1; sum = 0; while i <= n loop sum = sum + i; i = i + 1; end loop; |
| for | for I := 0 to 9 do WriteLn(IntToStr(I)); |
for I in 1..9 loop Put_Line(Integer'Image(I)); end loop; |
sum = 0; for i in 1..n loop sum = sum + i; end loop; |
| break | break | exit | exit |
| continue | continue | continue | |
| goto | |||
| exceptions | |||
| pascal | ada | plpgsql | |
| predefined exceptions | Constraint_Error Program_Error Storage_Error Tasking_Error |
||
| define exception | {$mode delphi} type Err42 = class(Exception); |
Err42: exception; | -- code string must be five digits or uppercase letters: begin raise 'User defined error 42' using errcode = 'ERR42'; exception when sqlstate 'ERR42' then raise notice 'caught ERR42'; end; |
| raise exception |
{$mode delphi} raise Exception.Create('bad int: ' + IntToStr(7)); |
raise Err42; | -- raises exception with condition raise_exception: raise exception 'bad int: %', i; -- also possible to use predefined condition: raise data_exception using message = 'bam! |
| re-raise exception | {$mode delphi} try risky(); except on E: Exception do begin WriteLn('risky failed'); raise; end; |
begin perform risky(); exception when others then raise notice 'risky() failed.'; raise; end; |
|
| handle any exception |
{$mode delphi} try raise Exception.Create('bad int: ' + IntToStr(7)); except on E: Exception do WriteLn(E.Message); |
begin raise exception 'bad int: %', i; exception when others then raise notice 'caught bad int'; end; |
|
| handle exception by type | {$mode delphi} try raise Err42.Create('bad int: ' + IntToStr(7)); except on E: Err42 do WriteLn(E.Message); |
begin n := 1 / 0; exception when division_by_zero then raise notice 'ignoring div by zero'; end; |
|
| multiple exception handlers | |||
| finally | |||
| file handles | |||
| pascal | ada | plpgsql | |
| read line from stdin | none | ||
| write line to stdout | with Text_IO; with Ada.Wide_Wide_Text_IO; Text_IO.Put_Line("Hello!"); Ada.Wide_Wide_Text_IO.Put_Line("Hello!"); |
none | |
| write line to stderr | -- stderr stream goes to both client and server log. -- -- levels are: debug, log, info, notice, warning -- raise notice 'i is %', i; |
||
| files | |||
| pascal | ada | plpgsql | |
| directories | |||
| pascal | ada | plpgsql | |
| processes and environment | |||
| pascal | ada | plpgsql | |
| command line arguments | with Ada.Command_Line; Ada.Command_Line.Command_Name Ada.Command_Line.Argument_Count Ada.Command_Line.Argument(1) Ada.Command_Line.Argument(2) |
||
| libraries and namespaces | |||
| pascal | ada | plpgsql | |
| load library | with Text_IO; | ||
| namespace declaration | $ cat put_hello.ads package Put_Hello is procedure Put_Hello; end; $ cat put_hello.adb cat put_hello.adb with Text_IO; package body Put_Hello is procedure Put_Hello is begin Text_IO.Put_Line("Hello World!"); end Put_Hello; end; |
||
| namespace alias | with Text_IO; procedure Hello is package IO renames Text_IO; begin IO.Put_Line("Hello World!"); end Hello; |
||
| unqualified import of namespace | use Text_IO; | ||
| ________________________________________________________ | ________________________________________________________ | ________________________________________________________ |
General Notes
version used
The version used in this reference sheet.
show version
How to get the version.
Grammar and Invocation
hello word
A "Hello, World!" example.
ada:
gnatmake takes care of compiling everything that the final executable depends on and linking the final executable.
It is possible to compile and link in separate steps:
$ cat hello.adb
with Text_IO; use Text_IO;
procedure Hello is
begin
Put_Line ("Hello World!");
end Hello;
$ gnatgcc -gnat12 -c hello.adb
$ gnatbind -gnat12 hello
$ gnatlink -gnat12 hello
$ ./hello
Hello World!
gnatgcc creates the files hello.ali and hello.o, and gnatlink creates the final executable hello.
gnatbind creates the files b~hello2.adb and b~hello2.ads. It is a necessary precursor to gnatlink. gnatbind prevents linking a program in which objects are using incompatible versions of the same header. This is a safety feature not provided by C and C++ linkers.
file suffixes
Customary suffixes for source and object files.
ada:
The .adi file is generated whenever a .o file is generated. The .o file is what goes into the final executable. The .adi file contains information used by the compiler, including the flags that were used to comile the .o file and what files it depends on.
end-of-line comment
The syntax for a comment which ends at the end of the line.
pascal:
The // style comment is supported by Borland compilers and Free Pascal.
multiple line comment
The syntax for a comment which can span multiple lines.
Variables and Expressions
case sensitive
Are identifiers case sensitive?
pascal:
Free Pascal Reserved Words and Modifiers
A word in Pascal is reserved if it cannot be redefined by the programmer. The names for the built-in types: Integer, Boolean, etc. are not reserved. They are defined in the System unit and can be redefined by the programmer.
Although Pascal is case insensitive, reserved words and modifiers are customarily written in lower case. Other identifiers are customarily written in upper camel case, also known as Pascal case.
declare constant, type, variable
How to declare a constant, type, or variable.
assignment
The syntax for assigning a value to a variable.
pointer declaration
How to declare a pointer.
Arithmetic and Logic
boolean type
The boolean type.
true and false
The literals for true and false.
falsehoods
Values which evaluate as false in a boolean context.
logical operators
The logical operators for conjunction, disjunction, exclusive or, and negation.
short circuit operators
Short circuit versions of the logical operators.
The short circuit version of and will not evaluate its second argument if the first is false. The short circuit version of or will not evaluate its second argument if the first is true.
integer type
float type
fixed type
relational operators
min and max
arithmetic operators
integer division
integer division by zero
float division
float division by zero
power
sqrt
sqrt -1
transcendental functions
float truncation
absolute value
integer overflow
float overflow
random number
bit operators
Strings
string literal
string concatenate
Regular Expressions
Dates and Time
Arrays
User-Defined Types
Generic Types
Functions
define function
How to define a function.
postgresql:
If "or replace" is omitted from the function definition and the function already exists, the statement fails with an error.
Before PostgreSQL 8.0 parameters could not be assigned names in the function signature. The following syntax which is still valid was used:
create or replace function foo(int, int)
returns int as $$
declare
@< >@i alias for $1;
@< >@j alias for $2;
begin
@< >@return i + j;
end;
$$ language plpgsql;
invoke function
How to invoke a function.
undefine function
How to undefine a function.
no return value
How to define a function with no return value. Sometimes such functions are called procedure. Such a function is not useful unless it has a side effect.
pass by reference
How to pass a variable by reference. This permits the callee to modify the value in the variable.
nested function
How to define a function inside another function.
plpgsql:
Nested functions are a feature of Oracle's PL/SQL. A nested function has access to the local variables of the containing function; it is not visible or callable from outside of the containing function.
overloaded function
How to define multiple versions of a function, with the correct version chosen by the type of the arguments used at invocation.
forward declaration
How to declare a function before it is defined.
Execution Control
if
The syntax for an if statement.
while
The syntax for a while statement.
for
The syntax for a for loop.
break and continue
How to break from a loop; how to jump to the next iteration of a loop.
Exceptions
raise exception
How to raise an exception.
postgresql:
The raise statement can also be used to write info and warning messages. See write line to stderr.
re-raise exception
How to re-raise a caught exception.
postgresql:
PostgreSQL exceptions do not have a stack trace or preserve the line number at which the error originated, so re-raising an exception just preserves the exception type and message.
define exception
How to define a new exception type.
postgresql:
Any 5 character string of digits or uppercase letters may be used as an error code. Many error codes are already in use:
handle any exception
How to handle any exception.
handle exception by type
How to handle exceptions of a specific type.
multiple exception handlers
File Handles
read line from stdin
How to read a line from standard input.
plpgsql:
In a SQL session the stream on which the server receives SQL commands from the client can be regarded as the standard input. Furthermore the COPY command provides a mechanism for providing unquoted data on the input stream for insertion into a table. PL/pgSQL code does not have access to this stream, however; a COPY command cannot be run from within PL/pgSQL. Note that some PL/pgSQL code runs as triggers in which case no such stream exists.
write line stdout
How to write a line to stdout.
plpgsql:
In an interactive SQL session the server writes the results of SQL select statements to a stream which can be regarded as standard out. PL/pgSQL code cannot write to this stream, however. The only thing PL/pgSQL code can do with selected data is read it into local variables.
write line stderr
How to write a line to stderr.
plpgsql:
The RAISE statement is used to write to stderr. Each message must be assigned one of five log levels: debug, log, info, notice, warning. The message can be reported to the client, written to the server log, or both depending upon how the server is configured.
Files
Directories
Processes and Environment
Libraries and Namespaces
Pascal
Free Pascal: Reference Guide
Free Pascal: Run-Time Language Reference
Ada
Ada Reference Manual
GNAT Reference Manual
GNAT User's Guide for Native Platforms
Ada has about 60 reserved words; these are written with lower case letters. Other identifiers are written with underscores and capitalization, e.g. Put_Hello.
Files use lower case letters and underscores, but are otherwise named after the package they contain. The package Put_Hello would go in the file put_hello.adb, with its specification in put_hello.ads.
PL/SQL
PostgreSQL 9.1 Documention: PL/pgSQL
Porting from PL/SQL to PL/pgSQL
Execute statement with no result:
-- create table foo (s text, i int);
create or replace function insert_foo(s text, i int)
returns void as $$
begin
insert into foo values (s, i);
end; )
$$ language plpgsql;
-- insert, update, and delete statements raise an
-- exception if they fail
Execute SQL in a string:
create or replace function drop_table(tbl text)
returns void as $$
begin
execute 'drop table ' || quote_ident(tbl);
end;
$$ language plpgsql;
Functions to prevent sql injection:
- quote_literal
- quote_nullable
- quote_ident


unlabeled
by Trey Pendragon at 2021-08-12 23:04:56.There are a total of 77,515 bibs that are likely mistakes from the P2E file. Of those, 9,031 only have URLs for tables of contents from the Library of Congress. I will work with Enterprise Services to experiment in the Alma sandbox to find a way to remove the portfolios from these records.
To be clear, the URLs themselves won't be removed from the records. They will just have the portfolios removed.
Thank you @mzelesky !
mentioned
by None at 2021-08-12 15:49:28.subscribed
by None at 2021-08-12 15:49:28.renamed
by Christina Chortaria at 2021-08-12 15:49:40.labeled
by Christina Chortaria at 2021-08-12 15:49:46.mentioned
by None at 2021-08-12 16:18:44.subscribed
by None at 2021-08-12 16:18:44.assigned
by Christina Chortaria at 2021-08-12 13:13:37.referenced
by Christina Chortaria at 2021-08-12 15:16:10.closed
by Kevin Reiss at 2021-08-12 16:27:48.referenced
by Kevin Reiss at 2021-08-12 16:27:49.deployed
by None at 2021-08-12 15:58:03.referenced
by Kevin Reiss at 2021-08-12 16:27:48.merged
by Kevin Reiss at 2021-08-12 16:27:48.closed
by Kevin Reiss at 2021-08-12 16:27:48.head_ref_deleted
by Kevin Reiss at 2021-08-12 16:27:49.This is likely the same as This is likely the same as https://github.com/pulibrary/bibdata/issues/1566 and https://github.com/pulibrary/figgy/issues/4623 -- we'll use the bibdata one for ongoing work here.
Actually, closing in favor of #1566
closed
by None at 2021-08-12 18:51:16.The firewall timeout was updated this afternoon from 12 to 24 hours.
We'll pursue turning that firewall timeout off for traffic from our VMs
assigned
by Trey Pendragon at 2021-08-12 18:49:20.assigned
by Christina Chortaria at 2021-08-12 20:46:47.unassigned
by Christina Chortaria at 2021-08-12 20:49:24.assigned
by Christina Chortaria at 2021-08-12 21:05:55.convert_to_draft
by Trey Pendragon at 2021-08-12 17:53:16.ready_for_review
by Trey Pendragon at 2021-08-12 22:55:57.referenced
by Trey Pendragon at 2021-08-12 22:57:06.merged
by Trey Pendragon at 2021-08-12 22:57:06.closed
by Trey Pendragon at 2021-08-12 22:57:06.head_ref_deleted
by Trey Pendragon at 2021-08-12 22:57:06.closed
by Trey Pendragon at 2021-08-12 23:04:23.closed
by Bess Sadler at 2021-08-12 19:10:08.referenced
by Bess Sadler at 2021-08-12 19:10:08.merged
by Bess Sadler at 2021-08-12 19:10:08.closed
by Bess Sadler at 2021-08-12 19:10:08.head_ref_deleted
by Bess Sadler at 2021-08-12 19:10:12.referenced
by Hector Correa at 2021-08-12 18:15:18.merged
by Hector Correa at 2021-08-12 18:15:18.closed
by Hector Correa at 2021-08-12 18:15:18.head_ref_deleted
by Hector Correa at 2021-08-12 18:15:19.assigned
by Kate Lynch at 2021-08-12 18:41:37.Note: The failed CI is with Poster
and not Scraper
module on an assert
. That is, this does address #44:
self.generate_upload_json()
File "Poster.py", line 72, in generate_upload_json
assert len(dspace_data) == 1, dspace_data
AssertionError: []
Error: Process completed with exit code 1.
An empty list was the outcome
assigned
by Chun Ly at 2021-08-12 19:59:22.unassigned
by Chun Ly at 2021-08-12 19:59:27.review_requested
by Chun Ly at 2021-08-12 19:59:35.referenced
by Christina Chortaria at 2021-08-11 22:21:41.merged
by Christina Chortaria at 2021-08-11 22:21:41.closed
by Christina Chortaria at 2021-08-11 22:21:41.head_ref_deleted
by Christina Chortaria at 2021-08-11 22:21:41.closed
by Christina Chortaria at 2021-08-11 22:21:41.convert_to_draft
by None at 2021-08-12 13:44:57.labeled
by Trey Pendragon at 2021-08-12 19:29:43.labeled
by Kim Leaman at 2021-08-12 21:35:07.assigned
by Cliff Wulfman at 2021-08-12 21:36:20.labeled
by Kim Leaman at 2021-08-12 21:37:01.labeled
by Kim Leaman at 2021-08-12 21:48:16.labeled
by Kim Leaman at 2021-08-12 21:48:54.@escowles and @tpendragon - why are we ingesting the chronicle (and keeping dark)? Could we do CDL? its also available in JSTOR. Where was this stuff before? https://www.jstor.org/journal/prinunivlibrchro?refreqid=excelsior%3Ae96300df30d973c463dccd4c1e0b2e65
I'm not sure. I think @jpstroop would know maybe? Most of these tickets were just migrated from the spreadsheet.
mentioned
by Esmé Cowles at 2021-08-12 21:42:57.subscribed
by Esmé Cowles at 2021-08-12 21:42:57.mentioned
by Trey Pendragon at 2021-08-12 21:42:57.subscribed
by Trey Pendragon at 2021-08-12 21:42:57.mentioned
by Jon Stroop at 2021-08-12 23:19:13.subscribed
by Jon Stroop at 2021-08-12 23:19:13.referenced
by Trey Pendragon at 2021-08-13 00:16:47.merged
by Trey Pendragon at 2021-08-13 00:16:47.closed
by Trey Pendragon at 2021-08-13 00:16:47.head_ref_deleted
by Trey Pendragon at 2021-08-13 00:16:47.referenced
by Trey Pendragon at 2021-08-13 00:17:05.merged
by Trey Pendragon at 2021-08-13 00:17:05.closed
by Trey Pendragon at 2021-08-13 00:17:05.head_ref_deleted
by Trey Pendragon at 2021-08-13 00:17:06.referenced
by Trey Pendragon at 2021-08-13 00:17:18.merged
by Trey Pendragon at 2021-08-13 00:17:18.closed
by Trey Pendragon at 2021-08-13 00:17:18.head_ref_deleted
by Trey Pendragon at 2021-08-13 00:17:18.labeled
by None at 2021-08-12 23:53:41.labeled
by None at 2021-08-12 23:53:41.This is resolved by https://github.com/pulibrary/princeton_ansible/pull/2418
referenced
by Bess Sadler at 2021-08-12 18:33:39.merged
by Bess Sadler at 2021-08-12 18:33:39.closed
by Bess Sadler at 2021-08-12 18:33:40.head_ref_deleted
by Bess Sadler at 2021-08-12 18:33:40.closed
by Bess Sadler at 2021-08-12 18:33:40.https://github.com/pulibrary/orangelight/issues/2631#issuecomment-897110433 I asked in the alma-cataloging-and-inventory-mngmt channel if it's possible to update the 856. @kconnellmail will update it.
Coverage decreased (-0.2%) to 96.799% when pulling 9c38659dd36d82c19e5600581f4df4a0c87b9459 on 2371-downcase-netid-cas into bb1f26c947c78e96dbacf4d699ccb3b710055d14 on main.
We found with @mzelesky that there are records where the second indicator of the 856 indicated it was a full-text version of the resource, but there is a subfield 3 on the URL. @mzelesky will do a search over the Voyager records he submitted in the 'Print to Electronic' migration process and find how many have 856 with the subfield 3. I will look if I can search 856s with subfields using analytics in alma.
Some of these records will clean up during a data cleanup of 856s https://github.com/pulibrary/bibdata/issues/1600
mentioned
by None at 2021-08-12 14:38:12.subscribed
by None at 2021-08-12 14:38:12.closed
by None at 2021-08-12 16:16:55.Coverage decreased (-0.01%) to 96.949% when pulling 19cef2096ac2d5fe521ec888efb35aeca7184db2 on issue2637homepage_cache into db13d87886c16d197c6a36902f598345218e6a58 on main.
@hackartisan I fixed the tests and now they pass (sorry about that!) and in addition they now check whether the Rails cache was used which is a better test for this scenario.
mentioned
by None at 2021-08-12 15:00:01.subscribed
by None at 2021-08-12 15:00:01.review_requested
by Hector Correa at 2021-08-12 15:20:26.deployed
by None at 2021-08-12 16:01:45.referenced
by None at 2021-08-12 16:16:55.merged
by None at 2021-08-12 16:16:55.closed
by None at 2021-08-12 16:16:55.head_ref_deleted
by None at 2021-08-12 16:16:56.Coverage increased (+0.01%) to 96.961% when pulling 681cea76642c4e53a434c615e451d295f9760f1c on 2648-readonly into 4de400448675fcd857af0775e4c782f93d18df3d on main.
"digitization" is misspelled in the banner
"digitization" is misspelled in the banner
Thank you!!
Who will have the responsibility to switch the catalog in the read only mode during a database maintenance window?
head_ref_force_pushed
by None at 2021-08-12 16:31:08.head_ref_force_pushed
by None at 2021-08-12 18:26:09.deployed
by None at 2021-08-12 20:11:02.referenced
by None at 2021-08-12 20:26:03.merged
by None at 2021-08-12 20:26:03.closed
by None at 2021-08-12 20:26:03.head_ref_deleted
by None at 2021-08-12 20:26:04.referenced
by None at 2021-08-12 16:26:13.referenced
by None at 2021-08-12 16:31:07.referenced
by None at 2021-08-12 18:26:08.closed
by None at 2021-08-12 20:26:04.renamed
by James R. Griffin III at 2021-08-12 15:10:38.labeled
by James R. Griffin III at 2021-08-12 15:13:02.assigned
by James R. Griffin III at 2021-08-12 15:13:03.labeled
by James R. Griffin III at 2021-08-12 15:53:01.assigned
by James R. Griffin III at 2021-08-12 15:53:01.referenced
by James R. Griffin III at 2021-08-12 15:59:36.merged
by James R. Griffin III at 2021-08-12 15:59:36.closed
by James R. Griffin III at 2021-08-12 15:59:36.head_ref_deleted
by James R. Griffin III at 2021-08-12 15:59:36.closed
by Bess Sadler at 2021-08-12 16:00:38.convert_to_draft
by James R. Griffin III at 2021-08-12 15:49:33.head_ref_force_pushed
by James R. Griffin III at 2021-08-12 15:50:19.automatic_base_change_succeeded
by Bess Sadler at 2021-08-12 16:00:38.referenced
by Bess Sadler at 2021-08-12 16:00:37.merged
by Bess Sadler at 2021-08-12 16:00:37.closed
by Bess Sadler at 2021-08-12 16:00:38.head_ref_deleted
by Bess Sadler at 2021-08-12 16:00:38.head_ref_force_pushed
by None at 2021-08-12 12:55:29.head_ref_force_pushed
by James R. Griffin III at 2021-08-12 13:17:27.head_ref_force_pushed
by James R. Griffin III at 2021-08-12 13:18:22.ready_for_review
by James R. Griffin III at 2021-08-12 13:18:32.head_ref_force_pushed
by James R. Griffin III at 2021-08-12 14:36:45.met with Brittany.All MODS are in hand with Brittany on a server. All images have been migrated into figgy, approved by Brittany. CLosing ticket. all done on the PUDL sunsetting end.
closed
by Kim Leaman at 2021-08-12 19:35:29.review_requested
by Kevin Reiss at 2021-08-12 19:16:51.referenced
by None at 2021-08-12 19:55:11.merged
by None at 2021-08-12 19:55:11.closed
by None at 2021-08-12 19:55:11.head_ref_deleted
by None at 2021-08-12 19:55:12.head_ref_force_pushed
by None at 2021-08-12 13:22:17.head_ref_force_pushed
by None at 2021-08-12 13:50:29.head_ref_force_pushed
by None at 2021-08-12 14:46:07.head_ref_force_pushed
by None at 2021-08-12 15:38:21.head_ref_force_pushed
by None at 2021-08-12 15:40:11.head_ref_force_pushed
by None at 2021-08-12 15:43:36.head_ref_force_pushed
by None at 2021-08-12 16:08:56.head_ref_force_pushed
by None at 2021-08-12 17:55:57.head_ref_force_pushed
by None at 2021-08-12 17:58:30.head_ref_force_pushed
by None at 2021-08-12 18:02:54.head_ref_force_pushed
by None at 2021-08-12 18:59:10.head_ref_force_pushed
by None at 2021-08-12 19:04:20.head_ref_force_pushed
by None at 2021-08-12 19:10:40.head_ref_force_pushed
by None at 2021-08-12 19:38:20.head_ref_force_pushed
by None at 2021-08-12 21:01:47.review_requested
by Kevin Reiss at 2021-08-12 19:30:31.referenced
by None at 2021-08-12 19:58:56.merged
by None at 2021-08-12 19:58:56.closed
by None at 2021-08-12 19:58:56.head_ref_deleted
by None at 2021-08-12 19:58:56.labeled
by None at 2021-08-12 19:59:53.labeled
by None at 2021-08-12 19:59:53.labeled
by None at 2021-08-12 22:10:26.labeled
by None at 2021-08-12 22:10:26.head_ref_force_pushed
by Thanya Begum at 2021-08-12 14:47:55.ready_for_review
by Thanya Begum at 2021-08-12 16:55:51.


The Janus VR Presence Server is an open source project started by LisaLionheart which allows one JanusVR client to share information another client. It enables multiplayer. General JanusVR discussions can be found on the JanusVR subreddit
Setup your own private or public multiplayer server!
Want to connect up to an instance of Janus VR Presence Server? Check out the API documentation.


Sign up
What you get.
Instant access to the app
First 5 customers are free
10Gb cloud storage included


Click text area to edit text.
Inline Editor
HTML is the standard's standard and it certainly doesn't use tables for layout.
Copy


Ingredients
| Ingredient | Amount |
| Gluten free baking flour | 1/2 cup |
| Baking powder | 1 tsp |
| Salt | 1/8 tsp |
| Vinegar | 1 tsp |
| Eggs | 2 |
Procedure
Note: If you are using large eggs, you may need more than 1/2 cup
of flour. The dough should be sticky but not runny when you scoop it
into the pan.
- Preheat oven to 400F (200C)
- Combine the flour, baking powder and salt in a bowl
- Separate one egg and beat egg white
- Beat other egg and combine with vinegar
- Stir in egg mixture and beaten egg white with flour mixture
- Separate into two biscuits, place in greased skillet (spray or
high-temp oil), and brush with egg yolk
- Bake at 400F (200C) for 15 minutes.
Ingredients
| Ingredient | Amount |
| Gluten free baking flour | 1.25 cup |
| Baking powder | 2 tsp |
| Sugar | 1 tsp |
| Salt | 1/8 tsp |
| Butter | 1/4 cup |
| Egg | 1 |
| Butter | 3/8 cup + 2 tsp, divided |
Procedure
- Preheat oven to 450° F. Line a baking sheet with parchment paper.
- Whisk together flour, baking powder, baking soda, sugar and salt
in a large bowl.
- Cut in butter with a pastry blender until texture
resembles small pebbles.
- In a small bowl, whisk together egg and 3/8 cup
buttermilk. Make a well in the center of the flour mixture and
pour in the eggs and buttermilk. Stir until a soft dough
forms. Dough will be slightly wet.
 Cover with
another large piece of plastic wrap and roll or pat dough to 1/2
inch thick. Remove top piece of plastic wrap. Fold dough in half,
then fold in half again. Cover dough with plastic wrap and roll or
pat to 1 inch thick. Remove top piece of plastic wrap. Cut dough
with 3-inch round biscuit cutter, pressing straight down (don't
twist). If dough sticks, dip the cutter into gluten free flour
between each biscuit.
- Place biscuits close together on the prepared baking sheet. Brush
with remaining 1 Tbsp buttermilk. Bake for 18 minutes, or until
tops are golden brown. Remove from oven and cool on baking sheet
for 5 minutes.
Copyright ©, 2021, Steve Goldhaber


--- layout: default title: About ---
SIGGRAPH Student Services, colloquially known as S3, is an ACM SIGGRAPH committee whose primary mission is to bring additional value to the student members of SIGGRAPH.
Established in 2007, the SIGGRAPH Student Services, colloquially known as S3 is an ACM SIGGRAPH committee whose primary mission is to bring additional value to the student members of SIGGRAPH. The Student Services Committee also provides continuity and institutional memory for the student volunteer and intern programs at SIGGRAPH and SIGGRAPH Asia and collaborates with other SIGGRAPH entities (conferences, committees, etc.) on issues that affect student members. S3 currently maintains and is in the process of expanding three key programs - resume and reel reviews, mentoring for ACM SIGGRAPH student members known as MentorMe, and a series of webinars.


Pages
The generated endfiles will be available at the build/ folder. All other folders are available here for development purposes.
The generated endfiles will be available at the build/ folder. All other folders are available here for development purposes.


Sweet Free Stuff
///////////////////////////////////////////
Free CONAN360 Cardboard Virtual Reality Viewer
Posted: 08 Jul 2016 10:15 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Click on Request a VR Viewer and full out the form. Free CONAN360°
Cardboard Virtual Reality Viewer
The post Free CONAN360° Cardboard Virtual Reality Viewer appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Gatorade Prime Fuel Bar at Kroger
Posted: 08 Jul 2016 09:28 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Load the coupon to your shoppers card today only (7/8), and use by 7/24.
Free Gatorade Prime Fuel Bar at Kroger Affiliate Stores
The post Free Gatorade Prime Fuel Bar at Kroger appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to Digital Photo Magazine
Posted: 08 Jul 2016 03:05 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Subscription to Digital Photo Magazine
The post Free Subscription to Digital Photo Magazine appeared first on
SweetFreeStuff.com.


| Total net profit | -4.85 | Gross profit | 0.42 | Gross loss | -5.27 |
| Profit factor | 0.08 | Expected payoff | -0.35 | ||
| Absolute drawdown | -4.85 | Maximal drawdown (%) | 4.27 (-736.21%) | ||
| Total trades | 14 | Profit trades (% of total) | 1 (7.14%) | Loss trades (% of total) | 13 (92.86%) |
| Long positions (won %) | 6 (16.67%) | Short positions (won %) | 8 (0.0%) | ||
| Largest | profit trade | 0.42 | loss trade | -0.68 | |
| Average | profit trade | 0.42 | loss trade | -0.41 | |
| Minimum | profit trade | 0.42 | loss trade | -0.06 | |
| Maximum | take profit in pips | 72.4 | stop loss in pips | -57.7 | |
| Average | take profit in pips | 38.8 | stop loss in pips | -35.7 | |
| Minimum | take profit in pips | -5.6 | stop loss in pips | -16.3 | |
| Maximum | Reward-Risk | 3.6 | Duration in minutes | 184 | |
| Average | Reward-Risk | 1.4 | Duration in minutes | 34.6 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 0 | |
| Maximum | consecutive wins (profit in money) | 1.0 (0.42) | consecutive losses (loss in money) | 8.0 (-2.92) | |
| Average | consecutive wins | 1.0 | consecutive losses | 8.0 |
| Total net profit | -2.08 | Gross profit | 0.42 | Gross loss | -2.5 |
| Profit factor | 0.17 | Expected payoff | -0.35 | ||
| Absolute drawdown | -2.08 | Maximal drawdown (%) | 1.96 (-1633.33%) | ||
| Total trades | 6 | Profit trades (% of total) | 1 (16.67%) | Loss trades (% of total) | 5 (83.33%) |
| Largest | profit trade | 0.42 | loss trade | -0.68 | |
| Average | profit trade | 0.42 | loss trade | -0.5 | |
| Minimum | profit trade | 0.42 | loss trade | -0.06 | |
| Maximum | take profit in pips | 48.9 | stop loss in pips | -57.7 | |
| Average | take profit in pips | 28.7 | stop loss in pips | -47.9 | |
| Minimum | take profit in pips | -5.6 | stop loss in pips | -41.7 | |
| Maximum | Reward-Risk | 1.2 | Duration in minutes | 184.0 | |
| Average | Reward-Risk | 0.7 | Duration in minutes | 49.5 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 13.0 | |
| Maximum | consecutive wins (profit in money) | 1.0 (0.42) | consecutive losses (loss in money) | 4.0 (-1.96) | |
| Average | consecutive wins | 1.0 | consecutive losses | 1.0 |
| Total net profit | -2.77 | Gross profit | 0.0 | Gross loss | -2.77 |
| Profit factor | 0.0 | Expected payoff | -0.35 | ||
| Absolute drawdown | -2.77 | Maximal drawdown (%) | 2.19 (-377.59%) | ||
| Total trades | 8 | Profit trades (% of total) | 0 (0.0%) | Loss trades (% of total) | 8 (100.0%) |
| Largest | profit trade | 0.0 | loss trade | -0.58 | |
| Average | profit trade | 0.0 | loss trade | -0.35 | |
| Minimum | profit trade | 0.0 | loss trade | -0.22 | |
| Maximum | take profit in pips | 72.4 | stop loss in pips | -44.1 | |
| Average | take profit in pips | 46.4 | stop loss in pips | -26.6 | |
| Minimum | take profit in pips | 16.0 | stop loss in pips | -16.3 | |
| Maximum | Reward-Risk | 3.6 | Duration in minutes | 84.0 | |
| Average | Reward-Risk | 2.0 | Duration in minutes | 23.5 | |
| Minimum | Reward-Risk | Duration in minutes | 0.0 | ||
| Maximum | consecutive wins (profit in money) | 0.0 (0.0) | consecutive losses (loss in money) | 8.0 (-2.77) | |
| Average | consecutive wins | 0.0 | consecutive losses | 8.0 |


Class: Aws::WAFV2::Types::LoggingConfiguration
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb |
Overview
Defines an association between logging destinations and a web ACL
resource, for logging from ::Aws::WAF
. As part of the association, you can
specify parts of the standard logging fields to keep out of the logs
and you can specify filters so that you log only a subset of the
logging records.
You can access information about the traffic that ::Aws::WAF
inspects using
the following steps:
Create your logging destination. You can use an Amazon CloudWatch Logs log group, an Amazon Simple Storage Service (Amazon S3) bucket, or an Amazon Kinesis Data Firehose.
The name that you give the destination must start with
aws-waf-logs-
. Depending on the type of destination, you might need to configure additional settings or permissions.For configuration requirements and pricing information for each destination type, see Logging web ACL traffic in the WAF Developer Guide.
Associate your logging destination to your web ACL using a
PutLoggingConfiguration
request.
When you successfully enable logging using a PutLoggingConfiguration
request, ::Aws::WAF
creates an additional role or policy that is required to
write logs to the logging destination. For an Amazon CloudWatch Logs
log group, ::Aws::WAF
creates a resource policy on the log group. For an
Amazon S3 bucket, ::Aws::WAF
creates a bucket policy. For an Amazon Kinesis
Data Firehose, ::Aws::WAF
creates a service-linked role.
For additional information about web ACL logging, see Logging web ACL traffic information in the WAF Developer Guide.
Constant Summary
Instance Attribute Summary
-
#log_destination_configs ⇒ Array<String>
rw
The logging destination configuration that you want to associate with the web ACL.
-
#logging_filter ⇒ Types::LoggingFilter
rw
Filtering that specifies which web requests are kept in the logs and which are dropped.
-
#managed_by_firewall_manager ⇒ Boolean
rw
Indicates whether the logging configuration was created by Firewall Manager, as part of an
::Aws::WAF
policy configuration. -
#redacted_fields ⇒ Array<Types::FieldToMatch>
rw
The parts of the request that you want to keep out of the logs.
-
#resource_arn ⇒ String
rw
The Amazon
::Aws::WAFV2::Resource
Name (ARN) of the web ACL that you want to associate withLogDestinationConfigs
.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Structure#to_h. |
Instance Attribute Details
#log_destination_configs ⇒ Array
<String
> (rw)
The logging destination configuration that you want to associate with the web ACL.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4852
class LoggingConfiguration < Struct.new( :resource_arn, :log_destination_configs, :redacted_fields, :managed_by_firewall_manager, :logging_filter) SENSITIVE = [] include Aws::Structure end
#logging_filter ⇒ Types::LoggingFilter (rw)
Filtering that specifies which web requests are kept in the logs and which are dropped. You can filter on the rule action and on the web request labels that were applied by matching rules during web ACL evaluation.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4852
class LoggingConfiguration < Struct.new( :resource_arn, :log_destination_configs, :redacted_fields, :managed_by_firewall_manager, :logging_filter) SENSITIVE = [] include Aws::Structure end
#managed_by_firewall_manager ⇒ Boolean
(rw)
Indicates whether the logging configuration was created by Firewall
Manager, as part of an ::Aws::WAF
policy configuration. If true, only
Firewall Manager can modify or delete the configuration.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4852
class LoggingConfiguration < Struct.new( :resource_arn, :log_destination_configs, :redacted_fields, :managed_by_firewall_manager, :logging_filter) SENSITIVE = [] include Aws::Structure end
#redacted_fields ⇒ Array
<Types::FieldToMatch> (rw)
The parts of the request that you want to keep out of the logs.
For example, if you redact the SingleHeader
field, the HEADER
field in the logs will be REDACTED
for all rules that use the
SingleHeader
FieldToMatch
setting.
Redaction applies only to the component that's specified in the
rule's FieldToMatch
setting, so the SingleHeader
redaction
doesn't apply to rules that use the Headers
FieldToMatch
.
UriPath
,
QueryString
, SingleHeader
, and Method
.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4852
class LoggingConfiguration < Struct.new( :resource_arn, :log_destination_configs, :redacted_fields, :managed_by_firewall_manager, :logging_filter) SENSITIVE = [] include Aws::Structure end
#resource_arn ⇒ String
(rw)
The Amazon ::Aws::WAFV2::Resource
Name (ARN) of the web ACL that you want to
associate with LogDestinationConfigs
.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4852
class LoggingConfiguration < Struct.new( :resource_arn, :log_destination_configs, :redacted_fields, :managed_by_firewall_manager, :logging_filter) SENSITIVE = [] include Aws::Structure end


Your letter was sent successfully!
A response will be sent to {{email}}
What you wrote:
{{{letterContent}}}


Try 6 months of Spotify Premium for free by following these simple steps
by Joseph GreenTL;DR: Get six months of Spotify Premium for free when you spend more than £49 on Currys PC World.
We've been waiting a long time for Black Friday deals, and now it seems like all of that waiting was worth it. There are already loads of impressive deals, but some have gone under the radar.
One deal that may have escaped your attention is the free Spotify Premium promotion on Currys PC World. It's a really great offer, and one that is easy to redeem if you follow a few easy steps.
The first thing you need to do is purchase any laptop, video game, games console, gaming accessory, tablet, smart TV, smartwatch, or audio product for more than £49. You’ll then get a unique code when you’ve bought the qualifying product. This can be redeemed on the Spotify site.
The offer excludes Apple and Beats, and is only available to new premium Spotify customers. The deal is available throughout this busy shopping period, so you have plenty of time to consider your options.
Get six months of Spotify Premium with Currys PC World for Black Friday.
Currys PC World — 6 months of Spotify Premium with qualifying products See Details


- For whom, and not for Tybalt, Juliet pin’d.
- You, to remove that siege of grief from her,
- Betroth’d and would have married her perforce
- To County Paris. Then comes she to me,
- And with wild looks bid me devise some mean
- To rid her from this second marriage,
- Or in my cell there would she kill herself.
- Then gave I her (so tutor’d by my art)
- A sleeping potion, which so took effect
- As I intended, for it wrought on her
- The form of death. Mean time I writ to Romeo,
- That he should hither come as this dire night
- To help to take her from her borrowed grave,
- Being the time the potion’s force should cease.
- But he which bore my letter, Friar John,
- Was stayed by accident, and yesternight
- Return’d my letter back. Then all alone,
- At the prefixed hour of her waking,
- Came I to take her from her kindred’s vault,
- Meaning to keep her closely at my cell,
- Till I conveniently could send to Romeo.
- But when I came, some minute ere the time
- Of her awakening, here untimely lay
- The noble Paris and true Romeo dead.
- She wakes, and I entreated her come forth
- And bear this work of heaven with patience.
- But then a noise did scare me from the tomb,
- And she, too desperate, would not go with me,
- But as it seems, did violence on herself.
- All this I know, and to the marriage
- Her nurse is privy; and if aught in this
- Miscarried by my fault, let my old life
- Be sacrific’d some hour before his time,
- Unto the rigor of severest law.
- We still have known thee for a holy man.
- Where’s Romeo’s man? What can he say to this?
- I brought my master news of Juliet’s death,
- And then in post he came from Mantua
- To this same place, to this same monument.
- This letter he early bid me give his father,
- And threat’ned me with death, going in the vault,
- If I departed not and left him there.
- Give me the letter, I will look on it.
- Where is the County’s page that rais’d the watch?
- Sirrah, what made your master in this place?
- He came with flowers to strew his lady’s grave,
- And bid me stand aloof, and so I did.

- This letter doth make good the friar’s words,
- Their course of love, the tidings of her death;
- And here he writes that he did buy a poison
- Of a poor pothecary, and therewithal
- Came to this vault, to die and lie with Juliet.
- Where be these enemies? Capulet! Montague!

- And I for winking at your discords too
- Have lost a brace of kinsmen. All are punish’d.
- O brother Montague, give me thy hand.
- This is my daughter’s jointure, for no more
- Can I demand.
- But I can give thee more,
- For I will raise her statue in pure gold,
- That whiles Verona by that name is known,
- There shall no figure at such rate be set
- As that of true and faithful Juliet.
- As rich shall Romeo’s by his lady’s lie,
- Poor sacrifices of our enmity!
- A glooming peace this morning with it brings,
- The sun, for sorrow, will not show his head.
- Go hence to have more talk of these sad things;
- Some shall be pardon’d, and some punished:
- For never was a story of more woe
- Than this of Juliet and her Romeo.
Exeunt omnes.
BAL.
PAGE.
1. WATCH.
2. WATCH.
FRI. L.
3. WATCH.
PRIN.
Attendants
CAP.
LA. CAP.
MON.


BODY SNATCHERS A film review by Scott Renshaw Copyright 1994 Scott Renshaw
Starring: Gabrielle Anwar, Terry Kenney, Billy Wirth, Meg Tilly. Screenplay: Stuart Gordon, Dennis Paoli & Nicholas St. John. Director: Abel Ferrara.
Abel Ferrara's BODY SNATCHERS marks the third screen adaptation of Jack Finney's novel THE BODY SNATCHERS, and you'd think that there wouldn't be all that much new to say about pod people by now. Don Siegel's 1956 INVASION OF THE BODY SNATCHERS captured small-town menace; Phillip Kaufman's 1978 version transferred the story to San Francisco for a metaphor for big city alienation. The scene for this latest adaptation is an army base, and the metaphor has changed as well. Somewhere in BODY SNATCHERS is a poke at the military mindset, but it's buried beneath layers of atmosphere, atmosphere which works but doesn't make that extra leap to real terror.
BODY SNATCHERS opens as the Malone family makes its way towards Fort Daly, Alabama. Dad Steve (Terry Kenney) is an Environmental Protection Agency investigator sent to check out toxic waste storage at the base, and he brings along daughter Marti (Gabrielle Anwar), new wife Carol (Meg Tilly) and Carol's six-year-old son Andy (Reilly Murphy). It's not long after they arrive before it becomes clear that things aren't quite right at Fort Daly. The base physician (Forest Whitaker) notes a preponderance of paranoid episodes among soldiers and family members, and everyone seems just a bit too serene. Eventually, the full extent of the invasion is obvious to the Malones, and a young pilot (Billy Wirth) becomes the only person they can trust to help them escape.
Director Ferrara (BAD LIEUTENANT) has crafted a stylish and spooky look for the film, filtered in dark ambers and deep blues, full of shadows and twisted angles. The issue of identity is always present, as actors frequently appear only as silhouettes against the light, or veiled by other shadows. Some early scenes highlighting the pod people's uniformity, particularly a frighteningly comic scene where young Andy realizes the other kids in day care lack a certain artistic creativity, are extremely well-handled. Ferrara also manages the tricky task of directing his actors so that the transformed characters appear clearly to have changed without playing the stock blank-faced automoton. Technically, BODY SNATCHERS hits just about all of its marks, particularly with its rather graphic image of what happens to the remains of a human body after the transformation has taken place.
Yet while BODY SNATCHERS held my attention, it didn't do anything particularly interesting which seemed to warrand a re-telling of this already twice-told tale. The idea behind setting the invasion on a military base is sound; if everyone in the Army starts acting like drones with a singular purpose, who's going to notice? The screenwriters throw in one speech by the base commander (FULL METAL JACKET's R. Lee Ermey) which seems designed to emphasize this point, but Ferrara doesn't do much with it. Familial alienation seems to be a more prevalent theme, as Marti deals with her step-family, and her new friend Jenn (Christine Elise) copes with an alcoholic mother. No single theme really drives this BODY SNATCHERS, nor are any of the characters interesting enough to pull it along with them.
Structurally, BODY SNATCHERS suffers from a climax which seems far too drawn out. Once the Malones start running, the tension should continue to build, but too many of the scenes involving confrontations between "real" humans and the 'Snatchers lack punch. There is one wickedly chilling moment of revelation, but it is isolated. BODY SNATCHERS does a fantastic job of establishing its tone, and it does offer a few decent scares. The problem with Ferrara's pacing is that it's like the Body Snatchers themselves: too cool when the adrenaline should be flowing.
On the Renshaw scale of 0 to 10 pods: 5.
-- Scott Renshaw Stanford University Office of the General Counsel
.
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


JavaScript - Testing Prototype
Testing JavaScript Framework Libraries - Prototype
Including Prototype
To test a JavaScript library, you need to include it in your web page.
To include a library, use the

.
.
.
Prototype Described
Prototype provides functions to make HTML DOM programming easier.
Like jQuery, Prototype has its $() function.
The $() function accepts HTML DOM element id values (or DOM elements), and adds new functionality to DOM objects.
Unlike jQuery, Prototype has no ready() method to take the place of window.onload(). Instead, Prototype adds extensions to the browser and the HTML DOM.
In JavaScript, you can assign a function to handle the window's load event:
The JavaScript Way:
function myFunction() {
var obj = document.getElementById("h01");
obj.innerHTML = "Hello Prototype";
}
onload = myFunction;
The Prototype equivalent is different:
The Prototype Way:
function myFunction() {
$("h01").insert("Hello Prototype!");
}
Event.observe(window, "load", myFunction);
Event.observe() accepts three arguments:
-
The HTML DOM or BOM (Browser Object Model) object you want to handle
-
The event you want to handle
-
The function you want to call
Testing Prototype
Try the following example:
Example
<!DOCTYPE html>

Also try this one:
Example
<!DOCTYPE html>

As you can see from the example above, like jQuery, Prototype allows chaining.
Chaining is a handy way to perform multiple tasks on one object.


- getAccount() - Method in class deepdive.cnm.edu.coins.application.CoinsApplication
-
Gets the current account associated with GoogleSignIn
- getAmountWon() - Method in class deepdive.cnm.edu.coins.model.entities.Play
-
Gets amount won.
- getClient() - Method in class deepdive.cnm.edu.coins.application.CoinsApplication
-
Gets the current client of GoogleSignIn
- getCoinDao() - Method in class deepdive.cnm.edu.coins.model.db.CoinsDB
-
Gets coin dao.
- getCoinId() - Method in class deepdive.cnm.edu.coins.model.entities.Coin
-
Gets coin id.
- getCoinNumber() - Method in class deepdive.cnm.edu.coins.model.entities.Coin
-
Gets coin number.
- getCoins() - Method in class deepdive.cnm.edu.coins.model.entities.User
-
Gets coins.
- getInstance() - Static method in class deepdive.cnm.edu.coins.application.CoinsApplication
-
Gets the current instance of the CoinsApplication
- getInstance(Context) - Static method in class deepdive.cnm.edu.coins.model.db.CoinsDB
-
Gets the instance of CoinsDB
- getItemCount() - Method in class deepdive.cnm.edu.coins.adapter.NewsAdapter
-
- getPlayDao() - Method in class deepdive.cnm.edu.coins.model.db.CoinsDB
-
Gets play dao.
- getPlayId() - Method in class deepdive.cnm.edu.coins.model.entities.Coin
-
Gets play id.
- getPlayId() - Method in class deepdive.cnm.edu.coins.model.entities.Play
-
Gets play id.
- getPlayId() - Method in class deepdive.cnm.edu.coins.model.entities.User
-
Gets play id.
- getTimePlayed() - Method in class deepdive.cnm.edu.coins.model.entities.User
-
Gets time played.
- getUser() - Static method in class deepdive.cnm.edu.coins.activities.SignInActivity
-
Get the current instance of the user associated with the application
- getUserDao() - Method in class deepdive.cnm.edu.coins.model.db.CoinsDB
-
Gets user dao.
- getUserId() - Method in class deepdive.cnm.edu.coins.model.entities.User
-
Gets user id.
- getUserName() - Method in class deepdive.cnm.edu.coins.model.entities.User
-
Gets user name.
- getValue() - Method in class deepdive.cnm.edu.coins.model.entities.Coin
-
Gets value.


Today, the day is , and it is sunny here in . Honestly, it's almost always sunny. It can get rather boring.
And a whole bunch of other things, that I'm not sure if I just liked it because I was a kid, or because it was actually a lot of fun.
"Computers are useless, they can only give you answers"
Next week I will go to the ..... Visit Google.com! I hope it's fun.


LSP Docker mode with multiple clients
LSP Docker is a fantastic extension if you need to make use of build containers for development. It creates LSP-mode clients in Emacs that allow a language server to run within a given Docker container/image rather than in your host machine. As someone who deals with this sort of setup at work, I was very keen to get this working right!
It's not a particularly easy extension to get working though. The main issue I found was needing to deal with multiple instances of the same type of client (clangd in my case). I placed an .lsp-docker.yml
in each of the LSP projects I wanted to use my client from with something along the lines of:
lsp: server: type: docker subtype: image # Or image. container subtype means launching an existing container # image subtype means creating a new container each time from a specified image name: <image-i-manually-built>:<version> # Must be unique across all language servers container-name: <unique container name> server: clangd # Server id of a registered server (by lsp-mode) launch_command: "clangd" # Launch command of the language server # (selected by a server id specified above) in stdio mode # Note: launch_command is not used with container subtype servers # as a command is embedded in a container itself and serves as an entrypoint mappings: - source: "<path to source on my host>" destination: "<path to source within the container>"
As you will notice if you try having multiple repos with slight variations of this file, they all extend from the clangd
server and as such, each of the clients will be a candidate client for each of the repos. This caused a problem for me - a client I've created for repo A had path mappings incompatible with repo B, which had path mappings of its own.
After much faffing around with settings and manually debugging both LSP Docker and LSP itself, I figured I could either come up with a way to bump up the priority of the one client I wanted to use at any one time, or I could use the lsp-enabled-clients
variable to whitelist the one client I wanted to use.
Using the priority works, but is not ideal. In LSP Docker, all clients have a base priority of 100. If I bumped one client to a slightly higher priority (e.g., 101), next time I want to use yet another client I need to either reset the old client back to 100 and the new new client to 101. Hardly ideal and involves restarting the LSP workspace multiple times.
Enabling/disabling clients seemed like the way to go. This can be achieved easily with directory-local configs in Emacs. For example, by placing the following in a .dir-locals.el
in the root of one of the /home/tiago/git/myrepo1/
and a similar one in myrepo2
with the client name adjusted to reflect the path/Docker image difference:
((c++-mode . ((lsp-enabled-clients . (home-tiago-git-myrepo1-clangd-docker)))))
Now, this came with an issue that wrecked my brain for a while. After doing this, I'd go into myrepo1
and it'd all be fine, then I'd step into myrepo2
and LSP would still be trying to load the image from myrepo1
! Not only that, but at a much more essential level, Emacs wasn't loading my directory local configs at all!
As it turns out, I had configured emacs with a hook to load LSP for the C++ major mode. The way I'd done this was with a use-package
hook as follows:
(use-package lsp-mode :ensure t :init (setq lsp-keymap-prefix "C-c l") :hook ((c++-mode . lsp)))
This meant that as soon as I was opening a file in myrepo2
, LSP was being loaded straight away and failing to load (because it was using the wrong client which didn't have the right path mappings), and in the process causing the dir local variables to fail to load as well!
Imagine my confusion as I had directory local variables that just weren't being applied!
The solution is deceptively simple: load LSP in deferred mode. This gives Emacs the chance to first apply the directory local variables, and then let LSP load, by which point LSP will see the enabled clients variable and load the right client. You can do this with:
(use-package lsp-mode :ensure t :init (setq lsp-keymap-prefix "C-c l") :hook ((c++-mode . lsp-deferred)))
Et voila! LSP Docker working just fine 😉
Comments


@import play.i18n._ @main(title=Messages.get("welcome.test")) {
It's alive! Wesby has been succesfully installed, you may now configure your data portal following the instructions below.
The configuration wizard is not ready yet, but you can still manually setup Wesby. You can learn how to do it reading the manual configuration section.
Wesby comes preconfigured with a few SPARQL endpoints so you can see how it works before deploying your own data portal.
You can choose between several demo portals in the menu below.
http://dbpedia.org/sparqlExample resources:
Fill the following form and press the green button to generate your data portal.
To manually configure your data portal you may modify the default configuration settings found in application.conf
.
You can find this file in the conf
folder, inside the Wesby installation folder.
This file should should include some documentation comments to ease the process.
Wesby is fully customizable, allowing you to adapt your data portal by means of standard HTML and CSS templates.
If you just want to adapt the CSS styles to your site, you can override the default styles by adding your
custom styles to the main.css
file, inside the public/
folder.
By default, Wesby uses the Foundation Framework to simplify the
portal building process and provide a responsive interface. You can choose not to use this framework by modifying
the stylesheets in the main.scala.html
template.
In the following sections you can find more information and help about the customization process, Wesby's anatomy, and how to customize the HTML templates.
Wesby is built on top of Play Framework, which
uses the Twirl template engine to
provide a customisable user interface. This template engine binds the resources data to the HTML templates using the
special character @@
. In the templates you will find some code preceded with that character, where
the data will be inserted by the server.
In the folder Wesby/app/views/
, you can find the following HTML templates that you can modify,
inside each template you may find some comments to help you with the customization process:
This is the root template. It defines the header, the styles and
the scripts applied to every page in the data portal. The content of the other templates is inserted by
the server into the @@content
tag. This template is where you can replace the Foundation
Framework if you like.
It is applied to the resources of the data portal. By default it shows a table listing the properties and its values of the retrieved RDF resource.
Template for the search results page.
This is the template for this page that you are reading. By
default, it is configured as the Index page in the application.conf
file, but you can replace it
with your own index page once you've finished the configuration process.
You can use this template to place the content of the index page
for your data portal. Once you've finished the configuration you can replace the value of the wesby.index
property in application.conf
by "/index"
, so the data portal will display it
as the index page instead of this welcome page.
Please review the configuration before proceeding
Name of the portal: Awesome Data Portal
SPARQL endpoint URL: http://example.org/sparql
Host URL: http://example.org/


exp_family
objects contain all required information in an exponential family to perform the E-step. The exponential function is encoded by
$$h(p; \mu) = \exp\{(\eta(\mu) - \eta(\mu^{*})) g(p) - (A(\mu) - A(\mu^{*}))\}$$
where \(g(p)\) is an arbitrary transformation, \(\mu\) is the
mean parameter, \(\eta\) is the natural parameter,
and \(A(\mu)\) is the partition function. The extra redundant
parameter \(\mu^{*}\) is to guarantee that \(U([0, 1])\)
belongs to the class.
gen_exp_family(g, ginv, eta, mustar, A, name = NULL, family = NULL) beta_family() inv_gaussian_family()
| g | a function. An transformation of p-values |
|---|---|
| ginv | a function. The inverse function of |
| eta | a function. The natural parameter as a function of the mean parameter |
| mustar | a scalar. The mean parameter that gives \(U([0, 1])\) |
| A | a function. The partition function |
| name | a string. A name for the family. NULL by default |
| family | an object of class " |
an object of class "exp_family". This includes all inputs and h
, the density function.
Beta family (beta_family()
): modeling p-values as Beta-distributed random variables, i.e. \(g(p) = -log(p)\), \(\eta(\mu) = -1 / \mu\), \(\mu* = 1\), \(A(\mu) = log(\mu)\), name = "beta" and family = Gamma(). Beta-family is highly recommended for general problems and used as default.
Inverse-gaussian family (inv_gaussian_family()
): modeling p-values as transformed z-scores, i.e. \(g(p) = \Phi^{-1}(p) (\Phi is the c.d.f. of a standard normal random variable)\), \(\eta(\mu) = \mu\), \(\mu* = 0\), \(A(\mu) = \mu^2 / 2\), name = "inv_gaussian" and family = gaussian().


{% extends "base.html" %} {% block content %}
MIT License ----------- Copyright (c) 2020 Przemyslaw Sosnowski (https://techfreak.pl) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Create Account
Username:
Password:
Delete Account
Username:
Password:
Change Account Name
Username:
Password:
New Name:
Change Account Password
Username:
Password:
New Pass:
Extract All Account Information
Username:
Password:
Exctract Specified Account Information
Username:
Password:
Key:
Store/Change Multiple Account Information Keys
Username:
Password:
Key0:
Key1:
Key2:
Store/Change One Account Information Key
Username:
Password:
Key:
Value:


On 31 March 2017, 10 new articles were published in 8 journals.
From “real Rape” to Real Justice: A Systematic Review of Police Officers' Rape Myth Beliefs
Classification of Maltreatment-Related Mortality By Child Death Review Teams: How Reliable Are They?
Exploring the Relationship Between Dual Diagnosis and Recidivism in Drug Court Participants
The Limit-Experience and Self-Deradicalisation: the Example of Radical Salafi Youth in Tunisia
Frontline Reports: Emergent Topics For Scholarly Development
Gender on the Run: Wanted Latinas in A Southern California Barrio
Jihadi-Salafism in Jordan and the Syrian Conflict: Divisions Overcome Unity
Note: although this article was published on 17 January 2017, the publisher only added it to the journal RSS feed on 31 March 2017, which is why it is shown in the list of articles for that date.


Spotify Data Analyser
Life Time Analytics:
🕒 Play Time:
Top Songs:
Top Artists:
Years:
Yearly Analytics:
🕒 Play Time:
Top Songs:
Top Artists:
Months:
Monthly Analytics:
🕒 Play Time:
Top Songs
Song Name
Artist
Play Count
SONG_NAME
SONG_ARTIST
PLAY_COUNT
Top Artists
Artist Name
Play Count
ARTIST_NAME
PLAY_COUNT
Days:


The class for handling configuration files.
This method is intended for puppet internal use only; it is a convenience method that returns reasonable application default settings values for a given run_mode.
# File lib/puppet/settings.rb, line 32 def self.app_defaults_for_run_mode(run_mode) { :name => run_mode.to_s, :run_mode => run_mode.name, :confdir => run_mode.conf_dir, :vardir => run_mode.var_dir, :rundir => run_mode.run_dir, :logdir => run_mode.log_dir, } end
A utility method (public, is used by application.rb and perhaps elsewhere) that munges a command-line option string into the format that Puppet.settings expects. (This mostly has to deal with handling the “no-” prefix on flag/boolean options).
@param [String] opt the command line option that we are munging @param [String, TrueClass, FalseClass] the value for the setting (as determined by the OptionParser)
# File lib/puppet/settings.rb, line 226 def self.clean_opt(opt, val) # rewrite --[no-]option to --no-option if that's what was given if opt =~ /\[no-\]/ and !val opt = opt.gsub(/\[no-\]/,'no-') end # otherwise remove the [no-] prefix to not confuse everybody opt = opt.gsub(/\[no-\]/, '') [opt, val] end
# File lib/puppet/settings.rb, line 43 def self.default_certname() hostname = hostname_fact domain = domain_fact if domain and domain != "" fqdn = [hostname, domain].join(".") else fqdn = hostname end fqdn.to_s.gsub(/\.$/, '') end
# File lib/puppet/settings.rb, line 62 def self.default_config_file_name "puppet.conf" end
# File lib/puppet/settings.rb, line 58 def self.domain_fact() Facter["domain"].value end
# File lib/puppet/settings.rb, line 54 def self.hostname_fact() Facter["hostname"].value end
Create a new collection of config settings.
# File lib/puppet/settings.rb, line 67 def initialize @config = {} @shortnames = {} @created = [] @searchpath = nil # Mutex-like thing to protect @values @sync = Sync.new # Keep track of set values. @values = Hash.new { |hash, key| hash[key] = {} } # Hold parsed metadata until run_mode is known @metas = {} # And keep a per-environment cache @cache = Hash.new { |hash, key| hash[key] = {} } # The list of sections we've used. @used = [] @hooks_to_call_on_application_initialization = [] @translate = Puppet::Settings::ValueTranslator.new @config_file_parser = Puppet::Settings::ConfigFile.new(@translate) end
Retrieve a config value
# File lib/puppet/settings.rb, line 96 def [](param) value(param) end
Set a config value. This doesn’t set the defaults, it sets the value itself.
# File lib/puppet/settings.rb, line 101 def []=(param, value) set_value(param, value, :memory) end
Generate the list of valid arguments, in a format that GetoptLong can understand, and add them to the passed option list.
# File lib/puppet/settings.rb, line 107 def addargs(options) # Add all of the config parameters as valid options. self.each { |name, setting| setting.getopt_args.each { |args| options << args } } options end
# File lib/puppet/settings.rb, line 237 def app_defaults_initialized? @app_defaults_initialized end
Is our parameter a boolean parameter?
# File lib/puppet/settings.rb, line 128 def boolean?(param) param = param.to_sym @config.include?(param) and @config[param].kind_of?(BooleanSetting) end
Remove all set values, potentially skipping cli values.
# File lib/puppet/settings.rb, line 134 def clear @sync.synchronize do unsafe_clear end end
This is mostly just used for testing.
# File lib/puppet/settings.rb, line 160 def clearused @cache.clear @used = [] end
Do variable interpolation on the value.
# File lib/puppet/settings.rb, line 273 def convert(value, environment = nil) return nil if value.nil? return value unless value.is_a? String newval = value.gsub(/\$(\w+)|\$\{(\w+)\}/) do |value| varname = $2 || $1 if varname == "environment" and environment environment elsif varname == "run_mode" preferred_run_mode elsif pval = self.value(varname, environment) pval else raise InterpolationError, "Could not find value for #{value}" end end newval end
Define a group of settings.
@param [Symbol] section a symbol to use for grouping multiple settings together into a conceptual unit. This value
(and the conceptual separation) is not used very often; the main place where it will have a potential impact is when code calls Settings#use method. See docs on that method for further details, but basically that method just attempts to do any preparation that may be necessary before code attempts to leverage the value of a particular setting. This has the most impact for file/directory settings, where #use will attempt to "ensure" those files / directories.
@param [Hash] defs the settings to be defined. This argument is a hash of hashes; each key should be a symbol,
which is basically the name of the setting that you are defining. The value should be another hash that specifies the parameters for the particular setting. Legal values include: [:default] => required; this is a string value that will be used as a default value for a setting if no other value is specified (via cli, config file, etc.) This string may include "variables", demarcated with $ or ${}, which will be interpolated with values of other settings. [:desc] => required; a description of the setting, used in documentation / help generation [:type] => not required, but highly encouraged! This specifies the data type that the setting represents. If you do not specify it, it will default to "string". Legal values include: :string - A generic string setting :boolean - A boolean setting; values are expected to be "true" or "false" :file - A (single) file path; puppet may attempt to create this file depending on how the settings are used. This type also supports additional options such as "mode", "owner", "group" :directory - A (single) directory path; puppet may attempt to create this file depending on how the settings are used. This type also supports additional options such as "mode", "owner", "group" :path - This is intended to be used for settings whose value can contain multiple directory paths, respresented as strings separated by the system path separator (e.g. system path, module path, etc.). [:mode] => an (optional) octal value to be used as the permissions/mode for :file and :directory settings [:owner] => optional owner username/uid for :file and :directory settings [:group] => optional group name/gid for :file and :directory settings
# File lib/puppet/settings.rb, line 809 def define_settings(section, defs) section = section.to_sym call = [] defs.each { |name, hash| raise ArgumentError, "setting definition for '#{name}' is not a hash!" unless hash.is_a? Hash name = name.to_sym hash[:name] = name hash[:section] = section raise ArgumentError, "Parameter #{name} is already defined" if @config.include?(name) tryconfig = newsetting(hash) if short = tryconfig.short if other = @shortnames[short] raise ArgumentError, "Parameter #{other.name} is already using short name '#{short}'" end @shortnames[short] = tryconfig end @config[name] = tryconfig # Collect the settings that need to have their hooks called immediately. # We have to collect them so that we can be sure we're fully initialized before # the hook is called. call << tryconfig if tryconfig.call_hook_on_define? @hooks_to_call_on_application_initialization << tryconfig if tryconfig.call_hook_on_initialize? } call.each { |setting| setting.handle(self.value(setting.name)) } end
Return a value’s description.
# File lib/puppet/settings.rb, line 293 def description(name) if obj = @config[name.to_sym] obj.desc else nil end end
# File lib/puppet/settings.rb, line 301 def each @config.each { |name, object| yield name, object } end
Iterate over each section name.
# File lib/puppet/settings.rb, line 308 def eachsection yielded = [] @config.each do |name, object| section = object.section unless yielded.include? section yield section yielded << section end end end
# File lib/puppet/settings.rb, line 399 def generate_config puts to_config true end
# File lib/puppet/settings.rb, line 404 def generate_manifest puts to_manifest true end
# File lib/puppet/settings.rb, line 165 def global_defaults_initialized?() @global_defaults_initialized end
Handle a command-line argument.
# File lib/puppet/settings.rb, line 326 def handlearg(opt, value = nil) @cache.clear if value.is_a?(FalseClass) value = "false" elsif value.is_a?(TrueClass) value = "true" end value &&= @translate[value] str = opt.sub(/^--/,'') bool = true newstr = str.sub(/^no-/, '') if newstr != str str = newstr bool = false end str = str.intern if @config[str].is_a?(Puppet::Settings::BooleanSetting) if value == "" or value.nil? value = bool end end set_value(str, value, :cli) end
# File lib/puppet/settings.rb, line 355 def include?(name) name = name.intern if name.is_a? String @config.include?(name) end
# File lib/puppet/settings.rb, line 241 def initialize_app_defaults(app_defaults) REQUIRED_APP_SETTINGS.each do |key| raise SettingsError, "missing required app default setting '#{key}'" unless app_defaults.has_key?(key) end app_defaults.each do |key, value| if key == :run_mode self.preferred_run_mode = value else set_value(key, value, :application_defaults) end end apply_metadata call_hooks_deferred_to_application_initialization @app_defaults_initialized = true end
# File lib/puppet/settings.rb, line 169 def initialize_global_settings(args = []) raise Puppet::DevError, "Attempting to initialize global default settings more than once!" if global_defaults_initialized? # The first two phases of the lifecycle of a puppet application are: # 1) Parse the command line options and handle any of them that are # registered, defined "global" puppet settings (mostly from defaults.rb). # 2) Parse the puppet config file(s). parse_global_options(args) parse_config_files @global_defaults_initialized = true end
Return a given object’s file metadata.
# File lib/puppet/settings.rb, line 420 def metadata(param) if obj = @config[param.to_sym] and obj.is_a?(FileSetting) return [:owner, :group, :mode].inject({}) do |meta, p| if v = obj.send(p) meta[p] = v end meta end else nil end end
Make a directory with the appropriate user, group, and mode
# File lib/puppet/settings.rb, line 434 def mkdir(default) obj = get_config_file_default(default) Puppet::Util::SUIDManager.asuser(obj.owner, obj.group) do mode = obj.mode || 0750 Dir.mkdir(obj.value, mode) end end
Generate the list of valid arguments, in a format that OptionParser can understand, and add them to the passed option list.
# File lib/puppet/settings.rb, line 118 def optparse_addargs(options) # Add all of the config parameters as valid options. self.each { |name, setting| options << setting.optparse_args } options end
Return all of the parameters associated with a given section.
# File lib/puppet/settings.rb, line 461 def params(section = nil) if section section = section.intern if section.is_a? String @config.find_all { |name, obj| obj.section == section }.collect { |name, obj| name } else @config.keys end end
Iterate across all of the objects in a given section.
# File lib/puppet/settings.rb, line 634 def persection(section) section = section.to_sym self.each { |name, obj| if obj.section == section yield obj end } end
The currently configured run mode that is preferred for constructing the application configuration.
# File lib/puppet/settings.rb, line 444 def preferred_run_mode @preferred_run_mode_name || :user end
PRIVATE! This only exists because we need a hook to validate the run mode when it’s being set, and
it should never, ever, ever, ever be called from outside of this file.
This method is also called when –run_mode MODE is used on the command line to set the default
@param mode [String|Symbol] the name of the mode to have in effect @api private
# File lib/puppet/settings.rb, line 454 def preferred_run_mode=(mode) mode = mode.to_s.downcase.intern raise ValidationError, "Invalid run mode '#{mode}'" unless [:master, :agent, :user].include?(mode) @preferred_run_mode_name = mode end
Prints the contents of a config file with the available config settings, or it prints a single value of a config setting.
# File lib/puppet/settings.rb, line 368 def print_config_options env = value(:environment) val = value(:configprint) if val == "all" hash = {} each do |name, obj| val = value(name,env) val = val.inspect if val == "" hash[name] = val end hash.sort { |a,b| a[0].to_s <=> b[0].to_s }.each do |name, val| puts "#{name} = #{val}" end else val.split(/\s*,\s*/).sort.each do |v| if include?(v) #if there is only one value, just print it for back compatibility if v == val puts value(val,env) break end puts "#{v} = #{value(v,env)}" else puts "invalid parameter: #{v}" return false end end end true end
# File lib/puppet/settings.rb, line 409 def print_configs return print_config_options if value(:configprint) != "" return generate_config if value(:genconfig) generate_manifest if value(:genmanifest) end
# File lib/puppet/settings.rb, line 415 def print_configs? (value(:configprint) != "" || value(:genconfig) || value(:genmanifest)) && true end
# File lib/puppet/settings.rb, line 1031 def readwritelock(default, *args, &bloc) file = value(get_config_file_default(default).name) tmpfile = file + ".tmp" sync = Sync.new raise Puppet::DevError, "Cannot create #{file}; directory #{File.dirname(file)} does not exist" unless FileTest.directory?(File.dirname(tmpfile)) sync.synchronize(Sync::EX) do File.open(file, ::File::CREAT|::File::RDWR, 0600) do |rf| rf.lock_exclusive do if File.exist?(tmpfile) raise Puppet::Error, ".tmp file already exists for #{file}; Aborting locked write. Check the .tmp file and delete if appropriate" end # If there's a failure, remove our tmpfile begin writesub(default, tmpfile, *args, &bloc) rescue File.unlink(tmpfile) if FileTest.exist?(tmpfile) raise end begin File.rename(tmpfile, file) rescue => detail Puppet.err "Could not rename #{file} to #{tmpfile}: #{detail}" File.unlink(tmpfile) if FileTest.exist?(tmpfile) end end end end end
Reparse our config file, if necessary.
# File lib/puppet/settings.rb, line 644 def reparse_config_files if files if filename = any_files_changed? Puppet.notice "Config file #{filename} changed; triggering re-parse of all config files." parse_config_files reuse end end end
# File lib/puppet/settings.rb, line 676 def reuse return unless defined?(@used) @sync.synchronize do # yay, thread-safe new = @used @used = [] self.use(*new) end end
The order in which to search for values.
# File lib/puppet/settings.rb, line 686 def searchpath(environment = nil) if environment [:cli, :memory, environment, :run_mode, :main, :application_defaults] else [:cli, :memory, :run_mode, :main, :application_defaults] end end
Get a list of objects per section
# File lib/puppet/settings.rb, line 695 def sectionlist sectionlist = [] self.each { |name, obj| section = obj.section || "puppet" sections[section] ||= [] sectionlist << section unless sectionlist.include?(section) sections[section] << obj } return sectionlist, sections end
# File lib/puppet/settings.rb, line 719 def service_group_available? return @service_group_available if defined?(@service_group_available) if self[:group] group = Puppet::Type.type(:group).new :name => self[:group], :audit => :ensure @service_group_available = group.exists? else @service_group_available = false end end
# File lib/puppet/settings.rb, line 707 def service_user_available? return @service_user_available if defined?(@service_user_available) if self[:user] user = Puppet::Type.type(:user).new :name => self[:user], :audit => :ensure @service_user_available = user.exists? else @service_user_available = false end end
Allow later inspection to determine if the setting was set on the command line, or through some other code path. Used for the `dns_alt_names` option during cert generate. –daniel 2011-10-18
# File lib/puppet/settings.rb, line 734 def set_by_cli?(param) param = param.to_sym !@values[:cli][param].nil? end
# File lib/puppet/settings.rb, line 739 def set_value(param, value, type, options = {}) param = param.to_sym if !(setting = @config[param]) if options[:ignore_bad_settings] return else raise ArgumentError, "Attempt to assign a value to unknown configuration parameter #{param.inspect}" end end setting.handle(value) if setting.has_hook? and not options[:dont_trigger_handles] @sync.synchronize do # yay, thread-safe @values[type][param] = value @cache.clear clearused # Clear the list of environments, because they cache, at least, the module path. # We *could* preferentially just clear them if the modulepath is changed, # but we don't really know if, say, the vardir is changed and the modulepath # is defined relative to it. We need the defined?(stuff) because of loading # order issues. Puppet::Node::Environment.clear if defined?(Puppet::Node) and defined?(Puppet::Node::Environment) end value end
Deprecated; use define_settings instead
# File lib/puppet/settings.rb, line 775 def setdefaults(section, defs) Puppet.deprecation_warning("'setdefaults' is deprecated and will be removed; please call 'define_settings' instead") define_settings(section, defs) end
Return an object by name.
# File lib/puppet/settings.rb, line 320 def setting(param) param = param.to_sym @config[param] end
check to see if a short name is already defined
# File lib/puppet/settings.rb, line 361 def shortinclude?(short) short = short.intern if name.is_a? String @shortnames.include?(short) end
Convert the settings we manage into a catalog full of resources that model those settings.
# File lib/puppet/settings.rb, line 839 def to_catalog(*sections) sections = nil if sections.empty? catalog = Puppet::Resource::Catalog.new("Settings") @config.keys.find_all { |key| @config[key].is_a?(FileSetting) }.each do |key| file = @config[key] next unless (sections.nil? or sections.include?(file.section)) next unless resource = file.to_resource next if catalog.resource(resource.ref) Puppet.debug("Using settings: adding file resource '#{key}': '#{resource.inspect}'") catalog.add_resource(resource) end add_user_resources(catalog, sections) catalog end
Convert our list of config settings into a configuration file.
# File lib/puppet/settings.rb, line 861 def to_config str = %{The configuration file for #{Puppet.run_mode.name}. Note that this file is likely to have unused configuration parameters in it; any parameter that's valid anywhere in Puppet can be in any config file, even if it's not used. Every section can specify three special parameters: owner, group, and mode. These parameters affect the required permissions of any files specified after their specification. Puppet will sometimes use these parameters to check its own configured state, so they can be used to make Puppet a bit more self-managing. The file format supports octothorpe-commented lines, but not partial-line comments. Generated on #{Time.now}. }.gsub(/^/, "# ") # Add a section heading that matches our name. str += "[#{preferred_run_mode}]\n" eachsection do |section| persection(section) do |obj| str += obj.to_config + "\n" unless obj.name == :genconfig end end return str end
Convert to a parseable manifest
# File lib/puppet/settings.rb, line 889 def to_manifest catalog = to_catalog catalog.resource_refs.collect do |ref| catalog.resource(ref).to_manifest end.join("\n\n") end
# File lib/puppet/settings.rb, line 930 def uninterpolated_value(param, environment = nil) param = param.to_sym environment &&= environment.to_sym # See if we can find it within our searchable list of values val = find_value(environment, param) # If we didn't get a value, use the default val = @config[param].default if val.nil? val end
Create the necessary objects to use a section. This is idempotent; you can ‘use’ a section as many times as you want.
# File lib/puppet/settings.rb, line 898 def use(*sections) sections = sections.collect { |s| s.to_sym } @sync.synchronize do # yay, thread-safe sections = sections.reject { |s| @used.include?(s) } return if sections.empty? begin catalog = to_catalog(*sections).to_ral rescue => detail Puppet.log_and_raise(detail, "Could not create resources for managing Puppet's files and directories in sections #{sections.inspect}: #{detail}") end catalog.host_config = false catalog.apply do |transaction| if transaction.any_failed? report = transaction.report failures = report.logs.find_all { |log| log.level == :err } raise "Got #{failures.length} failure(s) while initializing: #{failures.collect { |l| l.to_s }.join("; ")}" end end sections.each { |s| @used << s } @used.uniq! end end
# File lib/puppet/settings.rb, line 925 def valid?(param) param = param.to_sym @config.has_key?(param) end
Find the correct value using our search path. Optionally accept an environment in which to search before the other configuration sections.
# File lib/puppet/settings.rb, line 957 def value(param, environment = nil, bypass_interpolation = false) param = param.to_sym environment &&= environment.to_sym setting = @config[param] # Short circuit to nil for undefined parameters. return nil unless @config.include?(param) # Yay, recursion. #self.reparse unless [:config, :filetimeout].include?(param) # Check the cache first. It needs to be a per-environment # cache so that we don't spread values from one env # to another. if cached = @cache[environment||"none"][param] return cached end val = uninterpolated_value(param, environment) return val if bypass_interpolation if param == :code # if we interpolate code, all hell breaks loose. return val end # Convert it if necessary begin val = convert(val, environment) rescue InterpolationError => err # This happens because we don't have access to the param name when the # exception is originally raised, but we want it in the message raise InterpolationError, "Error converting value for param '#{param}': #{err}", err.backtrace end val = setting.munge(val) if setting.respond_to?(:munge) # And cache it @cache[environment||"none"][param] = val val end
Open a file with the appropriate user, group, and mode
# File lib/puppet/settings.rb, line 1000 def write(default, *args, &bloc) obj = get_config_file_default(default) writesub(default, value(obj.name), *args, &bloc) end
Open a non-default file under a default dir with the appropriate user, group, and mode
# File lib/puppet/settings.rb, line 1007 def writesub(default, file, *args, &bloc) obj = get_config_file_default(default) chown = nil if Puppet.features.root? chown = [obj.owner, obj.group] else chown = [nil, nil] end Puppet::Util::SUIDManager.asuser(*chown) do mode = obj.mode ? obj.mode.to_i : 0640 args << "w" if args.empty? args << mode # Update the umask to make non-executable files Puppet::Util.withumask(File.umask ^ 0111) do File.open(file, *args) do |file| yield file end end end end
Generated with the Darkfish Rdoc Generator 2.


1.0.1
Backup manager instance.
(Object)
Manager object configuration.
| Name | Description |
|---|---|
config.db string
|
The name of the database |
config.username string?
|
InfluxDB user username |
config.password string?
|
InfluxDB user password |
config.host string
(default localhost )
|
Host url where influxdb is running. |
config.port number
(default 8086 )
|
InfluxDB port. |
config.tmp_folder string
(default .tmp )
|
Temporary folder path. |
config.suffix string
(default _bak )
|
Backup database suffix. |
config.retation string
(default autogen )
|
InfluxDB retation policy to backup. |
config.port number
(default 8088 )
|
InfluxDB backup port. |
Inits the backup manager, checks influxDB version and creates the temporary files folder (if doesn't exists).
Start a restore. Loads a backup into a backup database, once finished deletes the restore directory.
(string)
The directory path of the backup zip file.
(string)
Name of backup the zip file.
Promise<Boolean>
:
A promise object that resolves once the influxd
restore command has load all datas in the backup database.
Creates a queue for influxd commands.
(string)
The cwd path of influxd command (the directory where the command will be executed).
(Array)
Array of args to pass to the influxd command.
Promise<boolean>
:
a promise object that resolves once the influxd command has finished.
Spawn an influxd process and calls resolve once ended.


Hotline<PHONE_NUMBER>568
©2021.myshop.com
Categories
Book Fair 2021
Offer
Writer
Publications
Subject
Career
Novel
Science Fiction
Detective
History
Deyal
450.00 ৳
Sunno
150.00 ৳
Sundarbon
250.00 ৳
Goyenda Somogro
449.00 ৳
Himu
950.00 ৳
Parapar
200.00 ৳
Humayun Ahmed
Muhammed Zafar Iqbal
Rabindranath Tagore.jpg
Samaresh Majumdar
Anisul Hoque.jpg
Ahmed Sofa.jpg
Humayun Azad
100% Original items are available our company.
Return within 14days of receving your order.
Get free delivery, if you order more than 10 items.
Pay online through multiple options (Card/Net banking)
Copyright©2021.myshop.com.All-Right.Reserved