HALLOWEEN **** of **** grade is A+
Halloween is as good a film as Psycho, if not a better one. They are both terrifying, both caused many rip offs - none of which were as good, and both invented the mad slasher films. Halloween builds tension so wonderfully and keeps it so well that you keep waiting for some relief, none is in site. You can't even rely on corny horror cliches, other than the one created by this film.
Halloween has an escaped insane psychopath visiting his old hometown Haddonfiels, Illinois, killing babysitters and teenagers. This is told not with extreme violence or splatter touches (no killing with rods) and but tense love of suspense. It is told as a slice of life, with hardly any character development and none is needed. In fact all character development would ruin the impact and breakneck pace.
Many think that Comedy is the hardest genre to pull off, I think it is horror. Horror films have such a limit in depth of plot they can have, originality in horror is hard to come by. When you see a great orror film like Halloween it is easy to over praise it. I'm not doing that. Halloween is horror. Halloween has inspire more horror films than any other, including Psycho. Halloween is a true terrifying experience for those who love films and horror films.
** NOTE: Try not to watch this film in Pan & Scan! This is a film that demands letterbox or a theatre viewing (if you can). Films like this should be outlawed from Pan & Scan because you are missing 1/2 of the film. The shadows are as much a part of the film as any character. The only way to watch the opening mask scene and later scenes where the killer will loom into frame is in Letterbox or Widescreen format. DO NOT SEE THIS IN PAN&SCAN I beg of you. Otherwise enjoy.
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


You can unsubscribe at any time by clicking the link in the footer of our emails. For information about our privacy practices, please visit our website.
We use Mailchimp as our marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp's privacy practices here.


HOME
BLOG
TEACHER/STAFF
CONTACT
"COWARDS NEVER START.
THE WEAK NEVER FINISH.
WINNERS NEVER QUIT"
Wellcome to Chung Ang Kendo Club
Practice Timetable
Tuesday: 7:00 p.m - 10:00 p.m
.
Thusday: 7:00 p.m - 10:00 p.m
.
Saturday: 7:00 p.m - 10:00 p.m


The Pomodoro Technique is one that I generally use, although I did not know it existed as a acknowledged productivity approach before now. I find that I can concenrate for around 30 minutes before my mind starts to wander, so in the past I have notied when I lost concentration on the task at hand and permitted myself a "time out" for a few moments to unwind before coming back to the task. Having watched the Pomodoro Technique video, I have started setting a timer for 25 minutes of work, followed by a 5 minute break
I thought that BJ Foggs presentation on creating new habits was facinating. Watching his explanation of motivation + ability + trigger = behaviour was interesting. I am going to try it out and see how it goes.
I have found that approaching life with a growth mindset has helped me a great deal in past difficult situations. This is the first time that I have seen or heard someone mention that often people will hold (subconsciously) aspects of growth and fixed mindset about different aspects of thier lives. One of the things that I'm going to do going forward is to examine my perspective on various topics to see which mindset I have, and to reframe my thinking if I find I am holding on to a fixed mindset about an aspect of my life
Meditation has been a subject that I have always been interested in, so I am going to use the Headspace app for the next week and see how it goes.


Script for question one will fill content here
Script for answer will fill content here
Script for question will fill content here
Script for answer will fill content here
Script for question one will fill content here
Script for answer will fill content here
Script for question one will fill content here
Script for answer will fill content here
Script for question one will fill content here
Script for answer will fill content here
Script for question one will fill content here
Script for answer will fill content here
Script for question one will fill content here
Script for answer will fill content here


While reading Test-Driven JavaScript Development by Christian Johansen, I decided to give Google’s JsTestDriver a spin. JsTestDriver is a testing framework for JavaScript.
The 5,000 Foot View
There are three components involved when using JsTestDriver:
- The JsTestDriver server
- The Web Browser
- The JsTestDriver runner
The JsTestDriver server must be started first from the Terminal. Next, you need to choose the web browser you will use to run your JavaScript tests. You can run your tests in more than one browser but I imagine it will probably get annoying and cluttered. The JsTestDriver runner must be run from your Terminal to see if your tests are passing. With that understanding, let’s move on to getting things set up.
Downloading JsTestDriver
If you have Homebrew on your machine, you can run the command:
1
|
|
Setting up your Environment
Installing via HomeBrew will install the JAR file in the directory: /usr/local/Cellar/js-test-driver/1.3.5/libexec/
.  The default filename that JsTestDriver recognizes is jstestdriver.conf
. Here is what my configuration file looks like:
1 2 3 4 5 6 7 |
|
This is a file written in YAML syntax. I specified a random port 9876 for our server. By default, JsTestDriver will listen on port 4224. Because I specified the *
character, JsTestDriver will load all the source files from the src
folder and test files from the test
directory with a .js
extension. Be sure to only use spaces in your configuration file; don’t use tabs.
Running the JsTestDriver Server
To run JsTestDriver, you need to type this command in the Terminal:
1
|
|
We pass the JAR file to the -jar
argument. In our case, the JsTestDriver file is located inside the directory we specified earlier. If you downloaded the JAR file elsewhere, you’ll have to write out the correct path here.
Next, you have to specify the same port you specified in your configuration file.
Selecting a Browser To Capture
In the web browser or browsers on which you want to run your tests, you need to type http://localhost:9876
or whatever port number you decided to use. A page will load with two links as shown below. Choose the link to “Capture This Browser”.
If all goes well, you should see a green band informing you of the state of the JsTestDriver server.
By the way, if you quit running the JsTestDriver server, the browser will inform you of its connection to the server. It will retry connecting to the server…
… before it finally acknowledges that it is dead:
One more thing: if you don’t need to run your tests in the browser for whatever reason, you can skip this step of capturing the browser.
A Simple Test File
We are going to reuse the test spec shown on the JsTestDriver project page. We will call this file greeter_test.js
:
1 2 3 4 5 6 7 8 |
|
We also could have written it this way:
1 2 3 4 5 6 7 8 |
|
Running the JsTestDriver Runner
At this point, we are ready to run the JsTestDriver runner and see the feedback we get. Our test should fail, and JsTestDriver confirms this when we run the command java -jar $JSTESTDRIVER_HOME/JsTestDriver-1.3.5.jar --tests all
:
1 2 3 4 5 6 7 8 |
|
Then we write the code to make this test pass:
1 2 3 4 5 6 7 8 9 |
|
Now when you run the java command to run JsTestDriver, you will see your test passing:
1 2 3 4 5 |
|
Jstdutil, a Ruby Wrapper
Tired of running the same Java command over and over? Christian Johansen wrote a Ruby wrapper to automate that task. You can find it on Github under the gem name jstdutil.
Let’s include the gem in our Gemfile:
1 2 3 4 5 |
|
Now run bundle install
to have bundler grab the gem.
Remember to repeat the same process as when we ran the Java command by hand:
- Run the server in the background
- Capture the browser
- Run the runner
To run the server in the background, we issue the command in the Terminal:
1
|
|
Assuming you’ve captured the browser, you’ll then want to run the runner:
1
|
|
The neat thing about using jstdutil is the colored output on the Terminal. The gem also comes with an autotesting feature. If you want to run the JsTestDriver runner every time the files change, use jsautotest
:
1
|
|
Conclusion
I hope you now have a better understanding of how to use JsTestDriver. If you found it useful, share it on Twitter or your social networking platform of choice. I’d also love to hear your feedback. Write it below in the comments.
I included a Pitfalls section below to address some common problems when trying to use JsTestDriver.
Pitfalls
Invalid YAML
Make sure you have written valid YAML. You will get parsing errors if you use tabs in your YAML file. The error below occurred because I used tabs to indent before the -
character when specifying the directories to load.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Conflicting Ports
Also make sure that you use the same port in the --port
argument when you start the JsTestDriver server as the one you specified in your .conf
file, otherwise you’ll get an error about the server not being able to start. The error below occurred because I specified port 6666 in my configuration file but ran JsTestDriver with a different port.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
Sources
- Getting Started, https://code.google.com/p/js-test-driver/wiki/GettingStarted
- Need Help with Error Message: java.lang.RuntimeException: Could not start browser CommandLineBrowserRunner https://groups.google.com/group/js-test-driver/browse_frm/month/2012-05?fwc=1&pli=1
- Jstdutil - A Ruby wrapper over JsTestDriver http://cjohansen.no/en/javascript/jstdutil_a_ruby_wrapper_over_jstestdriver


|
Simbody
3.6
|
This class contains the mass, center of mass, and unit inertia matrix of a rigid body B. More...
Public Member Functions | |
| MassProperties_ () | |
| Create a mass properties object in which the mass, mass center, and inertia are meaningless; you must assign values before using this. More... | |
| MassProperties_ (const P &m, const Vec< 3, P > &com, const Inertia_< P > &inertia) | |
| Create a mass properties object from individually supplied mass, mass center, and inertia matrix. More... | |
| MassProperties_ (const P &m, const Vec< 3, P > &com, const UnitInertia_< P > &gyration) | |
| Create a mass properties object from individually supplied mass, mass center, and unit inertia (gyration) matrix. More... | |
| MassProperties_ & | setMassProperties (const P &m, const Vec< 3, P > &com, const Inertia_< P > &inertia) |
| Set mass, center of mass, and inertia. More... | |
| MassProperties_ & | setMassProperties (const P &m, const Vec< 3, P > &com, const UnitInertia_< P > &gyration) |
| Set mass, center of mass, and unit inertia. More... | |
| const P & | getMass () const |
| Return the mass currently stored in this MassProperties object. More... | |
| const Vec< 3, P > & | getMassCenter () const |
| Return the mass center currently stored in this MassProperties object; this is expressed in an implicit frame we call "B", and measured from B's origin, but you have to know what that frame is in order to interpret the returned vector. More... | |
| const UnitInertia_< P > & | getUnitInertia () const |
| Return the unit inertia currently stored in this MassProperties object; this is expressed in an implicit frame we call "B", and measured about B's origin, but you have to know what that frame is in order to interpret the returned value correctly. More... | |
| const Inertia_< P > | calcInertia () const |
| Return the inertia matrix for this MassProperties object; this is equal to the unit inertia times the mass and costs 6 flops. More... | |
| const Inertia_< P > | getInertia () const |
| OBSOLETE – this is just here for compatibility with 2.2; since the UnitInertia is stored now the full inertia must be calculated at a cost of 6 flops, hence the method name should be calcInertia() and that's what you should use unless you want getUnitInertia(). More... | |
| Inertia_< P > | calcCentralInertia () const |
| Return the inertia of this MassProperties object, but measured about the mass center rather than about the (implicit) B frame origin. More... | |
| Inertia_< P > | calcShiftedInertia (const Vec< 3, P > &newOriginB) const |
| Return the inertia of this MassProperties object, but with the "measured
about" point shifted from the (implicit) B frame origin to a new point that is supplied in newOriginB which must be a vector measured from the B frame origin and expressed in B. More... | |
| Inertia_< P > | calcTransformedInertia (const Transform_< P > &X_BC) const |
| Return the inertia of this MassProperties object, but transformed to from the implicit B frame to a new frame C whose pose relative to B is supplied. More... | |
| MassProperties_ | calcShiftedMassProps (const Vec< 3, P > &newOriginB) const |
| Return a new MassProperties object that is the same as this one but with the origin point shifted from the (implicit) B frame origin to a new point that is supplied in newOriginB which must be a vector measured from the B frame origin and expressed in B. More... | |
| MassProperties_ | calcTransformedMassProps (const Transform_< P > &X_BC) const |
| Transform these mass properties from the current frame "B" to a new frame "C", given the pose of C in B. Caution: this shifts the point from which the mass properties are measured from the origin of B to the origin of C. More... | |
| MassProperties_ | reexpress (const Rotation_< P > &R_BC) const |
| Re-express these mass properties from the current frame "B" to a new frame "C", given the orientation of C in B. Caution: this does not shift the point from which the mass properties are measured, it just uses a different frame to express that measurement. More... | |
| bool | isExactlyMassless () const |
| Return true only if the mass stored here is exactly zero. If the mass resulted from a computation, you should use isNearlyMassless() instead. More... | |
| bool | isNearlyMassless (const P &tol=SignificantReal) const |
| Return true if the mass stored here is zero to within a small tolerance. More... | |
| bool | isExactlyCentral () const |
| Return true only if the mass center stored here is exactly zero. If the mass center resulted from a computation, you should use isNearlyCentral() instead. More... | |
| bool | isNearlyCentral (const P &tol=SignificantReal) const |
| Return true if the mass center stored here is zero to within a small tolerance. More... | |
| bool | isNaN () const |
| Return true if any element of this MassProperties object is NaN. More... | |
| bool | isInf () const |
| Return true only if there are no NaN's in this MassProperties object, and at least one of the elements is Infinity. Ground's mass properties satisfy these conditions. More... | |
| bool | isFinite () const |
| Return true if none of the elements of this MassProperties object are NaN or Infinity. Note that Ground's mass properties are not finite. More... | |
| Mat< 2, 2, Mat< 3, 3, P > > | toSpatialMat () const |
| Convert this MassProperties object to a spatial inertia matrix and return it as a SpatialMat, which is a 2x2 matrix of 3x3 submatrices. More... | |
| Mat< 6, 6, P > | toMat66 () const |
| Convert this MassProperties object to a spatial inertia matrix in the form of an ordinary 6x6 matrix, not a SpatialMat. More... | |
Related Functions | |
(Note that these are not member functions.) | |
| template<class P > | |
| static std::ostream & | operator<< (std::ostream &o, const MassProperties_< P > &mp) |
| Output a human-readable representation of a MassProperties object to the given output stream. More... | |
This class contains the mass, center of mass, and unit inertia matrix of a rigid body B.
The center of mass is a vector from B's origin, expressed in the B frame. The inertia is taken about the B origin, and expressed in B. The frame B is implicit; only the measurements are stored here. The unit inertia can be multiplied by the mass to get the inertia matrix for the body.
Typedefs exist for the most common invocations of MassProperties_<P>:
|
inline |
Create a mass properties object in which the mass, mass center, and inertia are meaningless; you must assign values before using this.
|
inline |
Create a mass properties object from individually supplied mass, mass center, and inertia matrix.
The inertia matrix is divided by the mass to produce the unit inertia.
|
inline |
Create a mass properties object from individually supplied mass, mass center, and unit inertia (gyration) matrix.
|
inline |
Set mass, center of mass, and inertia.
The inertia is divided by the mass to produce the unit inertia. Behaves like an assignment in that a reference to the modified MassProperties object is returned.
|
inline |
Set mass, center of mass, and unit inertia.
Behaves like an assignment in that a reference to the modified MassProperties object is returned.
|
inline |
Return the mass currently stored in this MassProperties object.
|
inline |
Return the mass center currently stored in this MassProperties object; this is expressed in an implicit frame we call "B", and measured from B's origin, but you have to know what that frame is in order to interpret the returned vector.
|
inline |
Return the unit inertia currently stored in this MassProperties object; this is expressed in an implicit frame we call "B", and measured about B's origin, but you have to know what that frame is in order to interpret the returned value correctly.
|
inline |
Return the inertia matrix for this MassProperties object; this is equal to the unit inertia times the mass and costs 6 flops.
It is expressed in an implicit frame we call "B", and measured about B's origin, but you have to know what that frame is in order to interpret the returned value correctly.
|
inline |
OBSOLETE – this is just here for compatibility with 2.2; since the UnitInertia is stored now the full inertia must be calculated at a cost of 6 flops, hence the method name should be calcInertia() and that's what you should use unless you want getUnitInertia().
|
inline |
Return the inertia of this MassProperties object, but measured about the mass center rather than about the (implicit) B frame origin.
The result is still expressed in B.
|
inline |
Return the inertia of this MassProperties object, but with the "measured about" point shifted from the (implicit) B frame origin to a new point that is supplied in newOriginB which must be a vector measured from the B frame origin and expressed in B.
The result is still expressed in B.
|
inline |
Return the inertia of this MassProperties object, but transformed to from the implicit B frame to a new frame C whose pose relative to B is supplied.
Note that this affects both the "measured about" point and the "expressed in" frame.
|
inline |
Return a new MassProperties object that is the same as this one but with the origin point shifted from the (implicit) B frame origin to a new point that is supplied in newOriginB which must be a vector measured from the B frame origin and expressed in B.
This affects both the mass center vector and the inertia. The result is still expressed in B.
|
inline |
Transform these mass properties from the current frame "B" to a new frame "C", given the pose of C in B. Caution: this shifts the point from which the mass properties are measured from the origin of B to the origin of C.
See reexpress() to change only the measure numbers without moving the "measured from" point. Note that the frame in which a MassProperties object is expressed, and the point about which the mass properties are measured, are implicit; we don't actually have any way to verify that it is in B. Make sure you are certain about the current frame before using this method.
|
inline |
Re-express these mass properties from the current frame "B" to a new frame "C", given the orientation of C in B. Caution: this does not shift the point from which the mass properties are measured, it just uses a different frame to express that measurement.
See calcTransformedMassProps() to perform a shift as well. Note that the frame in which a MassProperties object is expressed is implicit; we don't actually have any way to verify that it is in B. Make sure you are certain about the current frame before using this method.
|
inline |
Return true only if the mass stored here is exactly zero. If the mass resulted from a computation, you should use isNearlyMassless() instead.
|
inline |
Return true if the mass stored here is zero to within a small tolerance.
By default we use SignificantReal (about 1e-14 in double precision) as the tolerance but you can override that. If you are just checking to see whether the mass was explicitly set to zero (rather than calculated) you can use isExactlyMassless() instead.
|
inline |
Return true only if the mass center stored here is exactly zero. If the mass center resulted from a computation, you should use isNearlyCentral() instead.
|
inline |
Return true if the mass center stored here is zero to within a small tolerance.
By default we use SignificantReal (about 1e-14 in double precision) as the tolerance but you can override that. If you are just checking to see whether the mass center was explicitly set to zero (rather than calculated) you can use isExactlyCentral() instead.
|
inline |
Return true if any element of this MassProperties object is NaN.
|
inline |
Return true only if there are no NaN's in this MassProperties object, and at least one of the elements is Infinity. Ground's mass properties satisfy these conditions.
|
inline |
|
inline |
Convert this MassProperties object to a spatial inertia matrix and return it as a SpatialMat, which is a 2x2 matrix of 3x3 submatrices.
|
inline |
Convert this MassProperties object to a spatial inertia matrix in the form of an ordinary 6x6 matrix, not a SpatialMat.
Logically these are the same but the ordering of the elements in memory is different between a Mat66 and SpatialMat.
|
related |
Output a human-readable representation of a MassProperties object to the given output stream.
This is assumed to be the mass properties of some body B. We'll show B's mass, center of mass as a vector from B's origin, expressed in B, and unit inertia, abbreviated Uxx, Uyy, and so on so that you won't accidentally think these are mass-scaled inertias normally designated Ixx, Iyy, etc. Note that I=mass*U in these terms. Also note that the unit inertia is taken about the body frame origin, not about the center of mass. And of course the unit inertia is expressed in B.


OCC-react-collapsible-table This is our awesome react table. Read the docs, grab the code, and help us make it even better!


|
CoreSight Access Library
2.3
ARM CoreSight Access Library - on target CoreSight component control
|
Detection and registration of components. Definition of topology. More...
Functions | |
| int | cs_register_romtable (cs_physaddr_t addr) |
| Register devices listed in a CoreSight ROM table, and any secondary ROM tables it points to. More... | |
| cs_device_t | cs_device_register (cs_physaddr_t addr) |
| Register a device. More... | |
| int | cs_exclude_range (cs_physaddr_t from, cs_physaddr_t to) |
| Exclude a range of physical addresses from ROM table probing. More... | |
| int | cs_device_set_affinity (cs_device_t dev, cs_cpu_t cpu) |
| Indicate that a component (such as an ETM or CTI) is attached to a CPU. More... | |
| int | cs_device_set_power_domain (cs_device_t dev, cs_power_domain_t power_domain) |
| Set the device power domain. More... | |
| int | cs_atb_register (cs_device_t from, unsigned int from_port, cs_device_t to, unsigned int to_port) |
| Register a trace bus connection between two components. More... | |
| int | cs_atid_is_valid (cs_atid_t id) |
| Check if trace source identifier is valid. More... | |
| cs_device_t | cs_atb_add_replicator (unsigned int n_out_ports) |
| Register a non-programmable (non-memory-mapped) replicator. More... | |
| int | cs_registration_complete (void) |
| Indicate that registration is complete. | |
| int | cs_registration_completed (void) |
| Indicates whether registration is completed. | |
Detection and registration of components. Definition of topology.
Before the library can be used to program devices, the caller must register the devices using the registration API, so that the library knows the list of devices and their connections. This must be done each time the library is instantiated into a new address space and initialized using cs_init(). The library caller is responsible for providing the information to the library, although the library may be able to discover some information e.g. by scanning ROM tables.
Device and topology information may come from a variety of sources, e.g.
The basic registration procedure is:
In general it is not necessary to register devices that will not directly or indirectly be used. Examples of where devices are indirectly used include
During the registration phase, programming API calls should not be used. Once the registration phase is complete, cs_registration_complete() should be called and the CoreSight devices can then be programmed.
| cs_device_t cs_atb_add_replicator | ( | unsigned int | n_out_ports | ) |
Register a non-programmable (non-memory-mapped) replicator.
This may be necessary to complete the registration of the topology.
| n_out_ports | Number of output ports of the replicator. |
| int cs_atb_register | ( | cs_device_t | from, |
| unsigned int | from_port, | ||
| cs_device_t | to, | ||
| unsigned int | to_port | ||
| ) |
Register a trace bus connection between two components.
This API call is used to define the trace bus topology. Non-programmable one-to-one links (bus resizers, bridges etc.) need not appear. All other links (ETF, funnels, replicators) should be explicit in the topology.
| from | Source device |
| from_port | Output trace port on source device - may be non-zero for e.g. replicators |
| to | Destination device |
| to_port | Input trace port on destination device - may be non-zero for e.g. funnels |
| int cs_atid_is_valid | ( | cs_atid_t | id | ) |
Check if trace source identifier is valid.
This does not check if the trace source identifier is unique in the currently configured system.
| cs_device_t cs_device_register | ( | cs_physaddr_t | addr | ) |
Register a device.
Device type and properties will be automatically discovered. If device is already registered then no change is made.
| addr | Physical address of the device |
| int cs_device_set_affinity | ( | cs_device_t | dev, |
| cs_cpu_t | cpu | ||
| ) |
Indicate that a component (such as an ETM or CTI) is attached to a CPU.
| dev | The component |
| cpu | The CPU |
| int cs_device_set_power_domain | ( | cs_device_t | dev, |
| cs_power_domain_t | power_domain | ||
| ) |
Set the device power domain.
Where devices have different power domains this sets the number, overriding any value extracted from a ROM table.
| dev | The component. |
| power_domain | The power domain ID number. |
| int cs_exclude_range | ( | cs_physaddr_t | from, |
| cs_physaddr_t | to | ||
| ) |
Exclude a range of physical addresses from ROM table probing.
This avoids problems when some components are not accessible and would cause bus hangs if probed.
| int cs_register_romtable | ( | cs_physaddr_t | addr | ) |
Register devices listed in a CoreSight ROM table, and any secondary ROM tables it points to.
cs_exclude_range() can be used to exclude ranges of device addresses.


Free!
- Stores Data
- Free
- Pretty Fast
curl -L https://olegdb.org/massacre.sh | sh
OlegDB is a database that meets the bottom line head-on. It operates under a startling new enterprise-ready paradigm which we call MAYO: Marginally available Yolk and Oil database.
The 1980's were a glorious time for database experimentation, with the clear winner being DBM. With that in mind, we built OlegDB.
OlegDB exports an API, so if you want to embed it go ahead. Check out the docs to get started.
"You could have one bad-ass mayonnaise project"
- @nijotz
"Wally will you build a database that embeds love into my heart <3"


NAME: {{name}}
ACTING: {{acting}}
SINGING: {{singing}}
FAME: {{fame}}
MONEY: {{money}}
ENERGY: {{energy}}
{{message}}
PART-TIME JOB
TECHNICAL TRAINING
FORMAL WORK
REST


| Full Name | : | Max-André Christopher Zils |
| Gender | : | Male |
| ID Number | : | 880319 527 908 7 |
| Date of Birth | : | 19 March 1988 |
| Residential Adress | : | 5 Scott Road Observatory, Cape Town |
| Languages | : | English and Afrikaans |
| Marital Startus | : | Single |
| Criminal Record | : | None |
| Driver's Licence | : | Learner's Permit |
| Health | : | Good |
| Degrees: | B.Com(Honours) Information Systems -- 2013 |
| B.Com(General) --2012 | |
| Institution: | University of the Western Cape |
| Description: |
| Institution: | : | South African College School |


Swagger API is visible at /swagger with the definition being at /swagger.json
GraphQL is at /graphql with a ui being at /graphiql


--- layout: post title: Milton Nascimento l Travessia (Bridges) date: 2011-04-04 18:13:00.000000000 +09:00 type: post parent_id: '0' published: true password: '' status: publish categories: [] tags: [] meta: _original_post_id: '48442513' _original_import_author: sheepless_ original_post_id: '48442513' _wp_old_slug: '48442513' author: login: mouthless email<EMAIL_ADDRESS>display_name: mouthless first_name: '' last_name: '' excerpt: 'Milton Nascimento : Courage (1969) 01. Travessia (Bridges) I have crossed a thousand bridges In my search for something real There were great suspension bridges Made like spiderwebs of steel There were tiny wooden trestles And there were bridges m...' ---
[audio http://sheeplesssleepless.files.wordpress.com/2011/04/bd59e-01_bridges_travessia.mp3]
01_Bridges_(Travessia).mp3
Milton Nascimento : Courage (1969)
01. Travessia (Bridges)
I have crossed a thousand bridges
In my search for something real
There were great suspension bridges
Made like spiderwebs of steel
There were tiny wooden trestles
And there were bridges made of stone
I have always been a stranger
And I've always been alone
There's a bridge to tomorrow
There's a bridge from the past
There's a bridge made of sorrow
That I pray will not last
There's a bridge made of colors
In the sky high above
And I think that there must be
Bridges made out of love
I can see her in the distance
On the river's other shore
And her hands reach out in longing
As my own have done before
And I call across to tell her
Where I believe the bridge must lie
And I'll find it
Yes, I'll find it
If I search until I die
When the bridge is between us
We'll have nothing to fear
We will run through the sunlight
And I'll meet her halfway
There's a bridge made of colors
In the sky high above
And I'm certain that somewhere
There's a bridge made of love
[youtube http://www.youtube.com/watch?v=x7QcCrUqMkg?wmode=transparent]
[II Festival Internacional da Canção 1967]


SoapClient::SoapClient
(PHP 5 >= 5.0.1, PHP 7)
SoapClient::SoapClient — SoapClient constructor
说明
public SoapClient::SoapClient ( mixed $wsdl [, array $options ] )
This constructor creates SoapClient objects in WSDL or non-WSDL mode.
参数
wsdl
URI of the WSDL file or NULL if working in non-WSDL mode.
Note:
During development, WSDL caching may be disabled by the use of the
soap.wsdl_cache_ttl php.ini setting otherwise changes made to the WSDL
file will have no effect until soap.wsdl_cache_ttl is expired.
options
An array of options. If working in WSDL mode, this parameter is optional.
If working in non-WSDL mode, the location and uri options must be set,
where location is the URL of the SOAP server to send the request to, and
uri is the target namespace of the SOAP service.
The style and use options only work in non-WSDL mode. In WSDL mode, they
come from the WSDL file.
The soap_version option should be one of either SOAP_1_1 or SOAP_1_2 to
select SOAP 1.1 or 1.2, respectively. If omitted, 1.1 is used.
For HTTP authentication, the login and password options can be used to
supply credentials. For making an HTTP connection through a proxy server,
the options proxy_host, proxy_port, proxy_login and proxy_password are also
available. For HTTPS client certificate authentication use local_cert and
passphrase options. An authentication may be supplied in the authentication
option. The authentication method may be either SOAP_AUTHENTICATION_BASIC
(default) or SOAP_AUTHENTICATION_DIGEST.
The compression option allows to use compression of HTTP SOAP requests and
responses.
The encoding option defines internal character encoding. This option does
not change the encoding of SOAP requests (it is always utf-8), but converts
strings into it.
The trace option enables tracing of request so faults can be backtraced.
This defaults to FALSE
The classmap option can be used to map some WSDL types to PHP classes. This
option must be an array with WSDL types as keys and names of PHP classes as
values.
Setting the boolean trace option enables use of the methods SoapClient->
__getLastRequest, SoapClient->__getLastRequestHeaders, SoapClient->
__getLastResponse and SoapClient->__getLastResponseHeaders.
The exceptions option is a boolean value defining whether soap errors throw
exceptions of type SoapFault.
The connection_timeout option defines a timeout in seconds for the
connection to the SOAP service. This option does not define a timeout for
services with slow responses. To limit the time to wait for calls to finish
the default_socket_timeout setting is available.
The typemap option is an array of type mappings. Type mapping is an array
with keys type_name, type_ns (namespace URI), from_xml (callback accepting
one string parameter) and to_xml (callback accepting one object parameter).
The cache_wsdl option is one of WSDL_CACHE_NONE, WSDL_CACHE_DISK,
WSDL_CACHE_MEMORY or WSDL_CACHE_BOTH.
The user_agent option specifies string to use in User-Agent header.
The stream_context option is a resource for context.
The features option is a bitmask of SOAP_SINGLE_ELEMENT_ARRAYS,
SOAP_USE_XSI_ARRAY_TYPE, SOAP_WAIT_ONE_WAY_CALLS.
The keep_alive option is a boolean value defining whether to send the
Connection: Keep-Alive header or Connection: close.
The ssl_method option is one of SOAP_SSL_METHOD_TLS, SOAP_SSL_METHOD_SSLv2,
SOAP_SSL_METHOD_SSLv3 or SOAP_SSL_METHOD_SSLv23.
错误／异常
SoapClient::SoapClient() will generate an E_ERROR error if the location and uri
options aren't provided in non-WSDL mode.
A SoapFault exception will be thrown if the wsdl URI cannot be loaded.
更新日志
版本 说明
5.5.0 New ssl_method option.
5.4.0 New keep_alive option.
范例
Example #1 SoapClient::SoapClient() example
SOAP_1_2));
$client = new SoapClient("some.wsdl", array('login' => "some_name",
'password' => "some_password"
));
$client = new SoapClient("some.wsdl", array('proxy_host' => "localhost",
'proxy_port' => 8080));
$client = new SoapClient("some.wsdl", array('proxy_host' => "localhost",
'proxy_port' => 8080,
'proxy_login' => "some_name",
'proxy_password' => "some_password"
));
$client = new SoapClient("some.wsdl", array('local_cert' => "cert_key.pem"
));
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/"));
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/",
'style' => SOAP_DOCUMENT,
'use' => SOAP_LITERAL));
$client = new SoapClient("some.wsdl",
array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP));
$server = new SoapClient("some.wsdl", array('encoding'=>'ISO-8859-1'));
class MyBook {
public $title;
public $author;
}
$server = new SoapClient("books.wsdl", array('classmap' => array('book' =>
"MyBook")));
?>
User Contributed Notes 55 notes
===============================================================================
It took me longer than a week to figure out how to implement WSSE (Web Service
Security) headers in native PHP SOAP. There are no much resource available on
this, so thought to add this here for community benefit.
Step1: Create two classes to create a structure for WSSE headers
Username=$username;
$this->Password=$password;
}
}
class clsWSSEToken {
private $UsernameToken;
function __construct ($innerVal){
$this->UsernameToken = $innerVal;
}
}
?>
Step2: Create Soap Variables for UserName and Password
Step3: Create Object for Auth Class and pass in soap var
Step4: Create SoapVar out of object of Auth class
Step5: Create object for Token Class
Step6: Create SoapVar out of object of Token class
Step7: Create SoapVar for 'Security' node
Step8: Create header object out of security soapvar
Step9: Create object of Soap Client
Step10: Set headers for soapclient object
__setSoapHeaders(array($objSoapVarWSSEHeader));
?>
Step 11: Final call to method
__soapCall($strMethod, $requestPayloadString);
?>
===============================================================================
This doesn't seem to be documented, but when you want to use compression for
your outgoing requests, you have to OR with the compression level:
SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 9));
?>
This can be really usefull if you want to send large amounts of data.
Source: https://bugs.php.net/bug.php?id=36283
===============================================================================
As noted in the bug report http://bugs.php.net/bug.php?id=36226, it is
considered a feature that sequences with a single element do not come out as
arrays. To override this "feature" you can do the following:
$x = new SoapClient($wsdl, array('features' =>
SOAP_SINGLE_ELEMENT_ARRAYS));
===============================================================================
If your service is protected through basic http authentication and you're not
using wsdl, you will have to put the login in the SoapClient's option:
SOAP_1_2,
'location' => ...
...,
'login' => 'username',
'password' => '*******',
)
);
?>
===============================================================================
Example for a soap client with HTTP authentication over a proxy:
1,
'exceptions' => true,
'cache_wsdl' => WSDL_CACHE_NONE,
'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
// Auth credentials for the SOAP request.
'login' => 'username',
'password' => 'password',
// Proxy url.
'proxy_host' => 'example.com', // Do not add the schema here (http or
https). It won't work.
'proxy_port' => 44300,
// Auth credentials for the proxy.
'proxy_login' => NULL,
'proxy_password' => NULL,
)
);
?>
Providing an URL to a WSDL file on the remote server (which as well is
protected with HTTP authentication) didn't work. I downloaded the WSDL and
stored it on the local server.
===============================================================================
Hello folks!

Doing that will save you from a lot of useless pain.
===============================================================================
if you need to use ws-security with a nonce and a timestamp, you can use this :
Username = new SoapVar($user, XSD_STRING, NULL, $this->wss_ns, NULL,
$this->wss_ns);
$auth->Password = new SoapVar($pass, XSD_STRING, NULL, $this->wss_ns, NULL,
$this->wss_ns);
$auth->Nonce = new SoapVar($passdigest, XSD_STRING, NULL, $this->wss_ns,
NULL, $this->wss_ns);
$auth->Created = new SoapVar($created, XSD_STRING, NULL, $this->wss_ns,
NULL, $this->wsu_ns);
$username_token = new stdClass();
$username_token->UsernameToken = new SoapVar($auth, SOAP_ENC_OBJECT, NULL,
$this->wss_ns, 'UsernameToken', $this->wss_ns);
$security_sv = new SoapVar(
new SoapVar($username_token, SOAP_ENC_OBJECT, NULL, $this->wss_ns,
'UsernameToken', $this->wss_ns),
SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'Security', $this->wss_ns);
parent::__construct($this->wss_ns, 'Security', $security_sv, true);
}
}
?>
and with your SoapClient do :
__setSoapHeaders(Array(new WsseAuthHeader("user", "pass")));
?>
works for me. based on a stackoverlfow post which only did the username and
password, not the nonce and the timestamp
===============================================================================
A note regarding boolean values that may seem obvious on reflection but could
be a gotcha for some:
Seeing a SOAP request example with true
may lead you to pass in string "true" or "false" as the parameter, which is
incorrect - the correct method is to use boolean data types.
SomeBooleanParam = TRUE;
$client->$method($params);
/**
simplified request snippet would be
true
**/
//this will also be correct, but not for the right reasons:
$params->SomeBooleanParam = "true";
$client->$method($params);
/**
simplified request snippet would be
true
**/
//this is where you may be wondering what is going on
$params->SomeBooleanParam = "false";
$client->$method($params);
/**
simplified request snippet would be
true
**/
//you need to do this instead
$params->SomeBooleanParam = FALSE;
$client->$method($params);
/**
simplified request snippet would be
false
**/
?>
Hope that helps!
===============================================================================
As of 5.5, ssl_method defaults to SOAP_SSL_METHOD_SSLv23. Just wanted to add
this because it was not explicitly specified above.
===============================================================================
For anyone having trouble with ArrayOf_xsd_string and getting an error similar
to 'No deserializer defined for array type {http://www.w3.org/2001/XMLSchema}
string'
Try using the 'features' param, set to SOAP_USE_XSI_ARRAY_TYPE - this makes
sure the correct deserializer is used.
eg,
SOAP_USE_XSI_ARRAY_TYPE));
?>
===============================================================================
This took me a while to figure out.
As described at the bottom of here: http://bugs.php.net/bug.php?id=38703
having xdebug may interfere with the constructor throwing exceptions
===============================================================================
Note that if libxml_disable_entity_loader() has been called, you cannot specify
a WSDL file - you'll get an error that PHP "failed to load external entity".
To resolve this, add
Above any calls to instantiate SoapClient.
===============================================================================
You CAN get a wsdl, if basic authentication is required:
$login,
'password' => $password
)
);
?>
===============================================================================
a full working php .net soap configuration :
notes
1. web.config on .net server must work with basichttp binding.
2. paramaters to soap functions must be passed as :
array ('parm1_name'=>'parm1_value',
'parm2_name'=>'parm2_value'...)
SOAP_1_1,
'exceptions'=>true,
'trace'=>1,
'cache_wsdl'=>WSDL_CACHE_NONE
);
$client = new SoapClient('http://www.example.com/end_point.wsdl',
$options);
// Note where 'Get' and 'request' tags are in the XML
} catch (Exception $e) {
echo "
Exception Error!
";
echo $e->getMessage();
}
echo 'running HelloWorld :';
try {
$response=$client->HelloWorld();
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
print_r($response);
?>
good luck !
Asaf.
===============================================================================
To monitor SOAP calls in and out of a unix server:
sudo tcpdump -nn -vv -A -s 0 -i eth0 dst or src host xxx.xxx.xxx.xxx and port
80
And always use 'cache_wsdl' => WSDL_CACHE_NONE
===============================================================================
I kept having a problem using an HTTP proxy with SOAP. The proxy_port parameter
has to be an integer, ie. "proxy_port"=>"80" won't work, you'll have to use
"proxy_port"=>80.
HTH,
Marius
===============================================================================
When using HTTP basic authentication, PHP will only send the credentials when
invoking the service, not when fetching the WSDL.
To solve this, one needs to fetch the WSDL manually (or using PHP, of course!)
and store it on the file system. Obviously, the first parameter for SoapClient
(..) then needs to refer to that local copy.
Alternatively, the user annotations at http://nl3.php.net/manual/en/
ref.soap.php state that one could encode the login and password into the URL as
well.
See http://bugs.php.net/bug.php?id=27777
===============================================================================
Here's a function for easier debugging:
__getLastRequestHeaders();
$request = prettyXml($client->__getLastRequest());
$responseHeaders = $client->__getLastResponseHeaders();
$response = prettyXml($client->__getLastResponse());
echo '' . nl2br(htmlspecialchars($requestHeaders, true)) . '
';
echo highlight_string($request, true) . "
\n";
echo '' . nl2br(htmlspecialchars($responseHeaders, true)) . '
'
. "
\n";
echo highlight_string($response, true) . "
\n";
}
$client = new SoapClient(null, array(
'location' => 'http://sita.local/_mpay/server.php',
'uri' => 'http://sita.local/_mpay/',
'trace' => 1,
));
$result = $client->__soapCall('getDate', array('format' => 'Y-m-d H:i:s'));
soapDebug($client);
?>
===============================================================================
To those fighting with NTLM authenticated proxy servers, here's a solution I'm
using atm:
*
*/
class NTLM_SoapClient extends SoapClient {
public function __construct($wsdl, $options = array()) {
if (empty($options['proxy_login']) || empty($options['proxy_password'
])) throw new Exception('Login and password required for NTLM authentication!'
);
$this->proxy_login = $options['proxy_login'];
$this->proxy_password = $options['proxy_password'];
$this->proxy_host = (empty($options['proxy_host']) ? 'localhost' :
$options['proxy_host']);
$this->proxy_port = (empty($options['proxy_port']) ? 8080 : $options[
'proxy_port']);
parent::__construct($wsdl, $options);
}
/**
* Call a url using curl with ntlm auth
*
* @param string $url
* @param string $data
* @return string
* @throws SoapFault on curl connection error
*/
protected function callCurl($url, $data) {
$handle = curl_init();
curl_setopt($handle, CURLOPT_HEADER, false);
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_FAILONERROR, true);
curl_setopt($handle, CURLOPT_HTTPHEADER, Array("PHP SOAP-NTLM Client") );
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
curl_setopt($handle, CURLOPT_PROXYUSERPWD,$this->proxy_login.':'.$this->
proxy_password);
curl_setopt($handle, CURLOPT_PROXY, $this->proxy_host.':'.$this->proxy_port
);
curl_setopt($handle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
$response = curl_exec($handle);
if (empty($response)) {
throw new SoapFault('CURL error: '.curl_error($handle),curl_errno($handle
));
}
curl_close($handle);
return $response;
}
public function __doRequest($request,$location,$action,$version,$one_way =
0) {
return $this->callCurl($location,$request);
}
}
?>
Requires curl and could be extended, but it works for my simple needs.
===============================================================================
If you're using CLI and there are multiple IP addresses available for outgoing
SOAP-requests, try this "secret" to set outgoing IP:
e.g. for local IP <IP_ADDRESS>:
$opts = array('socket' => array('bindto' => '<IP_ADDRESS>:0'));
$context = stream_context_create($opts);
$client = new SoapClient(null, array('location'=>'http://...','uri' =>
'...','stream_context' => $context));
You can also set other options for the stream context, please refer to this
page:
Appendix M: http://www.php.net/manual/en/wrappers.php
Bye,
Nils Sowen
===============================================================================
As of version 5.0.4 you can now dynamically change your location even if you're
using a wsdl
'myurl.com'));
?>
notice you can now use the "location" key.
This means you can have the same wsdl file not define a location until runtime
which is great if you have a development test site or if you distribute your
files to other companies.
Prior to this change you would have to ship a custom wsdl file to every client
you had with their location hardcoded.
===============================================================================
I found a good use for typemap. When using classmap any xml tags that had
attributes, attribute values were not captured, so a typemap allows you to
override how a class gets implemented and being able to get any attributes not
previously captured.
-
red
-
blue
[
'ItemList' => 'ExampleNS\ItemList',
'Item' => 'ExampleNS\Item'
],
'typemap'=>[
'type_ns' => 'http://some.wsdl.ns/sdo',
'type_name' => 'Item',
'from_xml' => [__CLASS__,'newConversion']
]
];
}
public function newConversion($xml){
return simplexml_load_string($xml);
//or more appropriately dig into the simplexml object and
//instantiate the correct classes intended to be defined and
//return those
}
}
?>
===============================================================================
I posted in this URL http://softontherocks.blogspot.com/2014/02/
web-service-soap-con-php.html a full example of a nusoap web service.
There is defined the server and the client who calls the web service.
I hope it would be useful for you.
===============================================================================
To solve the problem with a lot of FIN_WAIT2 or CLOSE_WAIT , you should use the
option keep_alive=false
===============================================================================
When using classmap, never put a fully qualified classname (starting with \)
there is a bug (https://bugs.php.net/bug.php?id=69280)
===============================================================================
After installing PHP 7 on my test server I was receiving a 500 - Internal
Server error when instantiating a new SoapClient. If there's an existing wsdl
cache file, it needs to be deleted.
===============================================================================
There seems to be a problem with specifying empty strings for proxy_host and
proxy_port options in recent versions of PHP (from a version later than 5.2.9,
and equal to or earlier than 5.2.11).
Supplying empty string values for proxy_host and proxy_port causes "host not
found" type errors: supplying NULL or FALSE works fine.
===============================================================================
CAUTION:
I had quite a bit of trouble trying to make a request with fopen through a
proxy to a secure url. I kept getting a 400 Bad Request back from the remote
host. It was receiving the proxy url as the SNI host. In order to get around
this I had to explicity set the SNI host to the domain I was trying to reach.
It's apparently the issue outlined in this bug:
https://bugs.php.net/bug.php?id=63519
array( 'proxy' => $proxy_string ),
'ssl' => array( 'SNI_enabled' => true, 'SNI_server_name' => $domain));
$context = stream_context_create($opts);
$handle = fopen( $file, 'r', false, $context );
?>
src:
http://php.net/manual/en/context.http.php#114314
===============================================================================
Where you have the problem of
"looks like we got no XML document SoapClient", really the real problem is the
xml code from remote server is not clear (after last tag is possible that you
have space or other caracter that the your supplier of service have lost : no
one is perfect!)
I've read some solution, like here, but you must to know that is possible, that
is possible that the remote server don't wrong, and the "surplus" (latin word
for added values) is needed.
In particolar with axis Java server, is possible that the configuration of
server is needed and the "surplus" is one or more attachments...
The solution is 3:
1) contact your supplier if is possible to remove caracter if is an error (good
luck! ;) )
2) use another class like nusoap resolve the problem (but has other problem!)
3) this technical solution:
when call the wsdl be sure that the option trace and exceptions are setted (the
first true and the second false)
1,
'exceptions' => 0
)
?>
(if you don't do that you can't use the __getLastResponse)
Now You can do the request and use __getLastResponse() to obtain all the part..
problematicCall($par);
?>
After all you obtain a variable like that:
-----=_Part_9325_126764118.1363377774664
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-Id: <1C06F7FBA057796C5A6185605F9F93E4>
<...etc ><?xml version="1.0"
encoding="UTF-8"?>
<MESSAGGIO>
<DA>MI</DA>
<A>PALADINUX</A>
<ID>12345</ID>
<TIPODOC>RC</TIPODOC>
<RISPOSTA>
</MESSAGGIO>
soapenv:Envelope>
------=_Part_9325_126764118.1234567890123
Content-Type: application/zip
Content-Transfer-Encoding: binary
Content-Id: <43E91F7E7PALADINUXE07BF041A7BAC9>
-------------------------
Is easy understand if the added part is needed or not!
Now you can explode all the part and parse!
Hope this can help you.See ya in the cyberspace!
===============================================================================
this is the syntax of typemap (found at http://svn.php.net/viewvc/php/php-src/
trunk/ext/soap/tests/typemap012.phpt?view=markup)
array(
array("type_ns" => "http://schemas.nothing.com",
"type_name" => "soap",
"to_xml" => "some_funktion_name")
));
?>
===============================================================================
It should be noted that if you receive a return error : 'Object reference not
set to an instance of an object.'. This could be due to something as simple as
passing the incorrect parameters. When you look at this XML:
string
dateTime
dateTime
Your code should look something like this:
SOAP_1_2,
'exceptions'=>true,
'trace'=>1,
'cache_wsdl'=>WSDL_CACHE_NONE
);
$client = new SoapClient('http://example.com/doc.asmx?WSDL',
$options);
// Note where 'Get' and 'request' tags are in the XML
$results = $client->Get(array('request'=>array('CustomerId'=>'1234'
)));
} catch (Exception $e) {
echo "Exception Error!
";
echo $e->getMessage();
}
$results = $client->Get(array('request'=>array('CustomerId'=>'842115')));
?>
===============================================================================
If your WSDL file containts a parameter with a base64Binary type, you should
not use base64_encode() when passing along your soap vars. When doing the
request, the SOAP library automatically base64 encodes your data, so otherwise
you'll be encoding it twice.
WSDL snipplet:
'bar',
//'content' => base64_encode($string ) // don't do this
'content' => $string //do this
);
$response = $client->Send($soap_data);
?>
===============================================================================
Being new to SOAP, I was searching for a while to find out why my message was
getting a response in soapUI, but not with my php code. The specific service I
was addressing gives a HTTP 202 Accepted on success (no response), but returns
a SOAP message on errors.

Solution:
When calling the client constructor, set SOAP_WAIT_ONE_WAY_CALLS in the
$options['features'].
===============================================================================
PHP 5.2.11 seems to not be very picky about the correctness of a WSDL.
Other SOAP clients were complaining about schema and namespace issues, while
PHP's SoapClient worked completely fine. Fixing those issues for the other
clients however broke PHP's SoapClient to the point where objects being passed
to the SOAP method were becoming empty arrays on the server side.
Lesson learned: some elements were being prefixed with xsd: and others were
not -- make absolutely sure your WSDL is correct and consistent (I'm using a
tweaked WSDL_Gen.php).
===============================================================================
The "cache_wsdl" option takes constants like WSDL_CACHE_NONE or WSDL_CACHE_DISK
that are listed on the "SOAP constants" page -> /manual/en/soap.constants.php
===============================================================================
I had to struggle with a rather strange behavior when trying to consume
standard Parlay X web services with no success. However, I found a remedy to my
problem.
The problem which I faced was about an erroneous invalid HTTP basic
authentication request sent to the web service. Although I was sending the
right credentials, I was getting an authentication error. It turns out that PHP
was sending HTTP requests to another endpoint which is not exposed directly
through the web service and that end point does not require authentication.
My remedy for that issue was by using this simple lines in the example of using
sendSms Paraly-X method.
First, creating a soap client without any HTTP authentication options:
The above request will cache the wsdl in the /tmp directory. Immediately after
this construction we create another soap client, this time with HTTP
authentication options:
"griffin",
'password' => "password"));
} catch (Exception $e) {
printf("Error:sendSms: %s\n",$e->__toString());
return false;
}
?>
Now it should work without any problem. Without the second call, PHP will call
sendSms without credentials resulting in a failed attempt due to missing
authentication information. I found this procedure to be the simplest.
This process should be done every time the cached wsdl expires, or simply a one
can increase the time-to-live for the cached wsdl from php.ini
===============================================================================
Note that creating a soap client for an invalid URL (you do test what happens,
when a service is not available, right?) usually throws an exception which can
be caught with try..catch. However, if xdebug is active you will get a fatal
error, which obviously cannot be caught.
===============================================================================
I had an issue figuring out the use of classmap that took me quite a while to
figure out. I was assuming the WSDL type the docs were referring to was the
name of the element being returned in the SOAP, so like,
and I was wondering why mapping
'classmap'=>array('node'=>'MyNode')
did nothing.
That's because in my WSDL I defined node as:
The classmap I needed was:
'classmap'=>array('nodeType'=>'MyNode')
I was able to find the type names using SoapClient->__getTypes()
Later, I realized where I could look inside the WSDL for the typename I needed.
I dunno if I missed something painfully obvious but maybe this can clear up
some of the docs.
===============================================================================
We've had some problems using SoapClient connecting to an external server via
Microsoft ISA (presently v.2006 but this may apply to other versions too). We
supply the proxy_host, proxy_port, proxy_login and proxy_password but the ISA
server reports the login in its logs as "anonymous".
Our sysadmin believes this is because PHP is not supplying NTLN information
(Windows security protocol) in the correct format (and whether it should work
with proprietary proxies is of course another debate). We'd tried "username",
"DOMAIN\username" to no effect. The solution is to add an exception in the ISA
server for the target hostname/IP; null can then be supplied for proxy_login
and proxy_password and the connection should then work as expected.
On a slightly related note, if you are having problems make sure the port
number is supplied as an integer. Some versions of PHP will not use the proxy
with SoapClient if the port number is supplied as a string.
===============================================================================
i was looking for a good example and couldnt find one,
finally found it somewhere(forgot where) i think this is
the best example to make a soap request with multiple params
$params->AWSAccessKeyId = AMAZON_API_KEY;
$params->Request->SearchIndex = 'Books';
$params->Request->Keywords = 'php5 oop';
$amazon = new SoapClient('http://webservices.amazon.com
/AWSECommerceService/AWSECommerceService.wsdl');
$result = $amazon->itemSearch($params);
===============================================================================
To connect PHP SOAP to MS SOAP (CRM/EXCHANGE/...) I have created some classes
using the explanation below and in other places.
www.reutone.com/heb/articles.php?instance_id=62&actions=show&id=521
===============================================================================
I was having troubles getting responses from a Coldfusion SOAP server, with no
obvious issues in the SoapClient used.
Eventually I found that the server was only accepting SOAP 1.1 requests and not
1.2. Not sure if this is a system wide Coldfusion setting but if you hit the
same wall, try setting the SoapClient option "soap_version" to the constant
SOAP_1_1 (which is the default but mine was defaulting to 1.2 as the client was
being reused for another service)
===============================================================================
SoapFault exception: [Client] looks like we got no XML document in
has been already mentioned to occur when your server outputs something before
tag.
For all those having problems with that, and no access to the server code:
This is how to make a proxy that would clean responses for You
cacheDocument = $document;
}
/**
* __doRequest() overrides the standard SoapClient to handle a local
request
*/
public function __doRequest() {
return $this->cacheDocument;
}
}
//put this code in your function or wherever You have all required variables
set
$client = new SoapClient($wsdl_url,$settings_array);
$void=$client->$method($params); //call this to get response from server
$response_string=$client->__getLastResponse();
//this part removes stuff
$start=strpos($response_string,'');
$response_string=substr($response_string,$start,$end-$start+1);
//get your proxy prepared
$proxy = new Proxy_Client($wsdl_url,$settings_array);
//and fill it with the server's response
$proxy->SetCacheDocument($response_string);
$and_finally_the_result_is=$proxy->$method($params);
print_r($and_finally_the_result_is); //this allows You to see what's there
?>
$method is the method's name eg. $method='getVersion';
$params - typical params for a soap method
===============================================================================
When using classmap option to map the SOAP results to a class, the constructor
of the object you've mapped to is not called.
$client = new SoapClient("url_to_wsdl",
array('classmap' => array('contact' => "Contact"));
$params = array("1");
$contact = $client->__soapCall("get_contact", $params);
Expected result:
A contact object that has properties initialized (i.e. db connections,
....).
Actual result:
A contact object without the properties.
Thanks for your help.
David Georges.
===============================================================================
> When using HTTP basic authentication, PHP will only send
> the credentials when invoking the service, not when
> fetching the WSDL.
The same goes for using an SSL client certficate, the SoapClient will only
present the certificate on the actual remote call, not when getting the WSDL.
The workaround is the same as above. HttpRequest works as expected.
===============================================================================
Though pointed out by jan at bestbytes, and discussed in bug #27777, one common
source of the "Parsing WSDL: Couldn't find " error is from trying
to access a WSDL that is protected by HTTP authentication. Passing the login/
password in the 2nd parameter doesn't always work; so if you encounter this
error message and are trying to access a protected WSDL file, try passing the
username and password in with the first parameter.
===============================================================================
Oops!
I have written the wrong exception message in my last post.
The correct exception is:
SoapFault exception: [Client] looks like we got no XML document in
===============================================================================
When using classmap to map the SOAP results to a class, the constructor of the
object you've mapped to is _not_ called. This applies to the PHP5 __construct
() and the PHP4 ClassName() constructors.
===============================================================================
If you connect to a SoapServer, that has been created with session persistence,
you can access the server's session id via SoapClient->_cookies
[][0]. This property becomes available after your first client
method call.
I have only tested this with session.use_cookies=1.
===============================================================================
Using a WSDL file is the way to go, however, for my particular application, the
LOCATION:PORT needed to be dynamic so that my SOAP clients would be able to
call a different service based on the client domain.
If you are using a WSDL, SoapClient() requires a URL direct to an actual URL
and does not let you use a PHP file that outputs the dynamic WSDL XML in its
stead. So, I ended up making a separate WSDL for each possible service needed
and had to maintain them all if the service description changed.
Finally, after some fiddling, I was able to create a PHP page with the proper
Mime type headers so that I could then trick SoapClient() to think that it was
being passed a file with a ".wsdl" extension.
Example:
Now, in order to make this work, you can't just call a relative path to the
file. I believe it has to go through Apache to properly set the mime type
headers, etc... So you would use a full "http://....." address as the path to
the wsdl.php file.
Another, perhaps not so clean, way of achieving this would be to modify your
.htaccess file in the directory where your WSDL file exists to force ".wsdl"
files to run through the PHP engine. Add the following to your .htaccess:
AddType application/x-httpd-php .php .wsdl
You can then put dynamic PHP code snippets in your *.wsdl files to change
whatever values you need to.
There are pros and cons to each solutions. The Mime solution probably taxes the
system more as it has to read the file in every time a soap request is made.
The htaccess solution makes it so you have to depend on either a modified
.htaccess or Apache conf file.
Perhaps if you set the "soap.wsdl_cache_enabled", using ini_set(), to 1
(default), the caching will make it so it doesn't read the file every time for
the Mime solution.
===============================================================================
The "classmap" option actually is a mapping from the "ComplexType" used within
the SOAP to your PHP Classes.
Do not confuse the XML tag names returned for your request with these
ComplexTypes. SOAP allows them to be different.
I had something like this:
...
FooBar
TagName is not the key you want to put in your classmap, you have to know the
name of the ComplexType this TagName refers to. This info is contained inside
the WSDL resource.
===============================================================================
If you want to use classes in a different namespace in your classmap, just use
the backslash in the the target class name.
Example:
'MyNamespace\\Result');
?>
You need to specify the backslash twice because it is the escape character in
strings.
===============================================================================
Somebody using SoapClient has sometimes a lot of CLOSE_WAIT states?
It's in a local connection in a openSuse 11 (x86_64, version 11, patchlevel 2)
with Apache 2.2.22 and PHP 5.3.15.
===============================================================================
I'm experiencing the same problems when trying to load a WDSL fiel which is
protected by basic http authentication, since the parameters login and password
are just used for the request but not when reading the wdsl file. I just use
the following workaround by downloading the xml file to a non-protected
location on my server. Please notice that this doesn't support any kind of
caching.
Hope it helps
true
*/
private $cache_dir = '/home/example/htdocs/cache/';
private $cache_url = 'http://www.example.com/cache/';
function SoapAuthClient($wdsl, $options) {
if (isset($options['wdsl_local_copy']) &&
$options['wdsl_local_copy'] == true &&
isset($options['login']) &&
isset($options['password'])) {
$file = md5(uniqid()).'.xml';
if (($fp = fopen($this->cache_dir.$file, "w")) == false) {
throw new Exception('Could not create local WDSL file ('.$this
->cache_dir.$file.')');
}
$ch = curl_init();
$credit = ($options['login'].':'.$options['password']);
curl_setopt($ch, CURLOPT_URL, $wdsl);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $credit);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_FILE, $fp);
if (($xml = curl_exec($ch)) === false) {
//curl_close($ch);
fclose($fp);
unlink($this->cache_dir.$file);
throw new Exception(curl_error($ch));
}
curl_close($ch);
fclose($fp);
$wdsl = $this->cache_url.$file;
}
unset($options['wdsl_local_copy']);
unset($options['wdsl_force_local_copy']);
echo $wdsl;
parent::__construct($wdsl, $options);
unlink($this->cache_dir.$file);
}
}
?>
===============================================================================
You need both certificates, privateKey and publicKey on the same file, on
local_cert path to work.
# cat publicKey.pem privateKey.pem > key.pem


<Theme Name="MyCustomTheme">
</Theme>
| Attribute | Description |
|---|---|
| Name | The name of the theme. Seen in the drop-down list on the view presenter and used when specifying theme on view level. |
| BaseDirectory | Base directory for the assets (sprites, fonts, etc) referenced within the theme file. E.g. if BaseDirectory is set to "Assets/MarkLight/Themes/Flat/" a path within the theme can be specified as "Sprites/CheckBox.psd" which will be translated to "Assets/MarkLight/Themes/Flat/Sprites/CheckBox.psd". |
| UnitSize | Unit size is a user-defined element size unit that can be set and used within the theme by using the postfixes ux, uy and uz. E.g. if UnitSize is set to "40,50,20" you can specify the width of a view as "1ux" and it will be translated to 40 pixels, 1uy = 50 pixels and 1uz = 20 pixels. |
<Theme Name="MyCustomTheme">
<Button BackgroundColor="Blue" />
</Theme>
<Theme Name="MyCustomTheme">
<Button BackgroundColor="Blue" />
<Button Style="RedButton" BackgroundColor="Red" />
<Button Id="MyButton1" BackgroundColor="Green" />
</Theme>
<MainMenu>
<Group Spacing="10">
<Button Text="Button1" Width="180" Height="50" />
<Button Style="RedButton" Text="Button2" Width="180" Height="50" />
<Button Style="RedButton" Text="Button3" Width="180" Height="50" />
<Button Id="MyButton1" Text="Button4" Width="180" Height="50" />
</Group>
</Theme>
<Theme Name="MyCustomTheme">
<Label Style="NormalText" FontSize="22" FontColor="#333" Font="MyDefaultFont.ttf" />
<Label Style="SmallText" BasedOn="NormalText" FontSize="16" />
</Theme>
<Theme Name="MyCustomTheme">
<Group Orientation="Horizontal" Spacing="4" />
<List SelectOnMouseUp="True" />
</Theme>
<MainMenu>
<Group Spacing="10">
<Button Theme="Flat" Text="Button1" />
<Button Theme="Neat" Text="Button2" />
<Button Theme="Toon" Text="Button3" />
</Group>
</Theme>
<MyCustomView>
<Label Style="*" Text="Label Text" />
</MyCustomView>
<AnotherView>
<MyCustomView Style="SomeStyle" />
</AnotherView>
Be notified when new themes, views, tutorials and updates are available


---
layout: post
title: onChange handlers
tags: []
status: publish
type: post
published: true
meta: {}
---
A slight annoyance, to me at least, is the way certain bits and bobs of functionality have changed since the upgrade from Flash MX to Flash MX2004. Being able to set an onChange event handler used to be a dodle really, but it took me a while to figure out how to do this with MX 2004. Despite finding the code that would do this, I somehow completely missed that I had to associate the action script with the combo box I wanted the event to be triggered from. Just to spell this out, click on the combo box and in the action window type:
[as]on (change) {
trace("here");
}[/as]
Simple when you know how. Now the alternative to the above is to create a listener. I placed mine in an init() function and when an onChange event occurred it calls a simple function called whatValue() which takes the comboBox as it's argument and in this example simply traces the selected items value. You can also display and the label (by changing selectedItem.data to selectedItem.label)
[as]function whatValue(obj):Void {
trace(obj.target.selectedItem.data);
}
cb_myComboBox.addEventListener("change", whatValue);[/as]


Authentication methods currently supported by Butler Auth
Authorise against an LDAP or AD server.
Keep username/passwords in a local file or in Git repository.
Login using Microsoft Live credentials.
Keycloak is an enterprise grade, open source identify provider.
Log in all requests as the same user.
Login using Google credentials.
Sign in using Okta.
Sign in using Auth0.
Sign in using a Facebook account.


there are {{ albums.length }} albums to view:
{{searchFor}}
({{album.date}})
{{album.name}}
{{album.title}}


@use crate::post::Post;
@use super::{header_html, footer_html};
@(posts: Vec Here is a link to all of the talks I have done at conferences. Each of these will have links to the slides (PDF) as well as some brief information about them. If you have a compatible reader, be sure to check out my RSS Feed for automatic updates. Also check out the JSONFeed.
Talks
@for post in posts {


ScriBBler
Explore, Imagine, Create
×
Welcome Back!
Username
Password
Not a member?
Sign Up
×
Get Started
Full Name
Username
Password
Confirm Password
Edit
Like
Be the first one to like this!
Comment
All Comments


Smart companies have been using fax broadcast marketing for decades. A fax broadcast is one of the only business communication formats that enables B2B marketers to immediately communicate a marketing message and confirm immediate delivery. Since most businesses use e-mail broadcast marketing it’s important to compare the two in one very important category, open rates.
Fax Broadcast open rates = 90%
This is a fairly simple concept when it comes to fax broadcast marketing. In many cases a device in the office actually audibly rings then prints out an opened marketing message. For fax users with a fax to e-mail service the user gets a notification and then opens the attachment, but since they receive important fax messages from multiple senders the e-mail is passed through spam filters and delivered to the fax recipient unfiltered. This fax broadcast process enables companies to communicate to customers with open rates well above 90%.
E-mail Broadcast open rates = 22%
MailChimp is one of the most widely used e-mail broadcast service providers. MailChimp sends billions of e-mails per month for about 15 million customers worldwide, so needless to say they have a lot of data. According to that data they published a report on open rates. Here are the findings (src).
| Company Size | Open Rate | Click Rate | Soft Rate | Hard Rate | Abuse Rate | Unsub Rate |
| 1 to 10 | 21.53% | 2.84% | 0.56% | 0.43% | 0.02% | 0.30% |
| 11 to 25 | 20.62% | 2.43% | 0.57% | 0.45% | 0.02% | 0.30% |
| 26 to 50 | 21.40% | 2.74% | 0.39% | 0.30% | 0.01% | 0.17% |
| 50+ | 22.83% | 2.75% | 0.55% | 0.50% | 0.02% | 0.20% |
You will see an average open rate of only 21.59%. That means 78% of the potential customersyou are trying to send a marketing message to don’t even open the e-mail! Imagine all that hard work and time spent crafting the e-mail, making sure the links work, making sure the message is mobile platform compatible only to find that 78% of recipients won’t even open your e-mail. That’s frustrating!
Here’s an idea. Try a Fax Broadcast in addition to your e-mail broadcast. You can even use the fax message to tease your e-mail to try to get that open rate up a few percentage points.
See you at the fax machine.
Barry Clark


findOne can.Model.findOne
Retrieve a resource from a server.
can.Model.findOne( params[, success[, error]] )
Retrieve a single instance from the server.
Parameters
-
params
{Object}
Values to filter the request or results with.
-
success
{function(model)}
OptionalA callback to call on successful retrieval. The callback recieves the retrieved resource as a can.Model.
-
error
{function(xhr)}
OptionalA callback to call when an error occurs. The callback receives the XmlHttpRequest object.
Returns
{can.Deferred}
A deferred that resolves to a can.Model.List of retrieved models.
can.Model.findOne: findOneData( params ) -> deferred
Implements findOne
with a function. This function
is passed to makeFindOne to create the external
findOne
method.
findOne: function(params){
return $.get("/task/"+params.id)
}
Parameters
-
findOneData
{findOneData(params)}
A function that accepts parameters specifying an instance to retreive and returns a can.Deferred that resolves to that instance.
can.Model.findOne: "[METHOD] /path/to/resource"
Implements findOne
with a HTTP method and url to retrieve an instance's data.
findOne: "GET /tasks/{id}"
If findOne
is implemented with a string, this gets converted to
a makeFindOne function
which is passed to makeFindOne to create the external
findOne
method.
Parameters
-
METHOD
{HttpMethod}
An HTTP method. Defaults to
"GET"
. -
url
{STRING}
The URL of the service to retrieve JSON data.
can.Model.findOne: {ajaxSettings}
Implements findOne
with a ajax settings object.
findOne: {url: "/tasks/{id}", dataType: "json"}
If findOne
is implemented with an object, it gets converted to
a makeFindOne function
which is passed to makeFindOne to create the external
findOne
method.
Parameters
-
ajaxSettings
{can.AjaxSettings}
A settings object that specifies the options available to pass to can.ajax.
Use
findOne( params, success(instance), error(xhr) ) -> Deferred
is used to retrieve a model instance from the server.Use
findOne
like:Before you can use
findOne
, you must implement it.Implement with a URL
Implement findAll with a url like:
If
findOne
is called like:The server should return data that looks like:
Implement with an Object
Implement
findOne
with an object that specifies the parameters tocan.ajax
(jQuery.ajax) like:Implement with a Function
To implement with a function,
findOne
is passed params to specify the instance retrieved from the server and it should return a deferred that resolves to the model data. Also notice that you now need to build the URL manually. For example:


1991 – START I
The START I treaty, signed on July 31, 1991, by George H.W. Bush and Mikhail Gorbachev, focused on reducing the quantity of nuclear weapons. One major aspect of the treaty limited each side to 6,000 warheads each side. The treaty did not enter into force until 1994 due to the collapse of the Soviet Union. After the collapse, Russia assumed the role as a nuclear state.


With these complete mining rigs you can start mining immediately! The various mining rigs are compiled by our mining experts with optimal settings to achieve the highest return, whether you are mining for Bitcoins (Btc) Ethereum, or any other cryptocurrency. Our complete mining rigs are very solid and the plug and play feature allows you to start mining coins immediately - it's very easy to operate. We install simple software like NiceHash. The rigs will be delivered within 2-4 weeks and have 1 year factory warranty. Our mining rigs are custom made and developed by our own team of specialists - they are always available for support.
s1
s2
s4
s4
s5
s6
s7
s8
s9


Fecha_Creacion: 2017-11-30T11:02:41.722Z
Dimension: Replacement Dimension
Id_Locacion: 24
Nombre: Rick's Battery Microverse
Residentes: ['https://rickandmortyapi.com/api/character/65', 'https://rickandmortyapi.com/api/character/388']
Tipo: Microverse
URL: https://rickandmortyapi.com/api/location/24


|
Bullet Collision Detection & Physics Library
|
sphere-triangle to match the btDiscreteCollisionDetectorInterface More...
#include <SphereTriangleDetector.h>
Public Member Functions | |
| virtual void | getClosestPoints (const ClosestPointInput &input, Result &output, class btIDebugDraw *debugDraw, bool swapResults=false) |
| SphereTriangleDetector (btSphereShape *sphere, btTriangleShape *triangle, btScalar contactBreakingThreshold) | |
| virtual | ~SphereTriangleDetector () |
| bool | collide (const btVector3 &sphereCenter, btVector3 &point, btVector3 &resultNormal, btScalar &depth, btScalar &timeOfImpact, btScalar contactBreakingThreshold) |
| Public Member Functions inherited from btDiscreteCollisionDetectorInterface | |
| virtual | ~btDiscreteCollisionDetectorInterface () |
Private Member Functions | |
| bool | pointInTriangle (const btVector3 vertices[], const btVector3 &normal, btVector3 *p) |
| bool | facecontains (const btVector3 &p, const btVector3 *vertices, btVector3 &normal) |
Private Attributes | |
| btSphereShape * | m_sphere |
| btTriangleShape * | m_triangle |
| btScalar | m_contactBreakingThreshold |
sphere-triangle to match the btDiscreteCollisionDetectorInterface
Definition at line 25 of file SphereTriangleDetector.h.
| SphereTriangleDetector::SphereTriangleDetector | ( | btSphereShape * | sphere, |
| btTriangleShape * | triangle, | ||
| btScalar | contactBreakingThreshold | ||
| ) |
Definition at line 21 of file SphereTriangleDetector.cpp.
|
inlinevirtual |
Definition at line 31 of file SphereTriangleDetector.h.
| bool SphereTriangleDetector::collide | ( | const btVector3 & | sphereCenter, |
| btVector3 & | point, | ||
| btVector3 & | resultNormal, | ||
| btScalar & | depth, | ||
| btScalar & | timeOfImpact, | ||
| btScalar | contactBreakingThreshold | ||
| ) |
Definition at line 96 of file SphereTriangleDetector.cpp.
|
private |
Definition at line 88 of file SphereTriangleDetector.cpp.
|
virtual |
Implements btDiscreteCollisionDetectorInterface.
Definition at line 28 of file SphereTriangleDetector.cpp.
|
private |
Definition at line 189 of file SphereTriangleDetector.cpp.
|
private |
Definition at line 41 of file SphereTriangleDetector.h.
|
private |
Definition at line 39 of file SphereTriangleDetector.h.
|
private |
Definition at line 40 of file SphereTriangleDetector.h.


---
layout: post
title: LAKME face magic - Daily wear souffle
tags:
- Lakme
status: publish
type: post
published: true
meta:
_edit_last: '2'
_aioseop_description: LAKME face magic - Daily wear souffle
_aioseop_keywords: LAKME face magic - Daily wear souffle review, LAKME face magic
review,Daily wear souffle review
_aioseop_title: LAKME face magic - Daily wear souffle review
_graphene_slider_img: global
_graphene_slider_imgurl: ''
_graphene_show_addthis: global
_yoast_wpseo_linkdex: '0'
_thumbnail_id: '323'
---
LAKME face magic - Daily wear souffle(Marble)
This product was my first step towards foundation, I picked up this product to practice on my face, so that I can move forward to much better products
Price: Rs.99
Product boasts of : Lightweight soufflé makeup, perfect for everyday wear.
- Enriched with sunscreens and cucumber extracts.
- 100% water based formula is lightweight so skin does not feel weighed down by extra layers
- Souffle form allows for easy application to give skin a natural, flawless look
Consistency: Creamy and non flowing
Pros:
- Good shades for Indian skin tones,
- Blends easily,
- Dirt cheap,
Cons:
- Not suitable for dry skin, dries off very quickly and leaves behind creases if left alone.
- Does not giving coverage and finishing of a foundation.
- Does not give that glow as expected of foundation, but with Rs. 99 not much can be expected.
- Just touching the face with a dry tissue gets a stain.
- Inclusion of SPF , but number not mentioned
Will I buy again: No, it was just meant to get me hands on experience of foundation usage, but did not deliver anything.
Whats your say for this product?


Before getting started with CANopenNode you should be familiar with the CANopen. CANopen is the internationally standardized CAN-based higher-layer protocol for embedded control system. It is specified by CiA301 (or by EN 50325-4) standard. It can be freely downloaded from https://can-cia.org/groups/specifications/. Some information about CAN and CANopen can be found on https://can-cia.org/can-knowledge/ website. Very efficient way to get familiar with CANopen is by reading a book, for example Embedded Networking with CAN and CANopen.
CANopen itself is not a typical master/slave protocol. It is more like producer/consumer protocol. It is also possible to operate CANopen network without a master. For example, pre-configured process data objects (PDO) are transmitted from producers. Each PDO may be consumed by multiple nodes. Other useful CANopen functionalities of each CANopen device are also: Heartbeat producer and consumer, Emergency producer, Sync producer or consumer, Time producer or consumer, SDO server (Service data objects - serve variables from Object dictionary), NMT slave (network management - start or stop parts of communication), LSS slave (configuration of Node-Id and Bitrate).
CANopen network usually has one device with master functionalities for network configuration. It may have additional CANopen functionalities, such as: NMT master, LSS master, SDO client, Emergency consumer. Master functionalities in CANopenNode are implemented with Ascii command line interface according to standard CiA309-3.
CANopenNode should run on any Linux machine. Examples below was tested on Debian based machines, including Ubuntu and Raspberry PI. It is possible to run tests described below without real CAN interface, because Linux kernel already contains virtual CAN interface. All necessary Linux specific files are included in socketCAN directory of CANopenNode and Makefile is included in base directory.
Windows or Mac users, who don't have Linux installed, can use VirtualBox and install Ubuntu or similar.
We will use Linux command line interface (Terminal) for all examples below. Open the terminal and cd to your working directory. First install supporting packages: can-utils, which is very useful tool for working with CAN interface and git, which is recommended for working with repositories. Then clone CANopenNode from Github and build the executable program.
sudo apt-get install git sudo apt-get install can-utils git clone https://github.com/CANopenNode/CANopenNode.git cd CANopenNode # For update just use 'git pull' here make
Now prepare CAN virtual device and run candump, which will show all CAN traffic. Use a second terminal:
sudo modprobe vcan sudo ip link add dev vcan0 type vcan sudo ip link set up vcan0 candump vcan0
Go to the first terminal, where we have recently build executable, named canopend.  It is running in background until you terminate the process (with CTRL+C for example) or it receives a reset message from CAN network. By default process also shows some info messages on terminal, for example changes of NMT state or emergency messages, own and remote.
On the second terminal you can see some CAN traffic. After canopend startup, first messages are:
vcan0 704 [1] 00 # Boot-up message. vcan0 084 [8] 00 50 01 2F F3 FF FF FF # Emergency message.
Boot-up message of node 4 have CAN-ID equal to 0x704. CAN-ID is 11-bit standard CAN identifier.
Also, both, first and second terminal shows, that there is an Emergency message after the boot-up. Also Heartbeat messages shows NMT pre-operational state.
The easiest way to find the reason of the emergency message is to check the byte 4 (errorBit). It has value of 0x2F. Go to CANopenNode source code and open the file "301/CO_Emergency.h", section "Error status bits". 0x2F means "CO_EM_NON_VOLATILE_MEMORY", which is generic, critical error with access to non volatile device memory.
This byte is CANopenNode specific. You can observe also first two bytes, which shows standard error code (0x5000 - Device Hardware) or third byte, which shows error register. If error register is different than zero, then node may be prohibited to enter operational and PDOs can not be exchanged with it.
You can follow the reason of the problem inside the source code. However, there are missing non-default storage files. Go to the first terminal, terminate the application with CTRL+C, add files and run canopend again.
echo "-" > od4_storage echo "-" > od4_storage_auto ./canopend vcan0 -i 4 -s od4_storage -a od4_storage_auto
Second terminal now shows new boot-up message without emergency.
vcan0 704 [1] 00
Open the third terminal and cd to the same directory as is in the first terminal. First generate default storage files. Then start second instance of canopend with NodeID = 1. Use default od_storage files and enable command interface on standard IO (terminal).
echo "-" > od_storage echo "-" > od_storage_auto ./canopend vcan0 -i1 -c "stdio"
Now you should see in second terminal (candump) boot-up message of new CANopen device.
Second instance of canopend was started with command interface enabled. This is CANopen gateway interface with ascii mapping, as specified in standard CiA309-3. This enables usage of CANopen master functionalities via basic terminal. Go to third terminal, type "help" and press enter to see its functionalities.
help help datatype
For example read Heartbeat producer parameter on CANopen device with ID=4. Parameter is located at index 0x1017, subindex 0, it is 16-bit unsigned integer.
[1] 4 read 0x1017 0 u16
You should see the response, which says that Heartbeats are disabled:
[1] 0
In CAN dump you can see some SDO communication. SDO communication can be quite complicated, if observing on candump, especially if larger data is split between multiple segments. However, there is no need to know the details, everything should work correctly in the background. Details about SDO communication can be found in CiA301 standard and partly also in 301/CO_SDOserver.h file, description of CO_SDO_state_t enumerator.
[2] 4 write 0x1017 0 u16 5000 [2] OK #response
In candump you will notice, that heartbeats from node 4 are coming in 5 second interval now. Heartbeat message is similar to boot-up message. 0x7F in heartbeat message means, that node is in NMT pre-operational state. 0x05 means operational and 0x04 means stopped.
You can do the same also for node 1, but you won't see SDO messages on candump, because data are written into itself directly. In "stdio" you can omit sequence number, to make typing easier.
1 w 0x1017 0 u16 2500 [0] OK
Now store Object dictionary on node-ID 4, so it will preserve variables on next start of the program.
4 w 0x1010 1 u32 0x65766173 [0] OK
More details about Object dictionary variables can be found in CiA301 standard or in example/DS301_profile.md file.
If node is operational (started), it can exchange all objects, including PDO, SDO, etc. In NMT pre-operational, PDOs are disabled, SDOs works. In stopped only NMT messages are accepted. Try following commands and observe candump.
set node 4 [0] OK start [0] OK preop [0] OK stop [0] OK r 0x1017 0 i16 [0] ERROR: 0x05040000 #SDO protocol timed out. reset communication [0] OK 0 start [0] OK reset node [0] OK 1 reset communication [0] OK 1 reset node [0] OK
We used simple stdio for command interface. In Linux also sockets can be used, either local or tcp. See ./canopend --help
for options. Simple Linux tool for establishing socket connection is netcat or nc. For example nc -U /tmp/CO_command_socket
for local socket or nc <host> 60000
for tcp socket. There are also some tools from CANopenSocket project.
Please be careful when exposing your CANopen network to the outside world, it is your responsibility, if something dangerous happen.
Assigning Node-ID or CAN bitrate, which support LSS configuration, is described in LSSusage.md.
Further CANopenNode related tools and examples are available in CANopenSocket. Especially interesting is basicDevice
Custom CANopen device can be created based on own Object Dictionary, see README.md. There are also many very useful and high quality specifications for different device profiles, some of them are public and free to download, for example CiA401.
For own CANopen device with own microcontroller, see deviceSupport.md. There is a bare-metal demo for PIC microcontrollers, most complete example is for PIC32.
Another interesting tool is CANopen for Python.
Examples here worked in virtual CAN interface, for simplicity. Virtual CAN runs inside Linux kernel only, it does not have much practical usability. If one has real CAN network configuration, then above examples are suitable also for this network, if Linux machine is connected to it and CAN interface is properly configured. When connecting your devices to real CAN network, make sure, you have at least two devices communicating, connected with ground and pair of wires, terminated with two 120ohm resistors, correct baudrate, etc.
Accessing real CANopen devices is the same as described above for virtual CAN interface. Some tested USB to CAN interfaces, which are native in Linux kernel are:
sudo slcand -f -o -c -s8 /dev/ttyACM0 can0; sudo ip link set up can0
sudo ip link set up can0 type can bitrate 250000
Examples here run in Linux, for simplicity. However, real usability of CANopen network is, when simple, microcontroller based devices are connected together with or without more advanced commander device. CANopenNode is basically written for simple microcontrollers and also has more advanced commander features, like above used CANopen gateway with ascii command interface.
Now you can enter the big world of CANopen devices.
Here we played with virtual CAN interface and result shown as pixels on screen. If you connect a real CAN interface to your computer, things may become dangerous. Keep control and safety on your machines!


Allen Onyema: EFCC special panel to investigate Air Peace boss - Unconfirmed report
- According to a report by The Nation, the EFCC has said it will constitute a special panel on Allen Onyema's fraud allegation
- The source close to the newspaper said it is looking at the Nigerian component of the case and will investigate the Nigerian banks involved
- It was also said that the associated financial institutions were also involved in Diezani Alison-Madueke's fraud allegation
The Economic and Financial Crimes Commission (EFCC) has come into the $44.9 million alleged wire fraud and money laundering charge against the Air Peace Chief Executive, Allen Ifechukwu Athan Onyema, moments after the case came up in the US.
According to the Nation, EFCC on Saturday, November 23, constituted a special panel to investigation the allegation levelled against him.
The same newspaper also reported that the commission is also looking into the Nigerian banks that reportedly facilitated the money transfer to the states.
“In fact, the Acting EFCC Chairman, Mr. Ibrahim Magu directed the team members to work round the clock at the weekend because it is a case we must work on with speed.
Boko Haram: Fake news distracting Nigerian Military from fighting insurgency - Group
“We are also interested in the roles played by two banks in the country including one that has been on our radar for a while for money laundering. This same bank was implicated in the $115 million poll bribery scam in 2015 for which former Minister of Petroleum Resources Diezani Alison-Madueke is wanted for trial,” the source said.
EFCC, as relayed by the sources close to the media platform, would also probe the money inflows into various accounts of non-governmental organisations that are backed by the Air Peace boss.
“Upon the receipt of the charges, the EFCC chairman raised a team to probe the allegations against Onyema Eghagha, who were prominently mentioned in the indictment charges by the United States Government.
“The EFCC team is working on what I may term the ‘Nigerian components’ of the indictment including suspicious huge transfer of funds abroad, alleged abuse of letters of credit and money laundering,” the source said.
FG denies taking away EFCC and ICPC's asset recovery powers
PAY ATTENTION: Download our mobile app to enjoy the latest news update
Meanwhile, Legit.ng earlier reported that four Nigerian groups led by the president of the Arewa Youth Consultative Forum (AYCF), Alhaji Yerima Shettima, said the source of the plight currently suffered by Onyeama can be traced to his business rivals.
The Nigerian Ethnic Nationality Youth Leaders Forum (NENYLF) warned that nothing must happen to Onyeama, which it called one of Nigeria's finest businessman, whose activities have benefited the country in no small measure.
NAIJ.com (naija.ng) - Legit.ng. We have upgraded to serve you better
Deji Adeyanju asks EFCC to investigate Tinubu | Legit TV


Preparation time
less than 30 mins
Cooking time
1 to 2 hours
Serves
Serves 4
Cook a perfect roast chicken for Sunday lunch, served with the ultimate gravy and homemade bread sauce.
For the bread sauce, heat together the first eight ingredients until just bubbling for two minutes. Put on the lid, turn off the heat and set aside to infuse for half an hour. Strain the milk through a fine sieve into a clean pan, pressing down with a spoon to extract all the liquid.
Add the cream to the milk mixture and gently heat. Whisk in the breadcrumbs. Leave for a few moments to allow the crumbs to swell. Season to taste with more salt and then pour the sauce into a bowl. Cover with a plate and keep warm over a pan of hot, but not boiling water, until needed.
Preheat the oven to 200C/400F/Gas 6.
Rub half of the oil over the chicken and sprinkle with plenty of salt, set aside. Heat the remaining tablespoon of oil in a roomy casserole dish and lightly brown the chopped chicken wings and giblets over a medium heat. Place the prepared chicken on top, sitting it between the wings and giblets. Add pepper and the vermouth. Roast for ten minutes.
Decrease the oven temperature to 180/350F/Gas 4 and cook the chicken for a further 45 minutes to an hour and 20 minutes, depending on the weight of the chicken. Check the chicken is cooked by inserting a skewer into the thickest part of the meat – if the juices run clear, the bird is cooked.
Meanwhile remove the skins from the sausages and wrap in the bacon. Place into a small roasting dish and cook alongside the chicken for about 20-25 minutes, or until they are sizzling and nicely browned. Set aside and keep warm.
Remove the chicken from the oven. Transfer it to a warm plate first letting the juices drip back into the roasting pan it was cooked in. Cover the chicken with foil and leave it somewhere warm to rest.
Add the chicken stock to the roasting pan and simmer over a medium heat for about 10 minutes, stirring in all the carmelised browned bits on the roasting tin. Strain and return the gravy to the roasting tin. Place on a medium heat on the stove.
Add the cooked, peeled potatoes to the gravy and turn them to coat in the juices. Transfer to the oven for at least 20 minutes or until golden-brown.
Carve the chicken onto a warmed serving dish, surround with the potatoes and sausage and bacon rolls. Serve the gravy and bread sauce at the table, in sauceboats or small jugs.


Create an empty workspace in Play.
Enter on the first line the following:
# load clock-exercise
Instructions will appear on the right side.