Distance Oracles for Interval Graphs via Breadth-First Rank/Select in Succinct Trees
Succinct tree data structures represent an ordinal tree on $n$ nodes in $2n+o(n)$ bits of space while supporting many navigational operations in constant time (on a standard word-RAM); a list of these operations is given in Table 1 of the paper.
Since that amount of space is not enough to store a mapping from arbitrary identifiers to nodes of the tree, succinct trees refer to nodes by ids (operations $\texttt{node_rank}(v)$ and $\texttt{node_select}(i)$), which are solely defined based on the topology of the tree. A natural choice is to assign each node its position (“rank”) in a traversal of all nodes in the tree. The standard traversal algorithms are either depth-first traversals – preorder, postorder, inorder a.k.a. symmetric order – or breadth-first traversals (also called level order or heap order for trees).
All previously known succinct tree data structures either support $\texttt{node_rank}$ and $\texttt{node_select}$ for ids based on depth-first traversals, or support ids based on breadth-first traversals, but not both. In particular, mapping from level-order ranks to preorder ranks (and vice versa) was not efficiently possible. Using a novel tree partitioning scheme, tree slabbing, we design the first succinct tree data structure that supports this mapping in constant time.
We then use this data structure as the basis for succinct distance oracles for interval graphs and related graph classes.


Accommodations
Hyatt Resort Monterey - Book now!
Exclusive festival rate: $239 per night ($390 regular rate)
10 minute walk to the festival
Saturday night ceilidh
Free parking and wifi
Fairgrounds RV Camping
Located on-site at the Monterey Fairgrounds
Full hookups
$60 per site/per night
RV rentals in Morgan Hill through Family RV
Address:
Monterey County Fairgrounds
2004 Fairground Road
Monterey CA 93940
Event Hours
Gates are open from 9:00am - 5:00pm
Festival activities from 11:00am - 5:30pm
Saturday night ceilidh from 6:00pm - 9:30pm
Event Map
Piping and Drumming Competition
Vendor and Clans Information
Social Media
Contact Us: montereycelticfest@gmail.com


module Pervasives: sig .. end
This module provides the basic operations over the built-in types (numbers, booleans, byte sequences, strings, exceptions, references, lists, arrays, input-output channels, ...).
This module is automatically opened at the beginning of each compilation.
All components of this module can therefore be referred by their short
name, without prefixing them by Pervasives
.
let raise: exn => 'a;
let raise_notrace: exn => 'a;
raise
which does not record the backtrace.let invalid_arg: string => 'a;
Invalid_argument
with the given string.let failwith: string => 'a;
Failure
with the given string.exception Exit;
Exit
exception is not raised by any library function. It is
provided for use in your programs.let (==): ('a, 'a) => bool;
e1 = e2
tests for structural equality of e1
and e2
.
Mutable structures (e.g. references and arrays) are equal
if and only if their current contents are structurally equal,
even if the two mutable objects are not the same physical object.
Equality between functional values raises Invalid_argument
.
Equality between cyclic data structures may not terminate.let (!=): ('a, 'a) => bool;
Pervasives.(=)
.let (<): ('a, 'a) => bool;
Pervasives.(>=)
.let (>): ('a, 'a) => bool;
Pervasives.(>=)
.let (<=): ('a, 'a) => bool;
Pervasives.(>=)
.let (>=): ('a, 'a) => bool;
( = )
. As in the case
of ( = )
, mutable structures are compared by contents.
Comparison between functional values raises Invalid_argument
.
Comparison between cyclic structures may not terminate.let compare: ('a, 'a) => int;
compare x y
returns 0
if x
is equal to y
,
a negative integer if x
is less than y
, and a positive integer
if x
is greater than y
. The ordering implemented by compare
is compatible with the comparison predicates =
, <
and >
defined above, with one difference on the treatment of the float value
Pervasives.nan
. Namely, the comparison predicates treat nan
as different from any other float value, including itself;
while compare
treats nan
as equal to itself and less than any
other float value. This treatment of nan
ensures that compare
defines a total ordering relation.
compare
applied to functional values may raise Invalid_argument
.
compare
applied to cyclic structures may not terminate.
The compare
function can be used as the comparison function
required by the Set.Make
and Map.Make
functors, as well as
the List.sort
and Array.sort
functions.
let min: ('a, 'a) => 'a;
nan
.let max: ('a, 'a) => 'a;
nan
.let (===): ('a, 'a) => bool;
e1 == e2
tests for physical equality of e1
and e2
.
On mutable types such as references, arrays, byte sequences, records with
mutable fields and objects with mutable instance variables,
e1 == e2
is true if and only if physical modification of e1
also affects e2
.
On non-mutable types, the behavior of ( == )
is
implementation-dependent; however, it is guaranteed that
e1 == e2
implies compare e1 e2 = 0
.let (!==): ('a, 'a) => bool;
Pervasives.(==)
.let (!): bool => bool;
let (&&): (bool, bool) => bool;
e1 && e2
, e1
is evaluated first, and if it returns false
,
e2
is not evaluated at all.let (&): (bool, bool) => bool;
let (||): (bool, bool) => bool;
e1 || e2
, e1
is evaluated first, and if it returns true
,
e2
is not evaluated at all.let (or): (bool, bool) => bool;
let __LOC__: string;
__LOC__
returns the location at which this expression appears in
the file currently being parsed by the compiler, with the standard
error format of OCaml: "File %S, line %d, characters %d-%d".let __FILE__: string;
__FILE__
returns the name of the file currently being
parsed by the compiler.let __LINE__: int;
__LINE__
returns the line number at which this expression
appears in the file currently being parsed by the compiler.let __MODULE__: string;
__MODULE__
returns the module name of the file being
parsed by the compiler.let __POS__: (string, int, int, int);
__POS__
returns a tuple (file,lnum,cnum,enum)
, corresponding
to the location at which this expression appears in the file
currently being parsed by the compiler. file
is the current
filename, lnum
the line number, cnum
the character position in
the line and enum
the last character position in the line.let __LOC_OF__: 'a => (string, 'a);
__LOC_OF__ expr
returns a pair (loc, expr)
where loc
is the
location of expr
in the file currently being parsed by the
compiler, with the standard error format of OCaml: "File %S, line
%d, characters %d-%d".let __LINE_OF__: 'a => (int, 'a);
__LINE__ expr
returns a pair (line, expr)
, where line
is the
line number at which the expression expr
appears in the file
currently being parsed by the compiler.let __POS_OF__: 'a => ((string, int, int, int), 'a);
__POS_OF__ expr
returns a pair (loc,expr)
, where loc
is a
tuple (file,lnum,cnum,enum)
corresponding to the location at
which the expression expr
appears in the file currently being
parsed by the compiler. file
is the current filename, lnum
the
line number, cnum
the character position in the line and enum
the last character position in the line.let (|>): ('a, 'a => 'b) => 'b;
x |> f |> g
is exactly equivalent
to g (f (x))
.let (@@): ('a => 'b, 'a) => 'b;
g @@ f @@ x
is exactly equivalent to
g (f (x))
.let (~-): int => int;
- e
instead of ~- e
.let (~+): int => int;
+ e
instead of ~+ e
.let succ: int => int;
succ x
is x + 1
.let pred: int => int;
pred x
is x - 1
.let (+): (int, int) => int;
let (-): (int, int) => int;
let ( * ): (int, int) => int;
let (/): (int, int) => int;
Division_by_zero
if the second argument is 0.
Integer division rounds the real quotient of its arguments towards zero.
More precisely, if x >= 0
and y > 0
, x / y
is the greatest integer
less than or equal to the real quotient of x
by y
. Moreover,
(- x) / y = x / (- y) = - (x / y)
.let (mod): (int, int) => int;
y
is not zero, the result
of x mod y
satisfies the following properties:
x = (x / y) * y + x mod y
and
abs(x mod y) <= abs(y) - 1
.
If y = 0
, x mod y
raises Division_by_zero
.
Note that x mod y
is negative only if x < 0
.
Raise Division_by_zero
if y
is zero.let abs: int => int;
min_int
.let max_int: int;
let min_int: int;
let (land): (int, int) => int;
let (lor): (int, int) => int;
let (lxor): (int, int) => int;
let lnot: int => int;
let (lsl): (int, int) => int;
n lsl m
shifts n
to the left by m
bits.
The result is unspecified if m < 0
or m >= bitsize
,
where bitsize
is 32
on a 32-bit platform and
64
on a 64-bit platform.let (lsr): (int, int) => int;
n lsr m
shifts n
to the right by m
bits.
This is a logical shift: zeroes are inserted regardless of
the sign of n
.
The result is unspecified if m < 0
or m >= bitsize
.let (asr): (int, int) => int;
n asr m
shifts n
to the right by m
bits.
This is an arithmetic shift: the sign bit of n
is replicated.
The result is unspecified if m < 0
or m >= bitsize
.
OCaml's floating-point numbers follow the
IEEE 754 standard, using double precision (64 bits) numbers.
Floating-point operations never raise an exception on overflow,
underflow, division by zero, etc. Instead, special IEEE numbers
are returned as appropriate, such as infinity
for 1.0 /. 0.0
,
neg_infinity
for -1.0 /. 0.0
, and nan
('not a number')
for 0.0 /. 0.0
. These special numbers then propagate through
floating-point computations as expected: for instance,
1.0 /. infinity
is 0.0
, and any arithmetic operation with nan
as argument returns nan
as result.
let (~-.): float => float;
-. e
instead of ~-. e
.let (~+.): float => float;
+. e
instead of ~+. e
.let (+.): (float, float) => float;
let (-.): (float, float) => float;
let ( *. ): (float, float) => float;
let (/.): (float, float) => float;
let ( ** ): (float, float) => float;
let sqrt: float => float;
let exp: float => float;
let log: float => float;
let log10: float => float;
let expm1: float => float;
expm1 x
computes exp x -. 1.0
, giving numerically-accurate results
even if x
is close to 0.0
.let log1p: float => float;
log1p x
computes log(1.0 +. x)
(natural logarithm),
giving numerically-accurate results even if x
is close to 0.0
.let cos: float => float;
let sin: float => float;
let tan: float => float;
let acos: float => float;
[-1.0, 1.0]
.
Result is in radians and is between 0.0
and pi
.let asin: float => float;
[-1.0, 1.0]
.
Result is in radians and is between -pi/2
and pi/2
.let atan: float => float;
-pi/2
and pi/2
.let atan2: (float, float) => float;
atan2 y x
returns the arc tangent of y /. x
. The signs of x
and y
are used to determine the quadrant of the result.
Result is in radians and is between -pi
and pi
.let hypot: (float, float) => float;
hypot x y
returns sqrt(x *. x + y *. y)
, that is, the length
of the hypotenuse of a right-angled triangle with sides of length
x
and y
, or, equivalently, the distance of the point (x,y)
to origin.let cosh: float => float;
let sinh: float => float;
let tanh: float => float;
let ceil: float => float;
ceil f
returns the least integer value greater than or equal to f
.
The result is returned as a float.let floor: float => float;
floor f
returns the greatest integer value less than or
equal to f
.
The result is returned as a float.let abs_float: float => float;
abs_float f
returns the absolute value of f
.let copysign: (float, float) => float;
copysign x y
returns a float whose absolute value is that of x
and whose sign is that of y
. If x
is nan
, returns nan
.
If y
is nan
, returns either x
or -. x
, but it is not
specified which.let mod_float: (float, float) => float;
mod_float a b
returns the remainder of a
with respect to
b
. The returned value is a -. n *. b
, where n
is the quotient a /. b
rounded towards zero to an integer.let frexp: float => (float, int);
frexp f
returns the pair of the significant
and the exponent of f
. When f
is zero, the
significant x
and the exponent n
of f
are equal to
zero. When f
is non-zero, they are defined by
f = x *. 2 ** n
and 0.5 <= x < 1.0
.let ldexp: (float, int) => float;
ldexp x n
returns x *. 2 ** n
.let modf: float => (float, float);
modf f
returns the pair of the fractional and integral
part of f
.let float: int => float;
Pervasives.float_of_int
.let float_of_int: int => float;
let truncate: float => int;
Pervasives.int_of_float
.let int_of_float: float => int;
nan
or falls outside the
range of representable integers.let infinity: float;
let neg_infinity: float;
let nan: float;
0.0 /. 0.0
. Stands for
'not a number'. Any floating-point operation with nan
as
argument returns nan
as result. As for floating-point comparisons,
=
, <
, <=
, >
and >=
return false
and <>
returns true
if one or both of their arguments is nan
.let max_float: float;
float
.let min_float: float;
float
.let epsilon_float: float;
1.0
and the smallest exactly representable
floating-point number greater than 1.0
.type fpclass =
| |
FP_normal |
(* |
Normal number, none of the below
| *) |
| |
FP_subnormal |
(* |
Number very close to 0.0, has reduced precision
| *) |
| |
FP_zero |
(* |
Number is 0.0 or -0.0
| *) |
| |
FP_infinite |
(* |
Number is positive or negative infinity
| *) |
| |
FP_nan |
(* |
Not a number: result of an undefined operation
| *) |
Pervasives.classify_float
function.let classify_float: float => fpclass;
More string operations are provided in module String
.
let (++): (string, string) => string;
More character operations are provided in module Char
.
let int_of_char: char => int;
let char_of_int: int => char;
Invalid_argument "char_of_int"
if the argument is
outside the range 0--255.let ignore: 'a => unit;
()
.
For instance, ignore(f x)
discards the result of
the side-effecting function f
. It is equivalent to
f x; ()
, except that the latter may generate a
compiler warning; writing ignore(f x)
instead
avoids the warning.let string_of_bool: bool => string;
let bool_of_string: string => bool;
Invalid_argument "bool_of_string"
if the string is not
"true"
or "false"
.let string_of_int: int => string;
let int_of_string: string => int;
0x
or 0X
), octal (if it begins with 0o
or 0O
),
or binary (if it begins with 0b
or 0B
).
Raise Failure "int_of_string"
if the given string is not
a valid representation of an integer, or if the integer represented
exceeds the range of integers representable in type int
.let string_of_float: float => string;
let float_of_string: string => float;
Failure "float_of_string"
if the given string is not a valid representation of a float.let fst: (('a, 'b)) => 'a;
let snd: (('a, 'b)) => 'b;
More list operations are provided in module List
.
let (@): (list('a), list('a)) => list('a);
Sys_error
when the system
calls they invoke fail.type in_channel;
type out_channel;
let stdin: in_channel;
let stdout: out_channel;
let stderr: out_channel;
let print_char: char => unit;
let print_string: string => unit;
let print_bytes: bytes => unit;
let print_int: int => unit;
let print_float: float => unit;
let print_endline: string => unit;
let print_newline: unit => unit;
let prerr_char: char => unit;
let prerr_string: string => unit;
let prerr_bytes: bytes => unit;
let prerr_int: int => unit;
let prerr_float: float => unit;
let prerr_endline: string => unit;
let prerr_newline: unit => unit;
let read_line: unit => string;
let read_int: unit => int;
Failure "int_of_string"
if the line read is not a valid representation of an integer.let read_float: unit => float;
type open_flag =
| |
Open_rdonly |
(* |
open for reading.
| *) |
| |
Open_wronly |
(* |
open for writing.
| *) |
| |
Open_append |
(* |
open for appending: always write at end of file.
| *) |
| |
Open_creat |
(* |
create the file if it does not exist.
| *) |
| |
Open_trunc |
(* |
empty the file if it already exists.
| *) |
| |
Open_excl |
(* |
fail if Open_creat and the file already exists.
| *) |
| |
Open_binary |
(* |
open in binary mode (no conversion).
| *) |
| |
Open_text |
(* |
open in text mode (may perform conversions).
| *) |
| |
Open_nonblock |
(* |
open in non-blocking mode.
| *) |
let open_out: string => out_channel;
let open_out_bin: string => out_channel;
Pervasives.open_out
, but the file is opened in binary mode,
so that no translation takes place during writes. On operating
systems that do not distinguish between text mode and binary
mode, this function behaves like Pervasives.open_out
.let open_out_gen: (list(open_flag), int, string) => out_channel;
open_out_gen mode perm filename
opens the named file for writing,
as described above. The extra argument mode
specify the opening mode. The extra argument perm
specifies
the file permissions, in case the file must be created.
Pervasives.open_out
and Pervasives.open_out_bin
are special
cases of this function.let flush: out_channel => unit;
let flush_all: unit => unit;
let output_char: (out_channel, char) => unit;
let output_string: (out_channel, string) => unit;
let output_bytes: (out_channel, bytes) => unit;
let output: (out_channel, bytes, int, int) => unit;
output oc buf pos len
writes len
characters from byte sequence buf
,
starting at offset pos
, to the given output channel oc
.
Raise Invalid_argument "output"
if pos
and len
do not
designate a valid range of buf
.let output_substring: (out_channel, string, int, int) => unit;
output
but take a string as argument instead of
a byte sequence.let output_byte: (out_channel, int) => unit;
let output_binary_int: (out_channel, int) => unit;
Pervasives.input_binary_int
function. The format is compatible across
all machines for a given version of OCaml.let output_value: (out_channel, 'a) => unit;
Pervasives.input_value
. See the description of module
Marshal
for more information. Pervasives.output_value
is equivalent
to Marshal.to_channel
with an empty list of flags.let seek_out: (out_channel, int) => unit;
seek_out chan pos
sets the current writing position to pos
for channel chan
. This works only for regular files. On
files of other kinds (such as terminals, pipes and sockets),
the behavior is unspecified.let pos_out: out_channel => int;
Open_append
flag (returns
unspecified results).let out_channel_length: out_channel => int;
let close_out: out_channel => unit;
Sys_error
exception when they are
applied to a closed output channel, except close_out
and flush
,
which do nothing when applied to an already closed channel.
Note that close_out
may raise Sys_error
if the operating
system signals an error when flushing or closing.let close_out_noerr: out_channel => unit;
close_out
, but ignore all errors.let set_binary_mode_out: (out_channel, bool) => unit;
set_binary_mode_out oc true
sets the channel oc
to binary
mode: no translations take place during output.
set_binary_mode_out oc false
sets the channel oc
to text
mode: depending on the operating system, some translations
may take place during output. For instance, under Windows,
end-of-lines will be translated from \n
to \r\n
.
This function has no effect under operating systems that
do not distinguish between text mode and binary mode.let open_in: string => in_channel;
let open_in_bin: string => in_channel;
Pervasives.open_in
, but the file is opened in binary mode,
so that no translation takes place during reads. On operating
systems that do not distinguish between text mode and binary
mode, this function behaves like Pervasives.open_in
.let open_in_gen: (list(open_flag), int, string) => in_channel;
open_in_gen mode perm filename
opens the named file for reading,
as described above. The extra arguments
mode
and perm
specify the opening mode and file permissions.
Pervasives.open_in
and Pervasives.open_in_bin
are special
cases of this function.let input_char: in_channel => char;
End_of_file
if there are no more characters to read.let input_line: in_channel => string;
End_of_file
if the end of the file is reached
at the beginning of line.let input: (in_channel, bytes, int, int) => int;
input ic buf pos len
reads up to len
characters from
the given channel ic
, storing them in byte sequence buf
, starting at
character number pos
.
It returns the actual number of characters read, between 0 and
len
(inclusive).
A return value of 0 means that the end of file was reached.
A return value between 0 and len
exclusive means that
not all requested len
characters were read, either because
no more characters were available at that time, or because
the implementation found it convenient to do a partial read;
input
must be called again to read the remaining characters,
if desired. (See also Pervasives.really_input
for reading
exactly len
characters.)
Exception Invalid_argument "input"
is raised if pos
and len
do not designate a valid range of buf
.let really_input: (in_channel, bytes, int, int) => unit;
really_input ic buf pos len
reads len
characters from channel ic
,
storing them in byte sequence buf
, starting at character number pos
.
Raise End_of_file
if the end of file is reached before len
characters have been read.
Raise Invalid_argument "really_input"
if
pos
and len
do not designate a valid range of buf
.let really_input_string: (in_channel, int) => string;
really_input_string ic len
reads len
characters from channel ic
and returns them in a new string.
Raise End_of_file
if the end of file is reached before len
characters have been read.let input_byte: in_channel => int;
Pervasives.input_char
, but return the 8-bit integer representing
the character.
Raise End_of_file
if an end of file was reached.let input_binary_int: in_channel => int;
Pervasives.output_binary_int
.
Raise End_of_file
if an end of file was reached while reading the
integer.let input_value: in_channel => 'a;
Pervasives.output_value
, and return the corresponding value.
This function is identical to Marshal.from_channel
;
see the description of module Marshal
for more information,
in particular concerning the lack of type safety.let seek_in: (in_channel, int) => unit;
seek_in chan pos
sets the current reading position to pos
for channel chan
. This works only for regular files. On
files of other kinds, the behavior is unspecified.let pos_in: in_channel => int;
let in_channel_length: in_channel => int;
let close_in: in_channel => unit;
Sys_error
exception when they are applied to a closed input channel,
except close_in
, which does nothing when applied to an already
closed channel.let close_in_noerr: in_channel => unit;
close_in
, but ignore all errors.let set_binary_mode_in: (in_channel, bool) => unit;
set_binary_mode_in ic true
sets the channel ic
to binary
mode: no translations take place during input.
set_binary_mode_out ic false
sets the channel ic
to text
mode: depending on the operating system, some translations
may take place during input. For instance, under Windows,
end-of-lines will be translated from \r\n
to \n
.
This function has no effect under operating systems that
do not distinguish between text mode and binary mode.module LargeFile: sig .. end
type 'a ref = {
|
mutable contents : 'a; |
'a
.let ref: 'a => ref('a);
let (^): ref('a) => 'a;
!r
returns the current contents of reference r
.
Equivalent to fun r -> r.contents
.let (:=): (ref('a), 'a) => unit;
r := a
stores the value of a
in reference r
.

Format strings are made of three kinds of entities:
'%'
followed by one or more characters specifying what kind of argument to
read or print,'@'
followed by one or more characters specifying how to read or print the
argument,'%'
and '@'
in format strings: if a special character follows a '%'
character, it is treated as a plain character. In other words, "%%"
is
considered as a plain '%'
and "%@"
as a plain '@'
.
For more information about conversion specifications and formatting
indications available, read the documentation of modules Scanf
,
Printf
and Format
.
Scanf
and to print data with formatted output functions from modules
Printf
and Format
.
Format strings are made of three kinds of entities:
'%'
followed by one or more characters specifying what kind of argument to
read or print,'@'
followed by one or more characters specifying how to read or print the
argument,'%'
and '@'
in format strings: if a special character follows a '%'
character, it is treated as a plain character. In other words, "%%"
is
considered as a plain '%'
and "%@"
as a plain '@'
.
For more information about conversion specifications and formatting
indications available, read the documentation of modules Scanf
,
Printf
and Format
.
Format strings have a general and highly polymorphic type
('a, 'b, 'c, 'd, 'e, 'f) format6
.
The two simplified types, format
and format4
below are
included for backward compatibility with earlier releases of
OCaml.
The meaning of format string type parameters is as follows:
'a
is the type of the parameters of the format for formatted output
functions (printf
-style functions);
'a
is the type of the values read by the format for formatted input
functions (scanf
-style functions).'b
is the type of input source for formatted input functions and the
type of output target for formatted output functions.
For printf
-style functions from module Printf
, 'b
is typically
out_channel
;
for printf
-style functions from module Format
, 'b
is typically
Format.formatter
;
for scanf
-style functions from module Scanf
, 'b
is typically
Scanf.Scanning.in_channel
.'b
is also the type of the first argument given to
user's defined printing functions for %a
and %t
conversions,
and user's defined reading functions for %r
conversion.
'c
is the type of the result of the %a
and %t
printing
functions, and also the type of the argument transmitted to the
first argument of kprintf
-style functions or to the
kscanf
-style functions.'d
is the type of parameters for the scanf
-style functions.'e
is the type of the receiver function for the scanf
-style functions.'f
is the final result type of a formatted input/output function
invocation: for the printf
-style functions, it is typically unit
;
for the scanf
-style functions, it is typically the result type of the
receiver function.type format6('a, 'b, 'c, 'd, 'e, 'f) =
CamlinternalFormatBasics.format6('a, 'b, 'c, 'd, 'e, 'f);
type format4('a, 'b, 'c, 'd) = format6('a, 'b, 'c, 'c, 'c, 'd);
type format('a, 'b, 'c) = format4('a, 'b, 'c, 'c);
let string_of_format: format6('a, 'b, 'c, 'd, 'e, 'f) => string;
let format_of_string:
format6('a, 'b, 'c, 'd, 'e, 'f) => format6('a, 'b, 'c, 'd, 'e, 'f);
format_of_string s
returns a format string read from the string
literal s
.
Note: format_of_string
can not convert a string argument that is not a
literal. If you need this functionality, use the more general
Scanf.format_from_string
function.let (^^):
(format6('a, 'b, 'c, 'd, 'e, 'f), format6('f, 'b, 'c, 'e, 'g, 'h)) =>
format6('a, 'b, 'c, 'd, 'g, 'h);
f1 ^^ f2
catenates format strings f1
and f2
. The result is a
format string that behaves as the concatenation of format strings f1
and
f2
: in case of formatted output, it accepts arguments from f1
, then
arguments from f2
; in case of formatted input, it returns results from
f1
, then results from f2
.let exit: int => 'a;
flush_all
.
An implicit exit 0
is performed each time a program
terminates normally. An implicit exit 2
is performed if the program
terminates early because of an uncaught exception.let at_exit: (unit => unit) => unit;
at_exit
will be called when the program executes Pervasives.exit
,
or terminates, either normally or because of an uncaught exception.
The functions are called in 'last in, first out' order:
the function most recently added with at_exit
is called first.


Image Puzzle Game
Steps :
0
Time Taken:
secs
Re-arrange the boxes to create a picture like this.
Easy
Medium
Hard
Change Photo
Game Over!!
Congratulations!!
You have completed this picture.
Steps:
0
steps.
Time Taken:
0
seconds
Play Again
Developed By :-
Vanshika Chokhani


Instabot
AI
Dashboard
Bots
Follow
Follow Followers AI
Follow Following AI
Like
Like Following AI
Like Followers AI
Like Hashtag AI
Like Following
Like Followers
Like Hashtags
Like Comments
Stories
Watch Infinity Stories
Comment
Comment Hashtags AI
Comment Followers
Comment Following
MultiBot
Activate
USEFUL LINKS
Support Us
Telegram
Github


Maintain and develop system Grosir Pintar.
Developing Kurir App for Grosir Pintar.
Developing Misi Pintar and Brand Marketing in AWP (Aplikasi Warung Pintar).
Improving existing internal system to make more reliable using Event Driven Architecture.
Tech and Tools: Golang, MySQL, Redis, PubSub, gRPC, GraphQL, Docker, GitLab, ArgoCD, SonarQube, Jira, Redash, Jaeger, Grafana, Kiali.
Maintain and develop system Point of Sales using Odoo 13.
Integrating system Point of Sales with GrabMart.
Maintain and develop system Point of Sales using Node.js.
Tech and Tools: Python, Node.js, PostgreSQL, MySQL, Redis, Docker, GitLab, Bitbucket, Jira, Redash, Grafana, Kiali.
Product and Business
Tech and Team
Tech and Tools: Node.js, PostgreSQL, Redis, Docker, GitHub, Jira, Notion.
Develop system for Internal Ops and Supporting our Frontend Apps (Web and Mobile).
Integrating our system with third parties from Payments to Accounting.
Also do data crawling via SQL Query to help the Business team.
Tech and Tools: Node.js, Python, Golang, PostgreSQL, Redis, AWS, Docker, GitHub, Jira, Notion.
My responsibility is to maintain existing system and developing new Internal System for Ops and Supporting our Frontend Apps (Mobile and Web).
Also often to do data crawling via SQL query from the Database to help the DBA and Business team.
Work closed with Product Guys, Tester, Frontend and DevOps.
Tech and Tools: Python, Node.js, Odoo, Django, PostgreSQL, Redis, AWS, Docker, Kubernetes, BitBucket, GitLab, Jira, Asana, Trello
Helping client to develop their existing system and collaborate with their team (Product, Backend, Frontend, Mobile Dev) to integrate the system.
Tech and Tools: Python, Odoo, Django, PostgreSQL, Redis, AWS, Docker, Kubernetes, BitBucket, Jira, Trello
Research & Development division with scope of works:
Tech and Tools: Python, Odoo, Android, PostgreSQL, Django, Flask, Docker, DigitalOcean & Vultr, GitLab, Trello, GSuite
Assistant implementator and developing Odoo modules.
Development Fields: CRM, Sales, Purchasing, Inventory, Accounting, HR Management and customized Odoo modules.
Tech and Tools: Python, Odoo, PostgreSQL, DigitalOcean & Vultr, GitLab, Trello
Create a desktop application that works to retrieve all data information on every computer and operating system (Windows, OSX, Linux) then sent that information to the server.
Tech and Tools: Python, WxPython, py2exe, Flask, SQLite, Git, BitBucket, Jira, Harvest (Simple Online Time Tracking Software)
As a freelancer, I'm develop several web-based application based on client requests. such as web registration system, invoicing system and integrating current system with third parties.
Tech and Tools: PHP, Laravel, WordPress, AngularJS, Python, Django, Flask, Git, Trello, Jira


America First Vs America Last
The battle against establishment forces within Republican Party is on
by Jake LloydPresident Trump’s messaged resonated deeply with the American people. It’s imperative now and always to distinguish ourselves in the America First movement from the political cronies that have dominated our system.
An0maly joins Owen on the War Room to break down his opinion on the recent controversy between Charlie Kirk and “groypers”.


{% extends 'fyh_emails/base.html' %} {% block content %}
We are excited to launch the all-new Hub@Penn platform to serve as a place for Penn students to find and connect with support resources. This platform comes at the request of Penn's senior administration and after close collaboration with NSOAI and the VPUL. We look forward to offering Hub@Penn as a resource for Penn students starting in advance of the Spring 2021 semester.
In order to ensure the success of Hub@Penn, we need Penn resources to help populate critical information about the services they offer. Your office has been identified as an essential resource for the Penn community. As such, we invite you to follow the link below to fill out a form and make your resource visible on Hub@Penn. To ensure up-to-date and accurate information is being hosted on Hub@Penn, this action needs to be taken by December 1.
To submit your resource, fill out the Hub@Penn Submission Form by December 1.
You have been designated to populate information for the following resource(s):
If there is another more appropriate contact to serve as the liaison between your resource and the Hub@Penn administrators, please feel free to forward this message and/or let us know who we should contact in future communications.
To account for rapid changes throughout 2020 and in preparation for the start of the Spring 2021 semester, please feel welcome to provide general information about your office, directing students to your website for the most up-to-date information. Additionally, your listing on Hub@Penn can easily be updated as needed.
Thank you in advance for taking the time to ensure easy access to your resource through Hub@Penn and as always for the resources your office offers our Penn community.
Thanks again,
Hub@Penn Planning Committee
hub.provost.upenn.edu
Office of New Student Orientation & Academic Initiatives (NSOAI)
University Life
Online Learning Initiative (OLI)


Cacti make beautiful and interesting houseplants that add character to any home. But perhaps the best part about cacti is that they are virtually impossible to kill. With a bit of soil, sunlight and minimal water they will happily grow and flower for years, which makes them a great plant for beginning gardeners and even those with notoriously brown thumbs. Grow just one, or populate your house with them. You'll soon find that cacti are plants that even the busiest gardeners can enjoy.
The awesome original. This is the tried and true Cactus™ that can't be beat. It features branches that senses toxin and absorbs them for you!
Cactus™ 2 is the obvious choice for any family looking for the perfect Cactus™ that can serve the entire family, at once!
The newest biggest and most amazing Cactus™ ever. It features a palmtree structure and shapes you oxygen particles into hearts!
Water your cactus. House cacti need very little water - as little as one watering per month.
Observe how your plants are. How they grow will generally tell you what they need.
Place your cactus near a brightly lit window where it will receive sunlight for most of the day.
A cactus that is potted in quality soil does not need any fertilizer at all.
The original.
Family-friendly.
Just amazing.


Dashboard 4 overview & stats
~$450k
monthly profit
640
12%
new followers
433
4%
new members
16
events
Revenue & Expense
$
524,965
revenue
(+9.75% )
$
75,450
expense
(+1.26% )
Pageviews ~ 30k today
Traffic Sources
total
174k
User Devices
total
98k
Task Board (sortable)
Live Chat
Raw denim you probably haven't heard of actively?
Lorem ipsum dolor sit amet
BD
Consectetur adipiscing elit!!!
Heard of them jean shorts Austin!
Fusce dapibus, tellus ac cursus commodo...
Fusce dapibus, tellus ac cursus commodo...
Heard of them jean shorts Austin!
Popular Pages
| https://www.google.com/ | |
| Wikipedia | https://www.wikipedia.com/ |
| https://www.twitter.com/ | |
| Microsoft | https://www.microsoft.com/ |
| Youtube | https://www.youtube.com/ |
Activity Feed
Susan Dalek
Uploaded a new photo
River Song
Reviewed a product
Jack Alien
Won a trophy
Robin Hood
Upgraded his membership plan
Latest Members
| Bob Doe | Moderator | London |
| Maria Doe | Customer | Dubai |
| JS John Smith | Customer | Istanbul |
| Jim Doe | Tester | Unknown |


My New(er) Blog
January 5, 2017Out with the old, in with the new(er)!
Although I enjoyed revamping my website back in 2015, I failed to foresee how much the tools I put in place would get in my way. And, damn, did they get in the way! Making minor changes was hard enough, let alone trying to write a blog post. I was even managing two different Git repositories for one static website. All these pain points capitalized on each other creating a tooling nightmare.
Today, I’ve decided to switch out the toolbox and use something better.
Read more »


e.g. ARM Cortex A9
line length = 8 words 4-way set associative critical word first size = 16, 32 or 64 kB
e.g
- cache starts empty
- read at $24
- cache miss
- all of B1 copied to cache L0
- word 1 passed to proc
- read at $28
- cache hit in L0
- word 2 passed to proc
e.g.
h = 90%, C = 1 cycle, M = 10 cycles
tavg = 0.9 x 1 + (1 - 0.9) 10 = 1.9 cycles
Write policy:
e.g. line size = 32 bytes, #lines = 64, # address bits = 16
addresses
0 - 31 B0 0000 0000 000X XXXX
32- 63 B1 0000 0000 001X XXXX
64- 95 B2 0000 0000 010X XXXXaddress 0x1234 => 0001 0010 0011 0100
Fully associative: 0001 0010 001 tag, 1 0100 offset
4 way set associative: 0001 001 tag, 0 001 index, 1 0100 offset
#sets = 64 / 4 = 16, index bits = log216 = 4Direct mapped: 0001 0 tag, 010 001 index, 1 0100 offset
index bits = log264 = 6


RPM
Section: Misc. Reference Manual Pages (8)Updated: 09 June 2002
Index Return to Main Contents
NAME
rpm - RPM Package ManagerSYNOPSIS
QUERYING AND VERIFYING PACKAGES:
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
rpm --import PUBKEY ...
rpm {-K|--checksig} [--nosignature] [--nodigest]
PACKAGE_FILE ...
INSTALLING, UPGRADING, AND REMOVING PACKAGES:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
MISCELLANEOUS:
rpm {--initdb|--rebuilddb}
rpm {--addsign|--resign} PACKAGE_FILE ...
rpm {--querytags|--showrc}
rpm {--setperms|--setugids} PACKAGE_NAME ...
select-options
[PACKAGE_NAME] [-a,--all] [-f,--file FILE]
[-g,--group GROUP] {-p,--package PACKAGE_FILE]
[--fileid MD5] [--hdrid SHA1] [--pkgid MD5] [--tid TID]
[--querybynumber HDRNUM] [--triggeredby PACKAGE_NAME]
[--whatprovides CAPABILITY] [--whatrequires CAPABILITY]
query-options
[--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
[--filesbypkg] [-i,--info] [--last] [-l,--list]
[--provides] [--qf,--queryformat QUERYFMT]
[-R,--requires] [--scripts] [-s,--state]
[--triggers,--triggerscripts]
verify-options
[--nodeps] [--nofiles] [--noscripts]
[--nodigest] [--nosignature]
[--nolinkto] [--nofiledigest] [--nosize] [--nouser]
[--nogroup] [--nomtime] [--nomode] [--nordev]
[--nocaps]
install-options
[--aid] [--allfiles] [--badreloc] [--excludepath OLDPATH]
[--excludedocs] [--force] [-h,--hash]
[--ignoresize] [--ignorearch] [--ignoreos]
[--includedocs] [--justdb] [--nodeps]
[--nodigest] [--nosignature] [--nosuggest]
[--noorder] [--noscripts] [--notriggers]
[--oldpackage] [--percent] [--prefix NEWPATH]
[--relocate OLDPATH=NEWPATH]
[--replacefiles] [--replacepkgs]
[--test]
DESCRIPTION
rpm is a powerful Package Manager, which can be used to build, install, query, verify, update, and erase individual software packages. A package consists of an archive of files and meta-data used to install and erase the archive files. The meta-data includes helper scripts, file attributes, and descriptive information about the package. Packages come in two varieties: binary packages, used to encapsulate software to be installed, and source packages, containing the source code and recipe necessary to produce binary packages.
One of the following basic modes must be selected: Query, Verify, Signature Check, Install/Upgrade/Freshen, Uninstall, Initialize Database, Rebuild Database, Resign, Add Signature, Set Owners/Groups, Show Querytags, and Show Configuration.
GENERAL OPTIONS
These options can be used in all the different modes.
- -?, --help
- Print a longer usage message then normal.
- --version
- Print a single line containing the version number of rpm being used.
- --quiet
- Print as little as possible - normally only error messages will be displayed.
- -v
- Print verbose information - normally routine progress messages will be displayed.
- -vv
- Print lots of ugly debugging information.
- --rcfile FILELIST
- Each of the files in the colon separated FILELIST is read sequentially by rpm for configuration information. Only the first file in the list must exist, and tildes will be expanded to the value of $HOME. The default FILELIST is /usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:/etc/rpmrc:~/.rpmrc.
- --pipe CMD
- Pipes the output of rpm to the command CMD.
- --dbpath DIRECTORY
- Use the database in DIRECTORY rather than the default path /var/lib/rpm
- --root DIRECTORY
- Use the file system tree rooted at DIRECTORY for all operations. Note that this means the database within DIRECTORY will be used for dependency checks and any scriptlet(s) (e.g. %post if installing, or %prep if building, a package) will be run after a chroot(2) to DIRECTORY.
INSTALL AND UPGRADE OPTIONS
In these options, PACKAGE_FILE can be either rpm binary file or ASCII package manifest (see PACKAGE SELECTION OPTIONS), and may be specified as an ftp or http URL, in which case the package will be downloaded before being installed. See FTP/HTTP OPTIONS for information on rpm's internal ftp and http client support.
The general form of an rpm install command is
rpm {-i|--install} [install-options] PACKAGE_FILE ...
This installs a new package.
The general form of an rpm upgrade command is
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
This upgrades or installs the package currently installed to a newer version. This is the same as install, except all other version(s) of the package are removed after the new package is installed.
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
This will upgrade packages, but only ones for which an earlier version is installed.
- --aid
- Add suggested packages to the transaction set when needed.
- --allfiles
- Installs or upgrades all the missingok files in the package, regardless if they exist.
- --badreloc
- Used with --relocate, permit relocations on all file paths, not just those OLDPATH's included in the binary package relocation hint(s).
- --excludepath OLDPATH
- Don't install files whose name begins with OLDPATH.
- --excludedocs
- Don't install any files which are marked as documentation (which includes man pages and texinfo documents).
- --force
- Same as using --replacepkgs, --replacefiles, and --oldpackage.
- -h, --hash
- Print 50 hash marks as the package archive is unpacked. Use with -v|--verbose for a nicer display.
- --ignoresize
- Don't check mount file systems for sufficient disk space before installing this package.
- --ignorearch
- Allow installation or upgrading even if the architectures of the binary package and host don't match.
- --ignoreos
- Allow installation or upgrading even if the operating systems of the binary package and host don't match.
- --includedocs
- Install documentation files. This is the default behavior.
- --justdb
- Update only the database, not the filesystem.
- --nodigest
- Don't verify package or header digests when reading.
- --nomanifest
- Don't process non-package files as manifests.
- --nosignature
- Don't verify package or header signatures when reading.
- --nodeps
- Don't do a dependency check before installing or upgrading a package.
- --nosuggest
- Don't suggest package(s) that provide a missing dependency.
- --noorder
- Don't reorder the packages for an install. The list of packages would normally be reordered to satisfy dependencies.
- --noscripts
- --nopre
- --nopost
- --nopreun
- --nopostun
-
Don't execute the scriptlet of the same name.
The --noscripts option is equivalent to
--nopre --nopost --nopreun --nopostun
and turns off the execution of the corresponding %pre, %post, %preun, and %postun scriptlet(s).
- --notriggers
- --notriggerin
- --notriggerun
- --notriggerpostun
-
Don't execute any trigger scriptlet of the named type.
The --notriggers option is equivalent to
--notriggerin --notriggerun --notriggerpostun
and turns off execution of the corresponding %triggerin, %triggerun, and %triggerpostun scriptlet(s).
- --oldpackage
- Allow an upgrade to replace a newer package with an older one.
- --percent
- Print percentages as files are unpacked from the package archive. This is intended to make rpm easy to run from other tools.
- --prefix NEWPATH
- For relocatable binary packages, translate all file paths that start with the installation prefix in the package relocation hint(s) to NEWPATH.
- --relocate OLDPATH=NEWPATH
- For relocatable binary packages, translate all file paths that start with OLDPATH in the package relocation hint(s) to NEWPATH. This option can be used repeatedly if several OLDPATH's in the package are to be relocated.
- --replacefiles
- Install the packages even if they replace files from other, already installed, packages.
- --replacepkgs
- Install the packages even if some of them are already installed on this system.
- --test
- Do not install the package, simply check for and report potential conflicts.
ERASE OPTIONS
The general form of an rpm erase command is
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
The following options may also be used:
- --allmatches
- Remove all versions of the package which match PACKAGE_NAME. Normally an error is issued if PACKAGE_NAME matches multiple packages.
- --nodeps
- Don't check dependencies before uninstalling the packages.
- --noscripts
- --nopreun
- --nopostun
-
Don't execute the scriptlet of the same name.
The --noscripts option during package erase is
equivalent to
--nopreun --nopostun
and turns off the execution of the corresponding %preun, and %postun scriptlet(s).
- --notriggers
- --notriggerun
- --notriggerpostun
-
Don't execute any trigger scriptlet of the named type.
The --notriggers option is equivalent to
--notriggerun --notriggerpostun
and turns off execution of the corresponding %triggerun, and %triggerpostun scriptlet(s).
- --test
- Don't really uninstall anything, just go through the motions. Useful in conjunction with the -vv option for debugging.
QUERY OPTIONS
The general form of an rpm query command is
rpm {-q|--query} [select-options] [query-options]
You may specify the format that package information should be printed in. To do this, you use the
--qf|--queryformat QUERYFMT
option, followed by the QUERYFMT format string. Query formats are modified versions of the standard printf(3) formatting. The format is made up of static strings (which may include standard C character escapes for newlines, tabs, and other special characters) and printf(3) type formatters. As rpm already knows the type to print, the type specifier must be omitted however, and replaced by the name of the header tag to be printed, enclosed by {} characters. Tag names are case insensitive, and the leading RPMTAG_ portion of the tag name may be omitted as well.
Alternate output formats may be requested by following the tag with :typetag. Currently, the following types are supported:
- :armor
- Wrap a public key in ASCII armor.
- :arraysize
- Display number of elements in array tags.
- :base64
- Encode binary data using base64.
- :date
- Use strftime(3) "%c" format.
- :day
- Use strftime(3) "%a %b %d %Y" format.
- :depflags
- Format dependency comparison operator.
- :deptype
- Format dependency type.
- :fflags
- Format file flags.
- :fstate
- Format file state.
- :hex
- Format in hexadecimal.
- :octal
- Format in octal.
- :perms
- Format file permissions.
- :pgpsig
- Display signature fingerprint and time.
- :shescape
- Escape single quotes for use in a script.
- :triggertype
- Display trigger suffix.
- :vflags
- File verification flags.
- :xml
- Wrap data in simple xml markup.
For example, to print only the names of the packages queried, you could use %{NAME} as the format string. To print the packages name and distribution information in two columns, you could use %-30{NAME}%{DISTRIBUTION}. rpm will print a list of all of the tags it knows about when it is invoked with the --querytags argument.
There are two subsets of options for querying: package selection, and information selection.
PACKAGE SELECTION OPTIONS:
- PACKAGE_NAME
- Query installed package named PACKAGE_NAME.
- -a, --all
- Query all installed packages.
- -f, --file FILE
- Query package owning FILE.
- --fileid MD5
- Query package that contains a given file identifier, i.e. the MD5 digest of the file contents.
- -g, --group GROUP
- Query packages with the group of GROUP.
- --hdrid SHA1
- Query package that contains a given header identifier, i.e. the SHA1 digest of the immutable header region.
- -p, --package PACKAGE_FILE
- Query an (uninstalled) package PACKAGE_FILE. The PACKAGE_FILE may be specified as an ftp or http style URL, in which case the package header will be downloaded and queried. See FTP/HTTP OPTIONS for information on rpm's internal ftp and http client support. The PACKAGE_FILE argument(s), if not a binary package, will be interpreted as an ASCII package manifest unless --nomanifest option is used. In manifests, comments are permitted, starting with a '#', and each line of a package manifest file may include white space separated glob expressions, including URL's, that will be expanded to paths that are substituted in place of the package manifest as additional PACKAGE_FILE arguments to the query.
- --pkgid MD5
- Query package that contains a given package identifier, i.e. the MD5 digest of the combined header and payload contents.
- --querybynumber HDRNUM
- Query the HDRNUMth database entry directly; this is useful only for debugging.
- --specfile SPECFILE
- Parse and query SPECFILE as if it were a package. Although not all the information (e.g. file lists) is available, this type of query permits rpm to be used to extract information from spec files without having to write a specfile parser.
- --tid TID
- Query package(s) that have a given TID transaction identifier. A unix time stamp is currently used as a transaction identifier. All package(s) installed or erased within a single transaction have a common identifier.
- --triggeredby PACKAGE_NAME
- Query packages that are triggered by package(s) PACKAGE_NAME.
- --whatprovides CAPABILITY
- Query all packages that provide the CAPABILITY capability.
- --whatrequires CAPABILITY
- Query all packages that require CAPABILITY for proper functioning.
PACKAGE QUERY OPTIONS:
- --changelog
- Display change information for the package.
- -c, --configfiles
- List only configuration files (implies -l).
- -d, --docfiles
- List only documentation files (implies -l).
- --dump
-
Dump file information as follows (implies -l):
-
path size mtime filedigest mode owner group isconfig isdoc rdev symlink
-
- --filesbypkg
- List all the files in each selected package.
- -i, --info
- Display package information, including name, version, and description. This uses the --queryformat if one was specified.
- --last
- Orders the package listing by install time such that the latest packages are at the top.
- -l, --list
- List files in package.
- --provides
- List capabilities this package provides.
- -R, --requires
- List capabilities on which this package depends.
- --scripts
- List the package specific scriptlet(s) that are used as part of the installation and uninstallation processes.
- -s, --state
- Display the states of files in the package (implies -l). The state of each file is one of normal, not installed, or replaced.
- --triggers, --triggerscripts
- Display the trigger scripts, if any, which are contained in the package.
VERIFY OPTIONS
The general form of an rpm verify command is
rpm {-V|--verify} [select-options] [verify-options]
Verifying a package compares information about the installed files in the package with information about the files taken from the package metadata stored in the rpm database. Among other things, verifying compares the size, MD5 sum, permissions, type, owner and group of each file. Any discrepancies are displayed. Files that were not installed from the package, for example, documentation files excluded on installation using the "--excludedocs" option, will be silently ignored.
The package selection options are the same as for package querying (including package manifest files as arguments). Other options unique to verify mode are:
- --nodeps
- Don't verify dependencies of packages.
- --nodigest
- Don't verify package or header digests when reading.
- --nofiles
- Don't verify any attributes of package files.
- --noscripts
- Don't execute the %verifyscript scriptlet (if any).
- --nosignature
- Don't verify package or header signatures when reading.
- --nolinkto
- --nofiledigest (formerly --nomd5)
- --nosize
- --nouser
- --nogroup
- --nomtime
- --nomode
- --nordev
- Don't verify the corresponding file attribute.
The format of the output is a string of 8 characters, a possible attribute marker:
c %config configuration file. d %doc documentation file. g %ghost file (i.e. the file contents are not included in the package payload). l %license license file. r %readme readme file.
from the package header, followed by the file name. Each of the 8 characters denotes the result of a comparison of attribute(s) of the file to the value of those attribute(s) recorded in the database. A single "." (period) means the test passed, while a single "?" (question mark) indicates the test could not be performed (e.g. file permissions prevent reading). Otherwise, the (mnemonically emBoldened) character denotes failure of the corresponding --verify test:
S file Size differs M Mode differs (includes permissions and file type) 5 MD5 sum differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P caPabilities differ
DIGITAL SIGNATURE AND DIGEST VERIFICATION
The general forms of rpm digital signature commands are
rpm --import PUBKEY ...
rpm {--checksig} [--nosignature] [--nodigest]
PACKAGE_FILE ...
The --checksig option checks all the digests and signatures contained in PACKAGE_FILE to ensure the integrity and origin of the package. Note that signatures are now verified whenever a package is read, and --checksig is useful to verify all of the digests and signatures associated with a package.
Digital signatures cannot be verified without a public key. An ASCII armored public key can be added to the rpm database using --import. An imported public key is carried in a header, and key ring management is performed exactly like package management. For example, all currently imported public keys can be displayed by:
rpm -qa gpg-pubkey*
Details about a specific public key, when imported, can be displayed by querying. Here's information about the Red Hat GPG/DSA key:
rpm -qi gpg-pubkey-db42a60e
Finally, public keys can be erased after importing just like packages. Here's how to remove the Red Hat GPG/DSA key
SIGNING A PACKAGE
rpm --addsign|--resign PACKAGE_FILE ...
Both of the --addsign and --resign options generate and insert new signatures for each package PACKAGE_FILE given, replacing any existing signatures. There are two options for historical reasons, there is no difference in behavior currently.
USING GPG TO SIGN PACKAGES
In order to sign packages using GPG, rpm must be configured to run GPG and be able to find a key ring with the appropriate keys. By default, rpm uses the same conventions as GPG to find key rings, namely the $GNUPGHOME environment variable. If your key rings are not located where GPG expects them to be, you will need to configure the macro %_gpg_path to be the location of the GPG key rings to use.
For compatibility with older versions of GPG, PGP, and rpm, only V3 OpenPGP signature packets should be configured. Either DSA or RSA verification algorithms can be used, but DSA is preferred.
If you want to be able to sign packages you create yourself, you also need to create your own public and secret key pair (see the GPG manual). You will also need to configure the rpm macros
- %_signature
- The signature type. Right now only gpg and pgp are supported.
- %_gpg_name
- The name of the "user" whose key you wish to use to sign your packages.
For example, to be able to use GPG to sign packages as the user "John Doe<EMAIL_ADDRESS>from the key rings located in /etc/rpm/.gpg using the executable /usr/bin/gpg you would include
%_signature gpg %_gpg_path /etc/rpm/.gpg %_gpg_name John Doe<EMAIL_ADDRESS>%__gpg /usr/bin/gpg
in a macro configuration file. Use /etc/rpm/macros for per-system configuration and ~/.rpmmacros for per-user configuration. Typically it's sufficient to set just %_gpg_name.
REBUILD DATABASE OPTIONS
The general form of an rpm rebuild database command is
rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] [--root DIRECTORY]
Use --initdb to create a new database if one doesn't already exist (existing database is not overwritten), use --rebuilddb to rebuild the database indices from the installed package headers.
SHOWRC
The command
rpm --showrc
shows the values rpm will use for all of the options are currently set in rpmrc and macros configuration file(s).
FTP/HTTP OPTIONS
rpm can act as an FTP and/or HTTP client so that packages can be queried or installed from the internet. Package files for install, upgrade, and query operations may be specified as an ftp or http style URL:
ftp://USER:PASSWORD@HOST:PORT/path/to/package.rpm
If the :PASSWORD portion is omitted, the password will be prompted for (once per user/hostname pair). If both the user and password are omitted, anonymous ftp is used. In all cases, passive (PASV) ftp transfers are performed.
rpm allows the following options to be used with ftp URLs:
- --ftpproxy HOST
- The host HOST will be used as a proxy server for all ftp transfers, which allows users to ftp through firewall machines which use proxy systems. This option may also be specified by configuring the macro %_ftpproxy.
- --ftpport PORT
- The TCP PORT number to use for the ftp connection on the proxy ftp server instead of the default port. This option may also be specified by configuring the macro %_ftpport.
rpm allows the following options to be used with http URLs:
- --httpproxy HOST
- The host HOST will be used as a proxy server for all http transfers. This option may also be specified by configuring the macro %_httpproxy.
- --httpport PORT
- The TCP PORT number to use for the http connection on the proxy http server instead of the default port. This option may also be specified by configuring the macro %_httpport.
LEGACY ISSUES
Executing rpmbuild
The build modes of rpm are now resident in the /usr/bin/rpmbuild executable. Install the package containing rpmbuild (usually rpm-build) and see rpmbuild(8) for documentation of all the rpm build modes.
FILES
rpmrc Configuration
/usr/lib/rpm/rpmrc /usr/lib/rpm/redhat/rpmrc /etc/rpmrc ~/.rpmrc
Macro Configuration
/usr/lib/rpm/macros /usr/lib/rpm/redhat/macros /etc/rpm/macros ~/.rpmmacros
Database
/var/lib/rpm/Basenames /var/lib/rpm/Conflictname /var/lib/rpm/Dirnames /var/lib/rpm/Filemd5s /var/lib/rpm/Group /var/lib/rpm/Installtid /var/lib/rpm/Name /var/lib/rpm/Packages /var/lib/rpm/Providename /var/lib/rpm/Provideversion /var/lib/rpm/Pubkeys /var/lib/rpm/Removed /var/lib/rpm/Requirename /var/lib/rpm/Requireversion /var/lib/rpm/Sha1header /var/lib/rpm/Sigmd5 /var/lib/rpm/Triggername
Temporary
SEE ALSO
popt(3), rpm2cpio(8), rpmbuild(8),
rpm --help - as rpm supports customizing the options via popt aliases it's impossible to guarantee that what's described in the manual matches what's available.
http://www.rpm.org/ <URL:http://www.rpm.org/>
AUTHORS
Marc Ewing<EMAIL_ADDRESS>Jeff Johnson<EMAIL_ADDRESS>Erik Troan<EMAIL_ADDRESS>Index
This document was created by man2html, using the manual pages.
Time: 05:34:29 GMT, December 24, 2015


This repo was made to be able to start experimental projects in no time.
If you feel like trying it out, click the button below and fork a copy!


--- layout: post permalink: hunterbaycoffee.html Tags: Array NameOfCoupon: Hunter Bay Coffee Summary: See our Hunter Bay Coffee Coupon Code, Hunter Bay Coffee Rebate, Hunter Bay Coffee Promo Code, Hunter Bay Coffee Discount, Hunter Bay Coffee Coupon Cash Back Rebate here. MetaKeywords: Hunter Bay Coffee Coupon Code, Hunter Bay Coffee Rebate, Hunter Bay Coffee Promo Code, Hunter Bay Coffee Cash Back Rebate, Hunter Bay Coffee Discount, Hunter Bay Coffee Coupon Image: images/5045.jpg LinkURL: http://www.shareasale.com/r.cfm?b=18333&u=412002&m=5045 affiliate_url_link: http://www.icouponblog.com/jane.php?id=3 thesis_readmore: See the Hunter Bay Coffee Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=hunterbay.com Title: Save 10% - Hunter Bay Coffee Coupon Code for hunterbay.com. Hunter Bay Coffee Rebate & Discount thesis_description: Our Hunter Bay Coffee Discount Coupon Code for hunterbay.com. We have the best Hunter Bay Coffee Rebate anywhere. thesis_keywords: Hunter Bay Coffee, Hunter Bay Coffee Coupon Code, Hunter Bay Coffee Discount, Hunter Bay Coffee Rebate product_name: Hunter Bay Coffee hop_url: http://www.icouponblog.com/hop.php?id=3 ---
Hunter Bay Coffee is Montana’s premium gourmet coffee roaster. Our gourmet coffee shop offers: gourmet coffees, 100% organic coffees, classic espresso coffee recipes, coffee gift baskets, and coffee of the month clubs. Hunter Bay roasts to order and ships in two days – so customers are guaranteed super fresh coffee. Our master roasters blend and slow-roast these gourmet coffees daily in Missoula, Montana. Hunter Bay has several recognizable brands, including: Moose Drool, Trout Slayer, Smoke Jumper and Praying Monk. We pay a 20% commission per sale and we have 90 day tracking.
iCouponBlog offers 10% Cash Back on any orders with Hunter Bay Coffee. All you have to do is use the Hunter Bay Coffee coupon button above and it will take you to Hunter Bay Coffee's website. After you make your purchase, just come back to icouponblog.com and apply for your rebate. It's really that easy.
The thing I really like about Hunter Bay is their selection of coffees. They have some 100% organic coffees, they have some espresso blends (3 at last count!) and decaf coffees too. And you won't have to wait a long time either. Hunter Bay Coffee sends out all of their shipments within 2 days. So if you have a hankerin for some delicious fresh roasted coffee or espresso and don't feel like waiting for weeks, then Hunter Bay Coffee is your provider.
Another thing about Hunter Bay Coffee that not a lot of people know is that they have tea. They have a number of different teas so just about everyone in the family can find something they like. In addition to black, green, and mango tea, you can try some of their awesome Montana Premium Tea. It sounds really good.
The last thing I wanted to say about our Hunter Bay Coffee Discount and Hunter Bay Coffee Coupon code is that you can save even more money by selecting something from Hunter Bay Coffee's promo area or their wholesale area. When you use our Hunter Bay Coffee Cash Back Coupon with one of Hunter Bay Coffee's promos or wholesale deal, you can save even more!


"We have the most unique and tastiest cookies you will ever try!"
Locations:
- 1914 Pike Place Seattle, WA USA
- 板橋１丁目, 板橋区, Tokyo 173-0004, Japan
- The Royal Oceanic, Dubai Marina, Dubai
- Paris 3eme, Paris, France
- Jr Colina, Bellavista Lima, Lima
Peru
- Hours of Operation: 6 am - 7pm Everyday


| Method Name | Parameters | Return Value | Description |
| makeMove(cell) | cell: specifies in which cell the move should be made. It should be specified as fxy, where x is a number and refers to the row, and y is also a number and refers to the column. | None | This method allows to make a move. The moves will automatically alternate the player. The game ends when one of the players wins or it's a draw. |
| clearGrid() | None | None | Clears the playing grid and starts a new game. |
| listen(cb) | cb: is the callback function. This function will be called when the grid changes. The grid is passed to the callback function | None | The listen(cb) functionality is used to track change in the model and receive notifications. This allows the UI to be updated when the model changes. |


--- layout: post title: Dynamic form generation published: true date: 2010-09-01 categories: [] posterous_url: http://blog.hungerandthirstdesign.com/post/1047893587/dynamic-form-generation posterous_slug: post/1047893587/dynamic-form-generation ---
Interesting app for Hargray Communication this past few weeks. I was asked to design a dynamic survey application that is built, more or less, based on a configuration stored in a database. This is so we can have a front-end application in Oracle that allows, say, non-technical marketing people to build a survey from a form, and then it generates a set of web pages allowing the customer to take the survey.
So that’s what I did
This is a fairly simple app on the whole. Solely purposed to allow customers to take surveys based on a link we send them. So why am I mentioning this?
Because dynamically generated apps are cool!
I originally did this with helpers that took the name of the question type (something like “single_choice” for radio buttons, “comment” for a multiline text area, etc.) and then an eval statement to call the right helper method. That made for some messy code in the helper. So I switched to using a set of partials instead, with the same names as what I have in the example above. This way I can do:
= render "shared/#{question.survey_question_type["sqy_code"].downcase}", :locals => {:form => f, :quest => question}
and get show the question. The radio-button partial looks simply like:
- locals[:quest].survey_answers.each do |a| = locals[:form].radio_button(locals[:quest]["sqt_name"].gsub(/(-|\s)/, "_").downcase.to_sym, a["saw_uid_pk"]) = a["saw_web_answer"]
Look a bit weird? I’m also doing some crazy stuff for the answer generated from this form. Since I am in oracle and the data is stored using PLSQL procedures (not my choice), I can’t use the standard ARObject.save method. In fact, I’m not using ActiveRecord as the class base at all. Its actually using ActiveModel and acting like its an ActiveRecord object with a few fake methods to allow me to use it in the form_for helper and get standard AR validations. The class looks like:
class AnswerValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) record.errors[attribute] << (options[:message] || "question not answered") if value.nil? and !record.errors[attribute].include? (options[:message] || "question not answered") end end class Answer include ActiveModel::Validations include ActiveModel::AttributeMethods attr_accessor :id def to_param (id = self.id) ? id.to_s : nil end # def to_key # persisted? ? nil : [id] # end #force to always be new def new_record? true end def set_attributes(values) values.each do |k,v| self.send "#{k}=".to_sym, v end end def initialize(questions=nil) # create accessor methods if questions questions.each do |q| name = q["sqt_name"].gsub(/(-|\s)/, "_").downcase.to_sym class_eval { attr_accessor name validates name, :answer => true if q['sqt_required_fl'] } end end end end
As you can see, I have an AnswerValidator class that does the evaluation of the answers returned to make sure all the required which is set to validate for every record where q[‘sqt_required_fl’] is true. (This is the db column that flags if the question requires an answer to be complete).
Now the class_eval section actually dynamically creates a set of attr_accessor methods from the database fields so that I can access the fields as methods (necessary to make the validations form_for driven, since form_for looks for a method (object.attr_name) instead of a hash value (object[:attr_name]). Note: there may be a better way to do this?. Post in the comments if you know how.
The new_record? and to_param methods are needed by form_for as well to figure reference the object and to figure out if it is updating an existing record or creating a new one. The commented code to_key is what to_param becomes in Rails 3.0.0.beta3 (using beta currently).
Because I found issues…
…with this app when pushing new code in dev and not restarting the app. Why? Because of what is noted in this thread. Because the forms are being dynamically generated, they are relying on resources created at runtime. If I push new code to my dev server while the app is still running, the classes are dynamically regenerated. Which in turn means all the resources the dynamic form was relying on are now gone and weird call tree errors start showing up. So the real solution to this is in the config/environments/development.rb file, simply change:
config.cache_classes = false #to config.cache_classes = true
Just don’t forget to restart the app every time you push new code :)


The visualisation compares 35 US cities on 17 different metrics across ease of moving around [Transportation], cost of living, quality of neighbourhood, living quality [#music venues, #coffee shops, etc] and employment statistics. The metrics are chosen based on its relevancy and importance for young adults if they were choosing among multiple cities. They are able to have the overview as well as detailed comparison among several cities they focus on.
Choosing between multiple cities to live in could be a daunting task specially for internationals who are new to the foreign land or young adults looking to relocate when starting the next chapter of their lives.They may be considering more than one option, however, finding and comparing information about the cities and picking one is both resource and time intensive. The viualisation is aimed to help young people especially new college graduates who are considering relocation or people who just want to know more, explore, compare and rank different cities.
Data was collected from multiple sources like US Census Bureau, Bureau of Labour Statistics, eventbrite.com, etc. This multivariate dataset with 17 variables was cleaned and normalised for 35 US cities. The variables were all quantitative and included metrics around Transportation, Quality of Living, Cost of Living, Entertainment and employment statistics.
We started with who are the users of the system and what would be some questions they would seek answers to from the visualisation. We abstracted these questions into atomic tasks. We looked at various visualisation techniques for multivariate data sets to seek inspiration. We held multiple brainstorming sessions and came up with multiple designs lke stand-alone exploratory systems (Dus and magnet), multiview representation of data and some insipired from the theme of daily and casual visualisations.
Some of these were hard to implement or did not resonate with the target users i.e. they found some designs very technical and not friendly. Others did not help fulfilling representative user tasks. based on the feedback received, we iterated our design and settled for a co-ordinated circular chord diagram.
The interface of the visualisation offers various elements to explore the underlying content. The three major components are Controllers, Chord Diagram and the stacked bar chart.
Controllers
These are checkboxes to select between multiple metrics and Cities.
Metric selector: It acts both as a color legend and selector. For the legend, pastel colors are used for 17 metrics since it is a good choice for large number of metrics.
City Selector: Cities can be selected from the alphabetically ordered list or from the US map which shows the spatial location of the cities. The list and the map are linked and making a selection on one highlights and selects the corresponding city on the other.
Circular Chord Diagram
A custom circular Chord diagram is used to show how each cities compare across different metrics. The selected metrics are placed on left side and cities on right side. The width of the edges/chords represent the normalised value of the metric and color represents the metric itself. The city is represented by the arc and is composed of the selected metrics. The wider the arc for the city, more better it is among the selected cities. The diagram supports the following interaction:
Hovering: Hovering each path shows the actual values of the metric for the city. Hovering on the city arc highlights all the chords of the selected metrics for the city and hovering on the metric arc highlights the chords for various cities for that metric.
Add and remove: Users can add or remove metrics and cities to the diagram by using the controllers.
Stacked Bar chart
The stacked bar chart is used to rank all the cities according to the selected metrics. The cities are placed along the x-axis and different metrics are stacked upon each other. The height of each tile is based on the normalized value for the metric. The height of the bar is calculated by adding up the tiles. This view supports hover, similarity and sort functions.
Hovering each stack shows the actual values of the metric for the city.
Selecting any city highlights all the cities based on its similarity with the selected one. Opacity values are used to represent similarity. Higher opacity corresponds to higher similarity. Similarity is calculated using the standard deviation of all the other cities compared to the selected city.
Upon clicking the “Sort button”, cities are sorted and arranged on x-axis based on the sum of the normalised values of the selected metrics. Thus, this view also gives a sense on distribution of all the cities for the selected metrics.
We came across many problems while implementing the interface. Choice of colors was crucial since we had a multivariate independent dataset. The data was not similar i.e a high value of average income meant a better city but a high congestion level did not. Chord diagram didnt prove well to compare values bt only gave a spatial sense of how the cities compared. This was taken care of by the stacked bar chart but normalisation made stacks very small to to visually compare. Overall, the visualization lacked in comparing all the cities across all the metrics in an efficient way.
Suggested changes to these problems:
Replace Chord diagram with other multivariate visualization technique which allows better exploration and is well accepted by the target audience. Also, Redesign the stacked bar chart for better understanding of the represented data.


Before Change
filepath = os.path.join(path, filename + ".h5")
try:
self.snn = keras.models.load_model(filepath, custom_layers)
except KeyError:
raise NotImplementedError(
"Loading SNN for INIsim is not supported yet.")
// Loading does not work anymore because the configparser object
// needed by the custom layers is not stored when saving the model.
// Could be implemented by overriding Keras" save / load methods, but
// since converting even large Keras models from scratch is so fast,
// there"s really no need.
def get_poisson_frame_batch(self, x_b_l):
Get a batch of Poisson input spikes.
Parameters
After Change
return np.cumsum(output_b_l_t, 2)
def load(self, path, filename):
SNN_.load(self, path, filename)
def set_spiketrains(self, spiketrains_b_l_t, i):
if self.spiketrains_n_b_l_t is not None:
self.spiketrains_n_b_l_t[i][0][:] = spiketrains_b_l_t


--- layout: default title: "CAPTCHA cracker" description: "Developed a program that segments a reasonably complex CAPTCHA image with adversarial clutter to extract the letters and then applies basic Optical Character Recognition to recognise the characters, using a random forest trained on a sufficiently large dataset of characters" quote: "If you need something, all you need to do is ask" ---
Developed a program that segments a reasonably complex CAPTCHA image with adversarial clutter to extract the letters and then applies basic Optical Character Recognition to recognise the characters, using a random forest trained on a sufficiently large dataset of characters.


31
1 Later, the Philistines again fought against the Israelites. The Israelites ran away from them, and many Israelites were killed on Mount Gilboa.
2 The Philistines caught up with Saul and his three sons, and they killed all three of his sons, Jonathan and Abinadab and Malchishua.
3 The fighting was very fierce around Saul. When the Philistine archers caught up with Saul, they wounded him badly with their arrows.
4 Saul said to the man who was carrying his weapons, "Take out your sword and kill me with it, in order that these heathen Philistines will not be able to thrust their swords into me and make fun of me while I am dying."
But the man who was carrying Saul's weapons was terrified, and refused to do that. So Saul took his own sword and fell on it. The sword pierced his body, and he died.
5 When the man carrying his weapons saw that Saul was dead, he also threw himself on his own sword and died.
6 So Saul, three of his sons, and the man who carried Saul's weapons, all died on that same day.
7 When the Israelite people on the north side of the Valley of Jezreel and on the east side of the Jordan River heard that the Israelite army had run away and that Saul and his sons had died, they left their towns and ran away. Then the Philistines came and occupied their cities.
8 The next day, when the Philistines came to take away the weapons of the dead Israelite soldiers, they found the bodies of Saul and his three sons on Mount Gilboa.
9 They cut off Saul's head and took his weapons. Then they sent messengers throughout their land to proclaim the news in the temples, where they kept their idols, and to the other people, that their army had defeated the Israelites.
10 They put Saul's weapons in the temple of their goddess Asherah. They also fastened the bodies of Saul and his sons to the wall that surrounded the city of Beth Shan.
11 When the people who lived in Jabesh in the region of Gilead heard what the Philistines had done to Saul's corpse,
12 all their bravest soldiers walked all night to Beth Shan. They took the corpses of Saul and his sons down from the city wall, and they took them back to Jabesh and burned the corpses there.
13 They took the bones and buried them under a big tamarisk tree. Then they fasted for seven days.


Our curriculum over the past 5 weeks has not only put emphasis on how essential core skills are in our day to day lives, but also as workers in the tech industry. Employers, and colleagues, are looking to work with people that have high EQ, who are great team players and communicators. Prior to beginning my study at EDA, I already began meeting and speaking with people who work in tech as software/web developers and recruiters. Their emphasis on core skills intrigued me, and I thought to myself that I already have good skills in this area due to past work experience, but further developing these core skills would be highly beneficial for my career. I was pleased to see the emphasis on core skills at EDA, as it reflected what I had been hearing from people right in the industry.
Throughout foundations, I had the opportunity to reflect and learn about myself. I felt that I always approached my study with a positive attitude, and that I was taking responsibility for my study and learning outcomes. I was able to develop my focus and productivity with the use of a pomodoro timer while working. While foundations has mainly been a solo effort, I understand how core skills apply in tech in a collaborative working environment. It is important to communicate clearly in order for jobs to be completed properly. This involves active listening and engaging in the conversation, and can including looping. By being compassionate we can get the best out of our peers and build each other up.
I want to further my education with programming to have more career opportunities. I need a solid job with solid pay. Programming appears to have a lot of potential for freelance work, I would love to have the option to tap into that. There are amazing Music Technology companies in New Zealand that I would also love to work with. I am also interested in e-commerce and retail/wholesale technology solutions. NZ is not short on those either!
My biggest strengths during bootcamp could be my tenacity and creativity. I might struggle with the learning pace in some subjects.
Potentially feeling burnt out. I will be doing my best to manage that.
I would like to develop my communication, interpersonal, and leadership skills.
Maintain positive habits, timekeeping, and communicate and reach out for help when struggling, technical or non-technical! I will strive to help others when I can. I will need to be dedicated and accountable as it won't just be my study or work on the line. There will be instances during bootcamp where our cohort will rely on one another.
I look forward to being at the Bootcamp, where I can meet my cohort and we can all learn and build each other up.


--- layout: page title: Redirects subtitle: Tutorial, of sorts --- Recently, I made a redirect which was sort of popular. Here's how you make yours: Right-click and see "Page source". Hopefully, you were quick enough, bye!


Qatar says to sharply raise gas output
DOHA, Nov 25 — Qatar said today it would sharply boost its liquefied natural gas (LNG) production, already the world’s largest, based on a rise in its proven reserves.
Minister of State for Energy Affairs and CEO of state-owned Qatar Petroleum Saad al-Kaabi said Qatar’s LNG output of 77 million tonnes per year would increase to 126 million tonnes by 2027.
The Gulf state had previously signalled a rise to 110 million tonnes per year by 2024.
The minister gave no figures about the expected investments required to meet the target.
Kaabi also announced that proven gas reserves in the North Field, which Qatar shares with Iran, had increased to 1,760 trillion cubic feet (50 trillion cubic metres).
Almost all of Qatar’s gas reserves are located in the North Field, the world’s largest gas field.
“Studies and well tests have also confirmed the ability to produce large quantities of gas” from a North Field extension in the area near the industrial hub of Ras Laffan, the minister said.
In addition, Kaabi said the field contains 70 billion barrels of condensates, or natural gas liquids, and massive quantities of LPG, ethane and helium.
“These are very important findings which will have a great positive impact on Qatar’s gas industry,” Kaabi said in a statement.
The tiny Gulf state, which has been under boycott by its Gulf neighbours since June 2017, also pumps over 500,000 barrels of crude oil per day.
The new plans will raise Qatar’s overall hydrocarbon production to about 6.7 million barrels oil equivalent per day from 4.6 million currently.
Gas has helped fuel Qatar’s rise to become one of the world’s richest countries, transforming the peninsula state and helping it to successfully bid for the 2022 football World Cup finals. — AFP


Chinatown and Maxwell hawker center
by Monika Suchoszek
On the way to Chinatown we decided to stop for a lunch in less touristic place and mix with locals at Maxwell food centre, one of many hawker centers in Singapore!
You can find here dozens of stalls with huge variety of food, refreshing local beverages and sweet treats.
As an appetizer, we tried deep fried dumplings (3S$) on a stall number 92, filled with meat and vegetables, juicy inside and very crispy outside, delicious!
Tian-Tian Chicken Rice at stall 10&11, very simple meal consisting of tender chicken and interestingly spiced rice (3.5S$ small portion), food disappeared from the plate immediately! This stall defeated Gordon Ramsey in “Hawker Heroes Challenge” and is vary famous in Singapore. We also tried hot&sour soup (stall 92) and egg-chicken-vegetable-rice. The latter was scooped on the plate with impressive vigor and speed. While it doesn’t look like a gourmet dinner, the flavors where great and only 3.1S$.
Sugar cane juice (1.2S$) is very popular here but for me, way to sweet. Sebastian liked his three-layer coffee: a bottom of coffee sirup, followed by condensed milk and strong coffee on top :)
The Buddha Tooth Replic Museum was the first temple we noticed in the Chinatown district. Note that you need to be dressed properly to enter this (and other) temple(s). Inside the temple is richly decorated with lustrous gold.
 We also spotted some counterfeit watches and bootleg DVDs being sold in a nearby alley. The dominant color inside is red and gold, the colors of traditional chinese decorations.
Oh, what is this horrible smell!  Decaying meat? No! We are approaching a stall with durians :D Now it becomes obvious why it is strictly forbidden to take durians on the public transport. Next time I will not breath through my nose and try them :p
Few days later, I noticed durian flavour cookies, chocolate and candy in one of the Chinese supermarkets. Since I was very curious about the flavour, I bought bar of chocolate. How big my surprise was when I discovered that these products smell like the fresh fruits! :O Ugh…. I do not recommend to open any of them in a public places ;) Now the chocolate is wrapped tightly in a plastic bag and waiting on a balcony for someone willing to try it! :D
Chinatown is full of narrow streets, small shops, tailors where you can order a custom suit, which is fitted and ready in only 6h, massage places and restaurants. However, food here is very similar to what you can find in Maxwell center but at twice the price. I would recommend to go for the cheaper and more authentic option, especially for tourists on a budget.
Sri Mariamman Temple, the oldest and the most important Hindu temple in Singapore, unique due to colorful statuary above the entrance, you can visit it but remember to take off your shoes!
Thian Hock Keng temple is the oldest and the most important place of worship of the Hokkien people (a Chinese dialect group) in the country.
Oasia hotel near Tanjong Pagar stands out from other buildings which are mostly made with steel and glass. This one has a unique claret color and few enormous gardens with swimming pools, an outstanding combination! :O
Practical info:
- Food at Maxwell center in price range 3-7S$, drinks 1-2S$
- MRT station - Tanjong Pagar (starting point of our walk)
Subscribe via RSS


1.
IP ADDRESS
2.
IP INFO


Poppy-stealing pigeon offers poignant reminder of war anniversary
MELBOURNE: A pigeon has been pinching poppies from the Tomb of the Unknown Soldier at Australia's national war memorial in Canberra and using them to build a colorful nest in the lead-up to Remembrance Day commemorations.
The pigeon has created the nest with the red flowers under the soft light of a stained glass window at The Australian War Memorial, the West Australian newspaper reported.
The poppy is a symbol used by Commonwealth countries to recognise the sacrifice made by armed forces members who have died in the line of duty.
"The wounded soldier symbolises the defining quality of endurance, and the nest of poppies nearby is a poignant reminder of the powerful bond between man and beast on the battlefield," a War Memorial spokesperson told the West Australian.
Remembrance Day is commemorated on Nov 11 each year.


Settings changed
This is just a notice to let you know that the following account settings have been changed: <%text>${settings}%text>.
If you did not make these change, please ensure your account is secure. Feel free to contact us if you run into any problems.


type CachedTracer struct { Cache []*OperationTrace // contains filtered or unexported fields }
func InheritCachedTracer(saver ICachedTraceSaver) *CachedTracer
Creates a new instance of the logger.
func (c *CachedTracer) BeginTrace(correlationId string, component string, operation string) *TraceTiming
Begings recording an operation trace
- correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. Returns a trace timing object.
func (c *CachedTracer) Clear()
Clears (removes) all cached log messages.
func (c *CachedTracer) Configure(config *cconf.ConfigParams)
Configures component by passing configuration parameters.
- config configuration parameters to be set.
func (c *CachedTracer) Dump()
Dumps (writes) the currently cached log messages. See [[Write]]
func (c *CachedTracer) Failure(correlationId string, component string, operation string, err error, duration int64)
Records an operation failure with its name, duration and error
- correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. - error an error object associated with this trace. - duration execution duration in milliseconds.
func (c *CachedTracer) SetReferences(references cref.IReferences)
Sets references to dependent components.
- references references to locate the component dependencies.
func (c *CachedTracer) Trace(correlationId string, component string, operation string, duration int64)
Records an operation trace with its name and duration
- correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. - duration execution duration in milliseconds.
func (c *CachedTracer) Update()
Makes trace cache as updated and dumps it when timeout expires. See [[Dump]]
func (c *CachedTracer) Write(correlationId string, component string, operation string, err error, duration int64)
Writes a log message to the logger destination.
- correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. - error an error object associated with this trace. - duration execution duration in milliseconds.
type CompositeTracer struct { Tracers []ITracer }
func NewCompositeTracer(references cref.IReferences) *CompositeTracer
func (c *CompositeTracer) BeginTrace(correlationId string, component string, operation string) *TraceTiming
func (c *CompositeTracer) Failure(correlationId string, component string, operation string, err error, duration int64)
Records an operation failure with its name, duration and error - correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. - error an error object associated with this trace. - duration execution duration in milliseconds.
func (c *CompositeTracer) SetReferences(references cref.IReferences)
Sets references to dependent components. - references references to locate the component dependencies.
func (c *CompositeTracer) Trace(correlationId string, component string, operation string, duration int64)
Records an operation trace with its name and duration - correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. - duration execution duration in milliseconds.
type DefaultTracerFactory struct { cbuild.Factory NullTracerDescriptor *cref.Descriptor LogTracerDescriptor *cref.Descriptor CompositeTracerDescriptor *cref.Descriptor }
func NewDefaultTracerFactory() *DefaultTracerFactory
Create a new instance of the factory.
type ICachedTraceSaver interface { Save(operations []*OperationTrace) error }
Interface for tracer components that capture operation traces.
type ITracer interface { //Records an operation trace with its name and duration // //- correlationId (optional) transaction id to trace execution through call chain. //- component a name of called component //- operation a name of the executed operation. //- duration execution duration in milliseconds. Trace(correlationId string, component string, operation string, duration int64) //Records an operation failure with its name, duration and error //- correlationId (optional) transaction id to trace execution through call chain. //- component a name of called component //- operation a name of the executed operation. //- error an error object associated with this trace. //- duration execution duration in milliseconds. Failure(correlationId string, component string, operation string, err error, duration int64) //Begings recording an operation trace //- correlationId (optional) transaction id to trace execution through call chain. //- component a name of called component //- operation a name of the executed operation. //Returns a trace timing object. BeginTrace(correlationId string, component string, operation string) *TraceTiming }
type LogTracer struct {
// contains filtered or unexported fields
}
func NewLogTracer() *LogTracer
Creates a new instance of the tracer.
func (c *LogTracer) BeginTrace(correlationId string, component string, operation string) *TraceTiming
Begings recording an operation trace - correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. Returns a trace timing object.
func (c *LogTracer) Configure(config *cconf.ConfigParams)
Configures component by passing configuration parameters. - config configuration parameters to be set.
func (c *LogTracer) Failure(correlationId string, component string, operation string, err error, duration int64)
Records an operation failure with its name, duration and error - correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. - error an error object associated with this trace. - duration execution duration in milliseconds.
func (c *LogTracer) SetReferences(references cref.IReferences)
Sets references to dependent components. - references references to locate the component dependencies.
func (c *LogTracer) Trace(correlationId string, component string, operation string, duration int64)
Records an operation trace with its name and duration - correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. - duration execution duration in milliseconds.
type NullTracer struct { }
func NewNullTracer() *NullTracer
Creates a new instance of the tracer.
func (c *NullTracer) BeginTrace(correlationId string, component string, operation string) *TraceTiming
Begings recording an operation trace - correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. Returns a trace timing object.
func (c *NullTracer) Failure(correlationId string, component string, operation string, err error, duration int64)
func (c *NullTracer) Trace(correlationId string, component string, operation string, duration int64)
Records an operation trace with its name and duration - correlationId (optional) transaction id to trace execution through call chain. - component a name of called component - operation a name of the executed operation. - duration execution duration in milliseconds.
type OperationTrace struct { // The time when operation was executed Time time.Time // The source (context name) Source string `json:"source"` // The name of component Component string `json:"component"` // The name of the executed operation Operation string `json:"operation"` // The transaction id to trace execution through call chain. CorrelationId string `json:"correlation_id"` // The duration of the operation in milliseconds Duration int64 `json:"duration"` //The description of the captured error //ErrorDescription //ApplicationException Error cerr.ErrorDescription `json:"error"` }
type TraceTiming struct {
// contains filtered or unexported fields
}
func NewTraceTiming(correlationId string, component string, operation string, tracer ITracer) *TraceTiming
Creates a new instance of the timing callback object.
- correlationId (optional) transaction id to trace execution through call chain. - component an associated component name - operation an associated operation name - callback a callback that shall be called when endTiming is called.
func (c *TraceTiming) EndFailure(err error)
Ends timing of a failed block, calculates elapsed time and records the associated trace. - error an error object associated with this trace.
func (c *TraceTiming) EndTrace()
Ends timing of an execution block, calculates elapsed time and records the associated trace.