Caribbean Development Bank continues to support regional entrepreneurs
by Obit Innovation(PRESS RELEASE) – During Global Entrepreneurship Week, the Caribbean Development Bank (CDB) congratulates 22 startups who have reached the final stage of the Caribbean Tech Entrepreneurship Programme (CTEP). The Bank continues to push for Caribbean economic transformation through digital innovation and supports CTEP in its virtual incubator and accelerator programme.
CTEP, aimed at stimulating technology entrepreneurship in the Caribbean and facilitated by Orbit Innovation, connects startups and entrepreneurs in CDB’s 19 Borrowing Member Countries with regional facilitators and mentors who are experts in their respective fields.
After a selection process during Summer, 90 startups were selected for the September – December 2019 Cohort. They then undertook a rigorous training programme of learning modules, workshops and mentor sessions to prepare them for each stage of their business and the semifinals of the programme.
A key proponent of the programme is training the startups to complete virtual work, with a requirement to upload their digital submissions: pitch decks, prototypes, and presentation videos. These submissions were evaluated by a remote panel of regional and international judges from technical, business development and investor backgrounds.
22 of the 90 startups will compete in the Regional Finals to win prizes. The overall winners will receive CTEP seals of recognition and prizes at an awards ceremony in Barbados in December 2019.
Previous winners CTEP 2019 Cohort 1 have gone on to achieve further success:-
• Corey Zufelt, who leads the startup is I’m Local (Grenada), has been nominated by The Grenada Chamber of Industry & Commerce for the 2019 Excellence in Tourism Industry Award
• Shawn Melville, who leads the startup is Ipsum Technologies (Trinidad and Tobago), was recently awarded The Entrepreneurship World Cup Global 100 Award for being among the top 100 start-ups while representing the Caribbean in Saudi Arabia
• Michael Husbands, who leads the startup Global Tutoring Hub (Barbados), was selected by Design Terminal to be on their three-month Mentor’s Program in Budapest, Hungary.
Lisa Harding, Coordinator of Micro, Small and Medium Enterprise Development at CDB, said the programme was aligned with the Bank’s wider support for digital transformation and innovation initiatives: “CDB is delighted with the response from Caribbean entrepreneurs in this second phase of the CTEP, which confirms the significant benefits that an online incubator can bring to entrepreneurs at all stages of the business cycle. One of the biggest struggles entrepreneurs face is finding the right small business community to develop strong networks. CTEP uniquely offers this solution in a digital space.”
Christopher Harper, CTEP Judge said: “As usual, the standard of the businesses and ideas presented were high. What I noticed this year was a higher number of businesses seeking to address more social issues, for example, those related to nutrition and education, while trying to
ensure that the wealth gap between socio-economic classes is closed.”
Troy Weekes, Programme Manager of CTEP, remarked: “We are extremely pleased with the overwhelming number of startups in the second Cohort. It is encouraging to note that overall feedback from the first Cohort was highly favourable, and entrepreneurs indicated that the
guidance they received from the facilitators and mentors was extremely valuable for propelling their business forward.”
He continued: “With the increasing reliance on technology in business applications and service delivery, it is essential that our regional entrepreneurs possess the required skills to compete globally. The many success stories of CTEP graduates prove that the programme is making a sterling contribution in preparing our entrepreneurs to meet this challenge.”
More Caribbean Stories
-
US Congress Roundtable on de-risking in the Caribbean hailed a success November 21, 2019
-
42,000 guns, T&T a war zone, says Senator November 21, 2019
-
Virgin Islands to begin establishing medicinal marijuana industry in 2020 November 21, 2019
-
OECS Chairman extends congratulations to new Premier of Montserrat November 21, 2019
-
BVI visas to go on sale, Premier announces November 21, 2019
-
Trinidad: Man charged with possession of flour November 21, 2019
-
The Organisation of Eastern Caribbean States (OECS) joins GGGI as its 34th member and 1st regional integration member November 21, 2019
-
Jamaica: Flow warns of online fraud targeting customers November 21, 2019
-
US representative to OAS says political situation in Dominica ‘worrisome’ November 21, 2019


We began this project way back in October, and time has certainly flown by. Just for kicks, here's a blow-by-blow of the making of Lazer Maze.
Sprint 1
Tasks included:
- Deciding on a project
- Outlining personal learning goals
- Learning about laser safety
- Establishing the importance of modularity in a large system
- Learning to delegate tasks to sub-teams
- Launching our website
Here are some of our initial sketches from Sprint 1.
Sprint 2
Tasks included:
- Building two tabletop prototypes
- Drafting the bill of materials
- Designing the box structure
- Implementing a small-scale version of the electrical system
- Designing the user interface
Sprint 3
Tasks included:
- Purchasing materials
- Building the box
- Developing the software and user interface
- Wiring the electrical system
- Testing sensing
- Designing and fabricating laser mounts
... and here is where we are now.
In this past sprint, our tasks included:
- Finishing the software and user interface
- Integrating the electrical and software systems
- Designing and fabricating mirror mounts
- Calibrating the laser beam bounce system
- Finalizing the electrical wiring
- Documenting and reflecting
Not bad, huh? Spice Girls OUT.


{% extends "organizations/base.html" %} {% load i18n %} {% load gravatar %} {% load organizations %} {% block title %}{% trans "Members" %}{% endblock %} {% block organization-bar-members %}active{% endblock %} {% block content %}
{% url 'organization_team_list' organization.slug as invite_url %} {% blocktrans %} This is a list of all the team members and owners inside your organization. To invite members, invite them to a team {% endblocktrans %}


Loading ...
link to our hacker league page
link to our github page
CSV File
Cost
Sector
Airport-related activities
Defence
Economic and financial affairs
Education
Electricity
Environment
Exploration and extraction of coal and other solid fuels
General public services
Health
Housing and community amenities
Not specified
Other
Port-related activities
Production
Public order and safety
Railway services
Recreation
Social protection
Urban railway
Water
Filtern
placeholder


The literal for a regular expression object is / ~ /. (Not both "/ ~ /" and "/ ~ /")
Regular expression objects have test() and exec() methods.
test() returns a boolean value by determining whether the string passed as an argument matches the regular expression.
exec() finds and returns a string that matches the regular expression in the string that was input as an argument.
var regExp = /Java/; var testStr = "www.java-school.net is the best site to learn Java"; var retArr = regExp.exec(testStr); alert(retArr[0]);
The string after the / at the end of the regular expression object is a flag.
If the i flag is added, it is not case sensitive.
var regExp = /Java/i; var testStr = "www.java-school.net is the best site to learn Java"; var retArr = regExp.exec(testStr); alert(retArr[0]);
If you use the g flag, you remember the last matching location, and the next time exec() is called, it will find the matching location from the next location.
var regExp = new RegExp('Java', 'gi'); // /Java/gi var testStr = "www.java-school.net is the best site to learn Java"; var retArr = regExp.exec(testStr); retArr = regExp.exec(testStr); alert(retArr[0]);
| Number of times | |
|---|---|
| * | 0 times or more |
| + | More than once |
| ? | 0 or 1 time |
| . | Exactly once |
| {} | Curly braces are used to specify the number of times a character is repeated.(s{2} means ss) |
var regExp = /Java-*/gi; var testStr = "www.java-school.net is the best site to learn Java"; var retArr = regExp.exec(testStr); retArr = regExp.exec(testStr); alert(retArr[0]);
|
\ following ordinary characters are treated as promised special characters. \ following special characters are treated as characters themselves. |
|
|---|---|
| \w | It means a word, exactly alphabets, numbers and _. |
| \W | Opposite \w |
| \d | Numbers |
| \D | Opposite \d, \D* means zero or more characters. |
| \s | Space character |
var regExp = /\s\*/g; var testStr = "www.java-school.net *is *the *best *site *to *learn *JAVA"; var retStr = testStr.replace(regExp,'-'); alert(retStr);
The following is a form for membership.
<form id="signUp" action="signUp" method="post" onsubmit="return check()"> Name <input type="text" name="name" /> <!-- omit --> </form>
Write the JavaScript code to check that the value for the name is only a whitespace character.
function check() { var regExp = /\s/g; var form = document.getElementById("signUp"); var name = form.name.value; name = name.replace(regExp,""); if (name.length == 0) { alert("Invalid Name"); return false; } return true; }
| Start (^) and End ($) | |
|---|---|
| ^ | Means start, /^JAVA/ finds JAVA at the beginning. |
| $ | $ Means end, /school$/ finds school at end. |
| If you want to match multiple characters, list them in [] | |
|---|---|
| [a-zA-Z] | Find the alphabet |
| [0-9] | Find the number |
| ^ in [] | If ^ is used in [], it means to exclude ~. [^0-9] is the same as \D |
| () |
Patterns enclosed in parentheses are matched and then remembered and their values are stored as an array. The stored substrings are stored in $ 1, $ 2, .... |
|---|---|
| | |
Means "or" a|b is a or b, a|b|c is a or b or c |
You can get regular expressions for emails at http://regexlib.com
In the above site, find a regular expression, and create a JavaScript function that checks email and dates for validity.
var emailRegExp = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/; var dateRegExp = /^\d{4}\/\d{2}\/\d{2}/; var email =<EMAIL_ADDRESS>var signUpDate = "2018/4/21"; var check = emailRegExp.test(email); if (check) { alert("Valid email"); } else { alert("Invalid email"); } check = dateRegExp.test(signUpDate); if (check) { alert("Valid registration date"); } else { alert("InValid registration date"); }References


exception
classes whose names end with 'Exception
'.
Such classes may cause confusion by breaking a common naming convention, and
are often the sign that developer forgot extends Exception
clause.
Example:
public class NotStartedException {}
Quick-fix to rename the class is suggested only in the editor..


How to be a convert ?
> Choose your Files.
> Click on upload.
> The File will be Automatically Downloaded.
{% extends "base.html" %} {% block title %} Upload File {% endblock %} # static/files/ # static/images/loading.gif {% block main %}
> Choose your Files.
> Click on upload.
> The File will be Automatically Downloaded.


?m
PLANTS
of
DOMINICAN
REPUBLIC
Chrysophyllum
Locality
Tierra
Colorada
(near
Higueral
and
LS
302)
Occurrence
Growing
in
caliche
soil
Date
21
December
1964
Alt.
CoU-
M.
G.
Whiting
Na
408
a
Remarks
"Caimito”
Leaves
used
for
fodder.
01442712
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


JavaScript Prototypes
Source: Javascriptissexy.com
1. Every JavaScript function has a prototype property (this property is empty by default), and you attach properties and methods on this prototype property when you want to implement inheritance. This prototype property is not enumerable; that is, it isn’t accessible in a for/in loop. But Firefox and most versions of Safari and Chrome have a __proto__ “pseudo” property (an alternative syntax) that allows you to access an object’s prototype property.
You will likely never use this __proto__ pseudo property, but you should know that it exists and it is simply a way to access an object’s prototype property in some browsers. The prototype property is used primarily for inheritance; you add methods and properties on a function’s prototype property to make those methods and properties available to instances of that function.
2. The second concept with prototype in JavaScript is the prototype attribute. Think of the prototype attribute as a characteristic of the object; this characteristic tells us the object’s “parent”. In simple terms: An object’s prototype attribute points to the object’s “parent”—the object it inherited its properties from. The prototype attribute is normally referred to as the prototype object, and it is set automatically when you create a new object.
To expound on this: Every object inherits properties from some other object, and it is this other object that is the object’s prototype attribute or “parent.” (You can think of the prototype attribute as the lineage or the parent). In the example code above, newObj‘s prototype is PrintStuff.prototype.
Note: All objects have attributes just like object properties have attributes. And the object attributes are prototype, class, and extensible attributes. It is this prototype attribute that we are discussing in this second example.
How do I make a prototype?
There are two primary ways. The first is to create an object literal. An object literal will inherit from the "motherclass" Object() and will have whatever properties you assign to it. For example:
var newObj = {
The second way is to create a constructor function, which will be used with the keyword new to create slave objects. For example:
proerty: attribute,
proerty: attribute,
proerty: attribute,
proerty: attribute
}
function cat(name) {
this.name = name;
this.talk = function() {
alert( this.name + " say meeow!" )
}
}
cat1 = new cat("felix")
The _proto_object
To understand prototype chains in JavaScript there is nothing as simple as the __proto__ property. Unfortunately __proto__ is not part of the standard interface of JavaScript, not at least until ES6. So you shouldn’t use it in production code. But anyway it makes explaining prototypes easy.
// let's create an alien object
var alien = {
kind: 'alien'
}
// and a person object
var person = {
kind: 'person'
}
// and an object called 'zack'
var zack = {};
// assign alien as the prototype of zack
zack.__proto__ = alien
// zack is now linked to alien
// it 'inherits' the properties of alien
console.log(zack.kind); //=> ‘alien’
// assign person as the prototype of zack
zack.__proto__ = person
// and now zack is linked to person
console.log(zack.kind); //=> ‘person’
As you can see the __proto__ property is very straightforward to understand and use. Even if we shouldn’t use __proto__ in production code, I think that these examples give the best foundation to understand the JavaScript object model.
You can check that one object is the prototype of another by doing:
console.log(alien.isPrototypeOf(zack))
You can add properties to the prototype of an object at any time, the prototype chain
//=> true
Prototype lookups are dynamic
lookup will find the new property as expected.
var person = {}
var zack = {}
zack.__proto__ = person
// zack doesn't respond to kind at this point
console.log(zack.kind); //=> undefined
// let's add kind to person
person.kind = 'person'
// now zack responds to kind
// because it finds 'kind' in person
console.log(zack.kind); //=> 'person'
New / updated properties are assigned to the object, not to the prototype
What happens if you update a property that already exists in the prototype? Let’s see:
var person = {
kind: 'person'
Note that the property ‘kind’ now exists in both person and zack.
}
var zack = {}
zack.__proto__ = person
zack.kind = 'zack'
console.log(zack.kind); //=> 'zack'
// zack now has a 'kind' property
console.log(person.kind); //=> 'person'
// person has not being modified
Adding properties to prototype
Adding a new property to an existing object is easy:
myFather.nationality = "English";


WIOS Labs is a design/dev team based in Bengaluru, India.
We build products to help businesses & individuals
make the best use of digital firepower.
Our core mission is to digitally enable businesses at all levels - home based to global scale.
<EMAIL_ADDRESS>Mail Now
GitHub
Open Source Projects
Instagram
Follow Us


This article is an advanced version of our famous work Analysis of Dynamic Programming which gets more than 200 stars.
By the way, our official account has at least a dozen of articles which disassemble the problem of dynamic programming, all of which I have merged into the list of articles. They all mention the problem solving framework of dynamic programming, and we systematically summarize that. During this short period, I have grown from a person without any formal training in computer science to who has completed more than half of the LeetCode, so what I summarize may not be suitable for every master, but for the public; after all, I have worked hard to get to where I am.
There are a few set-pieces for algorithm skills. If you know these, you will get a lot easier, this article aims to see through dynamic programming and form a framework to solve this series of problems. Let’s get into the straight point. Here are the full contents.
The normal form of dynamic programming problem is to calculate the maximum or minimum. Dynamic programming is, in fact, a method in optimization, which just has many applications in problems in computer science, such as the problem to calculate the longest increasing subsequence, and the problem to calculate the smallest distance of editing.
Since we are asked to calculate the maximum or minimum, what is the core problem? The core of the problem is enumeration. Because we are asked to calculate the max or min, we must enumerate all the feasible answers and find max or min among those.
Is dynamic programming so easy that only enumeration is OK? What I see about dynamic programming problems are all hard.
Firstly, the enumeration of dynamic programming is a bit special, because there exist “overlapped subproblems” this kind of problems have extremely low efficiency, we need a “memos” or “DP table” to optimize the process of enumeration to avoid unnecessary calculations.
And that, the DP problems must have the “best substructure” , only through the max or min of subproblems can we obtain the max or min of original problems.
Moreover, although the core idea of DP is to enumerate for max or min, the problem itself varies, to enumerate all feasible answers is not a easy thing, only when listing the correct “state transition equation” can we enumerate perfectly.
The overlapped problems, best substructure and state transition equation are the three elements of DP. What that means will be told in detail, however, in the practical algorithm problems, it is hardest to write out the state transition equation , which is why many people consider DP hard, here I provide a thinking model researched on by myself, to support you to consider the state transition equation.
find out [state] -> define dp array -> find out [option] -> find out base case.
Next let’s explain the basic principle of dynamic programming in detail by solving Fibonacci sequence problem and the collecting change problem. The former is to let you know what is overlapped subproblems (though Fibonacci sequence is not a strictly DP problem), the latter mainly focuses on how to list the state transition equation.
Please do not frown upon this example for being easy, only simple example can let you fully concentrate on the general ideas and techniques, instead of being confused by obscure details. To get hard instances, there is many in the history.
1. brute force recursion
The mathematics form of Fibonacci sequence is recursive, which in code is like this
We don’t need to say too much about this, teachers at school all seem to use this as an example of recursion. We also know writing codes this way is easy but inefficient. Where is inefficient? Suppose n is 20 and draw the recursive tree.
PS: Every time you meet the problems needed to be recursive, you’d better draw the recursive tree, which is of great help for you to find the reason of inefficiency.
How to understand this recursive tree? That is to say to calculate the ordinary problem f(20)
, we need
to calculate f(19)
and f(18)
, then f(19)
, we need to calculate
f(18)
and f(17)
first, and so on.
How to calculate the time complexity? It is number of subproblems multiplied by the time to solve a subproblem.
The number of subproblems, namely the total number of nodes in recursive tree. Obviously the number of nodes in binary tree is exponential, so the number of subproblems is O(2^n), as the time to solve a subproblem here is without cycles, only with the add operation f(n-1) + f(n-2) of which the time is O(1), so the time to solve a subproblem is O(2^n), which is exponential, bang.
Observe the recursive tree, we can find the reason why the algorithm is inefficient: there exist a lot of repeated
calculation, for example, f(18)
is calculated twice, and as you can see, the recursive tree rooted at
f(19)
has a so huge volume that every one turn of calculation wastes a lot of time, moreover, more than
the node f(18)
is calculated repeatedly, so this algorithm is very inefficient.
This is the first property in DP: overlapped subproblem. Next, we try to solve this problem.
2. recursive solution with memos
To know well the problem is to solve a half. Since the reason for wasting time is repeating calculation, then we can make a memo, every time you obtain the answer of a subproblem , record it to the memo and then return; every time you meet a problem of memo check the memo, if you find you have solved that before, just take the answer out for use, and do not waste time to calculate.
Generally an array is used as a memo, of course you can use hash table (dictionary), the thought is the same.
int fib(int N) {
if (N < 1) return 0;
// memo initialized as 0
vector<int> memo(N + 1, 0);
// initialize the easiest condition
return helper(memo, N);
}
int helper(vector<int>& memo, int n) {
// base case
if (n == 1 || n == 2) return
1;
// having calculated
if (memo[n] != 0) return memo[n];
memo[n] = helper(memo, n - 1) +
helper(memo, n - 2);
return memo[n];
}
Now, draw the recursive tree, and you will know what memo does.
In fact, recursive algorithms together with memos, put a recursive tree with abundant redundancy through pruning, we change one recursive graph without redundancy, which intensely decreases the number of subproblems (namely the node in the recursive graph).
How to calculate the time complexity? The number of subproblems multiplied by the time of which the subproblem needs.
The number of total subproblems, namely the total number of nodes in graph, because there is no redundant
computation in this algorithm, the subproblems are f(1)
,f(2)
,f(3)
…
f(20)
, the number and size of input n = 20 are directly proportional, so the number of subproblems are
O(n).
The time to solve a subproblem, as above, there is no loop, the time is O(1).
Therefore, the time complexity of this algorithm is O(n). Instead of a brute-force algorithm, it’s a dimension reduction attack.
So far, the efficiency of the recursive solution with memos is the same as that of the iterative dynamic programming solution. In fact, this approach is almost identical to iterative dynamic programming, except that it is called “top-down” and dynamic programming is called “bottom-up”.
What is “top down”? Notice that the recursion tree that we just drew, or the graph, goes from the top down, all the
way down from a big old problem like f(20)
, and gradually breaks down the size until f(1)
and f(2)
hit the bottom, and then returns the answer layer by layer, which is called
top-down.
What is “bottom-up”? In turn, we start directly from the bottom, the simplest, smallest problem, f(1)
and f(2)
, and we push it up, until we get to the answer we want, f(20)
, and that’s the
idea of dynamic programming, and that’s why dynamic programming is generally done without recursion, by iteration.
3. recursive answer to dp array
Have the inspiration of last step “memorandum”, we can separate this “memorandum” into a table, called DP table, in this table to complete the “bottom up” calculation is not beautiful!
int fib(int N) {
vector<int> dp(N + 1, 0);
// base case
dp[1] = dp[2] = 1;
for (int i = 3; i <= N; i++)
dp[i] = dp[i - 1] + dp[i - 2];
return dp[N];
}
It makes sense to draw a picture, and you see that the DP table looks very much like the result of the “pruning” before, only in reverse.In fact, the “memo” in the recursive solution with memo is the DP table after the final completion, so the two solutions are actually the same, in most cases, the efficiency is basically the same.
Here, we introduce the term “state transition equation”, which is actually the mathematical form to describe the structure of the problem:
Why is it called the “state-transition equation”? To sound fancy. You want f of n to be a state n, and that state n is transferred from the sum of the states n minus 1 and n minus 2, that’s called a state transfer – that’s all.
You will find that all the operations in the above solutions, such as return f(n - 1) + f(n - 2), dp[i] = dp[i - 1] + dp[i - 2], and the initialization of the memo or dp table, all revolve around different representations of this equation. It is important to list the “state transfer equation”, which is the core of the solution. It’s easy to see that the equation of state transition directly represents the brute-force solution.
Never look down upon the brute-force solution. the most difficult part of the dynamic programming problem is to write the state transfer equation, that is, the brute-force solution. The optimization method is nothing more than the use of the memo or DP table – no mystery at all.
At the end of this example, there’s a little optimization detail. Observant readers will find that, according to the state transition equation of the Fibonacci sequence, the current state is only related to the previous two states. In fact, it is not necessary to have a long DP table to store all the states, just find a way to store the previous two states. Therefore, it can be further optimized to reduce the space complexity to O(1):
int fib(int n) {
if (n == 2 || n == 1)
return 1;
int prev = 1, curr = 1;
for (int i = 3; i <= n; i++) {
int sum = prev + curr;
prev = curr;
curr = sum;
}
return curr;
}
Another important feature of dynamic programming, one might ask, is the optimal substructure. We’ll talk about that. The example of the Fibonacci sequence is not strictly a dynamic programming because it does not involve finding the optimal value. This is intended to demonstrate the spiraling process of algorithm design. Now, let’s look at the second example, the problem of making small change.
Here’s the problem: here are the COINS in different denominations of ‘k’, c1, c2…Ck ‘, the number of each coin is unlimited, and then I give you a total amount ’amount’, and I ask you ** at least ** how many COINS are needed to scrape up this amount, if it is impossible, the algorithm returns -1. The function signature of the algorithm is as follows:
// coins are the face value of the optional coin, is the target amount
int coinChange(int[] coins, int amount);
For example ‘k = 3’, face value 1,2,5, total amount ‘amount = 11’.So you have to have at least 3 COINS, so 11 is equal to 5 plus 5 plus 1.
How do you think computers should solve this problem?Obviously, it’s a matter of enumerating all possible coin-pooling methods and finding the minimum number of COINS needed.
1. brute-force recursion
First, the problem is dynamic programming because it has an “optimal substructure.” to meet the optimal substructure, subproblems must be independent of each other .What is independence?You don’t want to see a mathematical proof, but let me give you an intuitive example.
For example, your original problem is to get the highest total score, then your sub-problem is to get the highest Chinese test, mathematics test to the highest. In order to get the highest score in each subject, you need to get the highest multiple choice score for each subject and the highest fill-in-the-blank score. Of course, the end result is that you get full marks for each course, which is the highest total score.
Got the right result: the highest total score is the total score. Because the process conforms to the optimal sub-structure, the “highest in each subject” sub-problems are independent of each other.
However, if add a condition: your Chinese achievement and mathematics achievement will mutually restrict, one side is opposite to the other. In this way, it is obvious that the highest total score you can get is not the total score, according to the previous thinking will get the wrong result. Because the sub-problem is not independent, the achievement of Chinese and mathematics cannot be optimal at the same time, so the optimal sub-structure is destroyed.
Going back to the problem of making small change, why does it fit the optimal substructure?For example, if you want
to ask amount = 11
when the minimum number of COINS (original), if you know the cobble
amount = 10
minimum number of COINS (a problem), you only need to traverse to the child the answer to
the question with a (to choose a value of 1 coin) is the answer to the question, because there is no limit to the
number of the coin, there is no mutual between sub-problems, were independent of each other.
So, now that you know that this is a dynamic programming problem, you have to think about how to get the right transition equation.
First determine the “state”, which is the variable that changes in the original problem and
subproblems. Since the number of COINS is infinite, the only state is the target amount amount
.
then determine the definition of the dp
function : the current target amount is
n
, at least dp(n)
COINS are needed to make up the amount.
Then determine the “choice” and choose the best, that is, for each state, what choices can be made to change the current state. Specific to this problem, no matter what the target amount is, the choice is to choose a coin from the denomination list ‘COINS’, and then the target amount will be reduced:
# Pseudocode framework
def coinChange(coins: List[int], amount: int):
# Definition: to scrape up an amount of n, at least dp(n) COINS are required
def dp(n):
# Make a choice. Choose the one that requires the fewest coins
for coin in coins:
res = min(res, 1 + dp(n
- coin))
return res
# So the question we're asking is dp(amount)
return dp(amount)
finally, base case is clarified. Obviously, when the target amount is 0, the number of COINS required is 0;When the target amount is less than 0, there is no solution, and -1 is returned:
def coinChange(coins: List[int], amount: int):
def dp(n):
# base case
if n == 0: return 0
if n < 0: return -1
# to minimize it is to initialize it to infinity
res = float('INF')
for coin in coins:
subproblem = dp(n - coin)
# No solution to subproblem, skip
if subproblem == -1: continue
res = min(res, 1 + subproblem)
return res if res !=
float('INF') else -1
return dp(amount)
So far, the state transfer equation has been completed, and the above algorithm is already a brute-force solution. The mathematical form of the above code is the state transfer equation:
At this point, the problem is actually solved, but the overlapping subproblems need to be eliminated. For example,
when amount = 11 and COINS = {1,2,5}
, the recursive tree can be drawn.
time complexity analysis: total number of subproblems x time per subproblem .
The total number of subproblems is the number of recursion tree nodes, which is hard to see, which is order n to the k, but it’s exponential. Each subproblem contains a for loop of O(k).So the total time complexity is order k times n to the k, the exponential level.
2. Recursion with memo
With minor modifications, subproblems can be eliminated with memos:
def coinChange(coins: List[int], amount: int):
# memo
memo = dict()
def dp(n):
# Check the memo to avoid double counting
if n in memo: return memo[n]
if n == 0: return 0
if n < 0: return -1
res = float('INF')
for coin in coins:
subproblem = dp(n - coin)
if subproblem == -1: continue
res = min(res, 1 + subproblem)
# note on memo
memo[n] = res if res !=
float('INF') else -1
return memo[n]
return dp(amount)
Without drawing, it is obvious that the memo greatly reduces the number of subproblems and completely eliminates the redundancy of subproblems, so that the total number of subproblems will not exceed n, that is, the number of subproblems is O(n).The time to deal with a subproblem is still O(k), so the total time complexity is O(kn).
3. Iterative solution of dp array
Of course, we can also use dp table from the bottom up to eliminate overlapping subproblems. The definition of ‘dp’ array is similar to that of ‘dp’ function just now, and the definition is the same:
‘dp[I] = x’ means that when the target amount is’ I ‘, at least ’x’ COINS are needed .
int coinChange(vector<int>& coins, int amount) {
// The array size is amount + 1 and the initial value is also amount + 1
vector<int> dp(amount + 1, amount + 1);
// base case
dp[0] = 0;
for (int i = 0; i < dp.size(); i++) {
// The inner for is finding the minimum of + 1 for all subproblems
for (int coin : coins) {
// No solution to subproblem, skip
if (i - coin < 0) continue;
dp[i] = min(dp[i], 1 + dp[i - coin]);
}
}
return (dp[amount] == amount + 1) ? -1 : dp[amount];
}
PS: why is the dp
array initialized to amount + 1
? Because the number of COINS that can
be added to amount
can only be equal to amount
(all one-dollar COINS) at most,
initializing amount + 1
is the same as initializing amount + 1
to +∞ (infinity) for
subsequent minimization.
The first Fibonacci sequence problem explains how to optimize a recursion tree by using the “memo” or “dp table” method, and makes it clear that the two methods are essentially the same, but top-down and bottom-up are different.
The second coin problem shows how to streamline the process of determining the “state transfer equation”, by which brute-force recursive solutions are written, the rest is to optimize the recursion tree and eliminate overlapping subproblems.
If you don’t know much about dynamic programming, you can still see it here, and I really want to give you a hand, because I think you’ve mastered the design of this algorithm.
There is nothing magical about a computer solving a problem. Its only solution is to exhaust all possibilities. Algorithm design is nothing more than thinking “how to be exhaustive” first, and then pursuing “how to be exhaustive intelligently”.
To write the dynamic transfer equation is to solve the “how to be exhaustive” problem. The reason why it is difficult is that many exhaustive operations require recursive implementation, and the second reason is that the solution space of some problems is complex and not easy to exhaustive.
The memo or DP table is in the pursuit of “how to intelligently be exhaustive.” With the idea of space for time, is the only way to reduce the complexity of time, in addition to, ask, also can play what flower work?
Work to make the algorithm clear! You are welcome to pay attention to my WeChat public number labuladong, see more easy-to-understand articles : Translator: Jian Ma
Author: labuladong


name:
Gender:
Country:
Upload
Retrive Data
Upload Data
Upload Image
createAccount
login
google-popup
google redirect
index
privacypolicy


My game isn't supported by your browser. Please download a
better browser
and enable JavaScript.
js console >
Clear


Cat
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil, cum?
features 1
features 2
features 3
Free
Really?
Dog
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil, cum?
features 1
features 2
features 3
features 4
$150
Best Deal
Fish
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil, cum?
features 1
features 2
features 3
features 4
$11
Super


A channel to discuss trading. For useful links and more info click the pinned messages to the right.
100 messages
Before 05-Dec-19 12:00 AM
blackjok3r30-Nov-18 12:26 PM
but it seems most ppl are not like that
ComputerGenie 👴👴👴30-Nov-18 12:26 PM
@Stephen Daniels please stop posting different things and answer my question
what dictionary did you use to derive your delusional definition of "currency" from?
siu - Chainmakers30-Nov-18 12:26 PM
please, illuminate us.
blackjok3r30-Nov-18 12:27 PM
lets give him 20 lines to explain himself
meatspoon30-Nov-18 12:27 PM
No one is stopping anyone from taking time to write a long response.
1
ComputerGenie 👴👴👴30-Nov-18 12:27 PM
dope-induced OCD
blackjok3r30-Nov-18 12:27 PM
I dont accept the dollar
ComputerGenie 👴👴👴30-Nov-18 12:27 PM
the only currency is the dollar because it is accepted by everyone and has the biggest economic mass
dude, you need to lay off the meth
siu - Chainmakers30-Nov-18 12:28 PM
stop crying and answer already
ComputerGenie 👴👴👴30-Nov-18 12:28 PM
@Stephen Daniels please stop posting different things and answer my question
what dictionary did you use to derive your delusional definition of "currency" from?
@Stephen Daniels please stop posting different things and answer my question
what dictionary did you use to derive your delusional definition of "currency" from?
blackjok3r30-Nov-18 12:29 PM
every coin that ppl use as an investment vehicle was made by someone
in my particualr case ... I have not launched anty coins yet
but I asm going to soon
I think he lost money
for a long time
ComputerGenie 👴👴👴30-Nov-18 12:30 PM
I love that you switched from being a BTC maximalist to being a USD maximalist; however,
@Stephen Daniels please stop posting different things and answer my question
what dictionary did you use to derive your delusional definition of "currency" from?
blackjok3r30-Nov-18 12:30 PM
lee profited from LTc more than m,sot countries profit from tax
and he did no work
its not
you can "print" coiuns form thin air
yes but you can print coins form thin air
any coins
ComputerGenie 👴👴👴30-Nov-18 12:31 PM
USD coins
1
blackjok3r30-Nov-18 12:31 PM
the most I was ablke to make a KMD ac make was 77 billion
well ... yes tath too
siu - Chainmakers30-Nov-18 12:32 PM
no stupid
ComputerGenie 👴👴👴30-Nov-18 12:32 PM
the treasury mints USD coins with air vaule every day
Satire! Not affiliated with real Tether.
Tracking Tether prints!

ComputerGenie 👴👴👴30-Nov-18 12:33 PM
Man I kinda wanna get high now@Stephen Daniels could share, but I think he smoked the whole crop
siu - Chainmakers30-Nov-18 12:34 PM
wow, you got to a new level of stupid there.
today and now, you are the issue
blackjok3r30-Nov-18 12:34 PM
anyone can now print all the "money" they like .... all that matters is if ppl accept it as payment
siu - Chainmakers30-Nov-18 12:34 PM
i dont think joker said that.
blackjok3r30-Nov-18 12:35 PM
if you have a bynch of guns your 99% of the wway there
ComputerGenie 👴👴👴30-Nov-18 12:35 PM
the fed can print money
thats not the issue
True, it's not an issue.... until you learn the it's a private held corporation that makes up rules as they go...
1
meatspoon30-Nov-18 12:35 PM
Off topic: personally i think the fed printing money IS a conspiracy. To steal wealth thru inflation.
1
siu - Chainmakers30-Nov-18 12:35 PM
yes, please, go take a nap.
and he got banned.
good.
thanks mod.

Deleted User30-Nov-18 12:40 PM
somebody said they could print KMD
siu - Chainmakers30-Nov-18 12:40 PM
it was trolling
blackjok3r30-Nov-18 12:40 PM
mine it
Deleted User30-Nov-18 12:40 PM
and any coin
siu - Chainmakers30-Nov-18 12:40 PM
i think joker meant he could make a blockchain within kmd
@ComputerGenie 👴👴👴#7004 how do you print it?
I prefer Brother brand printers(edited)
Deleted User30-Nov-18 12:41 PM
i dont get it
siu - Chainmakers30-Nov-18 12:41 PM
ugh
Brother is the worst imo
i prefer HP
laserjet
Deleted User30-Nov-18 12:41 PM
are you saying KMD supply doesnt mean anything?
blackjok3r30-Nov-18 12:42 PM
I prefer a paperless office ... save the trees
jl777c30-Nov-18 12:42 PM
anybody can create new coins in a new chain
Deleted User30-Nov-18 12:42 PM
i didnt know you could just issue kmd like that
siu - Chainmakers30-Nov-18 12:42 PM
no @Deleted User
Deleted User30-Nov-18 12:42 PM
ohh
yeah
ComputerGenie 👴👴👴30-Nov-18 12:42 PM
we've got a Brother MFC-9130CW and I love it
siu - Chainmakers30-Nov-18 12:42 PM
>I prefer a paperless office ... save the trees
some times you need to print the pdf file to sign it and then scan it again and email it
>we've got a Brother MFC-9130CW and I love it
no good linux drivers
Deleted User30-Nov-18 12:43 PM
yeah , but if the coins created arent relevant unless they can be used to buy a wide range of goods and services(edited)
blackjok3r30-Nov-18 12:43 PM
I dont do those things ... we have a kid who lives with us ... property of the government .... they sent me like 100 forms to sign so he could stay here... I threw them all in the bon .. .hes still allowed to stay here
jl777c30-Nov-18 12:43 PM
yes, but anybody can print any amount of coins
siu - Chainmakers30-Nov-18 12:43 PM
you can use them as soon as they are created... that they are accepted by merchants or people is another topic.
Deleted User30-Nov-18 12:43 PM
yeah
ComputerGenie 👴👴👴30-Nov-18 12:43 PM
@siu - Chainmakers I'm on Debian and I use it daily
Deleted User30-Nov-18 12:44 PM
this argument is dumb lol
sorry
siu - Chainmakers30-Nov-18 12:44 PM
oh, i had one and had a bad experience many years ago
Deleted User30-Nov-18 12:44 PM
i thought you could actually print money that merchants accepted
1
siu - Chainmakers30-Nov-18 12:44 PM
then bought a hp laserjet that lasted like 15 years
and still works but i gave it rest
ComputerGenie 👴👴👴30-Nov-18 12:44 PM
i thought you could actually print money that merchants accepted
You can, if you and the merchant agree that it has value
because that's how money works(edited)
Deleted User30-Nov-18 12:44 PM
@jl777c do you think bitcoin has a chance at being a settlement layer or worldwide currency ?


Stages of Development
Posted: Mon Jan 29, 2007 1:42 pm
Ok everyone! From hearing your comments on what to do about PV and doing some thinking, I came up with this plan of action:
Stage 1: Dependency - For now, everything references an installed version of Xenimus. During this period, PV will not charge a fee for anything (accepting donations only) and be clearly marked that it requires that Xenimus be downloaded to run.
Stage 2: Weaning - As we get more and more of our own content, begin distributing data along with the PV downloads. This will still require a copy of Xenimus to play, and will not charge a fee (again, only donations) but it will reference less of the Xenimus content.
Stage 3: Freedom! - PV is self-contained, using all of its own content and not requiring a copy of Xenimus. At this point, PV can charge a monthly fee to support itself and continue expansion of content/maps/etc.
Stage 1: Dependency - For now, everything references an installed version of Xenimus. During this period, PV will not charge a fee for anything (accepting donations only) and be clearly marked that it requires that Xenimus be downloaded to run.
Stage 2: Weaning - As we get more and more of our own content, begin distributing data along with the PV downloads. This will still require a copy of Xenimus to play, and will not charge a fee (again, only donations) but it will reference less of the Xenimus content.
Stage 3: Freedom! - PV is self-contained, using all of its own content and not requiring a copy of Xenimus. At this point, PV can charge a monthly fee to support itself and continue expansion of content/maps/etc.


The acts of the mind, wherein it exerts its power over simple ideas, are chiefly these three: 1. Combining several simple ideas into one compound one, and thus all complex ideas are made. 2. The second is bringing two ideas, whether simple or complex, together, and setting them by one another so as to take a view of them at once, without uniting them into one, by which it gets all its ideas of relations. 3. The third is separating them from all other ideas that accompany them in their real existence: this is called abstraction, and thus all its general ideas are made.
John Locke, An Essay Concerning Human Understanding (1690)
We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells.
A computational process is indeed much like a sorcerer's idea of a spirit. It cannot be seen or touched. It is not composed of matter at all. However, it is very real. It can perform intellectual work. It can answer questions. It can affect the world by disbursing money at a bank or by controlling a robot arm in a factory. The programs we use to conjure processes are like a sorcerer's spells. They are carefully composed from symbolic expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform.
A computational process, in a correctly working computer, executes programs precisely and accurately. Thus, like the sorcerer's apprentice, novice programmers must learn to understand and to anticipate the consequences of their conjuring. Even small errors (usually called bugs or glitches) in programs can have complex and unanticipated consequences.
Fortunately, learning to program is considerably less dangerous than learning sorcery, because the spirits we deal with are conveniently contained in a secure way. Real-world programming, however, requires care, expertise, and wisdom. A small bug in a computer-aided design program, for example, can lead to the catastrophic collapse of an airplane or a dam or the self-destruction of an industrial robot.
Master software engineers have the ability to organize programs so that they can be reasonably sure that the resulting processes will perform the tasks intended. They can visualize the behavior of their systems in advance. They know how to structure programs so that unanticipated problems do not lead to catastrophic consequences, and when problems do arise, they can debug their programs. Well-designed computational systems, like well-designed automobiles or nuclear reactors, are designed in a modular manner, so that the parts can be constructed, replaced, and debugged separately.
We need an appropriate language for describing processes, and we will use for this purpose the programming language Lisp. Just as our everyday thoughts are usually expressed in our natural language (such as English, French, or Japanese), and descriptions of quantitative phenomena are expressed with mathematical notations, our procedural thoughts will be expressed in Lisp. Lisp was invented in the late 1950s as a formalism for reasoning about the use of certain kinds of logical expressions, called recursion equations, as a model for computation. The language was conceived by John McCarthy and is based on his paper "Recursive Functions of Symbolic Expressions and Their Computation by Machine" (McCarthy 1960).
Despite its inception as a mathematical formalism, Lisp is a practical programming language. A Lisp interpreter is a machine that carries out processes described in the Lisp language. The first Lisp interpreter was implemented by McCarthy with the help of colleagues and students in the Artificial Intelligence Group of the MIT Research Laboratory of Electronics and in the MIT Computation Center.1 Lisp, whose name is an acronym for LISt Processing, was designed to provide symbol-manipulating capabilities for attacking programming problems such as the symbolic differentiation and integration of algebraic expressions. It included for this purpose new data objects known as atoms and lists, which most strikingly set it apart from all other languages of the period.
Lisp was not the product of a concerted design effort. Instead, it evolved informally in an experimental manner in response to users' needs and to pragmatic implementation considerations. Lisp's informal evolution has continued through the years, and the community of Lisp users has traditionally resisted attempts to promulgate any "official" definition of the language. This evolution, together with the flexibility and elegance of the initial conception, has enabled Lisp, which is the second oldest language in widespread use today (only Fortran is older), to continually adapt to encompass the most modern ideas about program design. Thus, Lisp is by now a family of dialects, which, while sharing most of the original features, may differ from one another in significant ways. The dialect of Lisp used in this book is called Scheme.2
Because of its experimental character and its emphasis on symbol manipulation, Lisp was at first very inefficient for numerical computations, at least in comparison with Fortran. Over the years, however, Lisp compilers have been developed that translate programs into machine code that can perform numerical computations reasonably efficiently. And for special applications, Lisp has been used with great effectiveness.3 Although Lisp has not yet overcome its old reputation as hopelessly inefficient, Lisp is now used in many applications where efficiency is not the central concern. For example, Lisp has become a language of choice for operating-system shell languages and for extension languages for editors and computer-aided design systems.
If Lisp is not a mainstream language, why are we using it as the framework for our discussion of programming? Because the language possesses unique features that make it an excellent medium for studying important programming constructs and data structures and for relating them to the linguistic features that support them. The most significant of these features is the fact that Lisp descriptions of processes, called procedures, can themselves be represented and manipulated as Lisp data. The importance of this is that there are powerful program-design techniques that rely on the ability to blur the traditional distinction between "passive" data and "active" processes. As we shall discover, Lisp's flexibility in handling procedures as data makes it one of the most convenient languages in existence for exploring these techniques. The ability to represent procedures as data also makes Lisp an excellent language for writing programs that must manipulate other programs as data, such as the interpreters and compilers that support computer languages. Above and beyond these considerations, programming in Lisp is great fun.


AIADMK downplays Rajini-Kamal pact
by Special CorrespondentThe ruling AIADMK on Wednesday sought to make light of the statements of Makkal Needhi Maiam founder Kamal Haasan and film star Rajinikanth that they will not mind coming together in politics “for the welfare of Tamil Nadu”, if need be.
“Let them join together. So what?” was the curt response of Deputy Chief Minister O. Panneerselvam to a journalist’s question on the development at Chennai airport. “The AIADMK is an organisation founded by and being run by workers. Our foundation is strong. We are not concerned, whoever comes together,” he added.
Later, at Madurai airport, the Deputy Chief Minister said his party will not be affected by any such development.
Separately, at an event in Chennai, Fisheries Minister D. Jayakumar asserted that when up against a “formidable alliance” led by the AIADMK, the proposed Rajinikanth-Kamal Haasan alliance will get ‘decimated’. Attempts were being made to create an ‘illusion’ about a likely tie-up between the two film stars, he said, adding that Mr. Rajinikanth, Mr. Haasan and fellow actor Vijay will all be “passive forces” in politics.


Brute-force localization, as proposed in Fulkerson et. al 2008.
BK = BLOCK_TEST_BRUTELOC() Initializes the block with the default options.
BK = BLOCK_TEST_BRUTELOC(BK) Executes the block with options and inputs BK.
Required inputs:
- db
The database.
- feat
Features extracted on the database
- hist
Histograms extracted on the database.
- svm
A trained SVM.
- kernel
The kernel the SVM was trained with.
Options:
- bk.rand_seed
Default [] does not change the random seeds.
- bk.scaleby
Downsample the image by this factor before classification. Default 4.
- bk.windowsize
Half-width of the window to use in hisogram computation. Expressed in terms of the non-downsampled image. Default 80.
- bk.classifier
The type of classifier to use. Valid options: 'svm' or 'nn'. Default 'svm'.
- bk.seg_ids
The segment ids to classify. Default [] uses all testing images in the database.
Fetchable attributes:
- test
The classification result. Returns [class confidence] for required input: seg_id.


Package info:
| Package name:: | sudo-1.7.4p4-i486-3_slack13.1.txz |
| Slackware version:: | slackware-13.1 |
| Package category:: | patches |
| Package serie:: | packages |
| Package created:: | 2010-09-15 18:34:00 |
| Package MD5:: | a96494dce9a06eb51a4c26c12599c415 |
PACKAGE SIZE (compressed): 160 K PACKAGE SIZE (uncompressed): 420 K PACKAGE DESCRIPTION: sudo: sudo (give limited root privileges to certain users) sudo: sudo: "sudo" is a command that allows users to execute some commands as sudo: root. The /etc/sudoers file (edited with "visudo") specifies which sudo: users have access to sudo and which commands they can run. "sudo" sudo: logs all its activities to /var/log/ so the system administrator sudo: can keep an eye on things. sudo: |
Mirrors located in Czech Republic
| Protocol | Description | |
|---|---|---|
| http | ftp.linux.cz | Get package |
| ftp | ftp.linux.cz | Get package |
| ftp | ftp.sh.cvut.cz | Get package |
| ftp | ftp.slackware.cz | Get package |
| http | ftp.slackware.cz | Get package |
| ftp |<EMAIL_ADDRESS>| Get package |


blogc-git-receiver
- a simple login shell/git hook to deploy blogc websites
chsh -s $(command -v blogc-git-receiver
) user
blogc-git-receiver provides a PaaS-like way to deploy blogc(1) websites.
When used as a login shell, it will accept git payloads, creating bare repositories
as needed, and installing a hook, that will take care of rebuilding the website each
time someone push something to the master
branch.
The git repository must provide a blogcfile(5) (if blogc-make(1) is installed), or
a Makefile
(or a GNUMakefile
) that should accept the OUTPUT_DIR
variable, and
install built files into the directory pointed out by this variable.
blogc-git-receiver
is part of blogc
project, but isn't tied to blogc(1) or
blogc-make(1). Any repository with Makefile
that builds content and install it to
OUTPUT_DIR
should work with blogc-git-receiver
.
After creating an user (blogc
for the examples), change its shell to
blogc-git-receiver(1):
# chsh -s $(command -v blogc-git-receiver) blogc
Now add ssh keys to /home/blogc/.ssh/authorized_keys
. Every key in
authorized_keys
will be allowed to push to the git repositories, and even
create new ones. It is also possible to add blogc-git-receiver
as a command in
the authorized_keys
file for each key, but this setup is slightly more tricky,
as you may leak shell access to an user by mystake, if you forget to add the command
to a key that should not have shell access. Only use this method if you don't have
another option (e.g. in shared hosting environments that only provide one shell
account), or if you know exactly what you are doing.
Also, make sure to install all the dependencies required by the websites,
including a web server. blogc-git-receiver
can't handle web server virtual hosts.
To deploy a website (e.g. blogc example repository):
$ git clone https://github.com/blogc/blogc-example.git
$ cd blogc-example
$ git remote add blogc blogc@${SERVER_IP}:blogs/blogc-example.git
$ git push blogc master
This will deploy the example to the server, creating a symlink to the built content
in /home/blogc/repos/blogs/blogc-example.git/htdocs
. This symlink should be used
as the document root for the web server virtual host. If this symlink can't be
readed by your webserver for some reason, you can create it in some other directory
by adding the full symlink path to the ~/blogc-git-receiver.ini configuration file:
$ $EDITOR ~/blogc-git-receiver.ini
[repo:blogs/blogc-example.git]
symlink=/path/to/my/symlink
Do not duplicate the section if it already exists, just append the symlink path to it.
If for some reason you want to rebuild the last successful build of a given website,
you can run its pre-receive
hook manually in the server:
# su -s /bin/sh - blogc
$ cd ~/repos/blogs/blogc-example.git
$ ./hooks/pre-receive
This should re-run the last build as if it was pushed to git.
Supposing the usage of nginx as webserver, running as the nginx
user:
# dnf install -y nginx policycoreutils-python-utils
# useradd -m -s $(command -v blogc-git-receiver) blogc
# gpasswd -a nginx blogc
# chmod -R g+rx /home/blogc
# su -c "mkdir /home/blogc/{builds,repos}" -s /bin/sh blogc
# semanage fcontext -a -t httpd_sys_content_t "/home/blogc/(builds|repos)(/.*)?"
# restorecon -R -v /home/blogc
# systemctl restart nginx
After running these commands, the machine is ready to be used.
Users can rely on blogc-git-receiver
to mirror repositories to a remote Git
repository (e.g. a free Bitbucket private repository).
Please note that the blogc
user must be able to push to the remote repository, and
that any content manually pushed to the remote repository is overwritten by
blogc-git-receiver
.
Some reasonable ways to allow the blogc
user to push to the remote repository are:
The mirroring feature wont't block a git push
, it will just raise warnings. That
means that if an error happens when mirroring the repository, the deploy will still
succeed. Users should pay attention to the git hook logs, to avoid losing data
due to repositories not being mirrored.
This feature just requires adding a remote called mirror
to the bare repository
in the server, or creating a configuration file (~/blogc-git-receiver.ini), that is
a simple INI-style file where each repository is represented by a section and the
value of the mirror
variable is the URL that should be used to push.
Edit configuration file (recommended, do not duplicate the section if it already exists, just append the mirror to it):
# su -s /bin/sh - blogc
$ $EDITOR ~/blogc-git-receiver.ini
[repo:myblog.git]
mirror=$YOUR_GIT_MIRROR_URL
Or to add the mirror
remote:
# su -s /bin/sh - blogc
$ cd repos
$ git init --bare myblog.git # if not created yet
$ cd myblog.git
$ git remote add --mirror=push mirror $YOUR_GIT_MIRROR_URL
Both examples assume that your repository is named myblog.git
.
The authentication must be done with a password-less SSH key created by the blogc
user.
As the git push --mirror
call is automated, users must disable SSH strict host
checking in SSH's ~/.ssh/config
file:
Host bitbucket.org
StrictHostKeyChecking no
The example uses bitbucket.org
as remote host, that should be changed if needed.
To change this file, users must login with /bin/sh
or any other "real" shell,
as root
:
# su -s /bin/sh - blogc
If for some reason you want to push the repository of a given website to remote
mirror, you can run its post-receive
hook manually in the server:
# su -s /bin/sh - blogc
$ cd ~/repos/blogs/blogc-example.git
$ ./hooks/post-receive
WARNING: If you push manually and your server's repository is empty, you'll clean your mirror repository.
The following variables can be set in the SSH Server (usually in ~/.ssh/environment
)
to change blogc-git-receiver
behaviour:
BLOGC_GIT_RECEIVER_BASE_DIR
blogc-git-receiver
. Defaults
to user's home directory. Useful for shared hosting environments that only provide
one shell user.BLOGC_GIT_RECEIVER_BUILDS_DIR
$BLOGC_GIT_RECEIVER_BASE_DIR/builds
. This directory must be readable by
your webserver. This variable is useful to keep your git repositories unreadable,
while letting your webserver access the built files. In this case, users need to
also define custom symlinks for every repository in
$BLOGC_GIT_RECEIVER_BASE_DIR/blogc-git-receiver.ini
, because the default
htdocs
symlink inside the git repositories won't be acessible by the webserver.The following variable is exported by blogc-git-receiver
when building websites
with make(1):
BLOGC_GIT_RECEIVER=1
-D
).Please report any issues to: https://github.com/blogc/blogc
Rafael G. Martins<EMAIL_ADDRESS>blogc(1), git(1), git-shell(1), chsh(1), su(1), make(1)


--- aliases: [up-and-running-with-blogdown] projects: [up-running-blogdown] title: Up & Running with blogdown authors: [alison] date: '2017-06-12' tags: [blogdown] categories: - blogdown - hugo - netlify summary: A guide to getting up and running with blogdown, GitHub, and Netlify image: caption: '[Photo by Lindsay Henwood on Unsplash](https://unsplash.com/photos/7_kRuX1hSXM)' focal_point: '' output: blogdown::html_page: toc: true number_sections: true toc_depth: 1 ---
Before you start, I recommend reading the following:
blogdown
: Creating Websites with R Markdown by Yihui Xie and Amber Thomasblogdown
, Hugo, and GitHub pages also by Amber ThomasI also found this comment by Eric Nantz, the creator of the R-Podcast, in the rbind/support
issues section on GitHub to be helpful:
Even with all the great resources I listed above, getting myself up and running took a few tries, so in this post I’m passing along what ended up working for me. Everyone’s mileage may vary, though, depending on your operating system and your approach. About me: I am a macOS user, and I use R, RStudio, Git (usually via GitLab, sometimes via GitHub), and terminal regularly, so I’m assuming familiarity here with all of these. If that is not you, here are some places to get started:
I also have Xcode and Homebrew installed- you will probably need these to download Hugo. If you don’t have either but are on a mac, this link may help:
Finally, I did not want to learn more about a lot of things! For instance, the nitty gritty of static site generators and how domain names work. I am a new mom, and just in the process of writing all this up, I filled up my tea mug twice with ice cold water, and filled my water bottle with scalding hot water. So, where offered, I followed the advice of Yihui and Amber. For example:
Go online to your GitHub account, and create a new repository (check to initialize with a README
but don’t add .gitignore
- this will be taken care of later). For naming your repo, consider your future deployment plan:
rbind
organization here. {{% /alert %}}yourgithubusername.github.io
(so mine would have been apreshill.github.io
). If you are going this route, I suggest you follow Amber’s instructions instead of mine!Go to the main page of your new repository, and under the repository name, click the green Clone or download button.
In the Clone with HTTPs section, click on the clipboard icon to copy the clone URL for your new repository. You’ll paste this text into terminal in the next section.
Now you will clone your remote repository and create a local copy on your computer so you can sync between the two locations (using terminal or your alternative command line tool for a Windows machine).
Use cd
to navigate into the directory where you want your repo to be
Once there, type: git clone [paste]
. So my command looked like this:
git clone https://github.com/apreshill/apreshill.git
And this is what printed to my terminal window:
Cloning into 'apreshill'...
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.
blogdown
from your RStudio console. If you already have devtools
installed like I did, you can just use the second line below:if (!requireNamespace("devtools")) install.packages("devtools")
devtools::install_github("rstudio/blogdown")
blogdown
package helper function:blogdown::install_hugo()
# or
library(blogdown)
install_hugo()
{{% alert note %}} This is where my instructions diverge from Ed’s- he states that blogdown
won’t create a website in your root folder because the README.md
file is already there. I didn’t find that to be the case- I tested this with a new site as well. If one way doesn’t work for you, try the other! {{% /alert %}}
File -> New Project -> Existing Directory
, then browse to the directory on your computer where your GitHub repo is and click on the Create Project button.*gitignore
file. This file should be viewable in your file viewer pane in RStudio. Below is what it should look like: the first four lines will automatically be in this file if you have set up your RStudio Project, but if you plan to use Netlify to deploy, you need to add the public/
line (read about here.).Rproj.user
.Rhistory
.RData
.Ruserdata
blogdown
.DS_Store # if a windows user, Thumbs.db instead
public/ # if using Netlify
Now you can finally build your site using the blogdown::new_site()
function. But first you should at least think about themes…
There are over 90 Hugo themes. So I went back to the blogdown
book. Thankfully, Yihui and Amber offer “to save you some time, we list a few themes below that match our taste…”. Huzzah- I went with hugo-academic! Whatever theme you choose, you’ll need to pick one of 3 ways to make your new site:
blogdown::new_site() # default theme is lithium
new_site
function:# for example, create a new site with the academic theme
blogdown::new_site(theme = "gcushen/hugo-academic", theme_example = TRUE)
library(blogdown)
new_site() # default theme is lithium
# need to stop serving so can use the console again
install_theme("gcushen/hugo-academic", theme_example = TRUE, update_config = TRUE)
{{% alert note %}} Now is a good time to re-read about blogdown::serve_site()
and how LiveReload works (and how it blocks your R console by default) {{% /alert %}}
I recommend setting theme_example = TRUE
- some themes won’t provide an example site, but the academic theme did and I found it helpful to see. You can always delete the example content.
In your project in RStudio, go to the top menu bar of RStudio and select Tools -> Project Options
and update following Yihui and Amber’s instructions.
Relevant reading:
blogdown
book chapter on configurationconfig.toml
fileNow, edit the baseurl
in your config.toml
file. The URL should always end with a /
trailing slash. At this point, you probably haven’t deployed your site yet, so to view it locally you can use the Serve Site add-in, or run the blogdown::serve_site
function. Both of these baseurls worked for me when viewing locally:
baseurl = "https://example.com/"
baseurl = "/"
{{% alert warning %}} Make sure that the baseurl =
listed ends with a trailing slash /
! {{% /alert %}}
Go ahead and edit all the other elements in the config.toml
file now as you please- this is how you personalize your site!
Relevant reading:
Addins: use them- you won’t need the blogdown
library loaded in the console if you use the Addins. My workflow in RStudio at this point (again, just viewing locally because we haven’t deployed yet) works best like this:
knit
!)- the console will reload, the viewer pane will update, and if you hit refresh in the browser your local view will also be updatedHaving blogdown::serve_site
running locally with LiveReload is especially useful as you can immediately see if you have totally screwed up. For example, in editing my about.md
file, this error popped up in my console after making a change and I was able to fix the error right away:
Started building sites ...
ERROR 2017/06/08 16:22:34 failed to parse page metadata for home/about.md: (18, 6): missing comma
Error: Error building site: Errors reading pages: Error: failed to parse page metadata for home/about.md: (18, 6): missing comma for about.md
The above workflow is only for editing existing files or posts, but not for creating new posts. For that, read on…
Relevant reading:
blogdown
book chapter on RStudio IDEblogdown
book chapter on output formats: on .md versus .Rmd postsBottom line:
Use the New Post addin. But, you need the console to do this, so you have to stop blogdown::serve_site
by clicking on the red Stop button first. The Addin is a Shiny interface that runs this code in your console: blogdown:::new_post_addin()
. So, your console needs to be unblocked for it to run. You also need to be “in” your RStudio project or it won’t work.
Relevant reading:
Whether you do a markdown or R Markdown post (see below), you should know that in the YAML front matter of your new file, you can add draft: TRUE
and you will be able to preview your post using blogdown::serve_site()
, but conveniently your post will not show up on your deployed site until you set it to false. Because this is a function built into Hugo, all posts (draft or not) will still end up in your GitHub repo though.
Pick one of 2 methods:
.md
post:blogdown::new_post()
blogdown::new_post(ext = '.md') # md is the default!
Here are the ?new_post
arguments:
new_post(title, kind = "", open = interactive(),
author = getOption("blogdown.author"), categories = NULL, tags = NULL,
date = Sys.Date(), file = NULL, slug = NULL,
title_case = getOption("blogdown.title_case"),
subdir = getOption("blogdown.subdir", "post"),
ext = getOption("blogdown.ext", ".md"))
{{% alert note %}} Remember to use the Serve Site addin again so that you can immediately view your changes with every save using LiveReload. {{% /alert %}}
Again, you have your choice of one of 2 methods:
.Rmd
post:blogdown::new_post(ext = '.Rmd') # md is the default!
After you edit your .Rmd
post, in addition to saving the changes in your .Rmd
file, you must use blogdown::serve_site
- this is how the output html
file needs to be generated.
{{% alert warning %}} Do not knit your .Rmd
posts- use blogdown::serve_site
instead. If you happen to hit the knit button, just Serve Site again to rewrite the .html
file. {{% /alert %}}
Ultimately, your YAML front matter looks something like this; note that some but not all features of rmarkdown::html_document
are supported in blogdown
:
---
title: "My Awesome Post"
author: "John Doe"
date: "2017-02-14"
output:
blogdown::html_page:
toc: true
toc_depth: 1
number_sections: true
fig_width: 6
---
{{% alert note %}} Remember to use the Serve Site addin again so that you can immediately view your changes with every save using LiveReload and your .html
file is properly output. {{% /alert %}}
If you want to include an image that is not a figure created from an R chunk, the recommended method is to:
/static/img/
folder, then![my-image](/img/my-image.png)
Deploying in Netlify through GitHub is smooth. Yihui and Amber give some beginner instructions, but Netlify is so easy, I recommend that you skip dragging your public
folder in and instead automate the process through GitHub.
New site from Git -> Continuous Deployment: GitHub
.From there, Netlify will allow you to select from your existing GitHub repositories. You’ll pick the repo you’ve been working from with blogdown
, then you’ll configure your build. This involves specifying two important things: the build command and the publish directory (this should be public
).
hugo
will build and deploy with the version 0.17 of hugo
. You can specify a specific hugo
release like this: hugo_0.15
. Currently 0.13
, 0.14
, 0.15
, 0.16
, 0.17
, 0.18
and 0.19
are supported. For version 0.20
and above, you’ll need to create a Build environment variable called HUGO_VERSION
and set it to the version of your choice.” I opted for the former, and specified hugo_0.19
.You can check your hugo
version in terminal using the command hugo version
. This is what my output looked like, so I could run version 0.20
if I wanted to through Netlify, but I went with 0.19
and it works just fine.
$ hugo version
Hugo Static Site Generator v0.20.7 darwin/amd64 BuildDate: 2017-05-08T18:37:40-07:00
Netlify will deploy your site and assign you a random subdomain name of the form random-word-12345.netlify.com
. Mine was particularly unfortunate, with the random word garbage-collector-janice
. You should know that you can change this; I changed mine to apreshill.netlify.com
.
{{% alert note %}} Anytime you change your subdomain name, you need to update the baseurl
in your config.toml
file (so I changed mine to baseurl = “https://apreshill.netlify.com/”). {{% /alert %}}
At this point, you should be up and running with blogdown
, GitHub, and Netlify, but here are some ideas if you want to go further…
I like to tinker with default theme settings like colors and fonts. Every Hugo theme is structured a little differently, but if you are interested, you can check out my custom css to see how I customized the academic theme, which provides a way to link to a custom CSS file in the config.toml
file:
# Link custom CSS and JS assets
# (relative to /static/css and /static/js respectively)
custom_css = ["blue.css"]
I used Formspree to make a contact form, which is an online service (managed on GitHub) that allows you to add an HTML form to your static site. No registration, just use the form and confirm your email address once. I added the following code into my contact widget:
<form<EMAIL_ADDRESS>method="POST">
Your name:
<input type="text" name="name" required="required" placeholder="here">

Your email:
<input type="email" name="_replyto" required="required" placeholder="here">

Your message:

<textarea rows="4" name="message" id="message" required="required" class="form-control" placeholder="I can't wait to read this!"></textarea>
<input type="hidden" name="_next" value="/html/thanks.html" />
<input type="submit" value="Send" name="submit" class="btn btn-primary btn-outline">
<input type="hidden" name="_subject" value="Website message" />
<input type="text" name="_gotcha" style="display:none" />
</form>
*.rbind.io
domain namesYou may want a different domain name than the one provided by Netlify. I opted for a free subdomain *.rbind.io
offered by RStudio. To do the same, head over to the rbind/support GitHub page and open a new issue. All you need to do is let them know what your Netlify subdomain name is (*.netlify.com
), and what you want your subdomain name to be (*.rbind.io
). The awesome rbind
support team will help you take it from there!
{{% alert note %}} Again, you will need to update the baseurl
in your config.toml
file to reflect your new rbind subdomain name (so mine is baseurl = “https://alison.rbind.io/”). {{% /alert %}}


When operating with view tags, please wait a bit more to load the information in the Current tags area. Sorry for the inconvenience!


|
| enum | EmberStatus {
EMBER_SUCCESS = 0x00,
EMBER_ERR_FATAL = 0x01,
EMBER_BAD_ARGUMENT = 0x02,
EMBER_NOT_FOUND = 0x03,
EMBER_EEPROM_MFG_STACK_VERSION_MISMATCH = 0x04,
EMBER_INCOMPATIBLE_STATIC_MEMORY_DEFINITIONS = 0x05,
EMBER_EEPROM_MFG_VERSION_MISMATCH = 0x06,
EMBER_EEPROM_STACK_VERSION_MISMATCH = 0x07,
EMBER_NO_BUFFERS = 0x18,
EMBER_SERIAL_INVALID_BAUD_RATE = 0x20,
EMBER_SERIAL_INVALID_PORT = 0x21,
EMBER_SERIAL_TX_OVERFLOW = 0x22,
EMBER_SERIAL_RX_OVERFLOW = 0x23,
EMBER_SERIAL_RX_FRAME_ERROR = 0x24,
EMBER_SERIAL_RX_PARITY_ERROR = 0x25,
EMBER_SERIAL_RX_EMPTY = 0x26,
EMBER_SERIAL_RX_OVERRUN_ERROR = 0x27,
EMBER_MAC_TRANSMIT_QUEUE_FULL = 0x39,
EMBER_MAC_UNKNOWN_HEADER_TYPE = 0x3A,
EMBER_MAC_ACK_HEADER_TYPE = 0x3B,
EMBER_MAC_SCANNING = 0x3D,
EMBER_MAC_NO_DATA = 0x31,
EMBER_MAC_JOINED_NETWORK = 0x32,
EMBER_MAC_BAD_SCAN_DURATION = 0x33,
EMBER_MAC_INCORRECT_SCAN_TYPE = 0x34,
EMBER_MAC_INVALID_CHANNEL_MASK = 0x35,
EMBER_MAC_COMMAND_TRANSMIT_FAILURE = 0x36,
EMBER_MAC_NO_ACK_RECEIVED = 0x40,
EMBER_MAC_RADIO_NETWORK_SWITCH_FAILED = 0x41,
EMBER_MAC_INDIRECT_TIMEOUT = 0x42,
EMBER_SIM_EEPROM_ERASE_PAGE_GREEN = 0x43,
EMBER_SIM_EEPROM_ERASE_PAGE_RED = 0x44,
EMBER_SIM_EEPROM_FULL = 0x45,
EMBER_SIM_EEPROM_INIT_1_FAILED = 0x48,
EMBER_SIM_EEPROM_INIT_2_FAILED = 0x49,
EMBER_SIM_EEPROM_INIT_3_FAILED = 0x4A,
EMBER_SIM_EEPROM_REPAIRING = 0x4D,
EMBER_ERR_FLASH_WRITE_INHIBITED = 0x46,
EMBER_ERR_FLASH_VERIFY_FAILED = 0x47,
EMBER_ERR_FLASH_PROG_FAIL = 0x4B,
EMBER_ERR_FLASH_ERASE_FAIL = 0x4C,
EMBER_ERR_BOOTLOADER_TRAP_TABLE_BAD = 0x58,
EMBER_ERR_BOOTLOADER_TRAP_UNKNOWN = 0x59,
EMBER_ERR_BOOTLOADER_NO_IMAGE = 0x05A,
EMBER_DELIVERY_FAILED = 0x66,
EMBER_BINDING_INDEX_OUT_OF_RANGE = 0x69,
EMBER_ADDRESS_TABLE_INDEX_OUT_OF_RANGE = 0x6A,
EMBER_INVALID_BINDING_INDEX = 0x6C,
EMBER_INVALID_CALL = 0x70,
EMBER_COST_NOT_KNOWN = 0x71,
EMBER_MAX_MESSAGE_LIMIT_REACHED = 0x72,
EMBER_MESSAGE_TOO_LONG = 0x74,
EMBER_BINDING_IS_ACTIVE = 0x75,
EMBER_ADDRESS_TABLE_ENTRY_IS_ACTIVE = 0x76,
EMBER_TRANSMISSION_SUSPENDED = 0x77,
EMBER_MATCH = 0x78,
EMBER_DROP_FRAME = 0x79,
EMBER_PASS_UNPROCESSED = 0x7A,
EMBER_TX_THEN_DROP = 0x7B,
EMBER_NO_SECURITY = 0x7C,
EMBER_COUNTER_FAILURE = 0x7D,
EMBER_AUTH_FAILURE = 0x7E,
EMBER_UNPROCESSED = 0x7F,
EMBER_ADC_CONVERSION_DONE = 0x80,
EMBER_ADC_CONVERSION_BUSY = 0x81,
EMBER_ADC_CONVERSION_DEFERRED = 0x82,
EMBER_ADC_NO_CONVERSION_PENDING = 0x84,
EMBER_SLEEP_INTERRUPTED = 0x85,
EMBER_PHY_TX_SCHED_FAIL = 0x87,
EMBER_PHY_TX_UNDERFLOW = 0x88,
EMBER_PHY_TX_INCOMPLETE = 0x89,
EMBER_PHY_INVALID_CHANNEL = 0x8A,
EMBER_PHY_INVALID_POWER = 0x8B,
EMBER_PHY_TX_BUSY = 0x8C,
EMBER_PHY_TX_CCA_FAIL = 0x8D,
EMBER_PHY_TX_BLOCKED = 0x8E,
EMBER_PHY_ACK_RECEIVED = 0x8F,
EMBER_NETWORK_UP = 0x90,
EMBER_NETWORK_DOWN = 0x91,
EMBER_JOIN_FAILED = 0x94,
EMBER_MOVE_FAILED = 0x96,
EMBER_CANNOT_JOIN_AS_ROUTER = 0x98,
EMBER_NODE_ID_CHANGED = 0x99,
EMBER_PAN_ID_CHANGED = 0x9A,
EMBER_CHANNEL_CHANGED = 0x9B,
EMBER_NO_BEACONS = 0xAB,
EMBER_RECEIVED_KEY_IN_THE_CLEAR = 0xAC,
EMBER_NO_NETWORK_KEY_RECEIVED = 0xAD,
EMBER_NO_LINK_KEY_RECEIVED = 0xAE,
EMBER_PRECONFIGURED_KEY_REQUIRED = 0xAF,
EMBER_KEY_INVALID = 0xB2,
EMBER_INVALID_SECURITY_LEVEL = 0x95,
EMBER_APS_ENCRYPTION_ERROR = 0xA6,
EMBER_SECURITY_STATE_NOT_SET = 0xA8,
EMBER_KEY_TABLE_INVALID_ADDRESS = 0xB3,
EMBER_SECURITY_CONFIGURATION_INVALID = 0xB7,
EMBER_TOO_SOON_FOR_SWITCH_KEY = 0xB8,
EMBER_SIGNATURE_VERIFY_FAILURE = 0xB9,
EMBER_KEY_NOT_AUTHORIZED = 0xBB,
EMBER_SECURITY_DATA_INVALID = 0xBD,
EMBER_NOT_JOINED = 0x93,
EMBER_NETWORK_BUSY = 0xA1,
EMBER_INVALID_ENDPOINT = 0xA3,
EMBER_BINDING_HAS_CHANGED = 0xA4,
EMBER_INSUFFICIENT_RANDOM_DATA = 0xA5,
EMBER_SOURCE_ROUTE_FAILURE = 0xA9,
EMBER_MANY_TO_ONE_ROUTE_FAILURE = 0xAA,
EMBER_STACK_AND_HARDWARE_MISMATCH = 0xB0,
EMBER_INDEX_OUT_OF_RANGE = 0xB1,
EMBER_TABLE_FULL = 0xB4,
EMBER_TABLE_ENTRY_ERASED = 0xB6,
EMBER_LIBRARY_NOT_PRESENT = 0xB5,
EMBER_OPERATION_IN_PROGRESS = 0xBA,
EMBER_TRUST_CENTER_EUI_HAS_CHANGED = 0xBC,
EMBER_NVM3_TOKEN_NO_VALID_PAGES = 0xC0,
EMBER_NVM3_ERR_OPENED_WITH_OTHER_PARAMETERS = 0xC1,
EMBER_NVM3_ERR_ALIGNMENT_INVALID = 0xC2,
EMBER_NVM3_ERR_SIZE_TOO_SMALL = 0xC3,
EMBER_NVM3_ERR_PAGE_SIZE_NOT_SUPPORTED = 0xC4,
EMBER_NVM3_ERR_TOKEN_INIT = 0xC5,
EMBER_NVM3_ERR_UPGRADE = 0xC6,
EMBER_NVM3_ERR_UNKNOWN = 0xC7,
EMBER_APPLICATION_ERROR_0 = 0xF0,
EMBER_APPLICATION_ERROR_1 = 0xF1,
EMBER_APPLICATION_ERROR_2 = 0xF2,
EMBER_APPLICATION_ERROR_3 = 0xF3,
EMBER_APPLICATION_ERROR_4 = 0xF4,
EMBER_APPLICATION_ERROR_5 = 0xF5,
EMBER_APPLICATION_ERROR_6 = 0xF6,
EMBER_APPLICATION_ERROR_7 = 0xF7,
EMBER_APPLICATION_ERROR_8 = 0xF8,
EMBER_APPLICATION_ERROR_9 = 0xF9,
EMBER_APPLICATION_ERROR_10 = 0xFA,
EMBER_APPLICATION_ERROR_11 = 0xFB,
EMBER_APPLICATION_ERROR_12 = 0xFC,
EMBER_APPLICATION_ERROR_13 = 0xFD,
EMBER_APPLICATION_ERROR_14 = 0xFE,
EMBER_APPLICATION_ERROR_15 = 0xFF
} |
| |
Return-code definitions for EmberZNet stack API functions.
See Status Codes for documentation.
License
Copyright 2018 Silicon Laboratories Inc. www.silabs.com
The licensor of this software is Silicon Laboratories Inc. Your use of this software is governed by the terms of Silicon Labs Master Software License Agreement (MSLA) available at www.silabs.com/about-us/legal/master-software-license-agreement. This software is distributed to you in Source Code format and is governed by the sections of the MSLA applicable to Source Code.


[§209E-7] Government assistance; prohibition. There shall be no duplication of existing state tax incentives to qualified business firms which locate in an enterprise zone. [L 1986, c 78, pt of §1]


BlueXolo Test Plan
Introduction
Test Environment
Scope
Test Cases
| Test Area | Component | Type | ID | Scenario | Description | Tag | Pre-Conditions | Steps | Expected Behavior | Status | Result |
|---|---|---|---|---|---|---|---|---|---|---|---|
| New Feature | Tutorial | Functional | TUTORIAL_TESTCASE_A | Scenario | Description of this test case | Security | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Not excuted | Failed |
| Enhancement | Collections | Non Functional | COLLECTIONS_TESTCASE_Enhancement | Scenario | Description of this test case | User Acceptance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | On Hold | Passed |
| New Feature | Keyword | Functional | KEYWORD_NEW_FEATURE | Scenario | Description of this test case | Performance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Executed | Failed |
| Enhancements | Login | Non Functional | LOGIN_Enhancement | Scenario | Description of this test case | UX | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Blocked | Failed |
| New Feature | Tutorial | Functional | TUTORIAL_TESTCASE_A | Scenario | Description of this test case | Security | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Not excuted | Failed |
| Enhancement | Collections | Non Functional | COLLECTIONS_TESTCASE_Enhancement | Scenario | Description of this test case | User Acceptance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | On Hold | Passed |
| New Feature | Keyword | Functional | KEYWORD_NEW_FEATURE | Scenario | Description of this test case | Performance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Executed | Failed |
| Enhancements | Login | Non Functional | LOGIN_Enhancement | Scenario | Description of this test case | UX | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Blocked | Failed |
| New Feature | Tutorial | Functional | TUTORIAL_TESTCASE_A | Scenario | Description of this test case | Security | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Not excuted | Failed |
| Enhancement | Collections | Non Functional | COLLECTIONS_TESTCASE_Enhancement | Scenario | Description of this test case | User Acceptance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | On Hold | Passed |
| New Feature | Keyword | Functional | KEYWORD_NEW_FEATURE | Scenario | Description of this test case | Performance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Executed | Failed |
| Enhancements | Login | Non Functional | LOGIN_Enhancement | Scenario | Description of this test case | UX | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Blocked | Failed |
| New Feature | Tutorial | Functional | TUTORIAL_TESTCASE_A | Scenario | Description of this test case | Security | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Not excuted | Failed |
| Enhancement | Collections | Non Functional | COLLECTIONS_TESTCASE_Enhancement | Scenario | Description of this test case | User Acceptance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | On Hold | Passed |
| New Feature | Keyword | Functional | KEYWORD_NEW_FEATURE | Scenario | Description of this test case | Performance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Executed | Failed |
| Enhancements | Login | Non Functional | LOGIN_Enhancement | Scenario | Description of this test case | UX | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Blocked | Failed |
| New Feature | Tutorial | Functional | TUTORIAL_TESTCASE_A | Scenario | Description of this test case | Security | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Not excuted | Failed |
| Enhancement | Collections | Non Functional | COLLECTIONS_TESTCASE_Enhancement | Scenario | Description of this test case | User Acceptance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | On Hold | Passed |
| New Feature | Keyword | Functional | KEYWORD_NEW_FEATURE | Scenario | Description of this test case | Performance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Executed | Failed |
| Enhancements | Login | Non Functional | LOGIN_Enhancement | Scenario | Description of this test case | UX | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Blocked | Failed |
| New Feature | Tutorial | Functional | TUTORIAL_TESTCASE_A | Scenario | Description of this test case | Security | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Not excuted | Failed |
| Enhancement | Collections | Non Functional | COLLECTIONS_TESTCASE_Enhancement | Scenario | Description of this test case | User Acceptance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | On Hold | Passed |
| New Feature | Keyword | Functional | KEYWORD_NEW_FEATURE | Scenario | Description of this test case | Performance | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Executed | Failed |
| Enhancements | Login | Non Functional | LOGIN_Enhancement | Scenario | Description of this test case | UX | All the preconditions | 1. Step a 2. Step b 3. Step c | Behavior | Blocked | Failed |
Functional New Features
Functional Enhancements
Functional New Features - Successful / Failed
Total Test: 0, Passed: 0, Failed: 0
Functional Enhancements - Successful / Failed
Total Test: 0, Passed: 0, Failed: 0
Non Functional New Features
Non Functional Enhancements
Non Functional New Features - Successful / Failed
Total Test: 0, Passed: 0, Failed: 0
Non Functional Enhancements - Successful / Failed
Total Test: 0, Passed: 0, Failed: 0


Doctors Name
Symptoms
Category:
Medical
Vision
Dental
Services
Therapy
Specialty
Female
Male
Either
Sort By
Ascending Name
Descending Name
Best Match ↑
Best Match ↓
Doctor's Rating ↑
Doctor's Rating ↓
Distance ↑
Distance ↓
Submit
Return


--- layout: post status: publish published: true title: Delhi people on social media, leaving behind mumbai and other cities author: display_name: vishvendra login: vishvendra email<EMAIL_ADDRESS>url: '' author_login: vishvendra author_email<EMAIL_ADDRESS>wordpress_id: 389 wordpress_url: http://vishvendrasingh.com/?p=389 date: '2016-10-25 04:13:37 +0530' date_gmt: '2016-10-25 04:13:37 +0530' categories: - Common - News tags: [] comments: - id: 104 author: Bhavendra Kori author_email<EMAIL_ADDRESS>author_url: '' date: '2016-10-25 04:38:03 +0530' date_gmt: '2016-10-25 04:38:03 +0530' content: bro where is Ahmedabad in this social media activeness - id: 105 author: Vishvendra Singh author_email<EMAIL_ADDRESS>author_url: '' date: '2016-10-25 04:40:52 +0530' date_gmt: '2016-10-25 04:40:52 +0530' content: I was trying to avoid this this but ahmedabad is 4580, so behind kolkata and ahead of Chandigarh :) ---
Hi, there this is what our bot found on internet that people from delhi are more active on internet in comparison to other cities. You can verify these results on onematrix.org
Delhi 18516
Mumbai 14577
Chennai 9206
kolkata 6378
Chandigarh 2748


|
|
virtual void | execute (istream &s) |
| |
| Public Member Functions inherited from IfaceDecompCommand |
|
virtual void | setData (IfaceStatus *root, IfaceData *data) |
| |
|
virtual string | getModule (void) const |
| |
|
virtual IfaceData * | createData (void) |
| |
|
virtual void | iterationCallback (Funcdata *fd) |
| |
|
void | iterateFunctionsAddrOrder (void) |
| |
|
void | iterateFunctionsLeafOrder (void) |
| |
| Public Member Functions inherited from IfaceCommand |
|
void | addWord (const string &temp) |
| |
|
void | removeWord (void) |
| |
|
const string & | getCommandWord (int4 i) const |
| |
|
void | addWords (const vector< string > &wordlist) |
| |
|
int4 | numWords (void) const |
| |
|
void | commandString (string &res) const |
| |
|
int4 | compare (const IfaceCommand &op2) const |
| |
The documentation for this class was generated from the following files:


Brian Kerney (/ˈKERN-E/; born April 23, 1977) is an American professional wrestler, actor, television presenter, and former rapper currently signed to WWE. Widely regarded as one of the greatest professional wrestlers of all time, he is tied with Ric Flair for the most world championship reigns in professional wrestling history.
4 Amazing Facts About Brian You Wont Believe
Brian is familiar with html and css
Brian had a brief stint as a host on the Food Network with his show, Brian cooks beans sadly, it was cancelled after 3 episodes
Brian played 3 seasons as the relief kicker for the Buffalo Bills before a horrible pinky accident sidelined him


--- layout: post title: "Register for UNICUS OLYMPIADS" subtitle: "India’s first Summer Olympiad exam" date: 2020-05-20 10:45:13 -0400 background: '/img/posts/logo.png' ---
The Unicus Mathematics Olympiad (UMO) is an international competitive exam held online as well as offline (pen/paper) for students in classes 1-11 (year 2020-21). Since various Olympiads are based on curriculum which doesn’t get complete on time, Unicus Olympiads provide a great platform to assess student’s practical application based on the concepts they have studied. Students will be provided with three Mock Tests to practice before the Final Exam. The Mock Tests can be attempted for 3 times. The exam will be a MCQ-type test. The students of classes 2 to 11 need to complete the test in 60 minutes while students of class 1 need to complete in 45 minutes.
The exam consists of two sections-
A combination of CBSE and ICSE syllabus is followed for preparing the test papers. To check the complete syllabus for UMO, visit here. The medium of the exam is English. The syllabus for classes 3rd to 11th will cover the topics of the previous 2 classes passed by the student while the syllabus of class 2nd covers the topics of class 1. The syllabus of class 1st covers the topics of pre-primary classes. To know more, click here.
21st July 2020/30th July 2020
For classes 2 to 11, the fee per subject per student is Rs. 225 for students studying and residing in India. While for classes 1, the fee per subject, per student is Rs. 175.
You can register as an individual participant. The exam is conducted online using laptop or desktop with a good Internet connection and webcam. It can't be taken using a mobile device. As the online mode of exam will be proctored, access to webcam will be compulsory for the Final Exam. The student will have to take exam from home.
Students from classes 1-11 (year 2020-21) are eligible to give Unicus Olympiads. Prospectus containing the registration forms are sent to all the schools registered with Unicus Olympiads.


| Claim
|
{{element.claim}} | Created Date
|
{{element.createdDate | date:'medium'}} | Created Date
|
{{element.ratingName}} | Created Date
|
{{element.claimantName}} | Actions |
|---|


[gecode-users] Construct a variables of a model with variables from another model
Christian Schulte
cschulte at kth.se
Thu Jul 4 10:20:10 CEST 2013
Hi,
Your idea does not work: passing an IntVarArgs to an IntVarArray makes a
copy of the array but not of the variables.
What you can do, though, is: (a) create an IntVarArray of the right size and
with variables from Int::Limits::min to Int::Limits::max (b) use a dom
function that can constraint a variable to the domain of some other variable
(this is new in 4.*, check MPG).
Cheers
Christian
--
Christian Schulte, Professor of Computer Science, KTH,
www.ict.kth.se/~cschulte/
From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On Behalf
Of Farshid Hassani Bijarbooneh
Sent: Wednesday, July 03, 2013 10:11 PM
To: users at gecode.org
Subject: [gecode-users] Construct a variables of a model with variables from
another model
Hi,
I have two Gecode models and in one (say class A) I create variables and I
want the variables in the other class (say class B) be initialised with the
domains of a subset of variables from class A. This is similar to the
'kakuro.cpp' case study example in MPG with one difference that I want to
initialise those variables in class B to take the exact domain as the
variables passed from class A. I know this is possible by passing an array
of IntSet and a Dom constraint to propagate the domains of the variables in
class B, but I wanted to directly use the constructor of the IntVarArray:
IntVarArray (Space &home, const IntVarArgs &a)
Initialize from integer variable argument array a (copy elements).
I attached a minimal example 'test.cpp' to demonstrate this problem. In the
attached example class A is called PassVar and class B is called
DistinctTest. The example finds the solutions to the model of class
DistinctTest but it fails at class PassVar by throwing a segmentation fault,
and I don't see why that is the case. If I remove the distinct constraint in
class DistinctTest then both classes can successfully find all the
solutions. According to Gecode reference initialising an IntVarArray with (
<file:///\\Users\farshidhassanibijarbooneh\Downloads\gecode-doc-4.0.0\classG
ecode_1_1Space.html> Space &home, const
<file:///\\Users\farshidhassanibijarbooneh\Downloads\gecode-doc-4.0.0\classG
ecode_1_1IntVarArgs.html> IntVarArgs &
<file:///\\Users\farshidhassanibijarbooneh\Downloads\gecode-doc-4.0.0\set-ex
pr_8cpp.html#ab4e3456f754f4608a3d7f4c5de43a6a5> a) should only initialise
the new variables by copying the elements, but I think this might not to be
the case here. Can you please have a look at the code and let me know if I'm
doing something wrong here.
Best regards,
Farshid
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gecode.org/pipermail/users/attachments/20130704/e32991c3/attachment.html>
More information about the users
mailing list


Sir, Investment and Cooperation Opportunity. Compliments and greetings to you. Haven found you listed with your trade commission in our country; it is our wish to do business with you, hence your receipt of this letter. The purpose of this letter is to introduce ourselves to you, we are a Middle East Business consultancy, offering business advisor services in the region, we are not a very big company, but when suddenly confronted with the task of investing funds in your country exceeding our capacity we decided to seek a partner, because we have never done business in your country. We are brokering an Investment deal in your country on behalf of a client of our firm. This deal will involve the eventual investment of USD 25 M. (Twenty Five Million Dollars) in your country. We are by this letter offering you our partnership, so as to allow us have you as representative and manager of invested funds in your country. Since we can not determine if this email is still functional and also your willingness we have kept this proposal brief. If you are interested in this offer of partnership, please respond and give us your full contact details (as preferred for this interaction) plus company profile and in response we will send you an elaborate proposal and details of this offer. Your expedient response will be appreciated. Thank you. El Hadji Abdul Mohamed. Managing Partner, HST&Associates.