“Nayidaṁ anayena jīvitaṁ,
Nāhāro hadayassa santiko;
Āhāraṭṭhitiko samussayo,
Iti disvāna carāmi esanaṁ.
You can’t live by fasting,
but food doesn’t lead to peace of heart.
Seeing how this bag of bones is sustained by food,
I wander, seeking.
Paṅkoti hi naṁ pavedayuṁ,
Yāyaṁ vandanapūjanā kulesu;
Sukhumaṁ sallaṁ durubbahaṁ,
Sakkāro kāpurisena dujjaho”ti.
Itthaṁ sudaṁ āyasmā piṇḍolabhāradvājo thero gāthāyo abhāsitthāti.
They know it’s just a swamp,
this homage and veneration in respectable families.
Honor is a subtle dart, hard to extract,
and hard for a sinner to give up.
It was thus that these verses were recited by the senior venerable Piṇḍolabhāradvāja.


--- layout: page title: Live Stats ---
Real time -stats of the visitors of this blog provided by Revlovermaps.
added on March 8th 2020.


Hello Sunshine!
Join us for specials, spritzers and socials.
Join us for specials, spritzers and socials.
Dive into our new Creamy Seafood Ravioli filled crab and lobster with oak-smoked salmon flakes in a creamy lemon, garlic and tarragon butter sauce; delicate, luxurious and delicious.
…with our new Malfy gin spritzers; choose from the blood orange, pink grapefruit & rose or lemon & elderflower spritzer (or why not try them all? 😉).
We’ve got a new kids menu with loads of fun activities and stickers to keep the smaller people entertained and happy.
We all want to know what we’re eating. So whether you’re vegan, vegetarian, flexitarian or gluten free, we are committed to making sure you have all the information you need.
Address: Unit 1, Chancerygate Industrial Cent, Horton Close, West Drayton UB7 8EW. United Kingdom
Contact No:<PHONE_NUMBER>0
<EMAIL_ADDRESS>Careers
Summer menu
Dine@Home Menu
Privacy Ploicy
Terms of use
02-222 Warsawa
Outdoor Dining
Dine@Home
London EC2A 4BK
Contact Us & FAQs
Dine@Home FAQs
Keeping you safe
Vouchers FAQ
Modern Slavery Statement


Sarasota County Schools Surplus at Warehouse in Osprey, FL. School
Feb 02, 2019 at 8:00 EST
You are invited
Another Great Surplus Auction for the School Board of Sarasota County, FL. Located at their Warehouse in Osprey, FL.
Event Details
Saturday, February 2nd, 2019 101 Old Venice Rd, OSPREY, FL 34229 Starting at 8:30am ET School Buses & White Fleet Vehicles Selling First!
Warehouse Full of Surplus Equipment
FeaturingThomas-Freightliner School Buses including (7) 2006-2007 Newer Body w/ Mercedes Engines / Ford F-250 SD Utl Pickup / Chevy Blazer / Ford Cargo Van / IR Towable Air Compressor / Yamaha ATV / Mowers / Sprayers / Lawn & Facilities Equip / Food Service Equip


This week we're reading Chapter 6 of Search Inside Yourself, which talks about motivation. The chapter starts with the idea that personal happiness is a big motivator, so if you want to feel more motivated at work, you should try to understand the things that make you happy. Not only that, you should try to find the things that make you sustainably happy (because chips might be great, but if you eat 3 bags in a row you probably won't feel as happy at the end as you did when you started). The chapter groups happiness into three different forms:
As part of this "discover your higher purpose" exercise, we've been asked to think about our core values. One of mine is acting in a way I'd like to see others act, particularly when it comes to reducing waste.  But I do think everyone has the potential to influence the people around them in a positive way.
The book also talks about emotional resilience. This is the idea that optimistic people aren't optimistic because their lives are perfect, but because they are resilient and view failure in a different way to pessimists: "When an optimist suffers a major disappointment, he responds by figuring out how he can do it better next time. In contrast, a pessimist assumes there is nothing he can do about the problem and gives up" (p 125). I like the idea of reframing failure in this way: as a temporary setback that can be overcome through effort and ability, rather than a permanent state of affairs. It makes failure seem like part of the adventure - like a short "oops" moment in a longer, epic montage.


Search ingredients
Browse the categories or use the search bar to find your favorite ingredients
Simply add the ingredients you have at home and we'll show you recipes
you can make at home.
Make an account and we’ll save your ingredients list so you can come
back to it at any time.
Browse the categories or use the search bar to find your favorite ingredients
Click on the ingredients you have and see them appear in My Fridge
Click 'Find Recipes' to find out what you can make with the ingredients in your fridge


Please read these terms and conditions carefully. A reference to this "website" is to the websites owned and/or operated by Castle Dental including but not limited to the information, text, images, links, sound, graphics and video sequences displayed therein (the "Materials").
By accessing this website and any pages thereof, you agree to be bound by the terms and conditions below. If you do not agree to the terms and conditions below, do not access this site or any pages thereof.
To help with the smooth running of the practice we would request that you have reported to reception 5 minutes before your appointment time.
If you are late for your appointment and it is more than 25% of the total time of the appointment length it is up to the discretion of the dentist as to whether you will be seen.
If your dentist is running late we will inform you as soon as we can and try to estimate the time you will have to wait. If the delay is considerable we may offer you another appointment.
If you fail to attend a dental appointment then you may no longer be offered further appointments at the practice. This is at the discretion of your dentist.
The dentist reserves the right to refuse any patient who acts inappropriately.
If an appointment needs to be cancelled at short notice we will do our best to contact you ASAP but this can only be done if we hold up to date contact information.
We understand you may need to cancel appointments but please let us know ASAP so we can reallocate the appointment.
Treatment is available either on the NHS, or a private basis or with Denplan.
NHS prices are charged at the current rate.
A private price list is available in reception.
Some treatments are only available privately.
Denplan banding is decided by the treating dentist and the fee is subject to a yearly increase.
There is an initial examination charge as set by the scheme you join.
To help with the smooth running of the practice we would request that you have reported to reception 5 minutes before your appointment time.
If you are late for your appointment and it is more than 25% of the total time of the appointment length it is up to the discretion of the dentist as to whether you will be seen.
If your dentist is running late we will inform you as soon as we can and try to estimate the time you will have to wait. If the delay is considerable we may offer you another appointment.
If you fail to attend a dental appointment then you may no longer be offered further appointments at the practice. This is at the discretion of your dentist.
The dentist reserves the right to refuse any patient who acts inappropriately.
If an appointment needs to be cancelled at short notice we will do our best to contact you ASAP but this can only be done if we hold up to date contact information.
We understand you may need to cancel appointments but please let us know ASAP so we can reallocate the appointment.
If charges will be incurred then you will be given a written estimate in line with current guidelines.
You will be required to pay an initial appointment fee, NHS patients will need to pay the remainder of the balance at the last treatment appointment. Private patients will need to pay as each treatment item is completed rather than at the end of the treatment plan.
If you fail to pay then we will forward your debt to the county courts.
In this practice we take complaints very seriously and try to ensure that all our patients are pleased with their experience of our service. When patients complain, they are dealt with courteously and promptly so that the matter is resolved as quickly as possible. This procedure is based on these objectives.
Our aim is to react to complaints in the way in which we would want our complaint about a service to be handled. We learn from every mistake that we make and we respond to patients’ concerns in a caring and sensitive way.
The person responsible for dealing with any complaint about the service that we provide is Mandy Rose, the practice Complaints Manager.
If a patient complains by telephone or in person, we will listen to their complaint and offer to refer him or her to the Complaints Manager immediately. If the Complaints Manager is not available at the time, then the patient will be told when they will be able to talk to the Complaints Manager and arrangements will be made for this to happen. The member of staff will make a written record of your complaint and provide the patient with a copy as well as passing it on to the Complaints Manager. If we cannot arrange this within a reasonable period or if the patient does not wish to wait to discuss the matter, arrangements will be made for someone else to deal with it.
If the patient complains in writing or by e-mail it will be passed on immediately to the Complaints Manager.
If a complaint is about any aspect of clinical care or associated charges it will normally be referred to the dentist concerned, unless the patient does not want this to happen.
We will acknowledge the patient’s complaint in writing and enclose a copy of this code of practice as soon as possible, normally within 3 working days. We will offer to discuss the complaint at a time agreed with the patient, asking how the patient would like to be kept informed of developments, for example, by telephone, face to face meetings, letters or e-mail. We will inform the patient about how the complaint will be handled and the likely time that the investigation will take to be completed. If the patient does not wish to discuss the complaint, we will still inform them of the expected timescale for completing the process.
We will seek to investigate the complaint and keep the patient informed of the likely time period within which the investigation will be completed.
When we have completed our investigation, we will provide the patient with a full written report. The report will include an explanation of how the complaint has been considered, the conclusions reached in respect of each specific part of the complaint, details of any necessary remedial action and whether the practice is satisfied with any action it has already taken or will be taking as a result of the complaint.
Proper and comprehensive records are kept of any complaint received as well as any actions taken to improve services as a consequence of a complaint
If patients are not satisfied with the result of our procedure then a complaint may be referred to:
NHS England, Cumbria and the North East, The Old Exchange, Barnard Street, Darlington, County Durham, DL3 7DR, 0113 824 7209 or the Parliamentary and Health Service Ombudsman, Millbank Tower, Millbank London SW1P 4QP, telephone: 0345 015 4033 or www.ombudsman.org.uk for complaints about NHS treatment.. Dental Complaints Service, Stephenson House, 2 Cherry Orchard Road, Croydon CR0 6BA (Telephone: 08456 120 540) for complaints about private treatment The General Dental Council, 37 Wimpole Street, London, W1M 8DQ the dentists’ registration body.
In this practice we take complaints very seriously and try to ensure that all our patients are pleased with their experience of our service. When patients complain, they are dealt with courteously and promptly so that the matter is resolved as quickly as possible. This procedure is based on these objectives.
Our aim is to react to complaints in the way in which we would want our complaint about a service to be handled. We learn from every mistake that we make and we respond to customers’ concerns in a caring and sensitive way.
The person responsible for dealing with any complaint about the service that we provide is Mandy Rose, our Complaints Manager.
If a patient complains on the telephone or at the reception desk, we will listen to their complaint and offer to refer him or her to the Complaints Manager immediately. If the Complaints Manager is not available at the time, then the patient will be told when they will be able to talk to the dentist and arrangements will be made for this to happen. The member of staff will take brief details of the complaint and pass them on. If we cannot arrange this within a reasonable period or if the patient does not wish to wait to discuss the matter, arrangements will be made for someone else to deal with it.
If the patient complains in writing the letter will be passed on immediately to the Complaints Manager.
If a complaint is about any aspect of clinical care or associated charges it will normally be referred to the dentist, unless the patient does not want this to happen.
We will acknowledge the patient’s complaint in writing and enclose a copy of this code of practice as soon as possible, normally within 3 working days.
We will seek to investigate the complaint within 10 working days of receipt to give an explanation of the circumstances which led to the complaint. If the patient does not wish to meet us, then we will attempt to talk to them on the telephone. If we are unable to investigate the complaint within 10 working days we will notify the patient, giving reasons for the delay and a likely period within which the investigation will be completed.
We will confirm the decision about the complaint in writing immediately after completing our investigation.
Proper and comprehensive records are kept of any complaint received.
If patients are not satisfied with the result of our procedure then a complaint may be made to:
If you continue to browse and use this website, you are agreeing to comply with and be bound by the following terms and conditions of use. If you disagree with any part of these terms and conditions, you are not permitted to use our website.
The content of the pages of this website is for your general information and use only. It is subject to change without notice.
Neither we nor any third parties provide any warranty or guarantee as to the accuracy, timeliness, performance, completeness or suitability of the information and materials found or offered on this website for any particular purpose.
You acknowledge that such information and materials may contain inaccuracies or errors and we expressly exclude liability for any such inaccuracies or errors to the fullest extent permitted by law.
Your use of any information or materials on this website is entirely at your own risk, for which we shall not be liable. It shall be your own responsibility to ensure that any products, services or information available through this website meet your specific requirements.
This website contains material which is owned by or licensed to us. This material includes, but is not limited to, the design, layout, look, appearance and graphics. Reproduction is prohibited other than in accordance with the copyright notice, which forms part of these terms and conditions.
All trade marks reproduced in this website which are not the property of, or licensed to, the operator are the property of their respective trade mark owners.
Unauthorised use of this website may give rise to a claim for damages and/or be a criminal offence.
From time to time this website may also include links to other websites. These links are provided for your convenience to provide further information. They do not signify that we endorse the website(s). We have no responsibility for the content of the linked website(s).
Your use of this website and any dispute arising out of such use of the website is subject to the laws of England and Wales.
We explain what you’re consenting to clearly and without ‘legalese’, and ask that you explicitly consent to contact from us.
We implement appropriate technical and organisational measures, in an effective way, in order to meet the requirements of this Regulation and protect the rights of data subjects'. We hold and process only the data absolutely necessary for the completion of our duties (data minimisation), as well as limiting the access to personal data to those needing to act out the processing.
Castle Dental Practice Ltd policy
Access to information held by the practice
(Replaces data protection policy)
We may be asked to disclose information, documents or records held by the practice. Requests for personal information are made under data protection legislation and under freedom of information legislation for information about the NHS services provided by the practice.
Requests for personal information or for information about the practice that is not included in the practice information leaflet should be passed to Mandy Rose.
This policy describes who can request information and how and the practice procedures for managing these requests.
Personal information is any information that allows an individual to be identified. This includes information where the individual is not named but a cross-reference to other information held by the practice would allow identification.
Data protection legislation allows individuals to request access to their personal information. Those eligible to request access include:
If a request concerns information about a deceased person, those eligible to request access include:
If the information requested includes information about third parties, it can be disclosed if the third party gives consent or is a health professional involved in the care of the patient.
The request must be made in writing and describe the type of information required with dates, if possible, and include sufficient information to ensure correct identification (name, address, date of birth, for example). You must check that the person asking for information has the right to do so and, if necessary, ask for proof of identity. We will provide the requested information within one month of receiving the request or confirming the individual’s identity.
We will usually provide the information requested in electronic form using secure means, unless the individual asks for the information in paper format or otherwise agreed. The individual may also come to the practice to view the original version under supervision and on practice premises.
We will provide the information in a way that can be understood by the individual making the requests and may need to provide an explanation to accompany dental clinical notes.
Where requests are manifestly unfounded or excessive (particularly if they are repetitive), we can:
If we refuse to respond to a request, we will explain the reasons and informing the individual of their right to complain to the Information Commissioner’s Office and to a judicial remedy.
Freedom of information legislation allows anyone to ask for information about the provision of NHS services. The available information is described fully in the practice guide to information available under FOIA and the model publication scheme. If the requested information is part of a larger document, we will disclose only the relevant part.
A freedom of information request cannot include clinical records or financial records.
The request must be made in writing and should describe the of information that they want and with dates, if possible. The individual making the request does not have to give a reason.
The charges for information provided under a freedom of information request are included in the practice guide and the model publication scheme
We will provide Information within 20 working days of receiving the request or confirmation of identity or, if applicable, from the receipt of the fee.
It may be possible to extend this timescale if we need more information about the request or are taking legal advice on whether an exemption applies. We must inform the person making the request if we need to extend the 20-working-day deadline.
Most of the information covered by a freedom of information request is available in the practice information leaflet or on the practice website. Requests for other information should be referred to Mandy Rose. If we do not hold the information requested, we will inform the individual within the 20-working-day time limit.
We will provide information in a way that is convenient for the person who requested it, which may be in writing, by allowing the applicant to read it on the premises, or, if the information is held electronically, in a useable electronic format.
We are not required to respond to:
In either situation, you should seek advice from Mandy Rose.
In providing your dental care and treatment, we will ask for information about you and your health. Occasionally, we may receive information from other providers who have been involved in providing your care. This privacy notice describes the type of personal information we hold, why we hold it and what we do with it.
We are Castle Dental Practice Ltd operating at:
39 Galgate, Barnard Castle, DL12 8EJ .Mandy Rose is responsible for keeping secure the information about you that we hold. Those at the practice who have access to your information include dentists and other dental professionals involved with your care and treatment, and the reception staff responsible for the management and administration of the practice.
Our data protection officer, Mandy Rose, ensures that the practice complies with data protection requirements to ensure that we collect, use, store and dispose of your information responsibly. You can contact our data protection officer, Mandy Rose, by email at<EMAIL_ADDRESS>or by phone on 01833 631140
We can only keep and use information for specific reasons set out in the law. If we want to keep and use information about your health, we can only do so in particular circumstances. Below, we describe the information we hold and why, and the lawful basis for collecting and using it.
We hold personal information about you including your name, date of birth, national insurance number, NHS number, address, telephone number and email address. This information allows us to fulfil our contract with you to provide appointments. We will also use the information to send you reminders and recall appointments as we have a legitimate interest to ensure your continuing care and to make you aware of our services.
We hold information about your dental and general health, including:
We collect and use this information to allow us to fulfil our contract with you to discuss your treatment options and provide dental care that meets your needs. We also use this information for the legitimate interest of ensuring the quality of the treatment we provide.
We hold information about the fees we have charged, the amounts you have paid and some payment details. This information forms part of our contractual obligation to you to provide dental care and allows us to meet legal financial requirements.
Where your dental care is provided under the terms of the NHS, we are required to complete statutory forms to allow payments to be processed. This is an NHS requirement.
To provide you with the dental care and treatment that you need, we require up-to-date and accurate information about you.
We will share your information with the NHS and Denplan in connection with your dental treatment.
We may contact you to conduct patient surveys or to find out if you are happy with the treatment you received for quality control purposes.
We will seek your preference for how we contact you about your dental care. Our usual methods are telephone, email or letter.
If we wish to use your information for dental research or dental education, we will discuss this with you and seek your consent. Depending on the purpose and if possible, we will anonymise your information. If this is not possible we will inform you and discuss your options.
Your information is normally used only by those working at the practice but there may be instances where we need to share it – for example, with:
We will only disclose your information on a need-to-know basis and will limit any information that we share to the minimum necessary. We will let you know in advance if we send your medical information to another medical provider and we will give you the details of that provider at that time.
In certain circumstances or if required by law, we may need to disclose your information to a third party not connected with your health care, including HMRC or other law enforcement or government agencies.
We store your personal information securely on our practice computer system and in a manual filing system. Your information cannot be accessed by those who do not work at the practice; only those working at the practice have access to your information. They understand their legal responsibility to maintain confidentiality and follow practice procedures to ensure this.
We take precautions to ensure security of the practice premises, the practice filing systems and computers.
We use high-quality specialist dental software to record and use your personal information safely and effectively. Our computer system has a secure audit trail and we back-up information routinely.
We use cloud computing facilities for storing some of your information. The practice has a rigorous agreement with our provider to ensure that we meet the obligations described in this policy and that we keep your information securely.
We keep your records for 10 years after the date of your last visit to the Practice or until you reach the age of 25 years, whichever is the longer. At your request, we will delete non-essential information (for example some contact details) before the end of this period.
You have a right to access the information that we hold about you and to receive a copy. We do not usually charge you for copies of your information; if we pass on a charge, we will explain the reasons.
You can also request us to:
If we are relying on your consent to use your personal information for a particular purpose, you may withdraw your consent at any time and we will stop using your information for that purpose.
All requests should be made by email to Mandy Rose at<EMAIL_ADDRESS>If you do not wish us to use your personal information as described, you should discuss the matter with your dentist. If you object to the way that we collect and use your information, we may not be able to continue to provide your dental care.
If you have any concerns about how we use your information and you do not feel able to discuss it with your dentist or anyone at the practice, you should contact The Information Commissioner’s Office (ICO):
Wycliffe House, Water Lane, Wilmslow, Cheshire SK9 5AF (0303 123 1113 or 01625 545745)


Techno Titans LLC. Article Editor
File Name
Preview the HTML code of the WYSIWYG HTML editor as you type in the box below.


Start with an empty HTML5 file
The initial file should look like this:
<!DOCTYPE html>

<meta charset="UTF-8">
<title>My Awesome Slides</title>

Enable presen.js
Put the following two lines in
:

<meta charset="UTF-8">
<title>My Awesome Slides</title>

<link rel="stylesheet" href="presen.css">

To enable addons and themes, additional

<link rel="stylesheet" href="presen.css">
It would be needed only if your browser does not have a full-screen
switch.
editor
addon
This makes the browser a simple slide editor.
Two buttons are added:
- + appends a new textarea slide.
- ⬇ saves slides to an HTML file.
To enable this, put the following in
:

...

<link rel="stylesheet" href="presen.css">
Slide size configuration
The size of slides can be changed
by specifying one of the following classes to
:
a16x9
(16:9, HD)
a16x10
(16:10, WXGA+)
a4
(297:210, A4 paper)
The default is 4:3 (VGA).
For example, for MacBook users:
<!DOCTYPE html>

...
Substitutions
The contents of the elements of the following classes are
substituted in presentation mode:
presen_slide_index
- the index number of the current slide.
presen_slide_total
- the total number of slides.
Page detection
The elements forming pages (transition steps) are
determined by the following CSS selector:
section, header, .page, .step
This can be changed by modifying Presen.pageSelector
variable.
For example, this makes every

a page:

Page switching
In presentation mode, every page element has one of the
following classes:
curr
: the current page or its ancestor
prec
: prior to the current page
succ
: subsequent to the current page
For outer elements of nested sections,
npre
, ncur
, and
nsuc
are set instead of the above.
A transition step is performed by toggling these classes of
each page element.
The visual effect of a transition is realized only by CSS.
How step
differs from page
They differ only in their styles:
.page.prec { display: none }
.page.succ { display: none }
/* .step.prec { display: none } */
.step.succ { display: none }
As in these,
you can customize the effect of page transition
by writing styles for .prec
, .curr
,
and .succ
.
See also:
Entering presentation mode
When the presentation mode starts, the following occur:
presen_mode
is added to the class list of

.
This is removed when the presentation mode exits.
presen_mode_init
is added to the class list
of
and removed immediately.
This is useful for custom stylesheets to distinguish
initialization from transitions
(see the source of this file for example).
Click event handling
In presentation mode,
the default behavior of click
event is overriden
by a window
's event listener.
When an element with non-negative tabIndex
is clicked and
the click event is propagated without preventDefault
being
called,
- the click event is discarded,
- the presentation mode exits, and
- another click event is triggered again on the original target of
the click.
To control this, set tabindex
attributes explicitly.
Notes on stylesheet
1rem
is set to the 1/10 of the slide height.
- Every

,

,
and
has
position
set to something other than static
;
so, the elements in a slide is positioned relative to the slide.
- In presentation mode, all slides are stacked up at the same place.
A slide transition animation can be performed by transforming the
stacked slides with CSS (see the source of this file for example).
Notes on scripting
presen.js is initialized in the capturing phase of
the load
event by a window
's event handler.
To make sure that your script runs after presen.js is
initialized, avoid adding a load
listener of the capturing
phase.
License terms
presen.js (including this file) is distributed under the following terms:
Copyright (C) 2018 Katsuhiro Ueno
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
 IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.


To automatically convert all drop downs to include a search box, enter the URL in the text box below and add it to the list. This will enable the drop down search option for all drop downs automatically on page load. Sub domains will also be included.


Character Counter
Type and see the number of characters typed.
Use your voice to type if you prefer. Click on the microphone and speak :)
Type and see the number of characters typed.
Use your voice to type if you prefer. Click on the microphone and speak :)
You typed: 0 characters


Multiplayer space shooter demo
Looks like your browser does NOT support HTML5 Canvas.
Please get a decent one.


The Builder Pattern¶
A “Creational Pattern” from the Gang of Four book
Verdict
The full-fledged Builder Pattern as imagined by the Gang of Four arranged for a single series of method calls to power the creation of several different object hierarchies — but that use of the pattern has turned out to be vanishingly rare in Python. Instead, the Builder is wildly popular simply for its convenience.
You might also have seen a more recent pattern calling itself the “Builder” which pairs each immutable class in a program with a more convenient builder class. That pattern, happily, is never necessary in Python since the language itself provides built-in syntactic support for optional constructor arguments.
Contents:
The Builder pattern has a most interesting history. Its primary intent, as described by the Gang of Four in the very first sentence of their chapter on the pattern, has wound being the rarest purpose for which the pattern is used. Instead, the Builder is used almost everywhere for what the Gang of Four considered a secondary benefit: its convenience.
More recently, an even simpler pattern has adopted the name “Builder” that appears in certain less expressive programming languages to make up for their lack of optional parameters in a call to a constructor.
This article will start by describing the Builder pattern’s most popular use in Python programs. Next we will glance at what the Gang of Four thought the pattern’s primary purpose was going to be, and explore why it is rarely used that way in Python. Finally, for completeness, we will look at the more recent use of the pattern to help languages whose syntax is less flexible than Python’s.
The Builder as convenience¶
The Builder pattern is wildly popular in Python because it lets client code stay simple and sleek even while directing the creation of an elaborate hierarchy of objects.
The formal definition is that the Builder pattern is present whenever a library lets you make a simple series of function and method calls that, behind the scenes, the library reacts to by building a whole hierarchy of objects. Thanks to the Builder pattern, the caller is exempted from needing to manually instantiate each object or understand how the objects fit together once constructed.
A classic example in Python
is the matplotlib library’s
pyplot
interface.
It lets the caller build a simple plot with just a single line of code,
and save the diagram to disk with just one line more:
import numpy as np
x = np.arange(-6.2, 6.2, 0.1)
import matplotlib.pyplot as plt
plt.plot(x, np.sin(x))
plt.savefig('sine.png')
What the pyplot interface has hidden from the caller
is that more than a dozen objects had to be created
for matplotlib to represent even this simple plot.
Here, for example, are eight of the objects
that were generated behind the scenes
by the plot()
call above:
>>> plt.gcf()
<Figure size 640x480 with 1 Axes>
>>> plt.gcf().subplots()
<matplotlib.axes._subplots.AxesSubplot object at 0x7ff910917a20>
>>> plt.gcf().subplots().bbox
TransformedBbox(
Bbox(x0=0.125, y0=0.10999999999999999, x1=0.9, y1=0.88),
BboxTransformTo(
TransformedBbox(
Bbox(x0=0.0, y0=0.0, x1=6.4, y1=4.8),
Affine2D(
[[100. 0. 0.]
[ 0. 100. 0.]
[ 0. 0. 1.]]))))
While matplotlib will let us provide more keyword arguments
or make additional calls to customize the plot,
pyplot
is happy to insulate us from all of the details
of how plots are represented as objects.
The Builder pattern is now deeply ingrained in Python culture thanks in part to the pressure that library authors feel to make the sample code on their front page as impressively brief as possible. But even in the face of this pressure, there still exist libraries that expect you — their caller — to build an entire object hierarchy yourself in the course of using the library.
The fact that some libraries
rely on their callers to tediously instantiate objects
is even used as advertisement by their competitors.
For example,
the Requests library
famously introduces itself to users
by comparing its one-liner for an HTTP request with authentication
to the same maneuver performed with the old
urllib2
Standard Library module —
which, in fairness, does require the caller to build a small pile of objects
any time they want to do anything interesting.
The “Examples” section of the urllib2
documentation
provides an illustration:
import urllib2
# Create an OpenerDirector with support for Basic HTTP Authentication...
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(realm='PDQ Application',
uri='https://mahler:8092/site-updates.py',
user='klem',
passwd='kadidd!ehopper')
opener = urllib2.build_opener(auth_handler)
# ...and install it globally so it can be used with urlopen.
urllib2.install_opener(opener)
urllib2.urlopen('http://www.example.com/login.html')
Had the Builder pattern been used here, the library would instead have offered functions or methods that concealed from client code the structure and classes in the opener - builder - authentication handler hierarchy.
Nuance¶
My claim that the matplotlib pyplot
interface is a Builder
is complicated by the second-to-last paragraph in the Gang of Four’s
chapter on the Builder:
“Builder returns the product as a final step, but as far as the Abstract Factory pattern is concerned, the product gets returned immediately.”
While this stipulation focuses on the difference between the Builder and the Abstract Factory, it makes clear that — for the Gang of Four — both patterns are supposed to conclude with the return of the constructed object to the caller. Absent the crucial final step of returning the object that has been built, the Builder arguably devolves into the Facade pattern instead.
So by the strict definition,
pyplot
might not qualify as a Builder in my example code above
because I never ask for an actual reference to the object
that my plot()
call constructed.
To rescue my example in case anyone decides to press the point,
I can ask for a reference to the plot
and ask the plot itself to save a rendered image to a file.
plt.plot(x, np.sin(x))
sine_figure = plt.gcf() # “gcf” = “get current figure”
sine_figure.savefig('sine.png')
Such are the demands of pedantry: an extra line of code.
Dueling builders¶
When the Gang of Four introduced the Builder, they had greater ambitions for the pattern than mere convenience and encapsulation. The opening sentence of their chapter on the Builder declared the following “Intent”:
“Separate the construction of a complex object from its representation so that the same construction process can create different representations.”
For the Gang of Four, then, the Builder pattern is only operating at full tilt when a library offers several implementations of the same Builder, each of which returns a different hierarchy of objects in response to the same series of client calls.
I cannot find evidence that the full-tilt Builder pattern is in frequent use across today’s most popular python libraries.
Why has the pattern not come into widespread use?
I think the answer is the supremacy of data, and of data structures, as the common currency that is usually passed between one phase of a Python program’s execution and the next. To understand why, let’s turn to the Gang of Four’s own sample code. Here, for example, is one situation in which their Builder is placed as it responds to calls describing the creation of a maze (the example has been lightly edited to translate it into Python):
class StandardMazeBuilder(object):
# ...
def build_door(n1, n2):
room1 = self._current_maze.get_room(n1)
room2 = self._current_maze.get_room(n2)
door = Door(r1, r2)
room1.set_side(common_wall(r1, r2), d)
room2.set_side(common_wall(r2, r1), d);
Notice the awkward responsive pattern into which the code is forced.
It knows that a maze is under construction,
but has to recover a reference to the maze
by asking self
for its current_maze
attribute.
It then has to make several adjustments
to update the room objects with the new information
so that subsequent interactions will start from a new state.
This looks suspiciously like I/O code
that has been contorted into a series of callbacks,
each needing to re-fetch and re-assemble the current state of the world
in order to ratchet its state machine forward one further click.
If a modern Python Library does want to drive two very different kinds of activity from the same series of client constructor calls, it would be very unusual for that library to offer two completely separate implementations of the same Builder interface — two builders that both have to be capable of being prodded through the same series of incremental client-driven updates to produce a coherent result.
Instead, modern python libraries are overwhelmingly likely to have a single implementation of a given Builder, one that produces a single well-defined intermediate representation from the caller’s function and method invocations. That representation, whether publicly documented or private and internal to the library, can then be provided as the input to any number of downstream transformation or output routines — whose processing will now be simpler because they are free to roam across the intermediate data structure at their own pace and in whatever order they want.
To compare the popularity of callback programming
with the popularity of foregrounding an intermediate representation,
compare the paltry number of Python libraries that use the Standard Library lmx.sax
package —
which learns about a document by responding to a long series
of startElement()
and endElement()
calls —
with the wide popularity of the
ElementTree
API that presumes the XML is already completely parsed
and offers the caller a Document Object Module
to traverse in whatever order it wants.
It is, therefore, probably Python’s very rich collection of data types for representing deep compound information — tuples, lists, dictionaries, classes — and the convenience of writing code to traverse them that has produced almost an entire absence of the full-tilt Builder pattern from today’s popular Python libraries.
A degenerate case: simulating optional arguments¶
For the sake of completeness, I should describe an alternative Builder pattern that differs from the pattern described by the Gang of Four, in case you have seen it in blog posts or books and have been confused by the difference. It has arisen recently in some of the less convenient programming languages than Python, and substitutes for those languages’ lack of optional parameters.
The degenerate Builder addresses this problem:
- A programmer designs a class with immutable attributes. Once a class instance is created, its attributes will be impossible to modify.
- The class has not just one or two, but many attributes — imagine that it has a dozen.
- The programmer is trapped in a programming language that lacks Python’s support for optional arguments. A call to the class constructor will need to supply a value for every single attribute each time the class is instantiated.
You can imagine the verbose and unhappy consequences.
Not only will every single object instantiation
have to specify every one of the dozen attributes,
but if the language does not support keyword arguments
then each value in the long list of attributes will also be unlabeled.
Imagine reading a long list of values like
None
None
0
''
None
and trying to visually pair each value
with the corresponding name in the attribute list.
A comment next to each value can improve readability,
but the language will not provide any guard rail
if a later edit accidentally moves the comments out of sync
with the actual attributes.
To escape their dilemma and achieve some approximation of the happy brevity that Python programmers take for granted, programmers facing this situation can supplement each class they write with a second class that serves as a builder for the first. The differences between the builder and the class it constructs are that:
- The Builder class carries all the same attributes as the target class.
- The Builder class is not immutable.
- The Builder class requires very few arguments to instantiate. Most or all of its attributes start off with default values.
- The Builder offers a mechanism for each attribute that starts with a default value to be rewritten with a different value.
- Finally, the Builder offers a method that creates an instance of the original immutable class whose attributes are copied from the corresponding attributes of the Builder instance.
Here is a tiny example in Python — non-tiny examples are, alas, painful to read because of their rampant repetition:
# Slightly less convenient in Python < 3.6:
from typing import NamedTuple
class Port(NamedTuple):
number: int
name: str = ''
protocol: str = ''
# Real Python code takes advantage of optional arguments
# to specify whatever combination of attributes it wants:
Port(2)
Port(7, 'echo')
Port(69, 'tftp', 'UDP')
# Keyword arguments even let you skip earlier arguments:
Port(517, protocol='UDP')
# But what if Python lacked optional arguments?
# Then we might engage in contortions like:
class PortBuilder(object):
def __init__(self, port):
self.port = port
self.name = None
self.protocol = None
def build(self):
return Port(self.port, self.name, self.protocol)
# The Builder lets the caller create a Port without
# needing to specify a value for every attribute.
# Here we skip providing a “name”:
b = PortBuilder(517)
b.protocol = 'UDP'
b.build()
At the expense of a good deal of boilerplate — which becomes even worse if the author insists on writing a setter for each of the Builder’s attributes — this pattern allows programmers in deeply compromised programming languages to enjoy some of the same conveniences that are built into the design of the Python “call” operator.
This is clearly not the Builder pattern from the Gang of Four.
It fails to achieve every one of the “Consequences”
their chapter lists for the Builder pattern:
its build()
method always returns the same class,
instead of exercising the freedom
to return any of several subclasses of the target class;
it does not isolate the caller
from how the target class represents its data
since the builder and target attributes correspond one-to-one;
and no fine control over the build process is achieved
since the effect is the same — though less verbose —
as if the caller had simply instantiated the target class directly.
Hopefully you will never see a Builder like this in Python, even to correct the awkward fact that named tuples provide no obvious way to set a default value for each field — the excellent answers to this Stack Overflow question provide several more Pythonic alternatives. But you might see it in other languages when reading or even porting their code, in which case you will want to recognize the pattern so that you can replace it with something simpler if the code is re-implemented in Python.


Alicia Keys will return as host of the Grammy Awards in 2020
by Faith Karimi, CNNAlicia Keys is hosting the Grammy Awards again next year.
Her 2020 return for the 62nd Annual Grammys puts her in rare company after she became the first female to host the awards in 14 years. Before that, the last woman was Queen Latifah in 2005.
"At first, I did think last year was a one-time thing, but when the opportunity came back around, there was no question about returning as host," Keys told Billboard in a statement. "Last year was such a powerful experience for me. Not only did I feel the love in the room, but I felt it from around the world and it confirmed the healing and unifying power of music."
The show will take take place on January 26 at the Staples Center in Los Angeles.
This year, Keys said her status as a regular award receiver helped with her hosting duties.
"I know what it feels like to be on that stage, and I'm going to bring that vibe and energy," the entertainer said.
On Wednesday, Keys had some fun with the announcement, posting a video of herself as the current Alicia Keys discussing hosting with Alicia Keys from February 2019.
"The people wanna know: How ya gonna top this Alicia, c'mon!," last year's version of Keys says in the video.
The-CNN-Wire
™ & © 2019 Cable News Network, Inc., a WarnerMedia Company. All rights reserved.


Ex-Wolves writer David Instone to give talk
A former Express & Star sports journalist and writer who wrote a book on Jack Hayward will give a talk on Wolverhampton Wanderers in Newport.
by Rob SmithDavid Instone, who worked as a sports writer and Wolves correspondent, will appear at the Navy Club in Bellmans Yard at 7.30pm on Wednesday.
The talk will be followed by a question and answer session, and there will be a bar and raffle.
The event is being held to support Newport's mayor Peter Scott's appeal for the town's food bank and the Newport Cottage Care League of Friends' new x-ray machine appeal.
The mayor said: "Hear the history of our closest Premier League team. Special guests include Wolves legend John McAlle and others.
"Tickets just £5 in advance or £6 on the door from Guildhall or Hey Jude. A night not to be missed for all Wolves and football fans."


| Company | Contact | Country |
|---|---|---|
| Alfreds Futterkiste | Maria Anders | Germany |
| Berglunds snabbköp | Christina Berglund | Sweden |
| Centro comercial Moctezuma | Francisco Chang | Mexico |
| Ernst Handel | Roland Mendel | Austria |
| Island Trading | Helen Bennett | UK |
| Königlich Essen | Philip Cramer | Germany |
| Laughing Bacchus Winecellars | Yoshi Tannamuri | Canada |
| Magazzini Alimentari Riuniti | Giovanni Rovelli | Italy |
| North/South | Simon Crowther | UK |
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a spanthis is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is other paragraph


The Department of Computer Engineering was established in July 1983. The department offers a 4 year course, B.Tech. in Computer Sc. & Engineering,
5 year Integrated Dual Degree (B.Tech. and M.Tech.) in Computer Sc. & Engineering from 2005-2006, and Ph.D. degree in various specializations of
Computer Sc. and Engineering. Computer Sc. & Engineering is the most sought-after branch for the JEE selected students that come to the Institute.
Our graduates have distinguished themselves in higher studies at the top Universities. They also occupy positions of eminence in the computer industry.
Our Alumni remain in constant touch with us and are contributing in the development of the department. Placements for our graduates are the best in the
Institute. The faculty members of the department have international experience and training. The departmental research is focused in the areas of
Artificial Intelligence, Neuro Computing, Parallel Processing,Software Engineering, Image Processing and Computer Vision, Medical Image Processing, Pattern
Recognition, Datamining and Webmining, Biometrics, semantic web, Natural Language Processing (NLP), Machine Learning, and Information Extraction. Besides plan funding,
the Department attracts financial inputs through externally funded projects and alumni donations. The department was selected by the Ministry of Communications and
Information Technology as a node in the National endeavor on Technology Development for Indian Languages. The department has all the facilities to carry out the
related teaching and research work.
Vision And Mission
Vision:
To promote innovation centric education and perform cutting edge research in Computer Science & Engineering.
Mission:
1. Continuously endeavour to create and sustain an academic environment conducive to the highest level of research and teaching.
2. Develop human resources with sound knowledge in theory and practice of Computer Science & Engineering.
3. Facilitate the development of academia-industry collaborations and societal outreach programmes.


Home to all homepages
A personal curated board game list
Follow or contact me
A short summary about my inspiration
Start by adding your favorite board games:


This is the mobile version of the interactive bridge evaluator.
To get started, click the
This is an intereactive bridge hand evaluator.
Enter your hand, click "evaluate," and it applies a number of evaluators to the hand.
What to do when you find bugs? Please let me know! Two methods:


In this page:
One of the features of the framework is the ability to run it as a command line application using terminals. This can be usefull if the server that the application is deployed in have SSH access. The command line interface of the framework has a limit functionality but the developer can extend it by creating custom commands.
After completing the next set of tutorials, the developer should be able to use the framework using CLI. Also, he should be able to create his own custom commands and run them.
Depending on the operating system that will be in use, the run way may differ. But there is one thing which is common. The first thing is that we must know where PHP interpeter is installed. After that, we run it as follows:
PATH_TO_PHP webfiori
Let's assume that PHP interpeter is installed on Linux. If the framework is downloaded and all standard libraries of the framework are also included, the following output would be seen when running the command php webfiori
:
$ php webfiori
|\ /|
| \ /\ / | | / \ |
\ \ / \ / / __________ |\/ \/|
\ \ / \ / / / /______ / | \/ \/ |
\ \/ /\ \/ / / / | \ / |
\ / \ / / /______ |\ | /|
\ / \ / / /______ / \ | /
\/ /\ \/ / / |
\ / \ / / / |
______ /__/ |
WebFiori Framework (c) Version 1.1.0 CR-5
Usage:
command [arg1 arg2="val" arg3...]
Available Commands:
help
Display CLI Help. To display help for specific command, use the argument "--command-name" with this command.
v
Display framework version info.
show-config
Display framework configuration.
list-themes
List all registered themes.
list-jobs
List all scheduled CRON jobs.
list-routes
List all created routes and which resource they point to.
cron
Run CRON Scheduler
route
Test the result of routing to a URL
Once this output appears, it means everything is ready to use the framework in CLI environment.
In order to run a command, we have to understand the structure of each command.
The overall format of any command in the framework is this: command-name [arg1 arg2="something" arg3...]
. This format means that every command in the framework consist of the following parts:
command-name
part).[arg1 arg2="something" arg3...]
).The name of the command is usually something like help
or h
. The arguments usually come after the name of the command. Some commands does not have arguments and some do. In addition, a command can have optional arguments and mandatory ones.
One of the commands that the framework supports is the command help
. When we run it without any arguments, we would see the following output:
$ php webfiori help
Usage:
command [arg1 arg2="val" arg3...]
Available Commands:
help
Display CLI Help. To display help for specific command, use the argument "--command-name" with this command.
v
Display framework version info.
show-config
Display framework configuration.
list-themes
List all registered themes.
list-jobs
List all scheduled CRON jobs.
list-routes
List all created routes and which resource they point to.
cron
Run CRON Scheduler
route
Test the result of routing to a URL
From the help, we can notice that the help supports one argument and the name of the argument is --command-name
. This argument is used to show help for a specific command. For example, if we want to show the help for the command cron
, we can do it as follows:
$ php webfiori help --command-name=cron
cron
Run CRON Scheduler
Supported Arguments:
p: CRON password.
check: [Optional] Run a check aginst all jobs to check if it is time to execute them or not.
force: [Optional] Force a specific job to execute.
job-name: [Optional] The name of the job that will be forced to execute.
show-job-args: [Optional] If this one is provided with job name and a job has custom execution args, they will be shown.
show-log: [Optional] If set, execution log will be shown after execution is completed.
One of the features of the framework is that it allows the developers to extend the functionality which is provided by CLI engine of the framework by creating their own custom commands. Creating new one is very simple. It involves the following steps:
CLICommand
CLICommand::exec()
.CLI::register()
.The last setp must be performed if the command class is created outside the folder app/commands
. If the command is created inside that folder, it will be auto-registered. What we will do next is to create a very basic command which will only show output message that says "hi".
The first step in creating new command is to create new PHP class and make the class a child of the class CLICommand
. If we checked the constructor of the class, it takes 3 parameters. The first one is the name of the command, the second one is an array of arguments and the last one is a description of the command.
The name of the command is a string which will be used to call it from the terminal. The arguments is an array that contains sub associative arrays of arguments that the command needs. The description of the command is a string that will be shown when the command help
is executed.
Suppose that we would like to implement a command that takes the name from the terminal as an input and display the string "Hi ". Let's assume that the name of the command is say-hi
. The command that will be created will be in the folder app/commands
. The following code snippit shows how this command is created.
namespace webfiori\entity\cli;
use webfiori\entity\cli\CLICommand;
class SayHiCommand extends CLICommand {
public function __construct() {
parent::__construct('say-hi', [], 'Takes a name as input and say "Hi".');
}
public function exec() {
$name = $this->getInput('Give me your name:');
$this->println("Hi $name");
return 0;
}
}
// We have to do this step if the command belongs to a namespace.
return __NAMESPACE__
Before we continue, let's explain what we did. The method CLICommand::getInput()
is used to read user input from STDIN
. The method accepts 3 parameters but for now, we will only use the first one. The first parameter of the method is simply a prompt text that will be shown to the user. The text is used to specify what we would like to get from the user.
The method CLICommand::println()
is used to show output. It will send it directly to STDOUT
.
If the command is created inside the folder app/commands
, it will be registered automatically. But if the command is created somewhere else, it must be registered manually. To register any custom-created command, the class InitCliCommands
can be used to complete this task. The class has one static method at which the developer can modify its body. The following code shows how to register new command.
namespace webfiori\ini;
use webfiori\entity\cli\CLI;
//first, import the command.
use webfiori\entity\cli\SayHiCommand;
class InitCliCommands {
public static function init() {
//After importing, register it.
CLI::register(new SayHiCommand());
}
}
When the command help
is executed, the newly created command will appear at the end of supported commands list as follows:
say-hi
Takes a name as input and say "Hi".
When the command is executed, the output in the terminal will be similar to the one shown in next snippit.
$ php webfiori say-hi
Give me your name:
Ibrahim BinAlshikh
Hi Ibrahim BinAlshikh
Usually, a command can have some arguments which are passed to it when it is called. Some arguments can be optional and some are not. In addition to that, some arguments might work as an options. If added, they will make the command behave in different way.
Adding support for arguments to a command can be achived in 3 ways:
CLICommand
.CLICommand::addArgs()
to add multiple args at once.CLICommand::addArg()
to add one argument.What we will do is to use the constructor of the class to add arguments to the command which we created in last lessen. We will add two arguments, --name
and --email
. If the name is not provided, we will simply read it when the job starts to execute.
namespace webfiori\entity\cli;
use webfiori\entity\cli\CLICommand;
class SayHiCommand extends CLICommand{
public function __construct() {
parent::__construct('say-hi', [
'--name' => [
'optional' => true
],
'--email' => [
'optional' => true
]
], 'Takes a name as input and say "Hi".');
}
public function exec() {
$name = $this->getArgValue('--name');
if ($name === null) {
$name = $this->getInput('Give me your name:');
}
$email = $this->getArgValue('--email');
$this->println("Hi $name");
if ($email === null) {
$this->warning('Email is not provided.');
} else {
$this->println("Email address: $email");
}
return 0;
}
}
Now that we have our command, we can run it. There are 3 possibilites, one is that we have everything as arguments, the second is we have only the --name
argument and the last is to have none. The next output will be shown when running the command with all arguments.
$ php webfiori say-hi --name="Ibrahim"<EMAIL_ADDRESS>Hi Ibrahim
Email address<EMAIL_ADDRESS>The next output will be shown when running the command with the argument --name
is set and the argument --email
is missing.
$ php webfiori say-hi --name="Ibrahim"
Hi Ibrahim
Warning: Email is not provided.
You can notice the statement which was shown by the method CLICommand::warning()
. It is one of the methods which is used to format the output.
The next output will be shown when running the command without providing any arguments.
$ php webfiori say-hi
Give me your name:
Ibrahim Ali
Hi Ibrahim Ali
Warning: Email is not provided.
We have seen how to get user input from the terminal using the method CLICommand::getInput()
when we implemented a basic command. The framework provides the developers with some of the commonly used helper inputs like asking a question. We will take a look at the available options.
Prompt is used to read any type of user input. The method CLICommand::getInput()
is used to perform that task. The method accepts 3 parameters. The first one is the text that will be shown to the user. The second one is a default value which will be used when the user hit "Enter" without typing anything. The last one is a closure which can be used to validate user input.
The following code snippit shows how to get user input as prompt.
$userInput = $this->getInput('Give me your name:');
$this->println("Your name is: $userInput");
The following code snippit shows how to use default values with prompt in addition to using a validation function. In this case, the default value will be "Orange".
$userInput = $this->getInput('Enter a fruit name:', 'Orange', function ($userInput){
$allowedVals = ['Apple','Orange','Lemon'];
if (in_array($userInput, $allowedVals) {
return true;
}
return false;
});
$this->println("Fruit name: $userInput");
The method CLICommand::confirm()
is used to ask the user question which can have two answers only, yes or no. The method have two parameters. The first one is the text that will be shown in the console and the second is a boolean that represents default value if the user hit "Enter" without specifying an answer. The method will return true if the answer was "yes" and false if the answer is "no". The default answer will appear in upper case in terminal if specified.
To submit the answer, the user have to type n for "no" or y for "yes" in the console and hit "Enter". Note that if the user submitted any other answer, the method will keep asking till he submit one of the two answers.
The following code sample shows how to use this method.
if ($this->confirm('Are you sure that you would like to continue?')) {
$this->success('Will continue.');
} else {
$this->warning('Will stop here.');
}
The following image shows the output of the command when executed.
A multiple choice input is a way to make the user select one of more than one choice. The method CLICommand::select()
is used to show the question and the possible choices. The method accepts 3 parameters. The first one is the text that will be shown to the user. The second one is the array that contains the choices at which the user will select from. The last parameter is an optional default value to use in case the user hit "Enter" without selecting any choice. The user can select an answer by supplying its number as an input or the full text of the choice.
The following code sample shows how to use it by asking a simple question.
$choices = [
'PHP',
'JavaScript',
'C++','HTML',
'C#'
];
$answer = $this->select('Which of the following is not a programming language?', $choices);
if ($answer == 'HTML') {
$this->success('Correct Answer');
} else {
$this->error('Wrong answer.');
}
One of the things that programmers like are the colors which appear in any terminal. In addition to making the output looks nice, colors can be used as an indicator for warnings or errors during execution. The framework supports output formatting using colors if the method CLICommand::println()
or the method CLICommand::prints()
. In addition to that, it is possible to format a string using ANSI escape sequences using the static method CLICommand::formatOutput()
. The way to formate the output will be the same for the 3 methods.
Formatting output is very simple. The method CLICommand::prints()
takes two parameters, the first one is the output value and the second one is an associative array of formatting options. If the developer would like to output ANSI formatted text, simply he must supply the second argument. In order to change the color of the output, we must set the value of the index color
color to the color that we would like to use.
$this->prints('This is a red text ', [
'color' => 'red'
]);
$this->prints(', this is blue text ', [
'color' => 'blue'
]);
$this->prints('and this is green text ', [
'color' => 'green'
]);
In addition to changing the color of the output, it is possible to set the background color of the text by adding the index bg-color. Also, the array can have the following text formatting options added as booleans:
bold
: Make output bold.underline
: Make output underlined.blink
: Make the output blink.reverse
: Reverse output colors (make background color become the text color and vice versa).The following code snippits uses the method CLICommand::println()
to show the output.
$this->println("Normal Text");
$this->println("Bold light blue text", [
'color' => 'light-blue',
'bold' => true
]);
$this->println("%s", "Underlined with green background.", [
'bg-color' => 'green',
'underline' => true
]);
$this->println("%s", "Blinking With Red Background", [
'bg-color' => 'red',
'blink' => true
]);
The class CLICommand
provides the developer with methods which can be used to display the output formatted without using formatting options. The methods can be used to show output for repeated tasks. The methods are:
CLICommand::error()
: Output a message that represents an error.CLICommand::info()
: Output a message that represents extra information().CLICommand::success()
: Output a message that represents success state.CLICommand::warning()
: Output a message that represents a warning.$this->error('Unable to log in.');
$this->warning('The connection was terminated and output might be not as expected.');
$this->success('Connection was restored.');
$this->info('Useful extra info.');


Far between sundown's finish and midnight's broken toll,
We ducked inside the doorway as thunder went crashing,
As majestic bells of bolts struck shadows in the sounds,
Seeming to be the chimes of freedom flashing,
Flashing for the warriors whose strength is not to fight,
Flashing for the refugees on the unarmed road of flight
And for each and every underdog soldier in the night,
And we gazed upon the chimes of freedom flashing.
Through the city's melted furnace, unexpectedly we watched
With faces hidden as the walls were tightening,
As the echo of the wedding bells, before the blowing rain,
Dissolved into the bells of the lightning,
Tolling for the rebel, tolling for the rake,
Tolling for the luckless, the abandoned and forsaked,
Tolling for the outcast, burning constantly at stake,
And we gazed upon the chimes of freedom flashing.
Through the mad, mystic hammering of the wild, ripping hail,
The sky cracked its poems in naked wonder,
That the clinging of the church bells blew far into the breeze,
Leaving only bells of lightning and its thunder,
Striking for the gentle, striking for the kind,
Striking for the guardians and protectors of the mind,
And the poet and the painter, far behind his rightful time,
And we gazed upon the chimes of freedom flashing.
In the wild, cathedral evening the rain unraveled tales
For the disrobed, faceless forms of no position,
Tolling for the tongues with no place to bring their thoughts,
All down in taken-for-granted situations,
Tolling for the deaf and blind, tolling for the mute,
For the mistreated, mate-less mother, the mis-titled prostitute,
For the misdemeanor outlaw, chained and cheated by pursuit,
And we gazed upon the chimes of freedom flashing.
Even though a cloud's white curtain in a far-off corner flared
And the hypnotic, splattered mist was slowly lifting,
Electric light still struck like arrows, fired but for the ones
Condemned to drift or else be kept from drifting,
Tolling for the searching ones on their speechless, seeking trail,
For the lonesome-hearted lovers with too personal a tale,
And for each unharmful, gentle soul misplaced inside a jail,
And we gazed upon the chimes of freedom flashing.
Starry-eyed and laughing, as I recall, when we were caught,
Trapped by no track of hours for they hang suspended,
As we listened one last time and we watched with one last look,
Spellbound and swallowed till the tolling ended,
Tolling for the aching, whose wounds cannot be nursed,
For the countless, confused, accused, misused, strung-out ones and worse,
And for every hung-up person in the whole wide universe,
And we gazed upon the chimes of freedom flashing.


Inspired in 2012 from the loss of valued friends due to gang affiliation and crime, Stephen Addison launched the project ‘Box Up Crime’ in 2013.
Read moreNothing is more heartwarming than helping those who truly need it and also deserve it. What's stopping you from joining the team?
Read moreWe are always looking into more ways to help others and innovate our brand. Have look at our future events to see what you can be apart of!
Read more


{% extends "base.html" %} {% block content %}
You chose {{ beads_user_chose }} beads:
{{ more_beads_message }}


As college students ourselves, bills, bills and more bills are always given and yet, we never could find a way to track them, split them and sort them out quickly and conveniently. Eventually I decided that the only way to find a solution was to design and develop one myself.
This Web app is simple and very useful for many people, especially students to roam and party freely without tracking of whom they are owing and who is owing them, in one application. After all, everyone has bills to pay and at one time or another needs to split them. So I hope this web application will make your life a little easier!
Split your bills
Add your own expense
Send a reminder mail


{{_('Success')}}
{{_('Your fault has successfully been reported. We will endevour to respond to all faults within two weeks.')}}
{{details|safe}}


LEICESTER
PREREQUISITES
ACADEMIC PROGRAM
DURATION
HOUSING
Residence hall
COST
Estimated cost of $8,400 for full year
This estimated cost includes room and board, airfare, OISP* administration fee, ISU reduced
tuition, international student ID card, local transportation, books and supplies
Financial aid is available to those who qualify
HOW TO APPLY
Contact an advisor in OISP*, Fell Hall 308, Phone: 438-5365
APPLICATION DEADLINE
The 1st Monday in February


Across: 7. He has wooden propeller to carry back crying agent (5) 8. Stop holding us, Lawrence, in Claytown (2 7) 9. Richard's height? (5) 10. Duck and swans walk in Squire's field (4 5) 12. Harmless single politician associates with the best circle (11) 16. Reply to question of marriage by newcomer inspires devotion (4) 17. Select about one hundred in order (5) 18. Producer of note needs one burst of energy initially (4) 19. Upsets my digestion and annoys me intensely! (5 2 4) 22. "Fat Rory be comin' in at 2!" (9) 24. Knights, bishops and men in long marches south (5) 25. Looked after in Fowey or Charlestown? (9) 26. Some deviously lying person acts in an underhand way! (5) Down: 1. Walk to 22 along Powers Road about now (9) 2. Down by the old station have a wander about behind the place for a cuppa (5 4) 3. Hold in back pockets (4) 4. Confused nun stays in to phone magazine to obtain length of feature film (7 4) 5. Cats and dogs run back south at Bedruthan (5) 6. Set down in the heart of Fowey.... (5) 11. ....Is Peter kept here in Fowey pub? (4 7) 13. Transform her in to flower of Germany (5) 14. Do cats wait expectantly at harbour entrance? (9) 15. Obstacles on the North coast near Tintagel (9) 20. Cornish saint makes search for gold without hesitation (5) 21. Can be caught in pots or with flailing oars! (5) 23. Drink before ten, boy! (4)


2019-09-13 / Conference ECTRIMS 2019
Kapica-Topczewska, K; Czarnowska, A; Collin, F; Tarasiuk, J; Chorąży, M; Kwaśniewski, M; Kochanowicz, J; Kułakowska, A
Background
Presence of anti-JC-virus antibodies (JCVAb) is associated with increased risk of natalizumab-related progressive multifocal leukoencephalopathy (PML). Less it is known about seroconversion rate and time to seroconversion in relapsisng-remitting multiple sclerosis (RRMS) patients treated with natalizumab.
Goals
The aim of the study was to assess JCVAb prevalence, eroconversion rate, time to seroconversion and risk of PML in RRMS patients treated with natalizumab in Poland.
Methods
Demographic and clinical data of all Polish RRMS patients treated with natalizumab reimbursed by National Health Fund (NFZ) were prospectively collected in electronic files using the Therapeutic Program Monitoring System (SMPT) provided by NFZ. The assessment of JCVAb presence (without collection of JCVAb index value) in serum (Unilabs, STRATIFY JCV: anti-JCV antibody ELISA) was done at the beginning of therapy and then repeated every 6 months. The maximum follow-up time was 4 years. In Poland, since 2013, according to the NFZ drug programme guidance only patients with negative JCVAb test have been treated with natalizumab.
Results
In all Polish MS centres 362 patients have been treated with natalizumab since 2013. 210 negative JCVAb patients with at least 12 (±3) months of observation (149 female, 61 male; the median age was 33 years) were included in the study. During follow-up period JCVAb status changed from negative to positive in 33 patients (15%). For half of the patients, the seroconversion was diagnosed one 1 year after starting natalizumab treatment. In 6 (2.9%) patients during follow-up JCVAb status changed again from positive to negative. In Poland, before establishment of NFZ drug programme, 4 cases of PML in patients treated with natalizumab in clinical trial STRATA (NCT00297232) were diagnosed. In the NFZ drug programme, since 2013 no patient treated with natalizumab has been diagnosed with PML.
Conclusions
Natalizumab therapy in JCV seronegative RRMS patients is very safe and results in absence of PML cases. In Poland, JCV seroconversion rate is similar to observed in other European countries.
Shiny Applications programmed with R facilitate the selection of scenario; e.g. compare a selection of patients without relapses to patients who experienced relapse during the first year of treatment.
comments powered by Disqus


I like writing in web browser for two reasons
That is all I need while I am writing. While your preference of editors may vary I use Abstract, a minimalist markdown based editor that I created, for all of my writing. I made it to suit my requirements and I was happy with the result until I found out that it had no offline version.
It never occurred to me that there could be situations where there is limited or even no access to internet. Until I visited my grandmother a couple of days back I was quite content in using Abstract online. I knew that she had no internet connection but I thought that since I had a local copy of the repository with me I would be able to use it offline.
 Hence I decided to make a standalone offline version for circumstances like these where there is no online access.
The transformation was relatively simple. I copied all the javascript and css files that I was getting from the cdn into my local folder , pointed to the right location in the html file and I was set. The first thing that I did after I came back was to create a new branch and upload the offline version there. It is only 300 kb in size and you can download it here.
I was also considered creating browser extensions for Abstract but I finally decided against it. Why?
There is no unified standard for browser extensions. I would have to learn how to create extension for each browser and then make it. Too much work for me with little reward.
It is not needed. Since I already created an offline version it would open up in any (modern) browser you are using just by double clicking the html file. It will just work. As simple as that.
So there was no need to write an extension upload it on the market place and have you search and download it from there. Too much work for you as well. Now you can simply download the offline branch of the repo extract it and you are good to go. It will work with whatever (modern) browser that you have set as default. Nice and easy.
There is only one change that I have made in the way that Abstract works. You might already know that Abstract saves all the data in your browser using HTML 5 local storage API. Previously I used to use the title of the draft as the key and all the meta data used to go with the contents of the post itself. While it worked fine this method was slower. Because to list all the drafts Abstract had to read not only the key but the contents of the post as well to get all the meta data from it.
I changed this behavior by adding the meta data to the key itself. So the date, word count and title are all a part of the key now. Abstract only reads the contents of the post if you actually decide to edit it. This makes it a tad bit more faster in loading the drafts especially if you have a large number of them.
So that's it. You can now use Abstract even if you don't have any internet connection. Happy writing.


RAM SAH
About
Portfolio
Contact
WELCOME !
To My Portfolio Page
Check Out My Awesome Designed Applications Page With
Github Repository link.
Get Started!
Checkout My Project-2
Wine 'A' Lot Management System Help to Visualize Historical Sales Data !
Checkout project-Node Express Handlebars
Command-line Application for Resturant Service!
Checkout project-NodeJs
Command-line Application to Track Employee !
Checkout project
Find a Dog Adoption Center to Your Nearest Location !
Checkout Note-Taker project-NodeJs
Command-line Application Note-Taker!
Checkout project-NodeJs
Command-line Application to Generates Team Profile !
Checkout Day Planner
My Day-Planner Scheduler Web Page !
Checkout Weather-Dashboard:
My Weather-Dashboard Web Page to find
5-Days Weather Forcast of any City !
Checkout Code Quiz Taker:
Code Quiz Taker Web Page to test Quiz knowledge on time frame !
Checkout Password Generator:
Password Generator Web Page help to generaes passwords on the basis of prompt questions !
Download my Resume!
Checkout Resume!


BaseStore
Extends:
Direct Subclass:
Indirect Subclass:
A base class for resource stores.
Stores handle dispatch events from resources. When anything changes, the store's change event is omitted.
This store exposes a few methods (from it's base class). These include:
at(key)
- returns the object with the specified key. Raises when not foundget(key)
- returns the object with the specified key. Returns undefined when not foundhas(key)
- returns whether or not an object with the specified key exists in the store
Example:
import APIDispatcher from "../dispatcher/APIDispatcher";
import Actions from "../utilities/Actions";
import Base from "./Base";
let store = new BaseStore(APIDispatcher, new Actions("products"));
// listen for change events
store.addListener(() => console.log(store.get(1)));
// will cause the store to update the state and emit it's change event
APIDispatcher.dispatch({
actionType: "MERGE_PRODUCTS",
items: [{ id: 1, title: "My Product" }]
});
Constructor Summary
| Public Constructor | ||
| public |
constructor(dispatcher: APIDispatcher, actions: Actions) |
Method Summary
| Public Methods | ||
| public |
Determines whether or not the state of this store has changed. |
|
| public |
Used to reduce a stream of actions coming from the dispatcher into a |
|
| public |
where(source: QueryObject): Array<object> Queries the store for resources matching the source object |
Public Constructors
Public Methods
public areEqual(state1: object, state2: object): boolean source
Determines whether or not the state of this store has changed.
This method should not be called directly
public reduce(state: object, action: object): object source
Used to reduce a stream of actions coming from the dispatcher into a single state object. This will handle merge and clear actions for this resource.
This method should not be called directly, but rather via a call to the dispatcher's dispatch
method.
public where(source: QueryObject): Array<object> source
Queries the store for resources matching the source object
Params:
| Name | Type | Attribute | Description |
| source | QueryObject |


--- layout: post title: Haiku - I description: There was a lizard. image: tags: [haiku, lizard, seeing] ---
There was a lizard, quickly I scared it away, now, I see them both.


Before Change
C=_svc_C(name + ".linear") if C is None else C,
shrinking=hp_bool(
_name("shrinking")) if shrinking is None else shrinking,
tol=_svc_tol(name) if tol is None else tol,
max_iter=_svc_max_iter(name) if max_iter is None else max_iter,
verbose=verbose,
random_state=_random_state(_name(".rstate"), random_state),
After Change
rval = scope.sklearn_SVC(
kernel="linear",
C=_svm_C(_name("C")) if C is None else C,
shrinking=hp_bool(
_name("shrinking")) if shrinking is None else shrinking,
tol=_svm_tol(_name("tol")) if tol is None else tol,


--- layout: post title: 'Vacation: Walk in the park.' categories: [] tags: [] status: publish type: post published: true meta: _original_post_id: '' _original_import_author: John Duprey author: ---
What a beautiful day! In the picture below, M and I stop for a snack while our hound catches his breath.
Sent from my iPhone


Modelling a dynamic entity-based decision table in an RDBMS
Usually local government units have different tax schedules for different types of fees. Let’s take for example taxes for businesses which is computed during renewal of business permits.
Table 1. Business Tax Schedule, with 2 Parameters
| Business Categories | Gross Sales | Tax |
|---|---|---|
| A | < 10000 | 198.00 |
| A | >= 10000 & < 15000 | 264.00 |
| A | >= 15000 & < 20000 | 362.00 |
| … | … | … |
| B | < 1000 | 21.60 |
| B | >= 1000 & < 2000 | 39.60 |
| B | >= 2000 & < 3000 | 60.00 |
| … | … | … |
Given the table above, to determine the tax we need to know the Business Category and Gross Sales of the business. With that in mind we can think of representing this just a simple table, say reference_business_tax
, with 4 fields : business_category
, min_gross_sales
, max_gross_sales
, tax
.
Image 1.  Continuation of Business Tax Schedule, with 3 Parameters
| Business Categories | Business Sub-Categories | Gross Sales | Tax |
|---|---|---|---|
| C | A | < 10000 | 99.00 |
| C | A | >= 10000 & < 15000 | 132.00 |
| C | A | >= 15000 & < 20000 | 181.00 |
| … | … | … | … |
| C | B | < 1000 | 10.80 |
| C | B | >= 1000 & < 2000 | 19.80 |
| C | B | >= 2000 & < 3000 | 30.00 |
| … | … | … | … |
Now with an additional parameter, Business Sub-Category, our original design doesn’t fit the tax schedule anymore. There are also other miscellaneous fees included in the computation that has their own reference fee schedule, like the fee for the Business Metal Plate:
Table 3. Metal Plate Fee Schedule
| Enterprise Scale | Metal Plate Fee |
|---|---|
| Micro-Industries | 200.00 |
| Cottage Industries | 200.00 |
| Small scale industries | 300.00 |
| Medium scale Industries | 1000.00 |
| Large scale Industries | 1000.00 |
The Metal Plate Fee uses a different set of parameters. If we are to model it, our original design can’t accommodate it and we have to create a separate reference table for it.
The challenge for a system like this is you can’t have just a single reference table that could accommodate all fee schedules, also you have to keep in mind that we are designing for the long-term use and maintainability of the product. If we are to create a reference table for each of the fees, then everytime there’s a change in the rules for deriving a business tax (ie. use a different parameter instead of Business Category, or add an additional parameter like Establishment Type) then it would require us to remigrate the tables, the same case would be if there are any other new fees that are introduced through ordinances (see sample reference tables in Image 2). That doesn’t make the system maintainable and could potentially explode to X number of tables.
Image 2. Sample reference tables
Instead of creating a reference table for every fee, we can make use instead of decision tables. A decision table contains decision rules which is composed of the conditions, the conditions states, and the desired actions or results for each state. The structure of a decision table may vary depending on the implementation. In our case we represent the decision table in this manner:
Image 3. Different components of a decision table
Modelling our solution:
Image 4. UML ERD for our decision table implementation
Following the design above would allow us to model any decision table based on any entity in the system.
Instead of creating database tables for different fees, we could just create records condition_tables
table.
For the columns of the fee table, we create records in condition_fields
table and associate it to condition_tables
through condition_table_fields
.
For every row in the fee table, we create records in condition_record
.
For each cell in the row, just create a record in the condition_record_items
table and associate it to the corresponding condition_record
.
Let’s simulate how the table records would look like for Business Tax (with 3 parameters):
Image 5. Relationship of Condition Table and Condition Fields
In the diagram above we have a record in condition_tables
table for CTBTX which represents the condition table for Business Tax.
Condition table CTBTX has the following columns: Business Categories, Minimum Gross Sales, and Maximum Gross Sales, which are defined by the following records in condition_fields
table, respectively: CFBCT, CFNGR, and CFXGR.
You might ask, where do condition fields come from? Condition fields are just fields from any other table in the system. For example there may be a business_categories
table with the field code
, and business_earnings
table with the field gross
. This makes the creation of condition tables truly dynamic, allowing field from any table in the system to be part of the data structure definition.
The condition fields are associated to the condition table through the condition_table_fields
table. Each record in the condition_table_fields
table represents a column in the condition table it is associated to (A). The ordering of the columns from left-to-right for a specific condition table is denoted by the order
field. All condition_table_fields
records are also associated to the condition fields they represent (B). Using these associations we can model each column in the condition table (C). Also, take note of the oper
field in condition_table_fields
table, it will be useful later as we go through the individual rows in the condition table.
Image 6. Relationship of Condition Records to the Condition Table
The next component that makes up the structure of a condition table are its rows. Each row in the condition table represents the needed state of each parameter to be able to obtain the value at that row. For example, in Image 6, to get the value 264, the Business Category should be = ‘A’, Minimum Gross Sales should be >= 10,000.00, and Maximum Gross Sales should be < 15,000.00. Now if you notice, this is where the oper
field comes in. The specific values per parameter should satisfy the conditional operator defined by oper
.
Rows of the condition table are maintained in the condition_records
table. Each record is associated to the condition table it belongs to (D), and each record represents one row in the condition table (E). The output value for a specific row is also stored in the condition_records
table (F).
Image 7. Relationship of Condition Record Items to the Condition Record
The expected state for each parameter per row is stored in the condition_record_items
table. Each record in condition_record items
, represent a single cell for a specific row in the condition table it is associated to (G).
Here’s a mapping of the entire condition table data structure:
Image 8. Full mapping of the condition table data structure
Now that the condition table structure is complete, next is we have to be able to retrieve values from the condition table. The retrieval process is fairly simple. Assuming we have this JSON as input:
{
"params" : {
"condition_table" : "CTBTX",
"inputs" : [
{ "condition_field" : "CFBCT", "value" : "B" },
{ "condition_field" : "CFNGR", "value" : "12000" },
{ "condition_field" : "CFXGR", "value" : "12000" }
]
}
}
To be able to retrieve the corresponding condition table entry we just have to access the condition table indicated in the input param, then traverse each condition record of that condition table, then for each condition record traverse each condition record item comparing it to its corresponding input determined by the order of the condition field. Operator used for comparison is the one defined in the condition table fields entry. The input will only be considered as match if all comparison returns true. The condition record value for the first condition record that matches the input is returned and traversal immediately stops.
Image 9. Retrieval from a condition table


Johnny Hiland is perhaps one of the most versatile guitar players in the business. While he started off playing traditional bluegrass, he expanded and evolved to play in virtually any genre from country and jazz to rock and metal. No matter what genre he is playing, he is sure to both impress and inspire.
Johnny moved to Nashville in 1996 and quickly became a successful session musician for country stars such as Toby Keith, Ricky Skaggs, Janie Fricke, Trick Pony, and Hank Williams III. It wasn’t long before he was signed to Steve Vai’s Favored Nations label as a solo guitarist. The Johnny Hiland Band currently has two albums out, but Johnny has performed on countless others.
As a guitarist of such versatility, Johnny needed a guitar that could literally do it all. When he met with Paul Reed Smith, they collaborated on a guitar that could play anything from jazz to metal and everything in between. The result of that collaboration is the Johnny Hiland Signature Model.


Inspector Baxter
An introductory ROS project that controls Rethink's Baxter via speech input to learn and fetch objects using point cloud data.
Learn More


If you see this then the SchemA - schematics archive application is still loading... If it doesn't load in few seconds then you need to use a
newer browser (Edge, latest Chrome, Firefox > 39). Mobile devices are supported, depending on the browser and screen size.


| Employee Name | Employee Code | Designation | {{w_row}} | LOP | Net Payable |
| {{row.employee_data.employee_name}} | {{row.employee_data.employee_code}} | {{row.employee_data.designation}} | {{qua}} | {{row.lop}} | {{row.net_payable}} |
| Employee Name | Employee Code | Designation | {{w_row}} | LOP | Net Payable |
| {{row.employee_data.employee_name}} | {{row.employee_data.employee_code}} | {{row.employee_data.designation}} | {{qua}} | {{row.lop}} | {{row.net_payable}} |


{% if data == 1 %}
Normal
You are safe
{%else%}
COVID-19!!!
It's better to have a check up with doctor
{%endif%}
Home Page


Psychometric mixture models based on 'flexmix' infrastructure. At the moment Rasch mixture models with different parameterizations of the score distribution (saturated vs. mean/variance specification), Bradley-Terry mixture models, and MPT mixture models are implemented. These mixture models can be estimated with or without concomitant variables. See vignette('raschmix', package = 'psychomix') for details on the Rasch mixture models.
| Version: | 1.1-4 |
| Depends: | R (≥ 2.10.0), flexmix (≥ 2.3-7), psychotools (≥ 0.4-2) |
| Imports: | graphics, methods, stats, lattice, Formula (≥ 1.1-0), modeltools |
| Suggests: | effects, lmtest, mRm, nnet, numDeriv |
| Published: | 2017-04-07 |
| Author: | Hannah Frick [aut, cre], Friedrich Leisch [aut], Carolin Strobl [aut], Florian Wickelmaier [aut], Achim Zeileis [aut] |
| Maintainer: | Hannah Frick <hannah.frick at gmail.com> |
| License: | GPL-2 | GPL-3 |
| NeedsCompilation: | no |
| Citation: | psychomix citation info |
| Materials: | NEWS |
| In views: | Cluster, Psychometrics |
| CRAN checks: | psychomix results |
| Reference manual: | psychomix.pdf |
| Vignettes: |
Flexible Rasch Mixture Models with Package psychomix Rasch Mixture Models for DIF Detection: A Comparison of Old and New Score Specifications |
| Package source: | psychomix_1.1-4.tar.gz |
| Windows binaries: | r-devel: psychomix_1.1-4.zip, r-release: psychomix_1.1-4.zip, r-oldrel: psychomix_1.1-4.zip |
| OS X binaries: | r-release: psychomix_1.1-4.tgz, r-oldrel: psychomix_1.1-4.tgz |
| Old sources: | psychomix archive |
| Reverse suggests: | ordBTL |
Please use the canonical form https://CRAN.R-project.org/package=psychomix to link to this page.


Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
H
I
K
L
M
N
P
R
S
T
U
V
X
R
recordHistory()
- Method in class model.agent.
Agent
RemoteAgentCollection
- Class in
util.clientconnection
The RemoteAgentCollection is used for remote Agent retrieval and putting.
RemoteAgentCollection(String, int, String, String)
- Constructor for class util.clientconnection.
RemoteAgentCollection
Constructs a new RemoteAgentCollection instance for a certain server.
RemoteLocationCollection
- Class in
util.clientconnection
The RemoteLocationCollection is used for remote location retrieval and putting.
RemoteLocationCollection(String, int, String, String)
- Constructor for class util.clientconnection.
RemoteLocationCollection
Constructs a new RemoteLocationCollection instance to a certain server.
removeID(String)
- Method in class model.agent.property.properties.
DependenciesProperty
Removes an identifier from the dependencies.
removeIDFromDependenciesProperty(String, String)
- Method in class model.agent.
Agent
removeIDFromDependenciesProperty(String, String)
- Method in interface model.agent.
AgentMutable
Removes an identifier from a dependencies property of this Agent.
removeProperty(String, String)
- Method in class data.agents.
AgentStorage
Deletes a Property for a certain Agent.
removeProperty(String, String)
- Method in class data.agents.
AgentStorageMySQL
removeProperty(String)
- Method in class model.agent.
Agent
removeProperty(String)
- Method in interface model.agent.
AgentMutable
Removes a property from this Agent.
removeRootTag(String)
- Static method in class util.xmltool.
XMLTool
Removes the root tag from an XML document.
resetCounter()
- Method in class util.db.
MySQLConnection
run()
- Method in class model.agent.execution.
AgentExecutor
Executes the currently setted one agent.
run()
- Method in class model.agent.execution.
AgentsProcessor
Runs the agent processor, by executing every agent in a round-robin manner.
run()
- Method in class util.clientconnection.
XMLClientConnection
Start handling the requests from the socket.
runServer()
- Method in class main.
SOSServer
Starts the server's listeners
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
H
I
K
L
M
N
P
R
S
T
U
V
X