Reinforcement Learning (RL) is about finding optimal actions automatically.
So you have an environment env
which has
env.reset() -> None
: Start a new episode. This could be a new game in the case of chess.env.step(action) -> observation, reward, is_done, additional_information
: Make a step in the environment. Theis_done
says if the episode is over, e.g. if a game of chess is over. If it is over, then the environment needs a reset.
and an agent
which has
agent.reset() -> agent
: Reset internal variablesagent.act(observation, no_exploration) -> action
: Let the agent take an action. If you want to evaluate the agent, setno_exploration
toTrue
.agent.remember(prev_state, action, reward, state, is_done) -> agent
: Store what is necessary - here the learning happens.agent.save(path) -> agent
: Serialize the agent topath
agent.load(path) -> agent
: De-serialize the agent frompath
The idea of Q-Learning
The following is a mixed introduction to RL / Q-Learning. You might want to have a look at my Reinforcement Learning post as well.
If there is a limited set of observations \(\mathcal{S}\) (states) and a limited set of actions \(\mathcal{A}\), then you have \(|\mathcal{S}| \cdot |\mathcal{A}|\) possibilities to rate. For some of the observations you also receive a reward. But rewards might be delayed:
a0 --- s3, r=10
/
a0-- s1, r= 10 - a1 --- s4, r= 0
/
s0 -
\a1 -- s2, r=-10 - a0 --- s5, r = 100
This shows that you start in state s0
where you can execute actions a0
and
a1
. Action a0
lives you a reward of 10, action a1
a reward of -10
. So
if you take the action greedy, you would take a0
and end up in state s1
.
But if you look one step ahead, you can see that s2
ends up in state s5
with a reward of 100 whereas s1
can only get a reward of 10 or 0.
In many cases, one does not want a greedy action. And one does not want to rely completely on very high rewards in the very far future. Direct rewards are prefered, but if it is really high we wait a bit longer. This thought leads to the value of a state / action. The value of a state or a state/action pair is its current reward plus its reward in future. As we want to prefer rewards which come directly, we discount the future rewards with a factor \(\gamma \in [0, 1]\):
The \(\max_{a \in \mathcal{A}}\) means we execute the optimal action all the time.
Most of the time, the environments are not deterministic. Then you need to take the transition probability from getting from state \(s\) into state \(s'\) when you execute action \(a\) into account:
Ok, awesome! But now comes the tricky part: We don't have the function \(V\). If both, \(\mathcal{S}\) and \(\mathcal{A}\) are finite, we can simply:
- Initialize a table which has the columns (state, value of action 1, value of action 2, ..., value of action \(n\)) and one row per state. You could initialize it to zero.
- Run the agent. Update the \((state, action)\) cell with a weighted average of what was in the table + what was observed. The weighting factor is \(\alpha \in (0, 1)\).
That's it.
Code
You might want to read Best practice for Machine Learning Projects to understand why the following code was written as it is.
The latest code can be found on Github MartinThoma:algorithms/
First, the configuration file:
model_name: 'qlearning'
problem:
gamma: 0.99 # discounting factor
training:
nb_epochs: 100000
learning_rate: 0.7 # alpha
print_score: 500 # each 500 episodes
exploration:
name: 'Boltzmann'
clip: [-500, 500]
testing:
nb_epochs: 10000
Now the code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Q-Table Reinforcement Learning agent."""
# core modules
import logging
import os
import pickle
import sys
import yaml
# 3rd party modules
import gym
import numpy as np
np.random.seed(280490)
logging.basicConfig(
format="%(asctime)s %(levelname)s %(message)s",
level=logging.DEBUG,
stream=sys.stdout,
)
np.set_printoptions(formatter={"float_kind": lambda x: "{:.2f}".format(x)})
def main(environment_name, agent_cfg_file):
"""
Load, train and evaluate a Reinforcment Learning agent.
Parameters
----------
environment_name : str
agent_cfg_file : str
"""
cfg = load_cfg(agent_cfg_file)
# Set up environment and agent
env = gym.make(environment_name)
cfg["env"] = env
cfg["serialize_path"] = "artifacts/{}-{}.pickle".format(
cfg["model_name"], environment_name
)
agent = load_agent(cfg, env)
agent = train_agent(cfg, env, agent)
rewards = test_agent(cfg, env, agent)
print("Average reward: {:5.3f}".format(rewards))
print("Trained epochs: {}".format(agent.epoch))
class QTableAgent:
"""
Q-Table Agent.
Parameters
----------
cfg : dict
"""
def __init__(self, agent_cfg, nb_observations, nb_actions):
self.nb_obs = nb_observations
self.nb_act = nb_actions
self.Q = np.zeros([nb_observations, nb_actions])
self.lr = agent_cfg["training"]["learning_rate"]
self.gamma = agent_cfg["problem"]["gamma"] # discount
self.epoch = 0
self.exploration = agent_cfg["training"]["exploration"]
def reset(self):
"""Reset the agent. Call this at the beginning of an episode."""
self.epoch += 1
def act(self, observation, no_exploration=False):
"""
Decide which action to execute.

action = np.argmax(self.Q[observation, :])
if not no_exploration:
if self.exploration["name"] == "epsilon-greedy":
if np.random.uniform() < self.exploration["epsilon"]:
action = np.random.random_integers(0, self.nb_act - 1)
elif self.exploration["name"] == "Boltzmann":
T = 1
clip = self.exploration["clip"]
q_values = self.Q[observation, :].astype("float64")
q_values = np.clip(q_values / T, clip[0], clip[1])
exp_values = np.exp(q_values)
probs = exp_values / np.sum(exp_values)
action = np.random.choice(range(self.nb_act), p=probs)
else:
raise NotImplemented(self.exploration["name"])
return action
def remember(self, prev_state, action, reward, state, is_done):
"""
Store data in the Q-Table. Here, the learning happens.
Parameters
----------
prev_state : int
action : int
reward : float
state : int
"""
delta = reward - self.Q[prev_state, action]
if not is_done:
delta += self.gamma * np.max(self.Q[state, :])
self.Q[prev_state, action] += self.lr * delta
return self
def save(self, path):
"""Serialize an agent."""
data = {"Q": self.Q, "epoch": self.epoch}
with open(path, "wb") as handle:
pickle.dump(data, handle, protocol=pickle.HIGHEST_PROTOCOL)
return self
def load(self, path):
"""Load an agent."""
with open(path, "rb") as handle:
data = pickle.load(handle)
self.Q = data["Q"]
self.epoch = data["epoch"]
return self
def load_agent(cfg, env):
"""
Create (and load) a QTableAgent.
Parameters
----------
cfg : dict
env : OpenAI environment
"""
agent = QTableAgent(cfg, env.observation_space.n, env.action_space.n)
if os.path.isfile(cfg["serialize_path"]):
agent.load(cfg["serialize_path"])
return agent
# General training and testing code
def train_agent(cfg, env, agent):
"""
Train an agent in environment.
Parameters
----------
cfg : dict
env : OpenAI environment
agent : object
Return
------
agent : object
"""
cum_reward = 0.0
for episode in range(cfg["training"]["nb_epochs"]):
agent.reset()
observation_previous = env.reset()
is_done = False
while not is_done:
action = agent.act(observation_previous)
observation, reward, is_done, _ = env.step(action)
cum_reward += reward
agent.remember(observation_previous, action, reward, observation, is_done)
observation_previous = observation
if episode % cfg["training"]["print_score"] == 0 and episode > 0:
agent.save(cfg["serialize_path"])
print("Average score: {:>5.2f}".format(cum_reward / (episode + 1)))
print(agent.Q)
agent.save(cfg["serialize_path"])
return agent
def test_agent(cfg, env, agent):
"""Calculate average reward."""
cum_reward = 0.0
for episode in range(cfg["testing"]["nb_epochs"]):
agent.reset()
observation_previous = env.reset()
is_done = False
while not is_done:
action = agent.act(observation_previous, no_exploration=True)
observation, reward, is_done, _ = env.step(action)
cum_reward += reward
observation_previous = observation
return cum_reward / cfg["testing"]["nb_epochs"]
# General code for loading ML configuration files
def load_cfg(yaml_filepath):
"""
Load a YAML configuration file.
Parameters
----------
yaml_filepath : str
Returns
-------
cfg : dict
"""
# Read YAML experiment definition file
with open(yaml_filepath, "r") as stream:
cfg = yaml.load(stream)
cfg = make_paths_absolute(os.path.dirname(yaml_filepath), cfg)
return cfg
def make_paths_absolute(dir_, cfg):
"""
Make all values for keys ending with `_path` absolute to dir_.
Parameters
----------
dir_ : str
cfg : dict
Returns
-------
cfg : dict
"""
for key in cfg.keys():
if key.endswith("_path"):
cfg[key] = os.path.join(dir_, cfg[key])
cfg[key] = os.path.abspath(cfg[key])
if not os.path.isfile(cfg[key]):
logging.error("%s does not exist.", cfg[key])
if type(cfg[key]) is dict:
cfg[key] = make_paths_absolute(dir_, cfg[key])
return cfg
def get_parser():
"""Get parser object."""
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
parser = ArgumentParser(
description=__doc__, formatter_class=ArgumentDefaultsHelpFormatter
)
parser.add_argument(
"--env",
dest="environment_name",
help="OpenAI Gym environment",
metavar="ENVIRONMENT",
default="FrozenLake-v0",
)
parser.add_argument(
"--agent",
dest="agent_cfg_file",
required=True,
metavar="AGENT_YAML",
help="Configuration file for the agent",
)
return parser
if __name__ == "__main__":
args = get_parser().parse_args()
main(args.environment_name, args.agent_cfg_file)
Results
| Environment | Config File | Time | Score |
|---|---|---|---|
| FrozenLake-v0 | qlearning.yaml | 50s | 0.166 |
| FrozenLake-v0 | q-lr10.yaml | 48s | 0.743 |
| FrozenLake-v0 | q-lr90.yaml | 48s | 0.156 |
| CliffWalking-v0 | q-lr10.yaml | 128s | -13.000 |
| FrozenLake8x8-v0 | q-lr10.yaml | 179s | 0.569 |
| NChain-v0 | q-lr90.yaml | 4614s | 1760.048 |
| OneRoundDeterministicReward-v0 | q-lr10.yaml | 5s | 1.00 |
| OneRoundNondeterministicReward-v0 | q-lr10.yaml | 6s | 2.475 |
| Roulette-v0 | q-lr10.yaml | 533s | -2.764 |
| Taxi-v2 | q-lr10.yaml | 68s | 8.471 |
| TwoRoundDeterministicReward-v0 | q-lr10.yaml | 10s | 3.000 |
| TwoRoundNondeterministicReward-v0 | q-lr10.yaml | ERROR | ERROR |
See also
- dennybritz/reinforcement-learning
- Tijsma, Drugan, Wiering: Comparing Exploration Strategies for Q-learning in Random Stochastic Mazes


Dev Docs: https://developers.komodoplatform.com | Test plan: https://docs.google.com/spreadsheets/d/1l0dWEPcrv9zE11_TD-XrX_HIYV0VLpadCJN6hvaZERc/edit#gid=211514340
https://medium.com/@jameslee777/how-to-implement-finite-state-machines-into-a-cc-8dfeadccbcad
https://github.com/dimxy/komodo/wiki/Designing-RPC-for-FSM-CC
100 messages
Before 05-Dec-19 12:00 AM
CrisF23-Aug-18 12:55 PM
numentropy tx 22: 1132673.59217016
SHossain23-Aug-18 12:56 PM
now 27 or 29
Mark8123-Aug-18 12:56 PM
Eth has rock and scissors betting smartcontract. How easily could that be done in cc?
with this CC stuff, developers can code a lot of different types of contract
the 4 contracts we have, didn't take long time for jl777 to code them.
siu - Chainmakers23-Aug-18 01:07 PM
there are like 6 more in the works
SHossain23-Aug-18 01:07 PM
yes.
siu - Chainmakers23-Aug-18 01:07 PM
including payment channels, lotto, multigateway... etc.
SHossain23-Aug-18 01:07 PM
FSM
siu - Chainmakers23-Aug-18 01:08 PM
Also this is the first time smart contracts have been applied to a UTXO based blockchain.
SHossain23-Aug-18 01:09 PM
First on-chain dice game
siu - Chainmakers23-Aug-18 01:10 PM
for utxo, i believe so, yes.
Mark8123-Aug-18 01:13 PM
Fsm?
blackjok3r23-Aug-18 01:14 PM
FSM is Finite State Machine
CrisF23-Aug-18 01:14 PM
@blackjok3r If I try and run your script, how ccould I stop it?
blackjok3r23-Aug-18 01:14 PM
you dont stop it.
you will need to change STAKED2 to the name of the chain your using and the FUNDTXID to the correct one
then just run it... it uses odds of 1, and the size of bet is $1
CrisF23-Aug-18 01:15 PM
Yeahm I changed a few things.
blackjok3r23-Aug-18 01:15 PM
so if you saved it as dice
./dice 1 is bet 1 at 50/50 odds
it will just go until it gets a result
CrisF23-Aug-18 01:15 PM
Just modified it, not yet saved.
blackjok3r23-Aug-18 01:15 PM
yep, save it and chmod +x <filename>
so you can run it
I have done over 2000 dice bets on STAKED2 with that script nearly.
CrisF23-Aug-18 01:16 PM
Oh, so it only plays one game_
blackjok3r23-Aug-18 01:16 PM
it works fun until the TX get backed up in the mempool..
they dont seem to mine out as fast as normal TX's
yes
I have anohter script that will start heaps of them, but that cna get dangerous unles you know what your doing.
play with 1 first lol
CrisF23-Aug-18 01:17 PM
Ok, thanks!
blackjok3r23-Aug-18 01:17 PM
no worries, hope it works for you.
as long as the fiunding txid is right and the AC name is right it shuld work
CrisF23-Aug-18 01:17 PM
I*ll try it now.
CrisF23-Aug-18 01:38 PM
@blackjok3r It worked!!
blackjok3r23-Aug-18 01:38 PM
nice
CrisF23-Aug-18 01:38 PM
Wager: 777
Odds: 37
Sent e1e2610870beb060fc2ddda104da235cdfc1dd1da493b906997f3cd609dd54c7
YOU WON
blackjok3r23-Aug-18 01:38 PM
sweet glad it works for you. Its much easier
quite a fun game actualy
CrisF23-Aug-18 01:39 PM
And figured out (basically) how to run a script! Thanks a lot!
blackjok3r23-Aug-18 01:40 PM
great gald to help man
CrisF23-Aug-18 01:41 PM
Really happy. Using scripts is my goal for this week in STAKED2.
1
blackjok3r23-Aug-18 01:47 PM
its worth it. they make things so mcuh faster(edited)
SHossain23-Aug-18 01:47 PM
e1e2610870beb060fc2ddda104da235cdfc1dd1da493b906997f3cd609dd54c7 winnings 29526.00000000 bet<PHONE_NUMBER>0 at odds 37:1
1
you took a lot of profits
CrisF23-Aug-18 01:48 PM
Haha, up a little.
SHossain23-Aug-18 01:48 PM
i have 2.3 Million more coins left in there...
take all if you can
CrisF23-Aug-18 01:49 PM
Well, now I have Blackjok3r's new script you might have to add some more...
SHossain23-Aug-18 01:50 PM
no worries. i have 120 Million more that i can add if needed
the seednode has been mining most of the blocks
CrisF23-Aug-18 01:51 PM
Haha, rigged in favor of the house
Heading out now. I'll try out the script tomorrow.
2
SHossain23-Aug-18 01:53 PM
i have just added few more millions for you
CrisF23-Aug-18 01:54 PM
That must be from mining with your future computer!(edited)
SHossain23-Aug-18 01:56 PM
actually, just a 4 core VPS setup is the seednode and mining. in the beginning i used future computer to mine some blocks to get some blocks for testing
about 15 million in the local node
CrisF23-Aug-18 01:59 PM
Nice!
SHossain23-Aug-18 02:23 PM
ea82dcfa567bdc679779f75bbdfb87cbdd18705551597bc979de95c8db3ebd4b winnings 80000.00000000 bet 10000.00000000 at odds 7:1
SHossain23-Aug-18 02:39 PM
if anyone puts odds over the max limit, stdout will warn you
Dice plan DiceX illegal bet 10000.00000000: minbet 5.00000000 maxbet 10000.00000000 or odds 70 vs max.50
SHossain23-Aug-18 03:05 PM
same will happen if anyone try over the max bet
Dice plan DiceX illegal bet 50000.00000000: minbet 5.00000000 maxbet 10000.00000000 or odds 50 vs max.50
1
blackjok3r23-Aug-18 03:05 PM
it would be nice to get an error msg in console for these, but I noticed this yesterday testing, that hte error is there, just "hidden" lol
the onyl one I found that had no error was when there was no entropy TX left, it created a malformed TX, but james fixed that already
wasnt able to test yet though... maybe you can(edited)
SHossain23-Aug-18 03:06 PM
those are from stdout
the command replies
"result": "error",
"error": "couldnt create dice bet transaction. make sure your address has funds"
2
blackjok3r23-Aug-18 03:06 PM
cool seems jl777 is bettre than dev
SHossain23-Aug-18 03:07 PM
yes. dev is slightly old for the last few days
1
blackjok3r23-Aug-18 03:09 PM
I am still trying to drain Alrights DICE fund on STAKED2 to test if when the entropy runs out if the fix works
Testers, please update to latest jl777 branch. There was an update recently.
dice now requires minimum 100 coins to be created with.
"result": "error",
"error": "dice plan needs at least 100 coins"
This should discourage someone to create spam dice plans.
siu - Chainmakers23-Aug-18 04:40 PM
is it a forking change?
TonyL23-Aug-18 04:42 PM
I think similar rule should be for tokens creation
Possible to spam as well
siu - Chainmakers23-Aug-18 04:42 PM
and rewards plans
TonyL23-Aug-18 04:55 PM
I think might be very useful to add some owner=pubkey parameter to info call of each CC or ability to list CCs owned by user.
Maybe I'm missing something, but now I'm able to find which CCs I've created only by calls history. (dices, orders, tokens and etc.).
Like a CC which manages and standardise CC protocol.(edited)
You can sort the orderbook by token, so I don't think it's a problem
and creating single sat tokens could be used for some pretty cool things
TonyL23-Aug-18 05:53 PM
@Alright I can create tons of new tokens for example
Alright23-Aug-18 05:54 PM
Right, forgot their was tokenlist
although I feel dicelist and rewardslist is more important than tokenlist in that you wouldn't just be browsing through tokenlist
TonyL23-Aug-18 05:55 PM
I have to find my token in millions of. It's possible to create tokens with same name so only txid will be different.
I spammed some to BRK for demonstration
Alright23-Aug-18 05:56 PM
Had a conversation about this last night actually. Just thinking of the future. Can you imagine a single satoshi that is the "deed" to your house?
want to put your house on the market? tokenask
only problem is there needs to be some authority to enforce that whoever owns that satoshi owns the house
TonyL23-Aug-18 05:57 PM
Tokenisation is future thing yeah. And there is a lot of projects at the moment who doing tokenisation of real stocks for example. I'm even helped with WP to one of such(edited)


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/syntactic.20equality.html ---
Notation 0=has_zero.zero
-- those are syntactically equal, right? The notation is just something for the parser and pretty printer.
I think 0 is notation for Nat.zero
as well.
There are multiple terms (which are syntactically different) that can represent the same numeral. You can see your representation if you use the option set_option pp.numerals false
:
set_option pp.numerals false example : nat.zero = 0 := _ /- not syntactically equal -/
I should remark that without changing the option pp.numerals
the goal is displayed as 0 = 0
gaargh, #print notation 0
is an error because 0
is some sort of numeral. Maybe my question is: is (has_le.le 3 4) = (3 ≤ 4)
a syntactic equality?
yes, assuming you haven't locally overridden <=
and assuming 3 and 4 aren't being represented differently on the two sides, which can happen "in the wild"
example (n : ℕ) : n + nat.zero = n := begin rw add_zero, end example (n : ℕ) : n + has_zero.zero ℕ = n := begin rw add_zero, end
I am surprised both of these work.
example (n : ℕ) : n + nat.zero < n := begin rw add_zero, sorry end example (n : ℕ) : n + has_zero.zero ℕ < n := begin rw add_zero, sorry end
Maybe that's a better example of what I mean. I thought rw was picky about syntactic equality. Neither rewrite fails.
#check bit1 (nat.succ nat.zero) -- 3 #check bit1 (has_one.one ℕ) -- 3
I understand the numerals point. I'm trying to work out when rewrites work, that's the heart of it.
has_zero.zero
is reducible
But is has_zero.zero nat
syntactically equal to nat.zero
?
no
but it is up to unfolding reducible definitions
So does Lean unfold all reducible definitions before trying to rewrite?
I think so
Or does it just internally store them as unfolded?
or at least it does something equivalent to that
I think it unfolds when necessary in the matching algorithm
it's the same as the unification you get from exact
except it only unfolds reducible instead of reducible + semireducible
I see. A rewrite attempts to find a subterm of the goal which is "equal" to the lhs of what I'm wanting to rewrite with, and "equal" is somewhere between syntactic and definitional equality.
yes
yet another equality, I know
class has_scalar (α : Type u) (γ : Type v) := (smul : α → γ → γ)
(from mathlib somewhere). Why is that marked as [reducible]
?
I mean
how come has_scalar.smul
is reducible?
I don't see anyone adding the tag explicitly
but apparently the system is that notation is reducible
and I can indeed check it's reducible using #print
Are all fields of a class automatically reducible?
Hm, I didn't know that. I would guess all fields are reducible by default
If z : complex
then is z.re
syntactically equal to complex.re z
?
I'm pretty sure z.re
is elaborated into complex.re z
before the expression you typed is even "real"
something something "projection macro"
I think it's actually parsed as complex.re z
, rather than elaborated.
I thought the parser created a projection macro
application which said "remember to turn this into a something.re
later, you can figure out what something
means then too" and that's why if you write nonsense.foo
you get a special error in the elaborator "invalid field notation... blah"
You're probably right. I don't know that much about this.
Incidentally
#eval expr.alpha_eqv `(λ z : ℂ, complex.re z) `(λ z : ℂ, z.re) -- tt
I'm not sure if alpha_eqv
is the same as syntactically equal.
Aah -- if I can test for syntactic equality then I don't need to bug you guys with questions :D
Here is that macro in action
run_cmd (do tactic.trace ``(nat.a_proj).to_raw_fmt)
Last updated: Apr 24 2020 at 19:02 UTC


Reddcoin Core integration/staging tree
Copyright (c) 2009-2018 Bitcoin Core Developers
Copyright (c) 2014-2018 Reddcoin Core Developers
What is Reddcoin?
Reddcoin is an experimental new digital currency that enables instant payments to anyone, anywhere in the world. Reddcoin uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Reddcoin Core is the name of open source software which enables the use of this currency.
Reddcoin first started in January 2014 as a variant of Litecoin using Scrypt as the Proof-of-Work (PoW) hash algorithm.
- 1 minute block target
- 100,000 coins per block
- subsidy halves every 500,000 blocks
- subsidy halves every 50,000 blocks starting at block 140,000
- difficulty retarget: every block using Kimoto's gravity well
On 2nd August 2014 at block 260,800 Reddcoin transitioned to its own original Proof-of-Stake-Velocity (PoSV) algorithm which replaced Proof-of-Work (PoW).
- 1 minute block target
- just under 27 billion mined in PoW phase
- 5% annual interest in PoSV phase
- difficulty retarget: every block using Kimoto's gravity well
- white paper: http://www.reddcoin.com/papers/PoSV.pdf
- FAQs paper: http://www.reddcoin.com/papers/PoSV_FAQ.pdf
On December 2015 work commenced on porting directly from Bitcoin v0.9 whilst maintaining the original functionality.
- allowing for better maintainabilty
- monitoring of upstream features
- improved code consistency and sharing
For more information, as well as an immediately useable, binary version of the Reddcoin Core software, see http://www.reddcoin.com
License
Reddcoin Core is released under the terms of the MIT license. See COPYING for more information or see http://opensource.org/licenses/MIT.
Development process
Developers work in their own trees, then submit pull requests when they think their feature or bug fix is ready.
If it is a simple/trivial/non-controversial change, then one of the Reddcoin development team members simply pulls it.
If it is a more complicated or potentially controversial change, then the patch submitter will be asked to start a discussion (if they haven't already) on the relevant forum channel.
The patch will be accepted if there is broad consensus that it is a good thing. Developers should expect to rework and resubmit patches if the code doesn't match the project's coding conventions (see doc/coding.md) or are controversial.
The master
branch is regularly built and tested, but is not guaranteed to be
completely stable. Tags are created
regularly to indicate new official, stable release versions of Bitcoin.
Testing
Testing and code review is the bottleneck for development; we get more pull requests than we can review and test. Please be patient and help out, and remember this is a security-critical project where any mistake might cost people lots of money.
Automated Testing
Developers are strongly encouraged to write unit tests for new code, and to
submit new unit tests for old code. Unit tests can be compiled and run (assuming they weren't disabled in configure) with: make check
Every pull request is built for Windows, Linux and OSx on a dedicated server, and unit and sanity tests are automatically run. The binaries produced may be used for manual QA testing — a link to them will appear in a comment on the pull request posted by BitcoinPullTester. See https://github.com/TheBlueMatt/test-scripts for the build/test scripts.
Manual Quality Assurance (QA) Testing
Large changes should have a test plan, and should be tested by somebody other than the developer who wrote the code. See https://github.com/bitcoin/QA/ for how to create a test plan.
Translations
Changes to translations as well as new translations can be submitted to Bitcoin Core's Transifex page.
Periodically the translations are pulled from Transifex and merged into the git repository. See the translation process for details on how this works.
Important: We do not accept translation changes as github pull request because the next pull from Transifex would automatically overwrite them again.
Development tips and tricks
compiling for debugging
Run configure with the --enable-debug option, then make. Or run configure with CXXFLAGS="-g -ggdb -O0" or whatever debug flags you need.
debug.log
If the code is behaving strangely, take a look in the debug.log file in the data directory; error and debugging message are written there.
The -debug=... command-line option controls debugging; running with just -debug will turn on all categories (and give you a very large debug.log file).
The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt to see it.
testnet and regtest modes
Run with the -testnet option to run with "play reddcoins" on the test network, if you are testing multi-machine code that needs to operate across the internet.
If you are testing something that can run on one machine, run with the -regtest option. In regression test mode blocks can be created on-demand; see qa/rpc-tests/ for tests that run in -regest mode.
DEBUG_LOCKORDER
Reddcoin Core is a multithreaded application, and deadlocks or other multithreading bugs can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of what locks are held, and adds warning to the debug.log file if inconsistencies are detected.


--- layout: Cover ---
This sites have some Twitter and Facebook integrations.
When you hover your mouse over Facebook or Twitter icons, you agree with their privacy statements:
Read Facebook Privacy Disclaimer Read Twitter Privacy Disclaimer


Hi! My name is Danielle Smalley and I am a full stack web developer.
I am skilled in front-end, middle-tier, and back end development. This includes JavaScript, C#/.Net, jQuery, SQL, JSON, ReactJS, and more.
Over the past 9 years, I’ve become a successful advocate, project manager, and problem anticipator/resolver for clients in the roles I’ve held.
I have a knack for empathizing and listening to clients’ needs, communicating transparently and directly, and tirelessly working towards solutions.
My interest in technology started when I was a little girl, enjoying computers, puzzles, and video games. Now, I see a need for more women in tech and am driven to contribute to this mission. This led me to enroll in Centriq’s full stack web development program. I dove right in and haven’t looked back!
I’m looking forward to bringing my unique background, my love of helping others, my passion for learning and facing new challenges, and my eagerness to continuously grow to my tech career.
Welcome to my website! Please take a look around


JBL Everest 110GA Bluetooth earbuds with Google Assistant down to $26 (from $70)
by Mark KoegelIt may not bet Black Friday just yet, but this deal on the JBL Everest 110GA headphones is certainly a Black Friday price. At $44 off on JBL's eBay store, these headphones may be worth buying early — they are currently selling on JBL's website for $70.
The JBL Everest 110GA headphones are Google Assistant compatible, allowing you to activate the assistant to place calls or read messages with the touch of a button. The echo canceling microphone means your phone calls will always be crystal clear, and with three sizes of ear-tips, you're sure to find a comfortable fit. Its battery can last up to 8 hours, but you'll need to recharge it with a Micro USB cord as these have no USB-C port.
The headphones come in Blue, Silver, and Gun Metal. The eBay listing is direct from Harman with authenticity guaranteed.
As of publishing, Gun Metal is already out of stock, so if you want these headphones you may want to act on it soon.
Buy:
eBay
Via:
SlickDeals
Thanks:
Moshe


We create social anchors for your event, link them to your microsite and create content & communications
We announce your event via social media posting and targeted ads to maximize registration (social commitment increases conversion rate)
During the event itself we utilize a variety of tools to maximize user sharing and offline-to-online Social Reach
We promote and moderate online discussions both during and after the event to maximize positive impact and total reach
How many participants are you expecting?
* Calculated estimate is for reference only. Please contact us for more details


#EasyEDA API Plug Before reading this capture, please check Open EasyEDA File Format first. ##Why Need API After route the PCB, you found out that you need to enlarge all tracks size a bit little, How? After route the PCB, you found out that all Vias' hole size is too small, How to fix this? How to create a board outline using code? EasyEDA API will let you control your designs in an easy way. ##How to use API
How to find the plug entance
Extensions Setting
You can enable or disable the default extensions, after enable, please reload the EasyEDA editor. We will give you a file about how to create an extensions soon.
If you enable the Theme Colors Extension, you will find a button on the tool bar like bellow image if you click the Black On White, you will find your schematic changes like bellow image, this is useful when you would like to print your design on a paper. . You can check our github codes of this API via https://github.com/dillonHe/EasyEDA-Documents/tree/master/API/example/theme, check the manifest.json and main.js out, you will find out how to create an extension.
How to install an extension
- Click the Load Extension button
- Click the select file button
- Select All the files.
- Type a name
- Click the load button.
- Close EasyEDA editor and open it again. .
Scripts
If you just need some simple functions, you don't need to create an extension. You just need to create a single Javascipt file and keep it in this list. .
- You can select the
Hello World
, then click theRun
button. - You can select some items, then try
Move Selected Objects
.
Run Script code
In some case, you just need to run the function one time, such as create a user define board outline in codes, changing the Track width, change the hole size etc. You can use this way.
.
**example 1 Art **
You can open an empty schematic and copy this example javascript codes to the text box to run a test. After clicking the Run
button, you will see bellow art image.
**example 2 Change track width and via hole size ** You can open a PCB and copy this example javascript codes to the text box to run a test. After that, All tracks will be 10mil. ##EasyEDA Coordinate System EasyEDA's editor is based SVG, SVG viewport,(Coordinates increase left-to-right and top-to-bottom, the same as EasyEDA ). But SVG's origin is fixed at the left top corn, and EasyEDA's origin can be modified at the any place. . Be careful this, they are different from Cartesian coordinate system ##Unit There are two kinds of unit in our editor, SVG Canvas unit and real world EasyEDA unit. SVG Canvas unit is Pixel. The real world EasyEDA unit in schematic is also Pixel, but in PCB, there are mm, mil and inch. We use bellow map to convert Canvas to real world.
-
1 pixel = 10 mil
-
1 pixel = 0.254mm
-
1 pixel = 0.01inch There are API for these convert.
//mm2pixel: convert 10mm to pixel var result = api('unitConvert', {type:'mm2pixel',value:10});
//mil2pixel: convert 10mil to pixel
var result = api('unitConvert', {type:'mil2pixel',value:10});
There are other convert method, such as inch2pixel
, pixel2mm
, pixel2mil
and pixel2inch
.
All EasyEDA's value is based pixel, if you can keep in mind that 1 pixel equal 10mil or 0.254 mm, you don't need to use any convert function. For example, if you want to change a Track to 20mil, so you just need to use 2.
##API List ###Get EasyEDA Source
-
get EasyEDA JSON objects, type is
json
, you can check PCB Json object out to know more.var result = api('getSource', {type:'json'});
-
get EasyEDA compress string, EasyEDA save this string to our database, it is a bit little hard to read and understand, but it is small in size. EasyEDA save this string to our database.
var result = api('getSource', {type:'compress'});
-
Get SVG string var result = api('getSource', {type:'svg'});
Check the Get EasyEDA source example codes. ###Apply Source After you can use your codes to hack EasyEDA's source, then you need to apply the source to EasyEDA's editor. You can
-
Apply as compress string
//will open a new editor and convert compressStr to EasyEDA file. api('applySource', {source:'compressStr', createNew: true});
-
Apply as Json object.
//will modify the active file and convert json object to EasyEDA file. api('applySource', {source: json, createNew: !true});
Check the Apply Source example codes. ###Get Shape If you want to get an EasyEDA json object by id, you can try to use bellow code.
var obj = api('getShape', {id:'gge13'})
###Delete Shapes Removing shapes by follow code
###Update Shape If you want to modify an EasyEDA object, you can use this API.
//Change the net to GND and the shape to ELLIPSE
api('updateShape', {
"shapeType": "PAD",
"jsonCache": {
"gId": "gge5",
"net": "GND"
"shape": "ELLIPSE"
});
shapeType and gId are must provided.
- Schematic
shapeType
schlib
,rect
,polyline
,polygon
,wire
,bus
,image
,circle
,ellipse
,line
,path
,arc
,annotation
,junction
,netlabel
,busentry
,arrowhead
,noconnectflag
,pin
,netflag
- PCB
shapeType
FOOTPRINT
,TRACK
,COPPERAREA
,SOLIDREGION
,RECT
,CIRCLE
,TEXT
,ARC
,DIMENSION
,PAD
,VIA
,HOLE
###Create Shape If you want to create EasyEDA shape by codes, you can try. We will provide more information about this API soon, now we just provide examples. You will find out how to do. /** with shortUrl * @example * api('createShape', {shapeType:'schlib', shortUrl:'nxlVIGgQO', from:'system', title:'556_DIL14', x:400, y:300}); * api('createShape', {shapeType:'FOOTPRINT', shortUrl:'RrkewO60i', from:'system', title:'ARDUINO_PRO_MINI', x:400, y:300}); / /* with jsonCache object * @example * api('createShape', { * "shapeType": "PAD", * "jsonCache": { * "gId": "gge5", * "layerid": "11", * "shape": "ELLIPSE", * "x": 382, * "y": 208, * "net": "", * "width": 6, * "height": 6, * "number": "1", * "holeR": 1.8, * "pointArr": [], * "rotation": "0" * } * }); * * @example * api('createShape', { * "shapeType": "polygon", * "stroke": "#000000", * "stroke-width": "1", * "stroke-style": "dashed", * "fill": "none", * "points": [ * {"x": 390, "y": 580}, * {"x": 450, "y": 450}, * {"x": 520, "y": 580}, * {"x": 610, "y": 490} * ] * }); * * @example * api('createShape', { * "shapeType": "arrowhead", * "x": 300, * "y": 300, * "color": "#339933", * "size": "3", * "rotation": 0 * }); * * @example * var ts = ["no_connect_flag", "arrowhead", "busentry", "netLabel_GNd", "netLabel_GnD", "netLabel_gnD", "netLabel_Bar", "netLabel_VEE", "netLabel_-5V", "netLabel_+5V", "netLabel_VCC", "netLabel_volProbe", "netLabel_netPort", "netLabel_text", "pin", "annotation"]; * for(var i=0;i<ts.length;i++){ * api('createShape', { * "shapeType": ts[i], * "x": 300 + i%5*50, * "y": 300 + (i/5|0)*50 * }); * } / / with cached or pre-defined libs * @example * api('createShape', {"shapeType": "pcblib", from:'GeneralPackages', title:'C0402', x:400, y:300}); * @example * api('createShape', {"shapeType": "schlib", from:'EasyEDALibs', title:'HDR2X2', x:400, y:300}); * / / * @example 4 * api('createShape', { * "shapeType": "schlib", * "gId": "gge6", * "head": {}, * "itemOrder": [], * "annotation": { * "gge8": api('createShape', 'annotation', {}), * "gge9": api('createShape', 'annotation', {}) * }, * "pin": { * "gge11": api('createShape', 'pin', {}), * "gge14": api('createShape', 'pin', {}) * }, * "polyline": { * "gge10": api('createShape', 'polyline', {}), * "gge12": api('createShape', 'polyline', {}) * } * }); * * @example 5 * api('createShape', { * "shapeType": "schlib", * "gId": "gge6", * "head": {}, * "children": [ * api('createShape', 'polyline', {}), * api('createShape', 'polyline', {}), * api('createShape', 'pin', {}), * api('createShape', 'pin', {}), * api('createShape', 'annotation', {}), * api('createShape', 'annotation', {}) * ] * }); * * @example 6 * api('createShape', { * "shapeType": "schlib", * "gId": "gge6", * "head": {}, * "children": api('createShape', [ * ['polyline', {}], * ['polyline', {}], * ['pin', {}], * ['pin', {}], * ['annotation', {}], * ['annotation', {}] * ]) * }); **/
UI
If you want to create an extension, not just a run one time script, maybe need toolbar buttoon. You can check the example before you read. ####Create Toolbar Button
//@example create a button
api('createToolbarButton', {
icon:'extensions/theme/icon.svg',
title:'Theme Colors...',
fordoctype:'sch,schlib',
cmd:"extension-theme-setting"
});
* @example toolbar with menu
* api('createToolbarButton', {
* icon:'extensions/theme/icon.svg',
* title:'Theme Colors...',
* fordoctype:'sch,schlib',
* "menu" : [
* {"text":"White on Black", "cmd":"extension-theme-WhiteOnBlack"},
* {"text":"Black on White", "cmd":"extension-theme-BlackOnWhite"},
* {"text":"Custom Colors...", "cmd":"extension-theme-setting"}
* ]
* });
####Create Extension Menu
/**
* @example
* api('createExtensionMenu', [
* {
* "text":"Theme Colors...",
* "fordoctype": "sch,schlib",
* "cmd": "extension-theme-white"
* }
* ]);
*/
###Create Dialog
check the example
###Command List
####Clone // clone gge2 gge3 and return their new ids. var newIds = api('clone', {ids:["gge2","gge3"]}) ####Delete api('delete', {ids:["gge2","gge3"]}); ####Rotate // rotate ids to 90 degree api('rotate', {ids:["gge2","gge3"],degree:90}); ####Rotate Left //anticlockwise api('rotate_left', {ids:["gge2","gge3"]}); ####Rotate Right
//clockwise
api('rotate_right', {ids:["gge2","gge3"]});
####Fliph api('fliph', {ids:["gge2","gge3"]}); ####Flipv api('flipv', {ids:["gge2","gge3"]}); ####Align Left api('align_left', {ids:["gge2","gge3"]}); ####Align Right api('align_right', {ids:["gge2","gge3"]}); ####Align Top api('align_top', {ids:["gge2","gge3"]}); ####Align Bottom api('align_bottom', {ids:["gge2","gge3"]}); ###Selection Change or get selection states of EasyEDA objects in editor. ####Select
// gge2 and gge3 will be marked as selected.
api('select', {ids:["gge2","gge3"]});
####Select None //no objects will be selected. api('selectNone'); ####Get Selected Ids var ids = api('getSelectedIds'); ###Move You can use Update Shape to change the shapes position, but the Move method is better in this case. ####Move Objects Move shapes in relative coordinates, like move the shapes in arrow keys.
//Move gge2 and gge3 from left to right in 20pixel or 200mil step
//from top to bottom in 20pixel or 200mil step.
api('moveObjs', {objs:[{gId:"gge2"},{gId:"gge3"}], addX: 20, addY: 20});
//Move gge2 and gge3 from right to left in 20pixel or 200mil step
api('moveObjs', {objs:["gge2","gge3"], addX:-20});
//Move selected objects from left to right in 20pixel or 200mil step
api('moveObjs', {addX:20});
####Move Objects To
How to move a VIA
or junction
to position {x:'10mil', y:'10mil'}
?, Move shapes to absolute coordinates.
//Move gge2 and gge3 to Canvas postion 20,20, the real coordinates are dedpend the origin.
api('moveObjsTo', {objs:[{gId:"gge2"},{gId:"gge3"}], x:20, y:20});
//move gge2 and gge3 to 10mm, 10mm coordinates
api('moveObjsTo', {objs:["gge2","gge3"], x: api('coordConvert', {type:'real2canvas',x: '10mm'}), y: api('coordConvert', {type:'real2canvas',y: '10mm'})});
//Move selected objects to Canvas postion 20,20, the real coordinates are dedpend the origin.
api('moveObjsTo', {x:20, y:20});
It is very easy to understand to move a PAD, VIA, Junction to absolution coordinates. But what are the effects of moving TRACK, FOOTPRINT, netlabel to some where. Just try to play the codes, you will find out the regular pattern.
###SetOriginXY EasyEDA's canvas origin is 0,0, you can't change it. But the real coordinates can be mapped to any where. //set the real origin point to canvas x = 400, y = 300. X,Y is pixel all the time. var result = api('setOriginXY', {x:400,y:300}); ###Coordinate Convert You can use mm or mil or inch as units, but when you apply the Parameters to SVG graph, you must use coordinate convert.
//convert the canvas x 400 to real postion, the value is depent your units and origin point.
var result = api('coordConvert', {type:'canvas2real',x:400})
//the default units is your canvas units, but you can add a units like 300mm. if your PCB's units is mil, then you will get the canvas coordinate 400mil,300mm.
var result = api('coordConvert', {type:'real2canvas',x:400,y:'300mm'});
If you set the origin to 0,0. It is very easy to map the coordinate in your mind, you don't need to use API to convert. the canvas coordinate 100,100 equal the real coordinate 1000mil, 1000mil or 1inch, 1inch or 393.7mm, 393.7mm
###Value Convert How to set the pad's hole size to 20mm? How to set the Track width to 20mil?
//the default units is your canvas units, but you can add a units like mm, mil, inch, even pixel.
var result = api('valConvert', {type:'real2canvas',val:400});
result = api('valConvert', {type:'real2canvas',val:'400mm'})
//convert the 400 pixel to real value, the value is depent your units , if the unit is mil, the result should be 4000
//result = api('valConvert', {type:'canvas2real',val:400})
If you can keep in mind 1pixel in canvas equal 10mil, so you don't need this API, you can do it in raw way. For example, If you want to update the track size to 20mil, you can do.
api('updateShape', {
"shapeType": "TRACK",
"jsonCache": {
"gId": "gge5",
"strokeWidth": 2
}
});
Or
api('updateShape', {
"shapeType": "TRACK",
"jsonCache": {
"gId": "gge5",
"strokeWidth": api('valConvert', {type:'real2canvas',val:'20mil'})
}
});
###Get SVG Arc Path SVG Arc path Parameter is very complex, We provide a API to convert human read ARC parameter to SVG path.
var result = api('getSvgArcPathByCRA', {cx:0, cy:0, rx:90, ry:90, startAngle:0.1, endAngle:0.7, sweepFlag:1});
result should be M89.55037487502231 8.985007498214534A90 90 0 0 1 68.83579685560396 57.97959185139219
##Examples check Github example
Enjoy it, if you have any questions, do let us know.


Discovering clusters
Plotting a Pandas Dataframe
A basic example
Visualizing the digits dataset
Using describe_pca to evaluate the integrity of your visualization
Explore mode!
Saving a plot
Generating a legend
Aligning matrices to a common space
Hyperalign a list of arrays and create an animated plot
Saving an animation
Using the cluster function to label clusters
Labeling your datapoints
Grouping data by category
Customizing figures
Interpolating missing data with probabalistic PCA
Using the missing_inds function to label interpolated values
Aligning two matrices with the procrustes function
Normalizing your features
Generated by Sphinx-Gallery


{% extends "index.html" %} {% block body %}
ProDy is widely used around the world. Below table and map overlay from Google Analytics shows the origin of visitors to ProDy Website from Jun 2013 to Dec 2013.
ProDy is developed in Python and C. Detailed breakdown of code lines and other factoids can be found on Ohloh.


This site has been detected as Phishing.
This site appears to it's behaving like Phishing Website. This will Threat for your information. If you understand that this site may harm your computer, you may visit this site but please be careful about the information you type.
Learn more


{% if not request.is_xhr %} {% extends 'base.html' %} {% endif %} {% block content %}
This is an service allows you look up the accessibility of venues from Foursquare. It does so by searching wheelmap.org for the venue. It also allows you to change the accessibility status of a venue.
You can search for places or log in with your account to look up your last checkins and todo list.
This project is Open Sorce and you can fork it on Github


Kergan delivers low-touch compliance solutions to HR and Education teams in healthcare, freeing you up to do the work that only you can.
Kergan is redefining the way teams move work forward, and all the good stuff together forever.
Whether you're travelling or next to your home spot, always know where the wind is the best. Get the latest forecast to choose where to kite.
Easily discuss meeting points and rideshare from within the app. Make friends if you're new to town, or get an additional member to your crew.
Our optimized configuration process saves your team time when running and scaling distributed applications, AI & machine learning workloads, hosted services, client websites, or CI/CD environments.
An intelligently designed, beautifully crafted application management system for your education agency. Inteleagent redefines the whole experience of managing your business, from student inquiry stage, all the way to student study experience stage.
 Don’t waste your time on trying to keep up and updating them.
Spend your time building relationships with your students and give them good reasons to choose your agency and loose the competition.
Put the focus on the student. With intelligent, your education counsellors will be in sync to focus their time on increasing revenue.
Submitting an application to study, on behalf of a student, is never a short process. Give yourself a break! Keep track of vital information such as task creation/completion date & time.
It’s easy to remember your invoice due date when you have only 5 or 10 applications, but what happens when you manage 50 or 100 students?
There are many reports out there, that only satisfy your curiosity. Not so with inteleagent. Access reports that you will actualy use in the decision making process.
Build a flexible culture with Kergan's first-of-its-kind people analytics platform.
We erased the confusing terms of the past and created six distinct flex types that address time and location-based needs, allowing companies and employees to speak the same language.
Our customers are committed to succeeding in a flexible future. Here’s how one company used Werk to customize their employee experience and increase their eNPS by 38 points.
Have some question or feedback?


Highest Priority Patient
Last Name:
In what category would you classify your occupation? Accommodation and Food Services Administration, Business Support and Waste Management Services Agriculture, Forestry, Fishing and Hunting Arts, Entertainment and Recreation Construction Educational Services Finance and Insurance Healthcare and Social Assistance Information Manufacturing Mining Other Services (except Public Administration) Professional, Scientific and Technical Services Real Estate, Rental and Leasing Retail Trade Transportation and Warehousing Utilities Wholesale Trade
Age:
Enter a phone number:


|
| |
Applications
These are references to various Open Source applications that are using
the old SSLeay package or the new OpenSSL package.
- Apache-SSL
http://www.apache-ssl.org/
The SSL integration for Apache by Ben Laurie
- Apache mod_ssl
http://www.modssl.org/
The SSL integration for Apache by Ralf S. Engelschall
- pkcs12
http://www.drh-consultancy.demon.co.uk/pkcs12faq.html
A PKCS#12 format utility by Stephen Henson
- ca-fix
http://www.drh-consultancy.demon.co.uk/ca-fix.html
A X.509 certificate patching utility by Stephen Henson
- Net::SSLeay
http://search.cpan.org/perldoc?Net::SSLeay
The Perl module interfacing to SSLeay/OpenSSL functions
- cURL
http://curl.haxx.se/
A sophisticated FTP, HTTP, HTTPS, GOPHER and DICT gathering tool
- stunnel
http://stunnel.mirt.net/
An SSL encryption wrapper for standard network daemons
- stunnel-p
http://www.stunnel.org/
A new branch of the SSL encryption wrapper for standard network daemons
- sslwrap
http://www.rickk.com/sslwrap/
Another SSL encryption wrapper for standard network daemons
- BSAFEeay
https://www.cypherpunks.to/bsafeeay/
A BSAFE emulation library based on SSLeay
- RaidenFTPD for Windows
http://www.raidenftpd.com/en/
win32 FTP server with SSL integration
- GLOBUS
http://www.globus.org/
Computational grid computing with a GSSAPI built on SSLeay
- MICO
http://www.mico.org/
CORBA 2.2 package supporting IIOP using SSL transport
- Samba
http://www.samba.org/
The SMB server for Unix platforms
- Roxen Challenger
http://www.roxen.com/
The Roxen Challenger webserver with SSL3 optional support
- Kermit
http://www.kermit-project.org/
The popular Kermit suite of communication programs with exp. SSL/TLS support
- OpenCA
http://www.openca.org/
A proposed Certificate Authority management software based on OpenSSL
- pyCA
http://www.pyca.de/
Certificate Authority package implemented with Phyton and OpenSSL
- Sendmail
http://www.sendmail.org/
The good old Sendmail MTA, now supports SSL/TLS out-of-the-box
- SafeGossip
http://www.skygate.co.uk/safegossip/
Another SSL/TLS wrapper for IMAP, POP and SMTP
- OpenSSH
http://www.openssh.com/
A port of the OpenSSL-based SSH package derived from OpenBSD
- mini_httpd
http://www.acme.com/software/mini_httpd/
A very small webserver, but capable of HTTPS through OpenSSL
- Courier-IMAP
http://www.courier-mta.org/imap/
An IMAP server capable of speaking SSL/TLS via OpenSSL
- BIND
http://www.isc.org/products/BIND/
Berkeley Internet Name Domain (BIND) supports DNSSEC via OpenSSL
- RubyPKI
http://www.freesoftware.fsf.org/rubypki/
RubyPKI, an API that binds the language Ruby to OpenSSL
- TinySSL
http://www.ritlabs.com/tinyweb/tinyssl.html
TinySSL, a web server using OpenSSL
- XMLSec
http://www.aleksey.com/xmlsec/
XMLSecurity Library, a library to implement signing and encryption in XML.
- XCA
http://xca.hohnstaedt.de/
CA GUI for managing keys, certificates, CRLs and Smart cards
- DelphiImport
http://www.disi.unige.it/person/FerranteM/delphiopenssl/
A Deplhi import unit for the OpenSSL DLL
| | |


“How to enable scalable efficient access to spatially integrated voluminious, complex LiDAR and imagery data ?”
How to construct a global level spatial index, in a distributed environment, atop local indexes of LiDAR and imagery data that are being managed in distributed storage environments? (RQ1)
How to define an efficient integrated data system architecture to perform scalable spatial integration of LiDAR and imagery models in distributed environment(s) (RQ2)
How to develop a scalable & performance efficient data lake that perform spatial integration between LiDAR and imagery storage models? (RQ3)
RQ1: How to construct a global level spatial index, in a distributed environment, atop local indexes of LiDAR and imagery data that are being managed in distributed storage environments?
Hypothesis: It will be possible to construct a multi-database oriented, global level, meta-index in a distributed environment to spatially integrate LiDAR and imagery data based on the choices made to local indexesHow to define an efficient integrated data system architecture to perform scalable spatial integration of LiDAR and imagery models in distributed environment(s) (RQ2)
Hypothesis: It will be possible to define a distributed data system architecture for scalable LiDAR and imagery data integration by analysing logically centralized view and logically de-centralized view integrated architectures, the two state-of-the-art architectural approaches, in terms of their scaling, storage models, computing paradigms and requirements/objectives etc.How to develop a scalable & performance efficient data lake that perform spatial integration between LiDAR and imagery storage models? (RQ3)
Hypothesis: It will be possible to integrated LiDAR storage models and imagery storage models in a distributed computing and distributed database oriented logically centralized architecture - a data lake, while focusing on improving integrated query response time, throughput of data loading, and minimizing disk utilization of LiDAR and imagery data.Completion of all 30 credits
Completion of literature survey
RQ1: Global Index
RQ2: Integrated Architecture
RQ3: Performance efficient data lake
Targeted venues
RQ 1 (RO 1.4): Evaluation of Global Index
RQ2: Evaluation of integration approaches
RQ3: Implementation, performance evaluation, & investigation of possible optimizations
Research Question 2
Research Question 3
HSI (Goetz1985), also known as imaging spectrometry, uses spectrometer sensors to sense spatial phenomena/objects. HSI is capable of producing high spectral resolution images using extremely narrow spectral bands (around 10 nm wide(Schowengerdt2006)). These bands are precisely defined (Campbell2011) and range from visible range, UV, near-IR, mid-IR to thermal-IR. Also, it is possible to derive the full reflectance spectrum at each pixel level (Dong2017) (Jensen2007) (Lillesand2015)[Figure A]. Having many extremely narrow spectral bands enables distinguishing spectrally identical, yet unique, earth materials through the use of HSI (Shippert2004). (Uses of HSI: geology, ecology, military, urban-sensing, and forensic (Ben2013))
“Remote sensing technology based geographical mapping is a prelevent activity.”
Imaging Systems and Laser Scanning Systems 11
Christ Church and Dublin City Council
by Vũ Võ
on Sketchfab
source (Laerfer2017)
Hyperspectral Images (Goetz1985)
Oblique images
Orthorectified images
“Scalable data systems for LiDAR and
remotely sensed (RS) imagery data integration”
[1] Scalable Data Systems for Aerial LiDAR Data Management (ALDM)
[2] Scalable Integrated Spatial Data Systems and a discussion on their potential for LiDAR and RS imagery data integration
“Current challenges and future directions for
highly scalable aerial LiDAR data systems development”
“How to enable efficient access to spatially integrated LiDAR and imagery data while ensuring highly scalable integrated LiDAR and imagery data management? ”
Impact
RQ1: How to construct a global level spatial index, in a distributed environment, atop local indexes of LiDAR and imagery data that are being managed in distributed storage environments?
RQ2: How to identify an efficient data system architecture that enables scalable spatial integration of LiDAR and imagery data models in distributed environment(s) through the evaluation of centralized logical views and decentralized logical views of integrated LiDAR and imagery data model
RQ3: How to perform scalable integration between LiDAR and imagery storage models within a data lake environment while devising a framework to evaluate the performance of the data lake for the execution of integrated point queries, range queries and window queries?
RQ 1 (RO 1.4): Evaluation of Global Index
RQ2: Evaluation of integration approaches
RQ3: Implementation, performance evaluation, & investigation of possible optimizations


Shop-E
Log
(current)
Pages
Shop
Product Details
Cart
Checkout
Comparator
Login/SignUp
Search
Home
Categories
Mobiles
Latest Mobiles
Back to Category
Categories
Mobiles
Redmi
Oppo
Samsung
Apple
Laptops
Mac
Lenovo
Asus
HP
MSI
Clothing
Men
Women
Kids
Groceries & Household Supplies
Cooking Essentials
Health & Personal Care
Household Supplies
Personal Care & Health Appliances
Filter by Price
Price: 0 - 1350


Card Title
This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.
Card Title
This card has supporting text below as a natural lead-in to additional content.
Card Title
This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.


1
Zebra4j
Based on Spring-Boot
visit or fork https://github.com/ae6623/Zebra to view more infomation.
Zebra
是基于Spring-Boot
开发的一款JavaWeb/Nodejs
新企业级应用框架。
2
Zebra4js
Zebra4js use Zookeeper client to connect the Zebra4j Micro Services


$.flashmessage("I'm against picketing, but I don't know how to show it.", { type: 'mitch', timeToFade: 4000 } );
var htmlMessage =
'We\'ll dance like hypnotized chickens.
';
$.flashmessage(htmlMessage, { type: 'iggy', timeToFade: 5000 });


LOG IN
Error
Logged in as
CURRENT ORDERS
PURCHASE ORDERS
LOW STOCK ITEMS
PENDING STOCK ORDERS
FINAL STOCK ORDERS
REPORTS
LOG OUT
Return
Return
REPORTS
Report on items supplied
From:
Day
Month
Year
To:
Day
Month
Year
Supplier:
Send Report
Report will be sent to :-


{% load i18n %} {% spaceless %}
{% trans "The SLM practice" context "The SLM practice [questionnaire] compiled by [user] has been rejected by [user] and needs revision." %} {{ questionnaire_name }} {% if compiler %} {% trans "compiled by" context "The SLM practice [questionnaire] compiled by [user] has been rejected by [user] and needs revision." %} {{ compiler }} {% endif %} {% trans "has been rejected by" context "The SLM practice [questionnaire] compiled by [user] has been rejected by [user] and needs revision." %} {{ catalyst }} {% trans "and needs revision." context "The SLM practice [questionnaire] compiled by [user] has been rejected by [user] and needs revision." %}
{% trans "Please revise the SLM practice according to the written feedback from the reviewer and resubmit the SLM practice to the Global SLM Database." %}
{% block additional %}{% endblock %} {% if message %}{{ catalyst }} {% trans "left you a message related to the rejection of this SLM practice:" context "[user] left you a message related to the rejection of this SLM practice: [message]" %} {{ message }}
{% endif %} {% endspaceless %}


The Benchmarks¶
DACBench currently contains six benchmarks: * Sigmoid
Toy benchmark: Sigmoid function approximation in multiple dimensions
- Luby
Toy benchmark: Learning the Luby sequence
- FastDownward
Heuristic selection for the FastDownward Planner
- CMA-ES
Step-size adpation for CMA-ES
- ModEA
Selection of Algorithm Components for EAs
- SGD-DL
Learning rate adaption for a small neural network
Our benchmarks are based on OpenAI’s gym interface. That means to run a benchmark, you need to create an environment of that benchmark to then interact with it. We include of this interaction between environment and DAC methods in our GitHub repository.
All of the benchmarks have a standardized version that should be used by default. To instantiate a benchmark environment, run: .. code:: python
from dacbench.benchmarks import SigmoidBenchmark bench = SigmoidBenchmark() benchmark_env = bench.get_benchmark()


https://www.foundry.com/products/modo
https://openframeworks.cc
http://tracery.io/
https://www.fredperry.com/rafsimons-19/#/p=5&t=1&h=3
postconscio.us
https://studiodumbar.com/work/cumulus-park
It is really interesting that the writer bring up this point of open design alternatives are not here to replace the existing system rather than offering another possibility to it. Does design is defined as design when the intention is not trying to solve the problems? Moreover, what does it mean when an alternative or an open design offer an entirely possible and achievable solution, hence successfully replaced the existed system?
I wonder how the writer define aesthetics in his article. In my opinion, aesthetics does not necessarily indicate having a beautiful and polished facade, but rather an appearance that communicates meanings and functions which sometimes happen to be aesthetically pleasing. In addition, even though I personally do not prefer the work that exclusively focus on design aesthetics, I cannot deny the power of style and trends, as well as how people are so easily swayed by attractive design aesthetics. Not to mention the fact that the “ intentionally unrefined ugly style” gradually comes in fashion as the trend of recent years. Therefore, I wonder if we can ever work pass the emphasis on aesthetics and exhibit our concept experimentation without considering the aesthetics of it.
This quote really reflects what I have been contemplating recently. When a work of design is perfectly functional and beautiful, we often overlook the implication and the underlying context beyond its facade. Since we often confuse the good design with critical design, I think it is also important to draw the line between good design and critical design, but also where exactly should we draw the line. I also wonder what defines critical design? And can a design poses controversial even oppositional point of view be seen as critical design.
https://feeldforplay.com/
https://www.patatap.com/
https://youtu.be/S4C4zKv1oh4
Feeldforplay Diagram
Smoothie Maker Diagram
"The paragraph prompts me to think if the methodologies of hacking can also be applied to social design practices in order to dismantle the discriminatory convention and foster opportunities for reestablishment. By studying the nuances and the patterns behind the interface, we get to infiltrate the cracks in the facade. It also just reminds us the fact that hacking is not magic and it is conducted through a series of study and exploration.
It is poetic to think the gesture of hacking is the demolition of the artifacts rather than the human beings. The virtual destruction an be carried into the physical world and stifle the condition of the human subject. It is also an unconventional way of protest without physical violence. However, even though I understand the writer’s position, I wonder if they also consider the legitimacy of the hacking operations that hurts the most vulnerable demographic in the system.
Even though I have heard much about how the internet is no longer a neutral space since it is still largely controlled by a handful of corporations, I never came across the proposition of that the ethos of hackers has been gentrified. And maybe everything has been gentrified. Art has been gentrified, designed has been gentrified. Everything that was once innovative and swaggy will be gentrified as soon as it was exposed to the mass population. The essence of the movement gets diluted as the incentive was contorted. Perhaps, the only way to combat gentrification is through resiliently reinventing and evolving. We mourned over the loss and enter another cycle of conquest and resurrrection.
It is interesting to think that the degree of elaboration of the prototype should also be determined by the audience. I also wonder about the possibility that a low budget client could be offended by a highly embellished prototype. In addition, what if the audience of the prototype is different from the target audience of the finish product? Could it pose a problem to the final design?
I always thought we should only make one prototype for one project, so it never occurs to me that we can actually build multiple and simpler version of them to communicate different aspects of the final product. It could also be easier to troubleshoot when we dissect the project into multiple parts.
Since everyone has different expectations for what a prototype is, designers should prepare the audience for the purpose of the prototype. It could also ccause much misunderstanding if the audience is unaware the main purpose of the prototype. However, I also wonder what should designers do in a situation that the audience’s expectation does not align with theirs? Also, what if the audience is too bogged down by the raw user-interface? Does it negate the purpose of the prototype?
Very often the most valuable part of an experiment is not whether we successfully execute a design, rather the connection we build with other people by interacting with them and listening to their stories. The degree of involvement and enthusiasm from the community cannot be forced, hence it is already a good start for any projects that involves designing for/with a community.
I think a lot of times designers do not want to impose the experiments on their subject and rather wish the subjects respond to the experiment organically or without external forces. However, we often overestimate how much people are willing to participate when the design is not right in front of them, but it also raises the question of how we design to encourage people’s engagement. In addition, do we renounce our intention or do we keep it from our subjects? Are people willing to invest time and energy to participate and understand the design?
In the beginning of the chapter, the text also emphasized that the experiments adopts appropriate often low-tech means to simulate and test the experiences. I sometimes wonder why is it so hard to implement technology in community experiments. Is it because technology is too invasive? Or is it because the lack of infrastructure within the communities? Financial reasons could also be an issue, and within the community people’s literacy in certain technology definitely matters. However, if technology is the end goal of the experiment, how do we design appropriate means without technology to conduct the experiments? On the other hand, the experiment in Bijlmer shows that means of experiments does not have to elaborate. Ssimple gestures like presenting the slogans and interacting with the messages can do much in invoking people’s interest in participation.
It is still crazy to me to think that all the aspects of our life is shaped by some sort of codes. The electronic appliances that we cannot live without, receiving a package, texting another person are composed of bits of code written by some people from the other of the world. We are shaped by the software and hardware around us, and we shape the software and hardware around us. Not a single person could code the entire Macintosh computer from scratch. Every program is a collective effort of a handful of people, and anyone who participates contributes.
I have always assumed that programming is an act of building and debugging only happens when things don’t work. Based on my extremely short experience in programming, so far I have experienced far more frustration than fulfillment as I spent most of the time debugging incompetently. When I learn how to code through youtube tutorials, writing codes just seem so easy and natural to the people on the screen as if debugging is atypicality. The red exclamation icon at the bottom of my text editor perpetuate my anxiety as I am learning. However, knowing that “programming is the expectation that things don’t work” provides me some reassurance and makes me feel less demoralizing.
Before I took my first computer science class in college, I thought I would be able to learn one programming language and roll with it for the rest of my life. I did not know programming language can go out of date and be replaced by new ones. In a way, we are not only learning how to code in a specific language, rather, we are learning how to learn a programming language so we have the ability to adapt and mutate. But right now, I am still struggling to fully understand one language and be able to create with lines of codes.
There is something both eery and interesting about perceiving the machines with sensors as living creatures. We found no lack of evidence of how human beings anthropomorphize non organic matters in literature, design, art, commercial settings or whenever we construct narrative of things. It is quite poetic to describe machinery in such romantic and emotional language, however, it also manifests ho
I love how the writer describe motions and behaviors the vehicles in this writing. He observes them like how animals are presented on planet earth, is it feels like we are reading some docuseries of some machine/animals. It also just gives me an idea like what if we can make digital ecology documentary later.
It is a bit weird to think that a vehicle is stimulated by the smells, since at least to me sense of smell feels exclusive to living creatures with noses. Nevertheless, smell can be broken down into chemical composition just like how sounds can be broken down into sound waves or physics (please forgive my lack of knowledge and vocabulary this matter). I can’t help being fascinated by the sensor’s capability of processing abstract senses, feelings, and perceptions which seems so organic and unformulated. I also really like how the writer gives the vehicles some personality, so the machines are portrayed beyond simple living creatures as they have agency and preferences.
I have been really interested in our obsessions with optimization of ourselves and surroundings in via technology. In the age of digital surveillance, people are so concerned with phone, location tracking, and web surveillance from our governments. However, we rarely hesitate to hand in our fitness, health and genetic data to the corporations, just so we can get more insights on our internal body and optimize our diets, data, habits, time, etc. We are so entrapped in making the most out of our days. We manufacture our experiences Get the maximum rewards with minimum effort. Treating ourselves like math problems. We let the data determine our self-worth, tell us what is wrong with our bodies, mostly importantly, we forget that our we are just humans andd there are so many factors contribute to our problems. Perpetuating the standards as if there is only one way to live. The fear of uncertainty. Our urge to control and dominate our own lives.
This quote really reminds me of some major issues the Femtech industry. There are countless apps out there that claim to help women to understand their own body by collecting their menstrual and health data. However, health and body data is quite arbitrary, most importantly, individual bodies are particular in their own way. In many menstrual cycle app, the collections of big data often perpetuate the notion of what is perceived as normal, which creates issues such as the app is constantly telling the individual what is wrong with their health when the actual problem is that every body is different and only machines can operate algorithmically.
The idea of preemptive capture is really taking advantage of consumer's ignorance on what they are actually signing up for. However, the responsibility should not entirely fall on the consumers, since no one has the energy to figure out the implications of every click on digital devices. For example, the cookie policies on websites are far more sinister than they appear to be. The trade off for the convenience that technology has brought to us is that we often fall into the trap of ignorance and instant gratification.
This quote is so refreshing that I never thought about the design of electronic objects in this way. Since electronic objects are so new to us, we depend on the signs to learn how they work. This also get me think about the ideas of robots. If the scientists and designers build a robot in the facade of a human (or just a women), we will expect certain behaviors from this robot because of how it looks. Do we associate gender stereotypes with the robots because the signifier of its appearance?
I also think it is quite important to think about cultural context in the design of electronic objects. Since currently most of the electronic objects are still produced and designed by western culture, certain cultural values that is embed in the design will permeate other culture. To think about it from another angle is that when you put two microwaves in front of me, but one is designed by Japanese and one designed by American. I will not understand how to use the Japanese microwave just because of how the Japanese microwave is culturally Japanese and designed exclusively for Japanese people.
I am not quite sure if this quote is necessarily true. Capitalism still manages to create social hierarchy in the field of technology by limiting the functions of the products or using design semiotics meaning what is perceived as sophisticated and expensive. in addition, new technology design is often notoriously expensive such as new PlayStation 5 or iPhone 12. Just like how the price of garments can be jacked up by using expensive materials or specific style of designs, technology products are using the same tactics.