{% include sitelogo.html %}
{% include mainnav.html %}
{% include mainslider.html %}
{% include threeicon.html %}
{% include welcome.html %}
{% include popular.html %}
{% include wedohelp.html %}
{% include weneedhelp.html %}
{% include testimonals.html %}
{% include join1.html %}
{% include newsletter1.html %}
{% include news1.html %}
{% include gallery1.html %}
{% include brand1.html %}
{% include sitefooter1.html %}
{% include sitefooter.html %}
{% include mobilenav.html %}
{% include searchpopup.html %}
{% include ga.html %}
{% include indexscript.html %}


jsx-alone-dom-dom
alone
-
sample-alone
/
sample-alone-min
. Demo of minimal dom dom application to see its weight when using alone.


JavaScript is disabled on your browser.
Skip navigation links
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes
Hierarchy For Package us.kbase.workspace
Package Hierarchies:
All Packages
Class Hierarchy
java.lang.Object
us.kbase.workspace.
AlterWorkspaceMetadataParams
us.kbase.workspace.
CloneWorkspaceParams
us.kbase.workspace.
CopyObjectParams
us.kbase.workspace.
CreateWorkspaceParams
us.kbase.workspace.
ExternalDataUnit
us.kbase.workspace.
FuncInfo
us.kbase.workspace.
GetModuleInfoParams
us.kbase.workspace.
GetNamesByPrefixParams
us.kbase.workspace.
GetNamesByPrefixResults
us.kbase.workspace.
GetObjectInfo3Params
us.kbase.workspace.
GetObjectInfo3Results
us.kbase.workspace.
GetObjectInfoNewParams
us.kbase.workspace.
GetObjectmetaParams
us.kbase.workspace.
GetObjectOutput
us.kbase.workspace.
GetObjectParams
us.kbase.workspace.
GetObjects2Params
us.kbase.workspace.
GetObjects2Results
us.kbase.workspace.
GetPermissionsMassParams
us.kbase.workspace.
GetWorkspacemetaParams
us.kbase.workspace.
GrantModuleOwnershipParams
us.kbase.workspace.
ListAllTypesParams
us.kbase.workspace.
ListModulesParams
us.kbase.workspace.
ListModuleVersionsParams
us.kbase.workspace.
ListObjectsParams
us.kbase.workspace.
ListWorkspaceIDsParams
us.kbase.workspace.
ListWorkspaceIDsResults
us.kbase.workspace.
ListWorkspaceInfoParams
us.kbase.workspace.
ListWorkspaceObjectsParams
us.kbase.workspace.
ListWorkspacesParams
us.kbase.workspace.
ModuleInfo
us.kbase.workspace.
ModuleVersions
us.kbase.workspace.
ObjectData
us.kbase.workspace.
ObjectIdentity
us.kbase.workspace.
ObjectProvenanceInfo
us.kbase.workspace.
ObjectSaveData
us.kbase.workspace.
ObjectSpecification
us.kbase.workspace.
ProvenanceAction
us.kbase.workspace.
RegisterTypespecCopyParams
us.kbase.workspace.
RegisterTypespecParams
us.kbase.workspace.
RemoveModuleOwnershipParams
us.kbase.workspace.
RenameObjectParams
us.kbase.workspace.
RenameWorkspaceParams
us.kbase.workspace.
SaveObjectParams
us.kbase.workspace.
SaveObjectsParams
us.kbase.workspace.
SetGlobalPermissionsParams
us.kbase.workspace.
SetPermissionsParams
us.kbase.workspace.
SetWorkspaceDescriptionParams
us.kbase.workspace.
SubAction
us.kbase.workspace.
SubObjectIdentity
us.kbase.workspace.
TypeInfo
us.kbase.workspace.
WorkspaceClient
us.kbase.workspace.
WorkspaceIdentity
us.kbase.workspace.
WorkspacePermissions
Skip navigation links
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes


class: center, middle # jitmap: Execution engine for bitmaps --- # Problem * *Input*: `n` bitmaps and a logical expression (query) on said bitmaps. * *Output*: bitmap where the expression is applied element-wise at each bit position. ```javascript // Each value is a densely packed bitmap in memory of size 2^k. It represent // documents (or rules) in which the word (or attribute) is found. let reverse_index = { 'cat': [1,1,0,0,...,0], 'dog': [0,1,1,0,...,0], ..., 'yak': [0,1,0,0,...,1] }; // The query is known at runtime from the perspective of the compiler, e.g. it // can be extracted from a configuration file, an SQL query's `WHERE` clause, // R's dplyr `filter` verb, etc... let query = "(dog ^ cat) | yak"; // [1,1,1,0,...,1] let result = engine.execute(query, reverse_index); do_something(result); ``` --- # Applications / Problem modeling * *search engines*: posting lists (sorted sequences of integers) are encoded with bitmaps. Evaluating a search query (logical expression on keywords) can be implemented with logical expression on bitmaps. * *columnar databases*: selection vectors (index masks), the results of predicate on column expressions, can be encoded with bitmaps. Bitmaps are also used for index of low cardinality categorical columns and/or cached selection vectors (database cracking). ``` SQL SELECT SUM(a) FROM t WHERE b > 0 AND color = 'red'; -- int64_t acc = 0; -- for (size_t i = 0; i < len; i++) -- acc += mask_bitmap[i] ? a[i] : 0; -- return acc; ``` * *stream processing systems*: e.g. adtech bid requests filtering with campaign rules, bitmaps can be used as a first-pass optimization to lower the number of (costly) rules to evaluate on each incoming event. * Software that use bitmaps internally, Apache Lucene, Apache Druid, Apache Spark, ClickHouse, ... --- # jitmap: DSL-as-a-library ```C // jitmap compiles an expression returned as a function pointer. The function // can be called from any thread in the same address space and has a global // lifetime. // Function pointer that evaluates a defined expression on bitmaps of size // `kBitsPerBitmap`. The static size restriction is due to lack of development // time. typedef int32_t (*dense_eval_fn)(const char**, char*); /// The name of the symbol, exposed to gdb and linux's perf. const char* symbol_name = "query_a_and_b_and_c"; /// The query as a tiny DSL explained later. const char* query = "a & b & c"; /// Optionally tally the popcount in the generated function. bool with_popcnt = true; dense_eval_fn a_and_b_and_c = jitmap_compile(symbol_name, query, with_popcnt); // a, b, c, and output are pointers to bitmap. char* a, b, c, output; const char* inputs[3] = {a, b, c}; // The result of `a & b & c` will be stored in `output`, applied vertically // using vectorized instruction available on the host. int32_t output_popcnt = a_and_b_and_c(inputs, output); ``` --- # Domain specific language jitmap offers a small DSL language to evaluate bitwise operations on bitmaps. The language supports variables (named bitmap), empty/full literals, and basic operators. ## Supported expressions ```abnf literal = "$0" / "$1" symbol = 1*(ALPHA / DIGIT / "_") unary = "!" expr binary = expr ('&' / '|' / '^') expr paren = '(' expr ')' expr = literal / symbol / unary / binary / paren ; Some examples: ; !a ; (a & b) ; ($1 & (a | b) ^ (!a ^ (c & !d))) ``` --- # Implementation * c++17 library statically linked with LLVM >= 9.0 using ORCJit * Trivial pre-optimization passes on the AST, e.g. constant folding, operators simplification, trivial form of common subexpression elimation. * Vectorization and loop fusion is performed by the frontend (jitmap), i.e. generates a loop that iterates over words where the logical expression AST is applied on each word. * Optionally fuses a popcount accumulator in the loop with [Faster Population Counts Using AVX2 Instructions](https://arxiv.org/pdf/1611.07612.pdf) * `jitmap-ir
` command line utility dumps LLVM IR to stdout --- # Generated code ```x86asm # query: `(a & b) ^ (c & !d)` ... .LBB0_1: # %loop # =>This Inner Loop Header: Depth=1 # a=rcx, b=r8, c=rdi, d=rdx, output=rsi vmovaps zmm0, zmmword ptr [rcx + rax] vmovaps zmm1, zmmword ptr [rdi + rax] vandps zmm0, zmm0, zmmword ptr [r8 + rax] vandnps zmm1, zmm1, zmmword ptr [rdx + rax] vxorps zmm0, zmm1, zmm0 vmovaps zmmword ptr [rsi + rax], zmm0 # Unrolling performed by LLVM vmovaps zmm0, zmmword ptr [rcx + rax + 64] vmovaps zmm1, zmmword ptr [rdi + rax + 64] vandps zmm0, zmm0, zmmword ptr [r8 + rax + 64] vandnps zmm1, zmm1, zmmword ptr [rdx + rax + 64] vxorps zmm0, zmm1, zmm0 vmovaps zmmword ptr [rsi + rax + 64], zmm0 sub rax, -128 cmp rax, 8192 jne .LBB0_1 ... ``` --- ![benchmark](benchmark.png) --- # Future * Extend execution engine to support all RoaringBitmap compression scheme, e.g. dense, array, and RLE. * Unstall LLVM [Tree-Height-Reduction](https://reviews.llvm.org/D67383) pass ```x86asm # query: `a & b & c & d & e & f & g & h` .loop: # %loop # =>This Inner Loop Header: Depth=1 vmovaps zmm0, zmmword ptr [r9 + rbx] vandps zmm0, zmm0, zmmword ptr [r8 + rbx] vandps zmm0, zmm0, zmmword ptr [r10 + rbx] vandps zmm0, zmm0, zmmword ptr [r11 + rbx] vandps zmm0, zmm0, zmmword ptr [rcx + rbx] vandps zmm0, zmm0, zmmword ptr [rdx + rbx] vandps zmm0, zmm0, zmmword ptr [rax + rbx] vandps zmm0, zmm0, zmmword ptr [rdi + rbx] vmovaps zmmword ptr [rsi + rbx], zmm0 add rbx, 64 cmp rbx, 8192 jne .loop ``` * Experiment with LLVM optimizations knobs, especially controlling the unrolling window.


Binding a Mobile Client with the Digger Service
To use mobile services, you must represent your mobile app in OpenShift using a Mobile Client and that Mobile Client must be associated with the mobile service. This association is called a binding and once it’s done, your mobile app can use that service immediately.
| The association between a Mobile Client and service uses the Service Broker bind feature. |
To associate a Mobile Client with a mobile service:
-
Navigate to the Overview of your OpenShift project.
-
Click on the Mobile Client and navigate to Mobile Client view.
Your mobile app will be represented by two items in OpenShift, an item in the Mobile Clients list and an item in the Provisioned Services list. Make sure to click on the item in the Mobile Clients list. -
Navigate to Mobile Services tab.
-
Expand the service by clicking the > icon.
-
Click Create Binding and follow the Create Binding wizard to associate the Mobile Client with the service.
-
Fill out the binding parameters required by the service, if any.


Introduction
Abbreviations
The abbreviations used are mostly from the World Bridge Federation (WBF) with some changes, see also the
Abbreviations chapter at the end.
Opening bids
Let's start with the basic opening structure of the system (:
-
∅
-
|
1
♣
|
3+
♣
, 11+ HCP (11 BAL is rare)
|
-
|
1
♦
|
3+
♦
, 11+ HCP (11 BAL is rare)
|
-
|
1
♥
♠
|
5+
♥
/
♠
, 11+ HCP (11 BAL is rare)
|
-
-
-
|
2
♦
|
Multi-coloured: 6M (NV 5) and 5–10 HCP or 22–24 BAL or STR with a minor (Acol two)
|
-
|
2M
|
5M, 4m, vulnerable 55, 5–10 HCP
|
-
|
2NT
|
20-22 HCP, BAL (5M332 or 5m422 possible) and maybe even 4441, 5431 or 6322 (no 5+M)
|
-
-
The 1
♣
opening
This is the cornerstone of the 1 level opening bids: the rest of the 1 level
opening bids depend on the meaning of 1
♣
. This system has been developed
around 1990 when a club of Dutch bridge players did not want to continue with
the old fashioned 4 card major opening bids.
So 1
♥
and 1
♠
show 5 cards and 1
♦
shows 4 cards. Combined with
the knowledge of the Polish club, 1
♣
shows a limited opening but is forcing
anyway in order not to end in 1
♣
when opener is strong with 18-19 HCP and a
balanced hand.
The range of the 1
♣
opening is between 11 HCP and 22 HCP, so up to (but
excluding) game forcing hands. Because 1
♣
is forcing you can have quite a
good hand compared with a non forcing 1
♣
.
Responder has two negative bids: 1
♦
and 2
♦
(a kind of Multi) and that means
limited to about 6/7 HCP. When you bid positive the bidding becomes game
forcing opposite a strong hand (17+ HCP). So a possible club fit is important
when you are minimum for a positive bid.
Answers
-
No inverted minor
-
1
♣
-2
♦
includes 5+C with at least an invite
-
1
♣
-2
♠
shows 5 spades plus at least 4 clubs
-
Added 1
♣
-1
♦
-2M-2oM
-
Development after 1
♣
-1M with 4 card fit and a strong hand
-
1
♣
-1M-3
♦
-
fit after 1
♣
-1M
-
1
♣
-2
♦
-
1
♣
-2
♠
-
1
♣
-
|
Pass
|
impossible except when 5+
♣
and 0-3 HCP
|
-
|
1
♦
|
one of:
|
|
1) negative, 0-7 HCP
|
|
2) 4+
♦
, 8+ HCP
|
|
3) 8+ HCP, no major, no 4+
♦
, no other bid
|
-
-
-
-
|
2
♦
|
one of:
|
|
1) 0-7 HCP, 6M
|
|
2) 5+
♣
, 10+ HCP
|
-
-
-
-
|
3
♣
|
6
♣
, 6-9 HCP, expects to win 3NT opposite a strong balanced hand
|
-
-
1
♣
-1
♦
-
1
♣
-1
♦
-
|
1M
|
3M or 4M but only 3M if there is no alternative (with 2245 you open 1
♦
or rebid 2
♣
)
|
-
-
-
|
2m
|
NF (after 1
♣
-1
♦
-1
♠
opener shows at least 3+
♣
)
|
-
-
-
-
|
1NT
|
18-19 NT. See the 1NT opening.
|
-
|
2
♣
|
11-16 HCP, 6+
♣
or 2245 with good clubs
|
-
-
|
2M
|
FG, NAT (maybe 3 cards only)
|
-
-
|
3
♣
|
INV, not suitable for a 2NT bid
|
-
-
-
-
-
|
2NT
|
PUP, see 1
♣
-1
♦
-2
♦
-2NT
|
-
-
-
-
|
4
♣
|
the only bid that is a S/O
|
-
1
♣
-1
♦
-1
♥
-
-
-
|
3
♥
|
FG, 5+
♥
(opener can have 3 cards so with 4
♥
you bid 4
♠
FG first), longer diamonds
|
-
1
♣
-1
♦
-1
♠
-
-
-
|
3
♠
|
FG, 5+
♠
(opener can have 3 cards so with 4
♠
you bid 4
♠
FG first), longer diamonds
|
1
♣
-1M
-
1
♣
-1
♥
-
|
1
♠
|
shows 4
♠
(but can bid 1NT too with 4333)
|
-
1
♣
-1M
-
|
1NT
|
12-14 NT. 4333 possible after 1
♣
-1
♥
.
|
-
-
-
|
3
♣
|
(R), opener responds naturally
|
-
|
3
♦
|
(R),
♣
-fit, (mild) S/T, opener responds naturally
|
-
-
1
♣
-1M-1NT
-
1
♣
-1M-1NT
-
-
-
|
3m
|
5M-5m, good suits (else 2
♦
), FG
|
-
|
3M
|
6M, good suit (else 2
♦
), FG
|
1
♣
-1M-2
♣
-
1
♣
-1M-2
♣
-
|
2
♦
|
3rd suit forcing, FG unless opener bids NF and responder passes
|
-
-
-
-
-
|
3
♦
♥
♠
|
MAX, S/S (also 3M !)
|
-
-
|
3
♣
|
INV, not suitable for 2NT
|
-
-
-
1
♣
-1
♠
-2
♣
-
|
2
♥
|
NAT, INV (1
♣
-2
♥
shows 5
♠
-4
♥
and a weak hand)
|
-
1
♣
-1M-2
♦
-
1
♣
-1M
-
|
2
♦
|
one of:
|
|
1) 18-19 HCP, BAL, 4M possible
|
|
2) 17+ HCP, NAT, reverse
|
-
-
|
2
♠
|
variant 1, either 4
♠
(after 1
♣
-1
♥
) or waiting (after 1
♣
-1
♠
)
|
-
-
-
-
|
3M
|
variant 1, 4M, no 4333
|
-
-
-
-
-
-
|
3M
|
3M, suitable for trumps
|
-
|
3NT
|
variant 1, 4M333, stops
|
-
-
|
3
♣
|
5M-4m, good suits (else 2
♠
), S/T
|
-
|
3
♦
|
5M-5
♦
, good suits (else 2
♠
), S/T
|
-
|
3M
|
6M, good suit (else 2
♠
), S/T
|
-
|
1
♣
-1
♠
-2
♦
-2
♥
-2
♠
|
waiting, either balanced (needs partner to play) or 3-1-4-5
|
-
1
♣
-1
♥
-2
♦
-
|
3
♠
|
65 MM, good suits (else 2
♠
), S/T
|
-
1
♣
-1
♠
-2
♦
-
|
3
♥
|
55 MM, good suits (else 2
♠
), S/T
|
1
♣
-1M-2oM
1
♣
-1NT
-
1
♣
-1NT
-
-
-
|
2NT
|
PUP (maybe S/O in
♣
)
|
-
-
|
2NT
|
INV, short in the other minor
|
1
♣
-2
♦
A weak Multi-coloured (<= 6 HCP) or a hand with club fit and a limit. The weak hand may not be strong enough opposite
a strong (balanced) hand.
-
1
♣
-2
♦
-
|
2
♥
|
similar to the 2
♦
opening
|
-
|
2
♠
|
similar to the 2
♦
opening
|
-
-
-
1
♣
-2
♥
Shows at least 5
♠
-4
♥
and 5-9 HCP. This bid exists because after 1
♣
-1
♠
-2
♣
a
bid of 2
♥
is at least INV. It is not mandatory because if you prefer 2
♣
if
partner rebids it, you can bid 1
♦
or 1
♠
.
1
♣
-2
♠
Shows 5
♠
and 4+
♣
, 7-9 HCP.
1
♣
-2NT
Intervention after 1
♣
We play transfers now after X and a one level suit overcall.
1
♣
-(D)
Pass is allowed now. Redouble and all suit bids at the one level are transfers.
-
1
♣
-(D)
-
|
Pass
|
3+
♣
, nothing to bid
|
-
|
Rdbl
|
would normally bid 1
♦
(if weak no 3+
♣
)
|
1
♣
-(1X)
We play transfers now.
1
♣
-(1X)-P-(2X)
Any bid by opener is strong. 2NT is natural after which partner acts as if 2NT has been opened.
1
♣
-(2X)-P
Like 1
♣
-(1X)-P-(2X) except that a double may not be so strong.
1
♣
-(P)-1
♦
-(D)
A pass shows a minimal balanced hand with at least 3
♦
. Redouble shows a strong hand and at
least 3
♦
. Other bids are as usual but 1M suggests an unbalanced hand.
1
♣
-(P)-1
♦
-(nX)
Double is for take-out and strong and a NT bid shows a maximal balanced hand.
1
♣
-(P)-1M-(...)
(Re)double shows 3M support but only when we can return to 2M.
1
♣
-(P)-2
♣
-(...)
A double is for penalties by opener as long as they do not jump. If they jump
it is for take-out (avoid doubles when short).
1
♣
-(P)-2
♦
-(...)
See the Multi-coloured opening.
The 1
♦
opening
The 1
♦
opening shows at least 4
♦
. With 2
♣
and 4
♦
and a balanced hand we
tend to open 1
♦
but 1
♣
can be chosen for strategic reasons. With 18-19 BAL
we only open 1
♦
with a good 5 card suit.
Answers
Changes 2019-06-01:
-
Removed inverted minor
-
Moved fit after 1
♦
-1M to another place
-
1
♦
-
-
-
-
-
|
2
♥
|
5
♠
-4+
♥
, 5-9 HCP, see continuation after 1
♣
|
-
-
-
-
-
-
|
3NT
|
12-15 all suits stopped, normally 3343 or 3334.
|
1
♦
-1M
-
1
♦
-1M
-
-
|
1NT
|
12-14 HCP, BAL, see 1
♣
opening
|
-
-
-
-
-
|
2
♠
|
19+ HCP, 5+
♦
-4+
♠
, FG
|
-
-
1
♦
-1M-2NT
1
♦
-1NT
-
1
♦
-1NT
-
-
-
|
2NT
|
INV, short in other minor
|
-
-
-
|
3M
|
6+
♦
, FG, autosplinter
|
1
♦
-2
♣
-
1
♦
-2
♣
-
|
2
♦
|
min not suited for another bid, can be only 4
♦
|
-
-
-
|
3
♣
|
4+
♣
not complete min
|
-
-
Transfers after 1m and a one level overcall or take-out double
All bids up to 2
♠
(excluding 1NT and 2
♣
after a 1
♦
opening) are
transfers. All bids are FG opposite a strong opener (17+ HCP).
Two level transfers
When X is their suit bid and Y is a new suit bid there are seven variants:
-
2Y (m =< Y < X-1) shows a transfer to the next suit showing at least 5 cards. An example is 1
♦
-(1
♠
)-2
♦
.
-
2Y (Y = X-1) is a transfer to their suit hence it shows fit and it is at least INV. An example is 1
♦
-(1
♠
)-2
♥
.
-
2Y (X <= Y <
♠
) is a transfer to the next suit showing at least 6 cards,
either weak (6-9 HCP) or FG. An example is 1
♦
-(1
♥
)-2
♥
.
-
3m is natural (at least 5 cards after 1
♣
and 4 otherwise) and weak.
-
3Y (Y < X) shows at least 6 cards and is weak.
-
3Y (X <= Y <
♠
) is a transfer to the next suit showing at least 6 cards
and is invitational.
-
3
♠
is a transfer to 3NT showing at least Axx in their suit.
One level transfers
It is more difficult to play 2m but not impossible. You may be able to bid
1
♠
, a transfer to 1NT, after which you can correct to 2m.
-
1m-(1X)
-
|
Dbl
|
Negative double with at least 4 (and at most 5) cards in the next suit (X<
♠
) or the other major (X=
♠
).
|
-
|
1
♥
|
Transfer to 1
♠
. At least 4
♠
.
|
-
|
1
♠
|
Transfer to 1NT. Normally a hand without a good stopper.
|
-
-
|
2m
|
A transfer to the next suit showing at least 5 cards.
|
-
|
2
♠
|
A transfer to 2NT. At least INV. Opener should play (positional).
|
-
-
|
3
♠
|
FG, BAL, Axx in their suit and wants to play 3NT
|
-
1m-(D)
-
|
Rdbl
|
transfer to the next bid
|
-
|
1X
|
transfer to the next bid, see above
|
-
1
♣
-(1
♦
)
-
|
2
♣
|
variant 2: transfer to their suit, hence fit and at least INV
|
-
|
2
♦
♥
|
variant 3: transfer to the next suit, showing at least 6 cards
|
-
-
-
-
1
♣
-(1M)
-
|
2
♣
|
variant 1: transfer to the next suit (
♦
) showing at least a reasonable 5 card suit and 9+HCP (trying for 3NT)
|
-
-
1m-(1
♥
)
-
|
2
♦
|
variant 2: transfer to their suit, hence fit and at least INV
|
-
|
2
♥
|
variant 3: transfer to the next suit (
♠
), showing at least 6 cards
|
-
-
1m-(1
♠
)
-
|
2
♦
|
variant 1: transfer to the next suit, showing a reasonable 5 card suit and 9+HCP or 6 cards and 6+HCP
|
-
|
2
♥
|
variant 2: transfer to their suit, hence fit and at least INV
|
-
Further development
Opener responds to a 1 level transfer as if the bid has been bid naturally but
accepting the transfer shows 3 cards(or 4 cards with a bad hand). Accepting
the transfer by jumping to the two level just shows a non-minimal opening and
4 cards. When responder shows (not necessarily bids)
♥
or
♠
after 1
♣
a 2
♦
bid by opener is system-on (i.e. a strong relay asking for the major length).
The 1 major opening
One of a major promises 5 cards and at least 11 HCP. It is limited since with
game forcing hands you open at the two level.
Answers
-
1
♥
-
|
1
♠
|
4
♠
and normally 6+ HCP
|
-
|
1NT
|
no 4
♠
, 5-12 HCP, with fit you have a minimum
|
-
-
-
-
-
-
-
1
♠
-
|
1NT
|
5-12 HCP, with fit you have a minimum
|
-
-
-
-
-
-
-
Fit after 1M
Answers
-
1M
-
-
|
3M
|
(mild) INV, normally 6M
|
-
-
-
-
-
-
|
2NT
|
INV, at least 3 cards fit
|
-
|
3M
|
at least 4 cards fit and a SPL, 8-9 HCP
|
-
|
3NT
|
fit but very weak (?)
|
-
|
3
♣
|
at least 4 cards fit, 12-15 HCP, no SPL
|
-
|
3
♦
|
3 cards fit, 12-15 HCP, no SPL
|
-
|
4m
|
SPL, 4 cards fit, 11-12 HCP
|
-
-
1
♥
-
|
3
♠
|
SPL, 4 cards fit, 11-12 HCP
|
-
1
♠
-
|
4
♥
|
SPL, 4 cards fit, 11-12 HCP (NON!!!????)
|
Remarks by GJP
Too much space is used by all fit bids. Two over one and invitational hands
like Ax, xxx, xx, KQJ10xx will be too difficult to bid.
Passed hand bidding
We play 2
♣
Drury after an opening in third or fourt hand. Opener returns to
his major when weak (or bids 2
♥
after 1
♠
). 2
♦
is waiting and positive. Bids
above 2M by opener are forcing game.
A single jump in a new suit after 1M is not a fit bid (so no "annonce de rencontre"). We
never play single jumps as fit bids.
2NT after intervention
Always natural, not fit like without intervention.
The 1NT Opening
Shows 15-17 HCP (semi)Balanced, 5m422 or 6m are possible and rarely a singleton
K or Q. 14 or 17 with a 5crd suit are upgraded regularly.
 Some exceptions:
-
1NT-2
♥
-
-
-
|
4
♣
|
6
♠
, S/T, SPL
♣
or no SPL
|
They bid over our 1NT opening
After a double we play system on. The only new bid is redouble which depends
on the meaning of double. If double is for penalties (or just showing values),
the redouble is a Puppet to 2
♣
. In any other case the redouble shows values
as well and is forcing till 2
♠
.
-
1NT-(2
♣
)
-
|
Pass
|
weak or a trap pass (for penalties)
|
-
|
Dbl
|
values and a double later on is for take out
|
-
-
-
-
-
They bid over stayman
-
1NT-(P)-2
♣
-(D)
-
-
|
Rdbl
|
Proposal to play (4)5+
♣
|
-
|
2
♦
♥
♠
|
♣
stopper, system on
|
-
-
They bid over our transfer
-
1NT-(P)-2red-(D)
-
-
|
Rdbl
|
3+ cards fit, wants partner to play (usually no stopper or something like Ax(x))
|
-
|
2M
|
3+ cards fit, wants to play (usually a stopper)
|
When they bid over our transfer a double is just for penalties. Support shows
a good hand with fit, after 2
♦
at least 4 cards (partner may have 4
♥
5
♠
in
the majors). If they bid our cuebid dbl shows fit and willingness to compete.
The 2
♣
opening
Answers
-
|
2
♣
|
One of:
|
|
1) weak-two in
♦
|
|
2) 25+ NT
|
|
3) FG in
♣
,
♥
or
♠
|
-
-
-
-
|
2
♠
|
(R), any hand not suitable for other bids hence 0+ HCP
|
-
-
-
|
3
♥
|
fit, at least Hxx or xxxx, 6+ HCP
|
-
|
3
♠
|
fit, at least Hxx or xxxx, 6+ HCP, SPL
♠
|
-
|
3NT
|
fit, at least Hxx or xxxx, 6+ HCP, SPL
♦
|
-
|
4
♣
|
fit, at least Hxx or xxxx, 6+ HCP, SPL
♣
|
-
-
|
2NT
|
(R), any hand not suitable for other bids hence 0+ HCP
|
-
-
-
|
3
♠
|
fit, at least Hxx or xxxx, 6+ HCP
|
-
|
3NT
|
fit, at least Hxx or xxxx, 6+ HCP, SPL
♥
|
-
|
4m
|
fit, at least Hxx or xxxx, 6+ HCP, SPL m
|
-
-
|
3
♣
|
FG in
♣
, one of:
|
|
1) 4M
|
|
2) 1-suiter, not a solid suit plus stoppers and 9 tricks
|
-
-
|
3M
|
FG, 5+
♣
-5M, clubs better or longer
|
-
|
3NT
|
FG in
♣
, 1-suiter, a solid suit plus stoppers and 9 tricks
|
-
-
-
|
3
♦
|
weak-two in
♦
, no fit, NF
|
-
|
3M
|
weak-two in
♦
, fit, MIN
|
-
|
4M
|
weak-two in
♦
, fit, MAX
|
-
|
2X
|
FG, system-on if possible
|
-
|
3X
|
FG, system-on if possible
|
-
|
3NT
|
FG, system-on if possible
|
-
-
|
3
♣
|
weak-two, not MAX or no good suit
|
-
|
3
♦
|
weak-two, MAX, good suit, SPL
♣
|
-
|
3
♥
|
weak-two, MAX, good suit, SPL
♥
|
-
|
3
♠
|
weak-two, MAX, good suit, SPL
♠
|
-
|
3NT
|
weak-two, MAX, good suit, no SPL
|
-
|
4X
|
same meaning and development as after 2
♣
-2
♦
-3X
|
-
-
-
Intervention
We just keep it simple: a pass promises clubs, redouble is a Puppet to 2
♦
with an own suit and a weak hand. The rest is system-on.
The 2
♦
opening
Answers
Changes 2018-01-09:
-
2
♦
-2
♠
is positive
-
2
♦
-2
♠
-3NT is 22-24 HCP, BAL
-
|
2
♦
|
Multi-coloured, one of:
|
|
1) weak-two in a major
|
|
2) 22-24 NT
|
|
3) FG in
♦
|
-
-
-
|
2NT
|
(R) asking for shortness
|
-
|
3
♣
♦
♥
|
Splinter, MIN/MAX
|
-
-
-
|
3m
|
T/P, no short
♥
(else 3m response)
|
-
-
-
|
2NT
|
22-24 NT, see 2NT opening
|
-
|
3
♣
|
FG in
♦
, one of:
|
|
a) 4M
|
|
b) 1-suiter, not a solid suit plus stoppers and 9 tricks
|
-
-
-
|
3NT
|
FG in
♦
, 1-suiter, a solid suit plus stoppers and 9 tricks
|
-
|
2
♠
|
NF, opposite a weak-two in
♠
, positive (normally 10+ HCP)
|
-
-
|
3
♣
|
weak-two in
♥
, not MAX or no good suit
|
-
|
3
♦
|
weak-two in
♠
, not MAX or no good suit
|
-
|
3
♥
|
weak-two in
♠
, MAX, good suit
|
-
|
3
♠
|
weak-two in
♥
, MAX, good suit
|
-
-
|
4X
|
same meaning and development as after 2
♦
-2
♥
-3X
|
-
|
3m
|
T/P, short
♥
(else 2
♥
response)
|
-
-
-
|
4
♣
|
TRF for
♥
(e.g. KQJ109x)
|
-
-
|
4
♣
|
ART, asks for transfer
|
-
-
Intervention
We just keep it simple: a pass promises diamonds, redouble is a Puppet to 2
♥
in order to play with a long suit. The rest is system-on.
Weak-two opening bids
Both 2
♥
and 2
♠
show a weak two bid and less than a one level opening
bid. Non-vulnerable possibly 5M (especially by Albert) and usually 5-10
HCP. Vulnerable the opening promises a good 6 card suit and 9-11 HCP.
Answers
A change of suits is non forcing after a non-vulnerable opening but forcing otherwise.
2M-2NT
Classic French, so a bid shows a top honor and a repetition is the weakest bid.
The 2NT opening
Answers
-
2NT
-
|
3
♣
|
Stayman, four responses
|
-
-
|
3
♥
|
Smolen (chassé croisé) with 5
♠
-4
♥
, FG
|
-
|
3
♠
|
Smolen (chassé croisé) with 5
♥
-4
♠
, FG
|
-
-
-
-
-
|
3
♥
|
NF (rectification non fittée)
|
-
-
-
|
4
♦
|
CTRL for
♣
(only great fit for
♣
possible)
|
-
-
-
-
|
4
♠
|
CTRL for
♦
(only great fit for
♦
possible)
|
-
|
3
♠
|
good fit, second suit
|
-
-
-
-
|
3
♠
|
NF (rectification non fittée)
|
-
-
-
-
-
Intervention
Bidding with intervention
This chapter is about bidding with intervention in general, when we open or
they open.
Doubles
As a rule of thumb you can say, the more your partner knows about your hand,
the more for penalties it is. Quite logical, but still.
Below game in competitive bidding
Doubles are for take-out. I consider preempts also competive bidding.
Examples: 1
♥
-(3
♠
)-D is a take-out double.
Game or higher
A double is a proposition to defend.
Five level
Double is for penalties and may be a Lightner double.
New suit after partners opening and an intervention
As a general rule your new suit is forcing but not forcing for one round, so
you may pass after partners rebid.
Take care when partner is non vulnerable and preempted
Refrain from bidding when partner may already have applied maximum
pressure non-vulnerable. You may only bid if you think you may make it.
Reverses into a suit not promised by partner are strong as usual
For example after 1
♣
-(1
♠
)-D-(2
♠
) you can bid 3
♥
with a normal opening
(although not too bad). But 3
♦
is a reverse since partner did not promise 4
cards in diamonds.
They open the bidding
This chapter is about our defensive bidding if the opponent opens something on the 1 level.
1X
Simple overcalls
No taboos, preferably a good suit and maybe 4 cards on the 1 level.
Fit responses
A simple fit bid shows about 8-11 HCP, stronger than usual thus.
A jump in their suit suit shows 4 cards fit and an opening.
A jump fit bid in a major shows 4 trumps, a singleton and about 10-11 HCP.
Non-fit responses
A change of suit is non forcing at the one level. 1NT and 2NT are natural,
something like 8-11 or 12-15 HCP respectively.
1NT intervention
This shows the same kind of hand as a 1NT opening albeit a little bit stronger
and usually with a stopper in their suit.
The responses hereafter are just like after a 1NT opening we ignore their
bid(s).
1NT Opening
The meaning of the bids remains unchanged when you are in second or fourth position.
The meaning of our dbl depends on the strength of their 1NT opening. If the
lower limit is at most 13 HCP we consider it a weak NT. So a 14-16 NT is a
strong NT. After a strong 1NT (or if the doubler did not open) we play double
as 5+m-4M else it is for penalties.
-
(1NT)
-
|
Dbl
|
bicolor Mm (at least 4 cards) or strong (how many M, how many m, ?)
|
-
-
|
2
♦
|
at least 3 cards in both majors
|
-
-
-
|
2
♦
|
no preference, the difference in the majors is at most 1 and may be a (light) INV
|
-
-
|
2NT
|
INV+ answers like Multi
|
-
-
-
-
|
2NT
|
5+5+ minors wide range
|
-
-
2
♦
Multi-coloured
Double is Italien (?).
I personnaly prefer a Polish double (maybe the same). A double on 2
♦
shows a
take-out on spades (short spades). A pass followed by double is a take-out on
hearts (shows shortness in hearts).
2NT Opening
Michaels
We play two-suited overcalls after an opponents 1 level opening. The style
depends a lot on vulnerability. A two-suited overcall always shows at least 5+
in both suits.
 If they support
each other, dbl is for take-out and may be INV for the major if you don't have
another invitational bid. If they bid one of our suits, dbl means that you would have
liked to bid that.
We open the bidding
They intervene with a natural 1NT
-
1m-(1NT)
-
|
Dbl
|
bicolor Mm (see our intervention after 1NT)
|
-
-
-
1M-(D)
We will play transfers starting from 1NT till the bid below two of our
suit. All those transfers show the next suit and they do not promise a
rebid. A direct raise is weaker than the transfer to 2M. A jump is that suit
plus support.
-
1M-(D)
-
-
-
|
3m
|
support plus that suit
|
-
1
♥
-(D)
-
|
2
♦
|
TRF
♥
(fit), stronger than 2
♥
immediately
|
-
|
2
♥
|
3
♥
, weaker than 2
♦
immediately
|
-
1
♠
-(D)
-
|
2
♥
|
TRF
♠
(fit), stronger than 2
♠
immediately
|
-
|
2
♠
|
3
♠
, weaker than 2
♥
immediately
|
fit after 1M and intervention below 2NT
The bid of 2NT shows at least four cards fit and at least an invitational hand, for
example 1
♥
-(2
♥
)-2NT. There is one exception: when the cue bid is above 3M,
2NT just shows at least three cards fit like 1
♥
-(2
♠
)-2NT.
Transfer Lebensohl
We play this after our 1 NT opening and their intervention of 2
♣
till
2
♠
. And also after their weak two level opening bids, whether it be some kind
or multi or not.
One suit known
Transfer Lebensohl starts at 2NT. There are 4 types of special bids:
-
A transfer to their suit which is FG and shows at 4 cards in at least one
of the unbid majors.
-
2NT, a Puppet to 3
♣
. It can be either a sign-off below their suit or FG
with at least 5 clubs.
-
A transfer to a suit. This is at least invitational and
shows 5 cards in the transfer suit unless it is a transfer in a major which
has been implied by partner's take-out double. It does not matter whether the transfer
is above or below their suit.
-
3
♠
. This is FG and denies a stop and it denies a 4 card major in an unbid
suit.
-
1NT-(2
♣
)
-
-
|
2NT
|
A transfer to their suit, hence FG and at least one 4 card major
|
-
|
3
♣
|
I do
not
have a stopper
|
-
|
3M
|
I do have a stopper as well as 4 cards in this major
|
-
|
3
♣
|
A transfer to
♦
, INV+, 5+
♦
|
-
|
3
♦
|
A transfer to
♥
, INV+, 5+
♥
|
-
|
3
♥
|
A transfer to
♠
, INV+, 5+
♠
|
-
|
3
♠
|
FG, no stopper, no 4 card major
|
-
1NT-(2
♦
)
-
-
-
-
-
|
3
♦
|
FG, 5+
♣
, no 4M, asks primarily for stopper but different from 3
♠
immediately
|
-
-
|
3
♣
|
A transfer to their suit, hence FG and at least one 4 card major
|
-
|
3
♦
|
I do
not
have a stopper
|
-
|
3M
|
I do have a stopper as well as 4 cards in this major
|
-
|
3
♦
|
A transfer to
♥
, INV+, 5+
♥
|
-
|
3
♥
|
A transfer to
♠
, INV+, 5+
♠
|
-
|
3
♠
|
FG, no stopper, no 4 card major
|
-
1NT-(2
♥
)
-
-
-
-
-
-
|
3
♥
|
FG, 5+
♣
, no 4
♠
, asks primarily for stopper but different from 3
♠
immediately
|
-
-
|
3
♣
|
A transfer to
♦
, INV+, 5+
♦
|
-
|
3
♦
|
A transfer to their suit, hence FG and 4
♠
|
-
|
3
♥
|
I do
not
have a stopper and probably not 4
♠
as well
|
-
|
3
♠
|
4
♠
, with or without stopper
|
-
|
3
♥
|
A transfer to
♠
, INV+, 5+
♠
|
-
|
3
♠
|
FG, no stopper, no 4
♠
|
-
1NT-(2
♠
)
-
-
-
-
-
-
|
3
♠
|
FG, 5+
♣
, no 4
♥
, asks primarily for stopper but different from 3
♠
immediately
|
-
|
3
♣
|
A transfer to
♦
, INV+, 5+
♦
|
-
|
3
♦
|
A transfer to
♠
, INV+, 5+
♥
|
-
|
3
♥
|
A transfer to their suit, hence FG and 4
♥
|
-
|
3
♠
|
I do
not
have a stopper and not 4
♥
as well
|
-
|
3
♠
|
FG, no stopper, no 4
♥
|
Two suits known
-
-
|
Dbl
|
take-out (with balanced hands)
|
-
|
Pass
|
maybe a trap pass (a later double is for penalties, the usual method for dealing with twosuiters)
|
-
|
2X
|
NAT, S/O (also 2
♥
and 2
♠
unless this is a known 5 card)
|
-
|
2NT
|
A transfer to
♣
, either S/O or FG
|
-
|
3
♣
|
A transfer to
♦
, INV+ (with a weak hand you bid 2
♦
)
|
-
|
3
♦
|
A transfer to
♥
, hence SPL and FG
|
-
|
3
♥
|
A transfer to
♠
, hence SPL and FG
|
-
|
3
♠
|
FG, no stopper in
♥
nor
♠
|
Multi-coloured
After Multi we play that double shows short spades and at least 3 cards in
hearts. This is a Polish convention and it allows us to know better what is
going on. We will assume that after a double their suit is spades.
-
|
(2
♦
)-D
|
take-out on
♠
, hence short
♠
(pass first with short
♥
)
|
-
(P)
-
|
Pass
|
long diamonds if pass promises
♦
(always ask explanation)
|
-
-
|
2
♠
|
6
♠
, NAT, NF (try to pass though)
|
-
|
2NT
|
PUP, either S/O in
♣
(you can pass with long
♦
)
|
-
|
3
♣
|
A transfer to
♦
, INV+. If their pass shows long diamonds this is a cuebid, see 1NT-2
♦
natural
|
-
|
3
♦
|
A transfer to
♥
. If FG it shows 5+
♥
else 4+
♥
(partner promises 3+
♥
)
|
-
|
3
♥
|
A transfer to
♠
, a kind of cue bid hence FG and it shows 4
♥
|
-
(2M)
-
|
2NT
|
PUP, either S/O in a minor else FG with 5+
♣
|
-
|
3
♣
|
A transfer to
♦
, INV+
|
-
Defense against two-suiters
The cheapest bid in of their suits shows the fourth suit and is forcing to
game. Thus not the lowest in the sense of clubs, diamonds but the most
economical bid. The most expensive bid in one of their suits shows fit and is
at least invitational. The reason for this scheme is that you need more space
if you do not have a fit. A 2NT bid shows fit with at least 4 cards and is at
least invitational.
Slem bidding
Game forcing fit situations
Major at the three level
For example 1
♠
-2
♥
-3
♥
.
When a fit has been agreed upon, one may sign-off in four of the major as a
sign-off. 3NT is not a minimum but not very strong neither ("la première
zone") and a control bid is stronger ("la seconde zone").
Blackwood
Actually Roman Key Card Blackwood with old fashioned responses (30-41).
-
4NT
-
-
-
|
5
♥
|
2-5 key cards, no trump Queen
|
-
|
5
♠
|
2-5 key cards, trump Queen
|
Asking for the trump Queen
The trump Queen can be demanded after 5
♣
/5
♦
with the first free bid.
The lowest of 5NT and the trump suit without jump denies the Queen. Any other
bid in a suit promises the Queen plus only the King in that suit OR the two
other Kings (the King of trumps is ignored of course).
Intervention after 4NT
Double (or redouble) is for penalties. Pass shows an even number : 0/2/4 key
cards. The first free bid shows 1/3/5 key cards.
Abbreviations
An excerpt from http://www.worldbridge.org/wp-content/uploads/2017/04/Guidetocompletion.pdf.
The following abbreviations or terms may be used (Note the use of BLOCK
CAPITALS and SLASHES (/)):
-
(5431) = Any hand with that distribution (suits unknown)
-
5431 = Five spades, four hearts, three diamonds, one club
-
54(31) = A hand with five spades, four hearts, and 3
♦
1
♣
or 3
♣
1
♦
-
54(xx) = A hand with five spades and four hearts
-
AGG = Aggressor. The first player to double or overcall for the defending side
-
ADV = Advancer, aggressors partner
-
ASK = Asking bid
-
ART = Artificial
-
ATT = Attitude
-
B = Black suit(s)
-
BAL = Balanced
-
BW = Blackwood
-
CB = Checkback
-
COMP = Competitive
-
CONC = Concentrated (e.g. all values in the bid suits)
-
CONST = Constructive
-
CTRL = Control
-
CUE = Cue-bid
-
DISC = Discourage (ing)
-
E = Even
-
ENC = Encourage (ing)
-
FRAG = Fragment
-
F = Forcing
-
F1 = Forcing 1 round
-
F2NT = Forcing to 2NT
-
FG = Forcing to game
-
4
♠
F = 4th suit forcing (4
♠
FG, 4
♠
F1)
-
FREQ = Frequent
-
G/T = Game try
-
H = Honour (Ace, King, or Queen)
-
HCP = High Card Points
-
INV = Invitational
-
INQ = Inquiry
-
KCB = Keycard Blackwood
-
L/D = Lead-directing
-
LEB = lebensohl
-
LHO = The opponent on your left
-
LIM = Limit raise
-
L/S = Long suit
-
L/T = Less than (length or strength)
-
M = Major
-
MM = majors
-
m = Minor
-
mm = minors
-
MAX = Maximum, Maximal, Maximal Overcall Double
-
MIN = Minimum
-
NAT = Natural
-
NEG = Negative
-
NEU = Neutral
-
NF = Nonforcing
-
NT = No Trump
-
NV = Nonvulnerable
-
oM = The other major
-
om = The other minor
-
OPPT = Opponent(s)
-
OPT = Optional
-
O/S = Outside
-
O/C = Overcall
-
P/C = Pass or correct
-
PEN = Penalty
-
PH = Passed hand
-
PRE = Pre-emptive
-
PUP = Puppet to (e.g. 2
♣
demands 2
♦
)
-
QUANT = Quantitative
-
(R) = Relay (e.g. 2
♣
asks for shape description etc)
-
RESP = Responder; Response; Responsive
-
REV = Reverse
-
RHO = The opponent on your right
-
RKCB = Roman Keycard Blackwood
-
R/O = Reopening
-
S/P = Suit preference
-
S/A = Suit agreement
-
S/O = Signoff, shutout
-
SOL = Solid (suit)
-
S-SOL = Semi-solid (suit)
-
SPL = Splinter, or short suit
-
S/S = Short suit
-
S/T = Slam try
-
STAY = Stayman
-
STR = Strong
-
SUPP = Support
-
T/O = Takeout
-
TRF = Transfer
-
UNT = Unusual No Trump
-
VUL or V = Vulnerable
-
w/ = With
-
w/o = Without
-
WJO = Weak jump overcall
-
WJS = Weak jump shift
-
WK = Weak
Besides these abbreviations from the WBF, the following abbreviations have been added:
-
K/B = (Optional) KickBack
-
MED = medium
-
T/P = To Play
-
UNB = Unbalanced
-
CoG = Choice of Games
The following abbreviations are not conform the WBF, but conform the BML definitions:
-
D = Double
-
R = Redouble (hence not the reds)
The following abbreviations are
not
used:
-
DBL or X = Double
-
RDBL, RD, XX = Redouble


We are animal lovers from all walks of life. We provide resources and connect people with pets to adopt in Portland, OR. We feel that pets are members of the family, and we want to alleviate animal suffering.


Preparation time
over 2 hours
Cooking time
30 mins to 1 hour
Serves
Makes 4 ice cream sandwiches
Dietary
As much as I love making a proper churned ice cream from scratch, I also enjoy an easy way out. This recipe is a simple no-churn variety, rippled with tangy rhubarb, then sandwiched between two crisp, custardy biscuits.
For the rhubarb compôte, place the rhubarb, sugar, lime juice and glucose in a small non-stick saucepan. Cook gently for 10–12 minutes, or until the rhubarb has softened and broken down. Remove from the heat and transfer to a bowl. Stir in the essence, if using, and leave to cool completely.
Meanwhile, to make the ice cream, whisk the condensed milk, cream, vanilla and glucose together in a bowl until it forms soft peaks. Fold in the cooled rhubarb mixture to create a ripple effect. Transfer to a plastic container with a lid and freeze for 4 hours, or until firm.
Meanwhile, to make the biscuits, place the butter and sugar in a bowl. Cream together until pale and fluffy, then add the egg and almond extract. Add the flour and custard powder and mix to form a ball of dough. Flatten the ball slightly and wrap in cling film, then chill in the fridge for 1 hour.
Preheat the oven to 190C/170C Fan/Gas 5 and line a baking tray with baking paper.
Dust a clean work surface with flour and roll out the dough to the thickness of 7.5mm/⅓in. Use a 6.5cm/2½in round cutter to cut out biscuits. Collect the off-cuts, roll again and cut out more biscuits until you have used up all the dough. You should have eight biscuits, to make four sandwiches.
Place the biscuits on the baking tray and prick with a fork to stop them from rising too much. Bake for 15–20 minutes, or until light golden-brown but visibly yellow from the custard powder.
Leave to cool on the tray. Once cooled, sandwich a large scoop of ice cream between two biscuits. Repeat with the remaining biscuits. Eat before they melt!


Specifying Parameter Values for the AWS Command Line Interface
Many parameters are simple string or numeric values, such as the key pair name
my-key-pair
in the following example:
$ aws ec2 create-key-pair --key-name my-key-pair
Strings without any space characters may be quoted or unquoted. However, strings that include one or more space characters must be quoted. Use a single quote (') in Linux, macOS, or Unix and Windows PowerShell, or use a double quote (") in the Windows command prompt, as shown in the following examples.
Windows PowerShell, Linux, macOS, or Unix
$ aws ec2 create-key-pair --key-name 'my key pair'
Windows Command Processor
> aws ec2 create-key-pair --key-name "my key pair"
You can also use an equals sign instead of a space. This is typically only necessary if the value of the parameter starts with a hyphen:
$ aws ec2 delete-key-pair --key-name=-mykey
Common Parameter Types
This section describes some of the common parameter types and the format that the services
expect them to conform to. If you are having trouble with the formatting of a parameter for a
specific command, check the manual by typing help
after the command
name, for example:
$ aws ec2 describe-spot-price-history help
The help for each subcommand describes its function, options, output, and examples. The options section includes the name and description of each option with the option's parameter type in parentheses.
String – String parameters can contain alphanumeric characters, symbols, and whitespace from the ASCII character set. Strings that contain whitespace must be surrounded by quotes. Use of symbols and whitespace other than the standard space character is not recommended and may cause issues when using the AWS CLI.
Some string parameters can accept binary data from a file. See Binary Files for an example.
Timestamp – Timestamps are formatted per the ISO 8601 standard. These are sometimes referred to as "DateTime" or "Date" type parameters.
$ aws ec2 describe-spot-price-history --start-time 2014-10-13T19:00:00Z
Acceptable formats include:
-
YYYY-MM-DDThh:mm:ss.sssTZD (UTC), e.g., 2014-10-01T20:30:00.000Z
-
YYYY-MM-DDThh:mm:ss.sssTZD (with offset), e.g., 2014-10-01T12:30:00.000-08:00
-
YYYY-MM-DD, e.g., 2014-10-01
-
Unix time in seconds, e.g.<PHONE_NUMBER>
List – One or more strings separated by spaces.
$ aws ec2 describe-spot-price-history --instance-types m1.xlarge m1.medium
Boolean – Binary flag that turns an option on or off.
For example, ec2 describe-spot-price-history
has a boolean dry-run parameter
that, when specified, validates the command against the service without actually running a
query.
$ aws ec2 describe-spot-price-history --dry-run
The output indicates whether the command was well formed or not. This command also includes a no-dry-run version of the parameter that can be used to explicitly indicate that the command should be run normally, although including it is not necessary as this is the default behavior.
Integer – An unsigned whole number.
$ aws ec2 describe-spot-price-history --max-items 5
Blob – Binary object. Blob parameters take a path to a
local file that contains binary data. The path should not contain any protocol identifier such
as http://
or file://
.
The --body
parameter for aws s3api put-object
is a blob:
$ aws s3api put-object --bucket my-bucket --key testimage.png --body /tmp/image.png
Map – A sequence of key value pairs specified in JSON
or shorthand syntax. The following example reads an
item from a DynamoDB table named my-table with a map parameter,
--key
. The parameter specifies the primary key named id
with a number value of 1 in a nested JSON structure.
$ aws dynamodb get-item --table-name my-table --key '{"id": {"N":"1"}}'
{
"Item": {
"name": {
"S": "John"
},
"id": {
"N": "1"
}
}
}
The next section covers JSON arguments in more detail.
Using JSON for Parameters
JSON is useful for specifying complex command line parameters. For example, the following
command will list all EC2 instances that have an instance type of m1.small
or
m1.medium
that are also in the us-west-2c
Availability Zone.
$ aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro,m1.medium" "Name=availability-zone,Values=us-west-2c"
The following example specifies the equivalent list of filters in a JSON array. Square brackets are used to create an array of JSON objects separated by commas. Each object is a comma separated list of key-value pairs ("Name" and "Values" are both keys in this instance).
Note that value to the right of the "Values" key is itself an array. This is required, even if the array contains only one value string.
[
{
"Name": "instance-type",
"Values": ["t2.micro", "m1.medium"]
},
{
"Name": "availability-zone",
"Values": ["us-west-2c"]
}
]
The outermost brackets, on the other hand, are only required if more than one filter is specified. A single filter version of the above command, formatted in JSON, looks like this:
$ aws ec2 describe-instances --filters '{"Name": "instance-type", "Values": ["t2.micro", "m1.medium"]}'
Some operations require data to be formatted as JSON. For example, to pass parameters to
the --block-device-mappings
parameter in the ec2 run-instances
command, you need to format the block device information as JSON.
This example shows the JSON to specify a single 20 GiB Elastic Block Store device to be
mapped at /dev/sdb
on the launching instance.
{
"DeviceName": "/dev/sdb",
"Ebs": {
"VolumeSize": 20,
"DeleteOnTermination": false,
"VolumeType": "standard"
}
}
To attach multiple devices, list the objects in an array like in the next example.
[
{
"DeviceName": "/dev/sdb",
"Ebs": {
"VolumeSize": 20,
"DeleteOnTermination": false,
"VolumeType": "standard"
}
},
{
"DeviceName": "/dev/sdc",
"Ebs": {
"VolumeSize": 10,
"DeleteOnTermination": true,
"VolumeType": "standard"
}
}
]
You can either enter the JSON directly on the command line (see Quoting Strings), or save it to a file that is referenced from the command line (see Loading Parameters from a File).
When passing in large blocks of data, you might find it easier to save the JSON to a file and reference it from the command line. JSON data in a file is easier to read, edit, and share with others. This technique is described in the next section.
For more information about JSON, see Wikipedia - JSON and RFC4627 - The application/json Media Type for JSON.
Quoting Strings
The way you enter JSON-formatted parameters on the command line differs depending upon your operating system. Linux, macOS, or Unix and Windows PowerShell use the single quote (') to enclose the JSON data structure, as in the following example:
$ aws ec2 run-instances --image-id ami-05355a6c --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'
The Windows command prompt, on the other hand, uses the double quote (") to enclose the JSON data structure. In addition, a backslash (\) escape character is required for each double quote (") within the JSON data structure itself, as in the following example:
> aws ec2 run-instances --image-id ami-05355a6c --block-device-mappings "[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]"
Windows PowerShell requires a single quote (') to enclose the JSON data structure, as well as a backslash (\) to escape each double quote (") within the JSON structure, as in the following example:
> aws ec2 run-instances --image-id ami-05355a6c --block-device-mappings '[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]'
If the value of a parameter is itself a JSON document, escape the quotes on the embedded
JSON document. For example, the attribute
parameter for aws sqs
create-queue
can take a RedrivePolicy
key. The value of
RedrivePolicy
is a JSON document, which must be escaped:
$ aws sqs create-queue --queue-name my-queue --attributes '{ "RedrivePolicy":"{\"deadLetterTargetArn\":\"arn:aws:sqs:us-west-2:0123456789012:deadletter\", \"maxReceiveCount\":\"5\"}"}'
Loading Parameters from a File
To avoid the need to escape JSON strings at the command line, load the JSON from a file.
Load parameters from a local file by providing the path to the file using the
file://
prefix, as in the following examples.
Linux, macOS, or Unix
// Read from a file in the current directory
$ aws ec2 describe-instances --filters file://filter.json
// Read from a file in /tmp
$ aws ec2 describe-instances --filters file:///tmp/filter.json
Windows
// Read from a file in C:\temp
> aws ec2 describe-instances --filters file://C:\temp\filter.json
The file://
prefix option supports Unix-style expansions including
'~/', './', and '../'. On Windows, the '~/' expression expands to your user directory, stored
in the %USERPROFILE% environment variable. For example, on Windows 7 you would typically have
a user directory under C:\Users\
.
User
Name
\
JSON documents that are provided as the value of a parameter key must still be escaped:
$ aws sqs create-queue --queue-name my-queue --attributes file://attributes.json
attributes.json
{
"RedrivePolicy":"{\"deadLetterTargetArn\":\"arn:aws:sqs:us-west-2:0123456789012:deadletter\", \"maxReceiveCount\":\"5\"}"
}
Binary Files
For commands that take binary data as a parameter, specify that the data is binary
content by using the fileb://
prefix. Commands that accept binary data
include:
-
aws ec2 run-instances
–--user-data
parameter. -
aws s3api put-object
–--sse-customer-key
parameter. -
aws kms decrypt
–--ciphertext-blob
parameter.
The following example generates a binary 256 bit AES key using a Linux command line tool and then provides it to Amazon S3 to encrypt an uploaded file server-side:
$ dd if=/dev/urandom bs=1 count=32 > sse.key
32+0 records in
32+0 records out
32 bytes (32 B) copied, 0.000164441 s, 195 kB/s
$ aws s3api put-object --bucket my-bucket --key test.txt --body test.txt --sse-customer-key fileb://sse.key --sse-customer-algorithm AES256
{
"SSECustomerKeyMD5": "iVg8oWa8sy714+FjtesrJg==",
"SSECustomerAlgorithm": "AES256",
"ETag": "\"a6118e84b76cf98bf04bbe14b6045c6c\""
}
Remote Files
The AWS CLI also supports loading parameters from a file hosted on the Internet with an
http://
or https://
URL. The following example
references a file in an Amazon S3 bucket. This allows you to access parameter files from any
computer, but requires the file to be stored in a publically accessible location.
$ aws ec2 run-instances --image-id ami-a13d6891 --block-device-mappings http://my-bucket.s3.amazonaws.com/filename.json
In the preceding examples, the filename.json
file contains the
following JSON data.
[
{
"DeviceName": "/dev/sdb",
"Ebs": {
"VolumeSize": 20,
"DeleteOnTermination": false,
"VolumeType": "standard"
}
}
]
For another example referencing a file containing more complex JSON-formatted parameters, see Set an IAM Policy for an IAM User.


people in Las Vegas for CES can select the Uber Chopper option in the app, and an UberX will arrive to ferry them to Maverick Helicopters on the outskirts of McCarren Airport. There, they’ll be treated to a 15 minute pleasure ride over the city. Laughing and shaking your fist at the Las Vegas Convention Center, where CES is headquartered, is optional. The price is $100 per person, give or take surge pricing several hundred feet in the sky..
Read MoreberChopper is offering 15-minute rides around University of Phoenix Stadium at the rate of $99 a person. The price includes a one-way UberX ride to Glendale Municipal Airport, where the helicopter is parked.
Read MoreFort Worth-based Bell Helicopter will partner with technology giant Uber to create air taxis, the two sides announced Tuesday at the Uber Elevate Summit in Dallas.The goal is to have the air taxis ready for testing in Dallas and Dubai by 2020. The machines, which Bell referred to as vertical take - off and landing vehicles or VTOLs, will be used for transportation and also delivery logistics services.
Read More


Vellore Institute of Technology (VIT), formerly Vellore Engineering College is a private deemed university institute located in the outskirts of Vellore, Tamil Nadu, India. Founded in 1984, as Vellore Engineering College, by G. Viswanathan, the institution offers 20 undergraduate, 34 postgraduate, four integrated and four research programs. It has campuses in Vellore and Chennai (Tamil Nadu), Bhopal (Madhya Pradesh), and Amaravati (Andhra Pradesh).
VIT offers academic programs in Engineering, Technology, Applied Sciences, and Management. It offers 20 undergraduate programs, 34 postgraduate, four integrated MS courses, and four doctoral programs. Research centers are part of the schools to encourage collaboration between the research and coursework areas and provide an opportunity for coursework students to participate in research projects. VIT organizes industrial workshops like Automotive Engineering, organized by ParaMek Technologies in GraVitas Fest.VIT is among the first in India to implement the Fully Flexible Credit System (FFCS) which gives the students flexibility to make their own time tables by choosing the subjects and the faculties under whose guidance they want to study.
VIT was ranked 801-1000 in the world by the Times Higher Education World University Rankings of 2018and 251-300 in Asia.The QS World University Rankings ranked it 271-280 in Asia in 2018.The National Institutional Ranking Framework (NIRF) ranked VIT 24 overalland 16 among universities in 2018.Among engineering colleges it was ranked 16 by NIRF in 2018,5th by India Today in 2017 and 9th by Outlook India in 2017.
Two main college fests are conducted in VIT: graVITas and Riviera. GRAVITAS is the technology-oriented festival conducted in August/September. Riviera is a sports and cultural festival. According to organizers for Riviera 2011, it pulled more than 300 participants from over 20 colleges and universities. Rivera 2013 saw popular names like Shankar-Ehsaan-Loy, Sukhwinder Singh, Chiyaan Vikram, Siddarth, singer Kartik and many more. ParaMek Technologies from New Delhi conducted a workshop on Automotive Engineering during the fest which was attended by more than 450 students.


A plugin for the Karma test runner that loads .html
and
.json
fixtures.
It provides the same API as the teaspoon fixture package.
Install the plugin from npm:
Add fixture
to the frameworks
array in your
Karma configuration:
You also have to register any/all fixtures inside your Karma configuration
file. If all your fixtures exist under a
fixtures/base/path/
folder, then you should include all files
of interest under this base path.
module.exports = function(config){
config.set({
files: [
{
pattern: 'fixtures/base/path/**/*',
},
// ...
],
// ...
],
Finally you have to add the html2js karma preprocessor:
and then configure Karma to load all html and JSON fixture files:
module.exports = function(config){
config.set({
preprocessors: {
'**/*.html' : ['html2js'],
'**/*.json' : ['html2js']
},
// ...
(optional) If the plugin won’t get loaded by karma, you might
have to declare it inside the plugins
array in your Karma
configuration
(and maybe load karma-html2js-preprocessor
as well):
module.exports = function(config){
config.set({
// ...
plugins: [
'karma-fixture'
'karma-html2js-preprocessor'
// ...
],
// ...
All fixture files are pre-loaded as strings and placed inside the
Karma-created window.__html__
array.
The fixture plugin is exposed in the window.fixture
object on
every test run. It loads fixture files from that array and appends the
created html inside the window.fixture.el
element that gets
created on start-up.
Lets say you have the following fixture files:
fixtures/base/path/test1.html
fixtures/base/path/json/test1.json
You can use fixture
inside your tests to handle the fixtures:
describe("some test that needs a fixture", function () {
// If base path is different from the default `spec/fixtures`
before(function () {
fixture.setBase("fixtures/base/path");
});
beforeEach(function () {
this.result = fixture.load("test1.html", "test1.json");
});
afterEach(function () {
fixture.cleanup();
});
it("plays with the html fixture", function () {
expect(fixture.el.firstChild).to.equal(this.result[0][0]);
});
// ...
});
fixture.el
Reference to the container element. Every html fixture loaded gets appended inside this container.
fixture.json
An array of all json objects imported from fixture templates.
fixture.load(files..., append = false)
It takes multiple filenames as arguments. All filenames are loaded from within the base path.
It loads and appends them inside the fixtures container element. It returns an array with references to the newly created first level html elements. When more than one are loaded, it returns an array of the above described format, for each loaded fixture.
It takes an optional boolean argument which defaults to
false
. If false
, it empties the
window.fixture.el
container element and clears the
window.fixture.json
array. If true
, it just
appends the requested fixture to the container.
If your fixtures exist in a base path other than the default
spec/fixtures
, you should call
fixture.setBase('fixtures/base/path')
in your specs, or
load them with their full, base included, filenames prefixed with a
‘/’.
For example:
fixture.load('/my/other/base/path/fixture1.html')
Scenarios:
html fixture
It returns an array of all the first-level nodes created by the fixture file:
html_fixture = fixture.load("test1.html");
// then
expect(html_fixture[0].innerHTML).to.equal("
p
");
// and
expect(html_fixture[1].innerHTML).to.equal(
'link'
);
JSON fixture
It returns a valid object by JSON.parsing the passed json fixture
file. Also all JSON files loaded get appended to the
window.fixture.json
array:
json_fixture = fixture.load("json/test1.json");
// then
expect(json_fixture).to.eql({ test: true });
// and
expect(fixture.json[0]).to.eql({ test: true });
Multiple files
The result will be an array containing results of each loaded template:
loaded_fixtures = fixture.load("test1.html", "json/test1.json");
// then
expect(loaded_fixtures[0][0].innerHTML).to.equal("
p
");
// and
expect(loaded_fixtures[0][1].innerHTML).to.equal(
'link'
);
// and
expect(loaded_fixtures[1]).to.eql({ test: true });
// and
expect(fixture.json[0]).to.eql({ test: true });
fixture.set(html_strings, append=false)
It takes multiple html_strings as arguments and load them. It returns the loaded result, or an array of more than one loaded results
It takes a boolean argument with default value false
. If
false
, it empties the
window.fixture.el
container element and clears the
window.fixture.json
array.
fixture.cleanup()
It empties the window.fixture.el
container element and
clears the window.fixture.json
array.
fixture.setBase(fixtureBasePath)
It set the base path under which all forthcoming fixtures will be loaded. This can be bypassed by loading a fixture with its full, base included, filename prefixed with a ‘/’.
The MIT License (MIT)


EMProtectorOathTokenDevice
@interface EMProtectorOathTokenDevice : EMProtectorTokenDevice
A class defining a device that generates OATH based OTPs.
- - Since: 5.3
-
Get OTP with PIN.
Declaration
Objective-C
- (nullable NSString *)otpWithPin:(nonnull NSString *)pin error:(NSError *_Nullable *_Nullable)error;
Swift
func otp(pin: String) throws -> String
Parameters
pin
The pin.
error
If an error occurs, upon return contains an
NSError
object that describes the problem.Return Value
The OTP.
-
Get OTP with AuthInput.
Declaration
Objective-C
- (nullable NSString *)otpWithAuthInput: (nonnull EMProtectorAuthInput *)authInput error:(NSError *_Nullable *_Nullable)error;
Swift
func otp(authInput: EMProtectorAuthInput) throws -> String
Parameters
authInput
The protectorAuthInput.
error
If an error occurs, upon return contains an
NSError
object that describes the problem.Return Value
The OTP.
-
Get the OCRA with PIN and given parameters.
Declaration
Objective-C
- (nullable NSString *)ocraWithPin:(nonnull NSString *)pin serverChallengeQuestion:(nonnull NSString *)serverChallengeQuestion clientChallengeQuestion:(nullable NSString *)clientChallengeQuestion passwordHash:(nullable NSData *)passwordHash session:(nullable NSString *)session error:(NSError *_Nullable *_Nullable)error;
Swift
func ocra(pin: String, serverChallengeQuestion: String, clientChallengeQuestion: String?, passwordHash: Data?, session: String?) throws -> String
Parameters
pin
The pin.
serverChallengeQuestion
The server challenge question.
clientChallengeQuestion
The client challenge question.
passwordHash
The hash value of password.
session
The session data.
error
If an error occurs, upon return contains an
NSError
object that describes the problem.Return Value
The OCRA OTP.
-
Get the OCRA with AuthInput and given parameters.
Declaration
Objective-C
- (nullable NSString *) ocraWithAuthInput:(nonnull EMProtectorAuthInput *)authInput serverChallengeQuestion:(nonnull NSString *)serverChallengeQuestion clientChallengeQuestion:(nullable NSString *)clientChallengeQuestion passwordHash:(nullable NSData *)passwordHash session:(nullable NSString *)session error:(NSError *_Nullable *_Nullable)error;
Swift
func ocra(authInput: EMProtectorAuthInput, serverChallengeQuestion: String, clientChallengeQuestion: String?, passwordHash: Data?, session: String?) throws -> String
Parameters
authInput
The authInput.
serverChallengeQuestion
The server challenge question.
clientChallengeQuestion
The client challenge question.
passwordHash
The hash value of password.
session
The session data.
error
If an error occurs, upon return contains an
NSError
object that describes the problem.Return Value
The OCRA OTP.
-
Gets password hash value according the algorithm defined on OCRA settings.
Declaration
Objective-C
- (nullable NSData *)ocraPasswordHash:(nonnull NSString *)password error:(NSError *_Nullable *_Nullable)error;
Swift
func ocraPasswordHash(_ password: String) throws -> Data
Parameters
password
The password.
error
If an error occurs, upon return contains an
NSError
object that describes the problem.Return Value
passwordHash The hash value of the password.
-
Returns lifespan of the last OTP computed by this token device for time-based OTP. In case last OTP computed is event-based, or no OTP has been computed yet, the function returns ‘NSIntegerMax’. Each time this function is called, it returns the remaining lifespan in seconds of the last time-based OTP. Lifespan is computed with respect of device’s settings.
Declaration
Objective-C
- (NSInteger)lastOtpLifeSpan;
Swift
func lastOtpLifeSpan() -> Int
Return Value
lifespan If positive, the last OTP is still valid according current time and token device. If negative,the last OTP computed is obsolete, it indicates the time elapsed since the OTP has become obsolete


@(title: String)(content: Html)
choose a picture and upload, you will get an amazing result
JUST TRY IT !!!!!!!!!!!!!!!!


---
layout: post
title: Viktor, Welcome to this life!
date: 2007-07-15 16:50:00.000000000 +10:00
comments: true
categories:
- personal
---
My best congratulations to new men who came into this world!
Yesterday a boy was born in the family of my best friend!
Viktor, welcome to this world!
Congratulations to your father (Viktor) and mother (Elena).
Be blessed, be healthy, be honest, be happy...
Be as strong as your parents are!
Comments


Projection Info
The map projection demos were created by converting the publicly available 5 minute DEM data (courtesy of the NGDC) from the original plain raster format to a registered GeoTIFF image file. The resulting file is read by proprietary Geo-F/X tools and projected using the Geo-F/X projection library. The projection is done in 3D (using OpenGL) The elevations in the DEM file are used to depict the elevations. In the other demos the vertical elevations are exaggerated by 15x - otherwise the earth’s topography is virtually undetectable. In the “gnarly” globe above the elevations are exaggerated 100 times!
The color rendering of the globe is achieved by applying a simple model that relates the earth’s biogeographical distribution to latitude and altitude and assigns colors based on the dominant biogeographical elements of each zone (e.g. desert/scrub brown, tropical forest green, temperate forest dark green, etc.)


Right edge of each box should align with black line at end of test. Note that the position of the last element in each group is approximate.


Your timer is already in progress in other Location Finish or stop that to continue here
Pomodoro # {{pCounter }}
No participant selected


Timer Length:
in minutes
Break Length:
To block certain sites while the timer is running, enter regular expressions here (one per line). For example, ^https?://(\w+\.)?twitter\.com/ to block Twitter.
^https?://(\w+\.)?twitter\.com/


Body of missing pilot found in Washington state lake
COLVILLE, Wash. (AP) - Washington state officials say the body of a missing pilot has been found.
The Washington State Department of Transportation says a local resident found 67-year-old Terry Coleman’s body Saturday in Sullivan Lake.
Coleman flew out of the Colville Municipal Airport on Monday, intending to return in an hour. His family notified authorities when he didn’t come back.
TOP STORIES
Accused thieves, child-porn suspects, suspected murderers among DACA recipients: Report
Wisc. county becomes a Second Amendment sanctuary: 'We like our guns'
Sudden expansion of 2020 Democratic presidential field reveals unease with Biden, Warren, Sanders
Search crews focused on the area around Sullivan Lake and the town of Ione based on a ping of his cellphone and radar that showed a plan in the general area at the time he would have been flying.
Low visibility, rain and snow prevented an aerial search on several days during the nearly week-long search for Coleman and his Cessna 182 Skyline. Rescuers on the ground searched through steep terrain.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


SIXLSXWorksheet Class Reference
| Inherits from | NSObject |
|---|---|
| Declared in | SIXLSXWriter.h SIXLSXWriter.m |
– writeString:toCell:withFormat:
writes a string to a worksheet cell.
- (BOOL)writeString:(NSString *)string toCell:(NSString *)cellIdentifier withFormat:(SIXLSXFormat *)cellFormat
Parameters
string |
string to write |
|---|---|
cellIdentifier |
cell identifier in Excel style (ex. @“A1”) |
cellFormat |
format to use, nil for default. |
Return Value
YES if successful, NO if not.
Discussion
writes a string to a worksheet cell.
Declared In
SIXLSXWriter.h
– writeString:toRow:andColumn:withFormat:
writes a string to a worksheet cell.
- (BOOL)writeString:(NSString *)string toRow:(int)row andColumn:(int)column withFormat:(SIXLSXFormat *)cellFormat
Parameters
string |
writes a string to a worksheet cell. |
|---|---|
row |
row of cell |
column |
column of cell |
cellFormat |
format to use, nil for default. |
Return Value
YES if successful, NO if not.
Discussion
writes a string to a worksheet cell.
Declared In
SIXLSXWriter.h
– writeNumber:toCell:withFormat:
Writes a number to a cell on your worksheet.
- (BOOL)writeNumber:(NSNumber *)number toCell:(NSString *)cellIdentifier withFormat:(SIXLSXFormat *)cellFormat
Parameters
number |
numeric value to write |
|---|---|
cellIdentifier |
cell identifier in Excel style (ex. @“A1”) |
cellFormat |
format to use, nil for default. |
Return Value
YES if successful, NO if not.
Discussion
Writes a number to a cell on your worksheet.
The native data type for all numbers in Excel is a IEEE-754 64-bit double-precision floating point, which is also the default type used.
The cellFormat parameter is used to apply formatting to the cell. This parameter can be nil to indicate no formatting or it can be a SIXLSXFormat object.
Declared In
SIXLSXWriter.h
– writeNumber:toRow:andColumn:withFormat:
Writes a number to a cell on your worksheet.
- (BOOL)writeNumber:(NSNumber *)number toRow:(int)row andColumn:(int)column withFormat:(SIXLSXFormat *)cellFormat
Parameters
number |
numeric value to write |
|---|---|
row |
row index of the cell |
column |
column index of the cell |
cellFormat |
format to apply or nil |
Return Value
YES if successfull, NO if not.
Discussion
Writes a number to a cell on your worksheet.
The native data type for all numbers in Excel is a IEEE-754 64-bit double-precision floating point, which is also the default type used.
The cellFormat parameter is used to apply formatting to the cell. This parameter can be nil to indicate no formatting or it can be a SIXLSXFormat object.
Declared In
SIXLSXWriter.h
– writeDate:toCell:withFormat:
Writes a date to a cell on your worksheet.
- (BOOL)writeDate:(NSDate *)date toCell:(NSString *)cellIdentifier withFormat:(SIXLSXFormat *)cellFormat
Parameters
date |
date value to write |
|---|---|
cellIdentifier |
cell identifier in Excel style (ex. @“A1”) |
cellFormat |
format to use, nil for default. |
Return Value
YES if successful, NO if not.
Discussion
Writes a date to a cell on your worksheet.
The format parameter should be used to apply formatting to the cell using a Format object as shown above. Without a date format the datetime will appear as a number only.
Declared In
SIXLSXWriter.h
– writeDate:toRow:andColumn:withFormat:
Writes a date to a cell on your worksheet.
- (BOOL)writeDate:(NSDate *)date toRow:(int)row andColumn:(int)column withFormat:(SIXLSXFormat *)cellFormat
Parameters
date |
date value to write |
|---|---|
row |
index of cell row |
column |
index of column |
cellFormat |
format to use, nil for default. |
Return Value
YES if successful, NO if not.
Discussion
Writes a date to a cell on your worksheet.
The format parameter should be used to apply formatting to the cell using a Format object as shown above. Without a date format the datetime will appear as a number only.
Declared In
SIXLSXWriter.h
– writeFormula:toCell:withFormat:
Writes a formula to a cell on your worksheet.
- (BOOL)writeFormula:(NSString *)formula toCell:(NSString *)cellIdentifier withFormat:(SIXLSXFormat *)cellFormat
Parameters
formula |
formula to use |
|---|---|
cellIdentifier |
cell identifier in Excel style (ex. @“A1”) |
cellFormat |
format to use, nil for default. |
Return Value
YES if successful, NO if not.
Discussion
Writes a formula to a cell on your worksheet.
@“=B3 + 6” @“=SIN(PI()/4)” @“=SUM(A1:A2)” @“=IF(A3>1,\"Yes\”, \“No\”)“ @”=AVERAGE(1, 2, 3, 4)“ @”=DATEVALUE(\“1-Jan-2013\”)"
Libxlsxwriter doesn’t calculate the value of a formula and instead stores a default value of 0. The correct formula result is displayed in Excel, as shown in the example above, since it recalculates the formulas when it loads the file. For cases where this is an issue see the worksheet_write_formula_num() function and the discussion in that section.
Formulas must be written with the US style separator/range operator which is a comma (not semi-colon).
Declared In
SIXLSXWriter.h
– writeFormula:toRow:andColumn:withFormat:
Writes a formula to a cell on your worksheet.
- (BOOL)writeFormula:(NSString *)formula toRow:(int)row andColumn:(int)column withFormat:(SIXLSXFormat *)cellFormat
Parameters
formula |
formula to use |
|---|---|
row |
index of cell row |
column |
index of cell column |
cellFormat |
format to use, nil for default. |
Return Value
YES if successful, NO if not.
Discussion
Writes a formula to a cell on your worksheet.
@“=B3 + 6” @“=SIN(PI()/4)” @“=SUM(A1:A2)” @“=IF(A3>1,\"Yes\”, \“No\”)“ @”=AVERAGE(1, 2, 3, 4)“ @”=DATEVALUE(\“1-Jan-2013\”)"
Libxlsxwriter doesn’t calculate the value of a formula and instead stores a default value of 0. The correct formula result is displayed in Excel, as shown in the example above, since it recalculates the formulas when it loads the file. For cases where this is an issue see the -writeFormula:withResult:toRow:andColumn:withFormat method and the discussion in that section.
Formulas must be written with the US style separator/range operator which is a comma (not semi-colon).
Declared In
SIXLSXWriter.h
– writeFormula:withResult:toRow:andColumn:withFormat:
This method writes a formula or Excel function to the cell specified by row and column with a user defined result.
- (BOOL)writeFormula:(NSString *)formula withResult:(NSNumber *)result toRow:(int)row andColumn:(int)column withFormat:(SIXLSXFormat *)cellFormat
Parameters
formula |
formula to use |
|---|---|
result |
calculation result to use |
row |
index of cell row |
column |
index of cell column |
cellFormat |
format to use, nil for default. |
Return Value
YES if successful, NO if not.
Discussion
This method writes a formula or Excel function to the cell specified by row and column with a user defined result.
Libxlsxwriter doesn’t calculate the value of a formula and instead stores the value 0 as the formula result. It then sets a global flag in the XLSX file to say that all formulas and functions should be recalculated when the file is opened.
This is the method recommended in the Excel documentation and in general it works fine with spreadsheet applications.
However, applications that don’t have a facility to calculate formulas, such as Excel Viewer, QuickView or some mobile applications will only display the 0 results.
If required, this method can be used to specify a formula and its result.
This function is rarely required and is only provided for compatibility with some third party applications. For most applications the writeFormula:toCell:withFormat: method is the recommended way of writing formulas.
See Also
Declared In
SIXLSXWriter.h
– writeFormula:withResult:toCell:withFormat:
This method writes a formula or Excel function to the cell specified by row and column with a user defined result.
- (BOOL)writeFormula:(NSString *)formula withResult:(NSNumber *)result toCell:(NSString *)cellIdentifier withFormat:(SIXLSXFormat *)cellFormat
Parameters
formula |
formula to use |
|---|---|
result |
calculation result to use |
cellIdentifier |
cell identifier in Excel style (ex. @“A1”) |
cellFormat |
format to use, nil for default. |
Return Value
YES if successful, NO if not.
Discussion
This method writes a formula or Excel function to the cell specified by row and column with a user defined result.
Libxlsxwriter doesn’t calculate the value of a formula and instead stores the value 0 as the formula result. It then sets a global flag in the XLSX file to say that all formulas and functions should be recalculated when the file is opened.
This is the method recommended in the Excel documentation and in general it works fine with spreadsheet applications.
However, applications that don’t have a facility to calculate formulas, such as Excel Viewer, QuickView, or some mobile applications will only display the 0 results.
If required, this method can be used to specify a formula and its result.
This function is rarely required and is only provided for compatibility with some third party applications. For most applications the writeFormula:toCell:withFormat: method is the recommended way of writing formulas.
See Also
Declared In
SIXLSXWriter.h
– setColumnWidth:forColumn:toColumn:andFormat:withOptions:
Sets width and format of a column.
- (BOOL)setColumnWidth:(int)width forColumn:(int)startColumn toColumn:(int)endColumn andFormat:(SIXLSXFormat *)cellFormat withOptions:(SIXLSXRowColOptions *)options
Parameters
width |
width of the column in number of characters in the default font (Calibri 11pt) |
|---|---|
startColumn |
index of the first column |
endColumn |
index of the last column |
cellFormat |
ormat to apply or nil |
options |
options to apply |
Return Value
YES if successful, NO if not.
Discussion
Sets width and format of a column.
This method can be used to change the default properties of a single column or a range of columns. If this is applied to a single column the value of first_col and last_col should be the same. The width parameter sets the column width in the same units used by Excel which is: the number of characters in the default font. The default width is 8.43 in the default font of Calibri 11. The actual relationship between a string width and a column width in Excel is complex. See the following explanation of column widths from the Microsoft support documentation for more details. There is no way to specify “AutoFit” for a column in the Excel file format. This feature is only available at runtime from within Excel. It is possible to simulate “AutoFit” in your application by tracking the maximum width of the data in the column as your write it and then adjusting the column width at the end.
As usual the format parameter is optional. If you wish to set the format without changing the width you can pass a default column width of 8.43.
The format parameter will be applied to any cells in the column that don’t have a format. For example:
As in Excel a row format takes precedence over a default column format.
Declared In
SIXLSXWriter.h
– setColumnWidth:forColumn:toColumn:andFormat:
Sets width and format of a column.
- (BOOL)setColumnWidth:(int)width forColumn:(int)startColumn toColumn:(int)endColumn andFormat:(SIXLSXFormat *)cellFormat
Parameters
width |
width of the column in number of characters in the default font (Calibri 11pt) |
|---|---|
startColumn |
index of the first column |
endColumn |
index of the last column |
cellFormat |
format to apply or nil |
Return Value
YES if successful, NO if not.
Discussion
Sets width and format of a column.
This method can be used to change the default properties of a single column or a range of columns. If this is applied to a single column the value of first_col and last_col should be the same. The width parameter sets the column width in the same units used by Excel which is: the number of characters in the default font. The default width is 8.43 in the default font of Calibri 11. The actual relationship between a string width and a column width in Excel is complex. See the following explanation of column widths from the Microsoft support documentation for more details. There is no way to specify “AutoFit” for a column in the Excel file format. This feature is only available at runtime from within Excel. It is possible to simulate “AutoFit” in your application by tracking the maximum width of the data in the column as your write it and then adjusting the column width at the end.
As usual the format parameter is optional. If you wish to set the format without changing the width you can pass a default column width of 8.43.
The format parameter will be applied to any cells in the column that don’t have a format. For example:
As in Excel a row format takes precedence over a default column format.
Declared In
SIXLSXWriter.h
– setColumnWidth:forColumnRange:andFormat:
Sets width and format of a column.
- (BOOL)setColumnWidth:(int)width forColumnRange:(NSString *)columnRange andFormat:(SIXLSXFormat *)cellFormat
Parameters
width |
width of the column in number of characters in the default font (Calibri 11pt) |
|---|---|
columnRange |
range of columns to be affected in Excel style syntax (ex. “A:E”) |
cellFormat |
format to apply or nil |
Return Value
YES if successful, NO if not.
Discussion
Sets width and format of a column.
This method can be used to change the default properties of a single column or a range of columns. If this is applied to a single column the value of first_col and last_col should be the same. The width parameter sets the column width in the same units used by Excel which is: the number of characters in the default font. The default width is 8.43 in the default font of Calibri 11. The actual relationship between a string width and a column width in Excel is complex. See the following explanation of column widths from the Microsoft support documentation for more details. There is no way to specify “AutoFit” for a column in the Excel file format. This feature is only available at runtime from within Excel. It is possible to simulate “AutoFit” in your application by tracking the maximum width of the data in the column as your write it and then adjusting the column width at the end.
As usual the format parameter is optional. If you wish to set the format without changing the width you can pass a default column width of 8.43.
The format parameter will be applied to any cells in the column that don’t have a format. For example:
As in Excel a row format takes precedence over a default column format.
Declared In
SIXLSXWriter.h
– setAutoFilterForStartRow:startColumn:endRow:endColumn:
The setAutoFilter function allows an autofilter to be added to a worksheet.
- (BOOL)setAutoFilterForStartRow:(int)startRow startColumn:(int)startColumn endRow:(int)endRow endColumn:(int)endColumn
Parameters
startRow |
The first row of the range. (All zero indexed.) |
|---|---|
startColumn |
The first column of the range. |
endRow |
The last row of the range. |
endColumn |
The last col of the range. |
Return Value
YES if successful, NO if not.
Availability
1.0
Discussion
The setAutoFilter function allows an autofilter to be added to a worksheet.
An autofilter is a way of adding drop down lists to the headers of a 2D range of worksheet data. This allows users to filter the data based on simple criteria so that some data is shown and some is hidden.
Note: it isn’t currently possible to apply filter conditions to the autofilter.
Declared In
SIXLSXWriter.h
– setAutoFilterForCellRange:
The setAutoFilter function allows an autofilter to be added to a worksheet.
- (BOOL)setAutoFilterForCellRange:(NSString *)cellRange
Parameters
cellRange |
The cell range for this autofilter in Excel syntax (ex. @“A1:D51”) |
|---|
Return Value
YES if successful, NO if not.
Availability
1.0
Discussion
The setAutoFilter function allows an autofilter to be added to a worksheet.
An autofilter is a way of adding drop down lists to the headers of a 2D range of worksheet data. This allows users to filter the data based on simple criteria so that some data is shown and some is hidden.
Note: it isn’t currently possible to apply filter conditions to the autofilter.
Declared In
SIXLSXWriter.h
– repeatRowsFirstRow:lastRow:
For large Excel documents it is often desirable to have the first row or rows of the worksheet print out at the top of each page.
- (BOOL)repeatRowsFirstRow:(int)firstRow lastRow:(int)lastRow
Parameters
firstRow |
First row of repeat range. |
|---|---|
lastRow |
Last row of repeat range. |
Return Value
YES if successful, NO if not.
Availability
1.0
Discussion
For large Excel documents it is often desirable to have the first row or rows of the worksheet print out at the top of each page.
Declared In
SIXLSXWriter.h
– repeatColumnsFirstColumn:lastColumn:
For large Excel documents it is often desirable to have the first column or columns of the worksheet print out at the left of each page.
- (BOOL)repeatColumnsFirstColumn:(int)firstCol lastColumn:(int)lastColumn
Parameters
firstCol |
First column of repeat range. |
|---|---|
lastColumn |
Last column of repeat range. |
Return Value
YES if successful, NO if not.
Availability
1.0
Discussion
For large Excel documents it is often desirable to have the first column or columns of the worksheet print out at the left of each page.
Declared In
SIXLSXWriter.h
– setPageOrientation:
This function is used to set the orientation of a worksheet’s printed page to landscape or portrait.
- (void)setPageOrientation:(NSPaperOrientation)orientation
Parameters
orientation |
orientation to set: NSPaperOrientationPortrait (default) or NSPaperOrientationLandscape @default NSPaperOrientationPortrait |
|---|
Availability
1.0
Discussion
This function is used to set the orientation of a worksheet’s printed page to landscape or portrait.
Declared In
SIXLSXWriter.h
– setHeader:
Headers and footers are generated using a string which is a combination of plain text and control characters.
- (BOOL)setHeader:(NSString *)headerString
Parameters
headerString |
The formar string for the print header. |
|---|
Return Value
YES if successful, NO if not.
Availability
1.0
Discussion
Headers and footers are generated using a string which is a combination of plain text and control characters.
The available control character are:
| Control | Category | Description |
|---|---|---|
| &L | Justification | Left |
| &C | Center | |
| &R | Right | |
| &P | Information | Page number |
| &N | Total number of pages | |
| &D | Date | |
| &T | Time | |
| &F | File name | |
| &A | Worksheet name | |
| &Z | Workbook path | |
| &fontsize | Font | Font size |
| &“font,style” | Font name and style | |
| &U | Single underline | |
| &E | Double underline | |
| &S | Strikethrough | |
| &X | Superscript | |
| &Y | Subscript |
Text in headers and footers can be justified (aligned) to the left, center and right by prefixing the text with the control characters &L, &C and &R.
For example (with ASCII art representation of the results):
@"&LHello"
| |
| Hello |
| |
@"&CHello"
| |
| Hello |
| |
@"&RHello"
| |
| Hello |
| |
For simple text, if you do not specify any justification the text will be centered. However, you must prefix the text with &C if you specify a font name or any other formatting:
@"Hello"
| |
| Hello |
| |
You can have text in each of the justification regions:
@"&LCiao&CBello&RCielo"
| |
| Ciao Bello Cielo |
| |
The information control characters act as variables that Excel will update as the workbook or worksheet changes. Times and dates are in the users default format:
@"&CPage &P of &N"
| |
| Page 1 of 6 |
| |
@"&CUpdated at &T"
| |
| Updated at 12:30 PM |
| |
You can specify the font size of a section of the text by prefixing it with the control character &n where n is the font size:
@"&C&30Hello Big"
@"&C&10Hello Small"
You can specify the font of a section of the text by prefixing it with the control sequence &“font,style” where fontname is a font name such as Windows font descriptions: “Regular”, “Italic”, “Bold” or “Bold Italic”: “Courier New” or “Times New Roman” and style is one of the standard
@"&C&\"Courier New,Italic\"Hello"
@"&C&\"Courier New,Bold Italic\"Hello"
@"&C&\"Times New Roman,Regular\"Hello"
It is possible to combine all of these features together to create sophisticated headers and footers. As an aid to setting up complicated headers and footers you can record a page set-up as a macro in Excel and look at the format strings that VBA produces. Remember however that VBA uses two double quotes “” to indicate a single double quote.
To include a single literal ampersand & in a header or footer you should use a double ampersand &&:
@"&CCuriouser && Curiouser - Attorneys at Law"
Note, the header or footer string must be less than 255 characters. Strings longer than this will not be written.
See Also
Declared In
SIXLSXWriter.h
– setFooter:
Headers and footers are generated using a string which is a combination of plain text and control characters.
- (BOOL)setFooter:(NSString *)footerString
Parameters
footerString |
The formar string for the print footer. |
|---|
Return Value
YES if successful, NO if not.
Availability
1.0
Discussion
Headers and footers are generated using a string which is a combination of plain text and control characters.
The available control character are:
| Control | Category | Description |
|---|---|---|
| &L | Justification | Left |
| &C | Center | |
| &R | Right | |
| &P | Information | Page number |
| &N | Total number of pages | |
| &D | Date | |
| &T | Time | |
| &F | File name | |
| &A | Worksheet name | |
| &Z | Workbook path | |
| &fontsize | Font | Font size |
| &“font,style” | Font name and style | |
| &U | Single underline | |
| &E | Double underline | |
| &S | Strikethrough | |
| &X | Superscript | |
| &Y | Subscript |
Text in headers and footers can be justified (aligned) to the left, center and right by prefixing the text with the control characters &L, &C and &R.
For example (with ASCII art representation of the results):
@"&LHello"
| |
| Hello |
| |
@"&CHello"
| |
| Hello |
| |
@"&RHello"
| |
| Hello |
| |
For simple text, if you do not specify any justification the text will be centered. However, you must prefix the text with &C if you specify a font name or any other formatting:
@"Hello"
| |
| Hello |
| |
You can have text in each of the justification regions:
@"&LCiao&CBello&RCielo"
| |
| Ciao Bello Cielo |
| |
The information control characters act as variables that Excel will update as the workbook or worksheet changes. Times and dates are in the users default format:
@"&CPage &P of &N"
| |
| Page 1 of 6 |
| |
@"&CUpdated at &T"
| |
| Updated at 12:30 PM |
| |
You can specify the font size of a section of the text by prefixing it with the control character &n where n is the font size:
@"&C&30Hello Big"
@"&C&10Hello Small"
You can specify the font of a section of the text by prefixing it with the control sequence &“font,style” where fontname is a font name such as Windows font descriptions: “Regular”, “Italic”, “Bold” or “Bold Italic”: “Courier New” or “Times New Roman” and style is one of the standard
@"&C&\"Courier New,Italic\"Hello"
@"&C&\"Courier New,Bold Italic\"Hello"
@"&C&\"Times New Roman,Regular\"Hello"
It is possible to combine all of these features together to create sophisticated headers and footers. As an aid to setting up complicated headers and footers you can record a page set-up as a macro in Excel and look at the format strings that VBA produces. Remember however that VBA uses two double quotes “” to indicate a single double quote.
To include a single literal ampersand & in a header or footer you should use a double ampersand &&:
@"&CCuriouser && Curiouser - Attorneys at Law"
Note, the header or footer string must be less than 255 characters. Strings longer than this will not be written.
See Also
Declared In
SIXLSXWriter.h


In this assignment you will develop the frontend design of your web application. (In the next assignment you will implement the functionality of the frontend.)
Start by visiting your favorite social networking web application using Chrome Incognito (so you will not be automatically logged in). Take note of the landing page. Think about the positioning of the login and registration buttons. Can you register from the landing page or is there link to a separate page or modal popup? Similarly, can you log in directly from the landing page? Is the landing page devoid of content or is there a sampling of content? Using Chrome Incognito, compare the landing pages of Facebook and Twitter.
Next log into your favorite social networking web application and take note of the main page once logged in. Where are the user controls for logging out or changing your profile information. What content is display on the main page and how is it positioned relative to other components? How do you navigate around?
Think about these as you read the requirements below. Note that there is nothing to "submit" for the above two paragraphs.
In a previous assignment we constructed a simple landing page that had some of the key features for our social networking web application. But it is lacking style. Consider the layout of elements and what you will include on your landing page. Using raw CSS or a CSS Framework such as Bootstrap, Foundation, or SemanticUI, beautify your landing page index.html
. See below for the required components, but you are free to add more.
Once a user logs in, their view will change. The logged in user should see an option to log out, some means to change their profile (which contains a profile picture of course) and password. The main section of a user's page should be filled with posts from their feed. The feed is a combination of their own posts interspersed with posts from other users that are being followed. Prominently there is an area for the user to make a new post.
Also include a status headline for the user, and a sidebar with the followed users. Ideally we also see the status headlines of those users as well, although this may be delegated to context control (e.g., the headline appears when a user hovers their mouse over the followed user's name, ala Facebook). We need to be sure to separate the status headline from the new post card so that users are not confused by the two. The design layout and choices are up to you.
We also need a way to edit the followed list. Perhaps this is a button on the sidebar, or in a menu with the profile edit link. What about searching for posts? A search bar could be used to then replace the main section with the search results. But then we need to be sure to have a mechanism to get back to the default main page.
Create the main.html
page that will act as the home page for the user once logged in. Using similar styling as the landing page, beautify your main page.
The frontend of our web application will communicate with the backend using a small collection of endpoints which constitute the API. Determine what that API will be, and which elements in your web application are the source for, and which are populated by the results from, each of the endpoints.
For example, the log in button will send the username and password to the server. The endpoint should be called /login
and it should be a POST
action.
Create a page design.html
that contains a table of all of the endpoints, the verb associated with them (likely we will use GET
, POST
, PUT
, and DELETE
), the request payload that is sent, the reponse data that is returned, and a description(s) of the element(s) in your web application that are connected to them.
Use Chrome (or Firefox if using ng-include or directives) as your standard supported browser. (Whereas you can use any browser you like for development, your assignment will be accessed using Chrome (or Firefox is using ng-include or directives) by the grading staff and therefore it behooves you that it works.)
landing.html
registration.html
must be included as well and be beautified)main.html
design.html
Here is an example of what your design page should look like.
Your three pages should exhibit responsive layout (portrait vs landscape, desktop vs mobile) and have a unified style, i.e., look and feel. You should populate your pages with sample data, ala Lorem ipsum text and images, etc. Modals, if present, should open and close appropriately. Your site should exhibit a fluid user experience and be a site that you want to use.
You should write unobstrusive JavaScript and CSS. Have separate JS and CSS files for each HTML page as necessary -- do not combine disparate logic or styling into one file. However, there may be common functionality and styling that you share between the pages. In this case, have a common file in addition to the separate ones. It may be that you have no distinct styling, or perhaps only one or two CSS selector prescriptions, at which point it would be okay to only have the common CSS file and not separate ones for each page. Therefore your submission may look like this
The rubric below is an example and is subject to change. Be sure to re-examine the rubric the day before the due date for any last minute updates or changes.


Synclip
Home
User Guide
Release Notes
Support
404 Page Not Found
This is not the page you're looking for... You can go about your business...
Move Along


showName() ?>
isEditMode()) { ?>
hasPermission('author_edit')) { ?>
Edit author
showWebsite()) { ?>
Website
showWebsite() ?>
showContact()) { ?>
Contact
showContact() ?>
showAbout()) { ?>
About
showAbout() ?>
Indices
Publications
This list may be incomplete. Find out why.
Search this author in
Return to author
Edit this author
Delete this author
showPublicationsNum() > 0) { ?>
You cannot delete this author because there are publications assigned.
This will try to delete this author. It will fail if there are any publications assigned to this author.


Something short and leading about the collection below—its contents, the creator, etc. Make it short and sweet, but not too short so folks don’t simply skip over it entirely.
GoFruiteis HTML template based on Bootstrap 4.3.1 framework. This html template can be used in various business domains like Manufacturing, inventory, IT, administration etc. for admin panel, system development, web applications, even website can be created. This template also considered social pages, ecommerce pages and many more.
GoFruiteis HTML template based on Bootstrap 4.3.1 framework. This html template can be used in various business domains like Manufacturing, inventory, IT, administration etc.
GoFruiteis HTML template based on Bootstrap 4.3.1 framework. This html template can be used in various business domains like Manufacturing, inventory, IT, administration etc.
GoFruiteis HTML template based on Bootstrap 4.3.1 framework. This html template can be used in various business domains like Manufacturing, inventory, IT, administration etc.