close
Dashboard
Apply now
Repayment history
Logout
<EMAIL_ADDRESS>home
Dashboard
content_paste
Apply
library_books
Repayment history
Mary Jane
Loan Application
100,000
Duration:
12
Month(s)
Profile
Reset Password
Logout
Thank you
you have successfully applied for a loan
mymail 2mail.com
Loan ID:
1
amount
N 100,000
Duration
12
Months
Interest
5,000
Monthly Install
1750
Total Repayment
105000
Repayment Date
24th Aug 2017
Error


fun main(args: Array<String>) { var st = "" while (!st.contains("exit") && !st.contains("EXIT")) { st += " " + readLine()!! } val formatter = Formatter() val sqlst: String = formatter.format(st.replace("exit", "").replace("EXIT","")) println(sqlst) } /* SELECT supplier_name, city FROM suppliers inner JOIN contacts WHERE supplier_id > 500 and x=2 or (m >=8) ORDER BY supplier_name ASC, city DESC;SELECT supplier_name, city fROM suppliers NATURAL LEFT OUTER JOIN contacts WHERE supplier_id <> 500 and x = 2 exit d = 9 or x < 6 update a set a.ID = b.ID, Name = b.Name from Table1 a inner join (select ID, Name from Table2 where Active <> 0 and Current <> 0) b on a.ownerid = b.ownerid and a.type = b.type and b.version = '87.1' and a.Name is Null where a.expired <> 0 EXIT * */


I have an emonTX v3 communicating to a Raspberry Pi/RFM69Pi and have successfully set up emoncms working on localhost/emoncms. Two CTs are connected to the emonTx and a red LED simultaneously flashes on the emonTX and the RFM69Pi, every 10 seconds. On logging into my emoncms I get messages saying 'No feeds created' and 'No inputs created', "Configure your device to post values here". A link to 'input API helper' is provided but it doesn't provide me with the help at the level that I need.
Any help would be greatly appreciated so that I can complete this project to monitor the output of my PV panels and my electrical energy useage.
 I don't know much about the Pi/RFM69Pi, I'm hoping someone knowledgeable will step in.
Which firmware have you loaded into your Pi?
Re: Advice needed on configuring emoncms inputs
I m using the Raspbian Jeezy that came with my pi 2 B+ and I have loaded and updated all the openenergymonitor recommended files. I seem to have made a break through recently and I am now getting data arriving in the input & feed catagories. Now struggling with making sense of this data and creating the visualisations etc. Do you know of a good tutorial for this?
Re: Advice needed on configuring emoncms inputs
I'm afraid that, as far as I know, there is no tutorial for emoncms, other than what you can read in the on-line help.


Welcome to Retractor 2.3.5! Retractor is a tool for working with retrograde analysis (retro) chess problems.
In a retro problem, you play chess backwards to learn about the history of a position.
Click here for an introduction to retros.
The position above is a problem by Gerald Ettl.
What were the last 30 single moves played?
Source: Die Schwalbe Heft 157, Feb 1996, Problem 9129.
Click here to set up the Ettl problem again.
Solution to Ettl problem.
Retractor has 2 modes: edit and play.
In edit mode, you set up the position on the chess board.
In play mode, you retract (take back) moves, and Retractor tells you when it detects an illegal position.
Retractor can also attempt to solve a position (find the last N moves).
Edit mode controls
Play mode controls
Play mode details
Solving a position
Frozen, promoted, original markings on pieces
Cages
Config settings (Advanced)
What illegal positions are detected by Retractor 2? (new tab)
About Retractor 2
Edit mode controls:
Select a piece from the right panel, then left click on the board to add it.
Drag a piece around the board to move it.
Right click a piece to remove it. You can also remove pieces by selecting "None" from the right panel, then clicking on a square.
You can enter Forsythe notation in the box below the board and then click "Set" to set up the position.
In the "Retract Next" section, you select which color will make the first retraction when you switch to Play mode.
Play mode controls:
To retract a move, drag a piece from its square to an empty square.
To uncapture a piece, select it from the right panel, then perform the retraction. To uncapture en passant, select "e.p.".
To unpromote a piece, check the box "unpromote".
To uncastle, retract the king move, then the rook will automatically move (if legal).
The < button undoes a retraction.
The << button undoes back to the initial position.
The > button replays a retraction previously undone.
The >> button replays all retractions previously undone.
The Solve button attempts to solve the current position.
The Copy button displays all moves in a text box which you can then copy to the clipboard.
The Paste button allows you to paste a sequence of moves.
The Cage button allows you to verify, import, and export cages.
Retractor attempts to detect illegal retractions. Simple illegalities are immediately rejected with a message
in red below the board. For more complex illegalities, the new position will show on the board, with a message
in a popup box below the board. This allows you to see the new position and why it is illegal. You can choose to
undo the move with "Go Back", or play on by clicking "Continue anyway". The purpose of "Continue anyway" is to
let you play some more moves to see why it is illegal. Some parts of Retractor may not function properly after
you choose "Continue anyway" on an illegal position.
In the "Captures" section, Retractor shows the number of pawn captures
and number of total captures it could determine for White (W), Black (B), and Total (T). The "Total" column may
exceed the sum of "White" and "Black", because sometimes a capture can be detected without knowing which side made it
(example: White pawn on e5, Black pawn on e4). The "Total" row includes captures from non-pawn sources, such as an
original bishop captured on its own square (example: White pawns on b2 and d2, empty square on c1, means that the
White c1 bishop was captured on c1).
In the "Promoted pieces" section, Retractor shows the number of promoted pieces of each color that it could
detect. This includes excess pieces (for example, 2 queens or 3 rooks), pieces trapped in a cage (for example,
White pawns on a2 and c2 with a black bishop on b1), and
marked promoted pieces.
If the numbers in the "Captures" or "Promoted pieces" section are grey, that means that Retractor is still
calculating their values. Most positions should calculate immediately on a modern computer, but positions with
complicated pawn structures can take a long time. You can interrupt the calculation by playing a move on the
board. If you undo a move back to a position where you interrupted the calculation, the numbers will continue
to show as grey as a reminder that they may not be correct.
If the number of pawn captures reported is too low, it may be because there are pawn promotions that cannot
currently be detected by Retractor. Another possibility is when one side has reached its maximum number
of pawn captures, then the number of pawn captures reported for the other side may be too low. In the
latter case, you should try the config option separate capture tracking.
If the number of pawn captures reported is too high, it is because the number may include rooks captured
in their home cage. Retractor does not attempt to determine whether they could actually have been captured by
a pawn or not. However, the total number of captures reported will never be too high. When determining
illegality, Retractor only uses the total number of captures. The pawn capture value is reported separately for
the user's convenience only.
Solving a position in Retractor means to determine the possible sequences of last N moves in a position, for
some value of N.
When you click the "Solve" button in Play mode, these parameters are available:
- Solve depth - the number of previous moves to solve for. If you want to know the last 3 moves in a position,
for example, you should set the "Solve depth" to be 3.
- Extra depth - the additional depth beyond the solve depth that Retractor should search, in order to confirm that
a solution is legal. Sometimes, it is not obvious that a position is illegal until you search back a few
more moves (beyond the solve depth) to see that one side has no possible last move. The default value 3
is sufficient for most problems.
- Max solutions - the maximum number of solutions to report.
- No white/black uncaptures - If you check one of these boxes, then Retractor will not consider uncaptures for that side.
If Retractor finds one or more solutions, they will show as buttons in the upper right section of the
page. You can click on a button to navigate to that move in that solution. "Copy" will display that solution
in a text box which you can then copy to the clipboard. "Export Solutions" will export a text file with the
final position of each solution (in Forsythe notation).
If you make any move on the board, then all the solution buttons will be deactivated (because they may no
longer apply to the new position). Using the navigation buttons is fine, though. Even if the solution buttons
are deactivated, the "Copy" button for each solution will still work.
If Retractor finds no solutions, it will report that in an error message below the board. This means that
the position is impossible.
In Edit mode, you can mark pieces as either frozen or promoted. By shift-clicking on a piece
(not a pawn), the piece will cycle through the possibilities: frozen, promoted, neither. The current markings,
if any, for all pieces will show up as "Flags" in the upper right section of the page. If you do not see a Flags
section, that means there are no markings for any pieces.
A frozen piece is a piece on its original square which has never moved. No retractions will be allowed with this
piece. You can only mark a piece as frozen if it is on its original square (for example, a White king on e1, or a
Black knight on g8).
Marking a piece as promoted indicates to Retractor that this piece is promoted. This is useful if there is a
promoted piece on the board that Retractor cannot detect, or if there is a condition "piece X is promoted"
given in a problem.
We will explain cages via an example. Click to set up this position,
a last move problem by Brandis. Have Retractor 2 try to solve it by clicking "Solve" and then "Solve" again.
As it stands, Retractor 2 finds the correct answer Ka2-a1 but also several extraneous solutions a2xb3.
Click one of the extraneous solutions a2xQb3 to see the position after that retraction is made. Why is it
wrong? Because after a2xQb3, the arrangement of units in the lower left corner (the a1-e2 rectangle) is illegal,
no matter how what other units are uncaptured from this point. We say that the units in the a1-e2
rectangle form a cage.
Retractor knows about some cages, but this is not one of them. However, you can teach Retractor new cages. Make
sure you are still on the position after retracting a2xQb3. Click on the "Cage" button, then "Select All", then click on
the black queen on b3 to unselect it (because it is not part of the cage). Now click "Verify". Retractor says
that it has verified that the selected squares do indeed form a cage.
Now go back to the original position (click <<), and have Retractor solve the problem again. This time, Retractor
reports only the correct answer Ka2-a1, because it knows about this cage.
Retractor only learns cages that it can verify. So it is not possible to teach Retractor a wrong cage. However,
there are some correct cages that Retractor cannot verify.
The Export button will download a text file of the new cages Retractor has learned, and the Import button can
read these files. In ths way, new cages can be persisted between sessions, and shared with other people. On every
import, Retractor re-verifies all the cages in the file before it learns them.
Click here for more examples of cages.
For a more formal description of the algorithm used by Retractor to verify cages, see
this document (opens in a new tab).
Problem by Fabel. Last move?
Similar to the previous example, we must rule out the move b2xa3. If
b2xQa3 is retracted, we have a cage in the lower left (excluding the black Queen), which Retractor can verify and then solve the original problem.
Problem by Bartolovic, Gajdos, Maslar. Last move?
Here we must rule out the retractions Qh6-f8 or Qh6xNf8 followed by g7-g6. After this 2 move sequence, we have a cage
in the upper right, excluding the white Queen which has escaped. Retractor can verify this cage, then solve the original problem.
Problem by Høeg. Last move?
Here we have two incorrect moves to rule out. First one is c3xb4.
This produces a cage consisting of just the White bishop and pawns (note that both kings can escape via the bottom rank and then the Black bishop can escape too).
Then we must rule out Ba2xRb1. The entire position would become an
impossible cage. Retractor can verify both of these cages and then solve the original problem.
Hints on determining cages:
1. Visualize which units are actually trapped in a cage.
2. Do not include any pieces that have already escaped from the cage, or have an escape route.
In most cases, users should not have to touch these settings. Config settings can only be changed in edit mode
from the "Config" button on the left side.
Promotion search threshold: When there are promoted pieces on the board, Retractor searches over all possible
combinations of promotion squares for the promoted pieces to determine additional pawn captures. If the number of
combinations exceeds this threshold, then Retractor will skip this search entirely. The default value 1000 is reasonable
for most problems. I have not found any problems where it is necessary to set it higher. If Retractor is slow
and you are working with a position with some promoted pieces on the board but the number of captures by promoted
pawns is irrelevant, you can try setting it lower.
Separate capture tracking: Checking this box is useful in positions where the number of pawn captures reported
for one side is too low because the other side has already reached its maximum number of pawn captures.
Consider the following problem by Dr. Niels Høeg - Retrograde Analysis, 1915
(click here to set up).
If "separate capture tracking" is off (default), Retractor only reports 4 pawn captures for White, but
because Black cannot make any pawn captures, White actually must make 6 pawn captures. If "separate capture tracking"
is on, Retractor will report 6 pawn captures for White.
In some positions, using "separate capture tracking" in combination with many promoted pieces can slow things down.
In this case, you can try lowering the promotion search threshold.
All 32 pieces are on the board, so there have been no captures. The White king on e5 is in check from the Black
pawn on d6, so Black made the last move and it must have been d7-d6. Now all pieces on the left side of the board
are locked in.
To unlock it, Black must retract Kb5-a6 and then White must retract c3-c4. However, we cannot
do that immediately because then the configuration of White pawns forms a cage that the White rooks couldn't have
escaped to get to their present positions.
So White must retract rook moves to bring them back into the cage before Kb5-a6 and c3-c4 can be retracted. In
the meantime, Black has only pawn moves to retract, so there are only a limited number of moves for Black. So White
must proceed as quickly as possible so that Black does not run out of moves to retract. White pieces must also
move out of the way of the Black pawns at the right time, or Black will run out of moves even earlier.
The only
sequence of moves that works is
d7-d6+ Kd6-e5 e5-e4 Rf5-f8 e6-e5 Rd5-f5 f5-f4 Rd3-d5 f6-f5 Rc3-d3 f7-f6 Nf6-g4 g4-g3 Rc1-c3 g5-g4 Bg4-h5 g6-g5 Rh5-h8
g7-g6 Ng6-h4 h4-h3 Rd5-h5 h5-h4 Rd3-d5 h6-h5 Rc3-d3 h7-h6 Rc2-c3 Kb5-a6 c3-c4+. Clicking the link will show the
final position. You can use << to go back to the beginning, then > to view the moves one by one.
Retractor 2 is developed by Theodore Hwa. It is the successor to the original
Retractor 1.0, developed by Theodore Hwa and Chad Whipkey
in 1998.
Retractor 2 Copyright (C) 2023 Theodore Hwa.
<EMAIL_ADDRESS>Source code available at the
Retractor 2 github repository.
Throughout this tutorial, you can navigate using the "Previous Page" and "Next Page" links at the top and bottom of each
page of the tutorial. Be sure to scroll down if necessary to see all the text on each page.
What is Retrograde Analysis?
Retrograde analysis is a type of chess problem in which you are asked to figure out something about
the history of the game leading to a position.
Click here
to setup a very simple example of a retro problem on the board.
The problem is: what was the last move? Try to answer this for yourself. For the solution, turn to the next page.
The last move was made by White and it was a3+.
How do we solve this? First, we notice that the black King is in check from the white pawn.
Therefore, the move must have been for White to deliver this check.
The pawn must have just moved to give this check. The only possible such square is a2, since b2 is now occupied.
So the white pawn just advanced from a2 to a3.
Most retro problems are much more complicated than this. However, there are several important principles to gather from
this problem:
1. If one side (such as Black) is in check, then the other side (White) must have made the last move.
2. White's last move must have been to put Black in check. There are two ways this can happen: the checking piece just moved,
or some other piece moved to reveal a discovered check. In this case, the check is by a pawn, so the pawn must have
just moved. We must now determine where this pawn moved from.
3. The square that the pawn came from must now be empty. A White pawn can move from a2 to a3 (without capturing a piece),
or from b2 to a3 (capturing a Black piece). But in this case, b2 is occupied, so the second possibility is ruled out.
To try another problem, turn to the next page.
Click here to setup the next problem
by Raymond Smullyan, from the book
The Chess Mysteries of Sherlock Holmes, 1979.
The problem is: Black made the last move. What was it?
The solution is on the next page.
Click here to setup the problem again if necessary.
If you said that the last move was Ka7-a8, that is not correct. To see this, move the Black king from a8 to a7, and look at
the resulting position.
Black is in check from the white Bishop. How could White have delivered this check? There is no way: the Bishop could
only have come from squares further up the g1 to a7 diagonal, where it would already have been checking the black King.
Try again before reading the correct solution on the next page.
Click here to setup the problem again if necessary.
Black's last move must have been with the King (what else?) and it just moved from a7 (where else?).
However, the correct solution is that Black's last move was Ka7xNa8. Black has just captured a knight!
To see the position before Ka7xNa8, click on the knight on the right panel, then move the Black king from a8 to a7. You
have just uncaptured a piece! This is the opposite from normal chess, where you capture pieces.
Now again Black is in check from the white Bishop. How did White deliver this check? As before, the Bishop couldn't
have moved to deliver the check. But now, the White Knight could have just moved from b6 to a8 to give a discovered check.
The following are important principles to gather from this problem:
1. Always ask whether the position after taking back a move (or a sequence of moves) is still legal.
Here, the problem only asked for the last move, but in order to determine the correct answer we had to look back
to the move before the last move (to ask how White delivered the check).
2. Always remember that the last move could have been a capture! In order to completely solve a "last move(s)" problem,
you must determine which piece, if any, was captured. You must know exactly what the board looked like before the
move(s) in question.
Watching for special cases
Next, we consider 3 problems that illustrate special cases that often come up in retro problems.
Click here to set up problem 1.
Is this position legal? (Could it have arisen in a legal chess game?)
Click here to set up problem 2.
Is this position legal? (Could it have arisen in a legal chess game?)
Click here to set up problem 3.
Samuel Loyd,
Musical World, 1859
White to play and mate in two
(Problem 3 might look like just an ordinary chess problem, but there is a retro component to it!)
The solutions are discussed in the next few pages.
Solution to special cases problem 1
Click here to set up problem 1 again if necessary.
At first sight, this position looks illegal because Black is in a double check by two rooks and it appears impossible
for one of the rooks to have revealed a check by the other rook. However, this is possible by a pawn promotion!
The previous position had a White pawn on g7 and some other Black piece on h8. White played gxh8=R, giving check with
the two rooks simultaneously.
To see this in Retractor, click the "unpromote" box, select one of the pieces (say a knight) to uncapture, then move
the White rook on h8 to g7. You have
unpromoted a rook back to a pawn! This is the opposite of the promotion
move in normal chess.
Whenever you see a White piece on the eighth rank, or a Black piece on the first rank, always remember that it could have
been created by promotion on the previous move. Also, remember that unless stated or implied to the contrary, any piece
(except kings and pawns) on the board could been created by promotion earlier in the game! It is entirely possible to have 2
queens or 3 rooks, etc., on the board.
Although in a normal, well-played game of chess, one generally promotes to a queen and there are only occasional
instances of promotions to other pieces, in retrograde analysis problems, because the game is only known to be legal
(not well-played), promotions to other pieces are often employed.
Solution to special cases problem 2
Click here to set up problem 2 again if necessary.
Just as in the previous problem, there appears to be an impossible check here. White's bishop is giving check to the
Black king. The bishop had no square to move from where it would not already be checking the king. It might appear that
the White pawn could have moved from e5 to e6 to give the check, but this is impossible because the White pawn on e5 would
have already been checking the king.
The solution involves an en passant capture! White's last move was actually an en passant capture: -1.d5xe6ep, taking a
Black pawn on e5 en passant, which was of course covering the bishop's diagonal. Black's move before that must have been
e7-e5 (in order for the en passant capture to be legal), and White's move before that was d4-d5, discovering the check
from the bishop.
To play -1.d5xe6ep in Retractor, click the "e.p." button in the right panel, then move the e6 pawn back
to d5. Then you can follow up with the retractions -1...e7-e5 -2. d4-d5.
Finally, note that the en passant capture must really have come from d5 rather than f5. If, from the initial position,
we retract the alternative sequence -1. f5xe6ep?? e7-e5 then in the resulting position Black is again in check from the
White bishop, and now there really is no way of giving this check.
Remember that a White pawn on the sixth rank, or a Black pawn on the third rank, could just have made an en passant
capture. Also, when you retract an en passant capture, you must immediately follow with the retraction of the double
step pawn move. Retractor will reject any other move.
Solution to special cases problem 3
Click here to set up problem 3 again if necessary.
This problem looks like a normal mate in two problem. But if you don't notice the hidden retro content, the problem may
appear to have no solution. The retro-content revolves around Black's castling in the above position.
The solution is to play 1. Qa1! followed by 2. Qh8 mate. The only objection is to wonder why Black can't reply to
White's first move with 1... O-O-O, after which White has no mate, and therein lies the retro content.
Since it is White to move in the above position, Black made the last move. What was it?
It could not have been either pawn, since they are on their original squares, hence it was with the king or rook.
Therefore, the king or rook has moved, and Black cannot castle.
Cages and Captures
Click here for the next
problem by Peter Schaefer.
White to move. Can White castle?
(b) wNh3
(c) Remove wRh3
There are 3 problems in one here. The first problem is the diagram as shown;
in the second, we replace the White rook on h3 in the diagram by a White knight;
and in the third we remove the White rook in the diagram from h3. In each case, we are asked whether
White castling is legal. (Castling is always assumed to be legal, unless it can be proved to the contrary.)
So the question at hand is whether the White king or rook must have moved previously in the game.
For a start, try to figure out the last several moves played in this position. Remember that it is White to move. To start the solution, turn to the next page.
Click here to set up the problem again if necessary.
Here Black has made the last move, obviously with his king. All of the potential squares around the king look like they lead to impossible double checks, but the situation is explained by an en passant capture. The last 3 single moves were
0... Ka6xPb6 -1. a5xb6ep b7-b5
Now Black is once again in check from the White bishop on f1. How did White give this check? There are two possibilities: the White king moved from e2 to e1, or the White pawn captured from e2 to f3.
In the former case, White cannot castle, but in the latter case there is no problem with the castling.
So we want to know if we can rule out e2xf3 as a possible last move. Assume it was the last move, and we get
this position
(we have arbitrarily uncaptured a rook on f3, but the choice of piece is not relevant):
To continue with the solution, turn to the next page.
Click here
to set up the last position on the previous page if necessary.
This is the only possible history of the game if White is assumed to be able to castle, except that the rook on f3
was arbitrarily chosen as the uncaptured piece. Now is this position possible? To figure that out, we must draw more
conclusions about the history of the game.
The first important fact is that the bishop on a8 must be a promoted pawn, since the Black pawn on b7 blocks the original
bishop from reaching a8. We can also see this by noticing the original White bishop moving on light squares is still on
f1 on its original square (it is trapped in a cage). But, assuming White can castle, the rook on h3 is also promoted!
Why?
If White can castle, then the rook on a1 has not yet moved. Could the rook on h3 be the rook from h1? No! Because the
White bishop on f1 is trapped on its original square, then the rook from h1 was also trapped in a cage consisting of
squares g1 and h1. It could not leave those two squares, and was captured on one of those squares. So the rook on h3
must also be promoted. But since we have 7 White pawns on the board, we could have at most one promotion. This is a
contradiction, so White cannot castle.
On the next page, we discuss part (b) of the original problem, where the white rook on h3 is replaced by a white knight.
Click here to set up part (b) of the problem.
By the same reasoning as before, we must have
0... Ka6xPb6 -1. a5xb6ep b7-b5 -2. e2xRf3
and as before, the White bishop on a8 must be promoted. Now we introduce a very important technique in retro problems,
counting captures.
First, we count pawn captures. There are 4 White pawns on the left side of the board, plus the promoted bishop on a8
which also came from a pawn. These 5 pawns collectively came from the a-, b-, c-, d-, f-files. We don't know for sure
which pawn came from which file, but we can say they must have made (at least) 8 captures total.
Next, we have 2 cage captures to count: both original Black bishops were captured on their original squares c8 and f8,
since the releasing pawns have not moved. This makes a total of 10 captures, and since Black has 6 units on the board,
that accounts for all missing Black units.
The solution continues on the next page.
Click here
to setup the position after part (b) 0... Ka6xPb6 -1. a5xb6ep b7-b5 -2. e2xRf3
On the previous page, we determined that the white pawns captured all the missing Black units except for the two original bishops.
Among these missing Black units is the Black pawn originally from h7. How did it get captured?
Here we come to another important principle in retros: If a pawn is missing, it could have either been captured
or it could have promoted. (The promoted piece could have been captured later, or some original piece
could have been captured, and the promoted piece replaced it.) Suppose the Black pawn from h7 was captured by a White pawn. The rightmost
capture by a White pawn was on the e-file, so the Black h-pawn would have to make 3 captures get to the e-file.
Now White has 13 units on the board, so there seems to be no problem with these 3 captures.
But we must not forget about the cage in the lower right hand corner! The White rook originally from h1 was captured
on either g1 or h1, and could not be one of the captures that the Black h-pawn used to get from the h-file to the e-file,
so that makes a fourth capture by Black, which is one too many.
The remaining possibility is that the Black pawn on h7 promoted. It takes at least 3 captures for this pawn to promote,
one of which had to be in the lower right cage (g1/h1). Since only 3 captures are available, the Black h-pawn must have
captured f2xRg1 at some point in the game. So a Black pawn occupied f2 at some point in the game.
The White king was not on e1 when Black played f2xRg1, since the pawn would have checked the king. Therefore, the
White king has moved earlier in the game, and White cannot castle.
To answer part (c), note that if we remove the White unit from h3, then White is missing 4 units so that there is no
problem with the h-pawn making 3 captures to get to the e-file to be captured. The White rook on was captured on g1 or
h1 separately. So in this case, White can castle. (Technically, for completeness, we must give a legal game leading
to this position in which neither the king nor rook has moved. We leave this to the reader.)
This is the last problem in the tutorial. On the next page, we list some resources for finding more on retro problems.
Conclusion
There’s a lot more to the world of retros than was presented in this brief tutorial. An excellent starting point for more retro problems is
the
Retrograde Analysis Corner, originally created by Philippe Schnoebelen
and currently maintained jointly by Joost de Heer and Otto Janko. This collection of web pages contains an enormous collection
of retro problems.
There is also a mailing list for discussing retro problems. For instructions on subscribing to this
mailing list, see the Retrograde Analysis Corner.
Finally, if you prefer books, there are two books by Raymond Smullyan that are
excellent introductions to retro problems:
The Chess Mysteries of Sherlock Holmes and
The Chess Mysteries of the Arabian Knights. Additional information on books, journals, and articles related to
retrograde analysis can be found at the Retrograde Analysis Corner.
This concludes the tutorial.


The first box will remove the Safelinks protection from URLs that begin with "https://gcc01.safelinks.protection.outlook.com/?url=".
Copy and paste a safelink into the box and click Decode which will provide you with a Proofpoint URL.
The second box will decode URLs that start with "https://urldefense.proofpoint.com/v2/url?u=".
Copy and paste the decoded link from Step 1 into the box and click Decode, giving you with the original link.


Hi, {{ list.name_person }}
Change your form here
{% csrf_token %}
Name
Organisation Name
Industry Name
Date Of Visit
Slot Time
Visiting Members
Street Name
City Name
Pincode


My Team
Greg
Manager
ID: 1
Email:
<EMAIL_ADDRESS>Office Number: 1
Geoff
Engineer
ID: 2
Email:
<EMAIL_ADDRESS>GitHub:
weingeoffrey
Cody
Engineer
ID: 3
Email:
<EMAIL_ADDRESS>GitHub:
codyengineer
Jeremy
Intern
ID: 4
Email:
<EMAIL_ADDRESS>School: jeremyintern


--- layout: post title: ! 'Rails 2.1.2: Security, other fixes' categories: - releases author: David published: true date: 2008-10-23 18:21:00.000000000 +01:00 ---
Rails 2.1.2 includes the same two security fixes that we pushed out for 2.0.x recently. We’re talking about a backport of the offset/limit sanitization fix for Active Record and a fix against header-injection when using user-contributed strings in redirect_to (see Response Splitting for more information).
In addition, Rails 2.1.2 fixes the warning that users of RubyGems 1.3.0 were having with script/generate as well as a range of other minor fixes. Enjoy!
As always, you can install with:
gem install rails --version 2.1.2


| Total net profit | -35.13 | Gross profit | 3.07 | Gross loss | -38.2 |
| Profit factor | 0.08 | Expected payoff | -0.69 | ||
| Absolute drawdown | -35.13 | Maximal drawdown (%) | 34.74 (-8907.69%) | ||
| Total trades | 51 | Profit trades (% of total) | 6 (11.76%) | Loss trades (% of total) | 45 (88.24%) |
| Long positions (won %) | 46 (13.04%) | Short positions (won %) | 5 (0.0%) | ||
| Largest | profit trade | 1.12 | loss trade | -2.22 | |
| Average | profit trade | 0.51 | loss trade | -0.85 | |
| Minimum | profit trade | 0.08 | loss trade | -0.11 | |
| Maximum | take profit in pips | 650.1 | stop loss in pips | -403.1 | |
| Average | take profit in pips | 57.7 | stop loss in pips | -147.3 | |
| Minimum | take profit in pips | -115.7 | stop loss in pips | -86.2 | |
| Maximum | Reward-Risk | 5.9 | Duration in minutes | 109 | |
| Average | Reward-Risk | 0.6 | Duration in minutes | 5.2 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 0 | |
| Maximum | consecutive wins (profit in money) | 1.0 (1.12) | consecutive losses (loss in money) | 17.0 (-17.08) | |
| Average | consecutive wins | 1.0 | consecutive losses | 6.0 |
| Total net profit | -30.14 | Gross profit | 3.07 | Gross loss | -33.21 |
| Profit factor | 0.09 | Expected payoff | -0.66 | ||
| Absolute drawdown | -30.14 | Maximal drawdown (%) | 29.75 (-7628.21%) | ||
| Total trades | 46 | Profit trades (% of total) | 6 (13.04%) | Loss trades (% of total) | 40 (86.96%) |
| Largest | profit trade | 1.12 | loss trade | -2.22 | |
| Average | profit trade | 0.51 | loss trade | -0.83 | |
| Minimum | profit trade | 0.08 | loss trade | -0.11 | |
| Maximum | take profit in pips | 650.1 | stop loss in pips | -403.1 | |
| Average | take profit in pips | 63.9 | stop loss in pips | -145.5 | |
| Minimum | take profit in pips | -115.7 | stop loss in pips | -86.2 | |
| Maximum | Reward-Risk | 5.9 | Duration in minutes | 109.0 | |
| Average | Reward-Risk | 0.6 | Duration in minutes | 5.7 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 0.0 | |
| Maximum | consecutive wins (profit in money) | 1.0 (1.12) | consecutive losses (loss in money) | 15.0 (-15.08) | |
| Average | consecutive wins | 1.0 | consecutive losses | 5.0 |
| Total net profit | -4.99 | Gross profit | 0.0 | Gross loss | -4.99 |
| Profit factor | 0.0 | Expected payoff | -1.0 | ||
| Absolute drawdown | -4.99 | Maximal drawdown (%) | 3.9 (-357.8%) | ||
| Total trades | 5 | Profit trades (% of total) | 0 (0.0%) | Loss trades (% of total) | 5 (100.0%) |
| Largest | profit trade | 0.0 | loss trade | -1.38 | |
| Average | profit trade | 0.0 | loss trade | -1.0 | |
| Minimum | profit trade | 0.0 | loss trade | -0.52 | |
| Maximum | take profit in pips | 67.6 | stop loss in pips | -224.5 | |
| Average | take profit in pips | 0.6 | stop loss in pips | -164.2 | |
| Minimum | take profit in pips | -76.9 | stop loss in pips | -130.7 | |
| Maximum | Reward-Risk | 0.5 | Duration in minutes | 2.0 | |
| Average | Reward-Risk | 0.2 | Duration in minutes | 0.8 | |
| Minimum | Reward-Risk | Duration in minutes | 0.0 | ||
| Maximum | consecutive wins (profit in money) | 0.0 (0.0) | consecutive losses (loss in money) | 5.0 (-4.99) | |
| Average | consecutive wins | 0.0 | consecutive losses | 5.0 |


Includes binning categorical variables into lesser number of categories based on t-test, converting categorical variables into continuous features using the mean of the response variable for the respective categories, understanding the relationship between the response variable and predictor variables using data transformations.
| Version: | 1.1 |
| Depends: | R (≥ 3.0.1), ggplot2, gplots, RColorBrewer, igraph, stats, grDevices |
| Suggests: | datasets |
| Published: | 2015-10-31 |
| Author: | Navin Loganathan [aut], Mohan Manivannan [aut], Santhosh Sasanapuri [aut, cre], LatentView Analytics [ctb] |
| Maintainer: | Santhosh Sasanapuri <santhosh458 at gmail.com> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | no |
| CRAN checks: | corkscrew results |
| Reference manual: | corkscrew.pdf |
| Package source: | corkscrew_1.1.tar.gz |
| Windows binaries: | r-devel: corkscrew_1.1.zip, r-release: corkscrew_1.1.zip, r-oldrel: corkscrew_1.1.zip |
| OS X binaries: | r-release: corkscrew_1.1.tgz, r-oldrel: corkscrew_1.1.tgz |
Please use the canonical form https://CRAN.R-project.org/package=corkscrew to link to this page.


--- layout: slides title: "On representing uncertainty to predict the future." category: hidden type: course semester: Fall 2020 college: Stevens Institute of Technology permalink: /thought-and-behavior/future/ --- # On representing uncertainty to predict the future. ??? --- class: center, middle, statement, dark < recap > --- class: center, middle, statement, dark This course is on computational models of thought and behavior. --- class: center, middle, statement, dark The mind faces many maddeningly hard engineering problems. Pinker's Robot Challenge reveals some. --- class: center, middle, statement, dark To approximately solve them, the mind uses an arsenal of {mental organs, faculties, subsystems, modules, neural networks, machinery, gizmos, widgets}. --- class: center, middle, statement, dark Once identified, the trick is to then reverse engineer the mind's approximate solution to that problem. --- class: center, middle, statement, dark Each problem/solution can be analyzed using Marr's levels-of-analysis framework: computational, representational/algorithmic, implementation. --- class: center, middle, statement, dark recap > --- class: center, middle, statement Predicting the future --- # Goal for today. --- # The delta _t_ argument, problem statement - The current time is _t_now. - Events have a beginning, _t_begin, and an end, _t_end. - We know _t_now and _t_begin, but not _t_end. - Our goal is to predict _t_end. --- # The delta _t_ argument, setup - By the Copernican principle, there's no reason to believe we are special… - …i.e., _t_now could be anywhere in the interval _t_begin to _t_end. - We can formalize that uncertainty as a uniform distribution over the interval.


GSC 18
From Genomic Standards Consortium wiki
The 18th Genomic Standards Consortium meeting
|
On this page: |
The GSC 18 Workshop
The 18th Workshop of the Genomic Standards Consortium (GSC)
Dates: June 12-15, 2016
GSC Organizers: Lynn Schriml, Georgios Kotoulas, Nikos Kyrpides, Frank-Oliver Gloeckner, Folker Meyer, Pelin Yilmaz
Local Organizers: Evangelos Pafilis, Melina Stavroulaki, Georgios Kotoulas, Antonios Magoulas
Theme: Coordinating Metadata Standards and “putting the standards into action”
GSC18 Talks are available via hyperlinks in the interactive Agenda
Satellite Workshop
GSC-18 Sampling Day: Crete Island Sampling Day Please see the GSC Island Sampling Day page for further details.
GSC 18 Sessions
GSC 18 will include 9 sessions. Each session will have a working group which would meet during the workshop and the chair of each session will summarise the conclusions of the working group during the workshop. Workshop participants are encouraged to sign their names on the sessions they are interested in participating in the GSC 18 Sessions Sign-Up sheet
Session Topics
- Standards: Global to Local
- Pathogen, Plant, UNEP standards
- Air, Sea and Soil Monitoring Projects
- Microbial Ecology of Greece
- Marine Biodiversity, Ocean Sampling
- Subway, Soil Microbiomes
- Nagoya Protocol, Ethics, and Standards
- Outreach and Education
Keynote Speakers
- Arianna Broggiato: TThe Nagoya Protocol: sampling and research in compliance with new legislations - what scientists have to do
- Sumir Panji: Standards Initiatives in H3ABioNet
- Phil Hugenholtz: Genomic Taxonomy, from Genus to Domain.
- Christos Ouzounis: Microbial Ecology in Greece and Bioinformatics
- Daniele Daffonchio: Ecology of microbial hydrocarbon degraders in the oceans
Confirmed Speakers
- Pier Buttigieg, AWI, DE
- Chelsea Carey, UCR, US
- Simon Claus, VLIZ, BE
- Guy Cochrane, EBI, UK
- Jim Cole, MSU, US
- Neil Davies, UCB, US
- Danilo Ercolini, Uni Naples, IT
- Antonio Fernandez-Guerra, MM-MPI, DE
- Rob Finn, EBI, UK
- Folker Meyer, ANL, US
- George Garrity, SIGS, US
- Panagiotis Gkorezis, UHASSELT, BE
- Frank Oliver Glöckner, MM-MPI, DE
- Phillip Goldstein, Uni Colorado, US
- Pantelis Katharios, HCMR, GR
- Wiebe Kooistra, SZN, IT
- Georgios Kotoulas, HCMR, GR
- Renzo Kottmann, MM-MPI, DE
- Nikos Kyrpides, JGI, US
- Manolis Ladoukakis, Uni Crete, GR
- Manolis Mandalakis, HCMR, GR
- Dimitra Manou, AUTH, GR
- Ilene Mizrachi, NCBI, US
- Claire Nedellec, INRA, FR
- Nikolaos Nikolaidis, TUC, GR
- Anastasis Oulas, HCMR, GR
- Evangelos Pafilis, HCMR, GR
- Donovan Parks, ACE, AU
- Pavlos Pavlidis, ICS FORTH, GR
- Lynn Schriml, UMB, US
- Petra ten Hoopen, EBI, UK
- Scott Tighe, Uni Vermont, US
- Nicolas Tsesmetzis, Shell, UK
- Georgios Tsiamis, Uni Patras, GR
- Pelin Yilmaz, MM-MPI, DE
Agenda
The detailed GSC-18 agenda workshop can be found here (Media:GSC18_agenda.pdf)
A single page schedule overview is also available here (Media:GSC18_agenda_overview.pdf)
Logistics
Venue
The Institute of Marine Biology Biotechnolocy and Aquaculture (IMBBC) is based on the premises of the Hellenic Center for Marine Research in Crete, Greece. It located 200m from the sea, and 15km away from Heraklion’s “Kazantakis” Interanational Airport, right next to the CretAquarium.
For more information please view this HCMR Area Google map.
Registration
To register online please visit the GSC18 registration web site.
The early registration fee is 350 USD (deadline: 15th April 2016),
the late registration fee is 500 USD.
Note: Registration will close on May 1st 2016
An early registration fee of 100 USD for local participants (Crete residents) applies
(deadline: 15th April 2016). The late registration fee (16th April to 1st May) for local participants is 350 USD.
Note: a discount code is required upon the registration of local participants,
please contact pafilis_at_hcmr.gr to this end.
Accommodation
A bulk booking has been made at the Astir Beach Hotel (1.6km/1mi away), please quote HCMRGSC18 for a price offer of 50 Euros/night (single room with breakfast) or 60 Euros/night (double room with breakfast) (map). The offer applies to bookings made by 15th April 2016. A direct link to the hotel's reservation form is available here. An offer of is also available.
Klio Apartments, Best Western 'Your Memories' Hotel, Kri Kri Village Holiday Apartments, and Golden Bay Hotel are also within walking distance from HCMR.
Map: All the above are shown in the HCMR Area, Hotels, Restaurants and Means of Transport Google Map
Air Travel and Ground Transportation
Airports
- International Airport “Eleftherios Venizelos” (ATH)
- Heraklion Airport “Nikos Kazantzakis” (HER)
- information on direct flights to Heraklion Airport is available at: http://info.flightmapper.net/airport/HER
- Chania Crete International airport “Ioannis Daskalogiannis” (CHQ) (RyanAir flights possible, NB: 165 km, away, it might be worth considering hiring a car, as public transport is not convenient. Cars can be booked online and picked-up at the airport.
- To search for direct flights see: http://info.flightmapper.net/airport/CHQ
- Google flights: please search using the previously mentioned three-letter airport codes: ATH, HER, CHQ
Bus
Long distance buses operate regularly (ie every 30 minutes to 1 hour) on the route between Heraklion and HCMR. A bus stop to HCMR is situated on the south-west side of the airport. For more information please see the HCMR Area, Hotels, Restaurants and Means of Transport Google Map and the bus timetable from Heraklion to Agios Nikolaos and back. The bus company web site is available here.
Taxi from Heraklion Airport to HCMR
There are always many taxis at the airport. Alternatively, you can book a taxi online at http://www.taxi-crete.gr/book-taxi-crete (contact tel.: +30 6937 333 730). When making your booking, you must mention the phrase "ELKETHE - HCMR" (our research center) and your destination (e.g. Hotel Astir). This will get you a special discount fare of 25 euros from the airport to the ΗCMR or the Hotel (including taxes and airport & luggage charges). After filling in the online form, you should receive a confirmation e-mail within 2-10 hours, with all required information. All taxi-cars are Mercedes with English-speaking drivers.
Taxi from HCMR to Heraklion Airport
A taxi stand is situated right outside HCMR. In addition to http://www.taxi-crete.gr (+30 6937 33 3730 ) described above, Mr Vangelis Kalikakis can also be contacted at (+30 6980 82 3019, +30 6945 68 1694) and a local taxi company +30 28970 41343. The waiting period in front of the HCMR main entrance is 10 to 15 minutes and rides to Heraklion can cost around 25 to 30 Euros.
Internet Connection
Wireless internet access is available at the congress venue. Please ask for a password at the registration desk/secretariat.
Meals
Meals and light snacks/coffee breaks will be provided on-site (HCMR and CretAquarium buildings). For other restaurants in the area please visit the: HCMR Area, Hotels, Restaurants and Means of Transport Google Map. A reception and a workshop dinner will be provided.
Visa
A complete listing of a countries requiring a visa is available at the Greek Ministry of Affairs. Standard visa requirements for visiting a Schengen (EU except UK) country apply. You may be exempt from the airport transit visa requirement, if you:
- hold a valid or residence permit issued by a Schengen state;
- hold a visa valid for a Member State of the European Union or the European Economic Area, Canada, Japan or the United States ;
- hold a valid residence permit issued by a Member State of the European Union or the European Economic Area ;
- hold a residence permit issued by the Principality of Andorra, Canada, Japan, Republic of San Marino, or the United States, that guarantees unrestricted right of return;
- are a family member of a citizen of the EU, EEA or Switzerland ;
- hold a diplomatic passport
For more information please please see the source web page: http://ec.europa.eu/dgs/home-affairs/what-we-do/policies/borders-and-visas/visa-policy/apply_for_a_visa/index_en.htm http://www.mfa.gr/en/visas/visas-for-foreigners-traveling-to-greece/ For visa invitation letter requests please contact pafilis at hcmr gr
Currency and Credit Cards
Euro is Greece's currency. Major credit cards are widely accepted. However, as smaller taverns or restaurants, taxi, buses may operate as cash-only, it is advisable that you have some Euros with you upon arrival.
June's 2015 cash withdrawal limit from ATMs applies to Greek bank account holders only. Greece's visitors can withdraw the regular amount of cash their banks allows them to when they are travelling abroad.


Back to the future
How automation makes things simpler again
Maciek Palmowski
The simple times
Now
Dependency managment
Code Quality
CSS
Task Runners
Testing
Automate with Buddy
Connect with GIT
Create pipelines
Fill with actions
Create you own server
Focus on the fun part


Boost Formal Review Process
Before Requesting a Formal Review
Read and follow the Boost submission process. There are several steps a library author must take before a formal review is requested.
- Introduction
- What to include in Review Comments
- Results
- Notes for Review Managers
- Notes for Library Submitters
- Library Maintainer's Rights and Responsibilities
- Review Wizard
- Fast Track Reviews
Introduction
Proposed libraries are accepted into Boost only after undergoing a formal review, where Boost mailing list members comment on their evaluation of the library.
The final "accept" or "reject" decision is made by the Review Manager, based on the review comments received from boost mailing list members.
Boost mailing list members are encouraged to submit Formal Review comments:
- Publicly on the mailing list.
- Privately to the Review Manager.
Private comments to a library submitter may be helpful to her or him, but won't help the Review Manager reach a decision, so the other forms are preferred.
The review period will normally last for 10 days.
What to include in Review Comments
Your comments may be brief or lengthy, but the Review Manager needs your evaluation of the library. If you identify problems along the way, please note if they are minor, serious, or showstoppers.
The goal of a Boost library review is to improve the library through constructive criticism, and at the end a decision must be made: is the library good enough at this point to accept into Boost? If not, we hope to have provided enough constructive criticism for it to be improved and accepted at a later time. The Serialization library is a good example of how constructive criticism resulted in revisions resulting in an excellent library that was accepted in its second review.
Here are some questions you might want to answer in your review:
- What is your evaluation of the design?
- What is your evaluation of the implementation?
- What is your evaluation of the documentation?
- What is your evaluation of the potential usefulness of the library?
- Did you try to use the library? With what compiler? Did you have any problems?
- How much effort did you put into your evaluation? A glance? A quick reading? In-depth study?
- Are you knowledgeable about the problem domain?
And finally, every review should answer this question:
- Do you think the library should be accepted as a Boost library? Be sure to say this explicitly so that your other comments don't obscure your overall opinion.
Many reviews include questions for library authors. Authors are interested in defending their library against your criticisms; otherwise, they would not have brought their library up for review. If you don't get a response to your question quickly, be patient; if it takes too long or you don't get an answer you feel is sufficient, ask again or try to rephrase the question. Do remember that English is not the native language for many Boosters, and that can cause misunderstandings.
E-mail is a poor communication medium, and even if messages rarely get lost in transmission, they often get drowned in the deluge of other messages. Don't assume that an unanswered message means you're being ignored. Given constructively, criticism will be taken better and have more positive effects, and you'll get the answers you want.
Results
Within a reasonable time after the conclusion of the comment period, the Review Manager will post a message to the mailing list saying if the library has been accepted or rejected. A rationale is also helpful, but its extent is up to the Review Manager. If there are suggestions, or conditions that must be met before final inclusion, they should be stated. Concerns about the timeliness or quality of the review report should be brought to the Review Wizards off-list.
Notes for Review Managers
Before a library can be scheduled for formal review, an active boost member not connected with the library submission must volunteer to be the "Review Manager" for the library. Members may contact a library author on- or off-list to express interest in managing the review. The library author has to accept a person as a review manager.
The Review Manager:
- Checks the submission to make sure it really is complete enough to warrant formal review. See the Boost Library Requirements and Guidelines. If necessary, work with the submitter to verify the code compiles and runs correctly on several compilers and platforms.
- Finalizes the schedule with the Review Wizard and the submitter.
- Posts a notice of the review schedule on both the regular
boost mailing list and the
boost-announce mailing list.
- The notice should include a brief description of the library and what it does, to let readers know if the library is one they are interested in reviewing.
- If the library is known to fail with certain compilers, please mention them in the review notice so reviewers with those compilers won't waste time diagnosing known problems.
- It is advised to send the notice to each mailing list in a separate e-mail, otherwise online e-mail to news gateways could get confused.
- Inspects the Boost library catalogue for libraries which may interact with the new submission. These potential interactions should be pointed out in the review announcement, and the author(s) of these libraries should be privately notified and urged to participate in the review.
- Urges people to do reviews if they aren't forthcoming.
- Follows review discussions regarding the library, moderating or answering questions as needed.
- Asks the review wizard for permission to extend the review schedule if it appears that too few reviews will be submitted during the review period.
- Decides if there is consensus to accept the library and if there are any conditions attached. Consensus is not the same as a vote. The Review Manager has discretion to weigh opinions based on authority or thoughtfulness.
- Posts a notice of the review results on the regular boost mailing list, the boost-users mailing list, and the boost-announce mailing list.
In other words, it is the Review Manager's responsibility to make sure the review process works smoothly.
Although the review manager is also allowed to review the library, they are expected to serve the interests of the Boost users. Since the review manager may have a (strong) opinion about the library, it is recommended as a matter of principle they do not share their opinion until the very end of the review. Possibly, until the summary of reviews. The review manager will make the final choice and announcing an opinion early in the process could negatively affect the review process.
⚠ In order to avoid any conflicts of interest a potential review manager is expected to disclose to the Boost Community if they have any relationship to the author of the library or the library itself.
Notes for Library Submitters
See Submission Process for a description of the steps a library developer goes through to get a library accepted by Boost.
First, the library author should accept a review manager. If they feel, for whatever reason, a candidate for a review manager is not competent or fair, they should not accept such candidate.
A proposed library should remain stable during the review period; it will just confuse and irritate reviewers if there are numerous changes. It is, however, useful to upload fixes for serious bugs right away, particularly those which prevent reviewers from fully evaluating the library. Post a notice of such fixes on the mailing list.
Library improvements suggested by reviewers should normally be held until after the completion of review period. If the suggested changes might affect the reviewer's judgments, post a notice of the pending change on the mailing list.
Library Maintainer's Rights and Responsibilities
By submitting a library to boost, you accept responsibility for maintaining your library or finding a qualified volunteer to serve as maintainer. You must be willing to put your library and documentation under a Boost-compatible license.
You will be expected to respond to reasonable bug reports and questions on time and to participate as needed in discussions of your library on the boost mailing lists.
You are free to change your library in any way you wish, and you are encouraged to actively make improvements. However, peer review is an important part of the Boost process and as such you are also encouraged to get feedback from the boost community before making substantial changes to the interface of an accepted library.
If at some point you no longer wish to serve as maintainer of your library, it is your responsibility to make this known to the boost community and to find another individual to take your place.
Libraries which have been abandoned will be put in care of the Community Maintenance Team.
Review Wizards
The Review Wizards coordinate the formal review schedule:
- When a formal review is requested for a library:
- Approve the review manager based on initial acceptance by the library submitter, their participation in the Boost community, including the mailing list, previous reviews, and other forums.
- Suggest a schedule, after checking (via private email) the availability of the review manager and library author.
- Finalize the schedule, once the review manager verifies the library is ready for review.
- Resolve schedule slips or other issues with review managers and submitters.
- Maintains a schedule of both past and pending reviews, in the form of the Review Schedule web page.
- Resolves questions from review managers and library submitters, who sometimes want a third opinion on questions such as "Should we extend the review period because ...?"
- Monitors the general review process, and makes minor adjustments as needed, or queries the list about possible major adjustments.
The role of Boost Review Wizard is currently played by:
- Mateusz Loskot (mateusz at loskot dot net)
- John Phillips (johnphillipsithaca at gmail dot com)
Past Review Wizards (we thank you for your service):
- Ronald Garcia
- Tom Brinkman
- Thomas Witt
Fast Track Reviews
To qualify for fast track review:
- The component must be small.
- The technique must be already in use in Boost libraries and the new component provides a common implementation.
- A full Boost-conformant implementation is available in the sandbox.
- The Review Wizard determines that the proposal qualifies for fast track review.
Procedure:
- The Boost Review Wizard posts a review announcement to the main Boost developer's list. The fast track review period will normally last for 5 days. No two fast-track reviews will run in parallel. Fast track reviews may run during full reviews, though generally, this is to be avoided.
- After the review period ends, the submitter will post a review summary containing proposed changes to the reviewed implementation.
- The Review Wizard will accept or reject the proposed library and proposed changes.
- After applying the proposed changes, the component is checked into the repository like any other library.
Mini-Reviews
If a review results in conditions on acceptance, the review manager may request a Mini-Review to determine if the conditions have been met. The Mini-Review is usually conducted by the same review manager.


Lesson 1: Introduction to Finite Automata
1.2
Deterministic Finite Automata
In the last section, we gained a general intuition about a simple computational model known as a finite automaton. In this lesson, we will explore a specific category of finite state machine, known as the deterministic finite automaton (DFA). The following figure presents a state diagram for a DFA that we will call \( M_1 \). We will be using \( M_1 \) to gain an understanding of the different components that make up a DFA in this section.
A DFA, unlike the general finite automata that we looked at in the last section, solves a pattern matching problem. We can think of the input to a DFA as a string of characters on a piece of tape. The DFA reads each character from the tape exactly once, moving from left to right. Once the DFA has read all of the characters and reaches the end of the string, it responds 'YES' if it accepts the string, and 'NO' if it does not accept the string. All strings that are accepted by the DFA are in the language of the DFA. The DFA is said to recognize the strings in its language.
To decide whether it will accept or reject a string, a DFA will observe the state it is in when it reaches the end of input string. If this state is an accept state, it will accept the string. If not, it will reject the string. We indicate accept states on diagrams using a double circle. In the machine \(M_1\) above, \(q_2\) is an accept state.
To help you understand how a DFA processes an input string to produce an output, step through the example below.
Mini Quiz
The questions below refer to the DFA \(M_1\).


| role | company | period |
|---|---|---|
| C.O.O. Managing Partner |
Viva Group | 2009 - now |
| C.O.O. | NetOne | 2007 - 2008 |
| C.T.O. | Hellas On Line | 1999 - 2007 |
| co-Founder | ComNet | 1996 - 1999 |
| dev, sysadm | not-internet related | 1989 - 1996 |
M.Sc. Telematics (2002)
B.Sc. Computer Science (1991)
firehol.org
first release 2002, latest release 2017
FireHOL is a language to express firewalls.
internet="ppp+"
lan="eth0"
admins="example.firehol.org"
masquerade ${internet}
interface ${lan} home
policy accept
interface ${internet} world
policy drop
protection strong
server ping accept
server smtp accept
server http accept
server ftp accept
server ssh accept src ${admins}
client all accept
router world2home inface ${internet} outface ${lan}
policy reject
protection strong
client all accept
firehol.org
first release 2013, latest release 2017
FireQOS is a language to express traffic shapping.
tcpdump
the contents of any class
interface eth2 world bidirectional rate 100Mbit
class critical commit 2Mbit
client dns
client ntp
class interactive commit 10Mbit
match icmp limit 1Mbit
server ssh
client ssh
class web_server commit 70%
server http
class bulk commit 5Mbit
server smtp
client smtp
server rsync
client rsync
class default
# the rest of the traffic
# ends up, here
iplists.firehol.org
first release 2015, latest release 5 mins ago (it's a bot)
update-ipsets
is a bot to download, process and analyze IPSETs.
It downloads IP Feeds from their maintainers, it processes them to extract IPs, monitors the age of the IPs listed, detects their retention policy and checks how they correlate or overlap
iprange
is a high performance ipsets processor (it applies sets theory operations to IPSETs). It is really very fast!
update-ipsets
generates static JSON files every few minutes. These files are uploaded to the site and are rendered on charts, maps and tables.
“hm... it seems there is nothing to
visualize QoS classes in real-time”
tc ... | awk ... >/run/qos.json
>/run/qos.json
a morning coffee, some news reading,
a few screenshots, and a post.
“Costa, you are at the
hackernews home page!”
Released March 30th, 2016 (1,5 year ago).
Every day:
Every 15 days:
Archived at http://xovel.cn/octoverse/2016/
and https://onepagelove.com/github-octoverse-2016
The background video runs at normal speed,
page scrolling with mouse-wheel,
charts' zooming with SHIFT + mouse-wheel.
More than 30% of the work on netdata, was spent on understanding what each metric monitors, what it means for us (the users) and how it should be presented
These depend on the setup details, but for default setups, the above are true


ENFORCER, THE (director: Bretaigne Windust/Raoul Walsh (uncredited); screenwriter: Martin Rackin; cinematographer: Robert Burks; editor: Fred Allen; cast: Humphrey Bogart (Martin Ferguson), Zero Mostel (Big Babe Lazich), Ted de Corsia (Joseph Rico), Everett Sloane (Albert Mendoza), Roy Roberts (Captain Frank Nelson), Lawrence Tolan (Duke Malloy), King Donovan (Sgt. Whitlow), Patricia Joiner (Teresa Davis/Angela Vetto), Don Beddoe (Thomas O'Hara), Jack Lambert (Zaca, Philadelphia), Susan Cabot (Nina Lombardo), Adelaide Klein (Kirshen), Alan Foster (Shorty), Tito Vuolo 90Tony Vetto); Runtime: 88; Warner Brothers; 1951)
Reviewed by Dennis Schwartz
A fast moving film about crusading Assistant District Attorney Martin Ferguson (Bogart) who goes after a mob that does contract killings. The film is loosely based on the testimony in 1940 of mob informant Abe Reles about an organization in the Brownsville section of Brooklyn that was known as Murder Incorporated. The crime film tells for the first time in film how a mob works and its use of terms such as "contract," "hit,"and "finger man." It is shot in a semi-documentary style and looked more like a crime caper movie than the film noir category most film critics have classified it under.
Ferguson prosecutes mob boss Albert Mendoza for murder. He has only one witness, who is a minor underling in the mob, Joseph Rico, and he's set to testify tomorrow in court. But after attempts on Rico's life, the cowardly mobster tries to escape from the police guarding him and accidently falls to his death from the prison building.
This leaves Ferguson in a bind, as he will now have to let the killer he knows is guilty go loose. He spends the night with his trusted confidante Captain Nelson (Roberts), sifting through all the evidence and tape recordings they have on how Mendoza ran the mob.
The story of Duke Malloy catches Ferguson's interest. He is the mobster who cracks when ordered to do a contract killing on the young woman witness to a murder, and instead she becomes his girlfriend and runs away with him. Through low-level underlings Big Babe and Philadelphia, Ferguson gets a clearer view of why the gang was hired to track both the girl and Duke down.
Ferguson now comes across another murder witness against Mendoza--a young woman. The film ends with Ferguson satisfied that he can now get justice in court.
To make the film more snappy the producers called in Raoul Walsh, though not credited, to shoot some scenes over. His fingerprints are on the finale, where a hired-gunman gets killed in the doorway. But the filmlooks dated.
REVIEWED ON 10/2/2001 GRADE: B-
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
========== X-RAMR-ID: 29753 X-Language: en X-RT-ReviewID: 254039 X-RT-TitleID: 1006648 X-RT-SourceID: 873 X-RT-AuthorID: 1315 X-RT-RatingText: B-
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Configure widget
Warning: This board is hidden!
Reconfigure it and choose another board
Error: This board was renamed!
Reconfigure it and choose the desired board


Considered the newest addition to our menu of electronic services, this section features the different access points that our stakeholders can tap to transact with us online. It includes registration, premium payment and reporting and even locating our offices nationwide.
This section features a variety of comprehensive health care services -from basic primary care to catastrophic packages to provide members and their families with the information they need on benefits and benefits availment. It includes eligibility requirements, coverage, general guidelines for specific diseases and selections criteria among others.
This section features the different membership categories, premium payment, data amendment and other procedures that each type of member must know. We have custom-fit the information to ensure that we address the specific concerns of each of our member types.
We forge partnerships with only the best in the industry to fulfill our mandate of providing all Filipinos with accessible, available, acceptable and affordable health care services that will lead to better health outcomes and improved quality of life


| Authors: | Soren Lassen
Sam Thorogood |
|---|---|
| Version: | 1.0 - May 2009 |
This whitepaper is part of a series. All of the whitepapers can be found on Google Wave Federation Protocol site.
Google Wave is a new communication and collaboration platform based on hosted documents (called waves) supporting concurrent modifications and low-latency updates. This platform enables people to communicate and work together in new, convenient and effective ways. We will offer these benefits to users of http://wave.google.com and we also want to share them with everyone else by making waves an open platform that everybody can share. We welcome others to run wave servers and become wave providers, for themselves or as services for their users, and to "federate" waves, that is, to share waves with each other and with http://wave.google.com. In this way users from different wave providers can communicate and collaborate using shared waves. We are introducing the Google Wave Federation Protocol for federating waves between wave providers on the Internet.
This document gives an overview of how various elements of Google Wave technology -- data model, operational transformation, and client-server protocol -- are used together to run a wave service, and how wave service providers communicate using the Google Wave Federation Protocol with its cryptographic measures to prevent spoofing. All these elements are described in more depth in accompanying documents on this site and the reader is encouraged to consult them for more details. The focus of this document is federation, which involves the server-server wave federation protocol, and does not cover the client-server protocol between the clients and the wave server of a wave provider. Nonetheless, this document is far from an exhaustive account of wave federation. In particular, attachments, groups, contacts, and presence are important elements of wave federation that are not covered herein.
The wave federation protocol enables everyone to become a wave provider and share waves with others. For instance, an organization can operate as a wave provider for its members, an individual can run a wave server as a wave provider for a single user or family members, and an Internet service provider can run a wave service as another Internet service for its users as a supplement to email, IM, ftp, etc. In this model, wave.google.com is one of many wave providers.
A wave provider is identified by its Internet domain name(s).
Wave users have wave addresses which consist of a user name and a wave provider domain in the same form as an email address, namely <username>@<domain>. Wave addresses can also refer to groups, robots, gateways, and other services. A group address refers to a collection of wave addresses, much like an email mailing list. A robot is an automated participant on a wave (see the Robots API). Examples are translation robots and chess game robots. A gateway translates between waves and other communication and sharing protocols such as email and IM. In the remainder we ignore addresses that are services, including robots and gateways; they are treated largely the same as users with respect to federation.
Wave users access all waves through their wave provider. If a wave has participants from different wave providers, their wave providers all maintain a copy of the wave and serve it to their users on the wave. The wave providers share updates to the wave with each other using the wave federation protocol which we describe below. For any given wave user, it is the responsibility of the wave provider for the user's domain to authenticate the user (using cookies and passwords, etc) and perform local access control.
A wave consists of a set of wavelets. When a user has access to a wavelet, that user is called a participant of that wavelet. Each wavelet has a list of participants, and a set of documents that make up its contents. Different wavelets of a wave can have different lists of participants. Copies of a wavelet are shared across all of the wave providers that have at least one participant in that wavelet. Amongst these wave providers, there is a designated wave provider that has the definitive copy of that wavelet. We say that this particular provider is hosting that wavelet.
When a user opens a wave, a view of the wave is retrieved, namely the set of wavelets in the wave that the user is a participant of (directly, or indirectly via group membership). In general, different users have different wave views for a given wave. For example, per-user data for a user in a wave, such as the user's read/unread state for the wave, is stored in a user-data wavelet in the wave with the user as the only participant. The user-data wavelet only appears in this user's wave view. Another example is a private reply within a wave, which is represented as a wavelet with a restricted participant list. The private reply wavelet is only in the wave views of the restricted list of users.
A wave is identified by a globally unique wave id, which is a pair of a domain name and an id string. The domain names the wave provider where the wave originated.
A wavelet has a wavelet id which is unique within its wave. Like a wave id, a wavelet id is a pair of a domain name and an id string. The domain name in the wavelet id plays a special role: It names the wave provider that hosts the wavelet. A wavelet is hosted by the wave provider of the participant who creates the wavelet. The wave provider who hosts a wavelet is responsible both for operational transformation and application of wavelet operations to the wavelet and for sharing the updates with the wave providers of all the wavelet participants, as described in the Wave Servers section below. The updates are wavelet operations and concurrent updates are resolved using operational transformation.
Wavelets in the same wave can be hosted by different wave providers. For example, a user-data wavelet is always hosted by the user's wave provider, regardless of where the rest of the wave is hosted. Indeed, user-data is not federated, i.e., not shared with other wave providers. Another example is a private reply wavelet. A particularly simple instance of this is when all the participants of the private reply are from the same wave provider. Then this wave provider will not share the private reply wavelet with other wave providers, regardless of where the other wavelets in the wave are hosted.
A wave provider operates a wave service on one or more networked servers. The central pieces of the wave service is the wave store, which stores wavelet operations, and the wave server, which resolves wavelet operations by operational transformation and writes and reads wavelet operations to and from the wave store. Typically, the wave service serves waves to users of the wave provider which connect to the wave service frontend (see the Google Wave Data Model and Client-Server Protocol), and we shall assume this in the following description of the wave service architecture. More importantly, for the purpose of federation, the wave service shares waves with participants from other providers by communicating with these wave provider's servers. The wave service uses two components for this, a federation gateway and a federation proxy. They are described in the next section.
A wave provider's wave server serves wave views to local participants, i.e., participants from its domain. As described earlier, copies of a wavelet are distributed to all wave providers that have participants in that wavelet. Copies of a wavelet at a particular provider can either be local or remote. We use the term "local wavelet" and "remote wavelet" to refer to these two types of wavelet copies (in both cases, we are referring to the wavelet copy, and not the wavelet). A wave view can contain both types of wavelet copies simultaneously.
At a particular wave provider, local wavelets are those created at that provider, namely by users who belong to the wavelet provider. The wave server is responsible for processing the wavelet operations submitted to the wavelet by local participants and by remote participants from other wave providers. The wave server performs concurrency control by ordering the submitted wavelet operations relative to each other using operational transformation. It also validates the operations before applying them to a local wavelet.
Remote wavelets are hosted by other wave providers. The wave server maintains cached copies locally and updates them with wavelet operations that it gets from the hosting wave providers. When a local participant submits a wavelet operation to a remote wavelet, the wave server forwards the operation to the wave server of the hosting provider. When the transformed and applied operation is echoed back, it is applied to the cached copy. Read access to local participants is done from the cached copy without a round trip to the hosting wave provider.
Local and remote wavelets are all stored in the wave server's persistent wave store.
We say that a wave provider is "upstream" relative to its local wavelets and that it is "downstream" relative to its remote wavelets.
The wave service uses a federation gateway and a federation proxy component to communicate with other wave providers.
The federation gateway communicates local wavelet operations, i.e., operations on local wavelets: * It pushes new wavelet operations that are applied to a local wavelet to the wave providers of any remote participants. * It satisfies requests for old wavelet operations. * It processes wavelet operations submission requests.
The federation proxy communicates remote wavelet operations and is the component of a wave provider that communicates with the federation gateway of remote providers: * It receives new wavelet operations pushed to it from the wave providers that host the remote wavelets. * It requests old wavelet operations from the hosting wave providers. * It submits wavelet operations to the hosting wave providers.
An upstream wave provider's federation gateway connects to a downstream wave provider's federation proxy to push wavelet operations that are hosted by the upstream wave provider.
The federation protocol has the following mechanisms to make operation delivery from gateway to proxy reliable. The federation gateway maintains (in persistent storage) a queue of outgoing operations for each remote domain. Operations are queued until their receipt is acknowledged by the receiving federation proxy. The federation gateway will continually attempt to establish a connection and reconnect after any connection failures (retrying with exponential backoff). When a connection is established, the federation gateway will send queued operations in order. The receiving federation proxy sends acknowledgements back to the sending federation gateway on a back channel and whenever an acknowledgement is received, the sender dequeues the acknowledged operations.
Example
Consider the case of a wavelet W with wavelet id (acmewave.com, conv+090528), where acmewave.com is a domain and "conv+090528" is an id string (whose structure does not concern us here). The wavelet id dictates that W is hosted by the Acmewave wave provider. Suppose W has a participant<EMAIL_ADDRESS>from another domain federati.com.
All wavelet operations for W, submitted by local and remote participants alike, are transformed, applied to W, stored in the local wave store by the Acmewave wave provider, and then the applied operations are passed to the federation gateway which pushes them to federati.com. The Acmewave gateway does so by establishing a connection to the Federati federation proxy and sending the operations across the connection.
Sometimes the receiver needs to request past operations from the sender. The typical case is when it receives an operation for a wavelet where the receiver does not already posses all preceding operations for the wavelet. (This condition is easily verified because applied operations carry consecutive version numbers.) In this case the receiving federation proxy will connect to the domain that hosts the wavelet and request the past operations that it is missing. (One way that a wave server can develop such a gap in the operation history for a remove wavelet is when no participant from its domain participates in the wavelet, at time t1, and then later, at time t2, a participant from its domain is added to the wavelet. The host federation gateway responds by sending the new AddParticipant operation forwarding all ensuing new operations to the federation proxy, but the latter must itself turn around and request the prior operations.)
In the same way a user can submit operations to a remote wavelet, namely by letting the federation proxy connect to the remote federation proxy and submit the operation to its wave server.
Suppose there is another wavelet hosted by Federati, i.e., the wavelet id domain is federati.com, and this wavelet has a participant which is a user at acmewave.com. Then the Federati gateway and Acmewave gateway will also communicate with each other.
The network protocol between federation gateways and proxies is called the Google Wave Federation Protocol. It is an open extension to the XMPP Internet Messaging protocol. Some of key useful features of XMPP that the wave federation protocol uses are the discovery of IP addresses and ports, using SRV records, and TLS authentication and encryption of connections. See "Google Wave Federation Protocol".
The XMPP transport encrypts operations at a transport level, so it only provides cryptographic security between servers that connect directly to each other. An additional layer of cryptography provides end-to-end authentication between wave providers using cryptographic signatures and certificates, allowing all wavelet providers to verify the properties of the operation. Specifically, a downstream wave provider can verify that the wave provider is not spoofing wavelet operations, namely, it cannot falsely claim (1) that a wavelet operation originated from a user on another wave provider or (2) that it was originated in a different context. This addresses the situation where two users from different, trustworthy wave providers, say love.com and peace.com, are participants of the a wavelet that is hosted on a malicious wave provider evil.com. The protocol requires love.com to sign its user's operations with love.com's certificate and peace.com to sign its user's operations with peace.com's certificate. These signatures travel with the operations and evil.com must host the signatures together with the operations. Furthermore, love.com and peace.com will verify the signatures of all the operations that evil.com forwards. This makes it impossible for evil.com to alter or spoof the content of the messages from the user of love.com which is shared with peace.com, and vice versa. All the signing and verification is done by the wave providers, not the client software of the end users.
The protocol specification requires that wave providers connecting using the federation protocol must authenticate using cryptographically secure TLS mechanisms. Moreover, it is recommended that they use TLS to encrypt the traffic between them. The client-server and federation protocols do not provide end-to-end authentication or encryption between end users. A wave provider should authenticate its end users and encryption of user connections is also recommended. In combination, secure connections between wave services and secure connections between users and their wave services offer a reasonable level of end-to-end security.
Jochen Bekmann, Michael Lancaster, Soren Lassen, David Wang: Google Wave Data Model and Client-Server Protocol
David Wang, Alex Mah: Google Wave Operational Transformation
Daniel Berlin: Google Wave Federation Protocol
Lea Kissner and Ben Laurie: General Verifiable Federation


Data Structures | |
| struct | CSL_CPTS_CONTROL |
| Holds the CPTS control register info. More... | |
Enumerations | |
| enum | CSL_CPTS_TS_OUTPUT_BIT |
| Defines CPTS timestamp output bits. | |
Functions | |
| static void | CSL_CPTS_getCptsVersionInfo (CSL_CPTS_VERSION *pVersionInfo) |
| static Uint32 | CSL_CPTS_isCptsEnabled (void) |
| static void | CSL_CPTS_enableCpts (void) |
| static void | CSL_CPTS_disableCpts (void) |
| static void | CSL_CPTS_getRFTCLKSelectReg (Uint32 *pRefClockSelect) |
| static void | CSL_CPTS_setRFTCLKSelectReg (Uint32 refClockSetVal) |
| static void | CSL_CPTS_getTSEventPushReg (Uint32 *pTSPushVal) |
| static void | CSL_CPTS_setTSEventPushReg (Uint32 tsPushVal) |
| static void | CSL_CPTS_getTSLoadValReg (Uint32 *pTSLoadVal) |
| static void | CSL_CPTS_setTSLoadValReg (Uint32 tsLoadVal) |
| static Uint32 | CSL_CPTS_isRawInterruptStatusBitSet (void) |
| static Uint32 | CSL_CPTS_isMaskedInterruptStatusBitSet (void) |
| static Uint32 | CSL_CPTS_isInterruptEnabled (void) |
| static void | CSL_CPTS_enableInterrupt (void) |
| static void | CSL_CPTS_disableInterrupt (void) |
| static void | CSL_CPTS_popEvent (void) |
| static void | CSL_CPTS_getEventInfo (CSL_CPTS_EVENTINFO *pEventInfo) |
| static void | CSL_CPTS_getCntlReg (CSL_CPTS_CONTROL *pCntlCfg) |
| static void | CSL_CPTS_setCntlReg (CSL_CPTS_CONTROL *pCntlCfg) |
| static void | CSL_CPTS_setTSLoadValReg (Uint32 tsLoadValLo, Uint32 tsLoadValHi) |
| static void | CSL_CPTS_TSEventPush (void) |
| static void | CSL_CPTS_setTSVal (Uint32 tsValLo, Uint32 tsValHi) |
| static void | CSL_CPTS_setTSCompVal (Uint32 tsCompValLo, Uint32 tsCompValHi, Uint32 tsCompLen) |
| static void | CSL_CPTS_setTSCompNudge (Int32 tsCompNudge) |
|
inlinestatic |
============================================================================
CSL_CPTS_disableCpts
Description
This function configures the CPTS control register to disable time sync.
Arguments
None
Return Value
None
Pre Condition
None
Post Condition
None
Writes
CPTS_CONTROL_REG_CPTS_EN=0
Example
CSL_CPTS_disableCpts ();
|
inlinestatic |
============================================================================
CSL_CPTS_disableInterrupt
Description
This function disables the interrupts in Time sync submodule.
Arguments
None
Return Value
None
Pre Condition
None
Post Condition
None
Writes
CPTS_INT_ENABLE_REG_TS_PEND_EN=0
Example
CSL_CPTS_disableInterrupt ();
|
inlinestatic |
============================================================================
CSL_CPTS_enableCpts
Description
This function configures the CPTS control register to enable time sync.
Arguments
None
Return Value
None
Pre Condition
None
Post Condition
None
Writes
CPTS_CONTROL_REG_CPTS_EN=1
Example
CSL_CPTS_enableCpts ();
|
inlinestatic |
============================================================================
CSL_CPTS_enableInterrupt
Description
This function enables the interrupts in Time sync submodule.
Arguments
None
Return Value
None
Pre Condition
None
Post Condition
None
Writes
CPTS_INT_ENABLE_REG_TS_PEND_EN=1
Example
CSL_CPTS_enableInterrupt ();
|
inlinestatic |
============================================================================
CSL_CPTS_getCntllReg
Description
This function retreives the contents of CPTS control register
Arguments
pCntlCfg CSL_CPTS_CONTROL that needs to be populated with contents of CPTS control register. *
Return Value
None
Pre Condition
None
Post Condition
None
Reads
CPTS_CONTROL_REG_CPTS_EN CPTS_CONTROL_REG_INT_TEST CPTS_CONTROL_REG_TS_COMP_POLARITY CPTS_CONTROL_REG_TSTAMP_EN CPTS_CONTROL_REG_SEQUENCE_EN CPTS_CONTROL_REG_MODE CPTS_CONTROL_REG_HW1_TS_PUSH_EN CPTS_CONTROL_REG_HW2_TS_PUSH_EN CPTS_CONTROL_REG_HW3_TS_PUSH_EN CPTS_CONTROL_REG_HW4_TS_PUSH_EN CPTS_CONTROL_REG_HW5_TS_PUSH_EN CPTS_CONTROL_REG_HW6_TS_PUSH_EN CPTS_CONTROL_REG_HW7_TS_PUSH_EN CPTS_CONTROL_REG_HW8_TS_PUSH_EN CPTS_CONTROL_REG_TS_SYNC_SEL
Example
CSL_CPTS_CONTROL cntlCfg; CSL_CPTS_getCntlReg (&cntlCfg);
|
inlinestatic |
============================================================================
CSL_CPTS_getCptsVersionInfo
Description
This function retrieves the CPTS module identification and version information.
Arguments
pVersionInfo CSL_CPTS_VERSION structure that needs to be populated with the version info read from the hardware. *
Return Value
None
Pre Condition
None
Post Condition
None
Reads
CPTS_IDVER_REG_MINOR_VER, CPTS_IDVER_REG_MAJOR_VER, CPTS_IDVER_REG_RTL_VER, CPTS_IDVER_REG_TX_IDENT
Example
CSL_CPTS_VERSION versionInfo; CSL_CPTS_getCptsVersionInfo (&versionInfo);
|
inlinestatic |
============================================================================
CSL_CPTS_getEventInfo
Description
This function retrieves the contents of the Event Low, Event Middle and Event High registers.
Arguments
pEventInfo CSL_CPTS_EVENTINFO structure that needs to be filled with time sync event info read from hardware. *
Return Value
None
Pre Condition
None
Post Condition
None
Reads
CPTS_EVENT_LOW_REG_TIME_STAMP, CPTS_EVENT_MIDDLE_REG_SEQUENCE_ID, CPTS_EVENT_MIDDLE_REG_MESSAGE_TYPE, CPTS_EVENT_MIDDLE_REG_EVENT_TYPE, CPTS_EVENT_MIDDLE_REG_PORT_NUMBER, CPTS_EVENT_HIGH_REG_DOMAIN
Example
CSL_CPTS_EVENTINFO eventInfo; CSL_CPTS_getEventInfo (&eventInfo);
|
inlinestatic |
============================================================================
CSL_CPTS_getRFTCLKSelectReg
Description
This function retrieves the contents of the reference clock select register.
Arguments
pRefClockSelect Reference clock select value read from hardware. *
Return Value
None
Pre Condition
None
Post Condition
None
Reads
CPTS_RFTCLK_SEL_REG_RFTCLK_SEL
Example
Uint32 refClockSelect; CSL_CPTS_getRFTCLKSelectReg (&refClockSelect);
|
inlinestatic |
============================================================================
CSL_CPTS_getTSEventPushReg
Description
This function retrieves the contents of the Time Stamp Event Push register.
Arguments
pTSPushVal Time stamp push value read from hardware. *
Return Value
None
Pre Condition
None
Post Condition
None
Reads
CPTS_TS_PUSH_REG_TS_PUSH
Example
Uint32 tsPushVal; CSL_CPTS_getTSEventPushReg (&tsPushVal);
|
inlinestatic |
============================================================================
CSL_CPTS_getTSLoadValReg
Description
This function retrieves the contents of the Time Stamp Load Value register.
Arguments
pTSLoadVal Time stamp load value read from hardware. *
Return Value
None
Pre Condition
None
Post Condition
None
Reads
CPTS_TS_LOAD_VAL_REG_TS_LOAD_VAL
Example
Uint32 tsLoadVal; CSL_CPTS_getTSLoadValReg (&tsLoadVal);
|
inlinestatic |
============================================================================
CSL_CPTS_isCptsEnabled
Description
This function indicates if time sync is enabled or not.
Arguments
None
Return Value
TRUE CPTS enabled.
FALSE CPTS disabled.
Pre Condition
None
Post Condition
None
Reads
CPTS_CONTROL_REG_CPTS_EN
Example
if (CSL_CPTS_isCptsEnabled () == TRUE) { // CPTS on } else { // CPTS off }
|
inlinestatic |
============================================================================
CSL_CPTS_isInterruptEnabled
Description
This function indicates if Time sync interrupts are enabled.
Arguments
None
Return Value
TRUE Time sync interrupts enabled.
FALSE Time sync interrupts disabled.
Pre Condition
None
Post Condition
None
Reads
CPTS_INT_ENABLE_REG_TS_PEND_EN
Example
if (CSL_CPTS_isInterruptEnabled () == TRUE) { // interrupts enabled } else { // interrupts disabled }
|
inlinestatic |
============================================================================
CSL_CPTS_isMaskedInterruptStatusBitSet
Description
This function checks the Time Sync Interrupt Status Masked Register to determine if there is one or more events in the event FIFO.
Arguments
None
Return Value
TRUE One or more events in FIFO. masked interrupt status bit set.
FALSE No events in FIFO. masked interrupt status bit cleared.
Pre Condition
None
Post Condition
None
Reads
CPTS_INTSTAT_MASKED_REG_TS_PEND
Example
if (CSL_CPTS_isMaskedInterruptStatusBitSet () == TRUE) { // masked interrupt set } else { // masked interrupt bit not set }
|
inlinestatic |
============================================================================
CSL_CPTS_isRawInterruptStatusBitSet
Description
This function checks the Time Sync Raw Pending Interrupt Register to determine if there is one or more events in the event FIFO.
Arguments
None
Return Value
TRUE One or more events in FIFO. Raw interrupt status bit set.
FALSE No events in FIFO. Raw interrupt status bit cleared.
Pre Condition
None
Post Condition
None
Reads
CPTS_INTSTAT_RAW_REG_TS_PEND_RAW
Example
if (CSL_CPTS_isRawInterruptStatusBitSet () == TRUE) { // interrupt set } else { // interrupt bit not set }
|
inlinestatic |
============================================================================
CSL_CPTS_popEvent
Description
This function sets up the Event pop bit in Event pop register. This initiates an event to be popped off the event FIFO. Popping an event discards the event and causes the next event, if any, to be moved to the top of the FIFO ready to be read by software on interrupt.
Arguments
None
Return Value
None
Pre Condition
None
Post Condition
None
Writes
CPTS_EVENT_POP_REG_EVENT_POP=1
Example
CSL_CPTS_popEvent ();
|
inlinestatic |
============================================================================
CSL_CPTS_setCntllReg
Description
This function sets up the contents of CPTS control register
Arguments
pCntlCfg CSL_CPTS_CONTROL contain settings for CPTS control register. *
Return Value
None
Pre Condition
None
Post Condition
None
Writes
CPTS_CONTROL_REG_CPTS_EN CPTS_CONTROL_REG_INT_TEST CPTS_CONTROL_REG_TS_COMP_POLARITY CPTS_CONTROL_REG_TSTAMP_EN CPTS_CONTROL_REG_SEQUENCE_EN CPTS_CONTROL_REG_MODE CPTS_CONTROL_REG_HW1_TS_PUSH_EN CPTS_CONTROL_REG_HW2_TS_PUSH_EN CPTS_CONTROL_REG_HW3_TS_PUSH_EN CPTS_CONTROL_REG_HW4_TS_PUSH_EN CPTS_CONTROL_REG_HW5_TS_PUSH_EN CPTS_CONTROL_REG_HW6_TS_PUSH_EN CPTS_CONTROL_REG_HW7_TS_PUSH_EN CPTS_CONTROL_REG_HW8_TS_PUSH_EN CPTS_CONTROL_REG_TS_SYNC_SEL
Example
CSL_CPTS_CONTROL cntlCfg; CSL_CPTS_setCntlReg (&cntlCfg);
|
inlinestatic |
============================================================================
CSL_CPTS_setRFTCLKSelectReg
Description
This function sets up the reference clock select value. The Reference clock value can be setup only when the CPTS enable bit is cleared in the CPTS control register.
Arguments
refClockSetVal Reference clock select value to configure. *
Return Value
None
Pre Condition
CSL_CPTS_setTimeSyncControlReg () must be called to clear the CPTS enable bit before calling this API.
Post Condition
None
Affects
CPTS_RFTCLK_SEL_REG_RFTCLK_SEL
Example
Uint32 refClockSelect; refClockSelect = 0; CSL_CPTS_setRFTCLKSelectReg (refClockSelect);
|
inlinestatic |
============================================================================
CSL_CPTS_setTSCompNudge
Description
This function sets the Time Stamp Compare Nudge Value to adjust the phase of time compare wave in Toggle mode. This two's complement number is added to the ts_comp_length[23:0] value to increase or decrease the TS_COMP length by the ts_comp_nudge amount. Only a single high or low time is adjusted and the tsCompNudge value is cleared to zero when the nudge has occurred.
Arguments
tsCompNudge Time stamp compare nudge value [-128, 127] * *
Return Value
None
Pre Condition
None.
Post Condition
None
Affects
CPTS_TS_COMP_NUDGE_REG_NUDGE
Example
Int32 tsCompNudge; tsCompNudge = -2; CSL_CPTS_setTSCompNudge (tsCompNudge);
|
inlinestatic |
============================================================================
CSL_CPTS_setTSCompVal
Description
This function sets the Time Stamp Compare Value and triggers the Time Stamp Comparsion operation.
Arguments
tsCompVal Time stamp compare value to be loaded. tsCompLen Length of the TS_COMP output pluse in non-toggle mode Half Period of the TS_COMP wave in toggle mode *
Return Value
None
Pre Condition
None.
Post Condition
None
Affects
CPTS_TS_COMP_LOW_VAL_REG_TS_COMP_VAL
CPTS_TS_COMP_HIGH_VAL_REG_TS_COMP_VAL
CPTS_TS_COMP_LEN_REG_TS_COMP_LENGTH
Example
Uint64 tsCompVal; Uint32 tsCompLen; tsCompVal = 0x3000; tsCompLen = 1000; CSL_CPTS_setTSCompVal (tsCompVal, tsCompLen);
|
inlinestatic |
============================================================================
CSL_CPTS_setTSEventPushReg
Description
This function sets up the contents of the Time Stamp Event Push register.
Arguments
tsPushVal Time stamp push value to configure. *
Return Value
None
Pre Condition
None
Post Condition
None
Affects
CPTS_TS_PUSH_REG_TS_PUSH
Example
Uint32 tsPushVal; tsPushVal = 0; CSL_CPTS_setTSEventPushReg (tsPushVal);
|
inlinestatic |
============================================================================
CSL_CPTS_setTSLoadValReg
Description
This function sets up the Time Stamp Load Value.
Arguments
tsLoadVal Time stamp load value to configure. *
Return Value
None
Pre Condition
None.
Post Condition
None
Affects
CPTS_TS_LOAD_VAL_REG_TS_LOAD_VAL
Example
Uint32 tsLoadVal; tsLoadVal = 0; CSL_CPTS_setTSLoadValReg (tsLoadVal);
|
inlinestatic |
============================================================================
CSL_CPTS_setTSLoadValReg
Description
This function sets up the Time Stamp Load Value.
Arguments
tsLoadVal Time stamp load value to configure. *
Return Value
None
Pre Condition
None.
Post Condition
None
Affects
CPTS_TS_LOAD_VAL_REG_TS_LOAD_VAL
Example
Uint64 tsLoadVal; tsLoadVal = 0; CSL_CPTS_setTSLoadValReg (tsLoadVal);
|
inlinestatic |
============================================================================
CSL_CPTS_setTSVal
Description
This function sets the Time Stamp Value.
Arguments
tsVal Time stamp value to be loaded. *
Return Value
None
Pre Condition
None.
Post Condition
None
Affects
CPTS_TS_LOAD_LOW_VAL_REG_TS_LOAD_VAL
CPTS_TS_LOAD_HIGH_VAL_REG_TS_LOAD_VAL
CPTS_TS_LOAD_EN_REG_TS_LOAD_EN
Example
Uint64 tsVal; tsVal = 0; CSL_CPTS_setTSVal (tsVal);
|
inlinestatic |
============================================================================
CSL_CPTS_TSEventPush
Description
This function writes an 1 to the Time Stamp Event Push register to generate a timestamp event. The time stamp value is the time of the write of this register, not the time of the event read. The time stamp value can then be read on interrupt via the event registers.
Arguments
None
Return Value
None
Pre Condition
None
Post Condition
None
Affects
CPTS_TS_PUSH_REG_TS_PUSH
Example
CSL_CPTS_TSEventPush ();


Wish List
-
Can you think of an analogy to describe HTML, CSS and the DOM? How would you describe it to your non-technical friend?
let s say there is an empty garden,we need to work on. HTML is the rule we follow to define where is what to plant,CSS is the rule we use to make each devided piece looking good, even re-locate the devided piece of the land,just say we could move the land piece by piece. DOM is collection of the every single defined small land we have done at the beginning.
-
What is meant by boxifying design?
Boxifying design is easier to understand how the elements's layout on the page,easy to define the demension,and location.
-
What is the box model?
Box model is about the design and layout,every element considered as a box wrapping the element,it consists of margin,borders,padding,and actual content width.