Describes how your node peers other nodes.
peer.discovery.enabled = [true/false]
enables the possibility of being discovered by new peers.peer.discovery.ip.list = []
is a list of the peer to start the discovering. These peers must have the discovery.enabled
option set to true. These are the list of some of RSK bootstrap nodes:| Network | ip.list |
|---|---|
| TestNet | "bootstrap02.testnet.rsk.co:50505","bootstrap03.testnet.rsk.co:50505","bootstrap04.testnet.rsk.co:50505","bootstrap05.testnet.rsk.co:50505" |
| MainNet | "bootstrap01.rsk.co:5050","bootstrap02.rsk.co:5050","bootstrap03.rsk.co:5050","bootstrap04.rsk.co:5050","bootstrap05.rsk.co:5050","bootstrap06.rsk.co:5050","bootstrap07.rsk.co:5050","bootstrap08.rsk.co:5050","bootstrap09.rsk.co:5050","bootstrap10.rsk.co:5050","bootstrap11.rsk.co:5050","bootstrap12.rsk.co:5050","bootstrap13.rsk.co:5050","bootstrap14.rsk.co:5050","bootstrap15.rsk.co:5050","bootstrap16.rsk.co:5050" |
peer.active = []
is used to connect to specific nodes. It can be empty.peer.trusted = []
is a list of peers whose incoming connections are always accepted from. It can be empty.peer.port
is the port used to listen to incoming connections. Default port by each RSK network:| Network | peer.port |
|---|---|
| Regtest | 30305 |
| TestNet | 50505 |
| MainNet | 5050 |
peer.connection.timeout = number (seconds)
defines in seconds the timeout for trying to connect to a peer. Suggested value: 2
.channel.read.timeout = number (seconds)
specifies how much time you will wait for a message to come before closing the channel. Suggested value: 30
.peer.privateKey = hash
a securely generated private key unique for your node that must be set.peer.networkId = int
is the number of the network to connect to. It’s important to mantain these numbers. It identifies the network you are going to connect to. For a regtest private network, you should use always the same (not necessary 34567). RSK networks Ids:| Network | peer.networkId |
|---|---|
| Regtest | 34567 |
| TestNet | 779 |
| MainNet | 775 |
peer.maxActivePeers = int
is the max number of active peers that your node will maintain. Suggested value: 30
.
peer.p2p.eip8 = bool
forces peer to send handshake message in format defined by EIP-8.
Describes where the blockchain database is saved.
database.dir = path
is the place to save physical storage files.database.reset = [true/false]
resets de database when application starts if it is set to true.Enabling de vm.structured
will log all the calls to the VM in the local database, this means, all the contract executions (opcodes).
When testing, using this module is the only way to see Exceptions.
trace = [true/false]
enables the vm.structured
.dir = foldername
the directory where calls are saved.compressed = [true/false]
compress data when enabled.
initStorageLimit = int
the storage limit.An example:
vm.structured {
trace = false
dir = vmtrace
compressed = true
initStorageLimit = 10000
}
Options related to syncing the blockchain:
sync.enabled = [true/false]
enables the blockchain synchronization. Should be set to true
to keep the node updated.sync.max.hashes.ask = int
determines the max amount of blocks to sync in a same batch. The synchronization is done in batches of blocks. Suggested value: 10000
.sync.peer.count = int
minimum peers count used in syncing. Sync may use more peers than this value but always trying to get at least this number from discovery. However, it will continue syncing if it’s not reached.sync.timeoutWaitingPeers = int (seconds)
timeout to start to wait for syncing requests.sync.timeoutWaitingRequests = int (seconds)
expiration time in minutes for peer status.sync.maxSkeletonChunks = int
maximum amount of chunks included in a skeleton message.sync.shunkSize = int
amount of blocks contained in a chunk, must be 192
or a divisor of 192
.An example:
sync {
enabled = true
max.hashes.ask = 10000
peer.count = 10
expectedPeers = 5
timeoutWaitingPeers = 1
timeoutWaitingRequest = 30
expirationTimePeerStatus = 10
maxSkeletonChunks = 20
chunkSize = 192
}
Describes the configuration for the RPC protocol.
rpc.providers = []
lists the different providers (up to this moment, just web
). rpc.providers.web
has a global setting for every web provider, cors
.
rpc.providers.web.cors = domain
restricts the RPC calls from other domains. Default value is localhost
.rpc.providers.web
options:
rpc.providers.web.http
defines http configuration:
rpc.providers.web.http.enabled = [true/false]
enables this web provider. Default value is true
.rpc.providers.web.http.port = port
is the HTTP-RPC server listening port. By default RSK uses 4444
.rpc.providers.web.http.bind_address = address
is the HTTP-RPC server listening interface. By default RSK uses localhost
.rpc.providers.web.http.hosts = []
is the list of node’s domain names or IPs. Check restrictions on valid host names.rpc.providers.web.ws
defines web sockets configuration:
rpc.providers.web.ws.enabled = [true/false]
enables this web provider. Default value is true
.rpc.providers.web.ws.port = port
is the WS-RPC server listening port. By default RSK uses 4445
.rpc.providers.web.ws.bind_address = address
is the WS-RPC server listening interface. By default RSK uses localhost
.rpc.modules
lists of different RPC modules. If a module is not in the list and enabled, its RPC calls are discard.
Examples:
modules = [
{ name: "eth", version: "1.0", enabled: "true" },
{ name: "net", version: "1.0", enabled: "true" },
{ name: "rpc", version: "1.0", enabled: "true" },
{ name: "web3", version: "1.0", enabled: "true" },
{ name: "evm", version: "1.0", enabled: "true" },
{ name: "sco", version: "1.0", enabled: "true" },
{ name: "txpool", version: "1.0", enabled: "true" },
{ name: "personal", version: "1.0", enabled: "true" }
]
It is possible to enable/disable particular methods in a module.
{
name: "evm",
version: "1.0",
enabled: "true",
methods: {
enabled: ["evm_snapshot", "evm_revert"],
disabled: [ "evm_reset", "evm_increaseTime"]
}
}
RSK has implemented an RPC miner module. To use it, you have to include:
{ name: "mnr", version: "1.0", enabled: "true" }
You can store your accounts on the node to use them to sign transactions. However, it is not secure to use a wallet in a public node.
wallet {
enabled = true
accounts = [
{
"publicKey" : "<PUBLIC_KEY>"
"privateKey" : "<PRIVATE_KEY>"
}
]
}
Scoring is the way the node ‘punishes’ other nodes when bad responses are sent. Punishment can be done by node id or address.
scoring.nodes.number = int
number of nodes to keep scoring.scoring.nodes.duration
and scoring.addresses.duration
initial punishment duration (in minutes). Default is 10
.scoring.nodes.increment
and scoring.addresses.increment
punishment duration increment (in percentage). Default is 10
.scoring.nodes.maximum
maximum punishment duration (in minutes). Default is 0
.scoring.addresses.maximum
maximum punishment duration (in minutes). Default is 1 week
.An example:
scoring {
nodes {
number: 100
duration: 12
increment: 10
maximum: 0
}
addresses {
duration: 12
increment: 10
maximum: 6000
}
}
For more information about configuring RSK node to mine go here.
It is a string that describe the name of the configuration. We use:
| Network | blockchain.config.name |
|---|---|
| Regtest | regtest |
| TestNet | testnet |
| MainNet | main |
It’s the network interface with wire protocol and peer discovery.
It is the last resort for public IP when it cannot be obtained by other ways.
It is the node’s public IP. If it’s not configured, default is the IPv4 returned by http://checkip.amazonaws.com
.
It is the path to the genesis file (in resources/genesis). The folder resources/genesis contains several versions of genesis configuration according to the network the peer will run on.
| Network | genesis |
|---|---|
| Regtest | rsk-dev.json |
| TestNet | bamboo-testnet.json |
| MainNet | rsk-mainnet.json |
It defines when a transaction is outdated:
transaction.outdated.threshold = int
is the number of blocks that should pass before pending transaction is removed. Suggested value: 10
.transaction.outdated.timeout = int
is the number of seconds that should pass before pending transaction is removed. Suggested value: 100
(10 blocks * 10 seconds per block).It is a boolean that invokes vm program on message received, if the vm is not invoked the balance transfer occurs anyway. Suggested value: true
.
It is a string that will be included in the hello message of the peer.
Specifies when exactly to switch managing storage of the account on autonomous db. Suggested value: 1
.
If the inmemory storage of the contract exceded the limit, just deltas are saved.
It is the path to the Solidity compiler. It’s set because you may want to use the node to compile your smart contracts.
If you don’t have Solidity installed, you can use /bin/false
as value.
The prune service is a process that runs over the node storage to lighten the space it needs to be synchronized. This process removes useless data over a determined amount of blocks processed.
To enable prune service in your node override your configuration. These are the recommended parameters:
prune {
# prune service could be enabled or not
# values: [true/false]
# default: false
enabled = true
# Number of blocks to process
blocks {
# Number of blocks to copy in each prune run
# default: 5000
toCopy = 5000
# Number of blocks to wait to run prune again
# default: 10000
toWait = 10000
# Number of blocks to suspend blockchain process
# in order to avoid forks
# default: 100
toAvoidForks = 100
}
}


Generate PKCS#12
Please choose the private key file.
Key
Browse
Please choose the certificate file.
Certificate
Browse
CA's certificates
Browse
Alias
Password is required.
Password
Password and Confirm password doesn't match.
Confirm password
Generate


The main search API into RAMADDA is
/search/do , e.g:
http://localhost:8080/repository/search/do?<arguments>
The entry types, metadata types and output types that are available at a given RAMADDA
are listed at
/search/info, e.g.:
http://localhost:8080/repository/search/info
The search arguments include:
The default is to show the above results in a web page. Like any time dealing with entries in RAMADDA you can specify another output type with:
output=<some output>
Common outputs include:
output=atom
output=rss.full
output=thredds.catalog
output=zip.tree
output=default.csv
To search on entry name or description:
text=<text in name or description>
http://localhost:8080/repository/search/do?text=test
You can search on entries of specific types with:
type=<entry type>
http://localhost:8080/repository/search/do?type=group
Date Search
There are 3 types of date based searches. All dates expressed here should be in a standard formats, e.g., 2007-09-01'T'11:05.
//TODO: fix this in the code
Entries have a data date range. This can be searched with:
datadate.from=<lower date range>
datadate.to=<upper date range>
Where the lower date of the entry date range needs to be >= the datadate.from and the upper date of the entry date range is <= the datedate.to
The date when the entry was created and/or modified can be searched with:
createdate.from=<lower date range>
createdate.to=<upper date range>
changedate.from=<lower date range>
changedate.to=<upper date range>
The type of search can be specified with:
datadate.mode=containedby|overlaps|contains
Spatial Search
Entries have a spatial bounds. The
area_ search arguments define a search rectangle. The
areamode argument specifies the type of search -
does the search rectangle overlap or contain the entries bounds.
area_north=<decimal degrees>
area_west=<decimal degrees>
area_east=<decimal degrees>
area_south=<decimal degrees>
areamode=overlaps|contains
Miscellaneous
For entries that have a file the file suffix (e.f., .pdf) can be search on
filesuffix=pdf
Metadata Properties
metadata.attr1.<type>


CLASSICAL FIELD THEORY (B.L.Voronov)
|
- Basic concepts of Riemannian geometry
Vector fields and covectors, tensors. Metric, connection, covariant derivative. Parallel translation and geodesic.
- Curvature tensor and torsion tensor
Properties of the curvature tensor. Metric postulate.
- Symmetries of spaces
The group of motions of the metric (homogeneity and isotropy). Conformal group. Homogeneous spaces.
- Killing vectors
- Spaces of GR
Minkowski space, de Sitter and anti-de Sitter.
- Dynamic metrics of GR
Point-like mass. The model of inflation without the Λ-term. Cooling three-dimensional plane model
- Compactification, the idea of Kaluza-Klein. The problem of time.
- Differential geometry basics
Vector fields on the manifold. Vector bundles. Riemannian structure on a manifold.
- Lie algebras basics
Classification of algebras. Hop, Clifford and Berezin algebras.
- Killing metric on the group. Adjoint representation
- Definition and classification of representations. The configuration space of fields
- Deformative quantization
- Review of the standard model
- Quarks, leptons, bosons. Fundamental and adjoint representation, gauge group of model
- Dynamic principle, action.
General restrictions. Stability. Locality. Renormalizability.
- Symmetries
Groups of symmetries, symmetry algebra, the trivial symmetries. Noether's theorem. Conserved currents and charges. Energy-momentum tensor.
- The theory of a neutral scalar field
Analysis of action. Symmetries. Spontaneous symmetry breaking. Kinks.
- Quantization of scalar field
- Goldstone theorem. Goldstone mode
- Complex scalar field
Analysis of action. Symmetries. Conserved currents. Spontaneous symmetry breaking. Solitons.
- Quantization of complex scalar field
- Clifford algebra
Irreducible representations of Clifford algebra. Lorentz subalgebra.
- Spinor field
Transformations of the fields. Spinor connection. Covariant derivative.
- Dirac field
Action. Renormalizability. Equations of motion. Solution of Dirac equations. Symmetries and currents.
- Quantization of Dirac field
- Chiral symmetry
Chirality (left and right). Chiral current. Neutrino oscillations
- Coloring of spinors (gauge group extension)
- The neutral vector field (Proka's field)
Action, equations, symmetries, conservation laws, quantization. Maxwell's theory (m = 0). Gauge and its choice.
- Isotopic vector fields
Killing metric. Action. Symmetries.
- The interaction of fields of spin 0, 1/2, 1
Representations of fields, admissible Lagrangians. Higgs theory, generation of mass.
- Non-Abelian theory (Yang-Mills)
Non-Abelian vector fields as connection in the bundle. Local gauge symmetry, covariant derivative. Lagrangian. Conserved currents. Generation of mass. Example of chromodynamics
- Weinberg-Salam model
Gauge group, representations of fields. Lagrangian with interaction.
- Higgs mechanism. Higgs boson. Neutral currents
LITERATURE
- V.A.Rubakov. Classical gauge fields.
- N.N.Bogolyubov, D.V.Shirkov. Quantum fields.
- I.P.Volobushev, Yu.A. Kubyshin. Differential Geometry and Lie algebras and their applications in field theory.
- L.B. Okun. Leptons and quarks
|
|


WITNESS LIST Border Affairs - Special Committee April 29, 1999-8:30A HB 565 THIS LIST HAS NO WITNESSES. HB 1355 ON: Abney, William (Bill) (Red River Boundary Commission), Marshall Registering, but not testifying: For: Compton, Michael (Cooke County Sheriff's Office), Gainesville On: Henderson, Tom (Red River Boundary Commission), Byers Hoffman, Margaret (Texas Natural Resource Conservation Commission), Austin King, Jack (Texas Parks & Wildlife -Law Enforcement), Austin Kurzanski, Ken (Texas Parks & Wildlife Department), Austin Reid, Spencer (Texas General Land Office), Austin HB 2025 Registering, but not testifying: For: Cain, Randy (Paso del Norte Health Foundation), Austin Kastrin, Deborah (City of El Paso), El Paso


AI vs AI Selector
White AI
Random
Point
Advanced point
Minimax
Advanced Minimax
VS
Black AI
Random
Point
Advanced point
Minimax
Advanced Minimax
Start AI vs AI Game
Homepage


{% extends "home.html" %} {% block title %}Internal Server Error{% endblock %} {% block content %}
The server encountered an internal error or misconfiguration and was unable to complete your request.
{% if ADMINS %}Please contact the server administrator at {{ADMINS|first|last}} to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
{% endif %}


--- layout: post title: no title date: '2015-07-09T18:30:39+02:00' categories: - Storyboards picture_url: https://film-Storyboards.tumblr.com/post/123677743532 ---


The reverseXSL software provides two interfaces:
This specific package contains three command line tools that, exception made of course of the License Management application, will be mostly used to automate testing within the development cycle.
Command line tools are wrappers built over the original API. Source code is made available for building your custom command line programs, as well as sample API code.
Development tips are contained within the documentation published on reverseXSL.com.
Another command line tool worth noting is the Regular Expression {@link com.reverseXSL.util.RegexCheck tester}. This one is located within the package com.reverseXSL.util. It is very handy for quickly checking the outcome of your regular expressions on single line and multiline data.


◄ Republic of Korea ►
Individual results
| Year | Contestant | Rank | Award |
|---|---|---|---|
| 2023 | Junsuh Lee | 8 | Gold Medal |
| 2023 | Jongyoon Han | 8 | Gold Medal |
| 2023 | Hyunchae Lee | 12 | Gold Medal |
| 2023 | Ian Noh | 17 | Gold Medal |
| 2023 | Kyumin Suh | 18 | Gold Medal |
| 2022 | Youngin Cho | 9 | Gold Medal |
| 2022 | Jihoo Lee | 12 | Gold Medal |
| 2022 | Seunghyeon Lee | 13 | Gold Medal |
| 2022 | Jeonghun Jeong | 36 | Gold Medal |
| 2022 | Kyungmin Song | 75 | Silver Medal |
| 2021 | Kyungmin Kim | 1 | Gold Medal |
| 2021 | Jiwoo Park | 8 | Gold Medal |
| 2021 | Seunghyun Yeo | 9 | Gold Medal |
| 2021 | Sangyeon Park | 11 | Gold Medal |
| 2021 | Dongchan Shin | 23 | Gold Medal |
| 2019 | Soojung Bae | 5 | Gold Medal |
| 2019 | Kyeongjin Jung | 10 | Gold Medal |
| 2019 | Soo ho Choe | 12 | Gold Medal |
| 2019 | Hoo Yun | 23 | Gold Medal |
| 2019 | Taeyoon Lim | 33 | Gold Medal |
| 2018 | Dongjin Shin | 3 | Gold Medal |
| 2018 | Kiwhan Song | 10 | Gold Medal |
| 2018 | Seongyeon Park | 13 | Gold Medal |
| 2018 | Dowon Im | 15 | Gold Medal |
| 2018 | Jaehwan Kim | 43 | Silver Medal |
| 2017 | Jongmin Kim | ≥1 | Gold Medal |
| 2017 | Sangwook Tae | ≥1 | Gold Medal |
| 2017 | Seokwon Choi | ≥1 | Gold Medal |
| 2017 | Soomin Shin | ≥1 | Gold Medal |
| 2017 | Soonhyun Kwon | ≥1 | Gold Medal |
| 2016 | Seungju Hong | 2 | Gold Medal |
| 2016 | Gyunghun Kim | 4 | Gold Medal |
| 2016 | Wounsuk Rhee | 9 | Gold Medal |
| 2016 | Hyoungjoo Kim | 14 | Gold Medal |
| 2016 | Jongheum Jung | 47 | Gold Medal |
| 2015 | Taehyoung Kim | 1 | Gold Medal |
| 2015 | Sol Kim | 3 | Gold Medal |
| 2015 | Hyunsoo Ha | 9 | Gold Medal |
| 2015 | Joonhwi Kim | 10 | Gold Medal |
| 2015 | Seou Choi | 47 | Silver Medal |
| 2014 | Kunhee Kim | 7 | Gold Medal |
| 2014 | Hyeok Choi | 13 | Gold Medal |
| 2014 | Taewook Kim | 27 | Gold Medal |
| 2014 | Sungjae Chi | 34 | Gold Medal |
| 2014 | Donghee Yeum | 36 | Gold Medal |
| 2013 | Changhyon Lee | 19 | Gold Medal |
| 2013 | Jaewon Kim | 20 | Gold Medal |
| 2013 | Donghoi Kim | 26 | Gold Medal |
| 2013 | Jaeha Lee | 29 | Gold Medal |
| 2013 | Sangsu Jeong | 32 | Gold Medal |
| 2012 | Wonseok Lee | 11 | Gold Medal |
| 2012 | Sooshin Kim | 23 | Gold Medal |
| 2012 | Jaemo Lim | 24 | Gold Medal |
| 2012 | Woojin Kweon | 60 | Silver Medal |
| 2012 | Suyeon Choi | 67 | Silver Medal |
| 2011 | Jaeik Oh | 10 | Gold Medal |
| 2011 | Jinil Choi | 19 | Gold Medal |
| 2011 | Min Woo Jung | 20 | Gold Medal |
| 2011 | Sunjin Choi | 24 | Gold Medal |
| 2011 | Yunbin Nam | 53 | Gold Medal |
| 2010 | Tehrim Yoon | 30 | Gold Medal |
| 2010 | Kyungjoo Noh | 43 | Silver Medal |
| 2010 | Sangmin Seo | 84 | Silver Medal |
| 2010 | Seung Hun Lee | 115 | Bronze Medal |
| 2010 | Yong Hyun Son | 124 | Bronze Medal |
| 2009 | Donggun Kim | 3 | Gold Medal |
| 2009 | Bukyoung Jhun | 8 | Gold Medal |
| 2009 | Haewon Ko | 29 | Gold Medal |
| 2009 | Dong Hyun Choi | 38 | Gold Medal |
| 2009 | Young Jun Park | 62 | Silver Medal |
| 2008 | Joohun Kim | 5 | Gold Medal |
| 2008 | Junghoan Park | 10 | Gold Medal |
| 2008 | Jae Min Park | 24 | Gold Medal |
| 2008 | Sung-joon Lee | 40 | Gold Medal |
| 2008 | Duroo Kim | 53 | Silver Medal |
| 2007 | Youngjoon Choi | 1 | Gold Medal |
| 2007 | Hyung Jun Kim | 8 | Gold Medal |
| 2007 | Seung Hyuck Jeon | 38 | Silver Medal |
| 2007 | Hahn Sol Bae | 68 | Silver Medal |
| 2007 | Byung Min Kang | 71 | Silver Medal |
| 2006 | Seong Min Kim | 8 | Gold Medal |
| 2006 | Byung Kun Lee | 10 | Gold Medal |
| 2006 | Min Gyu Kim | 17 | Gold Medal |
| 2006 | Sung Soon Hwang | 23 | Gold Medal |
| 2006 | Jee Soo Yoo | 66 | Silver Medal |
| 2005 | Se Woong Lim | 33 | Gold Medal |
| 2005 | Beum Seok Shim | 38 | Gold Medal |
| 2005 | Hong Seop Choi | 76 | Bronze Medal |
| 2005 | Siyoun Sung | 80 | Bronze Medal |
| 2005 | Jungkyu Cho | 116 | Bronze Medal |
| 2004 | Dae- Hee Pyo | ≥2 | Gold Medal |
| 2004 | Jin Hong Park | ≥2 | Gold Medal |
| 2004 | Joon-Ho Lee | ≥2 | Gold Medal |
| 2004 | Soon-Won Choi | ≥2 | Gold Medal |
| 2004 | Seok-Hyeon Kim | ≥67 | Bronze Medal |
| 2003 | Hyungjun Lee | 7 | Gold Medal |
| 2003 | Young Hyun Kim | 10 | Gold Medal |
| 2003 | Hong Yoon Choi | 16 | Gold Medal |
| 2003 | Yong Suk Moon | 26 | Silver Medal |
| 2003 | Won Seok Choi | 31 | Silver Medal |
| 2002 | Kyung Min Kim | 9 | Gold Medal |
| 2002 | Joon Ha Park | 18 | Gold Medal |
| 2002 | Oh Kyung Kwon | 23 | Gold Medal |
| 2002 | Han Young Kim | 41 | Gold Medal |
| 2002 | Seung Joo Lee | 77 | Silver Medal |
| 2001 | Kyung Min Lee | 52 | Silver Medal |
| 2001 | Min Hyuk Lim | 61 | Silver Medal |
| 2001 | Wong Sang Sunwoo | 64 | Bronze Medal |
| 2001 | Chung Wan Ha | 85 | Bronze Medal |
| 2001 | Won Hee Ko | 99 | Bronze Medal |
| 2000 | Youngsub Yoon | 16 | Silver Medal |
| 2000 | Chan-Youn Park | 17 | Silver Medal |
| 2000 | Sang-Geol Koh | 21 | Silver Medal |
| 2000 | Kyung Min Lee | 78 | Honourable Mention |
| 1999 | Dongsung Huh | 9 | Gold Medal |
| 1999 | Baek-Lok Oh | 20 | Gold Medal |
| 1999 | Seung-Hun Lee | 74 | Silver Medal |
| 1999 | Youngsub Yoon | 97 | Silver Medal |
| 1999 | Hakjoon Lee | 106 | Bronze Medal |
| 1998 | Hyung-Bin Son | 3 | Gold Medal |
| 1998 | Bo-Kyung Choi | 34 | Bronze Medal |
| 1998 | Kyungsuk Lee | 41 | Bronze Medal |
| 1998 | Dongsung Huh | 71 | Honourable Mention |
| 1998 | Youngsub Yoon | 95 | Honourable Mention |
| 1997 | Jung-Ki Hong | 56 | Bronze Medal |
| 1997 | Young-Jin Cho | 61 | Bronze Medal |
| 1997 | Yeul Na | 65 | Bronze Medal |
| 1997 | Bo-Kyung Choi | 76 | Bronze Medal |
| 1997 | Hyung-Bin Son | 86 | Bronze Medal |
| 1996 | Young-Il Joe | 14 | Gold Medal |
| 1996 | Keum-Dong Jung | 55 | Bronze Medal |
| 1996 | Jae-Woo Choi | 60 | Bronze Medal |
| 1996 | Doo-San Paik | 65 | Bronze Medal |
| 1995 | Ho Joong Kwak | 12 | Gold Medal |
| 1995 | Cheol-Hwan Park | 40 | Silver Medal |
| 1995 | Hong-Lak Lee | 47 | Silver Medal |
| 1995 | Dong-Hyun Lee | 94 | Bronze Medal |
| 1995 | Young-Il Joe | 105 | Honourable Mention |
| 1994 | Yong-il Shin | 18 | Bronze Medal |
| 1994 | Ho Joong Kwak | 52 | Honourable Mention |
| 1994 | Suk Bum Chung | 56 | Honourable Mention |
| 1993 | Yongjik Kim | 21 | Silver Medal |
| 1993 | Yoo Chul Chung | 54 | Bronze Medal |
| 1993 | Yong-il Shin | 65 | Bronze Medal |
| 1993 | Jaehyuk Choi | 86 | Honourable Mention |
| 1992 | Yongjik Kim | 33 | Silver Medal |
Results may be incomplete or incorrect.
Please send the relevant information to the webmaster:
<EMAIL_ADDRESS>If you are a participant you can send a personal page URL to be attached to your name.
If you are a participant you can send a personal page URL to be attached to your name.


Report meta annotations which are used by frameworks by reflection but their retention policy is not RUNTIME. If retention policy is missed, then default retention policy 'CLASS' would be used, which means that annotations by default are not visible at runtime
New in 2017.2


My name is Anas Attili I'm 28 years old and I live in Irbid.
Work Experience:
- I worked as a quality Engineer in PV project
- I worked as a customer service representative.
- I have a bachelor degree in Electrical Engineering from Yarmouk university.
- Student at LTUC-ASAC in a Software development course.
- finish my software development course.
- continue learning a new tools and methods in coding.
- have an awesome job in the Software develompent field.
Education:
My goals:


In the NIC of time
Enabling high-performance edge applications with OpenStack, OVS, and SmartNICs
88% increase in mobile data traffic Q4-2017 to Q4-2018
EPC to the rescue
Is it a bird? Is it a plane?
It's SmartNIC !
What is this smartNIC, anyway?
Is it an embedded linux? Is it a linux mini server?
When should you use a smartNIC?
Do you use more than 4CPUs for OVS per compute host?
Ironic Neutron Cyborg
root@cic-1:~# openstack port create
usage: openstack port create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--max-width [--print-empty] [--noindent] [--prefix PREFIX] --network [--device [--mac-address [--device-owner [--vnic-type [--dns-name dns-name] [--fixed-ip subnet= [--binding-profile [--enable | --disable] [--project [--project-domain [--security-group [--qos-policy [--enable-port-security | --disable-port-security] [--allowed-address ip-address= [--tag --vnic-type VNIC type for this port (direct | direct-physical | macvtap | normal | baremetal, default: normal)
root@FPA1066GX-DA2:~# ovs-appctl dpif/dump-flows br0
in_port(14),eth(src=68:05:ca:91:36:b5,dst=68:05:ca:91:36:b5),eth_type(0x0800),ipv4(src=<IP_ADDRESS>,dst=<IP_ADDRESS>,proto=6),
tcp(src=1234,dst=5678), packets:0, bytes:0, used:7.340s, actions:drop
Performance
Kernel Space vs User Space
Kernel bypass with DPDK
DPDK is great except ...
you need to reinvent the wheel$ echo 0000:18:00.4 > /sys/bus/pci/devices/0000\:18\:00.4/driver/unbind
$ echo 0000:18:00.3 > /sys/bus/pci/devices/0000\:18\:00.3/driver/unbind
$ echo 0000:18:00.4 > modprobe vfio
$ echo 0000:18:00.3 > modprobe vfio_pci
$ mkdir -p /dev/hugepages/
$ mount -t hugetlbfs hugetlbfs /dev/hugepages/
$ echo 2048 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
$ modprobe uio
$ insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
$ dpdk-devbind.py -b igb_uio 18:00.3 18:00.4
XDP and eBPF
$ grep CONFIG_BPF_SYSCALL /boot/config-4.15.0-46-generic
CONFIG_BPF_SYSCALL=y
prompt: XDP sockets
type: bool
depends on: CONFIG_BPF_SYSCALL
defined in net/xdp/Kconfig
found in Linux kernels: 4.18–4.20, 5.0–5.1, 5.2-rc+HEAD
XDP_DROP
XDP_PASS
XDP_TX
XDP_ABORTED
XDP_REDIRECT
eBPF is a superpower
This is BPF!
eBPF to modify the kernel behaviour
Shamefully stolen from Alexei


The basis for a half-edge data structure, also known as doubly connected edge list (DCEL).
[name] is an add-on, and must be imported explicitly. See [link:#manual/introduction/Installation Installation / Addons].
import { HalfEdge } from 'three/addons/math/ConvexHull.js';
[page:VertexNode vertex] - [page:VertexNode] A reference to its destination vertex.
[page:Face face] - [page:Face] A reference to its face.
Creates a new instance of [name].
Reference to the destination vertex. The origin vertex can be obtained by querying the destination of its twin, or of the previous half-edge. Default is undefined.
Reference to the previous half-edge of the same face. Default is null.
Reference to the next half-edge of the same face. Default is null.
Reference to the twin half-edge to reach the opposite face. Default is null.
Each half-edge bounds a single face and thus has a reference to that face. Default is undefined.
Returns the destination vertex.
Returns the origin vertex.
Returns the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean length] (straight-line length) of the edge.
Returns the square of the [link:https://en.wikipedia.org/wiki/Euclidean_distance Euclidean length] (straight-line length) of the edge.
[page:HalfEdge edge] - Any half-edge.
Sets the twin edge of this half-edge. It also ensures that the twin reference of the given half-edge is correctly set.
[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/math/ConvexHull.js examples/jsm/math/ConvexHull.js]


Zone Configuration
*
Floor Map
Zone List
| Floor Name | Zone Name | Zone Image | Action |
|---|
Zone List
No records Found!


- Description
- registers a content provider for a specific URL template.
- Parameter Provider
- the content provider to register.
This may be NULL, in which case a later
XContentProvider::queryContent with an
XContentIdentifier that matches the Scheme
will simply return NULL. These "dummy" content providers are useful
in combination with other content providers that are registered on a
wildcard URL template: For example, imagine that you want to route all
http URLs to a HTTP content provider, but want to block all URLs for
the server www.dont.go . One solution would be to register
the HTTP content provider on the Scheme http ,
and to register a "dummy" (i.e., NULL) content provider on the
Scheme "http://www.dont.go"([/?#].*)? .
- Parameter Scheme
- the URL scheme for the provided contents. More generally, this may not
only be a URL scheme, but a URL template.
A URL template is a regular expression (represented as a string) that
specifies a subset of the set of all possible URLs (this subset
consists of exactly those URLs that match the regular expression). The
language to denote the regular expressions is initially quite limited,
but it may be extended in the future:
regexp = scheme / simple / translation
scheme = ALPHA *(ALPHA / DIGIT / "+" / "-" / ".")
simple = simple-prefix / simple-authority / simple-domain
translation = trans-prefix / trans-authority / trans-domain
simple-prefix = [string] ".*"
trans-prefix = [string] "(.*)->" [string] "\1"
simple-authority = [string] "([/?#].*)?"
trans-authority = [string] "(([/?#].*)?)->" string "\1"
simple-domain = [string] "[^/?#]*" string "([/?#].*)?"
trans-domain = [string] "([^/?#]*" string "([/?#].*)?)->" string "\1"
string = DQUOTE 1*(schar / sescape) DQUOTE ; DQUOTE is "
schar = < any UTF-16 character except " or \>
sescape = "\" (DQUOTE / "\")
A <scheme>: matches any URL of exactly the given
scheme (ignoring case), keeping the extension from URL schemes to URL
templates backwards compatible. The <simple>:
regexps match any URL starting with a given string literal, followed
by arbitrary characters (<simple-prefix>: ), or
by arbitrary characters that start with one of '/', '?', or '#', if any
(<simple-authority>: ), or by arbitrary characters not
including any of '/', '?', or '#', followed by a given string literal,
followed by arbitrary characters that start with one of '/', '?', or
'#', if any. The comparision of string literals is done ignoring the
case of ASCII letters. The <translation>: regexps
match the same URLs as their <simple>: counterparts,
but they also describe how a (local) URL is mapped to another (remote)
URL. This mapping is only relevant for methods of the
RemoteAccessContentProvider's
XParameterizedContentProvider interface; in all other
cases, <translation>: regexps have the same semantics
as their <simple>: counterparts.
- Parameter ReplaceExisting
- true: replace the provider possibly registered for the given URL
template. The replaced provider will not be deregistered automatically!
If the superseding provider gets deregistered, the superseded one will
become active again.
false: do not register, if another provider is already registered
for the given URL template.
- Returns
- the replaced content provider, if there was one.
- See also
- XContentIdentifier
|


The earth has a diameter of 7,917.5mi
The are ~4,256 satellites orbiting the earth
The iss space station is 249 mi from the earth
The earth is 238,900 miles from the moon
It takes 3 days to reach the moon,
but a probe has passed by the moon in 8 hours and 35 minutes
But this long scoll won't take that long....
Or will it? (Insert Evil Laugh)
Oh...here we are.
Welcome to the rock. (Alcatraz refrence)
Where are you going? The moon is up there...
A long time ago, in a galaxy far,
far away....


/*
* Copyright (c) 2011-2013, Yahoo! Inc. All rights reserved.
* Copyrights licensed under the New BSD License.
* See the accompanying LICENSE file for terms.
*/
/*jslint anon:true, sloppy:true, nomen:true */
/*global YUI*/
YUI.add('model-vanilla', function (Y, NAME) {
'use strict';
/**
TODO: This will eventually become part of the YUI Core, (work in progress here
https://github.com/yui/yui3/pull/323), and the only pending work in mojito will
be to remove this file, and replace apidoc references to Model.Vanilla with
Y.Model.
@module app
@submodule model-vanilla
@since 3.11.0
**/
var GlobalEnv = YUI.namespace('Env.Model'),
AttributeCore = Y.AttributeCore,
AttributeExtras = Y.AttributeExtras,
Lang = Y.Lang,
YArray = Y.Array,
YObject = Y.Object;
/**
Attribute-based data model with APIs for getting, setting, validating, and
syncing attribute values.
This Vanilla model does NOT use `Y.BaseCore`, instead it uses `Y.mix()` and
a regular prototype definition to mix in the model api with the AttributeCore
and AttributeExtras to provide the exact same API that `Y.Model` exposes but
with better performance when it comes to the server runtime.
See also http://yuilibrary.com/yui/docs/api/classes/Model.html
@class Model.Vanilla
@constructor
**/
function ModelVanilla(config) {
this.changed = {};
this.lastChange = {};
this.lists = [];
this.idAttribute = 'id';
this._allowAdHocAttrs = true;
this._isYUIModel = true;
AttributeCore.apply(this, arguments);
AttributeExtras.apply(this, arguments);
if (config) {
this.setAttrs(config);
}
}
ModelVanilla.prototype = {
// -- Public Properties ----------------------------------------------------
/**
Hash of attributes that have changed since the last time this model was
saved.
@property changed
@type Object
@default {}
**/
/**
Name of the attribute to use as the unique id (or primary key) for this
model.
The default is `id`, but if your persistence layer uses a different name for
the primary key (such as `_id` or `uid`), you can specify that here.
The built-in `id` attribute will always be an alias for whatever attribute
name you specify here, so getting and setting `id` will always behave the
same as getting and setting your custom id attribute.
@property idAttribute
@type String
@default `'id'`
**/
// idAttribute: 'id',
/**
Hash of attributes that were changed in the last `change` event. Each item
in this hash is an object with the following properties:
* `newVal`: The new value of the attribute after it changed.
* `prevVal`: The old value of the attribute before it changed.
* `src`: The source of the change, or `null` if no source was specified.
@property lastChange
@type Object
@default {}
**/
/**
Array of `ModelList` instances that contain this model.
When a model is in one or more lists, the model's events will bubble up to
those lists. You can subscribe to a model event on a list to be notified
when any model in the list fires that event.
This property is updated automatically when this model is added to or
removed from a `ModelList` instance. You shouldn't alter it manually. When
working with models in a list, you should always add and remove models using
the list's `add()` and `remove()` methods.
@example Subscribing to model events on a list:
// Assuming `list` is an existing Y.ModelList instance.
list.on('*:change', function (e) {
// This function will be called whenever any model in the list
// fires a `change` event.
//
// `e.target` will refer to the model instance that fired the
// event.
});
@property lists
@type ModelList[]
@default `[]`
**/
// -- Protected Properties -------------------------------------------------
/**
This tells `Y.Base` that it should create ad-hoc attributes for config
properties passed to Model's constructor. This makes it possible to
instantiate a model and set a bunch of attributes without having to subclass
`Y.Model` and declare all those attributes first.
@property _allowAdHocAttrs
@type Boolean
@default true
@protected
@since 3.5.0
**/
// _allowAdHocAttrs: true,
/**
Total hack to allow us to identify Model instances without using
`instanceof`, which won't work when the instance was created in another
window or YUI sandbox.
@property _isYUIModel
@type Boolean
@default true
@protected
@since 3.5.0
**/
// _isYUIModel: true,
// -- Public Methods -------------------------------------------------------
/**
Returns a clientId string that's unique among all models on the current page
(even models in other YUI instances). Uniqueness across pageviews is
unlikely.
@method generateClientId
@return {String} Unique clientId.
**/
generateClientId: function () {
GlobalEnv.lastId = GlobalEnv.lastId || 0;
return this.constructor.NAME + '_' + (GlobalEnv.lastId += 1);
},
/**
Returns the value of the specified attribute.
If the attribute's value is an object, _name_ may use dot notation to
specify the path to a specific property within the object, and the value of
that property will be returned.
@example
// Set the 'foo' attribute to an object.
myModel.set('foo', {
bar: {
baz: 'quux'
}
});
// Get the value of 'foo'.
myModel.get('foo');
// => {bar: {baz: 'quux'}}
// Get the value of 'foo.bar.baz'.
myModel.get('foo.bar.baz');
// => 'quux'
@method get
@param {String} name Attribute name or object property path.
@return {Any} Attribute value, or `undefined` if the attribute doesn't
exist.
**/
// get() is defined by Y.Attribute.
/**
Returns an HTML-escaped version of the value of the specified string
attribute. The value is escaped using `Y.Escape.html()`.
@method getAsHTML
@param {String} name Attribute name or object property path.
@return {String} HTML-escaped attribute value.
**/
getAsHTML: function (name) {
var value = this.get(name);
return Y.Escape.html(Lang.isValue(value) ? String(value) : '');
},
/**
Returns a URL-encoded version of the value of the specified string
attribute. The value is encoded using the native `encodeURIComponent()`
function.
@method getAsURL
@param {String} name Attribute name or object property path.
@return {String} URL-encoded attribute value.
**/
getAsURL: function (name) {
var value = this.get(name);
return encodeURIComponent(Lang.isValue(value) ? String(value) : '');
},
/**
Returns `true` if any attribute of this model has been changed since the
model was last saved.
New models (models for which `isNew()` returns `true`) are implicitly
considered to be "modified" until the first time they're saved.
@method isModified
@return {Boolean} `true` if this model has changed since it was last saved,
`false` otherwise.
**/
isModified: function () {
return this.isNew() || !YObject.isEmpty(this.changed);
},
/**
Returns `true` if this model is "new", meaning it hasn't been saved since it
was created.
Newness is determined by checking whether the model's `id` attribute has
been set. An empty id is assumed to indicate a new model, whereas a
non-empty id indicates a model that was either loaded or has been saved
since it was created.
@method isNew
@return {Boolean} `true` if this model is new, `false` otherwise.
**/
isNew: function () {
return !Lang.isValue(this.get('id'));
},
/**
Loads this model from the server.
This method delegates to the `sync()` method to perform the actual load
operation, which is an asynchronous action. Specify a _callback_ function to
be notified of success or failure.

If the load operation succeeds and one or more of the loaded attributes
differ from this model's current attributes, a `change` event will be fired.
@method load
@param {Object} [options] Options to be passed to `sync()` and to `set()`
when setting the loaded attributes. It's up to the custom sync
implementation to determine what options it supports or requires, if any.
@param {callback} [callback] Called when the sync operation finishes.
@param {Error|null} callback.err If an error occurred, this parameter will
contain the error. If the sync operation succeeded, _err_ will be
`null`.
@param {Any} callback.response The server's response. This value will
be passed to the `parse()` method, which is expected to parse it and
return an attribute hash.
@chainable
**/
load: function (options, callback) {
var self = this;
// Allow callback as only arg.
if (typeof options === 'function') {
callback = options;
options = {};
}
options = options || {};
self.sync('read', options, function (err, response) {
self._handleRead(err, response, options, callback);
});
return self;
},
/**
Called to parse the _response_ when the model is loaded from the server.
This method receives a server _response_ and is expected to return an
attribute hash.
The default implementation assumes that _response_ is either an attribute
hash or a JSON string that can be parsed into an attribute hash. If
_response_ is a JSON string and either `Y.JSON` or the native `JSON` object
are available, it will be parsed automatically. If a parse error occurs, an
`error` event will be fired and the model will not be updated.
You may override this method to implement custom parsing logic if necessary.
@method parse
@param {Any} response Server response.
@return {Object} Attribute hash.
**/
parse: function (response) {
if (typeof response === 'string') {
try {
return Y.JSON.parse(response);
} catch (ex) {
return null;
}
}
return response;
},
/**
Saves this model to the server.
This method delegates to the `sync()` method to perform the actual save
operation, which is an asynchronous action. Specify a _callback_ function to
be notified of success or failure.

If the save operation succeeds and one or more of the attributes returned in
the server's response differ from this model's current attributes, a
`change` event will be fired.
@method save
@param {Object} [options] Options to be passed to `sync()` and to `set()`
when setting synced attributes. It's up to the custom sync implementation
to determine what options it supports or requires, if any.
@param {Function} [callback] Called when the sync operation finishes.
@param {Error|null} callback.err If an error occurred or validation
failed, this parameter will contain the error. If the sync operation
succeeded, _err_ will be `null`.
@param {Any} callback.response The server's response. This value will
be passed to the `parse()` method, which is expected to parse it and
return an attribute hash.
@chainable
**/
save: function (options, callback) {
var self = this;
// Allow callback as only arg.
if (typeof options === 'function') {
callback = options;
options = {};
}
options = options || {};
self._validate(self.toJSON(), function (err) {
var action;
if (err) {
if (callback) {
callback.call(null, err);
}
return;
}
action = self.isNew() ? 'create' : 'update';
self.sync(action, options, function (err, response) {
self._handleSave(err, response, options, callback);
});
});
return self;
},
/**
Sets the value of a single attribute. If model validation fails, the
attribute will not be set and an `error` event will be fired.
Use `setAttrs()` to set multiple attributes at once.
@example
model.set('foo', 'bar');
@method set
@param {String} name Attribute name or object property path.
@param {any} value Value to set.
@param {Object} [options] Data to be mixed into the event facade of the
`change` event(s) for these attributes.
@param {Boolean} [options.silent=false] If `true`, no `change` event will
be fired.
@chainable
**/
set: function (name, value, options) {
var attributes = {};
attributes[name] = value;
return this.setAttrs(attributes, options);
},
/**
TODO: Update description.
Sets the values of multiple attributes at once. If model validation fails,
the attributes will not be set and an `error` event will be fired.
@example
model.setAttrs({
foo: 'bar',
baz: 'quux'
});
@method setAttrs
@param {Object} attributes Hash of attribute names and values to set.
@param {Object} [options] Data to be mixed into the event facade of the
`change` event(s) for these attributes.
@param {Boolean} [options.silent=false] If `true`, no `change` event will
be fired.
@chainable
**/
setAttrs: function (attributes, options) {
var idAttribute = this.idAttribute,
changed,
e,
key,
lastChange,
transaction;
options = options || {};
transaction = options._transaction = {};
// When a custom id attribute is in use, always keep the default `id`
// attribute in sync.
if (idAttribute !== 'id') {
// So we don't modify someone else's object.
attributes = Y.merge(attributes);
if (YObject.owns(attributes, idAttribute)) {
attributes.id = attributes[idAttribute];
} else if (YObject.owns(attributes, 'id')) {
attributes[idAttribute] = attributes.id;
}
}
for (key in attributes) {
if (attributes.hasOwnProperty(key) && YObject.owns(attributes, key)) {
this._setAttr(key, attributes[key], options);
}
}
this._processAttrsTransaction(transaction, options);
return this;
},
/**
Override this method to provide a custom persistence implementation for this
model. The default just calls the callback without actually doing anything.
This method is called internally by `load()`, `save()`, and `destroy()`.
@method sync
@param {String} action Sync action to perform. May be one of the following:
* `create`: Store a newly-created model for the first time.
* `delete`: Delete an existing model.
* `read` : Load an existing model.
* `update`: Update an existing model.
@param {Object} [options] Sync options. It's up to the custom sync
implementation to determine what options it supports or requires, if any.
@param {Function} [callback] Called when the sync operation finishes.
@param {Error|null} callback.err If an error occurred, this parameter will
contain the error. If the sync operation succeeded, _err_ will be
falsy.
@param {Any} [callback.response] The server's response.
**/
sync: function () {
var yarray = YArray, // jslint :(
callback = yarray(arguments, 0, true).pop();
if (typeof callback === 'function') {
callback();
}
},
/**
Returns a copy of this model's attributes that can be passed to
`Y.JSON.stringify()` or used for other nefarious purposes.
The `clientId` attribute is not included in the returned object.
If you've specified a custom attribute name in the `idAttribute` property,
the default `id` attribute will not be included in the returned object.
Note: The ECMAScript 5 specification states that objects may implement a
`toJSON` method to provide an alternate object representation to serialize
when passed to `JSON.stringify(obj)`. This allows class instances to be
serialized as if they were plain objects. This is why Model's `toJSON`
returns an object, not a JSON string.
See <http://es5.github.com/#x15.12.3> for details.
@method toJSON
@return {Object} Copy of this model's attributes.
**/
toJSON: function () {
var attrs = this.getAttrs();
delete attrs.clientId;
delete attrs.destroyed;
delete attrs.initialized;
if (this.idAttribute !== 'id') {
delete attrs.id;
}
return attrs;
},
/**
Reverts the last change to the model.
If an _attrNames_ array is provided, then only the named attributes will be
reverted (and only if they were modified in the previous change). If no
_attrNames_ array is provided, then all changed attributes will be reverted
to their previous values.
Note that only one level of undo is available: from the current state to the
previous state. If `undo()` is called when no previous state is available,
it will simply do nothing.
@method undo
@param {Array} [attrNames] Array of specific attribute names to revert. If
not specified, all attributes modified in the last change will be
reverted.
@param {Object} [options] Data to be mixed into the event facade of the
change event(s) for these attributes.
@param {Boolean} [options.silent=false] If `true`, no `change` event will
be fired.
@chainable
**/
undo: function (attrNames, options) {
var lastChange = this.lastChange,
idAttribute = this.idAttribute,
toUndo = {},
needUndo;
attrNames = attrNames || YObject.keys(lastChange);
YArray.each(attrNames, function (name) {
if (YObject.owns(lastChange, name)) {
// Don't generate a double change for custom id attributes.
name = name === idAttribute ? 'id' : name;
needUndo = true;
toUndo[name] = lastChange[name].prevVal;
}
});
return needUndo ? this.setAttrs(toUndo, options) : this;
},
/**
Override this method to provide custom validation logic for this model.
While attribute-specific validators can be used to validate individual
attributes, this method gives you a hook to validate a hash of all
attributes before the model is saved. This method is called automatically
before `save()` takes any action. If validation fails, the `save()` call
will be aborted.
In your validation method, call the provided `callback` function with no
arguments to indicate success. To indicate failure, pass a single argument,
which may contain an error message, an array of error messages, or any other
value. This value will be passed along to the `error` event.
@example
model.validate = function (attrs, callback) {
if (attrs.pie !== true) {
// No pie?! Invalid!
callback('Must provide pie.');
return;
}
// Success!
callback();
};
@method validate
@param {Object} attrs Attribute hash containing all model attributes to
be validated.
@param {Function} callback Validation callback. Call this function when your
validation logic finishes. To trigger a validation failure, pass any
value as the first argument to the callback (ideally a meaningful
validation error of some kind).
@param {Any} [callback.err] Validation error. Don't provide this
argument if validation succeeds. If validation fails, set this to an
error message or some other meaningful value. It will be passed
along to the resulting `error` event.
**/
validate: function (attrs, callback) {
if (callback) {
callback();
}
},
// -- Protected Methods ----------------------------------------------------
/**
Duckpunches the `addAttr` method provided by `Y.Attribute` to keep the
`id` attribute’s value and a custom id attribute’s (if provided) value
in sync when adding the attributes to the model instance object.
Marked as protected to hide it from Model's public API docs, even though
this is a public method in Attribute.
@method addAttr
@param {String} name The name of the attribute.
@param {Object} config An object with attribute configuration property/value
pairs, specifying the configuration for the attribute.
@param {Boolean} lazy (optional) Whether or not to add this attribute lazily
(on the first call to get/set).
@return {Object} A reference to the host object.
@chainable
@protected
**/
addAttr: function (name, config, lazy) {
var idAttribute = this.idAttribute,
idAttrCfg,
id;
if (idAttribute && name === idAttribute) {
idAttrCfg = this._isLazyAttr('id') || this._getAttrCfg('id');
id = config.value === config.defaultValue ? null : config.value;
if (!Lang.isValue(id)) {
// Hunt for the id value.
id = idAttrCfg.value === idAttrCfg.defaultValue ? null : idAttrCfg.value;
if (!Lang.isValue(id)) {
// No id value provided on construction, check defaults.
id = Lang.isValue(config.defaultValue) ?
config.defaultValue :
idAttrCfg.defaultValue;
}
}
config.value = id;
// Make sure `id` is in sync.
if (idAttrCfg.value !== id) {
idAttrCfg.value = id;
if (this._isLazyAttr('id')) {
this._state.add('id', 'lazy', idAttrCfg);
} else {
this._state.add('id', 'value', id);
}
}
}
return AttributeCore.prototype.addAttr.apply(this, arguments);
},
/**
Calls the public, overrideable `parse()` method and returns the result.
Override this method to provide a custom pre-parsing implementation. This
provides a hook for custom persistence implementations to "prep" a response
before calling the `parse()` method.
@method _parse
@param {Any} response Server response.
@return {Object} Attribute hash.
@protected
@see Model.parse()
@since 3.7.0
**/
_parse: function (response) {
return this.parse(response);
},
// TODO: Document method.
// TODO: Think if this is a good name.
_processAttrsTransaction: function (transaction, options) {
var changed, e, key, lastChange;
if (!YObject.isEmpty(transaction)) {
changed = this.changed;
lastChange = this.lastChange = {};
for (key in transaction) {
if (transaction.hasOwnProperty(key) && YObject.owns(transaction, key)) {
e = transaction[key];
changed[key] = e.newVal;
lastChange[key] = {
newVal : e.newVal,
prevVal: e.prevVal,
src : e.src || null
};
}
}
}
},
// TODO: Document method.
// TODO: Think if this is a good name.
_handleRead: function (err, response, options, callback) {
var parsed;
if (!err) {
parsed = this._parse(response);
this.setAttrs(parsed, options);
this.changed = {};
}
if (callback) {
callback(err, response);
}
},
// TODO: Document method.
// TODO: Think if this is a good name.
_handleSave: function (err, response, options, callback) {
var parsed;
if (!err) {
if (response) {
parsed = this._parse(response);
this.setAttrs(parsed, options);
}
this.changed = {};
}
if (callback) {
callback(err, response);
}
},
/**
TODO: Update method description.
Calls the public, overridable `validate()` method and fires an `error` event
if validation fails.
@method _validate
@param {Object} attributes Attribute hash.
@param {Function} callback Validation callback.
@param {Any} [callback.err] Value on failure, non-value on success.
@protected
**/
_validate: function (attributes, callback) {
this.validate(attributes, function (err) {
if (Lang.isValue(err)) {
callback(err);
} else {
callback();
}
});
}
};
Y.Model.Vanilla = ModelVanilla;
Y.mix(Y.Model.Vanilla, AttributeCore, false, null, 1);
Y.mix(Y.Model.Vanilla, AttributeExtras, false, null, 1);
}, "", { requires: ["attribute-core", "attribute-extras", "escape", "json-parse", "model"]});


{% if breed %} The breed you entered is {{breed}}. You can update it in the form below: {% else %} Please enter your breed in the form below: {% endif %}


EBD - Easton Bible DIctionary
Merathaim
MERATHAIM
"MERATHAIM "double rebellion, probably a symbolical name given to Babylon (
Jeremiah 50:21
), denoting rebellion exceeding that of other nations.
"MERATHAIM "double rebellion, probably a symbolical name given to Babylon (Jeremiah 50:21), denoting rebellion exceeding that of other nations.


|
Leave
Me Alone
(Michael Jackson) |
|
Aaow!-Hoo
Hoo!
  (And There's The Choice That We Make) (And This Choice You Must Take) Who's Laughin' Baby?     I Don't . . . I Don't . . . I . . .I . . ., Aaow! Hee Hee!


It helps you to get better at drawing by getting practice
You get better at time managing
you can meet a lot of people with the same interests
Welcome!
This page has almost everythoung you need to know about making, reading or searching webcomics! Please feel free to browse through our links and contact us if you want!
Name: How did you find out about us?
friends
internet
pamphlet


--- layout: page title: About header-img: "img/about-bg.png" ---
I am a 31 year old professional in the wine industry currently seeking to develop my skill base in data science, python, and related fields.


A Look at Drought in the United States (2000-2016)
Drought is often seen as a problem that mainly affects the western United States. However, it affects
the entire country. Severe droughts have hit not only California, but places as diverse as Texas, Massachusetts and
Georgia.
Droughts can linger for years as in California's current drought. In other cases they can end abruptly. Notice how Texas drought levels
plummeted in June 2015 due to record rainfall in late May.


When it's Time to Learn, it's Time to Code.
Sign-up.. when it's time to
learn.
Have an account?
Sign in.
Sign Up
Save
Cancel
© theIBMapprentice


Classical Boson Sampling using the algorithm of Clifford and Clifford (2017) <arXiv:1706.01260>. Also provides functions for generating random unitary matrices, evaluation of matrix permanents (both real and complex) and evaluation of complex permanent minors.
| Version: | 0.1.1 |
| Imports: | Rcpp (≥ 0.12.12) |
| LinkingTo: | Rcpp, RcppArmadillo |
| Published: | 2017-09-04 |
| Author: | Peter Clifford and Raphaël Clifford |
| Maintainer: | Raphaël Clifford <clifford at cs.bris.ac.uk> |
| License: | GPL-2 |
| NeedsCompilation: | yes |
| CRAN checks: | BosonSampling results |
| Reference manual: | BosonSampling.pdf |
| Package source: | BosonSampling_0.1.1.tar.gz |
| Windows binaries: | r-devel: BosonSampling_0.1.1.zip, r-release: BosonSampling_0.1.1.zip, r-oldrel: BosonSampling_0.1.1.zip |
| OS X binaries: | r-release: BosonSampling_0.1.1.tgz, r-oldrel: BosonSampling_0.1.1.tgz |
Please use the canonical form https://CRAN.R-project.org/package=BosonSampling to link to this page.


Welcome {{ email }}.
First Name
Last Name
Password
Password AGAIN
submit
#from this we make firstname.lastname user account


Today I wrote bash code which shells out to Perl which generates bash
code that is executed by the original bash shell, automating a multi
command $KMD notary process that I had been doing manually for months.
The UTXOs must flow. https://t.co/hEMqYwWpGX
repo to launch and manage KMDLabs notary nodes. Contribute to KMDLabs/StakedNotary development by creating an account on GitHub.
Greer17-Apr-19 02:17 AM
thats the one I was using that calls several other bash scripts, that call other bash scripts and there's a python script in there somewhere. I was never any good at chess
Alright17-Apr-19 02:18 AM
Joker isn't that great at bash, but he sure as fuck understands iguana
Greer17-Apr-19 02:18 AM
I dont even thing all of the dependent scripts were in the repo, had to create at least one
Dr.Terminus17-Apr-19 02:18 AM
does crontab -e need to be run once more upon each reboot?
or are its contents always active / running in background once set ?
Greer17-Apr-19 02:19 AM
keeps running once set
Dr.Terminus17-Apr-19 02:19 AM
Greer17-Apr-19 02:19 AM
its per user though
dont tell me if you're running it all as root user, >.<
@Alright I enjoy bash scripts, been a real pleasure messing with this notary node stuff, forcing me to learn more.
wish I'd been involved in whatever (learning?) project those that are doing best here were involved with.
thanks, pretty sure I have your repo too, will check it out
Alright17-Apr-19 02:22 AM
#kmdlabs
Greer17-Apr-19 02:22 AM
thats the one!
vosk got me involved too late this year
Alright17-Apr-19 02:23 AM
Vosk is after money and not furthering the progress of KMD development
Greer17-Apr-19 02:23 AM
O.o
Alright17-Apr-19 02:24 AM
Care to dispute that?
Greer17-Apr-19 02:25 AM
I dont think its an either/or thing
Alright17-Apr-19 02:25 AM
You'd make a great op, no reason to give Vosk a cut
Greer17-Apr-19 02:25 AM
he'll do way more for komodo than I would
Strob17-Apr-19 02:26 AM
I'm 2nd last 6hours and 12 hours but I need to restart! I need to switch my ups from 120v to 240v to accommodate my just arrived Z11. .. I don't have the courage to click on shut down but I need to...
Greer17-Apr-19 02:26 AM
even if he just wants some passive income, he's able to shine a very bright light on the project. Look at what he did for zen in 2007/2008
Dr.Terminus17-Apr-19 02:27 AM
does kmd require walletreset once / twice a day like asset chain coins do?
Greer17-Apr-19 02:27 AM
@Strob I feel your pain, sucks to be at the bottom while you figure stuff out
Alright17-Apr-19 02:28 AM
Vosk promotes stuff he is paid to promote or will otherwise make him money to promote
Wonder if CPU mining is still profitable in 2019? Cryptocurrency mining may not be insanely popular like it was a year ago, however it is still very possible...
2
Greer17-Apr-19 02:29 AM
nobody tagged you voskcoin, you lurking?
1
Alright17-Apr-19 02:29 AM
right
Dr.Terminus17-Apr-19 02:29 AM
does kmd require walletreset once / twice a day like asset chain coins do?
Greer17-Apr-19 02:35 AM
I dont see anything wrong with being financially motivated. Vosk has a large audience and spends more time producing content for them than I do on this node and he's good at it. I couldn't/wouldn't want to do what he does but I enjoy sysops and want to learn more about blockchain. Komodo could use the publicity. Its a win/win/win
1
Alright17-Apr-19 02:35 AM
@Dr.Terminus do you mean cleanwallet rpc command?
Dr.Terminus17-Apr-19 02:35 AM
yes
well
Alright17-Apr-19 02:36 AM
~twice a day on all chains
Dr.Terminus17-Apr-19 02:36 AM
walletreset from StakedNotary repo(edited)
yes, have it configured for all asset chains, tried on kmd and was told i had insufficeint funds(edited)
still showed like .99
VoskCoin17-Apr-19 02:39 AM
@Greer always lurking ill brb still have to post to btc talk twitter and fb
Alright17-Apr-19 02:39 AM
not the truth
VoskCoin17-Apr-19 02:41 AM
@Alright while I have always enjoyed KMD I cannot cover it full time for free -- I have been bugging @benohanlon since 2017 to collaborate in some fashion, and also spoke with @Steve Lee in 2018
I see you dont like me, whys that? @Alright
Dr.Terminus17-Apr-19 02:41 AM
how much KMD is requird to self send / walletreset ?
all assetchains worked
kmd failed
Greer17-Apr-19 02:42 AM
@Dr.Terminus I have less than .9 and its enough. give it some time and try again
Dr.Terminus17-Apr-19 02:42 AM
failed like 12 hours ago
and again just now
Alright17-Apr-19 02:43 AM
@VoskCoin Notary ops are about tech rather than marketing. You see if as a money printing machine. We see it as a way to further development. You haven't been involved in the KMD since last election, so this is obvious
Dr.Terminus17-Apr-19 02:43 AM
error code -4
Greer17-Apr-19 02:43 AM
ok, i'll let the smart people answer that one then
ComputerGenie 👴👴👴17-Apr-19 02:44 AM
You may like CG's startup script
There's some stuff in there that ain't mine
VoskCoin17-Apr-19 02:44 AM
@Alright why cant a notary node focus on bringing something else to the project, such as educational tutorials to actually GROW the kmd ecosystem?
@Deleted User thanks, you too
Alright17-Apr-19 02:45 AM
Why do you only show up around elections?
VoskCoin17-Apr-19 02:45 AM
@Greer is my secret weapon @Deleted User
@Alright lol you say that like it is unreasonable, do you show up to a job you dont get paid for? When was the last time you contributed to a project outside of KMD ecosystem?
Alright17-Apr-19 02:46 AM
yesterday
VoskCoin17-Apr-19 02:46 AM
link?
Greer17-Apr-19 02:46 AM
honestly I've sucked at this, too many secrets not shared to create a barrier to entry
I agree some barrier is needed, but there are also things need to be more clear if you want a decentralized group of ops that know what they're doing.
VoskCoin17-Apr-19 02:47 AM
@Deleted User yeah he's awesome, with him on my team I can focus on fulfilling my proposal while he manages the node responsibilities
1
Strob17-Apr-19 02:48 AM
I think Komodo needs people from various background to help each in their own way. And I know how much work it is to maintain a youtube channel for the long run. Really not an easy task. If I am here it's because of Vosk. I learned about Komodo and Pirate from him. I want to tank you for it BTW Vosk!
3
Greer17-Apr-19 02:48 AM
I did miss a post by @blackjok3r from April 1st that would have made my life much easier if I just knew what keywords to search for in this Discord
ComputerGenie 👴👴👴17-Apr-19 02:49 AM
too many secrets not shared to create a barrier to entry
What "secrets"? the guy in the #3 spot in the last 48 hrs and #6 in a time slot that starts a week before he began has literally posted everything he does and uses
Alright17-Apr-19 02:49 AM
I've shared all my secrets about running a good NN
scroll up
Greer17-Apr-19 02:49 AM
a lot was only just shared this past two days
Alright17-Apr-19 02:49 AM
as for what I did yesterday for a non KMD ecosystem project, I cannot share atm
ComputerGenie 👴👴👴17-Apr-19 02:50 AM
everything I do and every script I use has been posted more than a dozen times in the last 2 weeks
Greer17-Apr-19 02:50 AM
little to no useful information posted here.
Alright17-Apr-19 02:50 AM
The fact of the matter is that Vosk only shows up at elections.
Greer17-Apr-19 02:50 AM
I dont need help with bash scripts, I needed help understanding how this all works
frankly many of the bash scripts are over complicated mess
1
ComputerGenie 👴👴👴17-Apr-19 02:51 AM
little to no useful information posted here.
OK, this is the part where I'm sure I piss someone off.......


In the lecture, the professor gave the following example :
class Point {
double x;
double y;
Point(double x, double y) {
this.x = x;
this.y = y;
}
double distanceTo(Point otherpoint) {
double dispX = this.x - otherpoint.x;
double dispY = this.y - otherpoint.y;
return Math.sqrt(dispX * dispX + dispY * dispY);
}
}
The fields x and y are public, and therefore can be accessed like so :
Point p = new Point(1, 2);
p.x;
p.y;
Then the Circle class was introduced :
class Circle {
Point center;
double radius;
Circle(Point center, double radius) {
this.center = center;
this.radius = radius;
}
boolean contains(Point p){
return this.center.distanceTo(p) < this.radius;
}
}
If someone wanted to find out if a point was contained in a circle, he would type :
Circle circle = new Circle(new Point(1, 2), 5);
Point myPoint = new Point(4, 5);
boolean circleContainsMyPoint = circle.contains(myPoint);
The above code is adhering to the "Tell Don't Ask" principle. In the Circle class, the contains method could have just as easily been :
boolean contains(Point point) {
double dx = center.x - point.x;
double dy = center.y - point.y;
return Math.sqrt(dx * dx + dy * dy) < this.radius;
}
In this case, Circle is asking Point for its x and y coordinates, then doing the square root calculations itself. Instead of asking for values and doing the work yourself like in this exmaple, classes should tell each other what to do in their own classes.
This brings up an important point. Let's say I changed the implementation of Point :
class Point {
double[] coord;
Point(double x, double y) {
this.coord = new double[]{x, y};
}
double distanceTo(Point otherpoint) {
double dispX = this.coord[0] - otherpoint.coord[0];
double dispY = this.coord[1] - otherpoint.coord[1];
return Math.sqrt(dispX * dispX + dispY * dispY);
}
}
If Circle had been adhering to "Tell Don't Ask", it wouldn't face any problems, since it is not working directly with the values inside Point. But if it decides to implement the contains method by directly asking for values from Point, it runs into some trouble since point.x, center.y, etc. do not work anymore.
To prevent these sort of problems, classes can choose to hide their values using access modifiers. Outside classes will only be able to access exposed functionalities, giving the original class freedom to change its implementation however it likes.
private double[] coord;
Getters can be used if a class wants to expose its fields without making them public. As long as I write my Getters to properly clean or transform my class fields for the outside world to access, dependencies on my class will not break no matter my implementation.
Getters ensure that even if some classes are not following "Tell Don't Ask", they won't break when the implementation of the class they're "asking" from changes.
An excerpt from Stack Overflow summarizing the point :
Private variables help prevent people from depending on certain parts of your code. For example, say you want to implement some data structure. You want users of your data structure to not care how you implemented it, but rather just use the implementation through your well defined interface. The reason is that if no one is depending on your implementation, you can change it whenever you want. For example, you can change the back-end implementation to improve performance. Any other developers who depended on your implementations will break, while the interface users will be fine. Having the flexibility to change implementations without effecting the class users is a huge benefit that using private variables (and more broadly, encapsulation) gives you.
This stack overflow thread contains other practical reasons for access modifiers.


 But rest assured, you reached step {{ step }} of {{ steps }} already, we are nearly there! {% endblocktrans %}
{% if wizard.form.submission_fields %}


Undergraduate student at the University of Washington, programmer, electronics enthusiast, and cat person.


Canvas allows students to subscribe to a calendar feed with all your classes. When instructors make changes to the calendar, the feed is also updated. With the link to the feed, students can import the Canvas calendar into any calendar app like iCal or Google Calendar. The link to the feed can be found by going to:
Canvas >> Calendar >> Calendar Feed
The problem with this feed is that all courses are combined into one calendar. This means that courses cannot be color coded or categorized within whichever calendar app you use.
There is a solution! The Canvas API allows users to retrieve calendar feeds for each course independently. Students can subscribe to these course specific calendar feeds on a per-course basis, allowing color coding, separation of calendars by account, and categorization of schedules. There is no easy way built into the Canvas UI to get the links to these calendars so that's where this tool comes in. Rather than writing out a set of confusing instructions, I built this walkthrough to help other students find the links to those calendars without needing to really read too much into the details. Go to the walkthrough to give it a try!
There are of course pros and cons of both methods. Either type of calendar feed, composite or course specific, updates dynamically when instructors make changes to class schedules. The composite calendar updates when you enroll in entirely new courses whereas the course specific method will need to be used for each course you enroll in. The con of the composite calendar is again that it isn't great for organization which the course specific method addresses.


We are a web development company that find unique and scalable solutions for each of our clients needs. Our core mission is to proivde you and your team with best-in-class products that are thoughtful, elegant, and affordable.
Trust us to work closely with you and your team to fully understand, develop, and deploy your web projects.
Hire Us! »Both Josh and Jason have extensive experience with HTML, dataing back to the early to mid 1990s. This is the foundation on which the internet is built.
With the addtion of CSS, the web became a much more beautiful place.
 Utilization of this prevalent language that will keep your product accessible by the masses and functional for years to come.


Hi All
Just got my EmonPi :)
Quick question, I am seeing power used from grid of about 440W, but my current cost device shows usage at about 820W, is that unusual ? I am pretty sure i have it from the same feed, just a different points.
JD
Archived Forum |
|
Emons Power usage reported is a lot lower than my Current Cost MonitorSubmitted by JohnnyD on Sat, 06/06/2015 - 07:52Hi All Just got my EmonPi :) Quick question, I am seeing power used from grid of about 440W, but my current cost device shows usage at about 820W, is that unusual ? I am pretty sure i have it from the same feed, just a different points. JD » |
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
Unless they've lifted their game lately, CurrentCosts just measure apparent power while I assume your EmonPi is measuring real power? Depending on your load, that might go some way to explaining the difference but probably not all of it. Your load would need to have a PF of close to 0.5 to explain all of it, which seems unlikely. Did you calibrate your EmonPi?
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
Hi and thanks for the reply, yes the EmonPi is measuring real power as i have AC input also, is there a calibration process i should go through ?
JD
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
Yep. There's a section or two about that under Building Blocks above.
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
Yep i read through some of that yesterday, it all seems to refer to the EmonTX range and not the EmonPi, or where to find the values to change in the EmonPi unless I am missing something here ?
JD
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
hmm... good question. I thought an EmonPi was basically an EmonTX stuck to a RaspberryPi in which case the calibration principles should about be the same. As for the exact mechanics, hopefully someone more familiar than I am will chime in.
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
If I'd got an emonPi and knew my way around it, I'd amend the calibration instructions...
As dBC says, the principles will be very similar, i.e. you adjust some calibration coefficients to make it report the actual values that you measure accurately by some other means. But what I don't know is where the calibration coefficients are in the 4 GB of software that the Pi runs on.
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
If anyone has a doc on where to amend these figures on the EmonPi that would be good?
Many Thanks
JD
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
After a quick look through GitHub, I'd try to find where this file is on your Pi, and change the coefficients in there and see what happens. It looks sufficiently close to the instructions to be able to find your way round inside it: https://github.com/openenergymonitor/emonpi/blob/master/Atmega328/emonPi...
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
The main sketch should be located within the "emonpi" directory in the users "homedir" eg ~/emonpi/Atmega328/emonPi_RFM69CW_RF12Demo_DiscreteSampling/emonPi_RFM69CW_RF12Demo_DiscreteSampling.ino, but that is not uploaded to the emonpi board there is a hex file there too.
I would recommend keeping a copy of any adjustments you make as using the "update emonpi" feature from within emoncms will try to overwrite them (but the local edits will probably prevent github updating). Currently it looks like it may be easier to compile on another machine and then upload from the emonpi using avrdude.
The alternative is to either have your own emonpi repo and edit the github url so you auto update from your own repo or to install the arduino IDE etc (you will need a remote graphical desktop via rdp, vnc or x11 etc) this shouldn't be too difficult but you will need to negotiate the read-only status to (install &) use the graphical IDE.
For these smaller edits you may be able to use just a text editor over ssh and then something like inotool to compile on the emonpi.
Paul
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
That all sounds like it could end in tears. It seems the old "edit these lines in your source code and re-flash the AVR" model of calibration really doesn't mesh well with the new-beaut auto-updating EmonPi.
The good news is, for the most part, the calibration can be done anywhere in the chain. A multiply is a multiply whether it happens down on the AVR or all the way back in the emoncms input chain. Does the emonTx in an EmonPi only talk to the Pi, or does it still do RF broadcasts as well? If it only talks to the Pi, then you could save the AVR some cycles by not having it attempt to translate any values into real-world values. You could remove all the scaling multiplies, and just leave the multiplies that matter for calculating power, RMS etc. It would then report all its reading to the Pi in raw A/D units, and the Pi could own the entire calibration process.
I'm guessing the further away from the AVR those custom multipliers are, the easier it is to preserve them across system updates. Presumably the user doesn't have to re-enter their emoncms input chain rules after a software update, so putting them in there might be a good choice.
The one notable exception to all this is phase calibration. That really does need to happen down at the pointy end. Once that V*I integral has been calculated, it's impossible to sort that out later.
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
The voltage and current calibrations really do need to be close if you have any 'constant power' loads, such as switched-mode power supplies.
If you have purely linear resistive loads, such as water heating, then clearly because current is a linear function of voltage, calibrating power is exactly equivalent to calibrating voltage and current separately.
If however you have a significant load that is constant power, the relationship between voltage and current is inversely proportional, so both current and voltage must be calibrated independently if calibration is to be valid over a range of voltages.
Why does the phase adjustment have to be done right at the front end? If the processing power is available, the AVR could simply transfer the I/O values and the entire processing (voltage interpolation, rms and average power calcs, kWh totaliser, etc) could be done in the Pi, which would open the way to a config file containing the calibration constants, which is loaded at start-up.
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
I'm pretty sure this is only a temporary glitch, I think G&T will have something in the pipeline to accommodate custom sketches. Primarily the concept of having the hardware and firmware defined the nodes section in emonhub.conf was to allow a generic sketch to be customised at compile time with calibration data, settings and struct forrmat etc
As a temporary work around for multipliers you are right that can be done at any point and the emonpi board only passes it's data to emonhub for processing before passing to emoncms(s) and there is already scaling taking place, so the 2 multipliers could be combined eg if AC voltage is 2% high it is currently "scaled" x0.01, this could be x0.098 to "calibrate" (0.01/1.02 = 0.098039) as you point out this won't work for phase calibrations though.
In my own opinion we should strive to have real values asap rather than passing uncalibrated and unscaled values around, the fact that the data can end up in many places could lead to the same values being different at different locations and and any calibration would need repeating at every end point.
Paul
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
I go along with the concept that calibration should be done as early as possible in the chain - what I was suggesting was move the entire calculation into one process in the Pi. It would receive raw data (integers 0-1023), and would be responsible for all calculations including the calibration. It would be trivial to move the multipliers in there as well, then there would indeed be consistent values available for whatever purpose.
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
Hi Robert, my reply above was to dBC's comment as I had started writing before you posted, I couldn't comment on the actual advantages/disadvantages of moving the calculating away from the AVR but transporting 1 integer per AIO sounds easier if that was the case, but I have read comments that the Pi's aren't too good with in-depth floating point math (may of changed with the quad core?) plus we all tend to meddle with the Pi's and restarting etc so it maybe wiser to leave the calcs ticking over where we can't get to them too easily perhaps :-)
Paul
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
I assumed you'd be bandwidth limited if you just shuffled AVR raw A/D values across to the Pi. What does that use, a serial link?
By having the AVR continue to calculate Vrms, Irms and Power like it does now, you greatly reduced the bottleneck. It would only have to send them to the Pi at the same rate it currently sends them out over an RF link. The only thing I'm suggesting removing from the AVR is any attempt to turn them into real-world values.
Why does the phase adjustment have to be done right at the front end?
It has to be done before you calculate power, and I'm proposing that the AVR continue to calculate power (just not in real-world units) to reduce link bandwidth.
read comments that the Pi's aren't too good with in-depth floating point math
True, but they're several orders of magnitude better at it than a 16MHz 8-bit AVR.
the fact that the data can end up in many places could lead to the same values being different at different locations and and any calibration would need repeating at every end point.
Yes, I agree you definitely want to scale it before the data forks off to multiple data sinks.
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
Hmmm it seems its not very 'easy' to calibrate the EmonPi then from all the above reading, has anyone had to calibrate the EmonPi yet ? where do we think it sits with regards to accuracy ? like I say my currentcost shows about 800W usage, but the Pi is around 480W so a significant difference, I realise one is an average reading and the other is true power, but its a significant difference, most of that load is a UPS powering PC's etc, I don't know if that has a power factor baring?
JD
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
most of that load is a UPS powering PC's etc
They can be pretty ugly. Here's what my energy monitor sees on my GPOs 1 breaker. At the time I snapshotted that, my UPS+computer+comms-gear was about the only thing on that circuit. My energy monitor reckons it has a power-factor of about 0.8. I bet the CurrentCost makes a real mess of measuring that. I doubt it's enough to explain all the discrepancy you're seeing, but if you do want to calibrate against another meter, I think you'll need something far better than a CurrentCost. Some "plug-through" meters are quite accurate, and others are really bad (see photo below... the rear one reading 2.5W and a PF of 0.1 is correct, the front one reading 98W and a PF of 1 has lost its mind).
P.S. What happens if you load them up with a nice beefy resistive heating element, like an oven, kettle or toaster. Do they get closer then?
[EDIT] A bug in my gnuplot script mean the scale on the Amps y-axis was wrong. The correct plot shows the current peaking at about 3A not 9A. And the timebase was a bit screwed up too.
Re: Emons Power usage reported is a lot lower than my Current Cost Monitor
the front one reading 98W and a PF of 1 has lost its mind
Got a good laugh out of that!
Cheers!


Before Change
width_ratios = [W]
height_ratios = [1, H]
aspect = "auto"
elif isinstance(y_array, Phylo.BaseTree.Tree):
nrow = 2; ncol = 2
i = 1; j = 1
width_ratios = [W, W]
After Change
origin = kwargs.pop("origin", "lower")
tree_mode = False
if np.isscalar(y_array):
try:
from Bio import Phylo
except ImportError:
raise ImportError("Phylo module could not be imported. "
"Reinstall ProDy or install Biopython "
"to solve the problem.")
tree_mode = isinstance(y_array, Phylo.BaseTree.Tree)
if x_array is not None and y_array is not None:
nrow = 2; ncol = 2
i = 1; j = 1
width_ratios = [1, W]


Before Change
assert(len(inputs) == 3)
// Use previously taken constants
assert(inputs[-2] + "_np" in layers)
assert(inputs[-1] + "_np" in layers)
gamma = layers[inputs[-2] + "_np"]
beta = layers[inputs[-1] + "_np"]
After Change
if inputs[-1] + "_np" in layers:
beta = layers[inputs[-1] + "_np"]
else:
beta = weights[bias_name].numpy()
def target_layer(x, epsilon=params["epsilon"], gamma=gamma, beta=beta):
layer = tf.contrib.layers.instance_norm(
x,