Config configures the factory methods and plugins for the registry
type Config struct { AuthFilters []*HandlerConfig `mapstructure:"authFilters" yaml:"authFilters"` Decorators []*HandlerConfig `mapstructure:"decorators" yaml:"decorators"` Endorsers PluginMapping `mapstructure:"endorsers" yaml:"endorsers"` Validators PluginMapping `mapstructure:"validators" yaml:"validators"` }
HandlerConfig defines configuration for a plugin or compiled handler
type HandlerConfig struct { Name string `mapstructure:"name" yaml:"name"` Library string `mapstructure:"library" yaml:"library"` }
HandlerLibrary is used to assert how to create the various handlers
type HandlerLibrary struct { }
func (r *HandlerLibrary) DefaultAuth() auth.Filter
DefaultAuth creates a default auth.Filter that doesn't do any access control checks - simply forwards the request further. It needs to be initialized via a call to Init() and be passed a peer.EndorserServer
func (r *HandlerLibrary) DefaultDecorator() decoration.Decorator
DefaultDecorator creates a default decorator that doesn't do anything with the input, simply returns the input as output.
func (r *HandlerLibrary) DefaultEndorsement() endorsement.PluginFactory
func (r *HandlerLibrary) DefaultValidation() validation.PluginFactory
func (r *HandlerLibrary) ExpirationCheck() auth.Filter
ExpirationCheck is an auth filter which blocks requests from identities with expired x509 certificates
HandlerType defines custom handlers that can filter and mutate objects passing within the peer
type HandlerType int
const ( // Auth handler - reject or forward proposals from clients Auth HandlerType = iota // Decoration handler - append or mutate the chaincode input // passed to the chaincode Decoration Endorsement Validation )
type PluginMapping map[string]*HandlerConfig
Registry defines an object that looks up handlers by name
type Registry interface { // Lookup returns a handler with a given // registered name, or nil if does not exist Lookup(HandlerType) interface{} }
func InitRegistry(c Config) Registry
InitRegistry creates the (only) instance of the registry


--- layout: post title: Ziyang's first-week reflection date: 2017-09-20 19:38:30.000000000 -05:00 type: post parent_id: '0' published: true password: '' status: publish categories: [] tags: [] meta: _edit_last: '1499' sbe_sent: '1' _pingme: '1' _encloseme: '1' author: login: gaoz email<EMAIL_ADDRESS>display_name: gaoz first_name: Ziyang last_name: Gao ---
This week I've been learning/implementing how to set up local server and build up website empowered by Omeka using MAMP. As an administrator of "Omeka Testing", I've learned how to add plugins and themes from omeka.net. The reading I was assigned this week is pretty hard to follow, but from the Lynda tutorial and basics of adding plugins, I've gained some sense of the logistics and creating/adding plugins to my website and how the back-end role of web development is like (making sure that an input my user would reflect directly in data base and give out desirable output). For next week, I'm going to learn PHP and html basics, so that I could understand the plugin/configuration codes in a better way.


|
EUCHARISTIC PRAYER I
|
|
|
The priest, with hands extended, says: |
|
|
To you, therefore, most merciful Father, we make humble prayer and petition through Jesus Christ your Son, our Lord: |
|
|
He joins his hands and says |
|
|
that you accept |
|
|
He makes the Sign of the Cross once over
the bread and chalice together, saying: |
|
|
and bless + these gifts, these
offerings, these holy and unblemished
sacrifices, |
|
|
With hands
extended, he continues: |
|
|
which we offer you firstly for your holy catholic Church.
Be pleased to grant her peace, to guard, unite and govern her throughout the
whole world, together with your servant N. our Pope,
and N. our Bishop, and all those who, holding to the
truth, hand on the catholic and apostolic faith. |
|
|
Comemoration of the Living |
|
|
Remember, Lord, your servants N. and N. |
|
|
The priest joins his hands and prays briefly for those for whom he
intends to pray. Then, with hands extended, he continues: |
|
|
and all gathered here, whose faith and devotion are
known to you. For them, we offer you this sacrifice of praise or they offer
it for themselves and all who are dear to them, for the redemption of their
souls, in hope of health and well-being, and paying their homage to you, the
eternal God, living and true. |
|
|
Within the Action.
(Special
Forms) |
|
|
In communion with those whose memory we venerate,
especially the glorious ever-Virgin Mary, Mother of our God and Lord, Jesus
Christ, and blessed Joseph, her Spouse, your blessed Apostles and Martyrs,
Peter and Paul, Andrew, (James, John, Thomas,
James, Philip, Bartholomew, Matthew, Simon and Jude; Linus, Cletus, Clement,
Sixtus, Cornelius, Cyprian, Lawrence, Chrysogonus, John and Paul, Cosmas and
Damian) and all your Saints; we ask that
through their merits and prayers, in all things we may be defended by your
protecting help. |
|
|
With hands
extended, the Priest continues: |
|
|
(During Easter Week) |
|
|
Therefore, Lord, we pray: graciously
accept this oblation of our service, that of your whole family; order our
days in your peace, and command that we be delivered from eternal damnation
and counted among the flock of those you have chosen. |
|
|
He joins his hands. |
|
|
(Through Christ our Lord. Amen.) |
|
|
Holding his hands
extended over the offerings, he says: |
|
|
Be pleased, O God, we pray, to bless, acknowledge,
and approve this offering in every respect; make it spiritual and acceptable,
so that it may become for us the Body and Blood of your most beloved Son, our
Lord Jesus Christ. |
|
|
He joins his hands. In the formulas
that follow, the words of the Lord should be pronounced clearly and
distinctly, as the nature of these words requires. |
|
|
On the day before he was to suffer, |
|
|
He takes the bread
and, holding it slightly raised above the altar, continues: |
|
|
he took bread in his holy
and venerable hands, |
|
|
He raises his
eyes. |
|
|
and with eyes raised to
heaven to you, O God, his almighty Father, giving you thanks, he said the
blessing, broke the bread and gave it to his disciples, saying: |
|
|
He bows slightly. |
|
|
Take
this, all of you, and eat of it:
for this is
my Body, which will be given up for you. |
|
|
He shows the
consecrated host to the people, places it again on the paten, and genuflects
in adoration. After this, the Priest continues: |
|
|
In a similar way,
when supper was ended, |
|
|
He takes the
chalice and, holding it slightly raised above the altar, continues: |
|
|
he took this precious
chalice in his holy and venerable hands, and once more giving you thanks, he
said the blessing and gave the chalice to his disciples, saying: |
|
|
He bows slightly. |
|
|
Take this,
all of you, and drink from it: for this is the chalice of my Blood, the Blood
of the new and eternal covenant, which will be poured out for you and for
many for the forgiveness of sins. Do this in memory of me. |
|
|
He shows the
chalice to the people, places it on the corporal, and genuflects in
adoration. Then he says: |
|
|
The mystery of faith: |
|
|
And the people
continue, acclaiming: |
|
|
A. We proclaim your Death, O Lord, and profess your
Resurrection until you come again. |
|
|
B. When we eat this
Bread and drink this Cup, we proclaim your Death, O Lord, until you come
again. |
|
|
C. Save us, Saviour
of the world, for by your Cross and Resurrection you have set us free. |
|
|
Then the Priest,
with hands extended, says: |
|
|
Therefore, O Lord, as we celebrate the memorial of
the blessed Passion, the Resurrection from the dead, and the glorious
Ascension into heaven of Christ, your Son, our Lord, we, your servants and
your holy people, offer to your glorious majesty from the gifts that you have
given us, this pure victim, this holy victim, this spotless victim, the holy
Bread of eternal life and the Chalice of everlasting salvation. |
|
|
Be pleased to
look upon these offerings with a serene and kindly countenance, and to accept
them, as once you were pleased to accept the gifts of your servant Abel the
just, the sacrifice of Abraham, our father in faith, and the offering of your
high priest Melchizedek, a holy sacrifice, a spotless victim. |
|
|
Bowing, with hands joined, he continues: |
|
|
In humble
prayer we ask you, almighty God: command that these gifts be borne by the
hands of your holy Angel to your altar on high in the sight of your divine
majesty, so that all of us, who through this participation at the altar
receive the most holy Body and Blood of your Son, |
|
|
He stands upright
again and signs himself with the Sign of the Cross, saying: |
|
|
may be filled with every grace and heavenly blessing. |
|
|
He joins his hands. |
|
|
(Through Christ our Lord. Amen.) |
|
|
Commemoration of the Dead With hands
extended, the Priest says: |
|
|
Remember also, Lord, your servants N. et N., who have
gone before us with the sign of faith and rest in the sleep of peace. |
|
|
He joins his hands
and prays briefly for those who have died and for whom he intends to pray.
Then, with hands extended, he continues: |
|
|
Grant them, O Lord, we
pray, and all who sleep in Christ, a place of refreshment, light and peace. |
|
|
He joins his hands. |
|
|
(Through Christ our Lord. Amen.) |
|
|
He strikes his
breast with his right hand, saying: |
|
|
To us, also, your servants, who, though sinners, |
|
|
And, with hands
extended, he continues: |
|
|
hope in your abundant
mercies, graciously grant some share and fellowship with your holy Apostles
and Martyrs: with John the Baptist, Stephen, Matthias, Barnabas, (Ignatius, Alexander, Marcellinus, Peter, Felicity,
Perpetua, Agatha, Lucy, Agnes, Cecilia, Anastasia) and
all your saints: admit us, we beseech you, into their company, not weighing
our merits, but granting us your pardon, |
|
|
He joins his hands. |
|
|
through Christ our Lord. |
|
|
And he continues: |
|
|
Through whom you continue to make all these good things,
O Lord; you sanctify them, fill them with life, bless them, and bestow them
upon us. |
|
|
He takes the
chalice and the paten with the host and raising both, he says: |
|
|
Through him,
and with him, and in him, O God, almighty Father, in the unity of the Holy
Spirit, all glory and honour is yours, for ever and ever. |
|
|
The people
acclaim: |
|
|
Amen. |
Amen. |
|
Then follows the
Communion Rite. |
|
|
|
|
|
During the Easter
Week |
|
|
Therefore,
Lord, we pray: graciously accept this oblation of our service, that of your
whole family, which we make to you also for those to whom you have been
pleased to give the new birth of water and the Holy Spirit, granting them
forgiveness of all their sins: order our days in your peace, and command that
we be delivered from eternal damnation and counted among the flock of those
you have chosen. |
|
|
He joins his hands. |
|
|
(Through Christ
our Lord. Amen.) |


Next: Tilde I-> Indent, Previous: Tilde Underscore-> Conditional Newline, Up: FORMAT Pretty Printer Operations
~<...~:>
If ~:> is used to terminate a ~<...~>, the directive is equivalent to a call to pprint-logical-block. The argument corresponding to the ~<...~:> directive is treated in the same way as the list argument to pprint-logical-block, thereby providing automatic support for non-list arguments and the detection of circularity, sharing, and depth abbreviation. The portion of the control-string nested within the ~<...~:> specifies the :prefix (or :per-line-prefix), :suffix, and body of the pprint-logical-block.
The control-string portion enclosed by ~<...~:> can be divided into segments ~<prefix~;body~;suffix~:> by ~; directives. If the first section is terminated by ~@;, it specifies a per-line prefix rather than a simple prefix. The prefix and suffix cannot contain format directives. An error is signaled if either the prefix or suffix fails to be a constant string or if the enclosed portion is divided into more than three segments.
If the enclosed portion is divided into only two segments, the suffix defaults to the null string. If the enclosed portion consists of only a single segment, both the prefix and the suffix default to the null string. If the colon modifier is used (i.e., ~:<...~:>), the prefix and suffix default to "(" and ")" (respectively) instead of the null string.
The body segment can be any arbitrary format string. This format string is applied to the elements of the list corresponding to the ~<...~:> directive as a whole. Elements are extracted from this list using pprint-pop, thereby providing automatic support for malformed lists, and the detection of circularity, sharing, and length abbreviation. Within the body segment, ~^ acts like pprint-exit-if-list-exhausted.
~<...~:> supports a feature not supported by pprint-logical-block. If ~:@> is used to terminate the directive (i.e., ~<...~:@>), then a fill-style conditional newline is automatically inserted after each group of blanks immediately contained in the body (except for blanks after a ~<Newline> directive). This makes it easy to achieve the equivalent of paragraph filling.
If the at-sign modifier is used with ~<...~:>, the entire remaining argument list is passed to the directive as its argument. All of the remaining arguments are always consumed by ~@<...~:>, even if they are not all used by the format string nested in the directive. Other than the difference in its argument, ~@<...~:> is exactly the same as ~<...~:> except that circularity detection is not applied if ~@<...~:> is encountered at top level in a format string. This ensures that circularity detection is applied only to data lists, not to format argument lists.
" . #n#" is printed if circularity or sharing has to be indicated for its argument as a whole.
To a considerable extent, the basic form of the directive ~<...~> is incompatible with the dynamic control of the arrangement of output by ~W, ~_, ~<...~:>, ~I, and ~:T. As a result, an error is signaled if any of these directives is nested within ~<...~>. Beyond this, an error is also signaled if the ~<...~:;...~> form of ~<...~> is used in the same format string with ~W, ~_, ~<...~:>, ~I, or ~:T.
See also Tilde Less-Than-Sign-> Justification.
Next: Tilde I-> Indent, Previous: Tilde Underscore-> Conditional Newline, Up: FORMAT Pretty Printer Operations


$0 / mo
- 10 users included
- 2 GB of storage
- Email support
- Help center access
More info
$15 / mo
- 20 users included
- 10 GB of storage
- Priority email support
- Help center access
More info
$29 / mo
- 30 users included
- 15 GB of storage
- Phone and email support
- Help center access
More info


| Name: MR.AMIT GOSH | Reg No: 02-1SMHC19 |
|---|---|
| Age / Sex:29/M | Contact No:9739431755 |
| Marital Status:SINGLE | Date:5/1/19 |
| Occupation:SOFTWARE ENGINEER. BE. COMP SC | Dr. PNB |
Address: NATIVE OF JHARKHAND. IN BLORE SINCE 9 YEARS |
DIAGNOSIS- |
DIFF IN DIGESTING MILK AND PRODUCTS SUGARY FOODS. IMM BLOATING FEELING. AVOIDS SUGAR.AFTER 2015 ONLY THIS PROBLEM.
DREAMS OF DAY TO DAY LIFE AND CANT RMEMEBER THEM WELL.
MORE GAS ASSES DOWN AND FEELS BETTER.
MOTION IS LOOSE.
LIKE SWIMMING.
INC AFTER PREV MED. HOMOEO.
ON ELTROXIN 75MG.
RX:
CALC SULPH200 1 DOSE – MNG B/FOOD.
NAT PHOS 6X – 4-4-4-4.
19/1/19: symp have reduced. Less bloated. Tried sugary food was able to have it. But milk not yet able to digest.
Rx:
NAT PHOS 6X – 4-4-4-4.
Rub 15 – 1 tab night b/food.
Pills pl – 4 pils mng.
Sil 6x 4-4-4-4


Up: Defined Values and Handles
Next: C Bindings
Previous: Info Keys
false
random
read_mostly
read_once
reverse_sequential
sequential
true
write_mostly
write_once
Up: Defined Values and Handles
Next: C Bindings
Previous: Info Keys
Return to MPI-2.2 Standard Index
Return to MPI Forum Home Page
(Unofficial) MPI-2.2 of September 4, 2009
HTML Generated on September 10, 2009


This is a website about things I like. You can try searching for fruits or animals or cats or dogs.
Pages: fruits cats dogs search


| Home | Trees | Indices | Help |
|
|---|
|
|
object --+ | VaultLib
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
Inherited from |
|
|||
|
Inherited from |
|
x.__init__(...) initializes x; see help(type(x)) for signature
|
Test if this is vault encrypted data :arg data: a byte str or unicode string to test whether it is recognized as vault encrypted data :returns: True if it is recognized. Otherwise, False. |
Vault encrypt a piece of data. :arg data: a utf-8 byte str or unicode string to encrypt. :returns: a utf-8 encoded byte str of encrypted data. The string contains a header identifying this as vault encrypted data and formatted to newline terminated lines of 80 characters. This is suitable for dumping as is to a vault file. |
Decrypt a piece of vault encrypted data. :arg data: a string to decrypt. Since vault encrypted data is an ascii text format this can be either a byte str or unicode string. :returns: a byte string containing the decrypted data |
Add header and format to 80 columns :arg b_data: the encrypted and hexlified data as a byte string :returns: a byte str that should be dumped into a file. It's formatted to 80 char columns and has the header prepended |
Retrieve information about the Vault and clean the data When data is saved, it has a header prepended and is formatted into 80 character lines. This method extracts the information from the header and then removes the header and the inserted newlines. The string returned is suitable for processing by the Cipher classes. :arg b_data: byte str containing the data from a save file :returns: a byte str suitable for passing to a Cipher class's decrypt() function. |
| Home | Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Fri Jul 29 13:11:38 2016 | http://epydoc.sourceforge.net |


{% extends "layout.html" %} {% set active_page = 'about' %} {% block body %} Create A New Ansible Job Home Dashboard Properties Name Inventory User Name Description Playbook Password Private Key File Become Method Become Username Become Password Fork Launch {% endblock %}


Location
Remeasure tagged tree
Tag
You must select a valid tree.
Please select a tree...
Status
Please select an option...
You must select a status.
Remeasure
Back


The Deep
"The Deep" is the second dimension in this mod. It is a dark ocean floor, with strange creatures and dangerous bosses, such as the Kraken. It can be reached by entering the Atlantis dimension and desending almost to bedrock level while remaining inside of water.
Back


Fall Class List
- English
- World History
- Begininng Studio Arts
- Spanish
- Speech
- Advanced Algebra
- Scientific Investigation
- Film
Winter List
- World History
- English
- Software Development
- Spanish
- Speech
- Advanced Algebra
- Scientifc Investigation
- Sculpture
Spring Class List
- World History
- English
- Elective
- Spanish
- Elective
- Advanced Algebra
- Scientific Investigation
- Elective


Tribute to Narendra Modi
-the prime minister of India.
"India’s reformer-in-chief, from poverty to Prime Minister."
Introduction:
Narendra Damodardas Modi, born 17th September 1950 is an Indian politician who is the 14th and current Prime Minister of India, in office since May 2014. He was the Chief Minister of Gujarat from 2001 to 2014, and is the Member of Parliament for Varanasi. Modi, a member of the Bharatiya Janata Party (BJP), is a Hindu nationalist and member of the right-wing Rashtriya Swayamsevak Sangh (RSS).
Born to a Gujarati family in Vadnagar, Modi helped his father sell tea as a child, and later ran his own stall. He was introduced to the RSS at the age of eight, beginning a long association with the organisation. He left home after graduating from school, partly because of an arranged marriage which he rejected. Modi traveled around India for two years, and visited a number of religious centres. He returned to Gujarat and moved to Ahmedabad in 1969 or 1970. In 1971 he became a full-time worker for the RSS. During the state of emergency imposed across the country in 1975, Modi was forced to go into hiding. The RSS assigned him to the BJP in 1985, and he held several positions within the party hierarchy until 2001, rising to the rank of general secretary.
Modi was appointed chief minister of Gujarat in 2001, due to Keshubhai Patel's failing health and poor public image following the earthquake in Bhuj. Modi was elected to the legislative assembly soon after. His administration has been considered complicit in the 2002 Gujarat riots, or otherwise criticised for its handling of it, although a court found no evidence to prosecute Modi. His policies as chief minister, credited with encouraging economic growth, have received praise,[8] and several industrial projects were begun during his tenure. His administration has been criticised for failing to significantly improve health, poverty, and education indices in the state.
Profile:
Narendra Modi in Rashtriya Bhawan, New Delhi.
On 26th May 2014 Narendra Modi took oath as the Prime Minister of India, becoming the first ever PM to be born after India attained Independence. Dynamic, dedicated and determined, Narendra Modi reflects the aspiration and hope of over a billion Indians.
Through innovative ideas and initiatives, the Government has ensured that the wheels of progress move at rapid pace and the fruits of development reach every citizen. Governance has become open, easier and transparent.
In a first, the Pradhan Mantri Jan Dhan Yojana marked a paradigm shift in ensuring that every citizen is integrated in the financial system of the Nation. His clarion call for ‘Make in India’ complimented by a focus on making business easy has stimulated unprecedented vigour and enterprise among investors and entrepreneurs. Labour reforms and dignity of labour under the ‘Shrameva Jayate’ initiative has empowered several workers of small and medium industries, also providing a boost to our skilled youth.
On 2nd October 2014, Mahatma Gandhi’s Birth Anniversary the PM launched ‘Swachh Bharat Mission’ a mass movement for cleanliness across the Nation. The scale and impact of the movement is historic
Several world leaders including Prime Minister of Australia Tony Abbott, President Xi Jinping of People’s Republic of China, President Maithripala Sirisena of Sri Lanka, President Vladimir Putin of Russia and Chancellor Angela Merkel of Germany have visited India and these visits have achieved breakthroughs in improving cooperation between India and these Nations. The 2015 Republic Day saw President Barack Obama visit India as the Chief Guest, a first in the history of India-USA relations. In August 2015, India hosted the FIPIC Summit, which was attended by top leaders from the Pacific Islands. Key aspects relating to India’s ties with the Pacific Islands were discussed.
Narendra Modi is a ‘People’s Leader’, dedicated solving their problems and improving their well-being. Nothing is more satisfying to him than being amongst the people, sharing their joys and alleviating their sorrows. His powerful ‘personal connect’ with the people on ground is complemented by a strong online presence. He is known as India’s most techno-savvy leader, using the web to reach people and bring about change in their lives. He is very active on social media platforms including Facebook, Twitter, Google+, Instagram, Sound Cloud, Linkedin, Weibo and other forums.
Beyond politics, Narendra Modi enjoys writing. He has authored several books, including poetry. He begins his day with yoga, which centers his body and mind and instills the power of calmness in an otherwise fast-paced routine.
This is the man, an embodiment of courage, compassion and conviction, on whom the nation has bestowed its mandate, trusting that he will rejuvenate India and make it a bright beacon to the world.


{% extends "layout.html" %} {% block content %}
You’re about to use a short (3 min), safe and anonymous health checkup. Your answers will be carefully analyzed and you’ll learn about possible causes of your symptoms.


CHAPTER 209
DISASTER RELIEF AND REHABILITATION
Part I. General Provisions
Section
209-1 Definitions
209-2 State disaster; determination by governor
209-3 Duties of state and county department heads
209-4 Rehabilitation coordinator; authority
209-5 Duties of coordinator
209-6 Relation to other agencies
209-7 Closing of application date; position of coordinator
terminated
209-8 Consideration of other recoveries
209-9 Repealed
209-10 Agricultural water systems; emergency power
Part II. Housing
209-16 Housing relief
209-17 Use of funds in relation to federal projects
Part III. Commercial and Personal Loans
209-26 Administration
209-27 Types of loans; participation
209-28 Purpose of loans
209-29 Eligibility for loans
209-30 Terms
209-31 Security for loans
209-32 Conditions of loans
209-33 Default
209-34 State disaster revolving loan fund
Part IV. Unemployment Compensation
209-41 Disaster unemployment benefits


Resets the Game Object.
This moves the Game Object to the given x/y world coordinates and sets fresh
, exists
, visible
and renderable
to true.
If this Game Object has the LifeSpan component it will also set alive
to true and health
to the given value.
If this Game Object has a Physics Body it will reset the Body.


About
Hey! It's Jasmine. I am currently a senior at Wellesley College pursuing a B.A. in Media Arts and Sciences (interdisciplinary Computer Science, Media Studies, and Studio Art degree) with a concentration in Computer Science and a minor in Economics. I'm a developer interested in data visualization, user experience and human-computer interaction. Social causes I am passionate about include animal welfare and outreach to minorities and children within the tech world, exposing them to the wealth of opportunities that are available. Outside of academics, I love fencing, equestrian, and reading. You can often find me out and about in Boston, on the hunt for the best coffee shops.
This website is in the process of being redesigned, updated, and optimized for mobile interfaces.
Incomplete pages or content will be completed soon.
Thank you for stopping by!
- Jasmine


A patient could die every day in hospital due to overcrowding, advocacy group claims
by By Digital Desk staffOne person could die a day due to overcrowding in Irish hospitals, according to patient advocacy groups.
This morning there were 577 people are waiting on trolleys across the country today, according to the INMO's daily Trolley Watch figures.
The Emergency Department Task Force is meeting to discuss overcrowding in Irish hospitals.
Stephen McMahon of the Irish Patients' Association says an outbreak of flu or a tough winter would be bad news for patients.
"The Emergency Medicine Association have already said that there could be up to a patient dying each day due to overcrowding," he said.
Phil Ní Sheaghdha, INMO General Secretary, says it's getting very difficult for hospital workers to provide safe care.
"Obviously the solution is more beds. If you need more beds, you need more staff," she said reiterating their call for a lift on the hiring embargo.
This sentiment was shared by SIPTU representatives today at the Joint Oireachtas Health Committee.
SIPTU Health Division Organiser, Paul Bell told the committee that the focus from the Department of Health has been entirely on cost reduction.
“This results in departments not receiving approval to recruit identified safe staffing levels and health workers do not have guaranteed access to funding for postgraduate courses which are essential to the service they provide," he said.
This is only exacerbating the crisis in recruitment and retention and potentially putting the lives of patients at risk.


Configuration allows users to tailor the functions of Baleen, its pipelines and their elements to suit specific data and deployments. This is enabled by flexibility in the implementation of annotations and other elements and which reduces the number of highly specific classes in Baleen.
Baleen has two main configuration files:
All configuration in Baleen is Yaml (Yet Another Markup Language) which is human readable, concise and feature rich. A negative aspect of Yaml is that it is whitespace sensitive: tabs should not be used (though Baleen will attempt to recover if tabs are included, with a warning displayed in the logs).
The manner in which configuration is accessed at runtime is dependent on the element being configured.
For global Baleen components configuration is provided through the
configure() function (on BaleenComponent) which offers a
YamlConfiguration object. See
YamlConfiguration
for more details of its use, but it offers helpers to access
configuration values with defaults types and other conveniences. Care
should be taken to provide sensible defaults if values are omitted.
For Uima components (Consumer, CollectionReaders, Annotators, SharedResource etc) configuration is through Uimafit configuration parameter injection. This hides the configuration mechanism from these elements.
The following is an example:
/** * The Mongo host to connect to * * @baleen.config localhost */ public static final String PARAM_HOST = "mongo.host"; @ConfigurationParameter(name = PARAM_HOST, defaultValue="localhost") private String mongoHost; /** * The port to connect to Mongo on * * @baleen.config 27017 */ public static final String PARAM_PORT = "mongo.port"; @ConfigurationParameter(name = PARAM_PORT, defaultValue="27017") private int mongoPort;
With a corresponding configuration:
mongo: host: another.mongoserver.com port: 27016
There are couple of points to note from the above:
/** * [description here] * * @baleen.config [default value here] */ public static final String PARAM_NAME = "[path of the configuration]"; @ConfigurationParameter(name = PARAM_NAME, defaultValue="[default value again]") private int mongoPort;


Npm Run Quiz
Difficulty
Choose
Category
Choose
Amount
Start
Time Left :
15
sec
Quit
Skip
Next
Start Again


{{employee.employeeNameAr}}
{{employee.kacareId}}
{{employee.email}}
{{employee.supervisorNameAr}}
{{employee.departmentAr}}
{{employee.departmentManagerAr}}
{{employee.JobTitleAr}}
{{employee.grade}}
{{employee.hireDate | date}}


Sidhant Bhavnani
Photographer / Designer / Physics Enthusiast / Programmer
About Me
Class Talkies
Photography
NATURE
ABSTRACT
RANDOM


Business Administrator
Level:
3 (equivalent to A levels at grades A to E)
Typical length:
18 months
Current funding band:
Up to £5,000 per apprentice
What apprentices will learn:
- using IT systems to write emails, create proposals and produce spreadsheets
- maintaining records and files
- how to build positive working relationships
- communications skills
- resource planning
- project management techniques
Qualifications:
None specified. Before taking their end-point assessment apprentices must achieve level 2 English and maths (equivalent to GCSE grades 9 to 4 or A* to C)to 4 or A* to C)


Use this dialog to specify the default server name and port for generating URL addresses of Web services, as well as the paths to installation directories of Web service engines that cannot be enabled directly via dedicated facets.


 PLEASE MODIFY THE ORIGINAL SOURCE IN THE 'https://github.com/istio/api' REPO
source_repo: https://github.com/istio/api
title: Analysis Messages
description: Describes the structure of messages generated by Istio analyzers.
location: https://istio.io/docs/reference/config/istio.analysis.v1alpha1.html
layout: protoc-gen-docs
generator: protoc-gen-docs
weight: 20
number_of_entries: 7
---
Describes the structure of messages generated by Istio analyzers.
AnalysisMessageBase
AnalysisMessageBase describes some common information that is needed for all
messages. All information should be static with respect to the error code.
| Field |
Type |
Description |
Required |
type |
Type |
|
No
|
level |
Level |
Represents how severe a message is. Required.
|
No
|
documentationUrl |
string |
A url pointing to the Istio documentation for this specific error type.
Should be of the form
^http(s)?://(preliminary\.)?istio.io/docs/reference/config/analysis/
Required.
|
No
|
AnalysisMessageWeakSchema
AnalysisMessageWeakSchema is the set of information that’s needed to define a
weakly-typed schema. The purpose of this proto is to provide a mechanism for
validating istio/istio/galley/pkg/config/analysis/msg/messages.yaml to make
sure that we don’t allow committing underspecified types.
| Field |
Type |
Description |
Required |
messageBase |
AnalysisMessageBase |
Required
|
No
|
description |
string |
A human readable description of what the error means. Required.
|
No
|
template |
string |
A go-style template string (https://golang.org/pkg/fmt/#hdr-Printing)
defining how to combine the args for a particular message into a log line.
Required.
|
No
|
args |
ArgType[] |
A description of the arguments for a particular message type
|
No
|
GenericAnalysisMessage
GenericAnalysisMessage is an instance of an AnalysisMessage defined by a
schema, whose metaschema is AnalysisMessageWeakSchema. (Names are hard.) Code
should be able to perform validation of arguments as needed by using the
message type information to look at the AnalysisMessageWeakSchema and examine the
list of args at runtime. Developers can also create stronger-typed versions
of GenericAnalysisMessage for well-known and stable message types.
| Field |
Type |
Description |
Required |
messageBase |
AnalysisMessageBase |
Required
|
No
|
args |
Struct |
Any message-type specific arguments that need to get codified. Optional.
|
No
|
resourcePaths |
string[] |
A list of strings specifying the resource identifiers that were the cause
of message generation. A “path” here is a (NAMESPACE/)?RESOURCETYPE/NAME
tuple that uniquely identifies a particular resource. There doesn’t seem to
be a single concept for this, but this is intuitively taken from
https://kubernetes.io/docs/reference/using-api/api-concepts/#standard-api-terminology
At least one is required.
|
No
|
InternalErrorAnalysisMessage
InternalErrorAnalysisMessage is a strongly-typed message representing some
error in Istio code that prevented us from performing analysis at all.
| Field |
Type |
Description |
Required |
messageBase |
AnalysisMessageBase |
Required
|
No
|
detail |
string |
Any detail regarding specifics of the error. Should be human-readable.
|
No
|
AnalysisMessageBase.Type
A unique identifier for the type of message. Name is intended to be
human-readable, code is intended to be machine readable. There should be a
one-to-one mapping between name and code. (i.e. do not re-use names or
codes between message types.)
| Field |
Type |
Description |
Required |
name |
string |
A human-readable name for the message type. e.g. “InternalError”,
“PodMissingProxy”. This should be the same for all messages of the same type.
Required.
|
No
|
code |
string |
A 7 character code matching ^IST[0-9]{4}$ intended to uniquely identify
the message type. (e.g. “IST0001” is mapped to the “InternalError” message
type.) 0000-0100 are reserved. Required.
|
No
|
AnalysisMessageWeakSchema.ArgType
| Field |
Type |
Description |
Required |
name |
string |
Required
|
No
|
goType |
string |
Required. Should be a golang type, used in code generation.
Ideally this will change to a less language-pinned type before this gets
out of alpha, but for compatibility with current istio/istio code it’s
go_type for now.
|
No
|
AnalysisMessageBase.Level
The values here are chosen so that more severe messages get sorted higher,
as well as leaving space in between to add more later
| Name |
Description |
UNKNOWN |
invalid, but included for proto compatibility for 0 values
|
ERROR |
|
WARNING |
|
INFO |
|


Issue 4171:
Expanding an XMLHttpRequest in Console tab before it ends makes JSON tab disappear
Steps to reproduce
- Open Firebug, switch to the Console panel and enable it.
- Click this button
- It generates a new XHR entry in the Console panel
- Expand the entry before the request finishes (you have about 5 sec)
- Only Headers info tab is displayed since the request didn't finish yet
- As soon as the response is received, both Response and JSON tabs
should appear.


Background
Some CS-Script users asked about execution of the classless scripts.
...I know many other scripting languages (JS, python, etc) don't require
class and function declarations, yet still allow them if so desired.
Could your engine do the same?...
There is a big difference between Python/JS
and CS-Script as development systems. CS-Script is entirely based on the
existing language (ECMA C#). In a way CS-Script is an extension of the C# and as
such it follows all C# and CLR patterns and constraints. This approach offers a lot of benefits:
- no need to develop any special C# compiler
- script code is interchangeable (any existing usual C#
code can be taken and executed as a script)
- compiled scripts can be referenced as class libraries (because they are)
by other CLR modules
- developers do not need to remember any syntactical differences
between C# and C# script (because there are none)
- very small footprint due to usage of existing
compilers
- no need to develop any new IDEs (any existing IDE for C# can
be used)
- ......
Of course it is possible for the
script engine to execute classless
(free-style) C# code. Even very
simple text manipulation with the classless C# code (inserting the
code in the empty class declaration) allows to create a standard C#
code and execute it. However it would ultimately require creating and
maintaining specially designed IDE and/or code editors, special compiler message translators etc. With classless
scripts no third-party tools can be used to assists with development. In other words, all benefits listed above would be
diminished.
Having said that, it is impossible to ignore the fact that in some situations it would be desirable to have
very light scripts with working code only and no code infrastructure. Fortunately, this can
be accomplished by extending CS-Script without changing it's core
implementation. And this has already been partially done in the earlier versions with the code.cs script (see Script Library). This script allows execution of the C# code statements from the command-line
without having any script file at all.
The current version of the CS-Script comes with CSSCodeProvider.dll assembly. It is an alternative compiler, which can handle C#, VB, JScript and C# (classless C#) syntax. This compiler makes decision which particular parser to engage at
run time on the base of the script file extension. The extension .ccs will always trigger the usage of the CC# parser.
The CC# parser is a very primitive parser, which analyses the code in order
to detect
if it is written in classless or standard C# syntax. If the
script code is a classless C# it is injected into an empty class declaration and
obtained code is executed, otherwise the script is executed as usual.
Every thing what can be achieved in standard C# can be done with classless C# too. As with standard C# scripts you can import other scripts from you code. The important
thing to remember, when doing this, is that compiler
automatically adds namespace and class to the imported script. Inserted namespace is the imported script file name without extension and the class name is always "Script". Thus if
you import the following script (imp.ccs):
public static void Print(string text)
{
Console.WriteLine(text);
}
t
he compiler will interpret it as following:
using System;
namespace imp
{
public class Script
{
public static void Print(string text)
{
Console.WriteLine(text);
}
}
}
So if you need to import imp.ccs file it would need to be done this way (impTest.ccs):
//css_import imp.ccs;
imp.Script.Print("test");
Note:
- Any .ccs file can import both .cs and .ccs scripts, however .cs can do only another .cs files.
-
Remember the usage of namespaces can help to avoid any naming colisions.
- You can use ccs2cs.cs (Script Library) script to do conversion of any CC# script to the standard C# script.
Limitations
Classless C# syntax implies some
restrictions and limitations. Thus any file which contains classless C# must
consist of the following parts:
- Optional header
contains C# and CS-Script directives (e.g. using System.IO; //css_reference CSScriptLibrary.dll;)
- Body
contains a free standing C# code without any class declarations
- Optional footer
contains additional class declarations and method definitions
Because it is not possible to predict
future changes in the standard C# syntax or even due to the
implementation limitations it is possible that CC# parser may produce
incorrect outcome. For such cases special CC# code markers can be used to insure correct parsing. Such markers are used to indicate the start and the end of the CC# code Body part and they are:
//css_begin;
//css_end;
The usage of these markers can be illustrated with the following code:
using System;
//css_begin;
Print("test");
//css_end;
static void Print(string text)
{
Console.WriteLine(text);
}
Examples
This is an example of the script, which sets a Read-Only attribute to all files from the current directory .
using System.IO;
using System.Windows.Forms;
string msg = "Do you want to make all files in "+Environment.CurrentDirectory+" Read-Only?";
if (DialogResult.Yes == MessageBox.Show(msg, "CS-Script", MessageBoxButtons.YesNo))
foreach (string file in Directory.GetFiles(Environment.CurrentDirectory))
File.SetAttributes(file, FileAttributes.ReadOnly);
This is a different edition of the same script. Now the classless C# code contains method definition.
using System.IO;
using System.Windows.Forms;
string dir = Environment.CurrentDirectory;
string msg = "Do you want to make all files in "+dir+" Read-Only?";
if (DialogResult.Yes == MessageBox.Show(msg, "CS-Script", MessageBoxButtons.YesNo))
SetReadOnly(dir);
static void SetReadOnly(string dir)
{
foreach (string file in Directory.GetFiles(dir))
File.SetAttributes(file, FileAttributes.ReadOnly);
}
This
is an example of the script (the simplest possible), which prints the names of all .exe files
from the current directory. This script does not have any using directives at all (using System; is always assumed for all classless scripts).
foreach (string file in System.IO.Directory.GetFiles(Environment.CurrentDirectory, "*.exe"))
Console.WriteLine(file);
This
is another version of the script above, which illustrates the usage of classes in the classless scripts.
new Executables().Print();
class Executables
{
public void Print()
{
foreach (string file in System.IO.Directory.GetFiles(Environment.CurrentDirectory, "*.exe" ))
Console.WriteLine(file);
}
}
See Also
Alternative
compilers |
Script Library |
Importing scripts


Speech
The Parliamentary Under-Secretary of State for Schools talks about Church of England schools and the benefits academy status can offer to faith schools.
I am delighted to be here this morning and particularly pleased to have the chance to thank you all - and the National Society generally - for the wonderful contribution you make to education in this country.
Now I am sure that ministers of all parties come along and start their speeches like that, but for what it is worth, I say it as someone who likes choice and variety; is drawn to a patchwork quilt of provision rather than some neat and tidy - and soulless - uniformity, and; is instinctively mistrustful of the state.
All of which makes me a natural fan of Church of England schools, even before citing any evidence that Church of England schools get excellent results and are extremely popular with parents.
And yet - somewhat to my surprise - I find myself having to stick up for faith schools. It is something I am very happy to do, but it is perhaps indicative of how secularist parts of society have become.
It is also all the more extraordinary when one reflects on what the National Society has done for children in this country since its foundation in 1811.
It is astonishing to think that, in the forty years to 1851, the Church of England established 17,000 schools in parishes up and down the land. Free Schools, eat your heart out.
Decades before the state stepped in, in 1870, it was the Church that taught the poor and needy to read and write - spreading knowledge and enlightenment where before there had been ignorance.
I know it is the same moral purpose which drives you today.
Like us, you worry about the gap in achievement between rich and poor, and are anxious to extend opportunity to those in poorest areas.
And I am sure that it was because of that great moral purpose - and in keeping with your historic mission - that the Church of England was among the first to recognise the importance, and potential, of the Academies programme and, of course, became one of the first sponsors.
Now, academies are a subject close to my heart. On my second day in the House of Lords, I had to introduce the Academies Bill and, for two rather crazy months, I did little else but think and, I’m sad to say, dream about the Bill.
Some people accused us of rushing it through, of reaching for the legislative lever too quickly - but my view was, and is, that it was vital to give schools the chance to have these freedoms on behalf of their children as soon as possible.
Children only get one crack at education and we have to give them the best possible chance to succeed. So, yes, the Secretary of State and I were impatient to get on with doing so.
But that brings me to an extremely important point about our overall approach. It is permissive, not coercive. Some schools might not want, ever, to go down the academy route. They might feel that their relationship with their local authority is so good that they don’t want to lose it. Or that greater freedom and control over their budgets, staffing and the curriculum aren’t going to help them give children the best possible chance to succeed.
If that is the case, we fully respect that. We are not seeking to impose a one-size-fits-all solution on every school. If you believe in freedom, I think you should allow people to exercise it - or not - as they think fit.
So we are also introducing greater freedom for all schools. That is why we’ve abolished the self-evaluation form, reduced the data collection burden and told Ofsted to slim down its inspection criteria. We will also be slimming down the National Curriculum, making governance simpler and financial management less onerous. All of these steps will give schools more freedom to concentrate on their core responsibilities - teaching and learning.
Our schools white paper, to be published later this month, will set out a comprehensive reform programme for this Parliament to raise the bar for every school, close the gap between rich and poor, and ensure our education system can match the best in the world.
When you look at the statistics you can see how urgent the need for reform is.
In the last ten years we have fallen behind other countries in the international league tables of school performance - falling from fourth in the world for science to fourteenth, seventh in the world for literacy to seventeenth and eighth in the world for maths to twenty-fourth.
And at the same time, studies such as those undertaken by UNICEF and the OECD underline that we have one of the most unequal educational systems in the world, coming near bottom out of 57 for educational equity with one of the biggest gulfs between independent and state schools of any developed nation.
The huge numbers of talented young people who still do not achieve as they should means we need to change.
And so too does the fact that other nations have been forging ahead much faster and further when it comes to improving their education systems.
Across the globe, other nations - including those with the best-performing and fastest-reforming education systems - are granting more autonomy for individual schools.
In America, President Obama is encouraging the creation of more charter schools - the equivalent of our Free Schools and academies.
In Canada, specifically in Alberta, schools have been given more control over budgets and power to shape their own ethos and environment. Alberta now has the best-performing state schools of any English-speaking region.
In Sweden, the system has opened up to allow new schools to be set up by a range of providers. Results have improved, with the biggest gains of all where schools have the greatest freedoms and parents the widest choice.
And in Singapore, often cited as an exemplar of centralism, dramatic leaps in attainment have been secured by schools where principals are exercising a progressively greater degree of operational autonomy.
These governments have deliberately encouraged greater diversity in the schools system and, as the scope for innovation has grown, so too has their competitive advantage over other nations.
The good news in England is that there are already some great success stories here to draw on. In the five or so years after 1988, the last Conservative Government created 15 city technology colleges. They are all-ability comprehensives, overwhelmingly located in poorer areas, but they enjoy much greater independence than other schools.
They have also been a huge success. The proportion of pupils eligible for free school meals in CTCs who achieve five or more good GCSEs A* to C is more than twice as high as for all maintained mainstream schools.
These results were replicated by the group of schools that were turned into academies under the last Government.
I am delighted that so many parents and school leaders have seen how academies can improve performance, with academies securing improvements at GCSE level twice as fast as other schools and the best academy chains doing much, much better than that.
Back in 2005, the white paper promised that all schools would, in time, be able to enjoy academy freedoms - but sadly these freedoms were curtailed. A ceiling of 400 academies was placed on the programme and primaries were refused entry.
The Academies Act removed both of these barriers to the rapid expansion of the programme by giving all schools, including special schools, the chance to take on academy status - starting with those rated outstanding by Ofsted.
Since the start of this school year, 144 academies have opened - more than one for every working day of the term. A further 70 are due to open in the coming months.
Just under half of these replaced failing schools, and we will continue to challenge schools that are struggling; either they improve fast or they will have their management replaced by an academy sponsor, or an outstanding school, with a proven track record.
That is why the Secretary of State wrote to local authorities earlier this month confirming that we want to work with them to consider whether there are schools in their areas where attainment and pupil progression are both low and where they lack the capacity to improve themselves. And we have also actively encouraged sponsors to work directly with local authorities to do so too.
All of the schools that have converted now have the freedom to shape their own curriculum; they are at liberty to insist on tougher discipline, pay staff more, extend school hours, and develop a personal approach to every pupil.
Crucially, all of the outstanding schools that have already converted have also said that they will use their new-found powers and freedom to support weaker schools. For instance, Seaton Academy in Cumbria is looking to employ more specialist staff to support students with additional needs. St Buryan Primary Academy in Cornwall is reducing class sizes by taking on an extra teacher. Urmston Grammar School in Manchester is looking forward to bringing back after-school services now that it has control over its own budget.
We also have schools coming to us talking about forming clusters - clusters of primaries, or primaries and secondaries, working together to raise standards and share costs. That is why I believe the result of the Academies Act will be autonomy within a culture of collaboration, where the bonds between schools are strengthened and there is a further step-change in system-led leadership.
It seems to me that this combination of autonomy and partnership is a very strong one, and one that is likely to appeal to the Church of England. I know that one of your concerns early on was that the Government was somehow turning its back on the moral purpose of the Academies programme and that the converting academies might become islands within the broader educational framework.
In fact, what is happening is rather different.
In the coming days, in the next stage of the expansion of the Academies programme, we will also explain how the next wave of schools - those that are good with outstanding features - will be able to apply for academy freedoms.
I particularly look forward to welcoming more Church of England schools into academy status. And I’d like to say how grateful I am for the Church’s support in encouraging more of their schools to follow suit.
At the moment, some 320 Church of England schools have registered an interest in becoming an academy, and 24 of these have so far submitted a formal application to convert.
As we’ve worked through the conversion process with the first wave of converters, a number of practical issues have come to light - for instance, around pension or land ownership. For church schools in particular, land ownership is often complicated and there have been questions about what role the diocese will have once schools have converted to academy status.
I completely understand these concerns and I think that the National Society has been absolutely right to want clarity. Politicians and governments come and go. The Church has been around a lot longer than any government and you are right to be sceptical about government promises. I am sceptical about government promises too. But I hope I have been clear from the outset that my intention is simply to maintain the status quo in terms of the relationship between the Church of England and the state. And I do sympathise with the National Society’s desire to get that understanding down in black and white and close any loopholes.
So I am very pleased that we now have an agreed set of model documentation for single academy trusts, and a model funding agreement.
We have also agreed a supplemental agreement, to be signed by the Secretary of State, which will set out the Department’s underpinning relationship with the Diocese.
I know that some of you have faced delays while the drafting has been going on, for which I apologise, but I believe we now have a solid foundation on which Church of England schools can move forward to academy status.
Although I have been keen to press ahead, it is important to get things right - and that I think is what we have now done.
The Church has always played an important part in providing choice and quality in this country’s education system.
You’ve always worked hard, often behind the scenes, collaborating with other education partners and sponsors to drive improvements.
I very much look forward to continuing and building on our relationship with the Church and taking our collaborative partnership to the next level - because we need your energy, commitment and experience to be at the fore of school improvement if we are to achieve that shared moral purpose.
Thank you very much.
Published: 3 August 2012


@() @main("PA browser index") {
Let us help you find and publish stats within our rather extensive Press Association football API.
Not sure where to start? Take a look at our generic API browser or perhaps see what you can do with teams or players.


Recipe 11.11. Supporting Multiple Values per Row in a Tkinter ListboxCredit: Brent Burley, Pedro Werneck, Eric Rose ProblemYou need a Tkinter widget that works just like a normal Listbox but with multiple values per row. SolutionWhen you find a functional limitation in Tkinter, most often the best solution is to build your own widget as a Python class, subclassing an appropriate existing Tkinter widget (often Frame, so you can easily aggregate several native Tkinter widgets into your own compound widget) and extending and tweaking the widget's functionality as necessary. Rather than solving a problem for just one application, this approach gives you a component that you can reuse in many applications. For example, here's a way to make a multicolumn equivalent of a Tkinter Listbox: from Tkinter import * class MultiListbox(Frame): def _ _init_ _(self, master, lists): Frame._ _init_ _(self, master) self.lists = [ ] for l, w in lists: frame = Frame(self) frame.pack(side=LEFT, expand=YES, fill=BOTH) Label(frame, text=l, borderwidth=1, relief=RAISED).pack(fill=X) lb = Listbox(frame, width=w, borderwidth=0, selectborderwidth=0, relief=FLAT, exportselection=FALSE) lb.pack(expand=YES, fill=BOTH) self.lists.append(lb) lb.bind('<B1-Motion>', lambda e, s=self: s._select(e.y)) lb.bind('<Button-1>', lambda e, s=self: s._select(e.y)) lb.bind('<Leave>', lambda e: 'break') lb.bind('<B2-Motion>', lambda e, s=self: s._b2motion(e.x, e.y)) lb.bind('<Button-2>', lambda e, s=self: s._button2(e.x, e.y)) frame = Frame(self) frame.pack(side=LEFT, fill=Y) Label(frame, borderwidth=1, relief=RAISED).pack(fill=X) sb = Scrollbar(frame, orient=VERTICAL, command=self._scroll) sb.pack(expand=YES, fill=Y) self.lists[0]['yscrollcommand'] = sb.set def _select(self, y): row = self.lists[0].nearest(y) self.selection_clear(0, END) self.selection_set(row) return 'break' def _button2(self, x, y): for l in self.lists: l.scan_mark(x, y) return 'break' def _b2motion(self, x, y): for l in self.lists l.scan_dragto(x, y) return 'break' def _scroll(self, *args): for l in self.lists: apply(l.yview, args) return 'break' def curselection(self): return self.lists[0].curselection( ) def delete(self, first, last=None): for l in self.lists: l.delete(first, last) def get(self, first, last=None): result = [ ] for l in self.lists: result.append(l.get(first,last)) if last: return apply(map, [None] + result) return result def index(self, index): self.lists[0].index(index) def insert(self, index, *elements): for e in elements: i = 0 for l in self.lists: l.insert(index, e[i]) i = i + 1 def size(self): return self.lists[0].size( ) def see(self, index): for l in self.lists: l.see(index) def selection_anchor(self, index): for l in self.lists: l.selection_anchor(index) def selection_clear(self, first, last=None): for l in self.lists: l.selection_clear(first, last) def selection_includes(self, index): return self.lists[0].selection_includes(index) def selection_set(self, first, last=None): for l in self.lists: l.selection_set(first, last) if _ _name_ _ == '_ _main_ _': tk = Tk( ) Label(tk, text='MultiListbox').pack( ) mlb = MultiListbox(tk, (('Subject', 40), ('Sender', 20), ('Date', 10))) for i in range(1000): mlb.insert(END, ('Important Message: %d' % i, 'John Doe', '10/10/%04d' % (1900+i))) mlb.pack(expand=YES, fill=BOTH) tk.mainloop( ) DiscussionThis recipe shows a compound widget that gangs multiple Tk Listbox widgets to a single scrollbar to achieve a simple multicolumn scrolled listbox. Most of the Listbox API is mirrored, to make the widget act like normal Listbox, but with multiple values per row. The resulting widget is lightweight, fast, and easy to use. The main drawback is that only text is supported, which is a fundamental limitation of the underlying Listbox widget. In this recipe's implementation, only single selection is allowed, but the same idea could be extended to multiple selection. User-resizable columns and auto-sorting by clicking on the column label should also be possible. Auto-scrolling while dragging Button-1 was disabled because it broke the synchronization between the lists. However, scrolling with Button-2 works fine. Mice with scroll wheels appear to behave in different ways depending on the platform. For example, while things appear to work fine with the preceding code on some platforms (such as Windows/XP), on other platforms using X11 (such as Linux), I've observed that mouse scroll wheel events correspond to Button-4 and Button-5, so you could deal with them just by adding at the end of the for loop in method _ _init_ _ the following two statements: lb.bind('<Button-4>', lambda e, s=self: s._scroll(SCROLL, -1, UNITS)) lb.bind('<Button-5>', lambda e, s=self: s._scroll(SCROLL, +1, UNITS)) This addition should be innocuous on platforms such as Windows/XP. You should check this issue on all platforms on which you need to support mouse scroll wheels. If you need to support sorting by column-header clicking, you can obtain the hook needed for that functionality with a fairly modest change to this recipe's code. Specifically, within the for loop in method _ _init_ _, you can change the current start: for l, w in lists: frame = Frame(self) frame.pack(side=LEFT, expand=YES, fill=BOTH) Label(frame, text=l, borderwidth=1, relief=RAISED).pack(fill=X) to the following richer code: for l, w, sort_command in lists: frame = Frame(self) frame.pack(side=LEFT, expand=YES, fill=BOTH) Button(frame, text=l, borderwidth=1, relief=RAISED, command=sort_command).pack(fill=X) To take advantage of this hook, you then need to pass as the lists' argument, rather than one tuple of pairs, a list of three tuples, the third item of each tuple being an object callable with no arguments to perform the appropriate kind of sorting. In my applications, I've generally found this specific refinement to be more trouble than it's worth, but I'm presenting it anyway (although not in the actual "Solution" of this recipe!) just in case your applications differ in this respect. Maybe sorting by column header clicking is something that's absolutely invaluable to you. One note about the implementation: in the MultiListbox._ _init_ _ method, several lambda forms are used as the callable second arguments (callbacks) of the bind method calls on the contained Listbox widgets. This approach is traditional, but if you share the widespread dislike for lambda, you should know that lambda is never truly necessary. In this case, the easiest way to avoid the lambdas is to redefine all the relevant methods (_select, _button2, etc.) as taking two formal arguments (self, e) and extract the data they need from argument e. Then in the bind calls, you can simply pass the bound self._select method, and so on. See AlsoInformation about Tkinter can be obtained from a variety of sources, such as Pythonware's An Introduction to Tkinter, by Fredrik Lundh (http://www.pythonware.com/library), New Mexico Tech's Tkinter Reference (http://www.nmt.edu/tcc/help/lang/python/docs.html), Python in a Nutshell, and various other books. |


|| Om ||
D. A. V. PUBLIC SCHOOL
(10+2 Affiliated with C.B.S.E., New Delhi)
Sec-II, T.H.A. Rajinder Nagar, Sahibabad, Ghaziabad (U.P.) - 201005
Education for Eternity


https://github.com/j-0-t/staekka
Stækka Metasploit - Extenting Metasploit
This Msf plugin extends Metasploit for some missing features and modules allowing interaction with other/custom exploits/ways of getting shell access. The current focus here is Linux/Unix support.
Core features
TTY support: starting a shell from Metasploit allowing interaction with TTY support and session migration into Metasploit. This allows custom ways of gaining a shell (private non-metasploit exploits) and to use this shell as Metasploit session for executing post exploitation modules. There is also another SSH module for using a TTY shell while interacting with the session.
Performance hacks: For improving performance caching has been added allowing to cache command output of often used commands (like uname) or files. For searching files it is possible to run "find" once and to store the results. This can be re-used for many search requests (find all files with *shadow*, find all suid files, ...etc). For recursive downloads tar can be used which speeds up downloads.
Installing
Setting environment and loading it for further usage (can be any shell profile/startup)
export STAEKKA_PATH=$HOME/.staekka/
echo 'export STAEKKA_PATH=$HOME/.staekka/' >>$HOME/.profile
Copy it into installation directory
cp -r staekka $STAEKKA_PATH
Copy Metasploit plugins
mkdir -p $HOME/.msf4/plugins/
cp $STAEKKA_PATH/plugins/staekka.rb $HOME/.msf4/plugins/
cp $STAEKKA_PATH/plugins/info_path.rb $HOME/.msf4/plugins/
Installation of dependencies (gem installation without root required)
gem install --user bindata
gem install --user minitar
gem install --user ruby-termios
Or installation of dependencies via bundler
cd $STAEKKA_PATH
bundle install
Usage
$ export STAEKKA_PATH=$HOME/.staekka/
$ cd ../metasploit-framework/
$ ./msfconsole
msf > load staekka
msf > use auxiliary/shell/interactive
msf auxiliary(interactive) > info
Modules
New sessions:
auxiliary/shell/interactive This module executes a command (shell) you can interact with. You can add this shell session to mfs sessions
auxiliary/shell/ssh_session Login using SSH with TTY support
auxiliary/shell/offline_audit This module allows to perform tests/audits with pre-collected data
Post exploitation - Linux/Unix:
post/unix/general/secure_delete Overwriting and deleting files and directories (anti-forensic)
post/unix/general/updatedb Creating an updatedb for faster file searches and perform searches
post/unix/general/download Downloading files faster transfering them via HTTP(s)
post/unix/general/upload Uploading files faster transfering them via HTTP(s)
post/unix/general/shell2ssh Starting a new ssh server using a custom config and start an extra SSH session
Post exploitation - Analyse
post/unix/gather/download_interessting Download interesting files based on a file list and regex
post/unix/gather/enum_history Download and analyse history files
post/unix/gather/enum_logfiles Download and analyse log files
Post exploitation - Logs
post/unix/general/logs/dump_lastlog Dump lastlog log files as text
post/unix/general/logs/dump_utmp Dump utmp log files as text
post/unix/general/logs/clear_lastlog Clear lastlog logfiles
post/unix/general/logs/clear_utmp Clear utmp log files
post/unix/general/logs/clear_syslog Clear syslog like (text) log files
Post exploitation - Analyse Linux
post/linux/gather/protection/kernel Check for kernel extra hardenings
post/linux/gather/protection/binaries Check for kernel extra hardenings
Name: stækka
Stækka: Icelandic word for (enlarge/expand/grow). This plugin extends Metasploit for some features.
Bugs
Ruby/Readline
Sometimes msfconsole shows "\r" Fix: Use the system Readline library instead of RbReadline
msfconsole -L


|
VectorLib
1.0
Library for making and manipulating 2D, 3D, and 4D matrices and vectors.
|
Class to represent a 4-dimensional matrix. More...
#include <matrix4.h>
Public Member Functions | |
| Matrix4 () | |
| Creates a new identity Matrix4. More... | |
| Matrix4 (const Matrix2 ©) | |
| Inserts the specified Matrix2 into the top-left corner of an 4x4 identity matrix. More... | |
| Matrix4 (const Matrix3 ©) | |
| Inserts the specified Matrix3 into the top-left corner of an 4x4 identity matrix. More... | |
| Matrix4 (const Matrix4 ©) | |
| Constructs a copy of the specified matrix. More... | |
| Matrix4 (Vector4 a, Vector4 b, Vector4 c, Vector4 d) | |
| Creates a Matrix4 from the specified row vectors, from top to bottom. More... | |
| Matrix4 & | operator= (const Matrix4 &other) |
| Sets the matrix to equal the specified matrix. More... | |
| Matrix4 | operator* (const Matrix4 &other) const |
| Performs a matrix multiplication with another Matrix4. More... | |
| Matrix4 | operator* (const float &other) const |
| Performs a matrix multiplication with a scalar. More... | |
| Vector4 | operator* (const Vector4 &other) const |
| Performs a matrix multiplication with a Vector4. More... | |
| Matrix4 | operator/ (const float &other) const |
| Performs a matrix division with a scalar. More... | |
| Vector4 & | operator*= (Vector4 &other) const |
| Multiplies this matrix with a vector and returns the result. More... | |
| float & | operator() (int i) |
| Returns the (non-const) value at the n:th position in the matrix, from top-left to bottom-right. More... | |
| float & | operator() (int x, int y) |
| Returns the (non-const) value at matrix position x, y. More... | |
| float | at (int n) const |
| Returns the (const) value at the n:th matrix index, from top-left to bottom-right. More... | |
| float | at (int x, int y) const |
| Returns the (const) value at the matrix position x, y. More... | |
| Vector4 | row (int y) const |
| Returns the row at specified y-position as a 4D-vector. More... | |
| Vector4 | col (int x) const |
| Returns the column at specified x-position as a 4D-vector. More... | |
| void | clear (bool identity=true) |
| Clears the matrix, optionally creating an identity matrix. More... | |
| Matrix3 | minor (int x, int y) const |
| Returns the minor matrix of the specified cell, excluding its row and column. More... | |
| float | determinant () const |
| Returns the matrix determinant. More... | |
| Matrix4 | transpose () const |
| Returns a transposed copy of the matrix (shifted along the diagonal). More... | |
| Matrix4 | inverse () const |
| Returns the inverse of the matrix, or an identity if none exists. More... | |
| std::string | to_string () |
| Returns a formatted multi-line string representation of the matrix. More... | |
Static Public Member Functions | |
| static Matrix4 | getTranslation (const Vector4 &v) |
| Constructs a translation matrix from the specified 4D-vector. More... | |
| static Matrix4 | getRotationX (const float &rad) |
| Returns a rotation matrix for a specified rotation around the x-axis. More... | |
| static Matrix4 | getRotationY (const float &rad) |
| Returns a rotation matrix for a specified rotation around the y-axis. More... | |
| static Matrix4 | getRotationZ (const float &rad) |
| Returns a rotation matrix for a specified rotation around the x-axis. More... | |
| static Matrix4 | getRotationXYZ (const float &rad, const Vector3 axis) |
| Returns a rotation matrix for a specified rotation around the x-axis. More... | |
Public Attributes | |
| friend | Vector4 |
Class to represent a 4-dimensional matrix.
|
inline |
Creates a new identity Matrix4.
|
inline |
Inserts the specified Matrix2 into the top-left corner of an 4x4 identity matrix.
| copy | The matrix of which to create a copy |
|
inline |
Inserts the specified Matrix3 into the top-left corner of an 4x4 identity matrix.
| copy | The matrix of which to create a copy |
|
inline |
Constructs a copy of the specified matrix.
| copy | The matrix of which to create a copy |
Creates a Matrix4 from the specified row vectors, from top to bottom.
| a | First row |
| b | Second row |
| c | Third row |
| d | Fourth row |
|
inline |
Returns the (const) value at the n:th matrix index, from top-left to bottom-right.
| n | The matrix index to access |
|
inline |
Returns the (const) value at the matrix position x, y.
| x | Matrix x-position, column |
| y | Matrix y-poisition, row |
|
inline |
Clears the matrix, optionally creating an identity matrix.
| identity | Whether to create an empty matrix, or an identity matrix |
|
inline |
Returns the column at specified x-position as a 4D-vector.
| x | The column index to return |
|
inline |
Returns the matrix determinant.
|
inlinestatic |
Returns a rotation matrix for a specified rotation around the x-axis.
| rad | The rotation in radians |
|
inlinestatic |
Returns a rotation matrix for a specified rotation around the x-axis.
| rad | The rotation in radians |
| axis | The axis for rotation |
|
inlinestatic |
Returns a rotation matrix for a specified rotation around the y-axis.
| rad | The rotation in radians |
|
inlinestatic |
Returns a rotation matrix for a specified rotation around the x-axis.
| rad | The rotation in radians |
Constructs a translation matrix from the specified 4D-vector.
| v | The vector to use for translation |
|
inline |
Returns the inverse of the matrix, or an identity if none exists.
|
inline |
Returns the minor matrix of the specified cell, excluding its row and column.
| x | The x-coordinate of the cell |
| y | The y-coordinate of the cell |
|
inline |
Returns the (non-const) value at the n:th position in the matrix, from top-left to bottom-right.
| n | The matrix index to query |
|
inline |
Returns the (non-const) value at matrix position x, y.
| x | Matrix x-position, column |
| y | Matrix y-poisition, row |
|
inline |
Performs a matrix multiplication with a scalar.
| other | The right-hand side of the operation |
Multiplies this matrix with a vector and returns the result.
| other |
|
inline |
Performs a matrix division with a scalar.
| other | The right-hand side of the operation |
Sets the matrix to equal the specified matrix.
| other | The matrix which values are to be copied |
|
inline |
Returns the row at specified y-position as a 4D-vector.
| y | The row index to return |
|
inline |
Returns a formatted multi-line string representation of the matrix.
|
inline |
Returns a transposed copy of the matrix (shifted along the diagonal).


Create doxygen documentation for source code in R packages. Includes a RStudio Addin, that allows to trigger the doxygenize process.
| Version: | 1.0.0 |
| Depends: | R (≥ 3.3.3) |
| Imports: | devtools (≥ 1.12.0) |
| Suggests: | testthat |
| Published: | 2017-05-25 |
| Author: | Clemens Schmid [cre, cph, aut] |
| Maintainer: | Clemens Schmid <clemens at nevrome.de> |
| BugReports: | https://github.com/nevrome/rdoxygen/issues |
| License: | GPL-2 | file LICENSE |
| URL: | https://github.com/nevrome/rdoxygen |
| NeedsCompilation: | yes |
| SystemRequirements: | doxygen |
| Materials: | README |
| CRAN checks: | rdoxygen results |
| Reference manual: | rdoxygen.pdf |
| Package source: | rdoxygen_1.0.0.tar.gz |
| Windows binaries: | r-devel: rdoxygen_1.0.0.zip, r-release: rdoxygen_1.0.0.zip, r-oldrel: rdoxygen_1.0.0.zip |
| OS X binaries: | r-release: rdoxygen_1.0.0.tgz, r-oldrel: rdoxygen_1.0.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=rdoxygen to link to this page.


Current Call
Ongoing
Add New
Active
Inactive
Active
Inactive
1
2
ABC
3
DEF
4
GHI
5
JKL
6
MNO
7
PQRS
8
TUV
9
WXYZ
*
0
#
Place Call
Calling...
Customer Name
Number: +1<PHONE_NUMBER>
City, Country
+1<PHONE_NUMBER>
Cancel
Incoming Call...
Customer Name
Number: +1<PHONE_NUMBER>
City, Country
+1<PHONE_NUMBER>
Cancel
Accept
Call Active
Customer Name
00:00
Transfer
Hold
Mute
Pause
End Call
Transfer
Select Quick Connect
Customer Name
00:00
Transfer
Hold
Mute
Pause
Transfer Call
Call Ended
Customer Name
00:00
Enter Queue
Me


Home
Map Explorer
Regional Variance
Happiness Indicators
Happiness Indicators by Region
Feature Trend
Happiness Interactions
Countrywise Comparisons


Google Photos for Android rolling out sorting in Albums tab
by Abner LiOver the past several weeks, Google Photos has gained a story-esque Memories format, more print products, and the ability to control Smart Displays. The latest feature is minor, but you can now sort the Albums tab in Google Photos for Android.
The Albums tab in Google Photos has historically arranged collections in reverse chronological order. Underneath carousels for smart grouping and “Photos on device,” there is a two-wide grid of albums represented by a cover photo, name, and count of how many items are stored.
A server-side update for some users has added the ability to sort how albums are arranged. The default method is “Most recent photo,” but you can now group by “Last modified” or “Album title.” Your selection is noted in blue alongside an accompanying icon.
This is a rather basic feature for Google Photos to finally gain, but quite a useful one given that the Albums feed can be quite long and tedious to browse. In the past, people might have turned to search, but this improves the experience of just scrolling.
Google Photos album sort is appearing for me on several devices running version 4.28 and 4.29. It does not appear to be widely rolled out today. Meanwhile, this capability is not yet available on the iOS app or the web.
More about Google Photos:
- Pixel 4 can ‘Export frames’ from recorded video with new Google Photos editor UI
- Google Photos gets a new ‘crop document’ extension
- This is Google Photos’s black-and-white ‘Colorize’ filter in action [Gallery]
- Google Photos testing combined menu and info sheet
FTC: We use income earning auto affiliate links. More.


Common Formats Paste Format
version 0.35
Github (This plugin is included in Clipjump download)
Introduction
'Common Formats' is a pformat plugin that lets you paste the clip with various inbuilt paste formattings. The 'pformat.commonformats.ahk' file can be edited to include more
formats.
Using
Once you have selected the common format paste-format, releasing Ctrl to paste will bring up the GUI. Use Up/Down keys or mouse to select
your needed format and press 'Enter' or OK button to paste.
You can press 'Esc' or simply close the GUI to cancel the paste operation.
Selecting the paste-format 'None' will paste the original clip without making any changes.
The Apply button (Alt+A) applies the current changes made the the formatting to the clip to be pasted. Thus it helps you in applying multiple formats to a clip in
the needed order. Note that the 'None' paste format will still paste the real original clip and the 'apply' won't be undertaken.
Input Field is used by formats that have parameters in addition to the input text. RegExReplace for example uses input field to get the other 2 parameters,
the match needle and the replacement text AND the users are supposed to enter them line by line.
Porting an existing pformat to under Common Formats
To make any independent pformat a part of the common format, you can simply copy its code to the pformat.commonformats.ahk file.
Then replace the main function name plugin_pformat_name(
by plugin_pformat_commonformats_name(
where 'name' is the name of that independent
pformat.
OR you can create a new format under the 'Common Formats' plugin. It should be easy provided you know AutoHotkey. Just make sure
you name the new format function as plugin_pformat_commonformats_MYNAME
where 'MYNAME' is the unique name of your format and this is what that will
appear in the GUI. (Related: pformat)
Info Data for the format shown in the respective field is nothing but data stored in STORE
object as STORE["commonformats_" formatName]
where formatName is the name of the format such as 'RegexReplace'.


CrimPapers
Articles published on 3 April 2020
On 3 April 2020, 2 new articles were published in 2 journals.
Protecting the Continuing Duties of Loyalty and Confidentiality in Ineffective Assistance of Counsel Claims by Lawrence J. Fox, Darcy Covert, Megan Mumford
Adolescent Porn Viewing and Religious Context: Is the Eye Still the Light of the Body? by Fanhao Nie


|
Jabberwocky
JACK n a SPLASH
Jackpot
Jade
JADE RUNNER
Jagwagon
Jalapeno
Jamaica-Me-Crazy
Jane's Joy
Javin
Jaw breaker
Jaws
Jazzy Desire
Jazzy II
Jenny
Jenny-B
Jersey Devil
Jersey Trooper5
Jet Lag
Jet Sea
Jetstream
Jewel
Jewels
Jilly B
Jim Bag
JIM N`I
Jimbo's Dream
JIMCAT
JOANI BELLE
Joanna
|
Job Site
Jobu
Joint Venture
JOINT VENTURE
Joker's Joy
Joker's Wild
Jolly Dodger
Jolly Island
Jolly Mon
Jolly Montam
Jolly Roger
Jomac
JO-MARIE
Jonah
Jored, White, And Blue
Joyride
Joy-Sea
Jubilado
Jubilee
Juice Wagon
JUKANU
Jumping Tuna
Jurassic Ark|
Jus'Cruzn
Jus T Nuf
Jus'phitz
JUST - TWO - BUCKS
Just 2 Much 4 U
Just 4 Fun |
Just 4 Play
Just About Perfect
Just Add Water
Just Another B$LL
Just Boatin
JUST CHILLIN'
Just Do It
Just flukin' Around
Just For Play
Just for the Hull of It
Just Good Friends
Just Hafta
Just Kidding!
Just Kid'n
Just Lookin'
Just One More
Just Relax
Just Right
just rollen
Just the shot
Just Us
Just-4-kix
Justa-Float-Inn
Just-A-Nutter Payment
Justavacotion
Justified Expense
Justified!
Just-N-Step
Return to Top
|


This page contains links to number of tutorials.
Please provide any feedback on this discourse forum post. There are also a number of tutorials in Spanish on Vimeo


Form
Name
Your Date of Birth
Month
January
February
March
April
May
June
July
August
September
October
November
December
Days
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Year
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
Blood Group
Gender
Male
Female
Other
Countries Visited:
Yes
No
Tell me about yourself
Submit


Looks like you pressed the Cancel Button
Your Payment is Cancelled
Click on the Button Below to Try Again


Few days ago I shared in the previous post that I was making a small bet on Cindicator’s indicator about Stellar coin. It gave a 78% probability that XLM/BTC would trade above 0.000051 before February 20.
And it was wrong.
While the whole market is starting to recover, Bitcoin is taking the rising lead from the bad crash to $6000 to around $11000. This resulted in a drop of the majority of altcoins in term of BTC value, including XLM.
Bad thing is, obviously, I ‘lose money’ because it doesn’t play out as planned. But it’s OK as I’m more than well-prepared for this to happen and this is just a little fun experiment for me. I felt worse in losing 24 points in the application as I took part in the XLM prediction as well.
As you can see, I made a 74% prediction in that question as well. Couldn’t put all the blame on the indicator nonetheless right?
The good thing is I get to know more about Stellar by acquiring them. And I’m not going to sell just because it doesn’t meet the initial target, all I have to do is just converting this investment from short-term to medium-term. If I had to be more optimistic, this represents a longer opportunity to buy in with a lower price using Bitcoin.
Will I still believe in Cindicator?
Of course, it’s not like they have failed me 10 times in a row. In fact, they never guaranteed a 100% accuracy, nothing did.
几天前根据 Cindicator 买的 XLM 信号，结局是预测错误。XLM/.BTC 并没有在二月二十号之前越过 0.000051 BTC 。比特币从前一阵子的狂跌至 $6000 恢复到目前的 $11000，可谓十分强势。也难怪所有小货币们在和比特币的对比当中落下风了。
算了吧，反正这也是预料中事，几天的短期投机本来就是充满风险。不卖就不算亏损。
好处是，透过这次的投机行动我认识了 Stellar 这个很不错的项目，就算短期内脱不了手也大可转为长期持有。如果说还不够乐观，那就把这次机会当作是低价入手 XLM 的时机拉长了吧。
This page is synchronized from the post: ‘Cindicator’’s indicator was wrong’


firefly/ntbks/settings_tutorial.ipynb
[1]:
%load_ext autoreload
%autoreload 2
from IPython.display import YouTubeVideo
A recording of this jupyter notebook in action is available at:
[2]:
YouTubeVideo("Xt1vce_2DYo")
[2]:
[3]:
YouTubeVideo("ft0Y3XNJhl4")
[3]:
[4]:
import sys
import os
import numpy as np
from firefly.data_reader import ParticleGroup,Settings,ArrayReader
don't have phil's colormaps
Tutorial notebook: Managing Custom Settings
One of the core features of Firefly is the ability to customize the user interface (UI) and the startup behavior to make bespoke iterations of Firefly using ones own data. We have organized the different options that one can customize into different settings groups that fall into two categories: those that affect the app as a whole and those that are particular to an individual group of particles.
App Settings |
Particle Group Settings |
|---|---|
Startup |
Startup |
UI |
UI |
Window |
Filter |
Camera |
Colormap |
Specific information for each key can be found in this documentation.
To create the necessary JSON files one should use the firefly.data_reader.Settings
class to create a Settings
object. Once you have a Settings
object you can manipulate the settings as you see fit and then either 1. manually save it to a file using the outputToJSON()
method or 2. connect it to a firefly.data_reader.Reader
object in order to link it to a specific visualization (see the reader documentation for details on how to use a Reader
object).
[5]:
## let's create an settings object with the default keys
settings = Settings()
## we'll print the current settings to the console, organized into groups
## (but we'll use the values=False keyword argument because we only want to see the keys for now)
settings.printKeys(values=False)
-- Settings: startup settings --
['maxVrange', 'startFly', 'friction', 'stereo', 'stereoSep', 'decimate', 'start_tween', 'CDmin', 'CDmax', 'CDlognorm', 'columnDensity']
-- Settings: UI settings --
['UI', 'UIfullscreen', 'UIsnapshot', 'UIreset', 'UIsavePreset', 'UIloadNewData', 'UIcameraControls', 'UIdecimation']
-- Settings: window settings --
['title', 'loaded', 'annotation', 'showFPS', 'showMemoryUsage', 'memoryLimit']
-- Settings: camera settings --
['center', 'camera', 'cameraRotation', 'cameraUp', 'quaternion']
-- Settings: particle startup settings --
['plotNmax', 'color', 'sizeMult', 'showParts', 'radiusVariable']
-- Settings: particle UI settings --
['UIparticle', 'UIdropdown', 'UIcolorPicker']
-- Settings: particle velocity settings --
['showVel', 'velType', 'velVectorWidth', 'velGradient', 'animateVel', 'animateVelDt', 'animateVelTmax']
-- Settings: particle filter settings --
['filterLims', 'filterVals', 'invertFilter']
-- Settings: particle colormap settings --
['colormapLims', 'colormapVals', 'colormap', 'colormapVariable', 'showColormap']
Settings can be changed the same way you would change a key in a dictionary
There is key validation (so you can’t attempt to set a setting that doesn’t exist) but there is no value validation, so be careful that you use appropriate values or your app might not work. See the settings documentation for details on what values each setting can take.
[6]:
## let's change the title that shows up in the browser's tab list
print("before:")
## print only the settings that have to do with the window
settings.printKeys(pattern='window')
## update the title using dictionary syntax
settings['title']='---> My Favorite Data <--- '
print("after:")
## print only the settings that have to do with the window to confirm it changed
settings.printKeys(pattern='window')
before:
-- Settings: window settings --
title Firefly
loaded True
annotation None
showFPS True
showMemoryUsage True
memoryLimit<PHONE_NUMBER>.0
after:
-- Settings: window settings --
title ---> My Favorite Data <---
loaded True
annotation None
showFPS True
showMemoryUsage True
memoryLimit<PHONE_NUMBER>.0
Settings are most useful when connected to a firefly.data_reader.Reader
object
Doing so allows many of the necessary settings to be automatically generated as additional particle groups are added.
[7]:
## let's create some sample data, a grid of points in a 3d cube
my_coords = np.linspace(-10,10,20)
xs,ys,zs = np.meshgrid(my_coords,my_coords,my_coords)
xs,ys,zs = xs.flatten(),ys.flatten(),zs.flatten()
coords = np.array([xs,ys,zs]).T
## we'll pick some random field values to demonstrate filtering/colormapping
fields = np.random.random(size=xs.size)
Before we’ve attached the Settings
object the particle settings are all empty.
[8]:
settings.printKeys(pattern='particle')
-- Settings: particle startup settings --
plotNmax {}
color {}
sizeMult {}
showParts {}
radiusVariable {}
-- Settings: particle UI settings --
UIparticle {}
UIdropdown {}
UIcolorPicker {}
-- Settings: particle velocity settings --
showVel {}
velType {}
velVectorWidth {}
velGradient {}
animateVel {}
animateVelDt {}
animateVelTmax {}
-- Settings: particle filter settings --
filterLims {}
filterVals {}
invertFilter {}
-- Settings: particle colormap settings --
colormapLims {}
colormapVals {}
colormap {}
colormapVariable {}
showColormap {}
We’ll use a firefly.data_reader.ArrayReader
, a workhorse firefly.data_reader.Reader
sub-class with many convenient functions. See the reader documentation for details that are outside the scope of this tutorial.
[9]:
## initialize an ArrayReader
reader = ArrayReader(
coordinates=[coords[:-1],coords], ## pass in two particle groups as a demonstration (just copies of our sample data)
write_to_disk=False,
settings=settings, ## the settings object to link
fields=[[],[fields,fields]]) ## field data for each particle group, 0 fields for 1 and 2 repeated fields for the other.
JSONdir is None, defaulting to /Users/agurvich/research/repos/Firefly/src/firefly/static/data/Data
Make sure each field_array (2) has a field_filter_flag (0), assuming True.
Make sure each field_array (2) has a field_colormap_flag (0), assuming True.
Make sure each field_array (2) has a field_radius_flag (0), assuming False.
Outputting: PGroup_0 - 7999/7999 particles - 0 tracked fields
Outputting: PGroup_1 - 8000/8000 particles - 2 tracked fields
/opt/homebrew/Caskroom/miniconda/base/envs/python38/lib/python3.9/site-packages/numpy/core/fromnumeric.py:1970: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
result = asarray(a).shape
/opt/homebrew/Caskroom/miniconda/base/envs/python38/lib/python3.9/site-packages/numpy/core/fromnumeric.py:43: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
result = getattr(asarray(obj), method)(*args, **kwds)
The original Settings
object is stored in reader.settings
.
[10]:
## demonstrate that reader.settings is the original settings object
print('(reader.settings is settings) =',reader.settings is settings)
print()
reader.settings.printKeys(pattern='particle')
(reader.settings is settings) = True
-- Settings: particle startup settings --
plotNmax {'PGroup_0': None, 'PGroup_1': None}
color {'PGroup_0': array([0.88100143, 0.73655243, 0.77324641, 1. ]), 'PGroup_1': array([0.36571498, 0.50979664, 0.02474504, 1. ])}
sizeMult {'PGroup_0': 0.1, 'PGroup_1': 0.1}
showParts {'PGroup_0': True, 'PGroup_1': True}
radiusVariable {'PGroup_0': 0, 'PGroup_1': 0}
-- Settings: particle UI settings --
UIparticle {'PGroup_0': True, 'PGroup_1': True}
UIdropdown {'PGroup_0': True, 'PGroup_1': True}
UIcolorPicker {'PGroup_0': True, 'PGroup_1': True}
-- Settings: particle velocity settings --
showVel {'PGroup_0': None, 'PGroup_1': None}
velType {'PGroup_0': None, 'PGroup_1': None}
velVectorWidth {'PGroup_0': None, 'PGroup_1': None}
velGradient {'PGroup_0': None, 'PGroup_1': None}
animateVel {'PGroup_0': None, 'PGroup_1': None}
animateVelDt {'PGroup_0': None, 'PGroup_1': None}
animateVelTmax {'PGroup_0': None, 'PGroup_1': None}
-- Settings: particle filter settings --
filterLims {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}}
filterVals {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}}
invertFilter {'PGroup_0': {}, 'PGroup_1': {}}
-- Settings: particle colormap settings --
colormapLims {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}}
colormapVals {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}}
colormap {'PGroup_0': 0.015625, 'PGroup_1': 0.015625}
colormapVariable {'PGroup_0': None, 'PGroup_1': None}
showColormap {'PGroup_0': None, 'PGroup_1': None}
Notice that the dictionaries are filled with keys corresponding to each of the particle groups we passed in and sensible default values for each. The values of nested dictionaries should be changed by accessing each in turn, e.g.
settings['colormapLims']['PGroup_1']['field0'] = [0,1]
for the purposes of this tutorial, we’ll just go ahead and output the Settings
object we have manually
[11]:
## output the example settings file to a .json in this directory
settings.outputToJSON('.','example')
You will need to add this settings filename to filenames.json if this was not called by a Reader instance.
[11]:
('./exampleSettings.json', './exampleSettings.json')
Settings can also be imported from .json
files
Only settings defined in the file will be overwritten, so you can also mix-and-match settings files.
[12]:
## initialize a new settings object
new_settings = Settings()
## import the settings from what we just saved above; prints the settings that are updated
new_settings.loadFromJSON("./exampleSettings.json")
replacing title
Firefly --> ---> My Favorite Data <---
replacing plotNmax
{} --> {'PGroup_0': None, 'PGroup_1': None}
replacing color
{} --> {'PGroup_0': [0.8810014255, 0.7365524281, 0.7732464137, 1.0], 'PGroup_1': [0.3657149758, 0.5097966367, 0.0247450409, 1.0]}
replacing sizeMult
{} --> {'PGroup_0': 0.1, 'PGroup_1': 0.1}
replacing showParts
{} --> {'PGroup_0': True, 'PGroup_1': True}
replacing radiusVariable
{} --> {'PGroup_0': 0, 'PGroup_1': 0}
replacing UIparticle
{} --> {'PGroup_0': True, 'PGroup_1': True}
replacing UIdropdown
{} --> {'PGroup_0': True, 'PGroup_1': True}
replacing UIcolorPicker
{} --> {'PGroup_0': True, 'PGroup_1': True}
replacing showVel
{} --> {'PGroup_0': None, 'PGroup_1': None}
replacing velType
{} --> {'PGroup_0': None, 'PGroup_1': None}
replacing velVectorWidth
{} --> {'PGroup_0': None, 'PGroup_1': None}
replacing velGradient
{} --> {'PGroup_0': None, 'PGroup_1': None}
replacing animateVel
{} --> {'PGroup_0': None, 'PGroup_1': None}
replacing animateVelDt
{} --> {'PGroup_0': None, 'PGroup_1': None}
replacing animateVelTmax
{} --> {'PGroup_0': None, 'PGroup_1': None}
replacing filterLims
{} --> {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}}
replacing filterVals
{} --> {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}}
replacing invertFilter
{} --> {'PGroup_0': {}, 'PGroup_1': {}}
replacing colormapLims
{} --> {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}}
replacing colormapVals
{} --> {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}}
replacing colormap
{} --> {'PGroup_0': 0.015625, 'PGroup_1': 0.015625}
replacing colormapVariable
{} --> {'PGroup_0': None, 'PGroup_1': None}
replacing showColormap
{} --> {'PGroup_0': None, 'PGroup_1': None}
Attaching a ParticleGroup to a Settings
One other thing you may want to do (perhaps in the course of building your own custom Reader
sub-class) is link a firefly.data_reader.ParticleGroup
object to a Settings
object so that the different particle settings can be imported. ParticleGroup
settings can be changed in settings_default
attribute (which is just a normal python dictionary).
[13]:
## create a test particle group
particleGroup = ParticleGroup('test',coords)
## update the color of this particle group *before* attaching it to a settings object
particleGroup.settings_default['color'] = [0,0,1,1]
[14]:
## attach the particle group to the settings object
## you can find the settings in the "particleGroup.attached_settings attribute"
new_settings.attachSettings(particleGroup)
print('(particleGroup.attached_settings is new_settings) =',particleGroup.attached_settings is new_settings)
print()
particleGroup.attached_settings.printKeys(pattern='particle')
(particleGroup.attached_settings is new_settings) = True
-- Settings: particle startup settings --
plotNmax {'PGroup_0': None, 'PGroup_1': None, 'test': None}
color {'PGroup_0': [0.8810014255, 0.7365524281, 0.7732464137, 1.0], 'PGroup_1': [0.3657149758, 0.5097966367, 0.0247450409, 1.0], 'test': [0, 0, 1, 1]}
sizeMult {'PGroup_0': 0.1, 'PGroup_1': 0.1, 'test': 0.1}
showParts {'PGroup_0': True, 'PGroup_1': True, 'test': True}
radiusVariable {'PGroup_0': 0, 'PGroup_1': 0, 'test': 0}
-- Settings: particle UI settings --
UIparticle {'PGroup_0': True, 'PGroup_1': True, 'test': True}
UIdropdown {'PGroup_0': True, 'PGroup_1': True, 'test': True}
UIcolorPicker {'PGroup_0': True, 'PGroup_1': True, 'test': True}
-- Settings: particle velocity settings --
showVel {'PGroup_0': None, 'PGroup_1': None, 'test': None}
velType {'PGroup_0': None, 'PGroup_1': None, 'test': None}
velVectorWidth {'PGroup_0': None, 'PGroup_1': None, 'test': None}
velGradient {'PGroup_0': None, 'PGroup_1': None, 'test': None}
animateVel {'PGroup_0': None, 'PGroup_1': None, 'test': None}
animateVelDt {'PGroup_0': None, 'PGroup_1': None, 'test': None}
animateVelTmax {'PGroup_0': None, 'PGroup_1': None, 'test': None}
-- Settings: particle filter settings --
filterLims {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}, 'test': {}}
filterVals {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}, 'test': {}}
invertFilter {'PGroup_0': {}, 'PGroup_1': {}, 'test': {}}
-- Settings: particle colormap settings --
colormapLims {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}, 'test': {}}
colormapVals {'PGroup_0': {}, 'PGroup_1': {'field0': None, 'field1': None}, 'test': {}}
colormap {'PGroup_0': 0.015625, 'PGroup_1': 0.015625, 'test': 0.015625}
colormapVariable {'PGroup_0': None, 'PGroup_1': None, 'test': None}
showColormap {'PGroup_0': None, 'PGroup_1': None, 'test': None}
Notice that the 'test'
particle group now appears in the particle settings dictionaries (and in particular, note that settings['color']['test'] = [0,0,1,1]
.


Before Change
// try our very best to create a TF placeholder for each of the
// feedable keyword arguments by inferring the type
num_types = [int, float, np.float16, np.float32, np.float64,
np.int8, np.int16, np.int32, np.int32, np.int64,
np.uint8, np.uint16, np.uint32, np.uint64,
tf.float16, tf.float32, tf.float64,
tf.int8, tf.int16, tf.int32, tf.int32, tf.int64,
tf.uint8, tf.uint16]
new_kwargs = dict(x for x in fixed.items())
for name, value in feedable.items():
if isinstance(value, np.ndarray):
new_shape = [None]+list(value.shape[1:])
new_kwargs[name] = tf.placeholder(value.dtype, new_shape)
if any(isinstance(value, num) for num in num_types):
if isinstance(value, float):
new_kwargs[name] = tf.placeholder(tf.float32, shape=[])
elif isinstance(value, int):
After Change
// create a unique key for this set of fixed paramaters
hash_key = tuple(sorted(fixed.items()))
if hash_key not in self.graphs:
// try our very best to create a TF placeholder for each of the
// feedable keyword arguments by inferring the type
num_types = (int, float, np.float16, np.float32, np.float64,
np.int8, np.int16, np.int32, np.int32, np.int64,
np.uint8, np.uint16, np.uint32, np.uint64)
new_kwargs = dict(x for x in fixed.items())
for name, value in feedable.items():
if isinstance(value, np.ndarray):
new_shape = [None]+list(value.shape[1:])
new_kwargs[name] = tf.placeholder(value.dtype, new_shape)
if isinstance(value, num_types):
if isinstance(value, float):
// can"t instantiate placeholder with python float
// cast it to tf.float32 as that"s most likely
new_kwargs[name] = tf.placeholder(tf.float32, shape=[])
elif isinstance(value, int):
// can"t instantiate placeholder with python int
// cast it to tf.int32 as that"s most likely
new_kwargs[name] = tf.placeholder(tf.int32, shape=[])
else:
new_kwargs[name] = tf.placeholder(type(value), shape=[])
// x is a special placeholder we always want to have
x = tf.placeholder(tf.float32, shape=[None]+list(x_val.shape)[1:])
// now we generate the graph that we want
x_adv = self.generate(x, **new_kwargs)
if hash_key is not None:
// only save the graph if every fixed element is hashable
self.graphs[hash_key] = (x, new_kwargs, x_adv)
if len(self.graphs) == 10:
warnings.warn("Calling generate_np() with multiple different "
"structural paramaters is inefficient and should "
"be avoided. Calling generate() is preferred.")
if hash_key is not None:
// if it is None, we must have constructed it already
x, new_kwargs, x_adv = self.graphs[hash_key]