conj
: conjunct
A conjunct is a relation between two elements that are coordinated. The first conjunct is the head of all following conjuncts. However, any conjunction words (tagged CCONJ) and punctuation in between conjuncts depend on their immediately following conjunct.
       _ _ _ _ 0 _ _ _
Another special case where conj
is used is in the paired adjacent prepositional phrases indicating a span of distance, time, etc., introduced by prepositions such as 由… 到… / jau4 dou3 “from… to…”, 由…


The 200 billion star systems and 400 billion planets of Macroverse will all be produced, down to sub-meter resolution, from a single seed, using advanced procedural generation technology.
On-chain data storage is expensive. The shared Macroverse world will be available to blockchain-based game developers as middleware, allowing more and better games to be brought to market at lower cost.
Players will be able to explore the shared Macroverse world, discovering new places that have never been seen before. A virtual real estate system will allow players to claim and exchange land, planets, and star systems.
Macroverse is a procedurally generated universe, available to be used by blockchain-based games. Rather than paying expensive gas costs to store environment and level data on the blockchain, or spending large amounts of developer effort on custom world generation algorithms, game developers will be able to use Macroverse as a piece of game development middleware, and to find settings for their games by exploring the single, shared Macroverse universe.
Players exploring the Macroverse world will be able to discover, claim, and trade virtual real estate. If you find a particularly compelling star, planet, or geographical feature, you will be able to purchase it and make it yours. Ownership of real estate may confer beneficial effects or advantages in supported games.
Read the WhitepaperMacroverse will be generated by the Macroverse Generator (MG), a system of smart contracts on the Etherum blockchain. When on-chain game logic needs access to information about the game world, it will query the MG for that information. Queries to the MG can also be made by off-chain components of dapps and games, in order to display the game world on a user's local machine.
Players will be able to claim virtual real estate in the Macroverse world by recording their claims with the Macroverse Registry, a smart-contract-based ownership tracking system. Once claimed, players are free to transfer their real estate holders to other players, or even to custom smart contracts. Players own their virtual real estate outright, independent of any centralized entity or game company.
The first phase of Macroverse Generator development, code-named Cannon, has already been completed. The current Macroverse Generator supports the generation of an entire galaxy of distinct, well-characterized stars, suitable for use in large-scale exploration and strategy games. The current Macroverse Registry implementation allows these stars to be claimed by and transferred among players. On the backend, the Macroverse Generator uses novel smart contract technologies, including an advanced random number generator based on reverse Merkle trees and specialized for procedural content generation, and a novel fixed-point math library.
Explore the CodeAccess to the Macroverse Generator will be enabled by an ERC20 token, MRV. A minimum balance in MRV must be held by any account wanting to query the Macroverse Generator, as a sort of software license. MRV tokens will also be put up as deposits by players claiming virtual real estate, to prevent players from claiming more than their fare share of the Macroverse world.
The minimum balance requirement, required to issue queries to the Macroverse Generator and use Macroverse-enabled dapps and games, will begin at 100 MRV. The minimum deposit requirement, which is locked up when a player claims a piece of virtual real estate, will begin at 1000 MRV.
The MRV token will be initially distributed to players in a crowdsale. After the crowdsale, the supply of MRV will be fixed, with the value determined by the market. In order to maintain the value of "1 MRV" in a range convenient for gaming use, the MRV token contract will use adjustable decimal place technology to allow for simple 10-to-1 splits and merges.
The MRV token crowdsale is currently scheduled to commence on July 1st, at 10 AM PST. The crowdsale is currently scheduled to last for approximately 90 days. The crowdsale contract address will be announced shortly before the crowdsale begins. Participants are encouraged to review the crowdsale smart contract code, which controls in all respects over any other terms.
During the crowdsale, 100,000,000 MRV tokens will be available for purchase, at a rate of 5,000 MRV per ETH. Additionally, 5,000 MRV tokens are reserved by Novak Distributed, the Macroverse developer, for internal use. The number of tokens sold will determine the ultimate total supply of the MRV token. No additional MRV tokens will ever be created, and all sales will be final.
Please note that MRV tokens do not grant ownership of or voting rights in the Macroverse project. They do not entitle holders to future returns from the project. They are not a security. There are a number of risks involved in the Macroverse project, including without limitation security risks to the Macroverse smart contracts, the risk that Macroverse development will not be completed, and the risk that the final Macroverse system will not operate as described here. Crowdsale participants assume all of these risks!


Gay suicide rate falls in Denmark and Sweden after legalization of same-sex marriage
by The LocalThe number of suicides among homosexual women and men has dropped by nearly half in Sweden and Denmark since the countries legalised gay marriage, a new study has shown.
The study, a collaboration between researchers at the Danish Institute for Suicide Prevention and Stockholm University, found that the number of suicides in the group had fallen by 46 percent between 1989-2002 and 2003-2016.
"Being married is a protection against suicide," Annette Erlangsen, who led the study at the Institute for Suicide Prevention, told Reuters.
“Legalizing same-sex marriage and other supportive legislative measures - they might actually reduce stigma around sexual minorities.”
READ ALSO:
- Swedish vicar to make history with first gay church marriage in Spain
- Swedish lesbians wed more often than gay men
- Church of Sweden says yes to gay marriage
The dramatic drop in suicide among gay people compared to a drop of 28 percent among heterosexual couples.
The rate of suicide was nonetheless twice as high among same-sex married people than those married to the opposite sex, reflecting a generally higher rate of suicide among LGBT+ people.
"Of course it's positive that the suicide rate has nearly halved, but it remains worryingly high, particularly when one considers that the suicide rate can be higher among those who aren't married," Erlangsen told Denmark's Information newspaper.
Young LGBT+ people are at least three times as likely to attempt to commit suicide compared to hetrosexual young people, according to a 2018 meta-study drawing on research from 10 different countries.
Sweden legalised gay marriage in 2009, with Denmark following after in 2012.
Gay marriage is currently legal in 27 countries around the world, 16 of which are in Europe.
Erlangsen’s study, published in the Journal of Epidemiology and Community Health, followed 28,000 people in same-sex unions over an average of 11 years.
She collaborated with Gunnar Andersson at the Stockholm University Demography Unit, and Charlotte Bjorkenstam at Stockholm's medical unisversity Karolinska Institutet.


By continuing to browse the site you are agreeing to our use of cookies. Review our cookies information for more details.


Asserts a param by executing a regular expression or a custom check on the value. If one of the assertions fails, this route will not match when resolving a route.
new Route('/profile/:id')
.assert(Param.ID, '^\\d+$');
new Route('/profile/:id')
.assert(Param.ID, /^\d+$/i);
new Route('/profile/:id')
.assert(Param.ID, (id) =>
{
return !!UserModel.getById(id);
});
When using the same assertions for multiple routes, you can use Gaia.router.config().assert() to setup default assertions.
Logs a warning when:
TODO: At the moment the assertion is only ran when resolving a route, not when assembling it. TODO: So if you pass a incorrect deeplink value to Gaia.api.goto() and reload the page, the current route will fail to match.
Can either be a string (that will be converted to a RegExp), a RegExp itself, or a custom function that should return a boolean.
When set to true, if the assertion fails it will try to set the default value when available. If there is no default value the route will not match.
Checks if the passed url matches this route. Executes the assertions and optionally sets the default value.
Parses the parameter value from the URL to something you can use in your application, so that you don't have to repeat this in the places you use this value.
// base64 encode and decode your data in the url
new Route('/step1/:data')
.parse(Param.DATA, btoa);
.stringify(Param.DATA, atob);
// parse/stringify the userid from/to an actual User
new Route('/profile/:userId')
.parse(Param.USER_ID, (userId) =>
{
return UserModel.getById(userId);
})
.stringify(Param.USER_ID, (userId) =>
{
return typeof userId === 'object' ? userId.id : userId;
});
The name of the parameter
The function that will be called to parse the value from the URL to a usable value in your application. Use the {stringify} method to configure the code to put that value back in the url.
Provide a spec for assembling the route with provided parameters. This is used when the pattern is a (custom) regular expression.
Stringifies the value passed in goto() to a string that can be used in the URL, so that you don't have to repeat this in the places you provide this value.
// base64 encode and decode your data in the url
new Route('/step1/:data')
.parse(Param.DATA, btoa);
.stringify(Param.DATA, atob);
// parse/stringify the userid from/to an actual User
new Route('/profile/:userId')
.parse(Param.USER_ID, (userId) =>
{
return UserModel.getById(userId);
})
.stringify(Param.USER_ID, (userId) =>
{
return typeof userId === 'object' ? userId.id : userId;
});
The name of the parameter
The function that will be called to stingify the value passed to goto() to a usable value in the url. Use the {parse} method to configure the code to convert the url value back.
Clears the internal regexp so the next time it's needed it will be refreshed
TODO allow for optional groups outside of the param boundary e.g. now it's only possible to make slug optional, but bar should also be omitted when slug is optional: /foo/:id/bar/:slug? Better would be to have a syntax like React Router /foo/:id(/bar/:slug) If we could wrap that in a simple ()? in the regexp, we should be done
Sets a default value for the param. Setting a value also makes the param optional.
new Route('/:locale/home')
.value(Param.LOCALE, 'en_US');
The type of the default value is always a string to match the output of a normal match. You can use parse() to convert a matched param to a different type.
The default value is set after the assert() is executed, so it's your own responsibility that your code can handle a possible different type of value.
The name of the parameter
Sets the default for this parameter
When set to true, it will use this value when assembling the route and no value for this parameter is passed
Generated using TypeDoc
It's nice for a Rout to be standalone, if stuff passed in constructor is all we need. However, there might be some stuff we want to define 'globally' once, like:
Also, if we are going to properly implement child routes, how are we going to manage popups? Could it be as simple as a last step, appending the 'popup tree' as child routes to all 'leafs' in the route tree? No need for appending/copying over properties
How to do child route matching? Normal routes are exact matches (ending with $ in regexp) But parent routes should be 'open ended' because they only have to match the beginning
Parse should supply all matched parameters, also from parents


Anti-nuclear energy
There are 2,000 people are talking about this issue.
back to issue page
Topic 低碳vs.非核家園議題攻防
top
bottom
Reply
Topic
Your point of view


user name:
password:
shopping options:
women
Caps
ethnicwear
tops & t-shirts
jeans & jeggings
men
formals
t-shirts
jeans
kids
ethnicwear
tops & t-shirts
jeans and frocks
payment methods:
cash on delivery
credit
gpay


Create a URL!
Shortlink
Destnation
Submit
Success!
Shortlink successfully created at:
Click to copy shortlink


{% extends "core/base.html" %} {% comment %} to_validate.html games - list of games that is not validated {% endcomment %} {% block title %} List of games to verify {% endblock %} {% block main %} {% if games %}
| ID | Date | Rating change | Player name | Score | Player name | Rating change | Actions | |
|---|---|---|---|---|---|---|---|---|
| {{ game.pk }} | {{ game.date|date:'Y-m-d' }} | ({{ game.elo1 }})→({{ game.newElo1 }}) | {% if game.ended %} {% include "small/player_small.html" with id=game.player1.pk name=game.player1.name color=game.player1_badge only %} {% else %} {% include "small/player_small.html" with id=game.player1.pk name=game.player1.name only %} {% endif %} | {{ game.score1 }} : {{ game.score2 }} | {% if game.ended %} {% include "small/player_small.html" with id=game.player2.pk name=game.player2.name color=game.player2_badge only %} {% else %} {% include "small/player_small.html" with id=game.player2.pk name=game.player2.name only %} {% endif %} | ({{ game.elo2 }})→({{ game.newElo2 }}) | {% if game.ended %}{% endif %} |


Login
Sign in to your account to continue.
Email Address
Password
Lost Password?
Sign in
Not registered?
Create account


--- layout: default title: "Articles" content_class: "sticky" ---
We have a lot to talk about. We would, however, like to know what you in the community would like to learn more about. Let us know in the chatroom or send us an email at<EMAIL_ADDRESS>with your topics in mind. Thanks!
No articles have been written yet! Help us by suggesting a topic!
{% endif %}


Today we're going to explore new web framework which is Django.Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source.
Features
Ridiculously fast.
Django was designed to help developers take applications from concept to completion as quickly as possible.
Reassuringly secure.
Django takes security seriously and helps developers avoid many common security mistakes.
Exceedingly scalable.
Some of the busiest sites on the Web leverage Django’s ability to quickly and flexibly scale.


| 002:215 Khan | : |
They ask you (O Muhammad SAW) what they should spend. Say: Whatever you spend of good must be for parents and kindred and orphans and Al-Masakin (the poor) and the wayfarers, and whatever you do of good deeds, truly, Allah knows it well. |
| 002:215 Maulana | : |
They ask thee as to what they should spend. Say: Whatever wealth you spend, it is for the parents and the near of kin and the orphans and the needy and the wayfarer. And whatever good you do, Allah surely is Knower of it. |
| 002:215 Pickthal | : |
They ask thee, (O Muhammad), what they shall spend. Say: that which ye spend for good (must go) to parents and near kindred and orphans and the needy and the wayfarer. And whatsoever good ye do, lo! Allah is Aware of it. |
| 002:215 Rashad | : |
They ask you about giving: say, "The charity you give shall go to the parents, the relatives, the orphans, the poor, and the traveling alien." Any good you do, GOD is fully aware thereof. |
| 002:215 Sarwar | : |
They ask you what to spend for the cause of God. (Muhammad) tell them that whatever you spend, give it to your parents, the orphans, the destitute, and those who may be in urgent need of money whilst on a journey. Whatever good you do, God certainly is Aware of it. |
| 002:215 Shakir | : |
They ask you as to what they should spend. Say: Whatever wealth you spend, it is for the parents and the near of kin and the orphans and the needy and the wayfarer, and whatever good you do, Allah surely knows it. |
| 002:215 Sherali | : |
They ask thee what they shall spend. Say, 'Whatever of good and abundant wealth you spend should be for parents and near relatives and orphans and the needy and the wayfarer. And whatever good you do, surely ALLAH knows it perfectly well.' |
| 002:215 Yusufali | : |
They ask thee what they should spend (In charity). Say: Whatever ye spend that is good, is for parents and kindred and orphans and those in want and for wayfarers. And whatever ye do that is good, -Allah knoweth it well. |
Concepts/Themes Covered: أركان الإسلام > الزكاة والصدقات Pillars of Islam> Due Alms and Charities الإنسان والعلاقات الأخلاقية > الأخلاق الحميدة > (القِرى (إكرام الضيف Man and The Moral Relations> Good Morals>Hospitability الإنسان والعلاقات الاجتماعية > الأسرة > حق الوالدين Man and The Social Relations>The Family>The Parents' Right الإنسان والعلاقات الاجتماعية > صلة ذوي القربى Man and The Social Relations>Kinship الإنسان والعلاقات الاجتماعية > المجتمع > ابن السبيل Man and The Social Relations>The Society>The Wayfarer الإنسان والعلاقات الاجتماعية > اليتامى > إكرامهم Man and The Social Relations>The Orphans>Honouring Them تنظيم العلاقات المالية > الزكاة Organizing Financial Relationships>Due Alms
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


Class: EZMQ::Client
Overview
Request socket that sends messages and receives replies.
Instance Attribute Summary
Attributes inherited from Socket
#context, #decode, #encode, #socket
Instance Method Summary (collapse)
-
- (Client) initialize(mode = :connect, **options)
constructor
Creates a new Client socket.
-
- (void) request(message = '', **options)
Sends a message and waits to receive a response.
Methods inherited from Socket
#connect, #listen, #receive, #send
Constructor Details
- (Client) initialize(mode = :connect, **options)
Creates a new Client socket.
15 16 17 |
# File 'lib/ezmq/request.rb', line 15 def initialize(mode = :connect, **) super mode, ZMQ::REQ, end |
Instance Method Details
- (void) request(message = '', **options)
This method returns an undefined value.
Sends a message and waits to receive a response.
28 29 30 31 32 33 34 35 |
# File 'lib/ezmq/request.rb', line 28 def request( = '', **) send , if block_given? yield receive else receive end end |


ECMAScript 6, also known as ECMAScript 2015, is the upcoming version of the ECMAScript standard. This standard is targeting ratification in June 2015. ES6 is a significant update to the language, and the first update to the language since ES5 was standardized in 2009. Implementation of these features in major JavaScript engines is underway now.
See the draft ES6 standard for full specification of the ECMAScript 6 language.
The descriptions and code examples on this site are taken from an MIT-licensed project by Luke Hoban and have been modified to provide examples runnable in your browser. All examples are transpiled to ES5 first before being included on each page. If you'd like to see the ES5 version, check out the es5
directory.


HOME
OUR PRODUCT
TEAM
INVEST
LOG IN
Have More Questions?...
Answer some of these questions and we'll be happy to get back to you with more information on what we do and how you can join us.
- The Suono Team
First Name
Last Name
Email
Subscribe to Suono Newsletter
Stay up to date on the latest products, press, and everything else!


Where HAM I?
Waiting for location...
!Maidenhead Location!
Coordinates
!Coordinates!
Maidenhead Coordinates
!Maidenhead Coordinates!
But I'm not there!
!Error message here!
Where are you? (Currently broken)
Just ask my browser!


Integrating Web Content
Integrating Web Content
While Titanium offers the power of using native UI components, sometimes it is necessary to use web content in our apps. For this reason, Titanium has the Ti.UI.WebView component that gives you access to the platform's underlying native webview. With this component you get the full range of HTML/CSS/JS capabilities that the platform has to offer.
While it's highly encouraged to use native UI components whenever possible, there are some situations that are best suited for WebViews, like:
-
Rendering existing HTML/CSS
-
Animation and interaction via the HTML5 <canvas> tag
-
Integrating web-based tools
But be cautious when using WebViews. They are the heaviest of native UI components. They take time to render and can effect the performance of your apps if used too often. This will be discussed in more detail in the WebView Use Cases section of this chapter.
Sections in this chapter
In this section, you'll learn how to use the Ti.UI.WebView component to display and interact with web content in your apps. You'll see how to use both static and dynamic local web content, as well as existing webpages, RSS feeds, and other remote web content.
Communication Between WebViews and Titanium
Here you'll learn how to use Titanium application level events to bidirectionally communicate between Javascript code in WebViews and native Titanium code. This gives you the ability to have web content interact with the native Titanium environment and vice versa.
Finally, you'll explore some common use cases of the Ti.UI.WebView in Titanium apps. You will also further explore why caution must be taken to not overuse these components, particularly when the same result could be achieved with native components. So let's get started: The WebView Component >


|
GAPP Blackboard Login |
|
Please note that your username and password for the DEN Blackboard are not the same as your USC username and password.
|
|
|
|
| |
Welcome to the USC Viterbi School of Engineering's Office of Graduate and Professional Programs online learning portal powered by Blackboard through the Distance Education Network (DEN).
This portal allows students and professional program participants enrolled in a distance learning section to logon and gain access to course materials. Please note this portal address www.uscden.net in case you experience difficulty with the DEN main page you should try access via this portal.
|
|
|
|
| |
| |
|
|
All Blackboard Users
Haven't Received Your Password Yet? If you have not received your password, try using the "Forgot Password?" link found on the login page. Please use all lower-case letters for your first name, last name, and username.
|
|
|
Fall, Spring, Summer Semester Students
Course links for the new semester will appear 2 days before classes start for all enrolled students. Students who enroll after this time can expect the link to courses to take up to 3 days to appear. Course pages will be available for two weeks after final exams, but webcast lectures of courses will not be available after the last day of finals.
|
|
|
System wide announcements:
|
| |
|
|
| |
|
| |
| |
| |
| |
|
© 1997-2012 Blackboard Inc. All Rights Reserved. U.S. Patent No. 7,493,396 and 7,558,853. Additional Patents Pending.


Copyright (c) 2015 - 2016, Tal Kirshboim and Polyjam
All rights reserved.
Polyjam
www.polyjam.de
Tal Kirshboim
<EMAIL_ADDRESS>twitter.com/kirsh300
github.com/tkirshboim
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

Copyright (c) 2002-2014, Chandrasekhar Ramakrishnan / Illposed Software
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of the {organization} nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

Copyright (c) 2012-2013 by Paul S. Hawke, 2001,2005-2013 by Jarno Elonen, 2010 by Konstantinos Togias
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of the NanoHttpd organization nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

Copyright 2009-2014 roboguice committers
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


21
1 Then Job replied in this way:
2 "Listen to what I say, all of you;
that is the only thing that you can do that will comfort me.
3 Be patient with me, and allow me to speak.
Then, after I am finished speaking, you can continue to make fun of me.
4 It is certainly not people against whom I am complaining, but God!
And it is certainly right for me to be impatient!
5 Look at me! Does what you see not cause you to be appalled
and to put your hands over your mouths and say no more?
6 When I think about what has happened to me,
I am frightened and my entire body shakes.
7 But allow me to ask this: 'Why do wicked people continue to live,
and become prosperous, and not die until they are very old?'
8 They see their children around them,
and they watch them while they grow up and start to live in their own houses.
9 Wicked people live in their own houses without being afraid,
and God does not punish them.
10 Their bulls always mate with the cows successfully,
and the cows always give birth to calves and never miscarry.
11 Wicked people send their young children outside to play,
and the children jump around happily like lambs in a pasture.
12 The children sing to the sound of tambourines and lyres,
and they are happy to hear the sound of flutes.
13 Wicked people enjoy having good things all the time that they are alive,
and they die quietly and go down to the place of the dead.
14 While they are alive, they say to God, 'Leave us alone;
we do not care about how you desire us to conduct our lives!
15 Why do you, Almighty God, think that we should serve you?

Everyone dies, so it is clear that dying is not always the punishment for being wicked.
27 Listen, I know what you three are thinking,
and I know the evil things that you plan to do to me.
28 You say, 'What happened to the tents in which wicked people were living?
The houses of evil rulers have been destroyed!'
29 Have you never asked people who travel much?


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


Home
(current)
Search
Sign Up
Username
Email address
We'll never share your email with anyone else.
Password
Select User Type
Select User Type
Manager
Local Passenger
Foreign Passenger
Inspector
Manager's Full Name
Age
Local Passenger's Full Name
Age
Phone
NIC
Select Card Type
Credit Card
Debit Card
Card Number
Foreign Passenger's Full Name
Age
Passport Number
Select Card Type
Credit Card
Debit Card
Card Number
Inspectors's Full Name
Assigned Route
Phone
Register User


| Country | What we found | Helpful stuff |
| Before you start | Take your pet to a vet and get a titer test done for rabies. You must first vaccinate your pet against rabies, and then after one month or more take your pet in for a titer test. This blood work then goes off to Kansas State for the titer test to be done, and it can take a while (one to 3 months) for the results to come back. You will want the results mailed to your vet, and you will need the hard copy of the results to take with you once you leave. This paperwork is the FAVN report. You will also need a microchip for your dog, one accepted internationally, and a rabies certificate, which you will get with the shot. You will also need a "United States Interstate and International Certificate of Health Examination form". Most vets should know this form and be able to fill it out. - Call around and make sure your find a vet that knows the form. There is a spot on the forms for a USDA Vet to stamp the form. We did not have this done - because we did not realize it. If it is not too difficult to get this stamp, you should. Please get your pet inoculated against all common diseases, and make sure you have a stock of medicine for Heartworm and fleas and ticks. We found Triflexis to be a good med for our dogs. We used a tick collar until we got to St. Martin, and then we used Certifect in combination with it for ticks. It would also be a good idea to get some I.D. tags for your dog, with your boat name on it. | |
| The Bahamas | The Bahamas does a
good job, except for on speed.
You need an import permit in advance to take
a pet to the Bahamas. Apply for one
very early, as it will be mailed or faxed to
you for an additional charge. I am
talking like 4 months early. Get a
international money order from a post
office, and send the money order and the
import form to the Bahamas. They will
send back the permit. Take the permit
to a vet, with your pet and get an
international health certificate for the
pet. Have the vet write in as much
information on vaccines and treatments as
you can. MAKE SURE THEY STAMP IT IN
THE USDA VET AREA, OR SIGN IT. Call
and check around to find a vet who is
familiar with the forms and has the
authority to stamp it. The BVI's will
check for this, as will Antigua. In all honesty, I don't know how the Bahamas would ever know if you had an import permit or not. We were never asked, never checked. There are many, many stray dogs all over the Bahamas, so always have your pet leashed. Be aware that dogs as pets, that are not used for guarding is not common in the Bahamas, so expect some people to be afraid of your dog, if it is larger, especially kids and be courteous to this. |
Bahamas Import Application |
| Turks and Caicos | Per noonsite the Turks and Caicos only requires a health certificate and rabies vaccination. There was no where on the form to indicate a pet when we arrived, and no one asked, so we did not say anything. There were many many many stray dogs in the Turks and Caicos - many is very sad shape. | |
| Dominican Republic | I can only speak to checking in and out of the Dominican Republic while we were a guest of the Marina Puerto Bahia in Samana. I was a- little concerned after reading noonsite, but reality was much different. Customs and Immigration and the Navy all came on the boat, after making sure our dog would not attack them - they were all very leery of him. They petted him and that was it. Did not ask for any paperwork or anything. I would think that this is pretty common, and would not hesitate to take a pet to Luperon or Ocean World or Samana. I would not do the south coast of the Dominican Republic for different reasons. | |
| Puerto Rico | We checked in to Puerto Rico in Mayaguez by phone and then in person. On the phone they asked if we had a pet, and we said yes. They asked if we had all the proper paperwork - again we said yes. That was it. Later in person nothing was asked. We were concerned, as per noonsite, the health certificate had to be less than two weeks old, but there was not a vet available for the past two weeks before arriving in Puerto Rico. We have found that most pets arriving on cruising boats are treated much differently than pets arriving by air. | |
| U.S. Virgin Islands | If you are an American citizen, you don't need to check in here if arriving from Puerto Rico, so we didn't. You should visit a vet here and get a new health certificate before going to the B.V.I's - see BVI's. | |
| British Virgin Islands | You must send your
import paperwork into the BVI's in advance.
We used a email/fax service and would email
and fax the paperwork in. You MUST
have your FAVN report to bring a pet into
the BVI's. They will check for this
and the Health Certificate and will make
sure that the Health Certificate is no older
than two weeks. Although we sent
our paperwork 4 days ahead of time, they
remembered seeing it, but did not have it
with them, and they had never sent anything
back to us saying we were approved, so we
had to fill it out again while the vet
waited.
We checked in at West End Tortolla, and
found the vet very nice.
We did not have a health certificate that
was less than two weeks old, and he let us
in anyway. Cost for
dog was $10. Before
leaving the BVI and heading to St. Martin,
we got a new health certificate from the vet
- it cost $10, and took 5 minutes. We
thought we would need this for St. Martin. On the way north it was a totally different story. Since we had faxed the paperwork in ahead of time before and never had a response and we ended up having to fill it in again, we did not send anything in ahead of time, but just took the filled in paperwork with us. We arrived at Gun Creek in Virgin Gorda and were given the phone number of the vet to call for inspection. We arranged the inspection for the next morning. In this inspection everything was fine, except we were charged $50 for a penalty for not having pre-approval to come to the BVI's by faxing the paperwork in ahead of time. This time the vet did not care about the FAVN or health certificate, but only wanted to see the rabies vaccination. I would advise having all the paperwork and faxing or emailing the application in. Clearly there is no consistency in the BVI's so be prepared for anything. Don't expect to hear back, after you send stuff in, but maybe you will get lucky and hear something. Either way, you will pay $10 for check in or $60 for check in and penalty. |
Import form for BVI's - note email is
incorrect on this form Import form and instructions with correct email address |
| Anguilla | We did not stop here. | |
| St. Martin | We checked in in Marigot. There was nothing on the form that asked about pets, and the fellow checking us in did not ask. He saw us standing there with our dog on the leash when he let us in the office and said nothing. | |
| St. Maarten | We did not check in
here, but did get a new Health Certificate
from a vet, and the vet also recommended the
new tick medicine because he knew Antigua
would want that - and he was right. He
gave us a new health certificate and a pet
passport. He also did a stool sample
to make sure the dog was free from internal
parasites, so take one in with you.
Total cost for meds, exam and paperwork was
$166. On the way north we stopped and got a new health certificate for preparation for the BVI's. Cost was $30 |
We used the Animal Hospital of St. Maarten. It is at 1377 Union Road about a .6 mile walk from Island Water World dinghy dock. There phone number is<PHONE_NUMBER> |
| Antigua | We email and faxed our paperwork in ahead of time. We called 48 hours ahead of time as well. They vet was out and the person on the phone said she would make sure he had the paperwork. We faxed it in again. We never got an import permit. We checked in at Jolly Harbor per the Dept. of Agriculture recommendation, they said that it was closest to the vet. When you check in, there is a section on the form for livestock - they consider a pet "livestock". Customs and Immigration will call the vet, he will come to the office to check your paperwork and animal. It is easiest on the vet if you bring your vessel to the dock right by Customs and Immigration and tie up there. We did this and it was great because after clearing in, we walked through the small shopping area, before leaving the dock. The vet will look for your FAVN titer results, when your rabies vaccinations were, he will scan the animal to verify the correct microchip identification matches the paperwork, and will look to make sure the pet as been treated for external and internal parasites. Contrary to the information online, he did not say anything about import paperwork, and he did not care about the health certificate from St. Maarten, or the BVI's, he just wanted to see the one from the United States, which was out of date, but he didn't seem to care. There was a $50 fee for checking in our dog. |
Antigua Import Requirements per website Dept of Agriculture phone: 1-268-7592 or 1-268-1814 fax number is 1-268-460-1759 |
| Guadeloupe | On the Guadeloupe customs form that you fill in on a computer yourself, there was no space for "pets" or "livestock". We did nothing, and walked Sam every day, no one said anything or asked for anything. | |
| Les Saintes | Since we came from Guadeloupe we did not have to check in again. We walked Sam around town a lot, and nothing ever said. | |
| Dominica |
Before coming into Dominica I was worried,
as per their requirements. I emailed
the agriculture dept, using the email posted
here, and in the response I was told that I
would have to have a health certificate from
my last port. Since the last port was
Les Saintes, and I don't speak French and
could not find a vet I was worried.
I explained this via email and Dr. Thomas
who answered my email was very cooperative
and said that they would work with me on
this and to send what paperwork I had.
I emailed in all I had, and had a permit
emailed back to me within 3 days.
Excellent service and very cooperative.
On the permit it said that the animal would
be accompanied by a health certificate
stating that the animal had completed a
quarantine, which of course it had not. (see
sample permit via link on right). When
we arrived in Dominica, there was a spot on
the customs form for a pet, which we
checked, but they did not say anything.
When we went to walk Sam, we were stopped on
the dock by an official and were asked for
our paperwork. We showed them
the import permit and they were not sure, so
they called the boss and asked them and were
told that the stamped permit was all that
was needed. We were also
stopped by a local resident who warned us
about dogs needing paperwork, or they would
be taken. We were told by the PAYS
representative who came to our boat as well.
A park ranger also asked to see the dogs paperwork. That said, people we met on another boat, had no paperwork, but were stopped. A vet was called and an inspection done of the pet - I don't know if they had any support paperwork on rabies and FAVN test, but they paid $50 U.S. and were allowed in. I would recommend getting the permit in advance, as it is free and quite easy. On the way north we applied ahead of time for the permit. We used the health certificate we got before we left Grenada. They wanted us to get one from the last port visited, and we explained we did not speak French and the last port was Martinique. The import permit was given to us anyway. When we arrived we declared the dog on the Customs and Immigration form, and no questions asked, however when we took our dog ashore at the government dock by Customs and Immigration we were stopped and told we need a vet inspection, and were not allowed to bring the dog ashore. Another cruiser had a similar experience while walking the dog in town they were accosted and harassed by a person identifying themselves as a vet technician, who berated them, and then issued them the vet inspection permit, without actually doing any examination or even looking at the pet. They did have a valid import permit as well. I have contacted the Agriculture department regards the experiences and they were once again very concerned and were going to look into the issue. My advice - get the import permit, and when you check in, get customs or immigration to call and get a vet to come inspect your pet. If your are told it is not required, then get the name of the person who told you that, and keep their name, and your import permit with you at all times when you take your dog ashore. |
<EMAIL_ADDRESS>Dominica pet requirements Dominica import permit |
| Martinique | No where on check in is asked about pets. We took dog into town, no hassles, no forms, no fees. | |
| Saint Lucia | We
sent in the paperwork to St. Lucia early and
a stamped import form was sent back, so we
did not bother to get a health certificate
from Martinique. Upon arrival in St.
Lucia, Customs asked if we had seen the vet.
We said that we had a stamped import permit
for St. Lucia. They said, didn't
matter, had to see the vet and called the
vet. We were told to wait at the
dinghy dock for the vet with our dog, and
the vet would arrive at 2:30. It was
hot, so instead of waiting in the dinghy at
the dock, we waited under the shade of a
tree 20' from the head of the dinghy dock.
Customs came by and made sure we did not
take the dog any further, and let us know
that the dog really should not be out of the
dinghy. At 3:45 the vet arrived at the
dinghy dock, and also let us know that the
dog should not be out of the dinghy, but
understood about shade. She wanted the
health certificate from Martinique. We
explained we did not have one. She
checked all the other paperwork, and said we
were OK, because we had the rabies
vaccination paperwork, but should have had
the health certificate from Martinique.
The requirements for import to St. Lucia
states the dog must be given treatment for
parasites 72 hours before arriving in St.
Lucia. We did not do that, since we
did not go to a vet in Martinique, but the
vet in St. Lucia did not even comment on
that. Checking in our dog cost
$45 EC, and the vet did not have change, so
make sure you have the exact amount. On the way north, we did not bother to apply for the permit ahead of time. We should have. When we got there, the vet would not come unless we had the permit. We emailed in the stuff, and the permit was issued same day, then we arranged to meet the vet at 9:00 a.m. in the morning. This time the vet was 45 minutes late. We were inspected, the original of the permit given to us and a reciept. We were asked twice while walking around the marina area for the dogs paperwork by a customs/immigration representative. We took the dog to the dock area by the grocery stores, and walked him there and were never asked for paperwork. |
Requirements for import to St. Lucia St. Lucia email for questions and import permit<EMAIL_ADDRESS>Import permit application Fax number for import permit and questions: 1-758-450-4581 |
| St. Vincent | We did not plan on staying long in St. Vincent, so did not bother checking the dog in. We we spoke to the vet in St. Lucia on check in, she said it was not difficult to do the paperwork for a dog going to St. Vincent, and she had just done one, but we chose not to pursue it. We had read that we would have to take the dog to the south end of St. Vincent for the vet to check the dog, and then go check the boat in elsewhere - don't know as we did not bother. If anyone has current information, please email us and let us know. | |
| Grenada | We
obtained a import permit in advance. On the
permit it does say to have a current health
certificate done within 2 weeks of arriving,
and to notify the Government Veterinary
Official 48 hours before arriving. We did
neither based on other cruisers experience.
We checked in at Carriacou, and checked the
form that we had a dog. Customs and
Immigration did not care, and did not say
anything. We have taken the dog ashore
several times, and nothing has been said.
We took our dog to the St. George's University Small Animal Clinic. They can be reached at<PHONE_NUMBER>.  They said it takes two months, so if you spend hurricane season near Grenada, and plan on going back north through the Caribbean, this is a good place to get your FAVN, titer test done. |
email for Veterinary division is:
<EMAIL_ADDRESS>Import permit application |
| Trinidad and Tobago | We went, but they have very strict laws. We declared the dog at customs and immigration. While at a marina, we took our dog for a short walk onshore only in the fenced haulout yard area, early in the morning. We later anchored by TTSA, and never took the dog ashore. |


Frequently Asked Questions (FAQ)
Installation and access
- Can I install MerMEId on my laptop?
- Is there a simple installation container available?
- Can I use The Royal Danish Library's MerMEId server for our project?
- How many MerMEId installations do I need for my project?
- How do I copy or move my data from one MerMEId instance to another?
- What if some day MerMEId is no longer maintained? Will I lose my data?
- How do I know which MerMEId version is running on my server?
HTML preview and presentation of data
- Can I change the way MerMEId displays my data?
- Can I change the language of the HTML output?
- I have entered information, but MerMEId does not show everything. Why?
- Will MerMEId render any music encoded in my files?
Using the editor
- How do I start a new file collection or catalogue?
- How do I make MerMEId recognize a certain number as a catalogue work number?
- Is there a way to do a 'search and replace' in all of my
files?
Customizing the MerMEId editor
- Can I add fields to the editor form or alter existing ones?
- I don't want MerMEId to create change log entries automatically. Can I turn it off?
- Can I change the pre-defined instrument names, roles or other lists?
- Which standard should I use for instrument codes and names? MARC or UNIMARC? Do I have to use one?
- The authority file I use is not listed. Can I add it?
- How do I make MerMEId recognize other abbreviations?
- How do I change the genre keywords in the 'Keywords' menu?
- What else can be customized?
Publishing
Contact- How do I stay informed about changes and updates?
- How do I get in touch with you if I have other questions?
Installation and access
Can I install MerMEId on my laptop?
In principle, yes. Please note, however, that MerMEId is a web application, not a desktop application. This means that it needs a web server to run; the user interacts with MerMEId through a web browser. It also means that installation requires the skills of a system administrator to set up all the components of the web server. Technically, it is possible to do it on a laptop, but usually that's not advisable, because your installation and your data wouldn't be accessible from any other machine. Also, if your laptop crashes or is stolen, you are likely to lose your data. Installation on a proper web server located at your institution gives you much better data protection, and not least: You will be able to use MerMEId and access your data from any computer that has access to your server. All you need is a web browser.
Is there a simple installation container available?
Not yet. We're working on it.
Can I use The Royal Danish Library's MerMEId server for our project?
Unfortunately no. The Royal Danish Library's demo installation at labs.kb.dk/editor/ is meant for demonstration only. The library cannot host other projects' data. You are welcome, on the other hand, to use the demo installation to try out MerMEId or even to do preliminary work until you have set up your own server. Note, however, that the library does not take any responsibility for any loss of data stored on the demo server. The data at the demo server are freely accessible for anyone to edit or even delete. If you are doing any serious work there, make sure to make local copies of your data frequently (See: How do I copy or move my data from one MerMEId instance to another?). We are also likely to clean up the server by deleting user data every now and then. If there is something you would like us not to delete please let us know.
How many MerMEId installations do I need for my project?
Preferably only one. MerMEId is a web application (See: Can I install MerMEId on my laptop?), and your data will need to be stored on the same server. If you have more than one installation, you will have trouble synchronizing your data across MerMEId intances (probably by copying files back and forth manually).
How do I copy or move my data from one MerMEId instance to another?
To move or copy XML data files from one MerMEId installation to another, download your files to your hard drive first. You can do so one file at a time by right-clicking (on Windows machines) the file's XML icon in the file list and selecting "Save as..." or equivalent. If you need to download many files it will probably be easier to use the eXist database's admin client. You will need to have administrator access to the database in order to use it. You will probably find the adminstration page at http://[yourservername.yourdomain]:8080/exist/. Click the 'Collections' option to open the database's file manager which allows you to download all or some of your files. You will find your files in the 'dcm' folder. Use the same component on another server to upload your data (again, to the 'dcm' folder).
What if some day MerMEId is no longer maintained? Will I lose my data?
No. One of the core ideas of MerMEId is that it produces data compliant to the MEI XML schema – an open, well-documented standard for encoding musical information. Basically, MerMEId is simply a user interface to allow you to produce MEI XML without having to hand-code everything. You can use other tools such as a generic XML editor to do the same, just in a less convenient way. So even without MerMEId, you can still have valid MEI XML data and continue your work using other tools. Just make sure always to keep a copy of your data somewhere safe.
How do I know which MerMEId version is running on my server?
To see the version (revision) number of your installation, open any file in the editor (or create a new one) and click the logo in the lower right corner.
HTML preview and presentation of data
Can I change the way MerMEId displays my data?
Yes, you can. MerMEId's basic MEI-to-HTML XSL style sheet, mei_to_html.xsl, is located in
the eXist database (in db/style/). By modifying it you may alter the way MerMEId displays
your data, or you can make a copy of it to use for your presentation outside of MerMEId. You
may also want to download and/or alter the corresponding CSS style sheet, mei_to_html.css,
found in the same location.
If you want to switch between different transformations,
you can place custom XSL style sheets in the eXist database (in db/style/) and tell MerMEId
which transformation to use by adding a parameter ?xsl=[your xsl file name] to the preview
URL, like: http://www.example.com/storage/present.xq?xsl=your_style_sheet.xsl
Even
though MerMEId can produce HTML to display your data (either by clicking a work's title in
the file list or by clicking the 'View as HTML' icon in the editor), MerMEId does not tell
you how to present your data to the public or in any other context. The built-in HTML
preview is meant for reviewing your data for convenient proofreading etc.
You are
welcome to re-use or alter the XSL style sheet used to create the preview for your public
presentation, but more likely you will want to define your own. There is no forced
connection between the way MerMEIds displays your data and the way your final presentation
does. In the public version of the Catalogue of Carl Nielsen's Works (CNW), we are using a slightly modified version of
MerMEId's HTML preview XSL style sheet to do the basic formatting; we have basically just
filtered out certain information and linked to a different CSS style sheet.
Can I change the language of the HTML output?
MerMEId adds a number of pre-defined labels and phrases (such as 'Performances', 'Sources'
etc.) when generating the HTML page. By default, these are in English. You may temporarily
override the default by adding &language=[language identifier] to the URL of
the HTML preview – for instance, http://labs.kb.dk/storage/present.xq?doc=nielsen_cnw0130.xml&language=de.
Of course changing the language does not affect any text you have entered in the editor. You
can permanently change the HTML view's default language by editing the default_language
variable at the beginning of the mei_to_html.xsl file located in eXist (in the
db/style/ folder). MerMEId currently comes with English (en), German (de) and
Danish (da) translations. These are stored in the db/style/language/ folder in
eXist.
MerMEId does not show some information I have entered. Why?
The built-in HTML preview is designed to display all the information you may enter in the editor, with a few exceptions. Some information is very complex to handle; for instance, only some of the possible relations between sources, versions etc. are pre-defined to have a visible effect in the HTML preview. If you want other relations to have a an effect, you will have to define it in your presentation. Finally, there is definitely a chance that we have simply forgotten to implement a certain feature in the HTML preview because we haven't used it yet. Please let us know if something is missing.
Will MerMEId render any music encoded in my files?
Encoded music may appear in two different places in your MEI files: Incipits encoded in the header, and any music (score) encoded in the MEI file's main music section (the <music> element).
MerMEId comes with a demo file to illustrate different ways of including incipits. Encoded incipits are rendered using the Verovio MEI renderer.
By default, MerMEId also renders any music encoded in the main music part of the document – or at least the beginning of it. This rendering also uses Verovio. You may deactivate it temporarily by adding '&score=false' to the URL of MerMEId's HTML presentation. To turn it off permanently, change the value of the variable 'view_score' to 'false' in the the MEI-to-HTML transformation (the file mei_to_html.xsl). This reverses the behaviour: you may then activate rendering temporarily by adding the parameter '&score=true' to the URL.
Using the editor
How do I start a new file collection or catalogue?
You may have noticed the use of 'Collection' names in MerMEId's file list, for instance, 'MerMEId Demo'. The collection names are intended to enable you to distinguish or select files belonging to a certain catalogue in your database. This makes it possible to have any number of catalogues in the same database. To make your file part of a specific catalogue or collection, open the file in the editor, go to the 'File' tab, and enter the collection name in the field labeled 'File Collection' under 'Series' (and save your work, of course). In the file list, you will now see the collection name in the 'Collection' column, and it will also appear in the collection drop-down list, allowing you to search for files in that collection only.
How do I make MerMEId recognize a certain number as a catalogue work number?
You may have noticed that the demo files in MerMEId's file list are labeled like'MerMEId Demo 3' in the 'Collection' column. To make MerMEId recognize a number as the work's or file's number in your collection (equivalent to the numbers in the BWV, for instance), go to the 'Work' tab, add a work identifier (under 'Identifier'), enter the file collection's name as the list name and the desired number in the 'No.' field. If MerMEId finds a work identifier corresponding to the file collection defined at the 'File' tab, it regards the identifier's number as the catalogue number.
Is there a way to do a 'search and replace' in all of my files?
Yes, but you will need to know how to write an XSLT style sheet to do it. MerMEId provides a script transforming all (or some) of your data. This allows you to do simple text replacements but also complex structural changes. See Batch transforming XML files in the database.
Customizing the MerMEId editor
Can I add fields to the editor form or alter existing ones?
In principle yes, if you know how to write Orbeon XForms. You will find the MerMEId source code at GitHub. You are free to change it to make your customized version of MerMEId. However, note that this will require you to make the same changes again after installing one of our MerMEId updates. Also, MerMEId is based on sharing. No one else will benefit from your changes if you keep them for yourself. Therefore we would like to encourage you to share your improvements either by forking the code at GitHub and submitting a pull request or to discuss your wishes with us; if we agree that the changes will be of general interest, we may be willing to implement them if we have the time. Another possibility is to pay us (that is, the Danish Centre for Music Editing at the Royal Library) to make the desired improvements. That's a great way to support the MerMEId project.
I don't want MerMEId to create change log entries automatically. Can I turn it off?
In MerMEId's configuration file mermeid_configuration.xml there's an option to
turn off the automatic logging of changes.
This is also where you can entirely
deactivate advanced features such as the attribute
editor and the code inspector.
Can I change the pre-defined instrument names and codes?
Yes. If you only want to change the displayed instrument name in a few cases, the simplest way is to manually change the text MerMEId inserts in every instance. The more efficient way – and the only way, if you also want to change the available standard code values – is to change the lists of instrument and ensemble names kept in the eXist database. They are located in a folder named library together with other customizable lists. The instrument and ensemble names are stored in three separate files:
- instruments.xml: A general reference list of individual instrument names and codes
- ensembles.xml: A general reference list of ensemble names and codes
- instrument_groups.xml: A selection of pre-defined ensembles or instrument groups including some instruments
The file instrument_groups.xml is the one populating the menu popping up when clicking an
"Add ensemble" button; it is intended to provide an easy way of entering some fairly standardized
instrumentations quickly. Of course, the elements inserted from the menu can be adjusted afterwards
to have the desired instrument numbers and names.
MerMEId comes with two different sets of instrument and ensemble definitions: One according to MARC and
one according to UNIMARC standards. They are also located in eXist's library
folder and have "_marc" and "_unimarc" added to their file names, respectively. MerMEId looks for the files without the indication of
standard, i.e. instruments.xml, ensembles.xml and instrument_groups.xml,
so to change from using the MARC lists (default) to using UNIMARC, simply rename the files accordingly.
If you are not familiar with eXist, ask your system administrator about how to access and
edit the files.
Which standard should I use for instrument codes and names? MARC or UNIMARC? Do I have to use one?
The use pupose of using standard codes for instruments is to optimize machine-readability and
data interchange. If you are not concerned about interchangeability, you do not have to use any
instrument codes. In that case, simply do not choose an instrument from the standard code drop-down list
(i.e., leave it blank) and enter the instrument's name in the name field.
However, we recommend referring to standard codes whenever possible. Which standard to use depends on
the nature, purpose and possible uses of your data.
In some cases, a very precise coding may be desirable (in that case, use UNIMARC),
in other cases it is sufficient to have codes just describing the instrumentation roughly
(in that case, use MARC).
MerMEId comes with two pre-defined sets lists of instruments and ensembles (see above):
One containing the instruments defined as part of the MARC cataloguing standard (default),
and one containing the much more detailed UNIMARC list of instruments. Which one to use is up to you.
Please note that the displayed names of the instruments and
ensembles are independent of the codes used, so you can change the names to whatever you want.
For instance, some would prefer using Italian terms for instruments, other would use English terms.
Some prefer abbreviations, others prefer full names.
This means that your naming of instruments can be as detailed as you like, even if you choose
the less detailed MARC instrument codes.
- Example: While an oboe and an oboe d'amore would get two different codes in UNIMARC
(wob and woa, respectively),
they would both be assigned the code wb (for oboe) when using MARC; still, they may be named
precisely ("oboe" and "oboe d'amore", respectively) in the instrument name field in both cases.
The example, by the way, illustrates that mapping UNIMARC codes automatically to MARC it is much easier than mapping the opposite way. You may want to bear that in mind when choosing your encoding style.
The authority file I use is not listed. Can I add it?
Yes. You can edit the list the same way you would change pre-defined instruments names. Look for the file authority_files.xml in the library folder.
How do I make MerMEId recognize other abbreviations?
The same way you would change pre-defined instruments names. Look for the file abbreviations.xml in the library folder.
How do I change the genre keywords in the 'Keywords' menu?
The same way you would change pre-defined instruments names. The keyword file (keywords.xml) is located in the library folder. It has two sections: first, a list of hierarchically ordered keywords (called 'level 1' and 'level 2' terms); second, a list of unordered supplementary keywords. The two-level ordered list of genre terms is useful if you intend to order your files by genre at some point or enable users to browse your catalogue by genre. That's how we generated the genre menu in the CNW.
What else can I customize?
Various lists of pre-defined values are placed in the library folder of the eXist database to make them easily customizable. Apart from those mentioned above, the lists include:
- Source classification values
- Instrument groups (for quickly inserting a number of instruments)
- Languages
- Relators (the relation of a person to the artefact). The list is based on the MARC code list for relators. You may want to extend or change it, however.
- Image resolutions for incipit graphics. These can have any values, but please notice that MerMEId's HTML output recognizes only values "lowres" and "hires" (for low and high resolution images, respectively).
- Writing medium. The list is really just a menu offering some frequently used values for easy copying into the corresponding input field. I does not impose any restrictions on the values you may enter in the editor.
See also:
Can I change the language of the HTML output?
I don't want MerMEId to create change log entries automatically.
Can I turn it off?
Publishing
I would like to make a web catalog like the CNW. Is the user interface included in MerMEId?
No. MerMEId is a tool for creating and editing the XML data for a catalogue of works or sources, not a presentation tool. We're quite sure that every project will want to have their data presented in their own way, so we haven't made our presentation part of MerMEId. To create the public CNW catalogue, we basically use MerMEId's MEI-to-HTML transformation, and add a few exceptions and alterations on top of it. We have added a few XQuery files for the search facilities and a couple of flat HTML files for the text-only pages. A few more XQuery scripts wrap the pages with a header and a footer. The code is available as a separate project at GitHub.
Contact
How do I stay informed about changes and updates?
We recommend that you sign up for MerMEId news. There's a subscription form at DCM's MerMEId
project page (in the right column). Don't worry – we will not flood your inbox with
mails. We will send a mail only when releasing major upgrades or if there are other
important MerMEId-related announcements.
A list of important information about
releases, transformation of data, and known issues is compiled at http://www.kb.dk/projekter/mermeid/.
Finally, you may also want to
follow the discussions about the development of the MEI schema which defines the
structure of the (meta-)data produced by MerMEId. The MEI community even has a special interest group concerned with cataloging and metadata with its
own mailing list where discussions regarding the encoding of musical metadata take place.
Important MerMEId announcements will be posted there as well.
How do I get in touch with you if I have other questions?
For general enquiries, questions about the user interface or the MEI encoding please contact Axel Teich Geertinger. For questions regarding installation, maintenance and updates please contact Sigfrid Lundberg. For general information about the Danish Centre for Music Editing please refer to our web site.


CURLOPT_HTTP_VERSION explained
NAME
CURLOPT_HTTP_VERSION - specify HTTP protocol version to use
SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version);
DESCRIPTION
Pass version a long, set to one of the values described below. They ask libcurl to use the specific HTTP versions. This is not sensible to do unless you have a good reason. You have to set this option if you want to use libcurl's HTTP/2 support.
Note that the HTTP version is just a request. libcurl will still prioritize to re-use an existing connection so it might then re-use a connection using a HTTP version you haven't asked for.
We don't care about what version the library uses. libcurl will use whatever it thinks fit.
Enforce HTTP 1.0 requests.
Enforce HTTP 1.1 requests.
Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.1 if HTTP 2 can't be negotiated with the server. (Added in 7.33.0)
The alias CURL_HTTP_VERSION_2 was added in 7.43.0 to better reflect the actual protocol name.
Attempt HTTP 2 over TLS (HTTPS) only. libcurl will fall back to HTTP 1.1 if HTTP 2 can't be negotiated with the HTTPS server. For clear text HTTP servers, libcurl will use 1.1. (Added in 7.47.0)
CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
Issue non-TLS HTTP requests using HTTP/2 without HTTP/1.1 Upgrade. It requires prior knowledge that the server supports HTTP/2 straight away. HTTPS requests will still do HTTP/2 the standard way with negotiated protocol version in the TLS handshake. (Added in 7.49.0)
DEFAULT
Since curl 7.62.0: CURL_HTTP_VERSION_2TLS
Before that: CURL_HTTP_VERSION_1_1
PROTOCOLS
EXAMPLE
CURL *curl = curl_easy_init(); if(curl) { CURLcode ret; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS); ret = curl_easy_perform(curl); if(ret == CURLE_HTTP_RETURNED_ERROR) { /* an HTTP response error problem */ } }
AVAILABILITY
RETURN VALUE
Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
SEE ALSO
CURLOPT_SSLVERSION, CURLOPT_HTTP200ALIASES
This HTML page was made with roffit.


Welcome
Welcome to the Opportunity collector
This tool will help simplify the process of searching & collecting opportunities on sites like sam.gov and grants.gov.
Features
- Automatically saves configuration settings since they should rarely change
- Will fill out date ranges based on last query (i.e. search between last search date & today)
- Downloads as a spreadsheet
- Will attempt to alert you if an API key is due to expire
Notes
- Some sources require an API key to use
- Some sources have API usage limits. For this reason, some queries may take a few seconds-minutes to complete
- This tool is designed for a modern browser
- This tool looks best on monitors >= 1920x1080 (a regular FHD monitor)
Need help?
too bad


title = "Video Tutorials" url = "/tutorials" layout = "default" hidden = "0" ==
We have many resources to help you on your way.


Keri Russell Talks ‘Star Wars’ And Expiration Dates In Hollywood
by Becca LongmireKeri Russell talks about “Star Wars”, being a shy person and how long she thinks she’ll end up working in Hollywood in a new interview with Town & Country.
Russell, who is set to star as Zorri Bliss in the upcoming “Star Wars: The Rise of Skywalker”, says of her character having to wear a mask in the much-talked-about flick: “…It was very attractive, the idea of not being the lead. The mask – I felt safe in it. And tough.”
The actress adds of balancing work and family life: “I see a lot of other people who have great ambition, but I feel as if my life is so full, with little kids. I’m not hungry for a certain type kind of success.”
Russell may be a star, but she says she’s still shy when you put a camera in front of her.
“Being photographed is a skill, and I’m not good at it. I’m a shy person, so it’s embarrassing. And I’m 43 now, so I’m able to say it’s embarrassing to me. It’s weird. I always look bad!”
She says of whether she feels she has an expiration date in Hollywood: “I do think about it. And I feel that [the time dwindling for roles] should sort of be now. But at the same time, I just got an incredible offer to do something. A really, really rich story. Maybe it doesn’t stop.”
The new issue of Town & Country hits newsstands November 27.


--- title: Sources layout: default ---
This website was created for the Webmaster event for Pennsylvania TSA by team 2045-901 from State College Area High School 9/10.
This website was created using the Bootstrap framework and this website is hosted using Github Pages. All information is cited in MLA in the citations section of this page. No premade template was used, the color scheme and layout of this site was designed manually by team 2045-901.
All pictures licensed under CC0 (no attribution required) from Pexels. TSA emblem used in accordance with "AUTHORIZATION FOR USE OF NAME AND EMBLEM" under TSA Trademark Policies.
"Cloud Machine Learning Engine (Cloud ML Engine) Pricing." Google Cloud, Google, cloud.google.com/ml-engine/pricing. Accessed 31 Mar. 2018.
Fingas, Jon. "Google uses AI to place ads across the internet." Engadget, 21 Feb. 2018, www.engadget.com/2018/02/21/google-ai-ad-placement/. Accessed 31 Mar. 2018.
“Products and Services.” IMB, www.ibm.com/watson/products-services/. Accessed 12 Jan. 2018.
Schuster, Mike. "Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation." Cornell University Library, 26 Sept. 2016, arxiv.org/abs/1609.08144. Accessed 31 Mar. 2018.
Sharma, Kriti. "Everyone is freaking out about artificial intelligence stealing jobs and leading to war — and totally missing the point." Business Insider, 20 Nov. 2017, www.businessinsider.com/artificial-intelligence-is-a-useful-tool-for-business-and-consumers-2017-11.


Pablo Ivan Juárez
Home
(current)
About
Contact
Future project header, discription, links...
Future project header, discription, links...
Future project header, discription, links...
↺ HOME


{% extends 'dev/base.html' %} {% block content %}
Username or pssword is incorrect! Try again.
Don't have an account yet? Sign Up


Why SDN/OpenFlow
As we know, Google and Yahoo! have implement SDN architecture into part of their Data Centers as an experiment. But what have the two companies thought about? And how did they find SDN useful? Here I select lines from their ppts, and these lines are exactly the reasons why G&Y did so.
Reasons from Google:
Subhasree Mandal October 17, 2011[1]
1、Utilize more powerful compute resources
2、Supports easier upgrade, experimental features
3、Target loop-free, sequenced, centralized routing
4、Enables advanced features like centralized TE
On 2012 ONS meeting[2]
####
CAPEX:
make efficient use of resources
● network element cpu and memories
● underlying network capacity
move heaviest workloads off of expensive, relatively slow embedded systems to cheap, fast, commodity hardware
provide visibility into and synchronized control of network state such that underlying capacity may be used more efficiently
OPEX:
Reduce network complexity and thus operational overhead and outage time
simplify policy composition
enforce correctness constraints and invariants
reduce inter-dependendencies
○ between protocols
○ between routers
reduce complexity of distributed control system software
implement potentially innovative new techniques (eg: Heller et al’s Elastic Trees)
Reasons from Yahoo：
2012 ONS meeting[3]
Topology Discovery
• Today:
Routers spend 30%+ cpu cycles re-doing that topology discovery
– Edge discovery
– ARP/MAC bindings
– Topology discovery
– ISIS/OSPF/SPT/RSTP/TRILL/etc
• SDN:
We already have this info in a central DB!
So, let’s just program it!
Cost
It’s all about the $$$$$
Automation
• Today:
Powerful configuration templating tools
• Create config generators to translate those templates to every vendor/device/OS model syntax
Configuration deployment tools to push that out
• They are absolutely archaic
• Don’t you just love expect?
• SDN:
General API
Easier to get stuff done..
Faster Innovation
• Today:
Customer: “I need a new feature X please”
Vendor: “ But you are the only one asking for that, so, how much revenue will that bring in?”
=>conflict
• SDN:
Allows for network “plug-ins” into the controller
Now you can develop your own control features


On average, a couple have children when they reach the age of 28. Following this average, if the Portuguese arrived in 1500 in Brazil, then the first generation of Brazilians appeared in 1528, the second in 1556 and so on. From 1500 to the current year, how many generations has been passed?


b e a t r i c e a i s p u r o |
07.09.2010 | ||
I am interested in applying for the Front-End Web Developer position with Digium. I have extensive experience in everything related to the web: conducting usability testing, developing new information architecture, wireframing, designing, building, and marketing websites. I received my Bachelor of Arts degree from California State University, Long Beach in Journalism, Public Relations, and Spanish in 1991 and completed coursework at Art Center College of Design in 1997. Throughout my fifteen-year career, I have been involved in the planning and management of hundreds of outstanding design and outreach projects. I have extensive experience designing print and web collateral and rebranding corporate identities. I have developed successful marketing and outreach campaigns, and produced numerous websites. I learned of your company when I attended a talk with Mark Spencer at Digium and was very impressed with your product and business model. Skype for Asterisk pairs nicely to offer very cutting edge solutions. As the world learns to communicate more and more on a global level, it becomes the responsibility of those who help facilitate that communication, engineers and designers included, to do it well. I want to be one of those people. As the first webmaster and designer at Caltech, I collaborated extensively with staff and faculty in creating and developing promotional material, both online and in print. I served as designer and editor of the original Caltech Alumni Newsletter, supervised staff and also taught classes in design and HTML. I translated several storefront sites (MLB/Copeland's/Victory) into Spanish. I have experience analyzing web metrics for data-driven designs and am very familiar with SEO/SEM techniques for optimum search engine rankings. I recently concluded a web usability study for Intergraph and restructured their site's IA and wireframes. I am extremely well-organized, resourceful, proactive, and energetic. I believe my web developer skills, project management experience, and effective communication skills will be a valuable asset to your group. I look forward to meeting with you soon to discuss my qualifications.Sincerely, |
|||
:: CV |
|||
| :: recent sites | Aesthetic
Prosthetics Victory Sweepers, Inc. |
||


Russia's VGTRK Denies Reports of Attack on Film Crew
MOSCOW (Sputnik) - The All-Russia State Television and Radio Broadcasting Company (VGTRK) has denied reports that its film crew came under fire in eastern Ukraine earlier on Monday.
"The People’s Militia of the self-proclaimed Donetsk People’s Republic earlier reported that a film crew of the Russia 24 television channel [belongs to VGTRK] had come under fire in the village of Yasnoe in Donbas, and all contacts with it were lost.
“The film crew did not come under fire,” the VGTRK press service said.


Settings
User settings
Collection settings
NB! At the moment only "VERY ADVANCED" level available. Othe
collection settings unavailable.
Choose which coins to collect. Define difficulty level:
Collect circulation coins (e.g. Andorra 1 cent to 2 euro, etc.) and commemorative coins.
Collect coins also by years.
Collect coins also by mint marks.
Additional settings:
Collect circulation coins (e.g. Andorra 1 cent to 2 euro, etc.) and commemorative coins.
Collect coins also by years.
Collect coins also by mint marks.
Additional settings:


Introduction to HTML
Microsoft Student Partners
Agenda
Intro to HTML
Why it is used?
Structure of HTML
HTML Tags
HTML Elements and many more. . . .
HTML Elements
h tags ex
This is h1
This is h2
p tag ex
This is the Paragraph tag
a tag ex
Google
img tag
input ex
For more updates stay tuned to our page on
Facebook


Knowledge Invader
.
19
Columns of numbers
Informations
Time
Go back to game
Importance of error :
Weak
Average
Strong
No
Yes
Display Comments


How does our System Work?
Summarise what your system does, its target market and uses cases here
Introduction
Clayanse is a complex system comprising of three essential parts. The first part of the system is the web interface, this how the user controls the robot, secondly we have the robot itself, which actually provides the cleaning service, finally, at the heart of the system we have the backend, responsible for enabling communication between the web interface and the robot.
Methods
Explain the key methods of how you got your system to work
System Diagrams
You should include images (where available) which illustrate the methods you used, how the system works etc. This can include system diagrams, images of your system in certain states etc.
Backend System
Above is a overview of the backend systemRobot Localization Techniques
A tennis courts is a challenging environment from robot localization perspective. There is a number of features that contribute to such state of things:
- Big area
- Symmetric layout
- Few characterstic keypoints
For that reasons, many common localization techniques such as SLAM with LiDAR perform rather poorly (according to our SDP Navigation Expert). Therefore, we decided to employ more innovative visual localization technique using a set of ArUco markers. It requires the court to be altered a bit by placing the markers around the court, but it is not intrusive as the markers can be placed outside the court itself, not interrupting the flow of the game. It does not come without any pitfalls, but suppported by the fine-tuned odometry it provides a satisfactory result, that can reliably orient our system on the tennis court.
Next sections provide more in-depth explanaition of the theoretical background and our implementation of those systems.
ArUco Visual Localization
The internal map of the environment consists of locations and poses of ArUco markers in the tennis court environment. Currently, the translation and orientation of markers, with respect to origin of the "world" coordinate system (center of the court), is determined during the system setup phase. The user places markers at known positions around the court and contacts our team specifying placement of the markers so we can send them Claynce with approprate court map preinstalled.
In order not to overconstrain the user. We do not require exact positioning of the markers. Instead we prepared a set of guidelines regarding layout of ArUco markers. Following these recommendations ensures that the system behaves as efficiently as possible:
- Markers should be placed along the court, on both sides - there is no need to have markers on the ends of the court
- Markers should be placed vertically
- Markers should be placed 60 centimeters above the ground - so they don't get covered with dusty clay that easily
- Markers should not be covered by any objects
- Markers shouldn't be placed further than 9 meters away from the court’s centerline - so the robot can detect them more or less in the middle of the tennis court and correct the pose estimation error accumulated when navigating using odometry
- Markers should be 2 meters away from each other - this ensures that they are distributed uniformly + robot can see 2-3 markers at most times
This is a temporary solution implemented in the first prototype of Claynce that enabled us to create a proof of concept. In future development we would like to:
- Create a configuration panel in our app, so the user can dynamically specify/update the positions of the markers associated with the robot.
- Implement automatic ArUco mapping that could enable the robot itself to generate the court map.
- Add many-to-many relationship between court maps and robots, so one robot could be used on multiple courts without the need of reconfiguration.
Going back to what we currently have, the translation and rotation of each marker is hardcoded in robot's software. Each ArUco marker has a unique ID with which its positions is associated and published as a static transform from the world coordinate frame to the coordinate system of the ArUco marker.
In order to make the pose estimation as accurate as possible, our robot needs to see some markers. For that, we use 3 Full HD Raspbery Pi cameras. Higher resolution helps us to more accurately determine the position of the robot with respect to the marker. We are willing to sacrifice the higher ratecenteredImg of pose estimations due to higher resolution, as the frequency is not as crucial when we have 3 cameras working simultaneously.
In our setup, two cameras are facing forward and are rotated by 30 degrees to the left and right. Such configuration allows us to reliably detect markers when moving towards markers and/or in parallel to them. One camera at the back is responsible for detecting markers when moving away from the markers.
Because it turns out that detecting markers which are at the angle with respect to the camera gives better results. The range of marker detection of front cameras is set to 9 meteres, whilst the rear one is limited to 5 meters only. The values has been set based on the results of our tests, that are presented in the Evaluation page. This way, the position estimation error should not exceed 50 centimeters.
For the visual localisation to work, camera information and raw images are published by the device manager from ROSification library provided by Webots. The Image messages are published over a topic. A specialized node converts the messages to OpenCV frame using CvBridge tool. That frame is further processed (e.g. converting to greyscale), and ArUcos are detected. The process of marker recognition and camera -> marker transform computation is covered by OpenCV library. In the end, the frame is annotated with IDs of the markers and their bounding boxes. The modified frame is converted back to the Image message and published over a different topic for debugging purposes.
A brief overview of the implemented algorithm:
- Initialise an empty list of pose estimates.
- Get transform from the camera to robot's base link coordinate system.
- Detect markers in the frame.
- Filter out the ArUcos that are too far for reliable post estimation.
- For each ArUco in a list of ArUcos:
- Get transform from the world to a marker's coordinate system
- rvec, tvec = estimatePose(aruco)
(tvec is a translation of the transform from camera to marker, rvec is a rotation of the transform) - Invert rvec and tvec transforms to get a transform from the ArUco to the camera coordinate system
- Convert all the transforms to homogeneous transformation matrix (HTM) form
- Compose all HTMs in order: world -> ArUco -> camera -> robot's base link
- Extract the x, y from the translation part and yaw from the rotation part of the final HTM.
- Return the averaged x, y, yaw over all estimates as the final estimate.
Below you can see the visual localization in action. The green arrow in the video represents the actual position of the robot. The red one is the position estimate. The axes on the top represent positions of the markers. One can see that at the beginning the estimate is far from the actual position (estimates diverge from actual position when robot uses only odometry). The moment in which camera detects markers on the wall, the pose is updated with much more accurate estimate.
Odometry
Because of the way the cameras are placed and configured, there is a "blindzone" on the court in which the robot cannot determine its position from the ArUco markers. This happens because markers on both sides of the court are too far from the robot.
Since the robot enters blinzdone after every turn away from the markers, it is important that the robot still can assess its position. For this reason, we implemented odometry as fallback localization procedure. It is a "fallback" method in a sense that visual localization always takes precedence over odometry. It's purpose is to get the robot through the blindzone until it can again reliably detect the markers on the other side of the court.
Odometry has been implemated based on the "Odometry Kinematics" slides from Harvey Mudd College. The main parameters: wheel radius and wheel gap, have been tuned using experimnetal approach. Their final values vary significantly from "theoretical" ones. But they ensure that wheel encoder readings give reliable estimation for the forward motion and 90-degree turns. The tasks that are the most crucial for entering and leaving the blindzone. Below you can see that odometry does well when moving straigh and performing ~90-degree turns, but works much worse with other turns.
Pattern Path Generation
Currently Claynce supports 2 patterns: zig-zag and circular. A path that the robot has to follow in a selected sweeping program is generated in a recursive fashion. This makes it highly extensible to suit everyone's needs. The algorithm starts at the net and finshes at the end of the court. Path is generated for one half only and then the points for the other half are generated by reflecting existing path along the net. This ensures two things. Firstly, that the robot starts sweeping the second half on the same side that it finished cleaning the first one. Secondly, that the robot finishes the program on the opposite half and the same side of the court on which it started the pattern. Finally, the robot gets an instruction to come back to the net so the user can pick it up.
Our algorithms are highly parametrised and very flexible to suite every user needs. Currently we have fixed parameters for pattern generation, but in the future we would like to expose those parameters via an app so users can create patterns that are adapted to their personal requirements. Regardles of the pattern, module generating paths takes into account:
- width of the court
- length of the court
- width of the net
- desired net overlap when robot traverses the court
Navigation
The navigation algorithm is simple: the robot is given a list of (x,y) points in the court’s reference system - the points are determined from the position of the ArUco markers. Claynce knows its position on the court, and hence is able to travel to the first point on the list. Once it’s in range of that point, the list will be updated to remove it, and the robot will look at the next point to check by how much it needs to turn to reach it. This approach allows Claynce to navigate to literally any point from the list, as long as it knows its position correctly. This makes the algorithm very versatile, although right now we’re not using it to full potential - the web application allows you to choose one of two predefined patterns (either a zigzag one, or a circular one).
While the robot is moving to the next point, it is possible for it to go off-track due to friction or sliding of the wheels or maybe something else. To remedy this, there exists an angle correction algorithm: given the location of the next point and the position of Claynce on the court, it’s possible to calculate the distance between them, as well as the angle of the direction of movement (with respect to the court’s reference frame). If this calculated angle is not the same as the angle at which the robot is travelling now, Claynce will adjust its wheel velocities to turn more to the side to face the destination straight on. For example, see this image: The robot has not turned properly, meaning that the destination is not straight ahead. The algorithm calculates the angle of travel (from the set horizontal axis x) alpha, as well as the angle by how much the course needs to be adjusted (beta). Using this information and basic trigonometry, the robot changes the velocities of the wheels so that it turns right until beta reaches almost zero - it will never exactly be zero, so some tolerance (0.1 degrees) is allowed. After that it starts going straight again, because the destination is now right in front of it. This algorithm runs constantly, so the robot continuously compares the angles and adjusts its velocity if necessary.
Obstacle avoidance: Claynce has three distance sensors on the front to allow it to detect obstacles. Given that there shouldn’t be any on the court during cleaning, it’s enough for the robot to simply stop in front of an obstacle and wait until it’s removed. The distance sensors are placed in such a way as to detect the obstacles that are 40 cm in front, or a bit to the sides of the robot (the ones at the sides may stop the net from moving forward); hence one sensor points straight, while the other two are point at 15-degree angles from the robot’s centerline. This short detection distance allows Claynce to stop in front of reasonably small obstacles, while ignoring the net poles or the walls of the court, which are usually farther away from it.


auto is used to define a variable of storage class automatic. For example: auto int var1;This statement suggests that var1 is a variable of storage class auto and data type int. Variables declared within function bodies are automatic by default. They are recreated each time a function is executed. Since, automatic variables are local to a function, automatic variables are also called local variables.


Guessing Game
Guess a number between 1 & 100
Play
<
May the Odds Be Ever In Your Favor
--
--
--
--
--
Hint?
Reset


about
Technology and Development Solutions Cell is a resource
center for providing technology-based solutions for the
development sector. TDSC provides resources and services to
undertake projects that deliver outputs via academic
research outputs, consulting, outreach modules,
entrepreneurship guidance, etc. TDSC not only aims at
delivering solutions to external stakeholders but primarily
uses the academic platform to engage students directly in
development-related problems and solutions. The resources of
the center can be leveraged by faculty and students of IIT
Bombay and other colleges to provide solutions to the
community and various development stakeholders.
Mini-governing note for TDSC as written at the inception of
the project can be found here.


{% extends 'base.html'%} {% import 'bootstrap/wtf.html' as wtf%} {%block content%}
Don't have an account? Sign up here
©All Rights Reserved, 2019