1 – Introduction
The main concept of introducing IoT devices is to automatically monitor and control the performance of equipment
in manufacturing industries and plants by displaying the data anywhere at any time whenever an internet connection
is available. This provides critical information for the engineer to determine whether they should schedule maintenance
for the affected devices or not. Failure to do so would results in equipment malfunction and longer downtime and
production loss. Different methods can be applied to determine the overall performance of the system, this include
performing vibration test for electrical motors, determining the temperature of the operated equipment, and in special
cases applying image processing techniques to observe the time- lapsed version of the system response over long
period of operation. These abnormalities can be difficult to detect without using specialized tools and sensors.
Therefore, the introduction of internet cloud-based embedded electronic devices are used to automatically maintain
and control proper operation of the system. The action of detecting faults or threats in a device before they occur
and implementing repairs on it to reduce failure is called “predictive maintenance.” Predictive maintenance is a set
of activities that detect changes in the physical condition of equipment (signs of failure) to carry out the
appropriate maintenance work for maximizing the service life of equipment without increasing the risk of failure [1].
Much emphasis has been given to the research and development of high-speed machine systems possessing high levels of
programmability and reconfigurability. Motion cycle demands in such machines are high; motors and drives are required
to perform under demanding conditions, hence the need for a predictive maintenance system. Modern machines typically
use some form of direct current (DC) motor and the process described is based upon such motors. The DC motor is one
of the first machines devised to convert electrical power into mechanical power. Recent improvements in DC machines,
and specifically the emergence of the brushless motor have led to its wide usage due to its high torque and small
size when compared to induction motors [2].
This paper discusses how predictive maintenance strategies are used to monitor the health of a DC motor under
various conditions by applying vibration tests using the data obtained from an accelerometer module. These tests
are used to analyze and interpret the data in the frequency domain with the help of Fourier equations. Any shift
in the frequencies during normal conditions can be analyzed to detect any failures in the motor. This form of
digital signal processing technique is reliable and cost-effective solution to be implement for industrial
applications. However, both the given load and speed of the motor should be considered when performing this type
of analysis, since the dominant frequencies can shift based on different factors. This implies that different data
acquisition should be added and analyzed to conclude whether the observed results are due to system errors or
otherwise.
The paper is divided into four main sections. Section 2 presents in detail the theory and procedure for the
purposed maintenance system of DC motor. The results obtained for the experimental predictive maintenance is
presented in Section 3. Finally, the conclusion is summarized in section 4.
2 – Theory and Procedure
One of the most cost-effective maintenance techniques is using predictive maintenance which utilizes actual
operating condition of equipment, material, and systems to optimize manufacturing operation. Standard predictive
maintenance management program utilizes a combination of most cost- effective tools (e.g., vibration monitoring,
process parameter monitoring, thermography, tribology, visual inspection) to obtain the actual operating conditions
of critical plant systems. These actual manufacturing data are used to schedule all maintenance activities on an
as-needed basis. Utilizing predictive maintenance in maintenance management program improves the ability to optimize
the availability of process machinery and greatly reduces the cost of maintenance and improves production quality [3].
Predictive maintenance not only predicts a future failure, but also pinpoints problems in our complex machinery and
helps identify what parts need to be fixed to minimize cost and maximize uptime operation. A simple representation
graph of predictive maintenance strategy can be seen in Fig. 1 that identifies when it is the optimum time an engineer
should schedule a maintenance.
Fig. 1 – Machine health vs time required in determining the optimum period to schedule predictive maintenance
2.1 – System Architecture
The architecture for the overall system is represented in Fig. 14 from Appendix A which will define how the system
will function. This model assumes that the system is capable to be implemented in real-time operations. The model
can be classified into four main stages these include: signal acquisition and preprocessing, data analysis and
processing, system monitoring and control, and web-based data logging. These stages will be summarized in detail
in the next upcoming sections of this report. The system will operate using a low-cost Wi-Fi microchip, with a
full TCP/IP stack and microcontroller capability. This allows the user to utilize the microcontroller to handle
all the system operation and provide Wi-Fi connectivity to be integrated with IoT applications.
2.2 – Signal Acquisition and Pre-processing
The first step to perform predictive maintenance is to acquire the data provided by each individual sensor. Analog
sensors can be directed to any peripherals of the microcontroller that support ADC capability. These peripherals
should be able to provide high sampling resolution, good SQNR, unity gain, and good dynamic range. If the ADC
circuit lacks some of these specifications, a simple hardware solution can be used to minimize noise interference
using electronic low-pass (anti-aliasing) filter prior to the ADC in case of low SQNR or limit the input voltage
range using high efficiency buck converter circuit. In some cases, a microcontroller might not have enough ADC pins
for multiple analog data. This can be overcome by using a high-speed CMOS logic analog MUX/DEMUX circuit to switch
between multiple analog sensors using a single ADC pin. These important points are necessary to determine the analog
speed and temperature of the DC motor.
Speed measurement of electronic motors can be done in several ways. One method to read the speed of the motor is to
measure the electrical signals of the light transferred between two isolated circuits using a light generating
photodiode and light sensing phototransistor connected between the radial load of the motor’s shaft. This form of
sensor measurement can be found in optocoupler circuits, where the voltage generated from the optocoupler can be
interpreted as an AC square wave signal. This signal can be fed directly to the microcontroller to measure the total
RPM of the motor. Measuring the signal directly will require additional signal processing and conditioning techniques
and higher sampling rate which might affect the accuracy of the readings. Since predictive maintenance strategy relies
heavily on the speed parameter of the motor, a better and more accurate solution is to use a frequency-to-voltage
converter circuit to convert the frequency of the square wave signal to analog DC voltage for ADC measurements
To determine the temperature of the motor during operation, a contact type, linearly proportional analog centigrade
temperature sensor can be attached directly to the motor. For accurate readings, these devices should have low output
impedance to simplify interfacing to ADC circuit. The performance characteristics of the output signal voltage vs
temperature slop can be scaled and offset to meet the desired temperature range. This type of modification can be
done using a simple negative-feedback operational amplifier circuit as shown in Fig. 2.
Fig. 2 – Scaling and offsetting using negative feedback operational amplifier circuit configuration
Where 𝑅4 is the feedback resistor, 𝑅3 is the inverting input resistor and both 𝑅1 and 𝑅2 are potential divider
network used to apply the required offset voltage. The output voltage of the operational amplifier will be applied
to the microcontroller’s analog input peripheral pin. The transfer function that describes the relationship between
the non-inverting input and output voltage of the amplifier is given as follows:
To achieve the desired gain and offset for a linearly proportional analog sensor, the straight-line equation
is used. For a 10-bit ADC circuit, a simple TMP36 temperature sensor can be configured to operate between -10 °C
and 50 °C (0.4- 1V) instead of its entire range of -25 °C and 150 °C (0.2-1.8V) using the circuit introduced in
Fig. 2 for a motor predictive maintenance prototype. This is done to include the entire range of ADC for higher
accuracy of sampled readings. Therefore, the aim is to scale and offset the range of the sensor so that the
microcontroller receives 0V when the sensor outputs 0.4V and 5V when it outputs 1V as it can be seen from the
straight-line equation in Fig 3.
Fig. 3 – Desired voltage vs TMP36 output voltage
The gradient of the plot in the above figure can be worked out to be approximately 8.34, then determining the
intercept by setting y = 0 (x = 0.4) so that the straight-line equation can be written as follows:
Therefore, an overall gain of 8.34 with an offset of 0.4V (which will also be amplified by 8.34) is required. Using the
transfer function of the non-inverting amplifier, a resistive ratio of 7.34 is obtained, thus the value of R3 from Fig. 2
must be at least 10 times greater than the anticipated value of R2. Assuming a value of R3 = 10kΩ, R4 must be equal to
73.4kΩ (nearest E12 series combination is 68kΩ and 5.6kΩ). The voltage across R2 must be 0.4V (the required offset).
With a Vs = 5 volts and selecting R2 = 1kΩ, R1 is found to equal 11.5kΩ (nearest E12 series combination is 6.8kΩ and
4.7kΩ), however R1 may need tweaking to achieve ideal scaling.
Another form of temperature sensor that can be utilized is the non-contact type sensor such as IR sensors. However,
these sensors are not considered an ideal use for industrial applications since they rely on the space optical
transmission for thermal measurement; therefore, the environment needs to be clean, without dust, high humidity,
or similar which might not be the case for industry-base environment.
When dealing with digital sensors and DSP chips, they can provide processed digital data using different
communication protocols such as UART, I2C, and SPI. The microcontroller architecture should be flexible to
handle these form of communication protocols in case they are needed to be called. These digital sensors can
be configured to provide accurate readings by passing the data to a signal filtering and conditioning circuits
available on the module IC before data transmission to the microcontroller. However, for high speed/precision
applications, further filtering techniques must be implemented to compensate for any data drift and overshoot
errors, this can be done multiple ways based on the computational power of the microcontroller such as applying
sensor fusion techniques or implementing a more complex algorithm such as Kalman filter. It is more sensible
though, to allow an internet cloud server to handle the heavy complicated processes that otherwise cannot be
achieved using a basic microcontroller system.
Vibration test on the motor can be done using a digital inertial measurement unit (IMU) that measure and provide an
object's force, angular rate, and usually the orientation of the object, using a combination of accelerometers,
gyroscopes, and magnetometers. This unit can be also found in systems that requires real-time and long-term position
stability such as quadcopters by using the principle of control theories. However, for an electrical motor vibration
test, it is sufficient to analyze the accelerometer data only without the need of a sophisticated algorithms and
mathematical equations unless the data is exposed to high amounts of noise and drift.
2.3 – Data Analysis and Processing
Generally, the IMU unit will be configured to output the three-axis accelerometer data to calculate the
average RMS acceleration. Since the RMS value of a signal represents the average (mean) power, the total
energy of a signal is preserved under the Fourier transform based on Parseval's theorem; therefore, the sum
(or integral) of the square of a function is equal to the sum (or integral) of the square of its transform.
The standard method to calculate the RMS value of a discrete data signal x[n] is stated as:
where Xrms is the RMS value of x[n] and N is the sampling period of the signal x[n]. The RMS value is generally
the most useful value for vibration test since it directly relates to the energy content of the vibration profile
and thus the destructive capability of the vibration. RMS also considers the time history of the wave form. Fourier
transformation of a signal can be implemented to observe the dominant frequencies in the vibration test and determine
the acceptable shift in frequencies based on the speed and temperature of the motor until a maintenance is required
to be performed. To compute the Fourier transform for a discrete-time system, the discrete Fourier transform (DFT)
is stated as:
where, X[k] is the discrete Fourier transform of the periodic and discrete signal x[n] and N is the sampling period.
The fast Fourier transform (FFT) is an efficient algorithm used to compute the discrete Fourier transform of the
signal x[n]. Hence as the name implies, it is a computational method of calculating the discrete Fourier transform
significantly faster than directly computing it. The FFT reduces the number of computations needed for a problem of
size N from N^2 to N×logN. This algorithm can be represented by separating the DFT into even and odd indexed
sub-sequences.
Both sub-sequences can be summed together giving an advantage of computing the even and odd indexed sub-sequences
concurrently.
The algorithm can be further improved by applying the divide-and-conquer approach, halving the computational cost
each time. In other words, it is possible to continue to split the problem size until a group of two are left then
directly compute the DFT for each of those pairs [4]. This form of signal analysis can be done either directly from
the microcontroller or indirectly through cloud computing. As mentioned previously, the processed FFT data is dependent
on the speed and temperature of the motor. This is because any shift in the frequencies relies on the given power of the
motor, and thus on the measured speed and overall temperature. For example, if the power applied to the motor remains
constant and the measured speed and temperature match the expected values, then the Fourier analysis results should
correlate to these conditions. However, when the motor does not maintain proper operation at a given power, then either
the speed, temperature, or both values will show unexpected results.
In terms of long period of measurements and prediction strategy, one cannot rely on a single data alone.
Combining both speed and temperature data with vibration test provides the engineer a better insight to determine
the expected time of equipment failure and when it is necessary to perform maintenance procedure. Other useful
data that can be included for the test is ambient temperature and humidity measurement which can be used to determine
the cause of failure for a better understanding of the problem.
2.4 – System Monitoring and Control
Once all the data has been gathered and processed, the next step is to decide how to implement it to maintain
and control the system. Data obtained from vibration test can be used for both FFT evaluation in future prediction
and real-time monitoring for the state of electrical machines. This can be done by using a standard vibration
severity chart based on ISO 10816 as a guidance for evaluating vibration severity in machines operating in the 10
to 200Hz (600 to 12,000 RPM) frequency range as shown in Table 1. Examples of these types of machines are small,
direct-coupled, electric motors and pumps, production motors, medium motors, generators, steam and gas turbines,
turbo-compressors, turbo-pumps, and fans.
An emergency system should be used in case the machine reaches an unacceptable vibration severity by either
automatically or manually controlling the system to maintain proper safety and operation. This can be monitored
and controlled traditionally from a local centralized system or internet cloud-based centralized system where any
important information is accessible to directly notify maintenance experts in charge real time, anytime, when a
schedule is generated without them having to physical move to the plant. This helps decrease maintenance cost and
increase efficiency and production time.
For a prototype system model, the microcontroller can be programmed using different software compiler languages such
as C, C++, and Python scripts to perform data acquisition and digitization. Chip level programming uses field
programmable gate array (FPGA) hardware circuits to develop IC devices optimized for a specific load. This is
essential when developing high speed hardware communication chips for IoT applications. Fortunately, many low-cost
Wi-Fi microchips, with a full microcontroller capability are available to use for testing and prototype purposes.
Therefore, these microchips contain the necessary circuits for both data acquisition and wireless communication.
While it is (barely) possible to do FFT on a microcontroller-based system, it is more ideal to do signal processing
of this sort by passing the data to a local or cloud computing hub for monitoring and post-processing analysis.
This ensures that the microcontroller focuses on data gathering and handling wireless communication protocol. In
case the system detects an unacceptable operation from the electrical machine, it is suitable to implement an
emergency detection and prevention system to quickly counter this problem. For our prototype system this can be
done manually or automatically. For manual control, an external interrupt pin can be used as an indication to cut
the power fed to the electrical machine through a relay switch. Automatic control applies a conditional limit to
the system based on the vibration severity per ISO 10816 standard. Once the vibration severity has reached a critical
or unacceptable level, the microcontroller will send a confirmation signal to disable the power input on the motor.
Table 1 – Vibration severity standard based on ISO 10816
2.5 – Web-based Data Logging
This section discusses how data monitoring and logging through a web server host is achieved to provide an insight
on how IoT technology is implemented. One additional and important component in developing a functional IoT was the
Internet Protocol version 6 (IPV6) for its remarkably intelligent decision to increase address space. The address
space expansion means that assigning an IPV6 address to every device on the surface of the earth is still sufficient,
still have enough addresses left to do another 100+ earths. In other words, running out of internet addresses is not
going to happen anytime soon. When thinking of the IoT, consider the idea, “any device capable, can be interconnected
with other devices.” The IoT is ripe for new and creative ideas to add to the tasks already in use [5].
This opens doors for big data engineers to gather numerous information from each and every interconnected IoT devices
to be used for optimizing the system and conclude future predictions for a better and more cost-effective solutions to
be used. However, with the increase application and IoT devices, several challenges with implementing security within
an IoT network arises. First, IoT systems are heterogeneous. There are different types of devices, methods of
communication, types of data being transferred and shared, various resource levels of devices, and system
configurations. Each distinct element adds to the challenge of effectively secure IoT.
A second challenge inheres in the number of devices that are connected together. Billions of devices connected
together provides a new research area of focus when considering nominal function, resiliency, and security as well.
To address these challenges in securing IoT devices, we propose using machine learning within an IoT gateway to help
secure the system. Machine learning is an area of A.I in which computer programs are enabled to learn from experience,
examples, and analogies. As learning occurs, the capabilities within the program become more intelligent and the
program becomes capable of making informed decisions [6]. When implementing IoT in smart industry domains, these
security measurements should be used to insure proper protection against cyber-attacks such as distributed denial
of service (DDoS), cross-site scripting, and watering hole attacks to help companies in regulated industries by
managing and maintaining enhanced infrastructures for compliance and to protect personal and financial data. However,
the topic of machine learnings and A.I for big data analysis and security is beyond the scope of this paper and will
not be covered, yet it is worth mentioning these points out since they play an important role when dealing with IoT
technologies.
For a prototype model, the given Wi-Fi microchip, with a microcontroller capability can be used as a stand-alone
server for web hosting and data logging. Therefore, the module will behave as an access point beacon by allowing
multiple devices (clients) to connect to it through its own IP, gateway, and subnet. A separate Hyper Text Markup
Language (HTML) file is stored in the chip’s flash memory to display the web page contents and handle both the root
and form requests. The module will operate using a standard 2.5 GHz Wi-Fi frequency band, other high-end microchips
can operate on both 2.5 and 5 GHz bands for highspeed bandwidth transmission. Data logging is generally done through
database server that stores organized information in the form of tables using different database services. To simulate
this form of data logging, the microchips and/or microcontrollers have a dedicated organized arrays of floating-gate
transistors circuit for memory storage known as electrically erasable programmable read-only memory (EEPROM).
This form of memory stores data in the form of a single byte (8 bits). Table 2 shows the total number of bytes
required to store different data types based on a 32-bit and 64-bit data model. It should be noted that an EEPROM
has a limited life for erasing and reprogramming, now reaching a million operations in modern EEPROMs. The life
cycle for EEPROM is an important consideration when deciding which type of data must be stored on it.
| Data Type |
32-bit Size |
64-bit Size |
| char |
1 byte |
1 byte |
| short |
2 bytes |
2 bytes |
| int |
4 bytes |
4 bytes |
| long |
4 bytes |
8 bytes |
| float |
4 bytes |
4 bytes |
| double |
8 bytes |
8 bytes |
| double |
16 bytes |
16 bytes |
Table 2 – Integer and floating-point data types based on a 32-bit and 64-bit size models
3 – Experimental Results and Analysis
3.1 - Hardware Design Implementation
A miniaturized hardware model for the purposed prototype predictive maintenance motor project to be implemented
in smart industry domain is designed on a two layered printed circuit board. The final circuit board with all the
components is shown in Fig 10 from Appendix A. The circuit operates on a 12V DC input voltage and a power conditioning
circuit through a linear voltage regulator to lower the input voltage to 10V and 5V to match the recommended operation
of each individual module. The 12V DC motor is connected to an h-bridge circuit to control both the speed and direction
from 0V to 10V using a pulse-width modulation (PWM) signal. Ambient and motor analog temperature readings are measured
using the scaling and offsetting process via a non-inverting amplifier configuration introduced in section II part B.
Another form of ambient temperature and humidity measurement is applied using a digital sensor for referencing and
correction. A frequency to voltage converter IC chip that operates directly from the 12V supply is used to convert the
pulses measured by the optocoupler circuit to an analog voltage format. To overcome the issue of having a single or
limited number of ADC pins, a MUX/DEMUX IC DIL chip is used to switch between each individual sensor readings. Data
obtained from the accelerometer is achieved through I2C communication protocol between the module and the microcontroller.
Additionally, a 128 by 32 pixels OLED screen is connected on the same I2C bus to display measured data and various icons
to indicate different operations for more added functionality. Finally, an external interrupt button is used to simulate
an emergency pause on the motor for applying a manual safety switch in case a failure occurs on the system.
3.2 - FFT Post-Processing
The average and RMS data obtained from the vibration test is sent to a centralized cloud/local system to perform
post-processing for fast Fourier analysis. The microcontroller is programmed to sample the data at Ts = 0.01s at N
number of samples, where N must be a power of 2 (2, 4, 8, 16, 32, 64, 128, etc). For this vibration test, the total
number of samples N is chosen to be 256. Therefore, the test can be done every 2.55 seconds starting from Ts=0s. The
following results obtained in Fig. 4 and 5 provides the computed FFT when the DC motor runs at 100% PWM signal (10V)
and 50% PWM signal (5V), respectively. An impulse signal is generated at 50Hz frequency when the motor runs at 10V,
which corresponds to a measured speed of 9250 RPM; whereas, at 5V, an impulse signal is generated at 27.75Hz frequency
that corresponds to a measured speed of 4624 RPM.
Fig. 4 – FFT vibration analysis of DC motor at 100% PWM
Fig. 5 – FFT vibration analysis of DC motor at 50% PWM
During motor fault, analyzing the FFT output obtained from the vibration test will yield results that does not
correlates to the expected output response. For example, consider the graph given in Fig. 3 when the motor operates
at 100% PWM signal. Whenever a failure occurs in the motor, expect a shift in the frequency of the impulse signal
response observed from the FFT data as shown in Fig. 6. Other results that suggest issues in the system including
undesired impulses that indicates instability of the motor. These analysis with the help of various data obtained
about the behavior of the system can help us understand the scope of the problem and act accordingly by using
predictive maintenance assessment to prevent any future problems.
Fig. 6 – FFT vibration analysis of DC motor at 100% PWM during healthy and faulty operations
3.3 - IoT Web-Server
The microcontroller is established to perform the required data acquisitions and can be either used as a web host
to transmit the given data to a cloud or locally installed server. For prototype purposes, the device behaves as a
standalone web server by acting as a Wi-Fi access point to allow other devices within the vicinity to connect to it
and collect and monitor data and control the speed and direction of the motor. Once a device is connected, a wireless
icon will appear on the OLED screen to indicate that the microcontroller has successfully establish a connection and
is ready to display the content of the HTML web page. The results of this can be seen in Fig. 7 and 8.
Fig. 7 – HTML web server for controlling the direction and speed of the motor
Fig. 8 – HTML web server for monitoring data obtained from each individual sensor integrated with the system
During an emergency pause due to motor failure, an icon will be displayed on the OLED screen to indicate that
motor is no longer in operation, and the following message is displayed on the web page for the user:
Fig. 9 – HTML web server message during emergency pause
4 – Conclusion
The technology development for IoT is still in its early stages; however, with the help of IPv6, many IoT devices
can be interconnected together through the internet to perform complex operations and gather huge amount of essential
data. This opens doors for big data engineers to analyze and benefit from this technology to perform optimization and
future prediction through the help of machine learning and A.I. Industries are moving towards a smarter and more
interconnected systems with the help of internet and cloud computing. This results in better management by integrating
predictive maintenance strategies, reducing the cost and improves the system’s overall resiliency. One method
introduced in this paper is by performing vibration test using FFT analysis, which when combined with other vibration
tests can be proven to be a powerful method to perform the necessary procedure for predictive analysis.
5 – Appendix
5.1 - Some Images
Fig. 10 – Overall system’s architecture
Fig. 11 – Prototype circuit board
Fig. 12 – Prototype board during operation
Fig. 13 – PCB layout design
Fig. 14 – Circuit schematic diagram
6 – References
[1] - Kahiomba Sonia Kiangala1 and Zenghui Wang, “Initiating predictive maintenance for a conveyor motor in a bottling
plant using industry 4.0 concepts”, The International Journal of Advanced Manufacturing Technology, May 24, 2018, para.
3. [Accessed: Dec. 25, 2020].
[2] - Dheeraj Bansal, David J. Evans, Barrie Jones, “A real-time predictive maintenance system for machine systems”,
International Journal of Machine Tools and Manufacture, 2004, vol. 4. [Accessed: Dec. 25, 2020].
[3] - R. K. Mobley (2011) Maintenance fundamentals. 2nd ed. Butterworth-Heinemann ISBN<PHONE_NUMBER>982.
[4] - Cory Maklin, “Fast Fourier Transform”, Dec 29, 2019, [Online]. Available:
https://towardsdatascience.com/fast-fourier-transform-937926e591cb, [Accessed Dec. 27, 2020]
[5] - Keith D. Foote, “A Brief History of the Internet of Things”, Aug 16, 2016, [Online]. Available:
https://www.dataversity.net/brief-history-internet-things/, [Accessed Dec. 29, 2020]
[6] - J. Cañedo and A. Skjellum, "Using machine learning to secure IoT systems," 2016 14th Annual Conference on
Privacy, Security and Trust (PST), Auckland, 2016, pp. 219-222, doi: 10.1109/PST.2016.7906930. [Accessed:
Dec. 30, 2020].


|
cpuaff
Multi-platform C++ interface to CPU affinity management
|
#include <cpu_spec.hpp>
Public Member Functions | |
| cpu_spec () | |
| cpu_spec (const socket_type &s, const core_type &c, const processing_unit_type &h) | |
| const socket_type & | socket () const |
| const core_type & | core () const |
| const processing_unit_type & | processing_unit () const |
| void | socket (const socket_type &socket) |
| void | core (const core_type &core) |
| void | processing_unit (const processing_unit_type &processing_unit) |
| bool | operator< (const cpu_spec &rhs) const |
| bool | operator== (const cpu_spec &rhs) const |
Static Public Member Functions | |
| static cpu_spec | parse (const std::string &rhs) |
Friends | |
| std::istream & | operator>> (std::istream &s, cpu_spec &rhs) |
| std::ostream & | operator<< (std::ostream &s, const cpu_spec &rhs) |
A class representing a cpu by its socket, core, and processing unit. For instance, the first processing unit on the first core of the first socket is represented as socket = 0, core = 0, processing unit = 0.
|
inline |
Constructs a cpu_spec with socket = -1, core = -1, processing unit = -1. This will never be a legal CPU.
|
inline |
Constructs a cpu_spec with the given socket, core, and processing unit.
| s | Zero based socket |
| c | Zero based core |
| h | Zero based processing unit (hyperthread) |
|
inline |
Get the zero based core identifier for this cpu_spec
|
inline |
|
inline |
|
inline |
Equality operator
| rhs | the basic_cpu to compare to |
|
inlinestatic |
|
inline |
Get the zero based processing unit identifier for this cpu_spec.
|
inline |
|
inline |
Get the zero based socket identifier for this cpu_spec.
|
inline |
|
friend |
Stream out operator
stream out socket,core,processing_unit
|
friend |
Stream in operator
a string triplet of socket,core,processing_unit into a cpu spec


In the ancient Greece the Agora was the public place where the population used to gather and which was the center of social, economic and political life of the city. Etymologically, Agora means «gathering place», «Assembly». In a Web3 Direct Democracy project, the Agora is the contract used to implement direct democracy via a legislative referendum of people initiative. There is a single Agora contract in a Web3 Direct Democracy and all citizens can take part in it's democratic process.
Functions
| Name | Type | Description |
|---|---|---|
| Name | string | Name of the Agora contract |
| token_address | address | Address of the {DemoCoin} contract of the Web3 Direct Democracy project |
| citizen_address | address | Address of the {Citizens_Register} contract of the Web3 Direct Democracy project |
Returns:
No parameters
Function can be called by a citizen to add function calls to a proposition that he has already created (He have to be the author of the proposition). Caller must approve {FunctionCall_Price} multiplied by the number of function call he wants to add to the proposition.
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the register concerned by the referendum project. |
| referendum_key | bytes32 | Id of the referendum proposition the caller wants to add function calls to. The Id is obtained by hashing the Title with the Description of the law project. |
| Proposal | uint256 | Proposition Id to modify. |
| New_Items | bytes[] | Array of new function calls to add to the Proposition. |
| Indexs | uint256[] | array of Proposition's function call list indexs to inser new function call (contained in {New_Items}) to. {New_Items} and {Indexs} have the same length. |
Returns:
No parameters
Function can be called by any citizen to submit a new law project. Caller must approve {Law_Initialisation_Price} DemoCoin token for Agora contract
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the register contract the law proposition is about. The address must be contained in Referendums_Registers mapping. |
| Title | bytes | Title of the Referendum Proposition. Can be an hash. |
| Description | bytes | Text explaining the spirit and generals goals of the referendum proposition. Can be an hash. |
Returns:
No parameters
Function can be called by a citizen to submit a corpus of function calls propositions to an existing pending law project. Caller must approve {FunctionCall_Price} DemoCoin Token multiplied by the number of function call contained in the proposition, token for Delegation contract.
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the register concerned by the referendum project. |
| referendum_key | bytes32 | Id of the referendum proposition the caller wants to add a proposition to. The Id is obtained by hashing the Title with the Description of the referendum proposition. |
| Parent | uint256 | Id of the parent proposition the caller wants to attach his proposition to. It's the parent proposition in the proposal tree. If there isn't any proposition in the tree we want to attach the new proposition to, we set Parent to 0 |
| Parent_Proposals_Reuse | uint256[] | List of Parent's function calls index we want to reuse in the new proposition. Function calls are ordered in the order we want them to be executed. 0 elements correspond to new function calls that have to be added by the caller in {New_Function_Call} argument. |
| New_Function_Call | bytes[] | List of new function calls added by the caller. For each element of the New_Function_Call array, caller must set a 0 element in {Parent_Proposals_Reuse} array at the index he want the custom function call to be positioned |
| Description | bytes | Text to justify the new proposal. Can be an hash. |
Returns:
No parameters
**Add Documentation for the method here**
No parameters
Returns:
| Name | Type | Description |
|---|---|---|
| address |
Add a new register under Agora's control. Register's address is added as a {Referendum_Register} struct.
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the register contract to add |
| register_type | uint8 | Type of the new register ({Status} enum) |
Returns:
No parameters
Function can be called by any citizen to end the proposition stage if it's finished. If there are enough signatures then we pass to the Voting stage, else the referendum proposition is aborted.
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the register contract the Referendum proposition is about. The address must be contained in Referendums_Registers mapping. |
| referendum_key | bytes32 | Id of the referendum proposition. |
Returns:
No parameters
Function can be called by any citizen to end the voting stage if it's finished. If the winning proposal id is >0 then the proposal is adopted and can be executed, else if the default proposition is chosen, the referendum proposition is rejected.
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the register contract the Referendum proposition is about. |
| referendum_key | bytes32 | Id of the referendum proposition. |
Returns:
No parameters
Once the referendum proposition has been adopted (ADOPTED value of {Status} enum) then any citizen can call this function to execute all or some of the remaining function call of the winning proposition. For the Referendum proposition to be fully executed all function call have to be executed.
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the register contract the Referendum proposition is about. |
| referendum_key | bytes32 | Id of the referendum proposition. |
| num_function_call_ToExecute | uint256 | Number of function calls to execute. |
Returns:
No parameters
Get results of a Referendum proposition.
| Name | Type | Description |
|---|---|---|
| key | bytes32 | Id of the law project tha contains the proposal |
Returns:
| Name | Type | Description |
|---|---|---|
| Winning_Proposal | uint256 | |
| Receipts | tuple[] |
Get informations about a proposal ({Corpus_Proposal} structure of {Initiative_Legislative_Lib} library) of a law project ({Law_Project} structure of {Initiative_Legislative_Lib} library.
| Name | Type | Description |
|---|---|---|
| key | bytes32 | Id of the law project tha contains the proposal |
| id | uint256 | Id of the proposal in the law project |
Returns:
| Name | Type | Description |
|---|---|---|
| description | bytes | |
| childrens | uint256[] | |
| function_calls | bytes[] | |
| func_call_counter | uint256 | |
| parent | uint256 | |
| author | address |
Get globals informations about a Register contract ruled by Agora: The last version of Parameters related to the Register contract, it's institution type and the list of referendums (represented by their Ids) that are related to it.
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the corresponding Register Contract |
Returns:
| Name | Type | Description |
|---|---|---|
| last_version | uint256 | |
| institution_type | uint8 | |
| list_referendums | bytes32[] |
Get Parameters related to a register Contract ruled by Agora. It return a {Referendum_Parameters} structure
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the corresponding Register Contract |
| version | uint256 | Parameters version. |
Returns:
| Name | Type | Description |
|---|---|---|
| parameters | tuple |
Once the referendum proposition has been executed (EXECUTED value of {status} enum), each citizen that has voted can get his DemoCoin token reward. If proposition proposition had a validation stage, then accounts must have voted AND validated their vote for getting their rewards.
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the register contract the Referendum proposition is about. |
| referendum_key | bytes32 | Id of the referendum proposition. |
Returns:
No parameters
**Add Documentation for the method here**
| Name | Type | Description |
|---|---|---|
| bytes32 |
Returns:
| Name | Type | Description |
|---|---|---|
| Title | bytes | |
| Description | bytes | |
| Proposal_Count | uint256 | |
| Winning_Proposal | uint256 |
The function Allows to change the Name of the Institution. The function is only callable by the {Constitution_Address}
No parameters
Returns:
| Name | Type | Description |
|---|---|---|
| string |
**Add Documentation for the method here**
| Name | Type | Description |
|---|---|---|
| bytes32 |
Returns:
| Name | Type | Description |
|---|---|---|
| Token_Amount_Consummed | uint256 | |
| Petition_Counter | uint256 | |
| Version | uint256 | |
| Creation_Timestamps | uint256 | |
| Start_Vote_Timestamps | uint256 | |
| Voter_Reward | uint256 | |
| Referendum_Status | uint8 |
The function Allows to change the Constitution contract the current Institution obey to. The function is only callable by the {Constitution_Address}
| Name | Type | Description |
|---|---|---|
| new_constitution | address | Address of the new Constitution contract. |
Returns:
No parameters
The function Allows to change the Name of the Institution. The function is only callable by the {Constitution_Address}
| Name | Type | Description |
|---|---|---|
| name | string | New name of the Institution. |
Returns:
No parameters
Function can be called by any citizen to a Referendum proposition petition. A citizen can sign for a specific Referendum proposition only once.
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the register contract the Referendum proposition is about. The address must be contained in Referendums_Registers mapping. |
| referendum_key | bytes32 | Id of the referendum proposition the caller wants to sign. The Id is obtained by hashing the Title with the Description of the law project. |
Returns:
No parameters
**Add Documentation for the method here**
No parameters
Returns:
| Name | Type | Description |
|---|---|---|
| uint256 |
**Add Documentation for the method here**
No parameters
Returns:
| Name | Type | Description |
|---|---|---|
| uint8 |
Update parameters of referendums related to a specific register. Parameters are registered in a {Referendum_Parameters} struct
| Name | Type | Description |
|---|---|---|
| register_address | address | Address of the register contract. |
| Petition_Duration | uint256 | Duration of the proposition/petition stage |
| Vote_Duration | uint256 | Duration of the validation stage |
| Vote_Checking_Duration | uint256 | |
| Law_Initialisation_Price | uint256 | Amount of DemoCoin token to pay to submit a new Referendum proposition. |
| FunctionCall_Price | uint256 | Amount of DemoCoin token to pay for each new function call of a function call corpus proposal submission. |
| Required_Petition_Rate | uint16 | The minimum ratio of citizens signatures required to submit the referendum proposition as a referendum to all citizens. |
| Ivote_address | address | Address of the IVote contract used in the voting and validation stage |
Returns:
No parameters


Home
About us
Drive
Games
Login
Offers
T&C
Billing form
Name
E-mail
Mobile
Address
Address
Flash Drive
Swivel Orange
Swivel Green
Swivel Blue
Bolt Blue
Bolt Black
Bolt Silver
Stealth Lavender
Stealth White
Stealth Pearl
Custom Text
Place Order
Copyright © 2021 Gamer Pizza. All rights ® reserved.


Please sign in
Email address
Password
Sign in
Don't have an account? Sign up
© 2017–2021
Sign Up
Username
Email address
Password
Sign Up
Already have an account? Login
© 2017–2021


Kernel Prolog
Open Source Project Home Page
User Guide
White Paper in
PostScript
and
HTML
Slides
Demo Applet
Class Documentation
Selected Source Files:
Prolog Library
Java Built-ins
Main Interpreter
Fluent Abstract Class
Source Abstract Class
Sink Abstract Class
Prolog Visual GUI library
Java GUI built-ins
Browse this directory
Download Complete Souces in ZIP format (
Mirror1
,
Mirror2
)


| Solar System | |
|---|---|
| Mercury |
Earth is the third planet from the Sun and is the largest of the terrestrial planets. The Earth is the only planet in our solar system not to be named after a Greek or Roman deity. The Earth was formed approximately 4.54 billion years ago and is the only known planet to support life. The Earth’s rotation is gradually slowing. The Earth was once believed to be the centre of the universe. Earth is the only planet not named after a god. |
| Venus | |
| Earth | |
| Mars | |
| Jupiter | |
| Saturn | |
| Uranus | |
| Neptune | |
| Pluto |


Table of Contents
| Opening Moves
Next:
Introduction and Overview
Part I: Opening Moves
This section introduces the adv3Lite Library.
Introduction and Overview
Core and Optional Modules
Starting Out — A Minimal Game Definition
adv3Lite Library Manual
Table of Contents
| Opening Moves
Next:
Introduction and Overview


List of trainings Empty
List of trainings
Name
Date Limit
Date Training
Place
Place
Close
Pass
Pass
name
13/01/2015
15/01/2015
place
place


Let’s say you are conducting a neighborhood welfare survey. The survey aims to learn about the different issues the residents are concerned about and want the local authorities to address immediately. The survey contains a combination of ten closed and open-ended questions. For details about the survey, see \vref{pictureX}. Overall, the survey questions collected two types of data: non-numeric (Questions 1, 2, 5, 6, 9) and numeric (Questions 3, 4, 7, 8, 10), based on which the data can be broadly classified into two types: categorical data and quantitative data.
in-context


Are you good at Javascript? #1
I'm not, really. Still I've been debugging some JS code just to remember why I was not so excited in the past about the language: your code needs to cope with browser specific crap.
Now, are you good at Javascript? If so, without running it, have a look at the following code:
var array = [
{
key : 'value',
foo : 'bar'
},
{
key : 'eulav',
foo : 'rab'
},
];
for (var i = 0 ; i < array.length ; i++)
{
console.log ("key -> " + array[i].key);
console.log ("foo -> " + array[i].foo);
}
How many elements does the array
variable holds?
That code actually hides an Evil™ syntax detail I discovered today. Now, since I've been recently approached by the viral ideas of somebody, I felt compelled to fully understand the above code (and the bug we worked together from which this example came out). So if you really want some hints about what the hell is this all about:
- if you're not running Microsoft IE7, chances are you're not going to see anything weird in the console output :-)
- section 11.1.4 of the ECMAScript v3 spec tells you all you need to know about the array initializers
After all, I'll be probably continuing to study this "suddenly-a-hot-chick" Javascript thing, hoping to find a better world where my eventual code will be living into than that I found in the old days.
blog comments powered by Disqus


LEVEL#0 STARTS ON 5TH OF JULY 18/06/2014 Published by: Alexandra Svilarova The deadline for application is extended to the 3rd of July
SUMMER BREAK+SCHEDULE FOR LEVEL#1 13/06.2014 Published by: Alexandra Svilarova Summer break 2-10 august
FEEDBACK FROM SOFTUNI COF MAY 2014 02/06/2014 Published by: Petya Grozdarska Responses from the questionnaire about the usefulness of the first SoftUni Conf


Hollow Wang was a middle age man who wears his uniform to work no matter what. As the head of the police in the city, he is given the authority to investigate any crime he prefers.


The Team
Akshay Aggarwal
CoFounder
BlocumenStudios
. Startup, Technology & community building enthusiast. Fellow at DraperU.
Kumar Anirudha
Founder
Acyclic Labs
. Blockchain and Ecosystem Developer.
Manav Ailawadi
CoFounder
BlocumenStudios
. Community Builder & Entrepreneur
Advaith Mohan
CoFounder @Wagr. Dedicated to a better future for humanity.
Karthika Sivakumar
Community Manager at Thoughfactory. Excited about the future of Blockchain.
Kashyap Kompella
Founder at fRndzZy. Fellow at DraperU
Vikas Singh
Ethreum blockchain developer and crypto believer.
Lakshay Anand
Blockchain Enthusiast and Developer at Accenture
Stefano Colombu
Nurturing the digital economy ecosystem - AVP Yes Global Institute
Chinmay Shah
Blockchain Enthusiast and Student at NMIMS, Mumbai
Like what we do?
Volunteer with Us


My friend Mike showed me a snakeboard (aka waveboard). Super fun. I found about Freelines which looked even crazier, and expensive-er. Actually tried to build some (they were horrible) and then threw down the $100 for them. Guessing the company is gone now - their site is gone. Fun, really hard to learn, but ultimately just not efficient at all to get anywhere.
ANYWAY… I was wondering if something similar could be done in water and sketched up the idea with some tags from my friends. Check it out! Think it could work?
ᕕ( ᐛ )ᕗ


{% load i18n absolute %}
{% blocktrans with username=user.username %}Dear {{ username }},{% endblocktrans %}
{% blocktrans with domain=site.domain %}You -- or someone pretending to be you -- has requested a password reset on {{ domain }}.{% endblocktrans %}
{% trans "You can set your new password by following this link:" %} {% site 'accounts_password_reset_change' token %}
{% trans "If you don't want to reset your password, simply ignore this E-Mail and it will stay unchanged." %}


Your skills profile: plumber
Use your profile to:
- build a CV
- write an application for a job or an apprenticeship
- prepare for an interview
- prepare to meet a careers adviser
Skill 1: Customer care
Experience
I work on both domestic and industrial jobs so I have experience of meeting the needs of households and businesses.
Achievement
I have got a 95% approval rating on the Rated People website. I achieve this by doing things like: being flexible with the appointment times I offer, consulting the customer on all their work preferences, always working cleanly and returning the house to its previous state, and showing the customers around the work I’ve done to check it meets their needs.
Skill 2: Problem solving
Experience
I have 5 years’ experience of domestic and industrial plumbing and I’m familiar with most of the different brands and ages of systems, which enables me to diagnose common problems.
Achievement
We had a supply chain issue where some materials weren’t always available, which was holding up jobs. So I did some research to find a supplier who kept higher stock levels in the materials we need and arranged a new deal with them.
Skill 3: Practical skills
Experience
I’ve always carried out DIY and practical tasks, and have had a number of jobs in the trades, including painter and decorator.
Achievement
Some new materials came out that our bosses wanted us to use on jobs, so we all had to have training on them. It was expected that it would take us longer to complete jobs for a while, whilst we got used to them. Using my strong practical skills I was able to pick things up quickly and was back to my usual productivity rate within two days.
Skill 4: Technical-drawing skills
Experience
I’ve got 5 years’ experience of working with complex building plans on industrial jobs.
Achievement
I’ve recently completed a short course on computer aided design so I can better understand technical plans, and even produce my own plans for more straightforward domestic jobs.
Sharing options
You can continue with your profile or chat online with a careers adviser.
If you need more help filling in an application form or writing your CV our careers advisers are available to offer you advice and guidance.


Welcome to our Logo Maker Type your company name, and a keyword about your business. will generate logos based on the information given. company Name company Name Submit {{organization}}


I am a London born, New York based web developer with experience in both agency and in-house environments. I craft rich user experiences online, drawing from a deep and wide-ranging understanding of web technologies and practices.
I graduated from Brunel University, London in 2011 with first class honours in Multimedia Technology and Design BSc.
Whilst I typically focus on interface development, I also have extensive experience working with server side languages, frameworks, version control systems and server environments.


Is there a limit to the number of emonTx or emonTH devices that the emonBase can connect to/process/handle ?
»
Archived Forum |
|
emonTx or emonTH device limitSubmitted by HairyBaby2 on Tue, 18/03/2014 - 15:57Is there a limit to the number of emonTx or emonTH devices that the emonBase can connect to/process/handle ? » |
Re: emonTx or emonTH device limit
I think it can handle 32. However, it's worth pointing out that you can connect multiple external D18B20 sensors to an emonTH - I have five or six temperature sensors per emonTH so I'm doing most of a floor with one device.
Re: emonTx or emonTH device limit
I need to monitor a Heat Pump using an emonTX with sensors connected to the emonTX, and also use an emonTH outside to get outside temperature and actual ground temperature near the ground collector coil --without needing to run a cable outside !
Re: emonTx or emonTH device limit
It's 30 - the two end values have dedicated functions. See appendix 2 here: http://openenergymonitor.org/emon/buildingblocks/rfm12b2 for details of our "standard", though it's by no means mandatory.
However, if you have 30 transmitting frequently, you might lose data due to collisions when one transmitter blocks another.
Re: emonTx or emonTH device limit
Is it possible to ''send a request'' to each emonTH device in turn to avoid ''collisions'' or can the emonTH units be programmed to ''send'' in a way that coluld possibly avoid ''collisions'' ?
I assume that 30 means 30 emonTH devices with sensors connected and not 30 sensors in total !


Library of Sages Director Sophia:
Seems like I should hear more about this story. We should move to somewhere inside the library - this place is too crowded. What do you think?
"Yes, let's go inside the library."


Sebastian
Software Developer
Learn more about me
My name is Sebastian and I want to learn.
My Skills
nini
HTML
Java
JavaScript
Contact me
bubnu
jaja
Welcome to the HTML Portfolio Project


Comments
-
Greg Hurrell
Thanks for submitting the request, Mario. And well spotted, too; you have a sharp eye!
If you look carefully, you'll see that the feedback bezels which pop up (if you have them turned on in the preferences) when you use the hot keys to play/pause etc do not have shadows, just like the system bezels. I've done my best to make these bezels exactly match the ones in the OS.
The floater, on the other hand, does have a shadow as you've pointed out. I've slightly reworded the summary so that it includes the word "option", and also says "floater" instead of "bezel". It will make sense that the floater should have a shadow in some cases, and not in others, especially once I add more options to control its appearance (in other words, in the future, you will should be able to make the floater look quite unlike a bezel, if you want)...
-
Greg Hurrell
Changing assignment to reflect my new email address.
http://wincent.com/a/news/archives/2006/05/change_of_email.php
Add a comment
Comments are now closed for this issue.


A SIMPLE PLAN RATING: 8 / 10 --> Great movie
For more reviews and trivia, go to http://surf.to/joblo/
Champion of the camera pyrotechnics, director Sam Raimi reins himself in for this film, and takes on the impression of the Coen brothers on a date with Alfred Hitchcock, in this good old fashioned small town thriller that has everyone asking themselves the same question..."Would I keep the money?"
PLOT: Two brothers and a friend find $4.4 million on a crashed airplane in a nearby snow-ridden forest. The boys agree to hang on to the money until the spring, and see if anyone comes looking for it. If nobody claims for it by them, they agree to share the spoils among themselves, and never tell anyone else about it. Somewhere along the line, their "simple plan" goes awry and the plot thickens.
CRITIQUE: Magnificent film blends all the best elements of a suspense with a solid cast of players, a beautiful landscape a la FARGO (7/10), and a labyrinth of twists and turns that will have you gnawing at your fingernails in anticipation of the next morally-questionable booby-trap. Sam Raimi has crafted one of the best thrillers of the past few years, and does so without the aid of his wonderfully creative camera tricks. This film works on all cylinders because Raimi, and screenwriter Smith, groove the characters out of real people with real problems and real concerns on their minds. The people in this film are just like you and me, and that is what makes this thriller so much deeper and grittier than most. It's based in the reality of the moment, and the consequences that each and every one of us could face in the advent of a simple, everyday cover-up. One thing leads to another in this film, and then another, and then another, until the dark reality of the situation finally succumbs the group, at which point, well...you'll see!
All of the actors in this movie are amazing, but Billy Bob Thornton pulls off another fantastic showing, as the hick brother who lacks in the brainpower but makes up for it via his abundancy of conscience.
This movie is fun and entertaining to watch because it doesn't give us all the answers up front. It slowly unveils the layers of the story as the minutes of the film tick by, and the tension from the suspense sinks in. The cinematography of this movie is lush and creamy, the actors are rock-solid and the plot is a wonder in the science of twisting and turning. Forget all of those crappy big-budgeted, big-starred Hollywood pictures that are coming out this winter season, and go see a movie that truly embraces all of the good old-fashioned notions that make up a great suspenseful film.
So would I keep a sack of $4.4 million if I found it in the middle of a forest tomorrow? After seeing the degradation of human values that crossed the lives of every single person in this movie, I would say "no".
Unless of course...I had a simple plan to get away with it all..... :)
Little Known Facts about this film and its stars: Ben Stiller, John Dahl and John Boorman were three other directors that were at some point associated to the making of this film. A scene with Billy Bob Thornton and Bill Paxton was lost by Northwest Airlines in January 1998 while in transit from Minnesota to Los Angeles. The missing scene had been shot in Minnesota. The film was insured. Sam Raimi requested some advice from his old friends who once helped him on his EVIL DEAD movies, the Coen brothers, in regards to the shooting of this movie in the snow. When Raimi isn't directing or writing, he's busy as the executive producer of the blockbuster syndicated TV series "Xena: Warrior Princess" and "Hercules: The Legendary Journeys." He also co-wrote two films with the Coen brothers. The first was CRIMEWAVE (5/10), and the second was THE HUDSUCKER PROXY (6/10). Bill Paxton's father plays the part of Mr. Schmitt in this movie. "A Simple Plan", the novel also written by Scott Smith, spent seven weeks on the New York Times best-seller list in 1994. Smith originally conceived the project as a screenplay before choosing to write it as a novel. Smith wrote A SIMPLE PLAN while living in New Orleans. The kernel of the idea for the novel was something he first came up with as a graduate student in a screenwriting course at Columbia University's writing program. This film was filmed in the early months of 1998 in Delano, Minnesota.
Review Date: December 20, 1998 Director: Sam Raimi Writer: Scott B. Smith (based his own novel) Producers: James Jacks and Adam Schroeder Actors: Bill Paxton as Hank Mitchell Billy Bob Thornton as Jacob Mitchell Bridget Fonda as Sarah Genre: Thriller Year of Release: 1998
Visit JoBlo's Movie Emporium http://surf.to/joblo/
(c) 1998 Berge Garabedian
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


Architecture :: Naming
Interfaces should end with keyword Interface
1. Bad
interface User{}
2. Good
interface UserInterface{}
Classes and interface should represent real objects,
so the names should be as close as possible to the real objects.
1. Bad
class StringHelper{}
2. Good
class String{}


Welcome to Hello World
This page is created by deepak
Bhubaneswar,India
College
KIIT UNIVERSITY
KISS UNIVERSITY
visit
Blue Star
Fire Whales


Clan Info:
›
Leader:
›
Alliance:
›
Level:
›
Base (Castle\Fortress):
›
Clan Hall:
›
Members:
›
Reputation:
›
Average members level:
Descriptions
Clan Skills
Clan Wars


This set of components is useful for rendering tournament bracket structures. Transform your data into the required game shape, and then pass it to the bracket generator for easy rendering.
Loading React...