---
title: The online platform
permalink: /en/platform/
language: en
layout: page
---
The online platform comprises two components, namely the German set of indicators for the global sustainable development goals
(Sustainable Development Goals, SDGs) of
the United Nations 2030 Agenda and the indicator set of the
German Sustainable Development Strategy
(Deutsche Nachhaltigkeitsstrategie, DNS). Since the German Sustainable Development Strategy is aimed at implementing the 2030 Agenda at the
national level, indicators shared by both strategies are linked to each other on the platform.
The time series of the indicators of both online platforms are available for download.
A direct link to the homepage of the DNS online platform can be found at the top right of this page next to the search field:
Both sets of indicators are structured according to the 17 goals of the United Nations 2030 Agenda. Accordingly, the icons and the colours chosen for the 17 goals (Fig. 1 and Fig. 2) which are used here and on the
DNS-online platform correspond to those of the United Nations. The icons are protected by copyright.
Fig. 1: 17 SDG icons of the United Nations used on the SDG-Online platform for Germany
Fig. 2: 17 inverted SDG icons of the United Nations and the N in the circle of the German Sustainable Development Strategy used on the DNS online platform
Aim and background
The aim of the SDG online platform is to present the indicators of the United Nations Sustainable Development Goals for Germany.
The SDGs are anchored in the 2030 Agenda for Sustainable Development, which was adopted by the General Assembly of the United Nations in September
2015 and thus agreed by all Member States. The Agenda has provided the basis for shaping global economic progress in accordance with social justice
and within the ecological limits of the earth.
The Federal Statistical Office is responsible for coordinating and publishing national SDG indicator data for Germany.
The SDG online platform enables the competent international organisations (custodian agencies) to directly download the data for individual SDG
indicators and use them, for example, for global reporting assignments given to them by the United Nations (Fig. 3). It also provides constantly updated
information on the status of the German SDG indicators and detailed information on the methodology used for calculating these indicators.
Fig. 3: Data flow for calculating the SDG indicators for Germany
In some cases the data for Germany include minor methodological deviations from the specifications of the competent custodian agencies. In other cases only time series are available which are affected by larger
deviations from the globally defined calculation methodology (for more information, see “About us“ and [Navigation](https://sustainabledevelopment-germany.github.io/en/about_navigation) in the section on global metadata).
This may lead to the respective custodian agencies adjusting the data provided to ensure international comparability. Therefore, the time series found in the
Global SDG Indicators Database may differ from the time series provided here.
Possible amendments until 2030
The existing set of indicators is undergoing two major revisions in 2020 (already completed) and 2025. The
IAEG-SDGs
(Inter-Agency and Expert Group on Sustainable Development Goal Indicators) has been commissioned to coordinate these revisions. During the revisions, new indicators may be added to the set, and existing indicators
may be replaced or removed. The changes will be incorporated as quickly as possible on the SDG online platform.
Comparison of SDG and DNS indicators
The United Nations SDG indicators and their numbering are not identical to the DNS indicators. If an SDG indicator is comparable to a DNS indicator, this is indicated by a button with a direct link to the respective
indicator (Fig. 4).
Fig. 4: Button providing a link to the related DNS indicator (highlighted)
Technical background
To present the data for each participating country in a formatted form, the open source project Open SDG offers a standardised template of an online platform on GitHub. More information can be found here:
Technical instructions.


This program carries out rotations of orientation data (azimuth of dip/ angle of dip) around an arbitrarily oriented rotation axis. The calculation is done with the use of a rotation tensor.(WALLBRECHER, 1986:24ff).
The menu 'data input' is the same as in the program 'calculations‚. Manual input is also possible for universal stage data azimuth and tilt angle of axes (i.e. quartz-c-axes) or normals to planes (i.e. poles to miaca-planes). These data are converted to azimuths of dip and angles of dip internally. All further processing of these data is done in this format. The type of data must be set in the menu 'fabric type'. In the menu ‚angle‚ you choose input in the 1..360° or 1..400gon scale.
For data input from a file, the fabric types "U-stage-axes" and "U-stage-poles“ are not active, because U-stage data are saved in *.LIN files.


AMAZING PEOPLE ARE MAKING AMAZING DESIGNS IN A FUN ENVIRONMENT
When you work with us, you are part of a team of committed
collaborators. All aspects of our software development process are intergrated, interactive
and agile.
Our approach unfies design, development and product management to create execeptional products.
We start each project by understanding your business goals, the user's needs and the product requirements
Then we help translate them into effective and elegant solutions.
Before we sign a contract or write a line of code our team will spend the necessary time needed to undestand your product vision
The outcome of this scoping session is a proposal or high-level statement of work.
Based on your requirements, we can provide a complete offering or just the pieces you need.
DESIGN
Our design practice offers a full range of services including brand strategy, interaction
and visual design and user experience testing.
Throughout your project, our designers create and implement visual design and workflows,
solicit user feedback and work with you to make sure what gets built is what is needed.
DEVELOPMENT
All engineers are fluent in the latest enterprise, mobile and web development
technologies.
They collaborate with your team to write, and improve code on a daily basis, using
proven practices such as test-driven development and pair programming.
PRODUCT MANAGEMENT
Planning and development is iterative. Because we are constantly coding and testing, the
products
we build are always ready to go live.
This iterative process allows for changes as business requirements evolve.
DELANI STUDIO
2019


Fore
Forms for eXist-db
Introduction
Get started
Examples
Writing forms
The Model
Overview
xf-model
xf-instance
xf-bind
xf-submission
The UI Model
The User Interface
Overview
Actions
Actions Overview
Events
Event Overview
Developer Guide
Architecture
Client-Server Protocol
API Docs of UI Components
Terms


{% comment %} Does not use dynamic dialog name due to being included in samples_tools_widget {% endcomment %}


I'm a web developer in training from Kokomo, IN and I've moved around the Midwest quite a bit, but I currently reside in Columbus, OH. I'm a little bit of a tech geek, an electric and upright bassist, cyclist, and console gamer. I went to The Ohio State University to study psychology(kind of a long shot from programming, I know). When I'm not doing any of those things I'm usually watching British TV shows, and after watching an episode I usually impersonate the coolest sounding character for an undisclosed amount of time.


Here you can find information about:
By the way, this entire site was all coded from scratch by Sam, himself, without any pre-made template sites like Weebly. Because of this, please excuse any aesthetic eye aches. If you would like to see the actual code, press ctrl-U on a PC, and either ⌘-U or ⌘-alt-U on a Mac.
The service will be held at:
Congregation Shearith Israel
1180 University Drive, NE
Atlanta, GA 30306
Map
The evening
party will be held at:
Wisteria Lanes
Emory Conference Center Hotel
1615 Clifton Rd
Atlanta, GA 30329
Map
We have a block of rooms reserved for the weekend at:
Emory Conference Center Hotel
1615 Clifton Rd
Atlanta, GA 30329
Map
If you have extra time and would like to explore what Atlanta has to offer, we recommend some of Sam's favorite activities:
Atlanta Beltline
The Bremen Museum
Center for Civil and Human Rights
Fernbank Museum of Natural History
Georgia Aquarium
High Museum of Art
Lullwater Park
Michael C. Carlos Museum
MLK National Historical Park
Ponce City Market
World of Coca-Cola
Some of you are very familiar with a synagogue service like ours, and to others it is all new. For those who are interested, here are a few tips on what will happen during Sam’s bar mitzvah service.
The synagogue is at 1180 University
Drive, NE, in Atlanta. There is a parking lot, and parking is permitted on the street as well. People start to arrive for the Saturday morning services at 9:00, and the services end around 1:00, including kiddush and lunch. It is a long
service with many different parts – it will give you a sense of how much work Sam has done to prepare for this day! Sam will begin his part (leading the Torah service) around 9:45. You are welcome to sit anywhere you like.
Order
of the Service (times are approximate):
9:00 Psukei D'Zimrah ("hymnal verses")
9:30 Shacharit service
9:45 Torah service
Sam’s D'var Torah (sermon)
Haftarah
Rabbi's
D'var Torah
Rest of the Torah service
11:00 Musaf service
Presentations, blessings, and conclusion of the service
1:00 Kiddush blessings
Kiddush and lunch
During the
service, you should feel free to participate in any way that feels comfortable to you – sing (it's fine if you don't know the words or the tune!) or hum along, read the prayer book, meditate, or just observe a way of worship that may be
new to you. It is also fine to bring your own book to read. If you want to take a short break during the service, you can; you’re welcome to go outside or to the playground area for a few minutes. Make sure to come back in for
the end of the service! We only ask you not to walk in or out of the sanctuary while Sam or the Rabbi is speaking.
Cell phones and other electronics are not allowed in the synagogue and we encourage you to leave them at home. If
you need to call home, you may do so outside. We don’t allow writing or drawing in the synagogue on Shabbat, and there will be no picture-taking or recording. Our tradition is to respect the day by focusing on the service and our own meditations.
What
to wear? The dress code is "business casual." The building is air-conditioned so you may want to bring a light sweater or jacket.
Wearing kippot (head coverings) is customary for boys and men, and girls and women can wear one if
they choose. Wearing a kippah is done as a sign of respect, like removing your hat in church, or taking off shoes at a mosque. Although at some b'nai mitzvah people give out kippot, we have chosen not to do so, since most bar
mitzvah-goers already have large kippah collections! We will have some kippot available for you to borrow for the service and kiddush (reception) afterwards – please bring your own favorite kippah if you have one. Many Jewish
people will also wear a tallit (prayer shawl), which is a reminder of Jewish commandments and tradition, but this is optional.
Shortly after noon, the service will end and we will have lunch. We will ask you to wait until the prayer
is said over the wine/grape juice and the bread. Then you should get a plate and help yourself at the buffet, and please sit at any of the tables. Feel free to make new friends!
Thank you so much for respecting our customs, and for celebrating with us. Please let us know if you have questions or concerns.
We look forward to sharing this celebration with you!
Instead of gifts, please consider making a donation to one of my favorite causes: Georgia Conservancy, Atlanta Community Food Bank. Of course, if you really really want to give me a present I wouldn't mind too, too much...


How browsers render stuff (generally)
- Different browsers use different rendering engines but follow similar flow
- Browser will parse the markup, then "Recalculate Style" to figure out what styles apply to which elements
- Next, it will "Layout" all the DOM elements
- Then, "Paint" the pixel data for the elements
- And, "Composite" will combine and draw the painted layers out onto the screen
Think of it as a pyramid
If you change something at the bottom, the pyramid has to be rebuilt from the bottom.
Layout
- Generate geometry and position of each element
- Very expensive because engine must reflow the relevant element and all its children to take into account the new layout
- Occurs when the DOM tree is manipulated, or a style which affects layout is changed, when browser window size is changed, when className property is changed
CSS properties that trigger Layout
- width
- height
- padding
- margin
- display
- border-width
- border
- top
- position
- font-size
- float
- text-align
- overflow-y
- font-weight
- overflow
- left
- font-family
- line-height
- vertical-align
- right
- clear
- white-space
- bottom
- min-height
Paint
- Fill out pixels for each element into layers
- Make something visible when it previously was not, like adding outline or changing background colour
- Expensive because the engine searches through all elements to determine what is visible and what should be displayed
- Browser vendors are scrambling to improve the renderer, but until recently browsers weren't built to handle animations efficiently
CSS properties that trigger Paint
- color
- border-style
- visibility
- background
- text-decoration
- background-image
- background-position
- background-repeat
- outline-color
- outline
- outline-style
- border-radius
- outline-width
- box-shadow
- background-size
Composite
- Only Opacity and Transforms trigger composite
- Blink and Webkit creates new layer for elements with CSS transforms or opacity
- translateZ(0) is used to force layer creation which ensures both the layer is painted as soon as the animation starts
- Watch The Web's Black Magic for best explanation on rendering and compositing


Ask questions about the core tech here, but not questions about prices or personal questions or GUI and please don't DM JL777.
https://dexstats.info/richlistlookup.php?address=RLVzC4tr9cNKvuw2z4m8KuMfZURwCehx55
https://medium.com/@jameslee777
100 messages
Before 05-Dec-19 12:00 AM
grewalsatinder11-Jul-19 07:56 AM
James held such trading competition in the early days of BarterDEX v1 too
2
Malti11-Jul-19 11:54 AM
CZ = jl777
2
CoinKing8811-Jul-19 05:16 PM
@jl777c Binance tweeted some weeks back about working together with Komodo exploring Atomic Swaps. What did that working together mean, Binance gonna use hyperdex?
 Atomic Swaps Explained @BinanceAcademy
Thank you to the $BTC, @litecoin, @KomodoPlatform, and @decredproject communities who played an important role by experimenting with atomic swap protocols.
What tokens would you like to have atomic swaps?
https://t...
Retweets
206
Likes
568
1
1
Malti11-Jul-19 05:49 PM
it's a good tweet, but doens't imply any collab imo
crumb11-Jul-19 05:49 PM
ah yes, that tweet. there is nothing in that tweet about working together
they just gave Komodo credit for their contribution into developing atomic swap tech
CoinKing8811-Jul-19 05:52 PM
Well i would think they did a bit more than that but allright. Would be fun if Binance is just secretly among the 1000 AtomicDEX testers
crumb11-Jul-19 05:52 PM
we should move this conversation elsewhere, as we are hijacking jl777s channel
CoinKing8811-Jul-19 05:52 PM
This channel just became decentralised, thats what we all aim for right
phm8711-Jul-19 06:06 PM
I hope that Bitmex research (and other exchanges tech guys) will do an article/review on AtomicDEX. The point of view of serious CEX on DEX tech can be interesting (and help marketing indirectly)
Regnar11-Jul-19 08:05 PM
Hey @jl777c, multi part question: can channels be used for atomic swaps, instead of waiting for confirmations the swap is completed as soon as it enters mempool?
And follow up if that's possible, any thoughts on using a mix of Gateway and Channels CC to make instant, cross chain atomic swaps for a DEX feature? Lock coins with Gateway and atomic swap the tokens?(edited)
phm8711-Jul-19 08:19 PM
@Regnar when a tx enters mempool, before it is mined, it can be invalidated by another tx with higher fee that spends the same inputs. I don't know for your other questions, let's wait for jl777 reply
Regnar11-Jul-19 09:38 PM
@phm87 Thanks for the reply, I understand that but assuming it's a risk you're willing to take in this circumstance (though I think double spend attempts would be frequent for atomic swaps) going off of these docs https://developers.komodoplatform.com/basic-docs/customconsensus/channels.html there is a method for these 'instant' before mined transactions. Just didn't know if they could be used as a method of giving AtomicDEX instant swaps of any cryptocurrency. Maybe eventually like the 0conf of BarterDEX in some way(edited)
phm8711-Jul-19 09:47 PM
@Regnar they talk about replace-by-fee transaction here : http://diyhpl.us/wiki/transcripts/breaking-bitcoin/2019/mempool-analysis-simulation/ and the fun fact about antpool can also be inverted : you can mine your own block as I suggest to double spend it (and avoid to broadcast the unconfirmed tx before mining it). Whatever it is malicious behavior, I prefer to avoid any thrust in crypto
Regnar11-Jul-19 11:19 PM
@phm87 Yea that was my initial thought but I found the chapter I was originally thinking of https://docs.komodoplatform.com/cc-jl/chapter10.html This goes much more into detail about the channels CC and preventing double spending meme pool transactions.
jl777c12-Jul-19 01:05 AM
channels would work for this, but the problem is that you need to establish channels between the two pubkeys that want to do a swap, unless we have an LN type of routing, but that is a mess
i think with completion rates of atomicDEX being high enough, most swaps can be though of as "done" when it gets started, so a GUI displaying it with a clock as it completes its steps should work
hyperDEX12-Jul-19 02:53 AM
If i remember correctly, hyperDEX has stages 1/5 etc as it processes it counts up until done. Just like a CEX deposit counter.
Stephen Hawking12-Jul-19 10:36 AM
How will kmd benefit from chips poker?
jl777c12-Jul-19 10:38 AM
nothing direct at first. plz read discussion in #talk-trading
Thanks to _unwriter’s Neon Genesis and Bitbus library, Bitcoin Devs now have an easy way of synchronizing off-chain application state with…
 In fact, you can run an unlimited number of VM’s per contract continuing to increase the availability to end users as desired.
jl777c12-Jul-19 12:51 PM
all of this done with CC, last year
5
1
Lumbi12-Jul-19 01:39 PM
'Project E-dPoS´ : set up a dPoS chain for the purpose of notarizing other blockchains using PoS (run by KMD and KMD assetchains) Proceeds for dPoS could be split between stakers for maintaining their stake. Thoughts?
phm8712-Jul-19 03:52 PM
@Lumbi why not directly norarizing on KMD ? (Similarly to kmdlabs) kmd tx fee is very low compared to btc and about pos/staker notarization, I wonder if you send them coins after their elections (risk that the guy run with the coins)
Lumbi12-Jul-19 04:45 PM
@phm87 yes I believe that would be more economical. It is another efficency of E-dPoS.(edited)
phm8712-Jul-19 04:48 PM
Notarizations on kmd (kmdlabs) are pretty cheap, I don't have any stats but based on my tests, I guess it should be few kmd per year.
Did you take into account risk ? Risk for a pow NN is low while pos needs to use huge amounts involving risk
If price is dumped, a risk exists: if too many pos NN dumps their coins, your nota network will be down
BUT if you hardcode pubkey of elected pos NN and you cap the staked amount per NN, risk can be low
But it would require developement
This is an interesting subject. Thank you to talk about it
Mylo12-Jul-19 04:53 PM
notarizing to KMD is open to anyone to create any notarization scheme that fits their project/use-case./ecosystem/consortium/etc. some schemes will be centralized, some decentralized.
phm8712-Jul-19 04:54 PM
(Ouuups ... sorry I did not realize we were talking into jl777 channel)
Lumbi12-Jul-19 04:58 PM
@phm87 indeed, perhaps someone could make a #EdiPoS channel?
Helly8812-Jul-19 09:31 PM
Well that's my opinion, I'll ask him discord.
How he imagines the growth of KMD when it works completely independently.
What advantage does it bring for KMD to create a sidechain for a project. Do not understand the approach.
Always thought that there are more sidechains in a project that has a positive effect on the main chain in volume and transactions. But apparently it does not seem so what I read, which if a sidechain completely independent of KMD does not work KMD synonymous. Unless I now do not understand the approach as it is intended
Hope someone can explain how this will positively impact KMD when sidechains emerge that are completely independent of KMD.
The example at the eth is not bad more projects are more volume and transaction found in the mainchain
I want to know what the added value is for me as an investor when I hold KMD and make the technology available free of charge to a sidechain.
It is only because of the staking that it is not worth keeping KMD in my eyes.
This is a completely new view.
Normally it should attract many new projects. Another problem will be that many shitcoins will automatically be interested in it. I hope the plan works. It would take another year like the end of 2017 where new projects come every day.
The view that many projects are worth creating for the main chain I haven't heard yet but it makes sense somewhere.
I can only hope that you the marketing really strongly boosts after the 15.07.
People and big companies need to know how easy it is to create something on KMD. If big companies should be interested in it it will surely be good for KMD to be switched on.
Translated with www.DeepL.com/Translator
allbits12-Jul-19 10:16 PM
@Helly88 you may be in the wrong coin then. KMD is designed to work for developers and users, not short term speculators. The ETH approach that you mention creates a situation that is impractical for actual use in my experience. I much prefer the independent chains approach that KMD uses.
Helly8812-Jul-19 10:19 PM
@allbits That's a matter of opinion.
I think the ETH view is good. You make a technology available and that gives you a little volume and transactions.
I think the system as ETH has it is ideal, everyone is willing to pay something when the technology fits.
ETH is not in 2nd place for nothing!
I'm not just invested in KMD.
allbits12-Jul-19 10:23 PM
ETH ideal? You're not gong to get much agreement on that around here. I've just come off two days straight of testing out the app universe in ETH. Transaction costs and delays render almost everything impractical. It is a system that does not currently work for actual use. Maybe they'll fix it. But KMD is using another design - and it's independent chains. You won't be able to convince anyone to change that design no matter how hard you try.
Helly8812-Jul-19 10:25 PM
ETH doesn't sleep. The updates ETH will bring will change a lot. Blockages on the main chain will no longer happen.
Don't forget that ETH is not in 2nd place for nothing.
PHBA206112-Jul-19 10:26 PM
because it has the "2nd mover" advantage ?
Helly8812-Jul-19 10:27 PM
I don't want to convince anyone to change anything I just wanted to understand how KMD rises in value when sidechains come in.
The approach the more projects come the more the price will rise doesn't sound bad. Hope that this plan works out
allbits12-Jul-19 10:28 PM
Maybe it doesn't rise in value, but we'll have a platform that developers and users love, like Linux. That's what this community is about.
polycryptoblog12-Jul-19 10:28 PM
Eth can’t implement PoS after 4 years not worried about their development
Helly8812-Jul-19 10:29 PM
@polycryptoblog but I do think they're gonna make it.
PHBA206112-Jul-19 10:30 PM
yes, but the question is, how long will it take ?
polycryptoblog12-Jul-19 10:30 PM
Sidechains in the proper sense, add value through additional functionality, independent chains add value through DPoW , MoMoM, and Dex liquidity
Example : DiceCC sidechain , statistically provided it is used it will pull coins out of circulation
Helly8812-Jul-19 10:35 PM
We'll see about ETH. I am of the opinion that everyone who is in crypto should keep BTC and ETH is my opinion.
ETH has very smart people on board who will be able to do that, I think.
yorklab12-Jul-19 10:35 PM
@Helly88
1. Build a superior platform
2. Make the cost really cheap to launch a project
3. Make the cost really cheap to use
4. Now you have a thousand companies that need dPOW. Someone earlier had already explained that a thousand companies using just one aspect of Antara will need to buy well over 1,000,000 KMD.
5. The larger companies will need lots of chains which mean they will need more KMD than the smaller ones. REDFOX LABS is building unicorn (Large) companies using Komodo and all those companies will be using dPOW.
6. Many of these companies will incentivize Komodo/KMD in some way. For instance: REDFOX Labs is giving Komodo 10% of their profit for development. Zaddex exchange has KMD as one of the main base trading pairs.
7. All DEX fees will be used to buy KMD.
8. 10% discount when using KMD on AtomicDEX
9. Some of these projects may monotonize KMD; like using KMD to purchase things from a store.
Any corrections/additions are welcome.(edited)
6
Helly8812-Jul-19 10:37 PM
super thanks for the explanation.
actionslacks12-Jul-19 10:37 PM
eth blows, please take it to #talk-whatever-else-including-bs-that-wastes-lead-devs-time(edited)
Helly8812-Jul-19 10:38 PM
that makes sense, too. I am not averse to it and believe that some projects will come to KMD.
yorklab12-Jul-19 10:41 PM
@Helly88 It took me a long time to see what the team envisions. Most of the explanations were "a rising tide lifts all boats". That was too general for me (and money others) having some examples makes it easier to see the possibilities.
It also may be possible that some moves were made to stay in line with current and upcoming regulations.
hyperDEX13-Jul-19 01:01 AM
@yorklab dPoW costs 365KMD a year per chain.
Acura13-Jul-19 04:12 AM
At Neo the blockchain stopped several times for several hours.
Every project based on Neo could not work for these hours.
With Komodo's independent Chains this would not have happened.
Another advantage of "independence“(edited)
Just can't understand the people who want to argue to me that being dependent seems to be better than being independent.
Mylo13-Jul-19 04:17 AM
dw plenty of space for every project. Eth projects can atomic swap to their own chain for application scaling and swap back for market stuff if they want.
Kmd offers flexibility, scalability, autonomy, interoperability....
These -ility words exist because of kmd scale out architecture.
Helly8813-Jul-19 10:58 AM
That with NEO is an absolute exception, something like that did not happen with other platform coins. I wouldn't use something like this as a reference that NEO has been stopped once.
hyperDEX13-Jul-19 11:20 AM
@Helly88 then you have ETH and gas fees
Crypto Kitties killed the whole platform
Acura13-Jul-19 12:19 PM
And yet the projects could not continue working for the period because they were dependent on a major chain. (NEO)
And that is a fact
Lennart13-Jul-19 05:38 PM
maybe we need exactly that: A cryptokitties game on Komodo
2
everyone will see "OMG it can scale infintely"...
grewalsatinder13-Jul-19 07:59 PM
@ca333 ^^
1
ca33313-Jul-19 09:47 PM
oh i remember our plans for a komodo lizard game with different worlds and where your lizard could travel from world to world via barterDEX, etc. - one day we will realize that @grewalsatinder
6
2
1
Malti13-Jul-19 09:57 PM
That would be amazing
10/10 would play
It reminds me of rose online in that sense hehe
Regnar16-Jul-19 03:26 PM
Question about the DEX, two nodes negotiate locktime of a trade, and the length of timelocks. This can be adjusted based on chains, can this be further extended to provide greater 51% attack protection on trades? For example, set time to have specific number of confirmations for particularly large trades so that you can ensure the lower hash chain has less likelihood of being reversed?
Given the value of the trade vs the 51% attack cost of a chain, could it be possible to make a large swap, move funds again and attack the original deposit? And would extending this time window be an effective defense for that?
jl777c16-Jul-19 05:24 PM
each node can set the number of confirmations needed before accepting the other side funds
1
PHBA206116-Jul-19 06:51 PM
if both chains are protected by dpow, then the number of confirmations just have to be big enough to include at least 1 notarization on both sides ?
cdr101016-Jul-19 08:42 PM
@jl777c how does Komodo differ from something like Polkadot ?
jl777c16-Jul-19 08:43 PM
is polkadot the one that is a permissioned system?
Regnar16-Jul-19 08:44 PM
Yea I was thinking if a GUI maker/company wanted to build their DEX on this engine and wanted to include a way to protect from 51% attacks on bigger trades they could theoretically increase the locktime amount.
Assuming both chains didn't have dpow. The swaps would have to wait for longer, deeper blocks, before being completed
cdr101016-Jul-19 08:47 PM
Sorry I’m not sure. i should read the white paper myself but was hoping someone may have ELI5 summary.
Their goals appear similar to Komodo’s
jl777c16-Jul-19 08:52 PM
komodo is the only platform i know of that has no lockin, no KMD based fees that are mandatory
so maximum freedom, maximum flexibility, but still a lot of built in functionality
mrdotboson16-Jul-19 09:44 PM
Is there any plans for facilitating Decentralised Asset Sales?
hyperDEX16-Jul-19 11:32 PM
@mrdotboson Once the DEX desktop apps are out, i do not see why dICOs cant come back
1
Maybe with all the different IEOs these days we can do a dIDEO or dDO ?
Doesnt have the same ring to it
polycryptoblog17-Jul-19 12:23 AM
I believe coincollect will be doing another tranche with it eventually
cryptoclueless17-Jul-19 08:23 PM
I've noticed the 777 theme a lot with komodo, where does that come from?(edited)


404 Not Found
Oops! Looks like the page you were looking for could not be found.
Head back home here
{% extends "layout.html" %} {% block title %} 404 Not Found {% endblock %} {% block css %} {% endblock %} {% block main %}
Oops! Looks like the page you were looking for could not be found.
Head back home here


Stat/Transfer supports the import and export of SAS value labels.
Reading SAS Value Labels
SAS, unlike other systems, stores value labels as custom "formats," in a separate "catalog" file. Stat/Transfer can read SAS user-defined formats (value labels) directly from 64 or 32 bit Windows catalog files. This is the simplest option for those who are using Windows SAS.
In addition, Stat/Transfer can read SAS formats that are stored in several other formats. These may be more convenient if your data are coming from another SAS platform, or you simply have no control over the way the data are produced and delivered.
Stat/Transfer can read formats from catalogs stored in CPORT libraries
Stat/Transfer can read formats from an exported catalog produced by SAS using the 'cntrlout=' option of PROC FORMAT. (See "Creating a File with the PROC FORMAT Statement" below.) The files produced in this way can be stored in:
·
Setting the Appropriate Options with the User Interface
You can choose whether and how formats are to be read by using the Reading SAS Value Labels options of the Options dialog box.
Do not read formats
Check this option, which is the default, if no formats will be read.
Read directly from a catalog file
Choose this option if you have a Windows SAS catalog file containing formats and wish to read them.
If this option is checked, the entry '%ipath%/catalog.sas7bcat' will automatically appear on the SAS catalog name line. This instructs Stat/Transfer to look for a file named FORMATS.SAS7BCAT, in the same directory as your data file. You can change the path if your file is in a different location.
Read from a catalog in CPORT library
Check this option if you have your formats in a CPORT catalog.
If this option is checked, the entry '%ipath%/%iname%.stc' will automatically appear on the CPORT library name line. This instructs Stat/Transfer to look for a file with the name (with extension .stc) and directory of your input file, since you will most probably be reading your formats from the same file as the data. If you are reading formats and data from separate files, then you can give the name of the file on this line. You can type in a complete file specification or you can use the macros below as part of the file specification.
%ipath% The path, including the directory, of the input file
%iname% The name, without the extension, of the input file
%iext% The extension, without the dot, of the input file
If your formats are in a member with the default name formats, you need not specify anything more. If not, uncheck the Use default catalog name box and press the Read Library button. You will then be able to select the member that contains your formats.
Read a SAS datafile
Choose this option if you wish to read formats from a SAS datafile produced by SAS using PROC FORMAT. When this option is checked, you must have both the SAS input file and a separate file created by SAS that contains the formats. By default, Stat/Transfer will look in the same directory as the input file for a file named sas_fmts.ext, where .ext is the extension of your input file. This is the name that the file will have if you have created it by the procedure below.
If you wish to have Stat/Transfer look for a file located somewhere else or with a different name, you can change it in the SAS dataset name box. You can type in a complete file specification or you can use the macros given above as part of the file specification.
Read from a dataset in a CPORT library
Choose this option if you have your formats in a dataset in a CPORT library produced by PROC FORMAT.
If this option is checked, the entry '%ipath%/%iname%.stc' will automatically appear on the CPORT library name line. This instructs Stat/Transfer to look for a file with the name (with extension .stc) and directory of your input file, since you will most probably be reading your formats from the same file as the data. If you are reading formats and data from separate files, then you can give the name of the file on this line. You can type in a complete file specification or you can use the macros above as part of the file specification.
If your formats are in a dataset with the default name sas_fmts, you need not specify anything more. If not, uncheck the Use default catalog name box and press the Read Library button. You will then be able to select the dataset that contains your formats.
Read from a SAS Transport file
Choose this option if you have your formats in a dataset in a SAS Transport file produced by PROC FORMAT.
If this option is checked, the entry '%ipath%/%iname%.tpt' will automatically appear on the Transport library name line. This instructs Stat/Transfer to look for a file with the name (with extension .tpt) and directory of your input file, since you will most probably be reading your formats from the same file as the data. If you are reading formats and data from separate files, then you can give the name of the file on this line. You can type in a complete file specification or you can use the macros above as part of the file specification.
If your formats are in a subfile with the default name sas_fmts, you need not specify anything more. If not, uncheck the Use default member name box and press the Read Library button. You will then be able to select the subfile that contains your formats.
Setting the Appropriate Options with the Command Processor Interface
SET commands are used to choose whether and how formats are to be read. See the section SAS Value Labels-Reading in the Available Options section.
Creating a File with the PROC FORMAT Statement
To create the new file for Stat/Transfer to use for reading your SAS value labels, you will need to go into SAS and run the following small program:
libname mylib 'path';
proc format library = mylib
cntlout = mylib.sas_fmts;
run;
where 'path' is the directory that contains your input data file.
This procedure creates a SAS file in the directory 'path' that has the format information for each SAS data file. In this case, the file will have the name sas_fmts.ext, where .ext is the extension of the input SAS file, and it will be found in the same directory as the input file.
To put your formats in CPORT library, use PROC FORMAT after the above procedure.
To create a format library in a Transport file, use the same procedure as above but reference the XPORT engine in the output 'libname' statement.
Transferring Value Labels with Data
When you carry out a transfer with a SAS data file as input, Stat/Transfer will check to see if you have checked the option Read formats directly from a catalog file. If so, the value labels will be transferred automatically from the catalog file named in the Filename box.
If you check any of the other options, Stat/Transfer will look for the file that you have specified and the formats will be transferred automatically.
Restrictions on Importing Value Labels
SAS catalog files not only support conventional value labels (the one-to-one mapping of a string to a single number), but also the mapping of a range of numeric values to a single string (for example, zip code mapped to state).
Because this latter form has no analog in any of the packages supported by Stat/Transfer, only conventional one-to-one value labels are imported from SAS.
Options controlling how labels are processed
You can control how Stat/Transfer will behave if all does not go smoothly.
Continue if the format file is not found
By default, processing will stop if a file containing the formats is not found. Change this behavior by unchecking this option.
Continue is there is an error processing formats
By default, processing will stop if there is an error reading the format file or if no tags in the dataset are matched to formats in the file. By checking this option, you tell Stat/Transfer to continue processing even if there is an error processing the formats.
Writing SAS Value Labels
The separate catalog file in which SAS stores value labels, besides being undocumented, can be shared among several SAS data sets. This makes it problematic to update a SAS catalog file using an external program. When writing value labels for SAS data files, rather than update the catalog file directly, Stat/Transfer creates a SAS program that you can run in order to have SAS update its catalog file.
Setting the Appropriate Options
You will first need to check the appropriate box in the SAS Value Labels - Writing section of the Options dialog box, Write a Proc Format program, to enable the writing of SAS labels. Below this option is the Filename line. If you leave the default name, the program file that you are going to create will have the name of the output SAS data file, with the extension .sas, outfilename.sas, and will be placed in the same directory as the output SAS data file. See Writing SAS Value Labels for details.
Transferring Value Labels with Data
When you carry out a transfer with a SAS data file as output, Stat/Transfer will check to see if you have checked the option Write a Proc Format program. During the transfer, it will then write a SAS PROC program file with the name taken from the Filename line. In this case, assuming that you have used the default name and directory, it will create a program file named outfilename.sas in the same directory as the output SAS data file.
For example, if you write a SAS data file called out.sas7bdat, the PROC program will be in the same directory as the output file and will be named OUT.SAS.
The program file has the PROC FORMAT and MODIFY statements necessary to create the SAS catalog file. Once the program file has been created, you can run it in SAS.


+++
title = "Goldydocs"
linkTitle = "Goldydocs"
+++
{{< blocks/lead title="CTFd Support & Documentation" height="min" color="white" >}}
CTFd Documentation
{{< /blocks/lead >}}
{{% blocks/lead color="primary" %}}
{{% /blocks/lead %}}
{{< blocks/section color="dark" >}}
{{% blocks/feature icon="fa" %}}
{{% /blocks/feature %}}
{{% blocks/feature icon="fab fa-github" title="Contributions welcome!" url="/docs/contributing/" %}}
Take a look at our Contributing Guidelines page to get started adding your ideas to the CTFd ecosystem!
{{% /blocks/feature %}}
{{% blocks/feature icon="fab fa-twitter" title="Follow us on Twitter!" url="https://twitter.com/ctfdio" %}}
For announcement of latest features etc.
{{% /blocks/feature %}}
{{< /blocks/section >}}


{% extends 'base.html' %} {% set active_page = "home" %} {% block title %} Status Page - Home {% endblock %} {% block page_content %} {% if current_user.is_authenticated %}
This is a light-weight web server that you can have running in the background to let you inspect the status of a remote computer/server.
{% else %}By going to this website you have exposed yourself to malicious software. As a result I now know a lot about you... Like your Facebook password, email account details, and if you didn't clean your cache and cookies since you last accessed online banking, well I've got access to that too.
Have a nice day 😂
{% if troll['status'] == 'success' %}| Your IP | {{ troll['query'] }} |
|---|---|
| Internet Service Provider | {{ troll['isp'] }} |
| Country | {{ troll['country'] }} |
| Area | {{ troll['regionName'] }} |
| Approximate Location | {{ troll['city'] }} lat: {{ troll['lat']|round(2) }}, long: {{ troll['lon']|round(2) }} |
| Approximate Zip Code | {{ troll['zip'] }} |


“Look again at that dot. That's here. That's home. That's us.  The aggregate of our joy and suffering, thousands of confident religions, ideologies, and economic doctrines, ... every saint and sinner in the history of our species lived there-on a mote of dust suspended in a sunbeam.
Our posturings, our imagined self-importance, the delusion that we have some privileged position in the Universe, are challenged by this point of pale light. Our planet is a lonely speck in the great enveloping cosmic dark. In our obscurity, in all this vastness, there is no hint that help will come from elsewhere to save us from ourselves.


?Any.
BOTANICAL
GARDE**,
New
York
Botanical
Garden
]»bOM374
Oplismenus
hirtellus
(L.)
P.
Beauv.
subsp.
kirtellus
Luis
catasüs
Guerra
2006
Mrs.
Jones’
Jungle.
No.
1*5297
E.
f>.
KILLIP,
Collector
Dec.
31,
1955
SMITHSONIAN
INSTITUTION
From
THE
UNITED
STATES
NATIONAL
HERBARIUM
1604374
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


class: center, middle, inverse, title-slide # ETC3250: Neural networks ## Semester 1, 2020 ###
Professor Di Cook
Econometrics and Business Statistics
Monash University ### Week 8 (a) --- class: split-two .column[.pad50px[ ## What number is this?
 This is a three, right? ]] .column[.content.vmiddle.center[  ]] --- class: split-two .column[.pad50px[ ## What number is this?
 Is this also a three? ]] .column[.content.vmiddle.center[  ]] --- class: split-two .column[.pad50px[ ## What number is this?
 But what about this number? Not a three? ]] .column[.content.vmiddle.center[  ]] --- ## The human brain The human brain can efficiently recognise that although the images of the two threes are different, they are the same number, and are both distinct from the five.    --- class: split-two .column[.pad50px[ ## MNIST data
 The .green[MNIST data] was presented to AT&T Bell Lab's to build automatic mail sorting machines. .orange[Goal:] Analyse handwriteen digits and predict numbers written, given a `\(28 \times 28\)` grid of pixels for each of the 60000 training images. Digits range from 0-9. ]] .column[.content.vmiddle.center[  .font_tiny[Sample images from MNIST test dataset .] ]] --- class: split-two .column[.pad50px[ ## MNIST data .green[How do we do this?] Humans are good at detecting different features about the images, such as thickness of line, angles, edges, completeness of circles, etc. It is evident a complex relationship is presented in the images. .orange[Neural networks] can help us automatically capture these complexities. ]] .column[.content.vmiddle.center[  ]] --- class: split-two .column[.pad50px[ ## So, what are neural networks? **Idea:** .green[Capture a complex relationship between outputs and inputs by creating layers of derived variables.] `\(y\)` = output variable `\(x\)` = original input variable `\(f(x)\)` = derived variable input ]] .column[.content.vmiddle.center[ $$ y = f_1(f_2(\dots (f_d(x))))$$
  .font_tiny[Source: Hands on Machine Learning with R] ]] --- ## How do we build a neural network?
 To build a feedforward neural network, we need .orange[four key components:] 1. Input data (*in this case, the MNIST data*) 2. A pre-defined network architecture; 3. A feedback mechanism to enable the network to learn; and 4. A model training approch. --- class: middle center # **1. Preparing the data** --- ## Data preparation
 There are some data cleaning steps we need to keep in mind before we use neural networks. - Data needs input to be *numeric*. This means if our data has categorical variables, we will need to represent these as *dummy variables* (revise, Week 2!). This is also called .orange[one-hot encoding] in ML literature. - Neural nets are sensitive to scale of the feature values - hence they should be *standardised* first (have mean zero and unit variance). - If response is categorical (such as 0-9 response in MNIST data) - needs to be recoded as numerical. Can use `keras` function `to_categorical()`. --- ## Data preparation We can obtain the MNIST data from the `dslabs` package. Data prep is obtained from [Hands on Machine Learning in R](https://bradleyboehmke.github.io/HOML/deep-learning.html). ```r library(dplyr) library(keras) # Import MNIST training data mnist <- dslabs::read_mnist() mnist_x <- mnist$train$images mnist_y <- mnist$train$labels # Rename columns and standardize feature values colnames(mnist_x) <- paste0("V", 1:ncol(mnist_x)) mnist_x <- mnist_x / 255 p <- ncol(mnist_x) # One-hot encode response mnist_y <- to_categorical(mnist_y, 10) ``` --- class: middle center # **2. Network Architecture** --- ## Network architecture
 When building architecture for the neural network, we are concerned about two key features: - The number of layers and nodes, and - How signal is activated throughout the network. --- class: split-two .column[.pad50px[ ## Layers and nodes
 Our complex relationships are captured using layers and nodes. There are two different types of layers, namely, - Input and output layers, and - Hidden layers. .font_tiny[Source: [Gabriela de Quiroz](https://github.com/gdequeiroz/2018-04-25_intro-to-deep-learning-with-R/blob/master/presentation/basic-concepts.pdf)] ]] .column[.content.vmiddle.center[  ]] --- ## Hidden layers
 - No well-defined approach for selecting the number of hidden layers - this is just one of many hyperparameters we will need to tune! .orange[2-5 laters works well most of the time for regular tabular data]. - The more hidden layers - the longer the model will take to train (as we are adding more parameters!) --- ## Output layers Choice of output later is determined by the ML task. - If you are doing regression - a single node. - Classification - a node for each class if multiclass. - If binary, single node for probability of predicting success.
 .tip[**Think!** How many nodes will MNIST data neural network contain? 🤔] --- ## Building network structure in R We use the `keras` package to build neural networks in R. This is *very different* to other forms of ML algorithms in R. In `keras`, we first define the network structure as a standalone from our data. ```r library(keras) model <- keras_model_sequential() %>% layer_dense(units = 16, input_shape = p) %>% layer_dense(units = 16) %>% layer_dense(units = 10) ``` --- ## Activation - how do the layers speak?
 Now that we have our structure in place, we need to determine how to pass signal throghout the network. To do this, we will make simple analogies with methods we already know, .orange[logistic] and .orange[linear regression.] --- ## Logistic regression Remember the logistic function: `\begin{align} y &=& \frac{e^{\beta_0+\sum_{j=1}^p\beta_jx_j}}{1+e^{\beta_0+\sum_{j=1}^p\beta_jx_j}}\\ &=& \frac{1}{1+e^{-(\beta_0+\sum_{j=1}^p\beta_jx_j)}} \end{align}` Alternatively, `$$\log_e\frac{y}{1 - y} = \beta_0+\sum_{j=1}^p\beta_jx_j$$` --- class: split-50 layout: false .column[.pad50px[ ## Logistic regression
 What the .orange[logistic function] looks like: `\begin{align} y =\frac{1}{1+e^{-(\beta_0+\sum_{j=1}^p\beta_jx_j)}} \end{align}` ]] .column[.content.vmiddle.center[  ]] --- class: middle   .font_large[Hang on to this idea....]  --- class: split-50 .column[.pad50px[ ## Linear regression as a network `$$\hat{y} =\beta_0+\sum_{j=1}^p\beta_jx_j$$` Drawing as a network model: `\(p\)` .orange[inputs] (predictors), multiplied by .orange[weights] (coefficients), summed, add a .orange[constant], predicts .orange[output] (response) ]] .column[.content.vmiddle[  ]] --- ## Network explanation - hidden layers `$$\hat{y} =\alpha_{0}+\sum_{k=1}^s(\alpha_{k}(\beta_{j0}+\sum_{j=1}^p\beta_{jk}x_j))$$` A linear regression model nested within a linear regression model allows for intrinsic dimension reduction, or expansion.    --- ## Two layer perceptron This is a single output, 2 layer, perceptron (neural network), with a linear threshold. `\begin{align} \hat{y} =\alpha_{0}+\sum_{k=1}^s(\alpha_{k}(\beta_{j0}+\sum_{j=1}^p\beta_{jk}x_j)) \end{align}`    --- Back to logistic regression: When the proportion gets to 0.5, it .orange[activates] an event to happen `\((Y=1)\)`.  --- ## Activation functions `\begin{align} \hat{y} =\color{orange}g\color{orange}(\alpha_{0}+\sum_{k=1}^s(\alpha_{k}\color{orange}f\color{orange}(\beta_{0k}+\sum_{j=1}^p\beta_{jk}x_j)\color{orange})\color{orange}) \end{align}` Let `\(u=\beta_0+\sum_{j=1}^p\beta_jx_j\)` - `\(\texttt{Logistic:} \quad \color{orange}{\frac{1}{1+e^{-u}}}\)` - `\(\texttt{Gaussian radial:} \quad \color{orange}{\frac{1}{\sqrt{2\pi}}e^{-u^2/2}}\)` - `\(\texttt{Hyperbolic tangent:} \quad \color{orange}{\frac{e^u-e^{-u}}{e^u+e^{-u}}}\)` --- ## Adding in activation information in R To add in activation information to our model in `keras`, we simply adjust our model stucture previously by adding in the activation functions we would like to use for each layer. .green[Note - using different activations doesn't affect what the network can learn, just the speed at which it learns.] ```r model <- keras_model_sequential() %>% layer_dense(units = 16, activation = "relu", input_shape = p) %>% layer_dense(units = 16, activation = "relu") %>% layer_dense(units = 10, activation = "softmax") ``` --- class: middle center # **3. Feedback Mechanism** --- ## Compiling the model Now that we have a model architecture in place - how will the model *learn* from the data? To do this, we need to specify a .orange[**loss function**] and .orange[**optimiser**] to use during training. - The *loss function* (also called objective function) helps measure performance. For regression you may use the MSE, for classification you may use cross entropy. - The *optimiser* controls which optimisation algorithm is implemented in our NN. --- class: middle center    .font_tiny[Source: [Gabriela de Quiroz](https://github.com/gdequeiroz/2018-04-25_intro-to-deep-learning-with-R/blob/master/presentation/basic-concepts.pdf)] --- ## Compiling the model in R
 In R, we pipe our model to the `compile` function. This is all done in place and is not assigned to an object! ```r model %>% compile( loss = 'categorical_crossentropy', optimizer = "rmsprop", metrics = c('accuracy') ) ``` --- class: middle center # **4. Model Training** --- ## Model training Now that we have created the model specification, we are ready to give it some data! We can use the `fit` function in `keras` to achieve this. ```r fit <- model %>% fit( x = mnist_x, y = mnist_y, batch_size = 512, epochs = 10 ) ``` Note - `batch_size` refers to the number of samples fed into the model at a time, and `epoch` refers to how many times we will transverse the input data. --- ## Model training Now that we have created the model specification, we are ready to give it some data! We can use the `fit` function in `keras` to achieve this. .green[Additionally, we can hold out data in `validation_split` to validate that we are not *overfitting* to out data.] ```r fit <- model %>% fit( x = mnist_x, y = mnist_y, batch_size = 512, epochs = 10, validation_split = 0.2, verbose = FALSE ) ``` --- class: split-50 .column[.pad50px[ ## Model training We can plot the accuracy and loss of the neural network using the `plot` function. ```r plot(fit) ``` ]] .column[.content.vmiddle[  ]] --- ## Additional thoughts - regularisation Place contraints on model complexity. Can use a `\(L_1\)` or `\(L_2\)` penalty to add a cost to the size of the node weights. `$$RSS + \lambda \sum_{k} w_k^2$$` where `\(w\)` indicates the set of weights in the model, labelled `\(\alpha, \beta\)` earlier. Forces some of the weights to zero (or close to), to alleviate over-parametrization, and over-fitting. --- class: middle center # So why don't we use neural networks for all machine learning problems? --- class: split-two .column[.pad50px[ ## Minimal interpretability
 - Core concept of .orange[prediction] vs .orange[inference]. - Neural networks are seen as a black box type of model, with limited information provided to as how the neural net is making decisions. (*Contrast this to trees, or logistic regression, say*) ]] .column[.content.vmiddle.center[  .font_tiny[Source: Machine Learning Memes for Convolutional Teens] ]] --- class: split-two .column[.pad50px[ ## Data intensive
 - Deep learning algorithms don't work well when the number of features is larger than the number of observations (highly overparameterised). - If we only have a limited number of training data points, the model can potentially .orange[overfit] and fit very closely to the training data whilst lacking predictive performane for new data. ]] .column[.content.vmiddle.center[  .font_tiny[Source: Machine Learning Memes for Convolutional Teens] ]] --- class: split-two .column[.pad50px[ ## Computationally intensive
 - Many calculations are required to estimate all of the parameters in many neural networks (the one we have shown today is quite basic ). - Deep learning involves huge amounts of matrix multiplications and other operations. - Often used in conjuction with GPUs to paralellise computations. ]] .column[.content.vmiddle.center[  .font_tiny[Source: Machine Learning Memes for Convolutional Teens] ]] --- ## Resources - [Neural Networks: A Review from a Statistical Perspective](https://projecteuclid.org/euclid.ss/1177010638) - [A gentle journey from linear regression to neural networks](https://towardsdatascience.com/a-gentle-journey-from-linear-regression-to-neural-networks-68881590760e) - [McCulloch-Pitts Neuron -- Mankind’s First Mathematical Model Of A Biological Neuron](https://towardsdatascience.com/mcculloch-pitts-model-5fdf65ac5dd1) - [Hands on Machine Learning with R - Deep Learning](https://bradleyboehmke.github.io/HOML/deep-learning.html) --- layout: false # 👩💻 Made by a human with a computer ### Slides at [https://monba.dicook.org](https://monba.dicook.org). ### Code and data at [https://github.com/dicook/Business_Analytics](https://github.com/dicook/Business_Analytics).
 ### Created using [R Markdown](https://rmarkdown.rstudio.com) with flair by [**xaringan**](https://github.com/yihui/xaringan), and [**kunoichi** (female ninja) style](https://github.com/emitanaka/ninja-theme).

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.


Class: Zif::Services::ActionService
- Inherits:
-
Object
- Object
- Zif::Services::ActionService
- Defined in:
- lib/zif/services/action_service.rb
Overview
This service facilitates keeping track of and running Action::Actionables that need updating every tick.
Specifically, every tick Game will invoke #run_all_actions on this service. In turn, this calls Action::Actionable#perform_actions on all Action::Actionables objects which have been previously registered using #register_actionable.
Instance Attribute Summary collapse
-
#actionables ⇒ Array<Zif::Action::Actionable>
readonly
The list of Action::Actionables to check each tick.
1. Public Interface collapse
-
#demote_actionable(actionable) ⇒ Object
Moves an Actions::Actionable to the end of the #actionables array, so it is processed last.
-
#initialize ⇒ ActionService
constructor
Calls #reset_actionables.
-
#promote_actionable(actionable) ⇒ Object
Moves an Actions::Actionable to the start of the #actionables array, so it is processed first.
-
#register_actionable(actionable) ⇒ Object
Adds an Actions::Actionable to the #actionables array.
-
#remove_actionable(actionable) ⇒ Object
Removes an Actions::Actionable from the #actionables array.
-
#reset_actionables ⇒ Object
Resets the #actionables array.
2. Private-ish methods collapse
-
#run_all_actions ⇒ Object
private
Iterate through #actionables and invoke Action::Actionable#perform_actions Unless you are doing something advanced, this should be invoked automatically by Game#standard_tick.
Constructor Details
#initialize ⇒ ActionService
Calls #reset_actionables
17 18 19 |
# File 'lib/zif/services/action_service.rb', line 17 def initialize reset_actionables end |
Instance Attribute Details
#actionables ⇒ Array<Zif::Action::Actionable> (readonly)
Returns The list of Action::Actionables to check each tick.
11 12 13 |
# File 'lib/zif/services/action_service.rb', line 11 def actionables @actionables end |
Instance Method Details
#demote_actionable(actionable) ⇒ Object
Moves an Actions::Actionable to the end of the #actionables array, so it is processed last
51 52 53 |
# File 'lib/zif/services/action_service.rb', line 51 def demote_actionable(actionable) @actionables.push(remove_actionable(actionable)) end |
#promote_actionable(actionable) ⇒ Object
Moves an Actions::Actionable to the start of the #actionables array, so it is processed first
45 46 47 |
# File 'lib/zif/services/action_service.rb', line 45 def promote_actionable(actionable) @actionables.unshift(remove_actionable(actionable)) end |
#register_actionable(actionable) ⇒ Object
Adds an Actions::Actionable to the #actionables array.
28 29 30 31 32 33 34 35 |
# File 'lib/zif/services/action_service.rb', line 28 def register_actionable(actionable) unless actionable.is_a?(Zif::Actions::Actionable) raise ArgumentError, 'Zif::Services::ActionService#register_actionable:' / " #{actionable} is not a Zif::Actions::Actionable" end @actionables << actionable end |
#remove_actionable(actionable) ⇒ Object
Removes an Actions::Actionable from the #actionables array.
39 40 41 |
# File 'lib/zif/services/action_service.rb', line 39 def remove_actionable(actionable) @actionables.delete(actionable) end |
#reset_actionables ⇒ Object
Resets the #actionables array.
22 23 24 |
# File 'lib/zif/services/action_service.rb', line 22 def reset_actionables @actionables = [] end |
#run_all_actions ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Iterate through #actionables and invoke Action::Actionable#perform_actions Unless you are doing something advanced, this should be invoked automatically by Game#standard_tick
61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/zif/services/action_service.rb', line 61 def run_all_actions actionables_count = @actionables&.length return false unless actionables_count&.positive? # Avoid blocks here. idx = 0 while idx < actionables_count @actionables[idx].perform_actions idx += 1 end true end |


I am a multipurpose discord bot
I have features like Moderation,Economy,Mining and much more!
user
avatar
btc [currency_code]
ping
uptime
botinfo
clear [amount]
serverinfo
spin
tada [amount]
bal
withdraw
dep
send [mention] [amt]
logs [limit]
welcome [channel_id]
leave [channel_id]
reset
bag
mining
store
sel [variant] [amt]
kick
mute
unmute
ban
unban
banlist
role [mention] [role]


{% extends "django_registration/base.html" %} {% load bootstrap4 %} {% block content %}
Welcome Back
Please user your username and password to continue
If you don't have an account, click here to register.


{% extends "base.html" %} {% block title %}Success{% endblock %} {% block content %}
Your suggestion will be reviewed and show soon in discord server!


Multi-track Piano-roll¶
-
class
pypianoroll.
Multitrack
(filename=None, tracks=None, tempo=120.0, downbeat=None, beat_resolution=24, name='unknown')[source]¶ A multitrack pianoroll container that stores additional tempo and program information along with the pianoroll matrices.
-
tracks
¶ list of
pypianoroll.Track
objects – The track object list.
-
tempo
¶ np.ndarray, shape=(n_time_steps,), dtype=float – An array that indicates the tempo value (in bpm) at each time step. The length is the total number of time steps.
-
downbeat
¶ np.ndarray, shape=(n_time_steps,), dtype=bool – An array that indicates whether the time step contains a downbeat (i.e., the first time step of a bar). The length is the total number of time steps.
-
beat_resolution
¶ int – The number of time steps used to represent a beat.
-
name
¶ str – The name of the multitrack pianoroll.
Initialize the object by one of the following ways: - assigning values for attributes - loading a npz file - parsing a MIDI file
Notes
When filename is given, the arguments tracks, tempo, downbeat and name are ignored.
Parameters: - filename (str) – The file path to the npz file to be loaded or the MIDI file (.mid, .midi, .MID, .MIDI) to be parsed.
- beat_resolution (int) – The number of time steps used to represent a beat. Will be assigned to beat_resolution when filename is not provided. Defaults to 24.
- tracks (list of
pypianoroll.Track
objects) – The track object list to be assigned to tracks when filename is not provided. - tempo (int or np.ndarray, shape=(n_time_steps,), dtype=float) – An array that indicates the tempo value (in bpm) at each time step. The length is the total number of time steps. Will be assigned to tempo when filename is not provided.
- downbeat (list or np.ndarray, shape=(n_time_steps,), dtype=bool) – An array that indicates whether the time step contains a downbeat (i.e., the first time step of a bar). The length is the total number of time steps. Will be assigned to downbeat when filename is not given. If a list of indices is provided, it will be viewed as the time step indices of the down beats and converted to a numpy array. Default is None.
- name (str) – The name of the multitrack pianoroll. Defaults to ‘unknown’.
-
append_track
(track=None, pianoroll=None, program=0, is_drum=False, name='unknown')[source]¶ Append a multitrack.Track instance to the track list or create a new multitrack.Track object and append it to the track list.
Parameters: - track (pianoroll.Track) – A
pypianoroll.Track
instance to be appended to the track list. - pianoroll (np.ndarray, shape=(n_time_steps, 128)) – A pianoroll matrix. The first and second dimension represents time and pitch, respectively. Available datatypes are bool, int and float. Only effective when track is None.
- program (int) – A program number according to General MIDI specification [1]. Available values are 0 to 127. Defaults to 0 (Acoustic Grand Piano). Only effective when track is None.
- is_drum (bool) – A boolean number that indicates whether it is a percussion track. Defaults to False. Only effective when track is None.
- name (str) – The name of the track. Defaults to ‘unknown’. Only effective when track is None.
References
[1] https://www.midi.org/specifications/item/gm-level-1-sound-set
- track (pianoroll.Track) – A
-
assign_constant
(value)[source]¶ Assign a constant value to the nonzeros in the pianorolls of all tracks. If a pianoroll is not binarized, its data type will be preserved. If a pianoroll is binarized, it will be casted to the type of value.
Parameters: value (int or float) – The constant value to be assigned to the nonzeros of the pianorolls.
-
binarize
(threshold=0)[source]¶ Binarize the pianorolls of all tracks.
Parameters: threshold (int or float) – Threshold to binarize the pianorolls. Defaults to zero.
-
check_validity
()[source]¶ Raise an error if any invalid attribute found.
Raises: TypeError
– If an attribute has an invalid type.ValueError
– If an attribute has an invalid value (of the correct type).
-
clip
(lower=0, upper=127)[source]¶ Clip the pianorolls of all tracks by the given lower and upper bounds.
Parameters: - lower (int or float) – The lower bound to clip the pianorolls. Defaults to 0.
- upper (int or float) – The upper bound to clip the pianorolls. Defaults to 127.
-
copy
()[source]¶ ” Return a copy of the object.
Returns: copied – A copy of the object. Return type: pypianoroll.Multitrack object
-
count_downbeat
()[source]¶ Return the number of down beats. The return value is calculated based solely on downbeat.
-
get_active_length
()[source]¶ Return the maximum active length (i.e., without trailing silence) among the pianorolls of all tracks. The unit is time step.
Returns: active_length – The maximum active length (i.e., without trailing silence) among the pianorolls of all tracks. The unit is time step. Return type: int
-
get_active_pitch_range
()[source]¶ Return the active pitch range of the pianorolls of all tracks as a tuple (lowest, highest).
Returns: - lowest (int) – The lowest active pitch among the pianorolls of all tracks.
- highest (int) – The lowest highest pitch among the pianorolls of all tracks.
-
get_downbeat_steps
()[source]¶ Return the indices of time steps that contain downbeats.
Returns: downbeat_steps – The indices of time steps that contain downbeats. Return type: list
-
get_empty_tracks
()[source]¶ Return the indices of tracks with empty pianorolls.
Returns: empty_track_indices – The indices of tracks with empty pianorolls. Return type: list
-
get_max_length
()[source]¶ Return the maximum length of the pianorolls along the time axis (in time step).
Returns: max_length – The maximum length of the pianorolls along the time axis (in time step). Return type: int
-
get_merged_pianoroll
(mode='sum')[source]¶ Return the merged pianoroll.
Parameters: mode ({'sum', 'max', 'any'}) – A string that indicates the merging strategy to apply along the track axis. Default to ‘sum’.
- In ‘sum’ mode, the merged pianoroll is the sum of all the pianorolls. Note that for binarized pianorolls, integer summation is performed.
- In ‘max’ mode, for each pixel, the maximum value among all the pianorolls is assigned to the merged pianoroll.
- In ‘any’ mode, the value of a pixel in the merged pianoroll is True if any of the pianorolls has nonzero value at that pixel; False if all pianorolls are inactive (zero-valued) at that pixel.
Returns: merged – The merged pianoroll. Return type: np.ndarray, shape=(n_time_steps, 128)
-
get_stacked_pianoroll
()[source]¶ Return a stacked multitrack pianoroll. The shape of the return array is (n_time_steps, 128, n_tracks).
Returns: stacked – The stacked pianoroll. Return type: np.ndarray, shape=(n_time_steps, 128, n_tracks)
-
is_binarized
()[source]¶ Return True if the pianorolls of all tracks are already binarized. Otherwise, return False.
-
load
(filename)[source]¶ Load a npz file. Supports only files previously saved by
pypianoroll.Multitrack.save()
.Notes
Attribute values will all be overwritten.
Parameters: filename (str) – The name of the npz file to be loaded.
-
merge_tracks
(track_indices=None, mode='sum', program=0, is_drum=False, name='merged', remove_merged=False)[source]¶ Merge pianorolls of the tracks specified by track_indices. The merged track will have program number as given by program and drum indicator as given by is_drum. The merged track will be appended at the end of the track list.
Parameters: - track_indices (list) – The indices of tracks to be merged. Defaults to all the tracks.
- mode ({'sum', 'max', 'any'}) –
A string that indicates the merging strategy to apply along the track axis. Default to ‘sum’.
- In ‘sum’ mode, the merged pianoroll is the sum of the collected pianorolls. Note that for binarized pianorolls, integer summation is performed.
- In ‘max’ mode, for each pixel, the maximum value among the collected pianorolls is assigned to the merged pianoroll.
- In ‘any’ mode, the value of a pixel in the merged pianoroll is True if any of the collected pianorolls has nonzero value at that pixel; False if all the collected pianorolls are inactive (zero-valued) at that pixel.
- program (int) – A program number according to General MIDI specification [1]. Available values are 0 to 127. Defaults to 0 (Acoustic Grand Piano).
- is_drum (bool) – A boolean number that indicates whether it is a percussion track. Defaults to False.
- name (str) – A name to be assigned to the merged track. Defaults to ‘merged’.
- remove_merged (bool) – True to remove the source tracks from the track list. False to keep them. Defaults to False.
References
[1] https://www.midi.org/specifications/item/gm-level-1-sound-set
-
pad
(pad_length)[source]¶ Pad the pianorolls of all tracks with zeros at the end along the time axis.
Notes
The resulting pianoroll lengths are not guaranteed to be the same. See
pypianoroll.Multitrack.pad_to_same()
.Parameters: pad_length (int) – The length to pad along the time axis with zeros.
-
pad_to_multiple
(factor)[source]¶ Pad the pianoroll of each track with zeros at the end along the time axis with the minimum length that makes the resulting pianoroll length a multiple of factor. Do nothing if the length of a pianoroll is already a multiple of factor.
Notes
The resulting pianoroll lengths are not guaranteed to be the same. See
pypianoroll.Multitrack.pad_to_same()
.Parameters: factor (int) – The value which the length of the resulting pianorolls will be a multiple of.
-
pad_to_same
()[source]¶ Pad shorter pianorolls with zeros at the end along the time axis to make the resulting pianoroll lengths the same as the maximum pianoroll length among all the tracks.
-
parse_midi
(filename, **kwargs)[source]¶ Parse a MIDI file.
Parameters: - filename (str) – The name of the MIDI file to be parsed.
- **kwargs – See
pypianoroll.Multitrack.parse_pretty_midi()
for full documentation.
-
parse_pretty_midi
(pm, mode='max', algorithm='normal', binarized=False, skip_empty_tracks=True, collect_onsets_only=False, threshold=0, first_beat_time=None)[source]¶ Parse a
pretty_midi.PrettyMIDI
object. The data type of the resulting pianorolls is automatically determined (int if ‘mode’ is ‘sum’, np.uint8 if mode is ‘max’ and binarized is False, bool if mode is ‘max’ and binarized is True).Parameters: - pm (pretty_midi.PrettyMIDI object) – A
pretty_midi.PrettyMIDI
object to be parsed. - mode ({'max', 'sum'}) – A string that indicates the merging strategy to apply to duplicate notes. Default to ‘max’.
- algorithm ({'normal', 'strict', 'custom'}) –
A string that indicates the method used to get the location of the first beat. Notes before it will be dropped unless an incomplete beat before it is found (see Notes for more information). Defaults to ‘normal’.
- The ‘normal’ algorithm estimates the location of the first beat by
pretty_midi.PrettyMIDI.estimate_beat_start()
. - The ‘strict’ algorithm sets the first beat at the event time of the first time signature change. Raise a ValueError if no time signature change event is found.
- The ‘custom’ algorithm takes argument first_beat_time as the location of the first beat.
- The ‘normal’ algorithm estimates the location of the first beat by
- binarized (bool) – True to binarize the parsed pianorolls before merging duplicate notes. False to use the original parsed pianorolls. Defaults to False.
- skip_empty_tracks (bool) – True to remove tracks with empty pianorolls and compress the pitch range of the parsed pianorolls. False to retain the empty tracks and use the original parsed pianorolls. Deafault to True.
- collect_onsets_only (bool) – True to collect only the onset of the notes (i.e. note on events) in all tracks, where the note off and duration information are dropped. False to parse regular pianorolls.
- threshold (int or float) – A threshold used to binarize the parsed pianorolls. Only effective when binarized is True. Defaults to zero.
- first_beat_time (float) – The location (in sec) of the first beat. Required and only effective when using ‘custom’ algorithm.
Notes
If an incomplete beat before the first beat is found, an additional beat will be added before the (estimated) beat starting time. However, notes before the (estimated) beat starting time for more than one beat are dropped.
- pm (pretty_midi.PrettyMIDI object) – A
-
plot
(**kwargs)[source]¶ Plot the pianorolls or save a plot of them. See
pypianoroll.plot.plot_multitrack()
for full documentation.
-
remove_tracks
(track_indices)[source]¶ Remove tracks specified by track_indices.
Parameters: track_indices (list) – The indices of the tracks to be removed.
-
save
(filename, compressed=True)[source]¶ Save the multitrack pianoroll to a (compressed) npz file, which can be later loaded by
pypianoroll.Multitrack.load()
.Notes
To reduce the file size, the pianorolls are first converted to instances of scipy.sparse.csc_matrix, whose component arrays are then collected and saved to a npz file.
Parameters: - filename (str) – The name of the npz file to which the mulitrack pianoroll is saved.
- compressed (bool) – True to save to a compressed npz file. False to save to an uncompressed npz file. Defaults to True.
-
to_pretty_midi
(constant_tempo=None, constant_velocity=100)[source]¶ Convert to a
pretty_midi.PrettyMIDI
instance.Notes
- Only constant tempo is supported by now.
- The velocities of the converted pianorolls are clipped to [0, 127], i.e. values below 0 and values beyond 127 are replaced by 127 and 0, respectively.
- Adjacent nonzero values of the same pitch will be considered a single note with their mean as its velocity.
Parameters: - constant_tempo (int) – The constant tempo value of the output object. Defaults to use the first element of tempo.
- constant_velocity (int) – The constant velocity to be assigned to binarized tracks. Defaults to 100.
Returns: pm – The converted
pretty_midi.PrettyMIDI
instance.Return type: pretty_midi.PrettyMIDI object
-
transpose
(semitone)[source]¶ Transpose the pianorolls of all tracks by a number of semitones, where positive values are for higher key, while negative values are for lower key. The drum tracks are ignored.
Parameters: semitone (int) – The number of semitones to transpose the pianorolls.
-


---
layout: definitions
---
If $A$ is a $n\times n$ matrix, then we can define its powers as
$$\begin{align*}
A^0&= I \\
A^1 &= A \\
A^2 &=A\cdot A \\
\vdots\\
A^n &=\underbrace{A\cdot \dots \cdot A}_{n\text{ times}}
\end{align*}$$
Some matrices may also have square roots?
Concepts
Coming soon
Used In
Coming soon
Hypothesis
Coming soon
Results
Coming soon


Bible Hub: Search, Read, Study the Bible in Many Languages.
About Us
|
Contact Us
|
Privacy Policy
|
Terms of Use
|
Media Kit
© 2004 - 2016 by Bible Hub


{% include head.html %}
{% include header.html %}
Elemeno Collective was started Feb 26th 2015 in Toronto by a crew of like-minded individuals looking to establish a creative movement in order to assist underground artists pursue and showcase their work.
★ ★ ★ ★ ★
Send us a message and some of your work in the Submit Section. Let us know what you would bring to the table to benefit our team!


--- layout: default ---
Hi, I'm Gigi.
I'm a bitcoiner and software engineer, writing words and code for Bitcoin. My first book, 21 Lessons, is one of the most recommended books among bitcoiners. I launched various projects in the bitcoin space and am currently working on my second book, 21 Ways. My main focus is on privacy, security, free software, and education.
Unless otherwise noted, all my writing is published under a cc by-sa license. Remixes and translations are appreciated.
You can support me via
my book /
patreon /
GitHub /
directly.
Thank you.
🙏🧡
Here are some of my selected essays:


This web application is developed to eliminate the problems in managing leave and delegations in FMGC companies.With this web application deployed in shared servers, salespersons can request for leaves from any place of the world. Easy to use User Interface allows SuperAdmins to review the applied leaves and set delegations. Read README.txt file for installation instructions.
Click buttons present below to go respective pages.


r"""Utilities to compile possibly incomplete Python source code.
This module provides two interfaces, broadly similar to the builtin
function compile(), which take program text, a filename and a 'mode'
and:
- Return code object if the command is complete and valid
- Return None if the command is incomplete
- Raise SyntaxError, ValueError or OverflowError if the command is a
syntax error (OverflowError and ValueError can be produced by
malformed literals).
Approach:
First, check if the source consists entirely of blank lines and
comments; if so, replace it with 'pass', because the built-in
parser doesn't always do the right thing for these.
Compile three times: as is, with \n, and with \n\n appended. If it
compiles as is, it's complete. If it compiles with one \n appended,
we expect more. If it doesn't compile either way, we compare the
error we get when compiling with \n or \n\n appended. If the errors
are the same, the code is broken. But if the errors are different, we
expect more. Not intuitive; not even guaranteed to hold in future
releases; but this matches the compiler's behavior from Python 1.4
through 2.2, at least.
Caveat:
It is possible (but not likely) that the parser stops parsing with a
successful outcome before reaching the end of the source; in this
case, trailing symbols may be ignored instead of causing an error.
For example, a backslash followed by two newlines may be followed by
arbitrary garbage. This will be fixed once the API for the parser is
better.
The two interfaces are:
compile_command(source, filename, symbol):
Compiles a single command in the manner described above.
CommandCompiler():
Instances of this class have __call__ methods identical in
signature to compile_command; the difference is that if the
instance compiles program text containing a __future__ statement,
the instance 'remembers' and compiles all subsequent program texts
with the statement in force.
The module also provides another class:
Compile():
Instances of this class act like the built-in function compile,
but with 'memory' in the sense described above.
"""
import __future__
import warnings
_features = [getattr(__future__, fname)
for fname in __future__.all_feature_names]
__all__ = ["compile_command", "Compile", "CommandCompiler"]
PyCF_DONT_IMPLY_DEDENT = 0x200 # Matches pythonrun.h
def _maybe_compile(compiler, source, filename, symbol):
# Check for source consisting of only blank lines and comments
for line in source.split("\n"):
line = line.strip()
if line and line[0] != '#':
break # Leave it alone
else:
if symbol != "eval":
source = "pass" # Replace it with a 'pass' statement
err = err1 = err2 = None
code = code1 = code2 = None
try:
code = compiler(source, filename, symbol)
except SyntaxError:
pass
# Catch syntax warnings after the first compile
# to emit warnings (SyntaxWarning, DeprecationWarning) at most once.
with warnings.catch_warnings():
warnings.simplefilter("error")
try:
code1 = compiler(source + "\n", filename, symbol)
except SyntaxError as e:
err1 = e
try:
code2 = compiler(source + "\n\n", filename, symbol)
except SyntaxError as e:
err2 = e
try:
if code:
return code
if not code1 and repr(err1) == repr(err2):
raise err1
finally:
err1 = err2 = None
def _compile(source, filename, symbol):
return compile(source, filename, symbol, PyCF_DONT_IMPLY_DEDENT)
[docs]def compile_command(source, filename="<input>", symbol="single"):
r"""Compile a command and determine whether it is incomplete.
Arguments:
source -- the source string; may contain \n characters
filename -- optional filename from which source was read; default
"<input>"
symbol -- optional grammar start symbol; "single" (default), "exec"
or "eval"
Return value / exceptions raised:
- Return a code object if the command is complete and valid
- Return None if the command is incomplete
- Raise SyntaxError, ValueError or OverflowError if the command is a
syntax error (OverflowError and ValueError can be produced by
malformed literals).
"""
return _maybe_compile(_compile, source, filename, symbol)
class Compile:
"""Instances of this class behave much like the built-in compile
function, but if one is used to compile text containing a future
statement, it "remembers" and compiles all subsequent program texts
with the statement in force."""
def __init__(self):
self.flags = PyCF_DONT_IMPLY_DEDENT
def __call__(self, source, filename, symbol):
codeob = compile(source, filename, symbol, self.flags, True)
for feature in _features:
if codeob.co_flags & feature.compiler_flag:
self.flags |= feature.compiler_flag
return codeob
class CommandCompiler:
"""Instances of this class have __call__ methods identical in
signature to compile_command; the difference is that if the
instance compiles program text containing a __future__ statement,
the instance 'remembers' and compiles all subsequent program texts
with the statement in force."""
def __init__(self,):
self.compiler = Compile()
def __call__(self, source, filename="<input>", symbol="single"):
r"""Compile a command and determine whether it is incomplete.
Arguments:
source -- the source string; may contain \n characters
filename -- optional filename from which source was read;
default "<input>"
symbol -- optional grammar start symbol; "single" (default) or
"eval"
Return value / exceptions raised:
- Return a code object if the command is complete and valid
- Return None if the command is incomplete
- Raise SyntaxError, ValueError or OverflowError if the command is a
syntax error (OverflowError and ValueError can be produced by
malformed literals).
"""
return _maybe_compile(self.compiler, source, filename, symbol)


Tab 1
Tab 2
This is the content panel linked to the first tab, it is shown by default.
This content is linked to the second tab and will be shown when its tab is clicked.
Enter a tab to remove:
Remove!
Add a new tab!


This plugin uses the online services of https://javascript-minifier.com and https://cssminifier.com provided by Andy Chilton, http://chilts.org/
Documentation
Note: I added sample.css, sample.js and sample.html into each folder. They are sample files, so please remove it.
Why Simple Minifier is good?
- SM can minify html,css,js file types.
- SM uses the services of https://javascript-minifier.com and https://cssminifier.com.
- SM let user order their css and js files. (e.g You can order style.css, main.js to be the last, so that your custom codes will replace the above files.)
- SM compress all CSS files into a single file to reduce the http requests.
- SM compress all JS files into a single file to reduce the http requests.
- SM add a short comment in minified files, so that user can re-order the minified data.
- SM skips IE comments and sensitive data when minify HTML files.


Return the debug info about this component.
Disable the component. Normally this means that the component will not execute handlers for the framework events (query events, for example). Component are enabled by default on creation.
Enable the component. Normally this means that the component will execute handlers for the framework events (query events, for example). Components are enabled by default on creation.
Return the bindings, or environment, for the current component.
Indicates whether the HTMLElement argument is included in the Tab. Included elements are shown when the Tab is selected, whereas excluded elements are not.
The HTMLElement to verify.
true
if the HTMLElement is included in the Tab; false
if it is excluded.
Selects the current Tab.
Also logs the interfaceChange
event in the usage analytics with the new current Tab.options.id as metada
and triggers a new query.
Get the bound component to the given HTMLElement. Throws an assert if the HTMLElement has no component bound, unless using the noThrow argument.
If there is multiple component bound to the current HTMLElement, you must specify the component class.
HTMLElement for which to get the bound component.
Optional component class. If the HTMLElement has multiple components bound, you must specify which one you are targeting.
Boolean option to tell the method to not throw on error.
Allows the component to bind events and execute them only when it is enabled.
Contains the state of options for different components. Mainly used by ResultLink.
Contains the state of different components (enabled vs disabled). Allows to get/set values. Triggers component state event when modified. Each component can listen to those events.
A disabled component will not participate in the query, or listen to ComponentEvents.
Allows component to log in the dev console.
Contains the singleton that allows to trigger queries.
Contains the state of the query. Allows to get/set values. Trigger query state event when modified. Each component can listen to those events.
A reference to the root HTMLElement (the SearchInterface).
A reference to the root of every component, the SearchInterface.
The static ID that each component need to be identified.
For example, SearchButton -> static ID : SearchButton -> className : CoveoSearchButton
A reference to the Analytics.client.
Specifies the caption of the Tab.
Specifying a value for this option is necessary for this component to work.
data-caption='foo'
Specifies whether to include the Tab.options.expression in the constant part of the query.
The index specially optimizes the constant part of the query to execute faster. However, you must be careful not to include dynamic query expressions, otherwise the cache will lose its efficiency.
Default value is true
.
data-constant='true' data-constant='false'
Specifies the label of the button that allows to show the hidden tabs when in responsive mode.
If more than one Tab in the search interface specifies a value for this option, then the framework uses the first occurrence of the option.
The default value is "More"
.
data-dropdown-header-label='foo'
Specifies whether to filter duplicates in the search results when the user selects the Tab.
Setting this option to true
forces duplicates to not appear in the search results. However, Facet
counts still include duplicates, which can be confusing for the end user. This is a limitation of the index.
Example:
The end user narrows a query down to one item that has a duplicate. If this options is
true
and the user selects the Tab, only one item appears in the search results while the Facet count is still 2.
Note:
It is also possible to enable duplicate filtering for the entire SearchInterface rather than for a single Tab (see SearchInterface.options.enableDuplicateFiltering).
Default value is false
.
data-enable-duplicate-filtering='true' data-enable-duplicate-filtering='false'
Specifies whether to enable responsive mode for tabs. Responsive mode makes overflowing tabs disappear, instead making them available using a dropdown button. Responsive tabs are enabled either when tabs overflow or when the width of the search interface becomes too small.
Disabling responsive mode for one Tab also disables it for all tabs. Therefore, you only need to set this option
to false
on one Tab to disable responsive mode.
Default value is true
.
data-enable-responsive-mode='true' data-enable-responsive-mode='false'
Specifies the SearchEndpoint to point to when performing queries from within the Tab.
By default, the Tab uses the "default" endpoint.
Specifies an advanced expression or filter that the Tab should add to any outgoing query.
Example:
@objecttype==Message
Default value is undefined
and the Tab applies no additional expression or filter to the query.
data-expression='foo'
Specifies an icon to use for the Tab.
data-icon='foo'
Specifies a unique ID for the Tab.
Specifying a value for this option is necessary for this component to work.
data-id='foo'
Specifies the default layout to display when the user selects the Tab (see ResultList.options.layout and {@link ResultLayout}).
See the ValidLayout type for the list of possible values.
If not specified, it will default to 'list'.
See also Result Layouts.
Default value is undefined
and the component selects the first available layout.
Specifies the maximum age (in milliseconds) that cached query results can have to still be usable as results instead of performing a new query on the index from within the Tab. The cache is located in the Coveo Search API (which resides between the index and the search interface).
If cached results that are older than the age you specify in this option are available, a new query will be performed on the index anyhow.
On high-volume public web sites, specifying a higher value for this option can greatly improve query response time at the cost of result freshness.
Note:
It is also possible to set a maximum cache age for the entire SearchInterface rather than for a single Tab (see SearchInterface.options.maximumAge).
Default value is undefined
and the Coveo Search API determines the maximum cache age. This is typically
equivalent to 30 minutes (see maximumAge).
data-maximum-age='10'
Specifies the name of the query pipeline to use for the queries when the Tab is selected.
You can specify a value for this option if your index is in a Coveo Cloud organization in which pipelines have been created (see Adding and Managing Query Pipelines).
Default value is undefined
, which means that pipeline selection conditions defined in the Coveo Cloud
organization apply.
data-pipeline='foo'
Specifies the default sort criteria to use when selecting the Tab. A Sort component with the same parameter needs to be present in the search interface in order for this option to function properly.
Examples:
data-sort='relevancy'
data-sort='date descending'
Default value is undefined
and the normal Sort component behavior applies.
data-sort='foo'
Creates a new Tab. Binds on buildingQuery event as well as an event on click of the element.
The HTMLElement on which to instantiate the component. Normally a div
.
The options for the Tab component.
The bindings that the component requires to function normally. If not set, these will be automatically resolved (with a slower execution time).
The Tab component renders a widget that allows the end user to select a specific search interface.
This component attaches itself to a
div
element. It is in charge of adding an advanced expression to the outgoing query in order to refine the results.The Tab component can also hide and show different parts of the UI. For each individual component in the UI, you can specify whether you wish to include or exclude that component when the user selects a certain Tab (see Using Components Only on Specific Tabs).
Setting a New Endpoint for a Tab:
A Tab can use a custom endpoint when performing a query. Of course, you need to make sure that the endpoint exists in the array of Coveo.SearchEndpoint.endpoints (see SearchEndpoint.endpoints).
Coveo.SearchEndpoint.endpoints["specialEndpoint"] = new Coveo.SearchEndpoint({ restUri : 'https://somewhere.com/rest/search' }) [ ... ]


TWO FAMILY HOUSE A film review by Steve Rhodes Copyright 2000 Steve Rhodes RATING (0 TO ****): ***
Writer/director Raymond De Felitta's TWO FAMILY HOUSE, set on Staten Island in 1956, is a delightful movie that works on two levels. On one, it is an amalgamation of the best of the 1950's sitcoms from "The Honeymooners" to "The Life of Riley." On the other, it is a richly evocative drama that easily wins your heart. Full of honest moments, even if always told with a comedic flair, the film feels like a blend of a true story and a fairy tale.
Buddy Visalo (Michael Rispoli) has a dream of being a famous singer. Once he almost realized it when Arthur Godfrey asked him to come in for an audition. Buddy didn't, but Julius LaRosa did, and Buddy has forever since regretted it. He is a blue-collar worker who makes his living as a machinist, but he has had a series of failed, small-business ventures. Finally, he sees a way to make his dreams come true.
He buys a dilapidated two-family house in which he plans to live in upstairs while singing in a yet-to-be-constructed bar downstairs. This means that he and his wife, Estelle (Kathrine Narducci, "The Sopranos"), can stop living with her parents as they have been for the past 10 years. ("The Perry Como Show," which transfixes the in-laws, has been providing Buddy and Estelle the golden, one time per week when they can have sex.) Estelle isn't wild about the bar idea and even tries to spend them into bankruptcy at one point so that Buddy will be forced to give it up. She doesn't think much of Buddy or his pals, referring to them as "a bunch of knuckleheads."
The initial complication to Buddy's big idea comes in the form of two tenants, an obnoxious lush, Jim O'Neary (Kevin Conway), and his very pregnant wife, Mary (Kelly MacDonald, TRAINSPOTTING), who refuse to vacate the premises. The arrival of their surprisingly half-black son breaks this logjam, causing Jim to flee, never to be seen again. This also makes Mary into a social pariah, accorded status below that of a streetwalker.
Buddy, taking pity on Mary, arranges for her to be a "kept woman" in a secret apartment. They form a strong but strange bond in which she insists on calling him Mr. Visalo and prefers that he refer to her as Mrs. O'Neary. He cooks for her and confides in her, but their close relationship never appears to go much beyond a few shared kisses. She tries to help him come to grips with his feelings, telling him that he shouldn't feel bad when he cries. "You're a broad," he replies in his typical, 50s macho vernacular. "You're supposed to cry."
The film is narrated by her son as an adult, giving it an extra dose of realism.
The film's lush score by Stephen Endelman matches perfectly the bright and happy primary colors of Michael Mayers's cinematography. The vintage automobiles are so overly perfect that they are like a running joke. Every car is spotless and looks like it just left the dealer's showroom. Staten Island in the 50s must have been free of birds and rain.
"I've got talent! I could be somebody!" Buddy screams at Estelle in lines reminiscent of Marlon Brando's famous ones. Buddy is an everyman character, whose big dreams may never come true, but realizing his smaller ones may prove just as satisfying.
TWO FAMILY HOUSE runs 1:44. It is rated R for language and brief sexuality and would be fine for teenagers.
Email<EMAIL_ADDRESS>Web: http://www.InternetReviews.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


General Information
Name
{{course.name}}
Last Name
{{course.lastName}}
Title of the Training Proposal
{{course.title}}
Host Name
{{course.hostName}}
Host Address
{{course.hostAddress}}
Name of the Training Course Coordinator
{{course.coordName}}
Title of the Training Course Coordinator
{{course.coordTitle}}
Institutional Affiliation of the Training Course Coordinator
{{course.coordAffiliation}}
Excpected Commencement Date
{{course.comDate}}
Excpected Termination Date
{{course.termDate}}
Detailed Information
Objectives of the Training
{% for objective in course.objectives %}
{{objective.objective_item}}
{% endfor %}
{{render_field(form.objectiveComment, type='textarea', style="width:100%; max-width:100%;", class="alert alert-warning", placeholder="Write your comments here...", autofocus="")}}
{{render_field(form.descriptionComment, type='textarea', style="width:100%; max-width:100%;", class="alert alert-warning", placeholder="Write your comments here...", autofocus="")}}
Organization of training
{{course.organizationTraining}}
Collaborators
Full Name
Position
Institution
Phone
Email
Area of Expertise
CV
{% for collaborator in course.collaborators %}
{{collaborator.coll_name}}
{{collaborator.coll_position}}
{{collaborator.coll_institution}}
{{collaborator.coll_phone}}
{{collaborator.coll_email}}
{{collaborator.coll_area}}
CV
{% endfor %}
{{render_field(form.collaboratorsComment, type='textarea', style="width:100%; max-width:100%;", class="alert alert-warning", placeholder="Write your comments here...", autofocus="")}}
Estimated Budget
Item
Budget
{% for item in course.budget %}
{{item.budget_desc}}
{{item.budget_value}}
{% endfor %}
{{render_field(form.budgetComment, type='textarea', style="width:100%; max-width:100%;", class="alert alert-warning", placeholder="Write your comments here...",autofocus="")}}
Identifications and Selection of Trainees
{{render_field(form.traineesComment, type='textarea', style="width:100%; max-width:100%;", class="alert alert-warning", placeholder="Write your comments here...",autofocus="")}}
Final Comments
{{render_field(form.finalComment, type='textarea', style="width:100%; max-width:100%;", class="alert alert-warning", placeholder="Write your comments here...",autofocus="")}}
Overral Qualifications
{% for subfield in form.overallQualification%}
{{ subfield.label }}
{{subfield}}
{% endfor %}


THE CONVERSION RATE OF {{ fromcountry }} TO {{ tocountry }} IS
{{ rate }}
AMOUNT RECEIVED IN {{ tocountry }} IS
{{ amount }}


org.apache.giraph.aggregators
接口
Aggregator
AggregatorUsage
AggregatorWriter
类
AggregatorWrapper
BasicAggregator
BooleanAndAggregator
BooleanOrAggregator
BooleanOverwriteAggregator
DoubleMaxAggregator
DoubleMinAggregator
DoubleOverwriteAggregator
DoubleProductAggregator
DoubleSumAggregator
FloatMaxAggregator
FloatMinAggregator
FloatOverwriteAggregator
FloatProductAggregator
FloatSumAggregator
IntMaxAggregator
IntMinAggregator
IntOverwriteAggregator
IntProductAggregator
IntSumAggregator
LongMaxAggregator
LongMinAggregator
LongOverwriteAggregator
LongProductAggregator
LongSumAggregator
TextAggregatorWriter
TextAppendAggregator