|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.sound.sampled.Control javax.sound.sampled.FloatControl
public abstract class FloatControl
A FloatControl
object provides control over a range of
floating-point values. Float controls are often
represented in graphical user interfaces by continuously
adjustable objects such as sliders or rotary knobs. Concrete subclasses
of FloatControl
implement controls, such as gain and pan, that
affect a line's audio signal in some way that an application can manipulate.
The
inner class provides static instances of types that are used to
identify some common kinds of float control.
FloatControl.Type
The FloatControl
abstract class provides methods to set and get
the control's current floating-point value. Other methods obtain the possible
range of values and the control's resolution (the smallest increment between
returned values). Some float controls allow ramping to a
new value over a specified period of time. FloatControl
also
includes methods that return string labels for the minimum, maximum, and midpoint
positions of the control.
Line.getControls()
,
Line.isControlSupported(javax.sound.sampled.Control.Type)
| Nested Class Summary | |
|---|---|
static class |
FloatControl.Type
An instance of the FloatControl.Type inner class identifies one kind of
float control. |
| Constructor Summary | |
|---|---|
protected |
FloatControl(FloatControl.Type type,
float minimum,
float maximum,
float precision,
int updatePeriod,
float initialValue,
String units)
Constructs a new float control object with the given parameters. |
protected |
FloatControl(FloatControl.Type type,
float minimum,
float maximum,
float precision,
int updatePeriod,
float initialValue,
String units,
String minLabel,
String midLabel,
String maxLabel)
Constructs a new float control object with the given parameters |
| Method Summary | |
|---|---|
float |
getMaximum()
Obtains the maximum value permitted. |
String |
getMaxLabel()
Obtains the label for the maximum value, such as "Right" or "Full." |
String |
getMidLabel()
Obtains the label for the mid-point value, such as "Center" or "Default." |
float |
getMinimum()
Obtains the minimum value permitted. |
String |
getMinLabel()
Obtains the label for the minimum value, such as "Left" or "Off." |
float |
getPrecision()
Obtains the resolution or granularity of the control, in the units that the control measures. |
String |
getUnits()
Obtains the label for the units in which the control's values are expressed, such as "dB" or "frames per second." |
int |
getUpdatePeriod()
Obtains the smallest time interval, in microseconds, over which the control's value can change during a shift. |
float |
getValue()
Obtains this control's current value. |
void |
setValue(float newValue)
Sets the current value for the control. |
void |
shift(float from,
float to,
int microseconds)
Changes the control value from the initial value to the final value linearly over the specified time period, specified in microseconds. |
String |
toString()
Provides a string representation of the control |
| Methods inherited from class javax.sound.sampled.Control |
|---|
getType |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
protected FloatControl(FloatControl.Type type, float minimum, float maximum, float precision, int updatePeriod, float initialValue, String units, String minLabel, String midLabel, String maxLabel)
type
- the kind of control represented by this float control objectminimum
- the smallest value permitted for the controlmaximum
- the largest value permitted for the controlprecision
- the resolution or granularity of the control.
This is the size of the increment between discrete valid values.updatePeriod
- the smallest time interval, in microseconds, over which the control
can change from one discrete value to the next during a shift
initialValue
- the value that the control starts with when constructedunits
- the label for the units in which the control's values are expressed,
such as "dB" or "frames per second"minLabel
- the label for the minimum value, such as "Left" or "Off"midLabel
- the label for the midpoint value, such as "Center" or "Default"maxLabel
- the label for the maximum value, such as "Right" or "Full"protected FloatControl(FloatControl.Type type, float minimum, float maximum, float precision, int updatePeriod, float initialValue, String units)
type
- the kind of control represented by this float control objectminimum
- the smallest value permitted for the controlmaximum
- the largest value permitted for the controlprecision
- the resolution or granularity of the control.
This is the size of the increment between discrete valid values.updatePeriod
- the smallest time interval, in microseconds, over which the control
can change from one discrete value to the next during a shift
initialValue
- the value that the control starts with when constructedunits
- the label for the units in which the control's values are expressed,
such as "dB" or "frames per second"| Method Detail |
|---|
public void setValue(float newValue)
newValue
- desired new value
IllegalArgumentException
- if the value indicated does not fall
within the allowable rangepublic float getValue()
public float getMaximum()
public float getMinimum()
public String getUnits()
public String getMinLabel()
public String getMidLabel()
public String getMaxLabel()
public float getPrecision()
public int getUpdatePeriod()
shift(float, float, int)
public void shift(float from, float to, int microseconds)
from
- initial value at the beginning of the shiftto
- final value after the shiftmicroseconds
- maximum duration of the shift in microsecondsgetUpdatePeriod()
public String toString()
toString
in class Control
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


Log in
Prove us you are a God
{{ flash('register_success') }}
Username: *
{{ username_err }}
Password: *
{{ password_err }}
No account? Register


flip.Rd
Calculates non linear regression models by performing an iterative grid search within the coordinate bounds provided
by lower
and upper
vectors, starting at start_lower
and start_upper
.
Intermediate models are scored by the AIC value until convergence has been achieved as to the defaults of nls.multstart.
flip( projectDir = getwd(), plotFormat = "png", filePattern = "*_fip.tsv", dataPlots = TRUE, minPrecursorCollisionEnergy = 0, start_lower, start_upper, lower, upper, trainModel = FALSE, minDataPoints = 0, max_iter = 500 )
| projectDir | the path to the project directory containing the '_fip.tsv' files as input. |
|---|---|
| plotFormat | the plot format, as supported by |
| filePattern | the file pattern for 'fip' files. |
| dataPlots | whether data plots (diagnostics) should be created. |
| minPrecursorCollisionEnergy | the minimum precursor collision energy to consider for model training. |
| start_lower | the lower bound to start the parameter grid search. |
| start_upper | the upper bound to start the parameter grid search. |
| lower | the lower bound for the parameter grid search. |
| upper | the upper bound for the parameter grid search. |
| trainModel | whether the model should be calculated. |
| minDataPoints | the minimum number of data points required per fragment / adduct / ppm combination to be considered for model calculation. |
| max_iter | the number of combinations for grid expansion starting parameters. |
The list of fit tables which includes in named element name
the input file name for the model data, in named element fits
a list with the named elements fits
(nonlinear fits), params
(parameters), CI
(confidence intervals for params), preds
(immediate predictions), nls.tibble.unfiltered
(unfiltered input data), nls.tibble
(data for calculation of fits), and preds_from_data
(predictions from equidistantly resampled x-value range).


mattrib
Section: User Commands (1)Updated: 03Nov09
Index Return to Main Contents
Name
mattrib - change MSDOS file attribute flags
Note of warning
This manpage has been automatically generated from mtools's texinfo documentation, and may not be entirely accurate or complete. See the end of this man page for details.Description
Mattrib is used to change MS-DOS file attribute flags. It has the following syntax:
mattrib [-a|+a] [-h|+h] [-r|+r] [-s|+s] [-/] [-p] [-X] msdosfile [ msdosfiles ... ]
Mattrib adds attribute flags to an MS-DOS file (with the `+' operator) or remove attribute flags (with the `-' operator).
Mattrib supports the following attribute bits:
- a
- Archive bit. Used by some backup programs to indicate a new file.
- r
- Read-only bit. Used to indicate a read-only file. Files with this bit set cannot be erased by DEL nor modified.
- s
- System bit. Used by MS-DOS to indicate a operating system file.
- h
- Hidden bit. Used to make files hidden from DIR.
Mattrib supports the following command line flags:
- /
- Recursive. Recursively list the attributes of the files in the subdirectories.
- X
- Concise. Prints the attributes whithout any whitespace padding. If neither the "/" option is given, nor the msdosfile contains a wildcard, and there is only one Msdos file parameter on the command line, only the attribute is printed, and not the filename. This option is convenient for scripts
- p
- Replay mode. Outputs a series of mformat commands that will reproduce the current situation, starting from a situation as left by untarring the Dos filesystem. Commands are only output for attribute settings that differ from the default (archive bit set for files, unset for directories). This option is intended to be used in addition to tar. The readonly attribute is not taken into account, as tar can set that one itself.
See Also
Mtools' texinfo docViewing the texi doc
This manpage has been automatically generated from mtools's texinfo documentation. However, this process is only approximative, and some items, such as crossreferences, footnotes and indices are lost in this translation process. Indeed, these items have no appropriate representation in the manpage format. Moreover, not all information has been translated into the manpage version. Thus I strongly advise you to use the original texinfo doc. See the end of this manpage for instructions how to view the texinfo doc.- *
-
To generate a printable copy from the texinfo doc, run the following
commands:
./configure; make dvi; dvips mtools.dvi
- *
-
To generate a html copy, run:
./configure; make html
A premade html can be found at Infinityhttp://www.gnu.org/software/mtools/manual/mtools.htmlIntegral - *
-
To generate an info copy (browsable using emacs' info mode), run:
./configure; make info
The texinfo doc looks most pretty when printed or as html. Indeed, in the info version certain examples are difficult to read due to the quoting conventions used in info.
Index
This document was created by man2html, using the manual pages.
Time: 05:29:06 GMT, December 24, 2015


Hakawati
These stories are ready for acceptance...
RSS
Home
About
Archives
About This Page
This blog is a test of octopress, eventually it will be the ThoughtWorks Story Wall!


Before Change
if len(new_test_frame) > 0:
test_frame = test_frame.append(new_test_frame)
else:
logger.info("Test frame has length 0")
// write out the training and test files
write_frame(train_frame, directory, train_file, extension, separator)
write_frame(test_frame, directory, test_file, extension, separator)
// run the model pipeline
After Change
if len(new_train_frame) > 0:
train_frame = train_frame.append(new_train_frame)
else:
raise Exception("Training frame has length 0. Adjust training date.")
new_test_frame = df.loc[df.date >= predict_date]
if len(new_test_frame) > 0:
test_frame = test_frame.append(new_test_frame)
else:


Hi! Born and raised in India, I moved to the land of the long white cloud: New Zealand in 2012. Armed with a Bachelors in Software engineering and my passion for design, I aim to make the internet more beautiful by creating beautiful responsive websites that captivate the visitors and brings out the message that the website is trying to portray.


public interface KbService
| Modifier and Type | Method and Description |
|---|---|
void |
clearCache()
Clears all caches relating
KbObject s to objects on the Cyc server. |
boolean |
existsInKb(String nameOrId)
Checks whether a given ID or Cycl term exists in the KB.
|
Object |
getApiObject(Object cycLOrId)
Returns a Object which is the best representation for a given Object (generally a String), so
long as it doesn't need to be created in the KB.
|
Object |
getApiObject(String cycLOrId)
Returns a Object which is the best representation for a given String, so long as it doesn't
need to be created in the KB.
|
Object |
getApiObjectDwim(String cycLOrId)
Returns a Object which is the best representation for a given String, so long as it doesn't
need to be created in the KB.
|
Object |
getKbObject(String cycLOrId)
Returns a KbObject which is the best representation for a given String, so long as it doesn't
need to be created in the KB.
|
boolean existsInKb(String nameOrId)
nameOrId
- Object getKbObject(String cycLOrId) throws KbTypeException, CreateException
This differs from #apiObject(String)
in that this will throw an exception if given
something that is a valid object for the API, but it not a KbObject (e.g. strings and numbers).
If you have no idea what kind of object the string represents, it's generally safer to use
#apiObject(String)
.
When returning a KbTerm or Assertion, this method will always attempt to return an instance of the most specific subclass possible. For example, "#$WeatherQuantity" will be returned as an instance of FirstOrderCollection.
This method attempts to follow a least-common-denominator principle of least surprise, but do
be aware that some strings may have multiple possible representations as KbObjects. For
example, this method will return a Variable for "?X", but that string could also be represented
as a KbIndividual; if you want "?X" as a KbIndividual, you could accomplish this via a call to
KbTerm.get(String)
or
KbIndividual.get(String)
. Similarly, almost any string can be a
symbol, but the most common type of symbols are keywords, which are prefixed with ":".
This method would return a symbol for the string ":SYMBOL", but if you wanted a (non-keyword)
symbol for the (un-prefixed) string "SYMBOL", you would need to request it from
Symbol.get(String)
.
cycLOrId
- KbTypeException
CreateException
Object getApiObject(Object cycLOrId) throws KbTypeException, CreateException
This differs from #kbObject(String)
in that this allows IDs for Strings and Numbers to
be used, in addition to IDs for KbObjects. If you have know that your ID is for a KbObject, you
can use #kbObject(String)
to get a tighter return type.
When returning a KbTerm or Assertion, this method will always attempt to return an instance of the most specific subclass possible. For example, "#$WeatherQuantity" will be returned as an instance of FirstOrderCollection.
This method attempts to follow a least-common-denominator principle of least surprise, but do
be aware that some strings may have multiple possible representations as KbObjects. For
example, this method will return a Variable for "?X", but that string could also be represented
as a KbIndividual; if you want "?X" as a KbIndividual, you could accomplish this via a call to
KbTerm.get(String)
or
KbIndividual.get(String)
. Similarly, almost any string can be a
symbol, but the most common type of symbols are keywords, which are prefixed with ":".
This method would return a symbol for the string ":SYMBOL", but if you wanted a (non-keyword)
symbol for the (un-prefixed) string "SYMBOL", you would need to request it from
Symbol.get(String)
.
cycLOrId
- KbTypeException
CreateException
Object getApiObject(String cycLOrId) throws KbTypeException, CreateException
This differs from getKbObject(String)
in that this allows IDs for Strings and Numbers
to be used, in addition to IDs for KbObjects. If you have know that your ID is for a KbObject,
you can use getKbObject(String)
to get a tighter return type.
When returning a KbTerm or Assertion, this method will always attempt to return an instance of the most specific subclass possible. For example, "#$WeatherQuantity" will be returned as an instance of FirstOrderCollection.
This method attempts to follow a least-common-denominator principle of least surprise, but do
be aware that some strings may have multiple possible representations as KbObjects. For
example, this method will return a Variable for "?X", but that string could also be represented
as a KbIndividual; if you want "?X" as a KbIndividual, you could accomplish this via a call to
KbTerm.get(String)
or
KbIndividual.get(String)
. Similarly, almost any string can be a
symbol, but the most common type of symbols are keywords, which are prefixed with ":".
This method would return a symbol for the string ":SYMBOL", but if you wanted a (non-keyword)
symbol for the (un-prefixed) string "SYMBOL", you would need to request it from
Symbol.get(String)
.
cycLOrId
- KbTypeException
CreateException
Object getApiObjectDwim(String cycLOrId) throws KbTypeException, CreateException
This differs from #kbObject(String)
in that this allows IDs for Strings and Numbers to
be used, in addition to IDs for KbObjects. If you have know that your ID is for a KbObject, you
can use #kbObject(String)
to get a tighter return type.
When returning a KbTerm or Assertion, this method will always attempt to return an instance of the most specific subclass possible. For example, "#$WeatherQuantity" will be returned as an instance of FirstOrderCollection.
This method attempts to follow a least-common-denominator principle of least surprise, but do
be aware that some strings may have multiple possible representations as KbObjects. For
example, this method will return a Variable for "?X", but that string could also be represented
as a KbIndividual; if you want "?X" as a KbIndividual, you could accomplish this via a call to
KbTerm.get(String)
or
KbIndividual.get(String)
. Similarly, almost any string can be a
symbol, but the most common type of symbols are keywords, which are prefixed with ":".
This method would return a symbol for the string ":SYMBOL", but if you wanted a (non-keyword)
symbol for the (un-prefixed) string "SYMBOL", you would need to request it from
Symbol.get(String)
.
cycLOrId
- KbTypeException
CreateException
void clearCache()
KbObject
s to objects on the Cyc server. In most
applications, this will not be needed. However, it can be helpful in applications where the KB
is modified externally. For example, if a Cyc term is deleted and then recreated with the same
name by some external process, the KB API will still have the id information from the old
constant, and will retrieve the new constant. A call to clearCache
will clear the
cache and allow the KB API to successfully retrieve the newly created constant.Copyright © 2015–2018 Cycorp, Inc. All rights reserved.


UK Court Blocks Planned Strike by Royal Mail Staff
by AGENCE FRANCE-PRESSELONDON (AFP) — Royal Mail on Wednesday won a High Court injunction to block strike action by postal workers in Britain during the busy pre-Christmas shopping period next month.
The union denounced the ruling as an “outrage” and said it planned to appeal.
The company launched its legal action last week to prevent the planned walkout that had been due also around the time of the country’s general election on December 12 that risked delaying the arrival of postal votes.
Royal Mail had pointed to “potential irregularities” in the strike ballot that had been called during a dispute between postal workers and management over pay and other employment conditions.
Royal Mail had also highlighted “the damage industrial action would do to the company and its customers in the run-up to Christmas.”
The company brought legal action against the Communication Workers Union that had carried out the strike ballot on behalf of its members working for Royal Mail.
In a post on Twitter, the CWU described Wednesday’s court ruling as “an utter outrage.
“We balloted over 110,000 members and they voted by over 97 percent in favour of strike action in a massive 76 percent turnout,” CWU general secretary Dave Ward added in a statement.
“Members participated and cast their vote of their own free will,” he added.
“To suggest otherwise is to insult the intelligence and the integrity of thousands and thousands of good, hard-working people.”
© Agence France-Presse
Copyright © 2019 courthousenews.com


You will be given a random number at the start of your death wish with Thanos.
There are four gems below. By clicking on one gem you will add a specific amount of points to your total score.
You win the game by matching your total score to random number. You lose the game if your total score goes above random number.
The value of each gem is hidden from your mortal eyes until you click on it.
Each time the battle starts anew, their will be a new value for each gem.


During your call, we will answer any and all questions you have. At that time we will be happy to scehdule a tour for you to come see our beautiful campus. You will meet with one of our team members and discuss the program in further detail and see if our program is right for you.
The total cost of our program is $2500. If you would prefer to make monthly payments we have many options avaiable. We can help you get a loan if needed. You decide which option suits your situation best. Making the first payment secures your spot in our program. Classes start on the 1st of every month.
While in our program we will teach you the most current and in-demand computer languages, design, whiteboarding, professional portfolio and site building, and help you to create a professional resume. You will earn a Front-End Web Development Certificate. You will be given a three month internship and help with job placement.
Complete your prerequisite coursework. We will give you work to complete that will help you throughout the course and throughout your life as a web developer. Don't worry we will have videos to guide you through the process of how to set your developer toolbox up. We will prepare you to be ready for your first day of the start of your new life.
Our teachers will give you the introductions to the languages you will learn. Throughout the courses you will learn very relevant and current computer languages such as React, HTML, CSS, JavaScript, and JQUERY. You will learn the best designs for websites and you will also learn whitebaording. We will assist you and guide you to be professional.
During your course you will have completed a professional portfolio with our guidance. You will also have completed a professional resume, cover letter, and everything you need to get hired. We will be working with you to finish all of these steps to build yourself professionally.
Our professional team is going to call you to set up an appointment for you to come and prepare for interviews. We will go over all of your projects and resume to make sure that everything is the best it can be before we apply you for jobs. We will sit and talk about what companies are looking for. You will practice for the interview and we will tell you how to get started on this process of getting hired as a web developer.
Lead Developer
Teacher
Program Manager
Social Media Developer
Lead Developer
Lead Designer
Our Team of Professionals Who Will Guide You On Your Way To Becoming A Developer.
The first payment option we have is no money down and monthly payments paid over one year. The first four months the payment is $325 and the remaining 8 months the payment is $150 per month.
The second payment option we have is $300 down and monthly payments paid over one year. The first four months the payment is $250 and the remaining 8 months the payment is $150 per month.
The third payment option we have is $500 down and monthly payments paid over one year. The first four months the payment is $200 and the remaining 8 months the payment is $150 per month.
The fourth payment option we have is $700 down and monthly payments paid over one year. The monthly payment is $150 per month.
The final payment option we have is to pay in full.


Reports conditional expressions of the form
true?
result1
:
result2
or
false?
result1
:
result2
. These expressions sometimes occur as the result of automatic refactorings, and may obviously be simplified.
Powered by InspectionGadgets


The first group of religious ideas that we see coming up — I mean recognised religious ideas, and not the very low ideas, which do not deserve the name of religion — all include the idea of inspiration and revealed books and so forth. The first group of religious ideas starts with the idea of God. Here is the universe, and this universe is created by a certain Being. Everything that is in this universe has been created by Him. Along with that, at a later stage, comes the idea of soul — that there is this body, and something inside this body which is not the body. This is the most primitive idea of religion that we know. We can find a few followers of that in India, but it was given up very early. The Indian religions take a peculiar start. It is only by strict analysis, and much calculation and conjecture, that we can ever think that that stage existed in Indian religions. The tangible state in which we find them is the next step, not the first one. At the earliest step the idea of creation is very peculiar, and it is that the whole universe is created out of zero, at the will of God; that all this universe did not exist, and out of this nothingness all this has come. In the next stage we find this conclusion is questioned. How can existence be produced out of nonexistence? At the first step in the Vedanta this question is asked. If this universe is existent it must have come out of something, because it was very easy to see that nothing comes out of nothing, anywhere. All work that is done by human hands requires materials. If a house is built, the material was existing before; if a boat is made the material existed before; if any implements are made, the materials were existing before. So the effect is produced. Naturally, therefore, the first idea that this world was created out of nothing was rejected, and some material out of which this world was created was wanted. The whole history of religion, in fact, is this search after that material.
Out of what has all this been produced? Apart from the question of the efficient cause, or God, apart from the question that God created the universe, the great question of all questions is: Out of what did He create it? All the philosophies are turning, as it were, on this question. One solution is that nature, God, and soul are eternal existences, as if three lines are running parallel eternally, of which nature and soul comprise what they call the dependent, and God the independent Reality. Every soul, like every particle of matter, is perfectly dependent on the will of God. Before going to the other steps we will take up the idea of soul, and then find that with all the Vedantic philosophers, there is one tremendous departure from all Western philosophy. All of them have a common psychology. Whatever their philosophy may have been, their psychology is the same in India, the old Sânkhya psychology. According to this, perception occurs by the transmission of the vibrations which first come to the external sense-organs, from the external to the internal organs, from the internal organs to the mind, from the mind to the Buddhi, from the Buddhi or intellect, to something which is a unit, which they call the Âtman. Coming to modern physiology, we know that it has found centres for all the different sensations. First it finds the lower centres, and then a higher grade of centres, and these two centres exactly correspond with the internal organs and the mind, but not one centre has been found which controls all the other centres. So physiology cannot tell what unifies all these centres. Where do the centres get united? The centres in the brain are all different. and there is not one centre which controls all the other centres; therefore, so far as it goes, the Indian psychology stands unchallenged upon this point. We must have this unification, some thing upon which the sensations will be reflected, to form a complete whole. Until there is that something, I cannot have any idea of you, or a picture, or anything else. If we had not that unifying something, we would only see, then after a while breathe, then hear, and so on, and while I heard a man talking I would not see him at all, because all the centres are different.
This body is made of particles which we call matter, and it is dull and insentient. So is what the Vedantists call the fine body. The fine body, according to them, is a material but transparent body, made of very fine particles, so fine that no microscope can see them. What is the use of that? It is the receptacle of the fine forces. Just as this gross body is the receptacle of the gross forces, so the fine body is the receptacle of the fine forces, which we call thought, in its various modifications. First is the body, which is gross matter, with gross force. Force cannot exist without matter. It must require some matter to exist, so the grosser forces work in the body; and those very forces become finer; the very force which is working in a gross form, works in a fine form, and becomes thought. There is no distinction between them, simply one is the gross and the other the fine manifestation of the same thing. Neither is there any distinction between this fine body and the gross body. The fine body is also material, only very fine matter; and just as this gross body is the instrument that works the gross forces, so the fine body is the instrument that works the fine forces. From where do all these forces come? According to Vedanta philosophy, there are two things in nature, one of which they call Âkâsha, which is the substance, infinitely fine, and the other they call Prâna, which is the force. Whatever you see, or feel, or hear, as air, earth, or anything, is material — the product of Akasha. It goes on and becomes finer and finer, or grosser and grosser, changing under the action of Prana. Like Akasha, Prana is omnipresent, and interpenetrating everything. Akasha is like the water, and everything else in the universe is like blocks of ice, made out of that water, and floating in the water, and Prana is the power that changes this Akasha into all these various forms. The gross body is the instrument made out of Akasha, for the manifestation of Prana in gross forms, as muscular motion, or walking, sitting, talking, and so forth. That fine body is also made of Akasha, a very fine form of Akasha, for the manifestation of the same Prana in the finer form of thought. So, first there is this gross body. Beyond that is this fine body, and beyond that is the Jiva, the real man. Just as the nails can be pared off many times and yet are still part of our bodies, not different, so is our gross body related to the fine. It is not that a man has a fine and also a gross body; it is the one body only, the part which endures longer is the fine body, and that which dissolves sooner is the gross. Just as I can cut this nail any number of times, so, millions of times I can shed this gross body, but the fine body will remain. According to the dualists, this Jiva or the real man is very fine, minute.
So far we see that man is a being, who has first a gross body which dissolves very quickly, then a fine body which remains through aeons, and then a Jiva. This Jiva, according to the Vedanta philosophy, is eternal, just as God is eternal. Nature is also eternal, but changefully eternal. The material of nature — Prana and Akasha — is eternal, but it is changing into different forms eternally. But the Jiva is not manufactured either of Akasha or Prana; it is immaterial and, therefore, will remain for ever. It is not the result of any combination of Prana and Akasha, and whatever is not the result of combination, will never be destroyed, because destruction is going back to causes. The gross body is a compound of Akasha and Prana and, therefore, will be decomposed. The fine body will also be decomposed, after a long time, but the Jiva is simple, and will never be destroyed. It was never born for the same reason. Nothing simple can be born. The same argument applies. That which is a compound only can be born. The whole of nature comprising millions and millions of souls is under the will of God. God is all-pervading, omniscient, formless, and He is working through nature day and night. The whole of it is under His control. He is the eternal Ruler. So say the dualists. Then the question comes: If God is the ruler of this universe, why did He create such a wicked universe, why must we suffer so much? They say, it is not God's fault. It is our fault that we suffer. Whatever we sow we reap. He did not do anything to punish us. Man is born poor, or blind, or some other way. What is the reason? He had done something before, he was born that way. The Jiva has been existing for all time, was never created. It has been doing all sorts of things all the time. Whatever we do reacts upon us. If we do good, we shall have happiness, and if evil, unhappiness. So the Jiva goes on enjoying and suffering, and doing all sorts of things.
What comes after death? All these Vedanta philosophers admit that this Jiva is by its own nature pure. But ignorance covers its real nature, they say. As by evil deeds it has covered itself with ignorance, so by good deeds it becomes conscious of its own nature again. Just as it is eternal, so its nature is pure. The nature of every being is pure.
When through good deeds all its sins and misdeeds have been washed away, then the Jiva becomes pure again, and when it becomes pure, it goes to what is called Devayâna. Its organ of speech enters the mind. You cannot think without words. Wherever there is thought, there must be words. As words enter the mind, so the mind is resolved into the Prana, and the Prana into the Jiva. Then the Jiva gets quickly out of the body, and goes to the solar regions. This universe has sphere after sphere. This earth is the world sphere, in which are moons, suns, and stars. Beyond that here is the solar sphere, and beyond that another which they call the lunar sphere. Beyond that there is the sphere which they call the sphere of lightning, the electric sphere, and when the Jiva goes there, there comes another Jiva, already perfect, to receive it, and takes it to another world, the highest heaven, called the Brahmaloka, where the Jiva lives eternally, no more to be born or to die. It enjoys through eternity, and gets all sorts of powers, except the power of creation. There is only one ruler of the universe, and that is God. No one can become God; the dualists maintain that if you say you are God, it is a blasphemy. All powers except the creative come to the Jiva, and if it likes to have bodies, and work in different parts of the world, it can do so. If it orders all the gods to come before it, if it wants its forefathers to come, they all appear at its command. Such are its powers that it never feels any more pain, and if it wants, it can live in the Brahmaloka through all eternity. This is the highest man, who has attained the love of God, who has become perfectly unselfish, perfectly purified, who has given up all desires, and who does not want to do anything except worship and love God.
There are others that are not so high, who do good works, but want some reward. They say they will give so much to the poor, but want to go to heaven in return. When they die, what becomes of them? The speech enters the mind, the mind enters the Prana, the Prana enters the Jiva, and the Jiva gets out, and goes to the lunar sphere, where it has a very good time for a long period. There it enjoys happiness, so long as the effect of its good deeds endures. When the same is exhausted, it descends, and once again enters life on earth according to its desires. In the lunar sphere the Jiva becomes what we call a god, or what the Christians or Mohammedans call an angel. These gods are the names of certain positions; for instance, Indra, the king of the gods, is the name of a position; thousands of men get to that position. When a virtuous man who has performed the highest of Vedic rites dies, he becomes a king of the gods; by that time the old king has gone down again, and become man. Just as kings change here, so the gods, the Devas, also have to die.  The only deathless place is Brahmaloka, where alone there is no birth and death.
So the Jivas go to heaven, and have a very good time, except now and then when the demons give them chase. In our mythology it is said there are demons, who sometimes trouble the gods. In all mythologies, you read how these demons and the gods fought, and the demons sometimes conquered the gods, although many times, it seems, the demons did not do so many wicked things as the gods. In all mythologies, for instance, you find the Devas fond of women. So after their reward is finished, they fall down again, come through the clouds, through the rains, and thus get into some grain or plant and find their way into the human body, when the grain or plant is eaten by men. The father gives them the material out of which to get a fitting body. When the material suits them no longer, they have to manufacture other bodies. Now there are the very wicked fellows, who do, all sorts of diabolical things; they are born again as animals, and if they are very bad, they are born as very low animals, or become plants, or stones.
In the Deva form they make no Karma at all; only man makes Karma. Karma means work which will produce effect. When a man dies and becomes a Deva, he has only a period of pleasure, and during that time makes no fresh Karma; it is simply a reward for his past good Karma. When the good Karma is worked out, then the remaining Karma begins to take effect, and he comes down to earth. He becomes man again, and if he does very good works, and purifies himself, he goes to Brahmaloka and comes back no more.
The animal is a state of sojourn for the Jiva evolving from lower forms. In course of time the animal becomes man. It is a significant fact that as the human population is increasing, the animal population is decreasing. The animal souls are all becoming men. So many species of animals have become men already. Where else have they gone?
In the Vedas, there is no mention of hell. But our Purânas, the later books of our scriptures, thought that no religion could be complete, unless hells were attached to it, and so they invented all sorts of hells. In some of these, men are sawed in half, and continually tortured, but do not die. They are continually feeling intense pain, but the books are merciful enough to say it is only for a period. Bad Karma is worked out in that state and then they come back on earth, and get another chance. So this human form is the great chance. It is called the Karma-body, in which we decide our fate. We are running in a huge circle, and this is the point in the circle which determines the future. So this is considered the most important form that there is. Man is greater than the gods.
So far with dualism, pure and simple. Next comes the higher Vedantic philosophy which says, that this cannot be. God is both the material and the efficient cause of this universe. If you say there is a God who is an infinite Being, and a soul which is also infinite, and a nature which is also infinite, you can go on multiplying infinites without limit which is simply absurd; you smash all logic. So God is both the material and the efficient cause of the universe; He projects this universe out of Himself. Then how is it that God has become these walls and this table, that God has become the pig, and the murderer, and all the evil things in the world? We say that God is pure. How can He become all these degenerate things? Our answer is: just as I am a soul and have a body, and in a sense, this body is not different from me, yet I, the real I, in fact, am not the body. For instance, I say, I am a child, a young man, or an old man, but my soul has not changed. It remains the same soul. Similarly, the whole universe, comprising all nature and an infinite number of souls, is, as it were, the infinite body of God. He is interpenetrating the whole of it. He alone is unchangeable, but nature changes, and soul changes. He is unaffected by changes in nature and soul. In what way does nature change? In its forms; it takes fresh forms. But the soul cannot change that way. The soul contracts and expands in knowledge. It contracts by evil deeds. Those deeds which contract the real natural knowledge and purity of the soul are called evil deeds. Those deeds, again, which bring out the natural glory of the soul, are called good deeds. All these souls were pure, but they have become contracted; through the mercy of God, and by doing good deeds, they will expand and recover their natural purity. Everyone has the same chance, and in the long run, must get out. But this universe will not cease, because it is eternal. This is the second theory. The first is called dualism. The second holds that there are God, soul, and nature, and soul and nature form the body of God, and, therefore, these three form one unit. It represents a higher stage of religious development and goes by the name of qualified monism. In dualism, the universe is conceived as a large machine set going by God while in qualified monism, it is conceived as an organism, interpenetrated by the Divine Self.
The last are the non-dualists. They raise the question also, that God must be both the material and the efficient cause of this universe. As such, God has become the whole of this universe and there is no going against it. And when these other people say that God is the soul, and the universe is the body, and the body is changing, but God is changeless, the non-dualists say, all this is nonsense. In that case what is the use of calling God the material cause of this universe? The material cause is the cause become effect; the effect is nothing but the cause in another form. Wherever you see an effect, it is the cause reproduced. If the universe is the effect, and God the cause, it must be the reproduction of God. If you say that the universe is the body of God, and that the body becomes contracted and fine and becomes the cause, and out of that the universe is evolved, the non-dualists say that it is God Himself who has become this universe. Now comes a very fine question. If this God has become this universe, you and all these things are God. Certainly. This book is God, everything is God. My body is God, and my mind is God, and my soul is God. Then why are there so many Jivas? Has God become divided into millions of Jivas? Does that one God turn into millions of Jivas? Then how did it become so? How can that infinite power and substance, the one Being of the universe, become divided? It is impossible to divide infinity. How can that pure Being become this universe? If He has become the universe, He is changeful, and if He is changeful, He is part of nature, and whatever is nature and changeful is born and dies.  Take note of that. Again, how much of God has become this universe? If you say X (the unknown algebraical quantity), then God is God minus X now, and, therefore, not the same God as before this creation, because so much has become this universe.
So the non-dualists say, "This universe does not exist at all; it is all illusion. The whole of this universe, these Devas, gods, angels, and all the other beings born and dying, all this infinite number of souls coming up and going down, are all dreams." There is no Jiva at all. How can there be many? It is the one Infinity. As the one sun, reflected on various pieces of water, appears to be many, and millions of globules of water reflect so many millions of suns, and in each globule will be a perfect image of the sun, yet there is only one sun, so are all these Jivas but reflections in different minds. These different minds are like so many different globules, reflecting this one Being. God is being reflected in all these different Jivas. But a dream cannot be without a reality, and that reality is that one Infinite Existence.   You are creating the whole universe and drawing it in. Thus says the Advaitist. So all these births and rebirths, coming and going are the figments of Mâyâ. You are infinite. Where can you go? The sun, the moon, and the whole universe are but drops in your transcendent nature. How can you be born or die? I never was born, never will be born. I never had father or mother, friends or foes, for I am Existence, Knowledge, Bliss Absolute. I am He, I am He. So, what is the goal, according to this philosophy? That those who receive this knowledge are one with the universe. For them, all heavens and even Brahmaloka are destroyed, the whole dream vanishes, and they find themselves the eternal God of the universe. They attain their real individuality, with its infinite knowledge and bliss, and become free. Pleasures in little things cease. We are finding pleasure in this little body, in this little individuality. How much greater the pleasure when this whole universe is my body! If there is pleasure in one body, how much more when all bodies are mine! Then is freedom attained. And this is called Advaita, the non-dualistic Vedanta philosophy.
These are the three steps which Vedanta philosophy has taken, and we cannot go any further, because we cannot go beyond unity. When a science reaches a unity, it cannot by any manner of means go any further. You cannot go beyond this idea of the Absolute.
All people cannot take up this Advaita philosophy; it is hard. First of all, it is very hard to understand it intellectually. It requires the sharpest of intellects, a bold understanding. Secondly, it does not suit the vast majority of people. So there are these three steps. Begin with the first one. Then by thinking of that and understanding it, the second will open itself. Just as a race advances, so individuals have to advance. The steps which the human race has taken to reach to the highest pinnacles of religious thought, every individual will have to take. Only, while the human race took millions of years to reach from one step to another, individuals may live the whole life of the human race in a much shorter duration. But each one of us will have to go through these steps. Those of you who are non-dualists look back to the period of your lives when you were strong dualists.  If you take one portion, you must take the whole. The man who says, here is this world, and there is no (Personal) God, is a fool; because if there is a world, there will have to be a cause, and that is what is called God. You cannot have an effect without knowing that there is a cause. God will only vanish when this world vanishes; then you will become God (Absolute), and this world will be no longer for you. So long as the dream that you are a body exists, you are bound to see yourself as being born and dying; but as soon as that dream vanishes, so will the dream vanish that you are being born and dying, and so will the other dream that there is a universe vanish. That very thing which we now see as the universe will appear to us as God (Absolute), and that very God who has so long been external will appear to be internal, as our own Self.


Master Kendra:
All my time is taken teaching Human warriors. You should find a master more suited to your needs.


Develop Microservice with JAX-RS
Concept Description
ServiceComb supports developers in developing services in JAX-RS mode by using JAX-RS.
Development Example
- Step 1 Import dependencies into your maven project:
xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>java-chassis-dependencies</artifactId>
<version>1.0.0-m1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!--transport can optional import through endpoint setting in microservice.yaml, we import both rest and highway as example-->
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>transport-rest-vertx</artifactId>
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>transport-highway</artifactId>
</dependency>
<dependency>
<groupId>org.apache.servicecomb</groupId>
<artifactId>provider-jaxrs</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
</dependencies>
- Step 2 Implement the service. JAX-RS is used to describe the development of service code. The implementation of the Hello service is as follows:
```java import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.apache.servicecomb.samples.common.schema.models.Person;
@Path("/jaxrshello") @Produces(MediaType.APPLICATION_JSON) public class JaxrsHelloImpl { @Path("/sayhi") @POST public String sayHi(String name) { return "Hello " + name; }
@Path("/sayhello")
@POST
public String sayHello(Person person) {
return "Hello person " + person.getName();
}
} ```
Note: PLEASE MAKE SURE TO MARK @Path ON YOUR PRODUCER(JaxrsHelloImpl), OR THE PATH AND METHOD OF PUBLISHED WILL BE INCORRECT!
In this sample the Path of sayHi is /jaxrshello/sayhi
, and the Path of sayHello is /jaxrshello/sayhello
, if you wish them /sayhi
and /sayhello
, please change the setting of @Path
on the JaxrsHelloImpl to @Path("/")
.
- Step 3 Release the service. Add
@RestSchema
as the annotation of the service implementation class and specify schemaID, which indicates that the implementation is released as a schema of the current microservice. The code is as follows:
java
import org.apache.servicecomb.provider.rest.common.RestSchema;
// other code omitted
@RestSchema(schemaId = "jaxrsHello")
public class JaxrsHelloImpl implements Hello {
// other code omitted
}
Create the jaxrsHello.bean.xml file in the resources/META-INF/spring directory and configure base-package that performs scanning. The content of the file is as follows:
```xml
<context:component-scan base-package="org.apache.servicecomb.samples.jaxrs.provider"/>
```
- Step 4 Add service definition file:
Add microservice.yaml file into resources folder of your project.
- Step 5 Add Main class:
```java import org.apache.servicecomb.foundation.common.utils.BeanUtils; import org.apache.servicecomb.foundation.common.utils.Log4jUtils;
public class Application { public static void main(String[] args) throws Exception { //initializing log, loading bean(including its parameters), and registering service, more detail can be found here : http://servicecomb.incubator.apache.org/users/application-boot-process/ Log4jUtils.init(); BeanUtils.init(); } } ```
Involved APIs
Currently, the JAX-RS development mode supports the following annotation. For details about how to use JAX-RS, see JAX-RS official documentation。
| Remarks | Location | Description |
|---|---|---|
| javax.ws.rs.Path | schema/operation | URL path |
| javax.ws.rs.Produces | schema/operation | Coding/decoding capability supported by the method |
| javax.ws.rs.DELETE | operation | http method |
| javax.ws.rs.GET | operation | http method |
| javax.ws.rs.POST | operation | http method |
| javax.ws.rs.PUT | operation | http method |
| javax.ws.rs.QueryParam | parameter | Obtain parameters from query string |
| javax.ws.rs.PathParam | parameter | Obtain parameters from path, This parameter must be defined in path. |
| javax.ws.rs.HeaderParam | parameter | Obtain parameters from header. |
| javax.ws.rs.CookieParam | parameter | Obtain parameters from cookie. |
NOTE： - When the method parameter has no annotation and is not an HttpServletRequest parameter, the parameter is of the body type by default. One method supports a maximum of one body-typed parameter. - You are advised to explicitly define the value of the parameter. Otherwise, the parameter name in the API definition is used, such as
@QueryParam\("name"\) String name
String name instead of@QueryParam String name
.


IAAF honours Filbert Bayi
by Joseph MchekadonaTANZANIA’s athletics legend, Filbert Bayi, was among other seven record breakers who were recognized by the International Association of Athletics Federations (IAAF) at a gala in Monaco, France, on Thursday.
The world athletics governing body recognized the eight athletes who broke 1500 meters and one mile (1600 meters) record at the gala, dubbed Mile Night.
Bayi said the event was organized by Chris Turner, the Head of IAAF Heritage. Other record breaking athletes who were recognized by IAAF were Kipchoge Keino of Kenya, Adi Bile of Somalia, Eamon Couglan from Ireland,
“The event was also attended by Council Member of IAAF, Prince Nawal Bin Mohammed Al Saud, former athletes and journalist,” Bayi noted.
The world athletics governing body said the mile is the last remaining imperial distance still applicable for world record ratification.
The mystique of the mile (1609.344 meters) is the key for it remaining an official record distance.
Over the course of 160 years of documented record attempts, the mile has lured athletes from across the world to tackle one of the key benchmarks of human athletic achievement, IAAF said.
Bayi was born in Karatu District, Arusha in 1953. He has won many medals at various events, but he set the record on February 2, 1974 in men's 1500m final at the 1974 Commonwealth Games in Christchurch, New Zealand.
This is a race that is often described as the greatest middle distance event of all time.
His record time in the race was three minutes and 32.2 seconds.
Part of the IAAF letter to Bayi acknowledged that since the association’s formation in 1912, the men's world mile record has been held by athletes from Algeria, France, Finland, Morocco and Sweden.
Athletes from English-speaking countries, Australia, Britain, New Zealand, Tanzania, and the USA, with whom the mile is arguably more closely associated, have too held the record.
It further said: “The numerous attempts in the first half of the last century to break the four-minute barrier made headlines and dominated news reels across the world.”
Bannister’s 3:59.4 run on 6 May 1954 is arguably one of the greatest sporting moments in twentieth century history, the letter said.
“That the record run of fellow Briton Diane Leather Charles later that month, who became the first woman to dip under five minutes (4:59.6 on May 29), went largely unheralded is a sad reflection of the times but not of her marvelous achievements.”


--- layout: bootstrap title: Index permalink: / group: main order: 1 --- {% include_relative index_example.html %}
On the internet there are millions of headers. Easy, hard, customized, buildable. Let's make this easy to use. Just add this on your site:
{% highlight html %}{% include_relative index_example.html %}{% endhighlight %}This is the code for the header above. Just a div and some content. Why do we want more.
We use a simple example of a vmin
for a height
, this is 1/100th of the smallest side of your viewport. Ryoko uses 40/100th of the smallest side of your viewport by default, this scales awesome of your desktop, and your mobile. It also uses the min-height
, so if you have more info... fine! Want another size, can do. Just keep in mind to create something cool.
Installing is just as easy as installing another npm package, just do this.
Add it to your dependencies.
{% highlight html %}npm install ryoko-headers --save{% endhighlight %}And to your scss builder.
{% highlight sass %}@include "ryoko-headers/scss/ryoko"{% endhighlight %}Images used on the page were found on unsplash. An awesome resource for images.
Css frameworks used are: bootstrap, bulma, Material Design Lite.
Code hosted on github


The page you are looking for cannot be found!
Please try one of the following links:
Home
Services
Portfolio
Awards
Team
Our Story
Contact


Hours after reveal, 2020 Mitsubishi Mirage, Mirage G4 get kitted out
Check out these factory kits for the 2020 Mitsubishi Mirage and Mirage G4
by Anton AndresIt has only been a few hours after Mitsubishi launched the 2020 Mirage and Mirage G4, and they didn't waste any time kitting out their subcompacts. With their totally new look, Mitsubishi has released in a new range of kits to better suit both the Mirage and the Mirage G4.
For the Mirage hatchback, it gets a deeper front chin and red highlights on the grill to add a bit of zing on the exterior. The hatch also gets chrome extensions on the headlight corners to make the lights themselves appear longer than standard. Gloss black wheels are also part of the package, along with more chrome on the tail lights and tailgate. The rear bumper also gets a kit, making it look lowered.
On to the sedan and it gets a similar treatment as the hatchback. A deeper front chin, as well as chrome extentions on the lights are present on the car. The difference here is that the sedan gets more chrome than on the hatchback - these are seen on the grill and lower apron. There are no red highlights here either; reason for which is to position the Mirage G4 in a slightly more premium part of the market. As this is the sedan, it has a different rear bumper kit and it also comes with a trunk spoiler.
Other accessories? You can get a dash cam, rubber floor mats, window visors, and trunk liners. No, there aren't any performance upgrades available for either car, but that's the job of the aftermarket.
Given that the Mirage has already been launched in Thailand, it's not long before we see these cars in our showrooms. Hopefully, the 2020 Mirage and Mirage G4 will still be assembled in Santa Rosa, Laguna.
Tags:mirage mirage g4 mitsubishi mitsubishi attrage mitsubishi mirage mitsubishi mirage g4


Meetups
These meetups are bitcoin only. Do your own research before attending (stay safe). To get your meetup added raise an issue (scroll to bottom of page).
Cyberspace
| Meetup | Description |
|---|---|
| Bitcoin Enemies | 24/7 voice chat |
| Reckless VR | VR meetup * |
| Bitcoin Only VR Downunder | VR meetup * |
* Weekly, Accessible without a VR headset


About
-
Mobility for the digital era
Getting around should be simple (and even fun!) for everyone. We embrace technology to provide low cost, smart access to scooters at your fingertips.
-
Better urban living
We’re helping connect cities and bring people closer together. Our scooters are also fully-electric and we offset the minimal carbon footprint for each ride.
Our Values
-
01
Our tech
We’re using cutting edge technology to drive accessible urban transportation forward. Our fully electric scooters are a joy to ride!
-
02
Our integrity
We are fully committed to deliver a great yet safe, sustainable micro-mobility experience in every city we serve.
-
03
Our community
We support every community we serve. All workers are paid a living wage based on their location and are Scoot employees.
FAQs
How it works
-
How do I download the app?
To download the Scoot app, you can search “Scoot” in both the App and Google Play stores. An even simpler way to do it would be to click the relevant link at the bottom of this page and you’ll be re-directed to the correct page.
-
Can I find a nearby Scoots?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quibusdam autem cupiditate deleniti, nisi eos assumenda?
-
Do I need a license to ride?
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur, officia!
Safe driving
-
Should I wear a helmet?
Yes, please do! All cities have different laws. But we strongly strongly strongly recommend always wearing a helmet regardless of the local laws. We like you and we want you to be as safe as possible while Scooting.
-
How about the rules & regulations?
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Pariatur, tempora!
-
How about the rules & regulations?
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Velit, officiis dignissimos! Expedita, dicta!


Ubuntu/ Debian use Apt (Advanced Package Tool) as their package manager (a tool that assist you on resolving dependencies when you need to install, upgrade, configure, and remove packages).
Through out this guide, we only use mostly the command apt-get install. In this lesson, I will show you how to get the most out of Apt package manger.
It all starts with update repositories information:
apt-get update
To update entire of system:
apt-get upgrade
Although name “upgrade”, the command is only for update packages that are already installed in your system.
To install and update a package
apt-get install [package name]
The command also update that package if it has already installed.
To install a package without its recommends (this is the case of installing a minimal Ubuntu/Debian desktop)
To do that you need to specify this flag: –no-install-recommends
apt-get install --no-install-recommends [package name]
To remove a package
apt-get remove [package name]
To remove a package along with all of its configuration file:
apt-get --purge remove [package name]
To find information about installed or can be installed packages
apt-cache search [package name/ related word]
For instance, you can search for the key word “image viewer” to find all the info about image viewer in repositories.
apt-cache search “image viewer”
The output should be the list of packages that are related to image viewer.
To list dependencies and recommends of a packages
It’s very useful when you were trying to install a minimal Ubuntu system (mostly by using the ”–no-install-recommends” flag) and sometimes found in a situation where some of your applications were lacking features (you need to installs some more of it recommends).
apt-cache depends [package name]
To show the version of a package and which repository it is come from
apt-cache policy [package-name]
To find out about information about a package
apt-cache show [package-name]
dpkg
Although not using apt but I find the below is a essential command to supplement to apt features.
dpkg -s [package name]
In fact, I often use it rather than apt-cache show/policy.
In my experience, with just all these commands, you can effectively manage your applications and your Ubuntu system.
To find if a package is installed on your system
dpkg -l [package-name]


Search by:
Name
Filter by:
Min rating
Min stars
Max price
Sort by:
Price
Loading…
This won’t work without JavaScript.


I am studying in CSE at Patuakhali Science & Technology University(PSTU). Now I have been working in Widhya as a Front-end Developer Intern.
1. Participated in a contribution program
Nov 16,2020 - Dec 20,2020.
Web Development, DevIncept
2. HTML, CSS, AND JavaScript For Web Developers
Coursera, Online
Jun 2020 – July 2020
3. Mobile Games And Application Development
Patuakhali Science And Technology University, Patuakhali
Oct 2018 – Oct 2018
Undergraduate of Computer Science and Engineering
Patuakhali Science and Technology University, Patuakhali
2018 – CURRENT


{% autoescape off%}
You have been invited to join Alumni Community,
A platform where you meet like minded people and build awesome stuff!
To accept the invitation, please click the link below:
http://{{domain}}{% url 'invitation' uidb64=uid token=token %} -- Alumni team {% endautoescape %}


SwiftyMocky 4.2.0
Check out guides, or full documentation
Table of contents
Overview
SwiftyMocky is a strongly typed framework for Mockito-like unit testing experience. Library depends on Sourcery, that scans your source code and generates Mocks Swift code for you!
The idea of SwiftyMocky is to automatically mock Swift protocols and protocol compositions. The main features are:
- easy syntax, utilising full power of auto-complete, which makes writing test easier and faster
- we DO support generics
- mock implementations generation
- a way to specify what mock will return (given)
- possibility to specify different return values for different attributes
- record stubbed return values sequence
- verify, whether a method was called on mock or not
- check method invocations with specified attributes
- it works with real device
Important!!! Version 4.1.x
CLI was moved bask to the main (this) repo. CLI in this repository will be supported at least until version 5.0.0.
Version 4.0.x
Current version has several significant changes. It removes deprecated methods (which might be breaking) and deprecates having CLI in the new repository.
SwiftyPrototype was also extracted to separate library. There are no more compilation flags, so if you were relying on SwiftyMocky with -DMockyCustom
, you will have to switch to SwiftyPrototype
.
We consider current version as stable. We are moving toward using the new Mockfile but the previous configuration format would be still supported. Library works with Swift 4.1, 4.2, 5.0, 5.1.2 and Sourcery 1.0.x.
While it is technically possible to integrate SwiftyMocky on Linux targets, there is no Mock generation feature there yet. You can use SwiftyMokcy runtime via SwiftPM though, as long as your are fine with generating mocks on mac machine.
Migration from 3.2.0 and below
The migration is not required, you can keep using SwiftyMocky as you did before. The Legacy setup is described in guides section.
Still, we would encourage to try new CLI and share a feedback. We believe it will make using and setting up SwiftyMocky way easier. If you have an existing setup, install CLI as per this guide and try:
> swiftymocky migrate
Getting started
1. Integrating SwiftyMocky:
SwiftyMocky is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "SwiftyMocky"
Use CLI tool from your project directory:
# To setup initial Mockfile
% ./Pods/SwiftyMocky/bin/swiftymocky init
# To generate mocks
% ./Pods/SwiftyMocky/bin/swiftymocky generate
To install, add following to you Cartfile:
github "MakeAWishFoundation/SwiftyMocky"
Then execute carthage update
For Carthage, few additional steps are required ⚠. For detailed install instructions, see full documentation or consult [Carthage documentation][carthage-adding-framework].
You need to install CLI to generate mocks - see installation
Add SwiftyMocky to you Package.swift dependencies:
dependencies: [
.package(url: "https://github.com/MakeAWishFoundation/SwiftyMocky", from: "4.2.0"),
]
You need to install CLI to generate mocks - see installation
Note: Examples of SwiftyMocky integration as a tool for Unit tests, as well as a Prototyping framework, are here: https://github.com/MakeAWishFoundation/SM-Integration-Tests
2. Installing SwiftyMocky CLI:
> brew install mint
> mint install MakeAWishFoundation/SwiftyMocky
> marathon install MakeAWishFoundation/SwiftyMocky
Make:
Clone from https://github.com/MakeAWishFoundation/SwiftyMockyCLI and run make
in the root directory.
3. Generate mocks
Annotate your protocols that are going to be mocked, making them adopt AutoMockable
protocol, or adding annotation comment above their definition in the source code.
Mocks are generated from your project root directory, based on configuration inside Mockfile.
> swiftymocky setup # if you don't have a Mockfile yet
> swiftymocky doctor # validate your setup
> swiftymocky generate # generate mocks
More informations about CLI and mock generation
If you don’t want to migrate to our CLI and prefer to use “raw” Sourcery, please refer to this section in documentation.
Usage
1. Marking protocols to be mocked
Create ‘dummy’ protocol somewhere in your project, like: protocol AutoMockable { }
Adopt it by every protocol you want to actually mock.
protocol ToBeMocked: AutoMockable {
// ...
}
Alternatively, mark protocols that are meant to be mocked with sourcery annotation as following:
//sourcery: AutoMockable
protocol ToBeMocked {
// ...
}
Or use it to protocol compositions:
typealias ToBeMocked = OneProtocol & TwoProtocols & AutoMockable
Every protocol in source directories, having this annotation, will be added to Mock.generated.swift
2. Stubbing return values for mock methods - Given
All mocks has given method (accessible both as instance method or global function), with easy to use syntax, allowing to specify what should be return values for given methods (based on specified attributes).
All protocol methods are nicely put into Given, with matching signature. That allows to use auto-complete (just type .
) to see all mocked protocol methods, and specify return value for them.
All method attributes are wrapped as Parameter enum, allowing to choose between any
and value
, giving great flexibility to mock behaviour. Please consider following:
Given(mock, .surname(for name: .value("Johnny"), willReturn: "Bravo"))
Given(mock, .surname(for name: .any, willReturn: "Kowalsky"))
print(mock.surname(for: "Johny")) // Bravo
print(mock.surname(for: "Mathew")) // Kowalsky
print(mock.surname(for: "Joanna")) // Kowalsky
In verions 3.0 we introduced sequences and policies for better control of mock behvaiour.
Given(mock, .surname(for name: .any, willReturn: "Bravo", "Kowalsky", "Nguyen"))
print(mock.surname(for: "Johny")) // Bravo
print(mock.surname(for: "Johny")) // Kowalsky
print(mock.surname(for: "Johny")) // Nguyen
print(mock.surname(for: "Johny")) // and again Bravo
// ...
For more details please see full documentation.
3. Check invocations of methods, subscripts and properties - Verify
All mocks has verify method (accessible both as instance method or global function), with easy to use syntax, allowing to verify, whether a method was called on mock, and how many times. It also provides convenient way to specify, whether method attributes matters (and which ones).
All protocol methods are nicely put into Verify, with matching signature. That allows to use auto-complete (just type .
) to see all mocked protocol methods, and specify which one we want to verify.
All method attributes are wrapped as Parameter enum, allowing to choose between any
, value
and matching
, giving great flexibility to tests. Please consider following:
// inject mock to sut. Every time sut saves user data, it should trigger storage storeUser method
sut.usersStorage = mockStorage
sut.saveUser(name: "Johny", surname: "Bravo")
sut.saveUser(name: "Johny", surname: "Cage")
sut.saveUser(name: "Jon", surname: "Snow")
// check if Jon Snow was stored at least one time
Verify(mockStorage, .storeUser(name: .value("Jon"), surname: .value("Snow")))
// storeUser method should be triggered 3 times in total, regardless of attributes values
Verify(mockStorage, 3, .storeUser(name: .any, surname: .any))
// storeUser method should be triggered 2 times with name Johny
Verify(mockStorage, 2, .storeUser(name: .value("Johny"), surname: .any))
// storeUser method should be triggered at least 2 times with name longer than 3
Verify(mockStorage, .moreOrEqual(to: 2), .storeUser(name: .matching({ $0.count > 3 }}), surname: .any))
For Verify, you can use Count to specify how many times you expect something to be triggered. Count can be defined as explicit value, like 1
,2
,… or in more descriptive and flexible way, like .never
, more(than: 1)
, etc.
From SwiftyMocky 3.0, it is possible to use Given
and perform Verify
on properties as well, with respect to whether it is get or set:
mock.name = "Danny"
mock.name = "Joanna"
print(mock.name)
// Verify getter:
Verify(mock, 1, .name)
// Verify setter:
Verify(mock, 2, .name(set: .any))
Verify(mock, 1, .name(set: .value("Danny")))
Verify(mock, .never, .name(set: .value("Bishop")))
4. Take action when a stubbed method is called - Perform
All mocks has perform method (accessible both as instance method or global function), with easy to use syntax, allowing to specify closure, that will be executed upon stubbed method being called.
It uses same parameter wrapping features as given, so you can specify different Perform cases for different attributes set.
It’s very handy when working with completion block based approach.
Example:
// Perform allows to execute given closure, with all the method parameters, as soon as it is being called
Perform(mock, .methodThatTakesCompletionBlock(completion: .any, perform: { completion in
completion(true,nil)
}))
Documentation
Full documentation is available here, as well as through docs directory.
Guides - Table of contents
Changelog is available here
All supported features
For list all supported features, check documentation here or [guides][link-guides-features]
Examples of usage
For more examples, check out our example project, or examples section in guides.
To run the example project, clone the repo, and run pod install
from the Example directory first.
To trigger mocks generation, run rake mock
or swiftymocky generate
from root directory (if you installed CLI).
Roadmap
- [x] stubbing protocols in elegant way
- [x] template for generating mocks
- [x] example project
- [x] stubbing protocols with variables
- [x] method signature generation without name conflicts
- [ ] cover 95% of framework codebase with unit tests
- [x] cover 95% of framework codebase with documentation
- [ ] add unit tests for template
- [x] support for tvOS, Linux and MacOS
- [x] Carthage support
- [x] Subscripts support
- [x] Stub return values as sequences
- [x] Simple tool simplifying configuration process
Authors
- Przemysław Wośko<EMAIL_ADDRESS>- Andrzej Michnia<EMAIL_ADDRESS>License
SwiftyMocky is available under the MIT license. See the [LICENSE][link-license] file for more info.


This web site contains several descriptions of my favorite books. I created this web site to give you some basic overviews of the books that I consider to be not only personal favorites of mine, but also educational. I hope you will like my book descriptions and furthermore, I hope you will purchase one of my books from Amazon . Listed below are my favorite books. Click on one of them to see a detail description of that book.
This second editon describes C as defined by the ANSI standard. This book is meant to help the reader learn how to program in C. The book assumes some familiarity with basic programming concepts like variables, assignment statements, loops, and functions. A novice programmer should be able to read along and pick up the language....Read More
Database Systems: The Complete Book is ideal for Database Systems and Database Design and Application courses offered at the junior, senior and graduate levels in Computer Science departments. A basic understanding of algebraic expressions and laws, logic, basic data structure, OOP concepts, and programming environments is implied....Read More
Every day, more and more people want to learn some HTML and CSS. Joining the professional web designers and programmers are new audiences who need to know a little bit of code at work (update a content management system or e-commerce store) and those who want to make their personal blogs more attractive. Many books teaching HTML and CSS are dry and only written for those who want to become programmers, which is why this book takes an entirely new approach. ...Read More
For serious programmers,this book is the definitive guide to writing robust, maintainable code. Whether you’re using Java SE 9, 10, or 11, it will help you achieve a deep and practical understanding of the language and API, and its hundreds of realistic examples reveal the most powerful and effective ways to get the job done....Read More
© 2019 Chris Toplikar. All Rights Reserved


These are a few tips and tricks that may come in handy.
The line callback feature is used to be able to some special treatment during execution of the scripts. The callback is called for every script statement, which for example makes it possible to verify if the script has executed for too long time and if so suspend the execution to be resumed at a later time.
Before calling the context's Execute() method, set the callback function like so:
void ExecuteScript() { DWORD timeOut; ctx->SetLineCallback(asFUNCTION(LineCallback), &timeOut, asCALL_CDECL); int status = asEXECUTION_SUSPENDED; while( status == asEXECUTION_SUSPENDED ) { // Allow the long running script to execute for 10ms timeOut = timeGetTime() + 10; status = ctx->Execute(); // The execution was suspended, now we can do something else before // continuing the execution with another call to Execute(). ... } } void LineCallback(asIScriptContext *ctx, DWORD *timeOut) { // If the time out is reached we suspend the script if( *timeOut < timeGetTime() ) ctx->Suspend(); }
Take a look at the sample events to see this working.
AngelScript is written with C++, and unfortunately C++ compilers were never standardized on the binary level, so code compiled by one C++ compiler is usually not compatible with code compiled from another C++ compiler.
Fortunately there is a way to make a binary compatible DLL of AngelScript. Because of the large base of ANSI C resources readily available all C++ compilers make sure to produce compatible C code. Even other languages, such as Delphi and D, are able to use an ANSI C compatible dll. AngelScript has a prepared C compatible interface that can be used for this purpose.
To compile the dll and expose the C interface some preprocessor flags has
to be turned on: AS_C_INTERFACE
and ANGELSCRIPT_EXPORT
.
Obviously it will not be possible to register C++ class methods through this
interface, so it might be useful to remove that part from the engine by
defining the flag AS_NO_CLASS_METHODS
.
These flags and others are documented in the as_config.h header file.


{% extends 'blog/base.html' %} {% load static %} {% block content %}
Christian
When I am at home in, Bury St Edmunds, I go to Westgate Chapel whilst when I am at university, in Birmingham, I go to City Church Birmingham. As well, I am a member of the University of Birmingham's Christian Union
If you want to know more click these links!
First Year Computer Scientist at the University of Birmingham
Too Welsh for my own good in Rugby!
Originally from Bury St. Edmunds in Suffolk
Photos Left to Right:


China jails former Japanese politician for life in drugs case
BEIJING (Reuters) - A court in southern China on Friday sentenced a 76-year-old Japanese former politician to life in jail for attempting to smuggle out drugs in a suitcase in 2013.
The intermediate court in the province of Guangzhou ruled that Takuma Sakuragi, a former assemblyman from Japan’s Aichi prefecture, tried to smuggle home 3.289 kg (7.25 lb) of methamphetamine, it said in a post on its official social media account.
Sakuragi was detained during a baggage check at Baiyun airport in Guangzhou.
In 2014, prosecutors in the case had sought the death penalty, a life sentence or a prison term of at least 15 years. The court had repeatedly delayed reading its verdict, citing the complexity of the case.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/conv.20example.html ---
I was trying to write an example to illustrate the power of conv
, by finding an example where the entire goal was difficult to work with because it contained implicit proofs. I realised that there were two things I didn't understand properly. Here's some code.
@[elab_simple] def subtypeadd {m : ℕ} {n : ℕ} (A : fin m) (B : fin n) : fin (m+n) := ⟨A.val+B.val,add_lt_add A.is_lt B.is_lt⟩ definition phi {m n : ℕ} : fin (m + n) → fin (n + m) := λ ⟨i,Hi⟩, ⟨i,add_comm m n ▸ Hi⟩ example {m n : ℕ} (A : fin m) (B : fin n) : phi (subtypeadd A B) = subtypeadd B A := begin have H : A.val + B.val = B.val + A.val := add_comm _ _, -- unfold subtypeadd using show show phi ⟨A.val + B.val, _⟩ = ⟨B.val + A.val, _⟩, rw H -- fails end
I wanted to make the example hard for one reason, but it somehow turned out to be hard for another reason :-/
My first question is why does the show
command succeed? I assumed that what show X
did was that it first checked that X
made sense, and then checked that it was defeq to the goal.
But I thought I had explicitly rigged it here so that X
wouldn't be able to be elaborated, because of the missing proofs.
My second question is why does rw
fail. I have heard rumours that rw
will not work inside a lambda (although I don't really understand why -- why is this?) but this is not a lambda and I think the reason for failure is something else.
The error message is
rewrite tactic failed, motive is not type correct nested exception message: check failed, application type mismatch (use 'set_option trace.check true' for additional details) state: m n : ℕ, A : fin m, B : fin n, H : A.val + B.val = B.val + A.val ⊢ phi ⟨A.val + B.val, _⟩ = ⟨B.val + A.val, _⟩
and if I set_option trace.check true
then I get an exciting helpful extra hint:
[check] application type mismatch at ⟨_a, _⟩ argument type A.val + B.val < m + n expected type _a < m + n
which makes no sense to me...oh! Is it rewriting too many A.val + B.val's?
I am still a bit bewildered about why this is a type mismatch I guess.
(deleted)
(deleted)
For the first question I guess an underlying question is "which option do you switch on so you can see how Lean is filling in _
s?"
My first question is why does the show command succeed? I assumed that what show X did was that it first checked that X made sense, and then checked that it was defeq to the goal.
I was going to mention this before with your X = Y
into X' = Y
problem - you could have just written show X' = _
. The reason this works is because the checking is done in a weak mode that tolerates metavariable generation, and the second defeq step is not just checking defeq, it is unifying with the target. This means that the first stage will create metavariables and the second stage will unfold stuff as needed to figure out the metavariables. If it can't completely solve the metavariables, you will get new goals instead of an error.
example : tt = tt := begin show (λ x, tt) _ = tt, -- ⊢ (λ (x : ?m_1), tt) ?m_2 = tt end example : tt = tt := begin change (λ x, tt) _ = tt, -- ⊢ (λ (x : ?m_1), tt) ?m_2 = tt -- ⊢ Sort ? -- ⊢ ?m_1 end
As you can see, show
differs slightly in that it doesn't change the number of goals while change
will add all those unsolved metavariables as new goals, just like refine
would.
By the way, goals that look like your phi ⟨A.val + B.val, _⟩ = ⟨B.val + A.val, _⟩
often don't work (they fail in the first stage of parsing), because the anonymous constructor can't be solved outright. In this case it works because phi
is sufficient to deduce that both constructors are fin
.
My second question is why does rw fail. I have heard rumours that rw will not work inside a lambda (although I don't really understand why -- why is this?) but this is not a lambda and I think the reason for failure is something else.
rw
is very sensitive to dependencies. (Or more accurately, it is sufficiently insensitive to dependencies that it will generally fail in their presence.) Both rw
and generalize
are built on the same basic underlying internal tactic kabstract
, which is supposed to take a term P[T]
containing a subterm T
, and replace it with a variable x
. This is needed to construct the motive of the eq.rec
application that goes in the proof term when using rw
, and it's what you see directly if you use generalize
.
The strategy is very simple: look through the term for any subterms that match T
(up to some very light unfolding), and replace them with x
. It should be obvious that this can get you into trouble when you have dependencies. For example, if two_pos : 0 < 2
then <2, two_pos>
is a well typed element of fin 2
, but if you simply replace 2 with x you get <x, two_pos>
which is not in either fin x
or fin 2
, it's just malformed. It is actually really difficult to do this correctly in general; in this case you would probably want to generalize the proof of two_pos
first so that it will "ride the wave" of 2 -> x renaming rather than being stuck talking about the fixed number 2.
As it pertains to your example, the error message is fairly clear, although it would be more obvious with set_option pp.proofs true
. The left argument to the fin
constructor has been generalized from A.val + B.val
to _a
, but the right argument, the proof, is still a proof of A.val + B.val < m + n
(namely add_lt_add A.is_lt B.is_lt
, what you ended up with after the unfolding), and this is not a correct proof of _a < m + n
.
The other major rewrite engine in lean is simp
, which does not use kabstract
. It operates by using congruence lemmas to recurse into subterms, and this strategy makes it much more reliably type-correct when it comes to rewriting under dependencies. If you try to use simp
to rewrite here, it will work, and the proof argument will change to a cast of some sort to accommodate the new type.
Is it possible for me to watch all this unification taking place explicitly? i.e. some set_option?
[that was about the show / change stuff]
I think set_option trace.type_context.is_def_eq true
is what you want
Earlier on I realised that I didn't really know what rw did, so I've just spent 20 minutes doing edge cases and now I can understand the rw issue. I found that rw
doesn't commute with eq.symm
in general :-)
Plus ...is_def_eq_detail
, probably
example (a b: ℕ) : b + a = b + a + a + b := begin rw add_comm, -- a + b = a + b + a + b end
Are the set_option
options documented anywhere?
#help options
seems to do the trick. (I had to search the code to find that gem. #help
is such a rarely used command for me, I'm not even really sure what's there...)
I am not even sure if I knew #help
existed. I thought the help command in Lean was #print
it certainly does seem to be a large overlap of duties
I can use conv to rewrite A.val + B.val
in that earlier example.
@[elab_simple] def subtypeadd {m : ℕ} {n : ℕ} (A : fin m) (B : fin n) : fin (m+n) := ⟨A.val+B.val,add_lt_add A.is_lt B.is_lt⟩ definition phi {m n : ℕ} : fin (m + n) → fin (n + m) := λ ⟨i,Hi⟩, ⟨i,add_comm m n ▸ Hi⟩ example {m n : ℕ} (A : fin m) (B : fin n) : phi (subtypeadd A B) = subtypeadd B A := begin have H : A.val + B.val = B.val + A.val := add_comm _ _, -- unfold subtypeadd using show show phi ⟨A.val + B.val, _⟩ = ⟨B.val + A.val, _⟩, conv begin congr, congr, congr, rw H, end, -- is the term on the left OK?? admit end
conv is doing all sorts of funny things here
It seems to forget some terms
and I managed to do a rewrite which earlier on was impossible for a good reason
or was it impossible for a bad reason?
Oh maybe conv doesn't care about the terms it forgets.
I would be in support of moving all "auxiliary" #print
stuff to #help
; it is a little confusing to have namespace overlapping between #print options
(which prints lean cmdline options), #print option
(which prints the option
type) and #print pp.all
(which prints info on the pp.all
option)
Does conv not bother with subsingletons?
I lost a proof
I see. So fin
is a structure so I can build things of type fin n
and they will be of the form <value,proof that this value is less than n>
but there's nothing stopping me from deviously changing the value without changing the proof
By the way, if you are actually interested in this theorem, a short proof is fin.eq_of_veq (add_comm _ _)
I don't need the theorem, I was experimenting with trying to build goals which the prettyprinter wouldn't let me use show with ("show <what the pretty printer says the goal is>" failing)
conv
uses congrence lemmas, like simp
, to traverse the term, certainly if you are using the congr
tactic
so it will succeed for the same reason that simp does
conv is really useful for a learner like me.
It enables to you really zoom in to parts of complicated things which beginners have trouble manipulating
You should turn on pp.proofs
while working with this
oh that's a cool option
lol I remember the days when it was the only option. It's like 80% a good idea to hide proofs
is there a command which just changes the state of every option that is available?
then I could easily see all the other things I'm missing
lol that would be bedlam
Imagine how much I'd learn
If you care about printing, look at completions for set_option pp.
I remember getting really confused early on because of those _
s in goals which I'd completely forgotten what they stood for
It would be even better if it said what they were a proof of
That was proposed; but it would make things even harder for the copy-pasters
why not make it an option?
I don't want to have to edit all those types out
to make it compile
Oh wooah if I set proofs on, then does "show (goal)" always succeed?
no, silly
:-)
does that solve the halting problem or something?
there are a thousand and one edge cases that cause bad printing
Oh OK.
even pp.all
sometimes fails
o_O
Here's an example:
theorem T : nat.zero = nat.zero := by have f := (λ {x}, eq.refl x); exact f set_option pp.all true #print T theorem T' : @eq.{1} nat nat.zero nat.zero := @(λ {x : nat}, @eq.refl.{1} nat x) nat.zero --parse error
Oh maybe we're talking at cross purposes.
theorem T' : @eq.{1} nat nat.zero nat.zero := begin show @eq.{1} nat nat.zero nat.zero -- succeeds end
I was wondering if one could be in tactic mode in a situation where the goal is represented by some string S, and then show S
fails
I am pretty sure I've done that before, but I am less sure about having done it with pp.all true
It's easiest to demonstrate by using #print
to view proof terms, but this affects all printing, and you can make it work with target printing as well by a similar mechanism.
--set_option pp.all true theorem T : nat.le nat.zero (by have f := (λ {x:ℕ}, 0); exact @f nat.zero) := begin -- ⊢ nat.le 0 (λ {x : ℕ}, 0) change nat.le 0 (λ {x : ℕ}, 0), --fail change nat.le nat.zero (@(λ {x : nat}, @has_zero.zero.{0} nat nat.has_zero) nat.zero) -- parse error end
Are these bugs in the prettyprinter? Or just interesting features?
Or should @(lam {x},...)
actually work?
It's the pretty printer wishing for a feature the parser hasn't implemented yet
Slightly passive-agressive behavior
I see. The pretty printer is somehow the anti-parser isn't it.
in fact it's a one-sided inverse, in a perfect world.
See #1900
I am still unclear about one thing in this thread.
example (a b c N : ℕ) (H1 : a = b) (H2 : a < N) (H3 : b < N) : (⟨a,H2⟩:fin N) = ⟨b,H3⟩ := begin -- rw H1 fails conv begin to_lhs,congr, -- goal now | a rw H1, -- succeeds end, end
The first rw fails and my understanding is that it fails because it gives rise to a term which is malformed (copying from Mario's comments above). However it seems to be only as malformed as the term I successfully construct using the conv trick.
I am still none the wiser about this. One conclusion which I've not yet ruled out is simply that whoever wrote rw
could have done better, and made that first rw H1
above succeed, because there is nothing in type theory stopping it from succeeding, as we see from the conv approach. Is the reason that rw H1
fails simply that the rw
code just doesn't cover this use case?
I think you are missing that the conv
version isn't using just rw
, it's using rw
+ congr
, and it is applying congr
in the place where dependency matters. Once the goal is | a
, there is no longer a dependency to worry about, and rw
has no problems.
But there is nothing stopping someone from beefing up rw so that it works without using conv? It's just some tactic, right?
Initially when I heard that rw couldn't rewrite in certain circumstances I thought that this was because of some theoretical type theory issue which was beyond me, but now I am more inclined to believe that it's just beyond rw.
This typechecks:
example (a b c N : ℕ) (H1 : a = b) (H2 : a < N) (H3 : b < N) : (⟨a,H2⟩:fin N) = ⟨b,H3⟩ := sorry
but if I replace sorry
with eq.subst H1 _
then all of a sudden I get a type mismatch in the statement (not the proof) of the example.
Yes and no. rw
does exactly what we want it to, which is to produce an eq.rec
term with a well chosen motive. congr
applies an appropriate congruence lemma. There are theoretical limitations on what you can prove using eq.rec
, and this is why one wouldn't want to change rw
for this
I opened an issue on dependent rw
a while ago, I think it was closed by "use simp
instead"
I now know from experience that this is not a satisfactory response
The reason I got interested in this use of conv was that I had a situation where simp simplified too much
so I had to be super-accurate with my rw
conv saved me
I mean the simp
engine, not necessarily simp
on its own
How do you use the simp engine??
Did it simplify too much even when you called simp only [your rules here]
?
You know that simp
has a bazillion options, right?
Oh that's a good point Simon, I didn't try this
Remember when you discovered that unfold
is really simp
?
Are those bazillion options documented? If not, then no I don't know and I don't know how to find out.
other than random looking through changelogs and source code
which I find about as pleasant as looking through trash cans
That would deserve a good amount of documentation, that's true.
simp only [h] {single_pass := tt}
is pretty close to rw
-like rewriting
I did know about simp only from TPIL but somehow it's one of those options which I would never use in practice because my initial reaction when I read TPIL was "whyever would you want to use simp only?"
And if you identify the lemmas that cause trouble you can disable it specifically with simp [my_rule, - naughty]
and it's only more recently as I have become more experienced that I realise I need it, by which time I have forgotten about it
and the simp docs which I PR'ed have explanations of how to find out which lemmas are causing trouble
And to identify naughty lemmas you can use set_option trace.simplify.rewrite true
yeah, I read that in the docs
which I wrote
because I cannot manage without docs
because I am an old man
so no I don't know about the bazillion simp options
if you just rattled a few off now I might add them to the docs
I am in my late 40s :-)
structure simp_config := (max_steps : nat := simp.default_max_steps) (contextual : bool := ff) (lift_eq : bool := tt) (canonize_instances : bool := tt) (canonize_proofs : bool := ff) (use_axioms : bool := tt) (zeta : bool := tt) (beta : bool := tt) (eta : bool := tt) (proj : bool := tt) -- reduce projections (iota : bool := tt) (iota_eqn : bool := ff) -- reduce using all equation lemmas generated by equation/pattern-matching compiler (constructor_eq : bool := tt) (single_pass : bool := ff) (fail_if_unchanged := tt) (memoize := tt)
as you can see, leo is hard at work with those docstrings :)
two out of 16 ain't bad, as Meat Loaf once said
I am now going to have to rewrite some of my updated simp docs which I was editing as this post arrived.
About to be deleted: It is well-known that there are a bazillion simp options, although most are known only to the Lean Inner Circle. Examples which mere mortals know about are those documented in the reference manual and Theorem Proving In Lean.
That's not even all of it - there is also the underlying command ext_simplify_core
with lots of space for configurability. And dsimp
has its own variants on all of this.
There are more options somehow:
simp tactics in interactive mode have a new configuration parameter (discharger : tactic unit) a tactic for discharging subgoals created by the simplifier. If the tactic fails, the simplifier tries to discharge the subgoal by reducing it to true. Example: simp {discharger := assumption}.
from the changelog
I can't get this to work though
OK I added some stuff about simp config options and added it to my PR
the discharger
is a tactic unit
, so you have to write it in non-interactive mode (or else have tactic
open, which is I think what Leo did in that quote). simp {discharger := `[assumption]}
should work
but it's not that useful compared to simp *
Last updated: Apr 24 2020 at 19:02 UTC


We aggregate tables!
- synergize sexy platforms
- incentivize back-end web-readiness
- repurpose integrated mindshare
- evolve innovative solutions
- reintermediate global mindshare
- productize B2B web services
- disintermediate 24/7 deliverables
- deliver extensible models
- whiteboard front-end platforms
- syndicate back-end communities
- leverage wireless initiatives


We're sorry but Serverless Invoices doesn't work properly without JavaScript enabled. Please enable it to continue.


 The next film, OCTOPUSSY, would try for the same effect but not quite succeed. Most of that comes courtesy of Bond's female sidekick, Melina, who looks like a pretty version of Alanis Morissette. She's out for revenge on the man who killed her parents, and packs a mean crossbow to accomplish it. She crosses paths with Bond, who is tracking the location of a transmitter.
Bond meets two crime bosses, one of which has to be the killer's boss. It turns out to be the guy masquerading as an Olympic ice skater's sponsor. The skater, a pretty young thing, seems to be the first willing female Bond has ever turned down.  (He's got standards so high he apparently won't date anyone who's age isn't in the double digits. Good for you, James!) He offers her an ice cream instead of his human popsicle.
The Winter Olympics motif makes for some interesting chases. Not only is thre the obligatory ski chase and a fight on a hockey rink, but this time there's a chase on the bobsled run. At least they didn't throw in a luge run and some ice dancing. The climax has a little more class, as Bond and Melina (wielding her crossbow) converge on the villain's monastery hideout. Influenced by such a sacred place, Bond decides at the end of the movie that he's going to become a monk.
Visit the Movie Critic at LARGE website at http://www.missouri.edu/~c667778/movies.html
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews