Drone-AWE: Drone Applications in Weather Environments
This repository is being developed to advance the state of the art of drone performance predictions under a wide range of weather and battery conditions with mission planning in mind. An interactive GUI is available at http://droneecon.com. This README will explain general usage as well as the underlying theory for the models used, as currently implemented. Note that Drone-AWE is a work in progress (see Future Work). This document will explain general usage for the latter, as well as the engineering theory at work behind the scenes.
Installation
Drone-AWE may be used in two ways: using the GUI available at http://droneecon.com, or by using the source code directly. To use the source code directly, install using
pip install drone_awe
Usage
Basic Usage
Base functionality is achieved by running the following:
import drone_awe
m = drone_awe.model(args)
m.simulate()
where args
is a dictionary containing simulation parameters. Note that for every parameter not specified in args
, a default value is used. It is possible to run the default simulation by passing an empty dictionary into the drone_awe.model()
method:
import drone_awe
m = drone_awe.model({})
m.simulate()
Settable dictionary keys with example values for args
include the following:
{
"validation":False,
"validationcase":"DiFranco2016",
"dronename":"dji-Mavic2",
"batterytechnology":"near-future",
"stateofhealth":90.0,
"startstateofcharge":100.0,
"rain":False,
"dropsize":1.0,
"liquidwatercontent":1.0,
"temperature":15.0,
"wind":False,
"windspeed":10.0,
"winddirection":0.0,
"relativehumidity":0.0,
"mission": {
"missionspeed": 10.0,
"altitude":100.0,
"heading":0.0,
"payload:0.0
},
"timestep":1,
"plot":True,
"xlabel":"missionspeed",
"ylabel":"power",
"title":"First_test",
"simulationtype":"simple",
"model":"abdilla",
"xvals":[0,1,2,3,4,5],
"weathereffect":"temperature",
"weathervals":[10,20,30,40]
}
These are explained further in Settings. After a drone_awe.model
object is instantiated, settings can be changed by modifying the input
class variable as:
m.input['xlabel'] = 'payload'
m.input['validationcase'] = 'Stolaroff2018'
The simulation must then be re-run using:
m.simulate()
Plotting
An optional boolean may be set to produce a plot on runtime by running:
m = drone_awe.model({},plot=True)
when a drone_awe.model
is instantiated. Alternatively, the drone_awe.model
's plot
variable may be set at any time:
m.plot = True
Settings
The following subsections explain the use of various settings of a drone_awe.model
object.
'dronename'
'dronename'
must be set to a string that is defined in the drone database. To access a dictionary containing all supported drones, use the following methods:
droneDictionary = drone_awe.drones
If a drone or validation case does not exist in the drone database, it may still be used by setting a custom dictionary:
m.drone = droneDictionary
where droneDictionary
is a dictionary with the same keys as the following:
{
'id': 'dji-Mavic2',
'wingtype': 'rotary',
'diagonal': 0.354,
'takeoffweight': 0.907,
'speedmax': 20,
'altitudemax': 6000,
'endurancemax': 31,
'endurancemaxspeed': 6.944,
'endurancemaxhover': 29,
'rangemax': 18000,
'rangemaxspeed': 13.889,
'temperaturemin': -10,
'chargerpowerrating': 60,
'batterytype': 'LiPo',
'batterycapacity': 3850,
'batteryvoltage': 15.4,
'batterycells': 4,
'batteryenergy': 59.29,
'batterymass': 0.297,
'waterproof': 'no',
'windspeedmax': 10.8,
'batteryrechargetime': 90,
'rotorquantity': 4,
'rotordiameter': 0.2,
'cruisespeed': 6.94,
'payload': 0.0,
'length': 0.322,
'width': 0.242,
'height': 0.084
}
Note that not all parameters need be specified, but if a simulation is run that requires unspecified parameters, the model will not run.
'validation'
and 'validationcase'
To view validation cases for drone_awe
models, set 'validation'=True
and 'validationcase'
to a string contained in the validation case database. To access a dictionary containing all supported validation cases, run the following:
validationDictionary = drone_awe.validationdata()
Additionally, validationCaseDictionary
is a dictionary with the following format:
{
'id': 'Stolaroff2018',
'xvalid': [1.358974359,1.7179487179,1.6923076923,1.7692307692,1.7692307692,1.8205128205,1.8717948718,1.8974358974,1.9230769231,1.9743589744,2.0512820513,2.1025641026,2.1025641026,2.1794871795,2.2820512821,2.3076923077,2.3333333333,2.4358974359,2.5384615385,2.5384615385,2.6666666667,2.7948717949,2.9487179487,3.1025641026,3.2564102564,3.358974359,3.4615384615,3.641025641,3.7435897436,3.8717948718,4.0512820513,4.2564102564,4.358974359,4.641025641,4.8974358974,5.8461538462,6,6.2820512821,6.5384615385,7.1538461538,7.4871794872,7.8205128205,8.4871794872,9.1794871795,9.7692307692,10.2564102564,10.6923076923,11.1282051282,11.5897435897],
'yvalid': [133.7510729614,149.2375075128,142.6477385276,144.5897859156,140.9450186657,141.7583868756,142.3874173587,140.4340604922,139.3656195241,139.5335348046,140.2321151941,139.9589946754,136.1689649626,138.3618186589,141.3711557508,139.4001574523,136.7492021569,136.5131929807,137.712167001,133.136399421,135.7755034665,136.58240428,141.8694500174,143.7278953027,145.8751386173,144.4503136349,143.5492800366,144.4966689523,140.8944307591,139.7885398414,140.0842115956,140.6905892611,140.7593265104,140.4412051028,148.3297356325,161.0751453894,160.7738527567,158.8079335653,157.0439596719,161.2248774665,165.1381601781,164.7032531681,177.1408013138,175.6982333173,190.095233258,197.4485952036,209.0736216573,203.7684942987,215.7551870381],
'drone': {
'validationcase':'Stolaroff2018',
'wingtype': 'rotary',
'rotorquantity': 4,
'takeoffweight': 1.3,
'batterytype': 'LiPo',
'batteryvoltage': 11.1,
'batterymass': 0.262,
'props': '10x4.7',
'endurancemaxhover': 16,
'payloadmax': 0.4,
'batterycapacity': 5500,
'payload': 0.0,
'rotordiameter': 0.254,
'batterycells': 3,
'length': 0.280,
'width': 0.140,
'height': 0.100,
'waterproof': 'no'
},
'settings': {
'dronename': 'drone',
'stateofhealth': 100.0,
'startstateofcharge': 100.0,
'altitude': 100.0,
'temperaturesealevel': 15.0,
'rain': False,
'dropsize': 0.0,
'liquidwatercontent': 1.0,
'temperature': 15.0,
'wind': False,
'windspeed': 0.0,
'winddirection': 0.0,
'relativehumidity': 85.0,
'icing': False,
"mission": {
"missionspeed": 10.0
},
'timestep': 1,
'xlabel': 'missionspeed',
'ylabel': 'alpha',
'title': 'Stolaroff',
'simulationtype': 'simple',
'model': 'abdilla',
'xvals': [0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0],
'validation': False,
'validationcase': 'Stolaroff2018',
'batterytechnology': 'current'
}
}
Assumed Specs
Some specifications are not explicitly available, or require some adaptation at runtime. Note that the 'altitude'
setting of validation cases is not always known and is set by default to '0'
. 'length'
, 'width'
, and 'height'
parameters are not necessarily set to geometrically accurate values; rather, they are set so that 'length'
times 'width'
results in the top area and that 'width'
times 'height'
results in the drone's frontal area.
'L/D'
and 'propulsiveefficiency'
When simulating a fixed-wing drone, the current model requires input parameters for the lift-to-drag ratio ('L/D'
) and the efficiency of the propulsive system ('propulsiveefficiency'
). Ballpark estimates for small UAVs are on the order of 10 and 30%, respectively, although these values heavily depend on the specific geometries and propulsive systems of the drones.
Battery parameters
'batterytechnology'
'batterytechnology'
must be set to one of the following options: 'current'
, 'near-future'
, or 'far-future'
. 'current'
will use the current battery capacity as specified in drone.params
. 'near-future'
projects a future capacity in five years based on an increase of 3.5% of battery capacity each year. 'far-future'
projects battery capacity for lithium-air batteries, about ten times the capacity of current LiPo batteries.
'stateofhealth'
and 'stateofcharge'
'stateofhealth'
refers to the amount of capacity contained within the battery relative to its initial capacity at first use. 100% would be a new battery. LiPo batteries (most commonly used battery for drones) are typically retired when their state of health falls to 80-85%. At lower states of health, the battery capacity is decreased and cycles through a full charge more quickly.
'stateofcharge'
refers to the current capacity level of the battery, where 100% is fully charged (regardless of how much the battery has been used before), and 0% is a dead battery.
Weather parameters
'dropsize'
, 'liquidwatercontent'
and 'rainfallrate'
These parameters specifiy rain characteristics. If there is no rain in the simulation, set these to 0.0.
'dropsize'
refers to the diameter of a raindrop (assuming a spherical shape), with units of meters. 'liquidwatercontent'
refers to the amount of water in a given volume of air, with units of kg/m^3. 'rainfallrate'
is the rate of rainfall in units of mm/hr, which translates to litres per cubic meter per hour.
Only one of 'liquidatercontent'
and 'rainfallrate'
needs to be specified.
'temperature'
Units of temperature are given in degrees Celcius.
'relativehumidity'
'relativehumidity'
refers to water content in the air, ranging from 0% to 100%.
Mission parameters
'mission'
is a dictionary with the following keys:
-
'missionspeed'
— the cruise velocity of the drone, with units of m/s. -
'altitude'
— in units of meters. -
'heading'
— the heading angle of the drone, in units of _____. -
'payload'
— the mass of any exra payload attached to the drone (e.g., camera), in units of kg.
Plotting parameters
'xlabel'
and 'ylabel'
not only specify axis labels of the plot, but also tell the simulation what to solve for ('ylabel'
) and what parameter to loop through ('xlabel'
). 'ylabel'
can be range
, endurance
, or power
. 'xlabel'
can be any variable from the following list:
"startstateofcharge",
"altitude",
"temperature",
"dropsize",
"liquidwatercontent",
"newtemperature",
"windspeed",
"winddirection",
"relativehumidity",
"payload",
"missionspeed"
'xvals'
is a list containing all the values of x the simulation will loop through and produce a single data point for.
'zlabel'
can be specified to any of the variables used for the 'xlabel'
parameter (see list above) to loop through. This will produce a curve for each of the values in 'zvals'
and plot them on the same figure. This is useful for looping through a weather effect, such as temperature or relative humidity, to see their effects on a plot of range vs payload.
'title'
is the title displayed on the top of the plot, followed by the current date. Currently, the title needs to be one word. A title of multiple words can have each word separated by an underscore en lieu of a space.
Theory
Drone AWE
is intended to predict performance parameters of rotary and fixed-wing drones based on readily-available specifications. To accomplish this, the power requirements for a given flight maneuver is calculated and used to predict battery drain behavior. Then, parameters such as range and endurance can be calculated. Comprehensive state data is collected at each step of a simulation, providing a versatile data set as output for study.
Power
Rotary Drones
For rotary drones, power consumption is predicted in two steps. First, model parameters are calibrated based on known specifications, like maximum hover time and rotor diameter. Then, momentum theory is used to predict the power consumption.
Calibration
Momentum Theory
According to rotor momentum theory, five equations govern the flight of a rotorcraft:
- $T = \sqrt{W^2 + D^2}$
- $tan(\alpha) = \frac{D}{W}$
- $D = \frac{1}{2} \rho V_\infty^2 C_D A_{\bot}$
- $v_i = \frac{T}{2 A_{rotor} N_{rotor} \rho \sqrt{V_\infty^2 cos^2(\alpha) + (V_\infty sin(\alpha) + v_i^2)}}$
- $A_{\bot} = A_{front} cos(\alpha) + A_{top} sin(\alpha)$
A modified set of these equations were applied to rotary drones by Stolaroff, Samaras, O'Neill et. al. in [1]. Drone AWE
predicts the power consumption of a rotary drone by solving this system. GEKKO, a software package introduced in [2], is used to solve for:
- $T$ - thrust per rotor
- $\alpha$ - angle of attack
- $D$ - drag
- $v_i$ - rotor induced velocity
- $A_{\bot}$ - planform area of the drone perpendicular to its velocity
given the following:
- $W$ - effective weight
- $V_\infty$ - drone speed
- $C_D$ - drag coefficient
- $A_{rotor}$ - rotor area
- $N_{rotor}$ - number of rotors
- $\rho$ - air density
- $A_{front}$ - frontal drone area
- $A_{top}$ - drone top area
Note that the model currently assumes that the drag coefficient does not change with velocity and/or angle of attack.
The power requirement for the hover case is calculated according to another equation from [1]:
- $P_{hover} = \frac{W^{3/2}}{\eta \sqrt{2N_{rotor} A_{rotor} \rho}}$
where $\eta$ is the propulsive efficiency calculated as:
- $\eta = \frac{P_{hover}}{P_{hover, actual}}
where $P_{hover, actual}$ is predicted using:
- $P_{hover, actual} = \frac{CV_{battery}}{E_{hover}}$
where $C$ is the battery capacity, $V_{battery}$ is the battery voltage, and $t_{hover}$ is the hover endurance of the drone. Ideally, each parameter is available as published specifications for the drone to be modeled. Next, $\eta$ is used to predict power consumption for the non-hover case as:
- $P = \eta T(V_\infty sin(\alpha) + v_i)$
Fixed-Wing Drones
Range and Endurance
Endurance is defined as the length of time a drone can remain airborne. Range is the physical distance traveled by the drone. Endurance is calculated by dividing the battery energy (capacity multiplied by voltage) by the power required:
$t = \frac{C\times V}{P}$
where $t$ is the endurance, $C$ is the battery capacity, and $V$ is the average battery voltage. Range is then simply calculated by multiplying the endurance by the average velocity of the drone:
$R = t\times U$
where $R$ is the range in meters and $U$ is the average drone velocity.
Weather
Temperature
From the ideal gas law, $PV=nRT$ (which applies to standard air conditions), temperature is inversely proportional to air density:
$T \propto \frac{1}{\rho}$
In this model the increase or decrease in temperature is taken from 15 °C, and is used to calculate an associated change in air density. In turn, density directly influences power required for drones.
Humidity
Humidity also has a direct impact on air density, which directly affects power requirements for drones. This model uses empirical data obtained from [3], where the effects of varying levels of humidity and temperature on air density were recorded.
Rain
Rain has many effects on the flight performance of drones; however, there is little to no information or validation experiments that test the effects of rain on rotary-wing drones. Thus, for rotary drones in this model, only the effects of downward momentum imparted by the rain to the drone is considered. It is not meant to be comprehensive and, with the aid of more empirical data, could be refined and/or altered significantly to better represent the effects of rain.
For fixed-wing drones, in addition to the momentum exchange, rain has been shown to both decrease lift and increase drag at all practical angles of attack. In this model, a slight reduction in the lift-to-drag ratio is performed, based on averages taken from plots from [4] and [5] (the lift coefficient is reduced by 6% and the drag coefficient increases by 0.01).
Force from downward momentum was calculated from the droplet size and liquid water content, as specified by the user. If a rainfall rate was instead given, the following conversion is performed taken from [4]:
$Drizzle:\ LWC = \frac{30000\pi10^{-3}}{5.7^4R^{-0.84}}$
$Widespread:\ LWC = \frac{7000\pi10^{-3}}{4.1^4R^{-0.84}}$
$Thunderstorm:\ LWC = \frac{1400\pi10^{-3}}{5.7^4R^{-0.84}}$
where $LWC$ is the liquid water content in $g/m^3$ and $R$ is the rainfall rate in mm/hr. Drizzle, widespread, and thunderstorm rain conditions were determined based on the value of $R$.
The force from a single droplet is found by multiplying the droplet mass by the change in velocity of the droplet upon impact ($\Delta V$). Assuming each drop is a sphere of diameter 'dropsize'
, the terminal velocity can be calculated as:
$Terminal\ velocity\ V_t = \sqrt{\frac{2mg}{C_d\rho A}}$
where $m$ is the droplet mass, $g$ is accelleration due to gravity, $C_d$ is the coefficient of drag (in this case assumed to be 0.5), $\rho$ is the density of air, and $A$ is the cross-sectional area of the droplet. This equation can be derived from setting equal the forces of gravity and drag on the raindrop. Upon impact with a drone's surface, some or all of the drop can stick to the surface or splash back. Criteron given in [4] determines this outcome based on the droplet's weber number:
$We = \frac{\rho_{air} V_t^2 d}{\sigma}$
where $d$ is the droplet diameter, $V_t$ is the drop's velocity, and $\sigma$ is the water surface tension (this is taken from empirical values based on the current temperature).
The result of the drop's impact is assumed to be:
$We < 5$: drop sticks; $\Delta V = V_t$
$5 < We < 10$: drop rebounds; $\Delta V = 2V_t$
$10 < We < 18.0^2 D_p(\rho_{drop}/\sigma)^{1/2}V_t^{1/4}f^{3/4}$: drop spreads; $\Delta V = V_t$
$18.0^2 D_p(\rho_{drop}/\sigma)^{1/2}V_t^{1/4}f^{3/4} < We$: drop splashes; $\Delta V = V_t(1+2/\pi)$
The number of raindrops incident on the drone per second ($f$) can be determined by dividing the liquid water content (with units of kg/m^3) by the droplet mass, and then multiplying by the drone area and the velocity of the drops:
$#\ of\ drops\ incident\ per\ second\ f = \frac{LWC A_{drone} U_{drop}}{m_{drop}}$
Putting all of this together, the force imparted by all incident raindrops per second on a drone is the number of incident drops multiplied by the change in momentum, the average droplet mass multiplied by the average change in velocity:
$F = f * (m_{drop} \times \Delta V)$
This force acts in the opposite direction of lift, which requires more power to overcome. It effectively increases the "weight" of the drone as far as power generation is concerned.
Wind
Icing
Ice accretion has many adverse effects on a drone's flight performance, including significant losses in lift and increases in drag. In addition, ice adds more weight to the system, which is especially significant for drones, whose weights are small to begin with. Icing effects can even lead to premature stall conditions. Despite these dangerous risks, icing is also very difficult to predict without using computational fluid dynamics (CFD), which is outside the current scope of this project.
In this model, we do not attempt to predict the effects of icing; however, at certain conditions we do issue a warning to the user that icing could occur at those operating conditions, specifically when temperature is low and humidity is high. We encourage users to refer to the icing sections in our literature reviews of weather effects on drone flight performance for more information.
Units
Properties and their respective units are converted within the simulation to SI units, and then converted back. Those units are:
Electricity
- Capacity: milliamp-hours [mAh]
- Voltage: volts [V]
- Current: amperes [A]
- Resistance: ohms [Ω]
Mechanics
- Velocity/Speed: meters per second [m/s]
- Power: watts [W]
- Endurance or Flight time: minutes [min]
- Altitude: meters [m]
-
mass: kilograms [kg]
- note that "takeoff weight" is measured in mass units
Miscellaneous
- Temperature: degrees Celcius [°C]
-
Wind Resistance: meters per second [m/s]
*refers to the maximum wind speed rating for the drone
-
Battery re-charge time: minutes [min]
functions.py — Commonly used functions
getparams
reads in a .txt or .csv file and outputs a dictionary with keys from a specified list and values from the specified parameter file.getXandY()
reads in data from a validation case and saves the contents to lists for x and y. This function assumes the first row contains labels and ignores them.interpolate()
does a simple linear interpolation with inputs of 2 x-values, 2 y-values, and the x-value of the interpolated value.
Testing
- test_power.py
- test_drone.py
- test_plotter.py
Future Work
This section is to be used to record ideas for future development that cannot be immediately implemented due to time constraints.
- calculate propulsive efficiency at max range and max endurance and interpolate between the two
- go weather by weather and determine the appropriate model to be used
Classes
This section contains a detailed description of each class, all contained in Classes.py.
-
the
Drone
class-
class variables contain:
-
data sheet specifications of specific drone models (e.g., the Mavic 2 Pro), including
- battery size
- battery type
- range under specified conditions
- fixed wing or rotary wing
- etc.
-
-
methods calculate certain characteristics based on available information
-
-
the
Battery
class-
class variables describe:
-
properties of specific batteries used to model their discharge characteristics, including
- battery type
- number of cells
- low, nominal, and charged cell voltages
-
Real-time discharge characteristics for simulation, including
- instantaneous voltage
- instantaneous current
- instantaneous state of charge
- current state of health
-
-
methods are used to update class variables using information from the
params/
directory
-
-
the
Power
class-
class variables describe
- baseline power consumption
- an array of 'correction' objects used to modify the power consumption class variable due to weather or other effects (these could be the weather effect classes, actually)
- total power consumption
-
methods are used to
- update the total power consumption class variable
- append
PowerCorrection
objects toPower
objects using theaddCorrection
method - throw an error if
addCorrection
attempts to append a time-variantPowerCorrection
object to a time-invariantPower
object - the
PowerCorrection
method- adjustments to the baseline power requirements of the drone
- whether the simulation is time-variant or time-invariant
- methods perform miscellaneous book-keeping functions
-
-
the
Weather
class-
class variables describe
- an instance of each weather effect to be modeled
- droplet size (rain)
- Liquid Water Content (LWC) (rain)
- rainfall rate (rain)
-
the
__updateRain
method- For all drone types, this calculates the momentum imparted to the drone from falling rain droplets based on their size and liquid water content.
-
the
__getWebernumber
method- Calculates weber number based on rain density, velocity, diameter, and frequency. This is used to obtain momentum in the __updateRain method.
-
the
__getSurfaceTension
method-
empirically interpolates surfaces tension based on current temperature
-
the
Temperature
class-
class variables describe
- new temperature?
-
-
the
Humidity
class-
class variables describe
- relative humidity
-
-
the
Wind
class-
class variables describe
- wind speed
- wind direction
- amount of turbulence?
- variation in speed and/or direction?
-
-
the
Gust
class-
class variables describe
- frequency
- amplitude
-
-
the
Ice
class- Because of modeling difficulty, this class does not attempt yet to model icing effects. It may in the future be used to identify if icing conditions are present.
-
-
-
the
Mission
class-
class variables describe
- mission speed
-
-
the
Simulation
class -
class variables describe
- start time
- end time
- timestep
- current timestep index
- current time
- methods are used to run and store simulation information, including procedures to get range and endurance
NOTE: the model is based on power consumption to accomodate future development. The Power
class is designed to receive an indefinite number of modifications based on weather effects
-
the
Plotter
class- plots results according to labels and titles specified by the user in the
settings.txt
file. Methods can plot a line or scatter plots. The validation method plots results on top of specified validation data.
- plots results according to labels and titles specified by the user in the
References
- Beal, L.D.R., Hill, D., Martin, R.A., and Hedengren, J. D., GEKKO Optimization Suite, Processes, Volume 6, Number 8, 2018, doi: 10.3390/pr6080106.
- Stolaroff, J. K., Samaras, C., O’Neill, E. R., Lubers, A., Mitchell, A. S., & Ceperley, D. (2018). Energy use and life cycle greenhouse gas emissions of drones for commercial package delivery. Nature Communications, 9(1), 1–13. https://doi.org/10.1038/s41467-017-02411-5
- Yue, W., Xue, Y., & Liu, Y. (2017). High Humidity Aerodynamic Effects Study on Offshore Wind Turbine Airfoil/Blade Performance through CFD Analysis. International Journal of Rotating Machinery, 2017, 1–15. https://doi.org/10.1155/2017/7570519
- Cao, Y., Wu, Z., & Xu, Z. (2014). Effects of rainfall on aircraft aerodynamics. Progress in Aerospace Sciences, 71, 85–127. https://doi.org/10.1016/j.paerosci.2014.07.003
- Ismail, M., Yihua, C., Wu, Z., & Sohail, M. A. (2014). Numerical Study of Aerodynamic Efficiency of a Wing in Simulated Rain Environment. Journal of Aircraft, 51(6), 2015–2023. https://doi.org/10.2514/1.c032594


| 1 | /* | |
| 2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
| 3 | * contributor license agreements. See the NOTICE file distributed with | |
| 4 | * this work for additional information regarding copyright ownership. | |
| 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| 6 | * (the "License"); you may not use this file except in compliance with | |
| 7 | * the License. You may obtain a copy of the License at | |
| 8 | * | |
| 9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
| 10 | * | |
| 11 | * Unless required by applicable law or agreed to in writing, software | |
| 12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
| 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 14 | * See the License for the specific language governing permissions and | |
| 15 | * limitations under the License. | |
| 16 | */ | |
| 17 | package org.apache.commons.math3.analysis.solvers; | |
| 18 | ||
| 19 | import org.apache.commons.math3.util.FastMath; | |
| 20 | import org.apache.commons.math3.exception.TooManyEvaluationsException; | |
| 21 | ||
| 22 | /** | |
| 23 | * Implements the  | |
| 24 | * bisection algorithm for finding zeros of univariate real functions. | |
| 25 | *
 | |
| 26 | * The function should be continuous but not necessarily smooth.
 | |
| 27 | * | |
| 28 | * @version $Id: BisectionSolver.java 1391927 2012-09-30 00:03:30Z erans $ | |
| 29 | */ | |
| 30 | public class BisectionSolver extends AbstractUnivariateSolver { | |
| 31 | /** Default absolute accuracy. */ | |
| 32 | private static final double DEFAULT_ABSOLUTE_ACCURACY = 1e-6; | |
| 33 | ||
| 34 | /** | |
| 35 | * Construct a solver with default accuracy (1e-6). | |
| 36 | */ | |
| 37 | public BisectionSolver() { | |
| 38 | this(DEFAULT_ABSOLUTE_ACCURACY); | |
| 39 | } | |
| 40 | /** | |
| 41 | * Construct a solver. | |
| 42 | * | |
| 43 | * @param absoluteAccuracy Absolute accuracy. | |
| 44 | */ | |
| 45 | public BisectionSolver(double absoluteAccuracy) { | |
| 46 | super(absoluteAccuracy); | |
| 47 | } | |
| 48 | /** | |
| 49 | * Construct a solver. | |
| 50 | * | |
| 51 | * @param relativeAccuracy Relative accuracy. | |
| 52 | * @param absoluteAccuracy Absolute accuracy. | |
| 53 | */ | |
| 54 | public BisectionSolver(double relativeAccuracy, | |
| 55 | double absoluteAccuracy) { | |
| 56 | super(relativeAccuracy, absoluteAccuracy); | |
| 57 | } | |
| 58 | ||
| 59 | /** | |
| 60 | * {@inheritDoc} | |
| 61 | */ | |
| 62 | @Override | |
| 63 | protected double doSolve() | |
| 64 | throws TooManyEvaluationsException { | |
| 65 | double min = getMin(); | |
| 66 | double max = getMax(); | |
| 67 | 1 | verifyInterval(min, max); |
| 68 | final double absoluteAccuracy = getAbsoluteAccuracy(); | |
| 69 | double m; | |
| 70 | double fm; | |
| 71 | double fmin; | |
| 72 | ||
| 73 | while (true) { | |
| 74 | m = UnivariateSolverUtils.midpoint(min, max); | |
| 75 | fmin = computeObjectiveValue(min); | |
| 76 | fm = computeObjectiveValue(m); | |
| 77 | ||
| 78 | 3 | if (fm * fmin > 0) { |
| 79 | // max and m bracket the root. | |
| 80 | min = m; | |
| 81 | } else { | |
| 82 | // min and m bracket the root. | |
| 83 | max = m; | |
| 84 | } | |
| 85 | ||
| 86 | 3 | if (FastMath.abs(max - min) <= absoluteAccuracy) { |
| 87 | m = UnivariateSolverUtils.midpoint(min, max); | |
| 88 | 1 | return m; |
| 89 | } | |
| 90 | } | |
| 91 | } | |
| 92 | } | |
Mutations | ||
| 67 |
removed call to org/apache/commons/math3/analysis/solvers/BisectionSolver::verifyInterval : SURVIVED |
|
| 78 |
Replaced double multiplication with division : SURVIVED changed conditional boundary : KILLED -> org.apache.commons.math3.analysis.solvers.BisectionSolverTest.testQuinticZero(org.apache.commons.math3.analysis.solvers.BisectionSolverTest) negated conditional : KILLED -> org.apache.commons.math3.analysis.solvers.BisectionSolverTest.testQuinticZero(org.apache.commons.math3.analysis.solvers.BisectionSolverTest) |
|
| 86 |
Replaced double subtraction with addition : KILLED -> org.apache.commons.math3.analysis.solvers.BisectionSolverTest.testQuinticZero(org.apache.commons.math3.analysis.solvers.BisectionSolverTest) changed conditional boundary : SURVIVED negated conditional : KILLED -> org.apache.commons.math3.analysis.solvers.BisectionSolverTest.testQuinticZero(org.apache.commons.math3.analysis.solvers.BisectionSolverTest) |
|
| 88 |
replaced return of double value with -(x + 1) for org/apache/commons/math3/analysis/solvers/BisectionSolver::doSolve : KILLED -> org.apache.commons.math3.analysis.solvers.BisectionSolverTest.testQuinticZero(org.apache.commons.math3.analysis.solvers.BisectionSolverTest) |


Hi, I'm Shreyas!
Frontend Developer
Multi-Skilled person with keen interest in Web Application Security, UI/UX Design, Front-end Development and many more.
Contact MeAbout Me
My IntroductionAn analytical problem-solvers with an eager to improve systems and processes with innovative ideas. Independent, Decisive, Determined, Open-minded, Strategic and Multi-skilled person who sometimes can be overly-analytical even stubborn in few situations.
Skills
My SkillsFront-end Developer
HTML
90%CSS
80%JavaScript
60%Tools
Adobe XD
Basic to IntermediateVS Code
IntermediateAtom
AdvancedIntelliJ Editor
Basic to IntermediateGoogle Docs
IntermediateGoogle Sheets
IntermediateGoogle Presentation
IntermediateGoogle Calendar
Basic to IntermediateCanva
Basic to IntermediateBurp Suite
IntermediateKali Linux and Related Tools
Basic to IntermediateMicrosoft Word
Basic to IntermediateMicrosoft Powerpoint
Basic to IntermediateMicrosoft Excel
Basic to IntermediateOther Skills
C++
Intermediate LevelC Language
Basic to IntermediatePHP
BasicPython
IntermediateEthical Hacking - Web Application Security
IntermediateUI-UX Design
IntermediateGithub
AdvancedMarkdown Language
AdvancedDigital Marketing
Basic to IntermediateQualification
My JourneyComputer Engineering
International Institute of Information Technology, Pune
2019 - 2023 (Expected)
HSC Board Examination
JD Junior Science College, Yavatmal
2017 - 2019
SSC Board Examination
Sanskar English Medium High School, Yavatmal
2017


@import app.AppGlobal @(code:Int,message:String)
Error occured! - A client error occurred
@message
Back


Tycho has a certain directory structure that you need to know about if you are planning on extending tycho.
tylndir
$TYCHO/bin/tylndir
will create a private directory tree with links to a common Tycho
tree. This allows Tycho developers to maintain their own tree and
edit it as they see fit and to get changes that other developers make.
For example, to create your own private tree in ~/ty
from
the master sources in ~ptdesign/tycho
, do the following:
mkdir ~/ty
cd ~/ty
~ptdesign/tycho/bin/tylndir ~ptdesign/tycho
TYCHO
environment to ~/ty
.
If you are running the C shell, you would type:
setenv TYCHO ~/tyYou could place the above line in your
.cshrc
file so that
it is set each time you log in.
$TYCHO/bin
in your path:
set path = ($TYCHO/bin $path)
tycho
.
tylndir
is not perfect, as it will create links for garbage
files such as ,*
and *~
in your private tree.
The tree that tylndir
builds has links for the
SCCS
directories, so that everyone is sharing the
the master ~ptdesign
SCCS
directories via links.
When you start using your tree, most of the files are also links.
If you check out a file, then the link is removed, and checked out
version of the file is put in its place. The SCCS version control system
creates a lock file in the shared SCCS
directory.
so that noone can check out that file while you have it checked out.
To update your tree, you do cd $TYCHO; make sources
.
This will update any files that have been changed by others.
It would be nice if we had CVS and could have concurrent and truly parallel trees, but the amount of training is fairly substantial.
It is best if the makefiles do not contain any
GNU make
extensions so that the makefiles can be used with non-GNU
make
. Over time we are migrating away from makefiles and
using Tcl scripts and the BuilderDialog instead.
The Makefile editor can insert a makefile template by using the
Template
choice of the Special
menu.
$TYCHO/edit/textedi/templates/Cmakefile.mk
contains the template that the
Makefile editor actually inserts.
The general structure of a Tycho makefile is
ROOT
and
VPATH
.
ROOT
VPATH
$(ROOT)
.
$TYCHO/kernel/gui/makefile
contains:
# Root of Tycho directory ROOT = .. # True source directory VPATH = $(ROOT)/kernel/gui
$TYCHO/mk/tycho.mk
, which is
a makefile that sets common makefile variables. For example:
# Get configuration info CONFIG = $(ROOT)/mk/tycho.mk include $(CONFIG)
TCL_SRCS
.tcl
suffix
ITCL_SRCS
.itcl
suffix
EXTRA_SRCS
$(TCL_SRCS) $(ITCL_SRCS)
. The name
EXTRA_SRCS
is from Ptolemy and indicates that these files
are not compiled or otherwise processed.
MISC_FILES
MISC_FILES
usually includes
the names of any subdirectories, along with tclIndex
and
any README
files that might be present.
make checkjunk
uses this variable.
DIRS
REALCLEAN_STUFF
make realclean
TYDOC_DESC
all
and install
rule:
all install: sources $(MISC_SRCS) tclIndex
$TYCHO/mk/no-compile.mk
$TYCHO/mk/no-compile.mk
These rules are useful when extending Tycho.
make sources
make sources
will update any files that have changed
in the master tree, but not in the local tree.
make all
make all
does things like create
tclIndex
files, and fix the permissions on scripts.
make all
also runs the make sources
rules.
make install
make install
usually just does whatever
make all
does. In Tycho, there is no need to run
make install
after running make all
.
make install
is present only for compatibility with other
packages, such as Ptolemy.
make clean
*.o core *~ *.bak ,*
make realclean
make clean
does, and it
removed any files named in the REALCLEAN_STUFF
makefile
variable. For example, in $TYCHO/kernel/gui/makefile
REALCLEAN_STUFF
is set so that tclIndex
is
removed when make realclean
is run
make extraclean
make realclean
does. Note that to retrieve the sources
automatically after running make extraclean
you need to
have the sources checked into RCS or SCCS. The publically available
distribution of Tycho does not include SCCS files, so running this
command is not recommended. make extraclean sources
is a
good way to change all the links created by tylndir
into
actual files.
make sccsinfo
make sccsinfo
traverses
the distribution and runs sccs info
in each directory.
sccs info
prints out the names of any files that are checked out.
make checkjunk
make checkjunk
rule traverses the distribution
and prints the names of any files that are not mentioned in the
makefile. This rule is useful for cleaning up the distribution
before release.


You can find all of Apache SystemDS’s code on Github, including example algorithms and notebooks. Fork it, try it out, and contribute to SystemDS yourself.
Go To GithubKeep track of the daily updates with SystemDS. Create your own Jira to report issues and bugs you come across, acting as part of the SystemDS community.
Go To JiraView SystemDS's roadmap for a comprehensive blueprint of future plans. You can also browse through a list of completed features from past versions.
Go to RoadmapFor SystemDS updates and news, subscribe to our mailing lists. As SystemDS grows, so will our community. To unsubscribe, change the recipient from "subscribe" to "unsubscribe."


Detailed Description
The following files must be built with any user project that uses this module:
- LUFA/Drivers/USB/Class/Device/Audio.c (Makefile source module name: LUFA_SRC_USBCLASS)
Device Mode USB Class driver framework interface, for the Audio USB Class driver.
Function Documentation
Configures the endpoints of a given Audio interface, ready for use. This should be linked to the library EVENT_USB_Device_ConfigurationChanged() event so that the endpoints are configured when the configuration containing the given Audio interface is selected.
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
- Returns:
- Boolean true if the endpoints were successfully configured, false otherwise.
Determines if the given audio interface is ready to accept the next sample to be written to it, and selects the streaming IN endpoint ready for writing.
- Precondition:
- This function must only be called when the Device state machine is in the DEVICE_STATE_Configured state or the call will fail.
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
- Returns:
- Boolean true if the given Audio interface is ready to accept the next sample, false otherwise.
Determines if the given audio interface is ready for a sample to be read from it, and selects the streaming OUT endpoint ready for reading.
- Precondition:
- This function must only be called when the Device state machine is in the DEVICE_STATE_Configured state or the call will fail.
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
- Returns:
- Boolean true if the given Audio interface has a sample to be read, false otherwise.
Processes incoming control requests from the host, that are directed to the given Audio class interface. This should be linked to the library EVENT_USB_Device_UnhandledControlRequest() event.
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
Reads the next 16-bit audio sample from the current audio interface.
- Precondition:
- This should be preceded immediately by a call to the Audio_Device_IsSampleReceived() function to ensure that the correct endpoint is selected and ready for data.
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
- Returns:
- Signed 16-bit audio sample from the audio interface.
Reads the next 24-bit audio sample from the current audio interface.
- Precondition:
- This should be preceded immediately by a call to the Audio_Device_IsSampleReceived() function to ensure that the correct endpoint is selected and ready for data.
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
- Returns:
- Signed 24-bit audio sample from the audio interface.
Reads the next 8-bit audio sample from the current audio interface.
- Precondition:
- This should be preceded immediately by a call to the Audio_Device_IsSampleReceived() function to ensure ensure the correct endpoint is selected and ready for data.
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
- Returns:
- Signed 8-bit audio sample from the audio interface.
General management task for a given Audio class interface, required for the correct operation of the interface. This should be called frequently in the main program loop, before the master USB management task USB_USBTask().
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
Writes the next 16-bit audio sample to the current audio interface.
- Precondition:
- This should be preceded immediately by a call to the Audio_Device_IsReadyForNextSample() function to ensure that the correct endpoint is selected and ready for data.
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
| [in] | Sample | Signed 16-bit audio sample. |
Writes the next 24-bit audio sample to the current audio interface.
- Precondition:
- This should be preceded immediately by a call to the Audio_Device_IsReadyForNextSample() function to ensure that the correct endpoint is selected and ready for data.
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
| [in] | Sample | Signed 24-bit audio sample. |
Writes the next 8-bit audio sample to the current audio interface.
- Precondition:
- This should be preceded immediately by a call to the Audio_Device_IsReadyForNextSample() function to ensure that the correct endpoint is selected and ready for data.
- Parameters:
-
| [in,out] | AudioInterfaceInfo | Pointer to a structure containing an Audio Class configuration and state. |
| [in] | Sample | Signed 8-bit audio sample. |


We are a Helsinki based community of citizens acting tangibly to enhance solidarity and cosmopolitanism in our town through creativity, culture, education and collectiveness. Our main focus is to promote, through concrete actions, the solidarity and creative collaboration among refugees, migrants and locals as one whole family of Helsinki citizens.
In collaboration with Arkki, School of Architecture for children and youth, located in the Cable Factory, we organize art workshops for children from different backgrounds: refugees, migrants and locals. It’s all about making art and having fun together. Also, together with Helsinki-based street artists, we organize street art and culture workshops for refugee, migrant and local youth.
In collaboration with the bouldering center Boulderkeskus and the climbing center Kiipeily Areena, we organize bouldering and climbing sessions for refugee, migrant and local children and youth, all climbing together on the same walls.
In collaboration with Puuguru we organize wood workshops for refugees, migrants and locals, all learning and making wood work together.
In collaboration with the Helsinki based theater, Teatteri Metamorfoosi, we organize theater workshops. Refugees, migrants and locals finding new ways to express feelings and making theater all together.
In collaboration with the Cultural Center Caisa and Kassandra choir we organize folksong, choir and dance workshops welcoming refugees, migrants singing and dancing together with the locals.
In collaboration with Lapinlahden Lähde, we organize sessions such as yoga, pilates and zumba for refugee, migrant and local women. It’s about training together and creating friendship among the new and old citizens of Helsinki.
In collaboration with Circus Helsinki and Lapinlahden Lähde we organize circus workshops where refugees, migrants and locals are performing art of circus together.
Together with Helsinki based skateboarders we organize skateboarding workshops with refugee, migrant and local youth.
In collaboration with Helsinki based dance teacher we organize workshops of modern and Arabic dance making refugees, local and migrants moving their hips together.
In collaboration with our own collective of cosmopolitan music artists, refugees, migrants and locals, we organize music workshops styles varying from digital music to hip-hop and all over the modern landscape of music going on from the artist of Helsinki.
We organize gym sessions for refugees and migrants with the help of locals at the Helsinki City provided sport facilities.
In collaboration with the Cultural Center Caisa and the local cafes we organize cosmopolitan poetry workshops with poets and hip hop actors.
We organize painting workshops with different themes in collaboration with Helsinki based artist.
In collaboration with our partners we organize the maximum of art and cultural collaborations and productions promoting cosmopolitanism and solidarity. Main projects work in progress:
We manage a network of solidarity commitment as:


{{extend 'layout.html'}}
We are considering the need to support a multi-round elimination style question which would operate in a similar manner to a knockout competition with the winners of each round going forward to the next round until a final winner is identified.
Examples of the sort of situation this might be useful would be in judging submissions perhaps for drafts of a proposed strategy for the planet or judging the results of a competition. It would be relatively simple to setup such a scheme - however there are some decisions to be made on how best to operate this.
In particular it seems such questions could not be left open for challenge for a long period as the winner of each round would go forward to the next round and it becomes very messy to unpick this if a challenge is successful. Simplest solution to this appears to be no challenge - though potentially the option of a short challenge period after each question is resolved before the next round starts might be acceptable.
It may also be necessary to have some sort of time based cut-off and potentially questions not resolved at that point would need to take what appears to be the best answer albeit 3 people have not agreed on the same answer at any level.
There is also a potential requirement to put some sort of limit on the number of options otherwise system may get rather clogged with the same question and lots of answers. The current conclusion of this is that this feature will not be developed until we have more feedback on the standard structure and setup.
{{block right_sidebar}} {{include 'sidebar.html'}} {{end}}


--- date: 2012-12-29T00:00:00Z published: true title: A little Chef advice is needed - how to move forward. url: /2012/12/29/a-little-chef-advice-is-needed-how-to-move-forward-opschef/ ---
Chef workflow question...
Looking for a little advice here on how to move forward with some Chef built infrastructure.
I started going through my chef repo this Christmas - and some ugly little platform version hacks started appearing - so I got to thinking about how better to structure things - and here I am.
We have about 20 Rackspace Cloud Ubuntu 10.0.4 boxes running various parts of nonfiction's web infrastructure - they're working great and are current with all patches, etc. I'm not likely to "dist-upgrade" them - but they're going to be alive for a few years at least.
I built them with my first Chef recipes and am now wanting to:
These boxes are built and all installed packages and software are managed with Chef - but much of the data on them isn't managed in Chef - clients upload their own files, etc. Between DNS that I don't manage 100% and that customer data, it's not super simple to just "redeploy" and rebuild everything.
So my plan is to:
What do other people do when they're updating their infrastructure like this? New chef repo? Keep it all in one? Any tips? I've been looking through all sorts of links online and haven't seen much of that sort of discussion.
Reading through this article it looks like he converted his chef-repo and just kept moving - that sort of scares me a little bit - but I guess is an option.
Any tips / links would be appreciated.


What is JavaScript ?
Javascript is one of the most popular programing languages, it is known as the language of the Web , it makes the web pages alive. HTML,CSS and JavaScript together make what we called the Front-End. If we make a comparison between the human body and the Web page, HTML will be like the skeleton (bones) , CSS will be like the skin and JavaScript will be like the muscles which, move everything and give the body the functionality. There are at least three great things make JavaScript unique , first full integration with HTML/CSS. second, simple things are done simply and third, support by all major browsers and enabled by default.
What is the deference between JavaScript and ECMAScript ?
ECMAScript :
The full form of ECMA is European Computer Manufacturer's Association. ECMAScript is
a Standard for scripting languages such as JavaScript . It is a trademark
scripting language specification. JavaScript is a language based on ECMAScript. JavaScript is considered as
one of the most popular implementations of ECMAScript.
JavaScript :
JavaScript is an implementation of the ECMAScript standards.
What is the deference between JavaScript and Java ?
JavaScript :
JavaScript is a lightweight programming language(“scripting language”) used
to make web pages interactive. It can insert dynamic text into HTML. JavaScript
is also known as browser’s language. JavaScript (JS) is not similar or related
to Java. Both languages have a C like syntax and are widely used in
client-side Web applications, but there are few similarities only between them.
Java :
Java is an object-oriented programming language and have virtual machine platform that
allows you to create compiled programs that run on nearly every platform.
To sum up , we can consider, Java like the word "Ham" and JavaScript as the word "Hamster", they may have
similar names , but they are very different.
What do you need to start with JavaScript ?
All you need is a good text editor like VSC or any other text editor, JavaScript code can be executed in almost any browser. Nowadays JavaScript code can also run in Node, which is an interpreter or running environment for JavaScript. Node holds a lot of excesses require libraries which can easily be accessed from JavaScript for better use.
JavaScript is easy to learn , here how you can start your first JavaScript file "Hello World!". Try it your self! you can type your code directly in the editor , press format to expand the editor and test it using JS Tutor.


Umair Yaquoob
BSc Web Development
Introduction
This website is going to show my Photoshop skills that I have applied weekly through my Art Movement images which are Impressionism, Cubism, Futurism, Surrealism and Pop Art. Also I have chosen to do an essay on my chosen art movement which is Pop Art. Finally my website will feature two posters that I have designed in regards to my chosen Art Movement.


Cool stuff right away
Animated Geometric Line Art
Animated Gradient Background
Animated SVG letter - A
Animated SVG letter - N
Animated SVG letter - P
Animated SVG letter - V
Avengers Logo Animation
Box Shadow and Animation
Cool Hover Effect
Cool Text Border Effect
Generate Random Gradient Color
Glowing Button
Glowing Name With Color Toggle
Hello With Cool Css
Menu List
Mobile UI
Password Hide and Show Toggler
Perspective Example
Pokeball
Selection With Text Stroke and Font Transparency
Smooth Content Scrolling
Typing Effect
Year Completion


Web Interface
Gene Annotation
This tool links genes to further brain-specific annotations. You can then manage your list, and edit or remove genes.
All data is saved using HTML5's sessionStorage, so none of your data touches our server.
When you close your browser, the data disappears.
| ID | Gene | Annotations |
|---|


!Profit!
Direct profit from vulnerabilities
Vlatko Kosturjak (@k0st), BalCCon Novi Sad, 16th of September
Agenda
- Cryptocurrency ecosystem vulnerabilities and exploitation
- Introduction to Lisk based crypto (Ark, Rise, ...)
- Delegate system
- Delegate economic system
- Vulnerability, exploitation and profit
- Summary
- Questions and answers
5 minutes
Cryptocurrencies anyone? DPoS?
ARK anyone?
- http://www.ark.io
- yet another altcoin?
- 8 second blocktime
- DPoS consensus models
- Cloneable blockhains
- Smart bridge
Delegate system
- Delegates
- DPoS core
- Confirm transactions
- Earn coins (ARKs, RISE...)
- Walet addresses vote for them
- Some of them share profit with voters
- Share profit with voters
- Payouts on regular basis
- Basically, like stakings
Delegate Economic Model
|
Vote/Unvote |
New address |
|
Vote: 1 ARK |
Create new address: 0 ARK |
|
Unvote: 1 ARK |
Transaction fee: 0.1 ARK |
|
|
Vote: 1 ARK |
| TOTAL |
2 ARK |
1.1 ARK |
Delegate Hopping Cost
| Vote/Unvote |
New address |
| 2 ARKs |
0.2 ARKs |
What if?
- I create address for each delegate
- Each address vote for different delegate
- Move money to address just when it's time for payout
- Problems
- How I can predict next payment?
Is it legal?
- Most common answer is
- I'm not lawyer
- It Depends...
- Basically
- With smart contracts, code is legal text
- If code allows, is it legal?
- In short
- Presenter is not responsible for your actions
- You jumped - you killed yourself!
Fixed?
- Some delegates fixed
- Not completely
- They are looking at vote/unvote
- Not for amount on address
- Fix #1
- Look for number of confirmations
- (by Dorian)
- Fix #2
- Payout to internal database for each forge
- (by Kost - me)
Summary
- Speeding up profits from delegate sharing model
- Not vulnerability in cryptocurrency
- Except economic model of voting/unvoting
- It is vulnerability in delegate payment sharing mechanism
- Legality
- Remember - it depends
- Not responsible for your actions!
Tool links
- Profit calculator
- Delegate predictor
- Scheduling transfers
Credits/Thanks to
- Ivica Ostojic
- Dorian Lacić
- You - thanks for listening!
Thanks on listening
?
Any questions?


| scr_dump(5) | File Formats Manual | scr_dump(5) |
The putwin and getwin functions do the work; while scr_dump and scr_restore conveniently save and restore the whole screen, i.e., stdscr.
0x8888 (octal “\210\210”)
0x88888888 (octal “\210\210\210\210”)
# # ncurses5 (and before) did not use a magic number, # making screen dumps "data". # # ncurses6 (2015) uses this format, ignoring byte-order 0 string \210\210\210\210ncurses ncurses6 screen image #
This is similar to Unix SystemV, but does not write a “magic number” to identify the file format.
X/Open's documentation for enhanced curses says only:
The getwin( ) function reads window-related data stored in the file by putwin( ). The function then creates and initializes a new window using that data.
The putwin( ) function writes all data associated with win into the stdio stream to which filep points, using an unspecified format. This information can be retrieved later using getwin( ).
In the mid-1990s when the X/Open Curses document was written, there were still systems using older, less capable curses libraries (aside from the BSD curses library which was not relevant to X/Open because it did not meet the criteria for base curses). The document explained the term “enhanced” as follows:
In the foregoing, emphasis was added to unspecified format and to XPG4 or to earlier XPG releases, for clarity.
The Solaris curses source has these definitions:
/* terminfo magic number */ #define MAGNUM 0432 /* curses screen dump magic number */ #define SVR2_DUMP_MAGIC_NUMBER 0433 #define SVR3_DUMP_MAGIC_NUMBER 0434
That is, the feature was likely introduced in SVr2 (1984), and improved in SVr3 (1987). The Solaris curses source has no magic number for SVr4 (1989). Other operating systems (AIX and HPUX) use a magic number which would correspond to this definition:
/* curses screen dump magic number */ #define SVR4_DUMP_MAGIC_NUMBER 0435
That octal number in bytes is 001, 035. Because most Unix vendors use big-endian hardware, the magic number is written with the high-order byte first, e.g.,
01 35
After the magic number, the WINDOW structure and line-data are written in binary format. While the magic number used by the Unix systems can be seen using od(1), none of the Unix systems documents the format used for screen-dumps.
The Unix systems do not use identical formats. While collecting information for for this manual page, the savescreen test-program produced dumps of different size (all on 64-bit hardware, on 40x80 screens):
“PDC\001”
Like ncurses5, NetBSD putwin does not identify its dumps with a useful magic number. It writes
#include <curses.h> int main(void) { putenv("LINES=10"); putenv("COLUMNS=20"); initscr(); start_color(); init_pair(1, COLOR_WHITE, COLOR_BLUE); init_pair(2, COLOR_RED, COLOR_BLACK); bkgd(COLOR_PAIR(1)); move(4, 5); attron(A_BOLD); addstr("Hello"); move(5, 5); attroff(A_BOLD); attrset(A_REVERSE | COLOR_PAIR(2)); addstr("World!"); refresh(); scr_dump("foo.out"); endwin(); return 0; }
When run using ncurses6, the output looks like this:
\210\210\210\210ncurses 6.0.20170415 _cury=5 _curx=11 _maxy=9 _maxx=19 _flags=14 _attrs=\{REVERSE|C2} flag=_idcok _delay=-1 _regbottom=9 _bkgrnd=\{NORMAL|C1}\s rows: 1:\{NORMAL|C1}\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s 2:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s 3:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s 4:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s 5:\s\s\s\s\s\{BOLD}Hello\{NORMAL}\s\s\s\s\s\s\s\s\s\s 6:\s\s\s\s\s\{REVERSE|C2}World!\{NORMAL|C1}\s\s\s\s\s\s\s\s\s 7:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s 8:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s 9:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s 10:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
The first four octal escapes are actually nonprinting characters, while the remainder of the file is printable text. You may notice:
Running the same program with Solaris xpg4 curses gives this dump:
MAX=10,20 BEG=0,0 SCROLL=0,10 VMIN=1 VTIME=0 FLAGS=0x1000 FG=0,0 BG=0,0, 0,0,0,1, 0,19,0,0, 1,0,0,1, 1,19,0,0, 2,0,0,1, 2,19,0,0, 3,0,0,1, 3,19,0,0, 4,0,0,1, 4,5,0x20,0,Hello 4,10,0,1, 4,19,0,0, 5,0,0,1, 5,5,0x4,2,World! 5,11,0,1, 5,19,0,0, 6,0,0,1, 6,19,0,0, 7,0,0,1, 7,19,0,0, 8,0,0,1, 8,19,0,0, 9,0,0,1, 9,19,0,0, CUR=11,5
Solaris getwin requires that all parameters are present, and in the same order. The xpg4 curses library does not know about the bce (back color erase) capability, and does not color the window background.
On the other hand, the SVr4 curses library does know about the background color. However, its screen dumps are in binary. Here is the corresponding dump (using “od -t x1”):
0000000 1c 01 c3 d6 f3 58 05 00 0b 00 0a 00 14 00 00 00 0000020 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 0000040 00 00 b8 1a 06 08 cc 1a 06 08 00 00 09 00 10 00 0000060 00 00 00 80 00 00 20 00 00 00 ff ff ff ff 00 00 0000100 ff ff ff ff 00 00 00 00 20 80 00 00 20 80 00 00 0000120 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00 * 0000620 20 80 00 00 20 80 00 00 20 80 00 00 48 80 00 04 0000640 65 80 00 04 6c 80 00 04 6c 80 00 04 6f 80 00 04 0000660 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00 * 0000740 20 80 00 00 20 80 00 00 20 80 00 00 57 00 81 00 0000760 6f 00 81 00 72 00 81 00 6c 00 81 00 64 00 81 00 0001000 21 00 81 00 20 80 00 00 20 80 00 00 20 80 00 00 0001020 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00 * 0001540 20 80 00 00 20 80 00 00 00 00 f6 d1 01 00 f6 d1 0001560 08 00 00 00 40 00 00 00 00 00 00 00 00 00 00 07 0001600 00 04 00 01 00 01 00 00 00 01 00 00 00 00 00 00 0001620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 * 0002371
Eric S. Raymond
screen dump feature in ncurses 1.9.2d (1995)


v2.7.3 (2016-06-02)
internal enhancements that plugins can benefit from:
- EventEmitter not correctly working with stopListeningTo
- normalizeEvent hook for manipulating event data
v2.7.2 (2016-05-20)
- fixed desktops/laptops with touch support not accepting mouse events for
dayClick/dragging/resizing (#3154, #3149)
- fixed dayClick incorrectly triggered on touch scroll (#3152)
- fixed touch event dragging wrongfully beginning upon scrolling document (#3160)
- fixed minified JS still contained comments
- UI change: mouse users must hover over an event to reveal its resizers
v2.7.1 (2016-05-01)
- dayClick not firing on touch devices (#3138)
- icons for prev/next not working in MS Edge (#2852)
- fix bad languages troubles with firewalls (#3133, #3132)
- update all dev dependencies (#3145, #3010, #2901, #251)
- git-ignore npm debug logs (#3011)
- misc automated test updates (#3139, #3147)
- Google Calendar htmlLink not always defined (#2844)
v2.7.0 (2016-04-23)
touch device support (#994):
- smoother scrolling
- interactions initiated via "long press":
- event drag-n-drop
- event resize
- time-range selecting
- `longPressDelay`
v2.6.1 (2016-02-17)
- make
nowIndicator
positioning refresh on window resize
v2.6.0 (2016-01-07)
- current time indicator (#414)
- bundled with most recent version of moment (2.11.0)
- UMD wrapper around lang files now handles commonjs (#2918)
- fix bug where external event dragging would not respect eventOverlap
- fix bug where external event dropping would not render the whole-day highlight
v2.5.0 (2015-11-30)
- internal timezone refactor. fixes #2396, #2900, #2945, #2711
- internal "grid" system refactor. improved API for plugins.
v2.4.0 (2015-08-16)
- add new buttons to the header via
customButtons
(225)
- control stacking order of events via
eventOrder
(364)
- control frequency of slot text via
slotLabelInterval
(946)
displayEventTime
(1904)
on
and off
methods (1910)
- renamed
axisFormat
to slotLabelFormat
v2.3.2 (2015-06-14)
- minor code adjustment in preparation for plugins
v2.3.1 (2015-03-08)
- Fix week view column title for en-gb (PR220)
- Publish to NPM (2447)
- Detangle bower from npm package (PR179)
v2.3.0 (2015-02-21)
- internal refactoring in preparation for other views
- businessHours now renders on whole-days in addition to timed areas
- events in "more" popover not sorted by time (2385)
- avoid using moment's deprecated zone method (2443)
- destroying the calendar sometimes causes all window resize handlers to be unbound (2432)
- multiple calendars on one page, can't accept external elements after navigating (2433)
- accept external events from jqui sortable (1698)
- external jqui drop processed before reverting (1661)
- IE8 fix: month view renders incorrectly (2428)
- IE8 fix: eventLimit:true wouldn't activate "more" link (2330)
- IE8 fix: dragging an event with an href
- IE8 fix: invisible element while dragging agenda view events
- IE8 fix: erratic external element dragging
v2.2.7 (2015-02-10)
- view.title wasn't defined in viewRender callback (2407)
- FullCalendar versions >= 2.2.5 brokenness with Moment versions <= 2.8.3 (2417)
- Support Bokmal Norwegian language specifically (2427)
v2.2.6 (2015-01-11)
- Compatibility with Moment v2.9. Was breaking GCal plugin (2408)
- View object's
title
property mistakenly omitted (2407)
- Single-day views with hiddens days could cause prev/next misbehavior (2406)
- Don't let the current date ever be a hidden day (solves 2395)
- Hebrew locale (2157)
v2.2.5 (2014-12-30)
buttonText
specified for custom views via the views
option
- bugfix: wrong default value, couldn't override default
- feature: default value taken from locale
v2.2.4 (2014-12-29)
- Arbitrary durations for basic/agenda views with the
views
option (692)
- Specify view-specific options using the
views
option. fixes 2283
- Deprecate view-option-hashes
- Formalize and expose View API (1055)
- updateEvent method, more intuitive behavior. fixes 2194
v2.2.3 (2014-11-26)
- removeEventSource with Google Calendar object source, would not remove (2368)
- Events with invalid end dates are still accepted and rendered (2350, 2237, 2296)
- Bug when rendering business hours and navigating away from original view (2365)
- Links to Google Calendar events will use current timezone (2122)
- Google Calendar plugin works with timezone names that have spaces
- Google Calendar plugin accepts person email addresses as calendar IDs
- Internally use numeric sort instead of alphanumeric sort (2370)
v2.2.2 (2014-11-19)
- Fixes to Google Calendar API V3 code
- wouldn't recognize a lone-string Google Calendar ID if periods before the @ symbol
- removeEventSource wouldn't work when given a Google Calendar ID
v2.2.1 (2014-11-19)
- Migrate Google Calendar plugin to use V3 of the API (1526)
v2.2.0 (2014-11-14)
- Background events. Event object's
rendering
property (144, 1286)
businessHours
option (144)
- Controlling where events can be dragged/resized and selections can go (396, 1286, 2253)
eventOverlap
, selectOverlap
, and similar
eventConstraint
, selectConstraint
, and similar
- Improvements to dragging and dropping external events (2004)
- Associating with real event data. used with
eventReceive
- Associating a
duration
- Performance boost for moment creation
- Be aware, FullCalendar-specific methods now attached directly to global moment.fn
- Helps with issue 2259
- Reintroduced forgotten
dropAccept
option (2312)
v2.1.1 (2014-08-29)
- removeEventSource not working with array (2203)
- mouseout not triggered after mouseover+updateEvent (829)
- agenda event's render with no href, not clickable (2263)
v2.1.0 (2014-08-25)
Large code refactor with better OOP, better code reuse, and more comments.
No more reliance on jQuery UI for event dragging, resizing, or anything else.
Significant changes to HTML/CSS skeleton:
- Leverages tables for liquid rendering of days and events. No costly manual repositioning (809)
- Backwards-incompatibilities:
- Many classNames have changed. Custom CSS will likely need to be adjusted.
- IE7 definitely not supported anymore
- In
eventRender
callback, element
will not be attached to DOM yet
- Events are styled to be one line by default (1992). Can be undone through custom CSS,
but not recommended (might get gaps like this in certain situations).
A "more..." link when there are too many events on a day (304). Works with month and basic views
as well as the all-day section of the agenda views. New options:
eventLimit
. a number or true
eventLimitClick
. the "popover
" value will reveal all events in a raised panel (the default)
eventLimitText
dayPopoverFormat
Changes related to height and scrollbars:
aspectRatio
/height
/contentHeight
values will be honored no matter what
- If too many events causing too much vertical space, scrollbars will be used (728).
This is default behavior for month view (backwards-incompatibility)
- If too few slots in agenda view, view will stretch to be the correct height (2196)
'auto'
value for height
/contentHeight
options. If content is too tall, the view will
vertically stretch to accomodate and no scrollbars will be used (521).
- Tall weeks in month view will borrow height from other weeks (243)
- Automatically scroll the view then dragging/resizing an event (1025, 2078)
- New
fixedWeekCount
option to determines the number of weeks in month view
- Supersedes
weekMode
(deprecated). Instead, use a combination of fixedWeekCount
and
one of the height options, possibly with an 'auto'
value
Much nicer, glitch-free rendering of calendar for printers (35). Things you might not expect:
- Buttons will become hidden
- Agenda views display a flat list of events where the time slots would be
Other issues resolved along the way:
- Space on right side of agenda events configurable through CSS (204)
- Problem with window resize (259)
- Events sorting stays consistent across weeks (510)
- Agenda's columns misaligned on wide screens (511)
- Run
selectHelper
through eventRender
callbacks (629)
- Keyboard access, tabbing (637)
- Run resizing events through
eventRender
(714)
- Resize an event to a different day in agenda views (736)
- Allow selection across days in agenda views (778)
- Mouseenter delegated event not working on event elements (936)
- Agenda event dragging, snapping to different columns is erratic (1101)
- Android browser cuts off Day view at 8 PM with no scroll bar (1203)
- Don't fire
eventMouseover
/eventMouseout
while dragging/resizing (1297)
- Customize the resize handle text ("=") (1326)
- If agenda event is too short, don't overwrite
.fc-event-time
(1700)
- Zooming calendar causes events to misalign (1996)
- Event destroy callback on event removal (2017)
- Agenda views, when RTL, should have axis on right (2132)
- Make header buttons more accessibile (2151)
- daySelectionMousedown should interpret OSX ctrl+click as a right mouse click (2169)
- Best way to display time text on multi-day events with times (2172)
- Eliminate table use for header layout (2186)
- Event delegation used for event-related callbacks (like
eventClick
). Speedier.
v2.0.3 (2014-08-15)
- moment-2.8.1 compatibility (2221)
- relative path in bower.json (PR 117)
- upgraded jquery-ui and misc dev dependencies
v2.0.2 (2014-06-24)
- bug with persisting addEventSource calls (2191)
- bug with persisting removeEvents calls with an array source (2187)
- bug with removeEvents method when called with 0 removes all events (2082)
v2.0.1 (2014-06-15)
delta
parameters reintroduced in eventDrop
and eventResize
handlers (2156)
- Note: this changes the argument order for
revertFunc
- wrongfully triggering a windowResize when resizing an agenda view event (1116)
this
values in event drag-n-drop/resize handlers consistently the DOM node (1177)
displayEventEnd
- v2 workaround to force display of an end time (2090)
- don't modify passed-in eventSource items (954)
- destroy method now removes fc-ltr class (2033)
- weeks of last/next month still visible when weekends are hidden (2095)
- fixed memory leak when destroying calendar with selectable/droppable (2137)
- Icelandic language (2180)
- Bahasa Indonesia language (PR 172)
v2.0.0 (2014-06-01)
Internationalization support, timezone support, and MomentJS integration. Extensive changes, many
of which are backwards incompatible.
Full list of changes | Affected Issues
An automated testing framework has been set up (Karma + Jasmine) and tests have been written
which cover about half of FullCalendar's functionality. Special thanks to @incre-d, @vidbina, and
@sirrocco for the help.
In addition, the main development repo has been repurposed to also include the built distributable
JS/CSS for the project and will serve as the new Bower endpoint.
v1.6.4 (2013-09-01)
- better algorithm for positioning timed agenda events (1115)
slotEventOverlap
option to tweak timed agenda event overlapping (218)
- selection bug when slot height is customized (1035)
- supply view argument in
loading
callback (1018)
- fixed week number not displaying in agenda views (1951)
- fixed fullCalendar not initializing with no options (1356)
- NPM's
package.json
, no more warnings or errors (1762)
- building the bower component should output
bower.json
instead of component.json
(PR 125)
- use bower internally for fetching new versions of jQuery and jQuery UI
v1.6.3 (2013-08-10)
viewRender
callback (PR 15)
viewDestroy
callback (PR 15)
eventDestroy
callback (PR 111)
handleWindowResize
option (PR 54)
eventStartEditable
/startEditable
options (PR 49)
eventDurationEditable
/durationEditable
options (PR 49)
- specify function for
$.ajax
data
parameter for JSON event sources (PR 59)
- fixed bug with agenda event dropping in wrong column (PR 55)
- easier event element z-index customization (PR 58)
- classNames on past/future days (PR 88)
- allow
null
/undefined
event titles (PR 84)
- small optimize for agenda event rendering (PR 56)
- deprecated:
viewDisplay
disableDragging
disableResizing
- bundled with latest jQuery (1.10.2) and jQuery UI (1.10.3)
v1.6.2 (2013-07-18)
hiddenDays
option (686)
- bugfix: when
eventRender
returns false
, incorrect stacking of events (762)
- bugfix: couldn't change
event.backgroundImage
when calling updateEvent
(thx @stephenharris)
v1.6.1 (2013-04-14)
- fixed event inner content overflow bug (1783)
- fixed table header className bug 1772
- removed text-shadow on events (better for general use, thx @tkrotoff)
v1.6.0 (2013-03-18)
- visual facelift, with bootstrap-inspired buttons and colors
- simplified HTML/CSS for events and buttons
dayRender
, for modifying a day cell (191, thx @althaus)
- week numbers on side of calendar (295)
weekNumber
weekNumberCalculation
weekNumberTitle
W
formatting variable
- finer snapping granularity for agenda view events (495, thx @ms-doodle-com)
eventAfterAllRender
(753, thx @pdrakeweb)
eventDataTransform
(thx @joeyspo)
data-date
attributes on cells (thx @Jae)
- expose
$.fullCalendar.dateFormatters
- when clicking fast on buttons, prevent text selection
- bundled with latest jQuery (1.9.1) and jQuery UI (1.10.2)
- Grunt/Lumbar build system for internal development
- build for Bower package manager
- build for jQuery plugin site
v1.5.4 (2012-09-05)
- made compatible with jQuery 1.8.* (thx @archaeron)
- bundled with jQuery 1.8.1 and jQuery UI 1.8.23
v1.5.3 (2012-02-06)
- fixed dragging issue with jQuery UI 1.8.16 (1168)
- bundled with jQuery 1.7.1 and jQuery UI 1.8.17
v1.5.2 (2011-08-21)
- correctly process UTC "Z" ISO8601 date strings (750)
v1.5.1 (2011-04-09)
- more flexible ISO8601 date parsing (814)
- more flexible parsing of UNIX timestamps (826)
- FullCalendar now buildable from source on a Mac (795)
- FullCalendar QA'd in FF4 (883)
- upgraded to jQuery 1.5.2 (which supports IE9) and jQuery UI 1.8.11
v1.5 (2011-03-19)
- slicker default styling for buttons
- reworked a lot of the calendar's HTML and accompanying CSS (solves 327 and 395)
- more printer-friendly (fullcalendar-print.css)
- fullcalendar now inherits styles from jquery-ui themes differently.
styles for buttons are distinct from styles for calendar cells.
(solves 299)
- can now color events through FullCalendar options and Event-Object properties (117)
THIS IS NOW THE PREFERRED METHOD OF COLORING EVENTS (as opposed to using className and CSS)
- FullCalendar options:
- eventColor (changes both background and border)
- eventBackgroundColor
- eventBorderColor
- eventTextColor
- Event-Object options:
- color (changes both background and border)
- backgroundColor
- borderColor
- textColor
- can now specify an event source as an object with a
url
property (json feed) or
an events
property (function or array) with additional properties that will
be applied to the entire event source:
- color (changes both background and border)
- backgroudColor
- borderColor
- textColor
- className
- editable
- allDayDefault
- ignoreTimezone
- startParam (for a feed)
- endParam (for a feed)
- ANY OF THE JQUERY $.ajax OPTIONS
allows for easily changing from GET to POST and sending additional parameters (386)
allows for easily attaching ajax handlers such as
error
(754)
allows for turning caching on (355)
- Google Calendar feeds are now specified differently:
- specify a simple string of your feed's URL
- specify an object with a
url
property of your feed's URL.
you can include any of the new Event-Source options in this object.
- the old
$.fullCalendar.gcalFeed
method still works
- no more IE7 SSL popup (504)
- remove
cacheParam
- use json event source cache
option instead
- latest jquery/jquery-ui
v1.4.11 (2011-02-22)
- fixed rerenderEvents bug (790)
- fixed bug with faulty dragging of events from all-day slot in agenda views
- bundled with jquery 1.5 and jquery-ui 1.8.9
v1.4.10 (2011-01-02)
- fixed bug with resizing event to different week in 5-day month view (740)
- fixed bug with events not sticking after a removeEvents call (757)
- fixed bug with underlying parseTime method, and other uses of parseInt (688)
v1.4.9 (2010-11-16)
- new algorithm for vertically stacking events (111)
- resizing an event to a different week (306)
- bug: some events not rendered with consecutive calls to addEventSource (679)
v1.4.8 (2010-10-16)
- ignoreTimezone option (set to
false
to process UTC offsets in ISO8601 dates)
- bugfixes
- event refetching not being called under certain conditions (417, 554)
- event refetching being called multiple times under certain conditions (586, 616)
- selection cannot be triggered by right mouse button (558)
- agenda view left axis sized incorrectly (465)
- IE js error when calendar is too narrow (517)
- agenda view looks strange when no scrollbars (235)
- improved parsing of ISO8601 dates with UTC offsets
- $.fullCalendar.version
- an internal refactor of the code, for easier future development and modularity
v1.4.7 (2010-07-05)
- "dropping" external objects onto the calendar
- droppable (boolean, to turn on/off)
- dropAccept (to filter which events the calendar will accept)
- drop (trigger)
- selectable options can now be specified with a View Option Hash
- bugfixes
- dragged & reverted events having wrong time text (406)
- bug rendering events that have an endtime with seconds, but no hours/minutes (477)
- gotoDate date overflow bug (429)
- wrong date reported when clicking on edge of last column in agenda views 412
- support newlines in event titles
- select/unselect callbacks now passes native js event
v1.4.6 (2010-05-31)
- "selecting" days or timeslots
- options: selectable, selectHelper, unselectAuto, unselectCancel
- callbacks: select, unselect
- methods: select, unselect
- when dragging an event, the highlighting reflects the duration of the event
- code compressing by Google Closure Compiler
- bundled with jQuery 1.4.2 and jQuery UI 1.8.1
v1.4.5 (2010-02-21)
- lazyFetching option, which can force the calendar to fetch events on every view/date change
- scroll state of agenda views are preserved when switching back to view
- bugfixes
- calling methods on an uninitialized fullcalendar throws error
- IE6/7 bug where an entire view becomes invisible (320)
- error when rendering a hidden calendar (in jquery ui tabs for example) in IE (340)
- interconnected bugs related to calendar resizing and scrollbars
- when switching views or clicking prev/next, calendar would "blink" (333)
- liquid-width calendar's events shifted (depending on initial height of browser) (341)
- more robust underlying algorithm for calendar resizing
v1.4.4 (2010-02-03)
- optimized event rendering in all views (events render in 1/10 the time)
- gotoDate() does not force the calendar to unnecessarily rerender
- render() method now correctly readjusts height
v1.4.3 (2009-12-22)
- added destroy method
- Google Calendar event pages respect currentTimezone
- caching now handled by jQuery's ajax
- protection from setting aspectRatio to zero
- bugfixes
- parseISO8601 and DST caused certain events to display day before
- button positioning problem in IE6
- ajax event source removed after recently being added, events still displayed
- event not displayed when end is an empty string
- dynamically setting calendar height when no events have been fetched, throws error
v1.4.2 (2009-12-02)
- eventAfterRender trigger
- getDate & getView methods
- height & contentHeight options (explicitly sets the pixel height)
- minTime & maxTime options (restricts shown hours in agenda view)
- getters [for all options] and setters [for height, contentHeight, and aspectRatio ONLY! stay tuned..]
- render method now readjusts calendar's size
- bugfixes
- lightbox scripts that use iframes (like fancybox)
- day-of-week classNames were off when firstDay=1
- guaranteed space on right side of agenda events (even when stacked)
- accepts ISO8601 dates with a space (instead of 'T')
v1.4.1 (2009-10-31)
- can exclude weekends with new 'weekends' option
- gcal feed 'currentTimezone' option
- bugfixes
- year/month/date option sometimes wouldn't set correctly (depending on current date)
- daylight savings issue caused agenda views to start at 1am (for BST users)
- cleanup of gcal.js code
v1.4 (2009-10-19)
- agendaWeek and agendaDay views
- added some options for agenda views:
- allDaySlot
- allDayText
- firstHour
- slotMinutes
- defaultEventMinutes
- axisFormat
- modified some existing options/triggers to work with agenda views:
- dragOpacity and timeFormat can now accept a "View Hash" (a new concept)
- dayClick now has an allDay parameter
- eventDrop now has an an allDay parameter
(this will affect those who use revertFunc, adjust parameter list)
- added 'prevYear' and 'nextYear' for buttons in header
- minor change for theme users, ui-state-hover not applied to active/inactive buttons
- added event-color-changing example in docs
- better defaults for right-to-left themed button icons
v1.3.2 (2009-10-13)
- Bugfixes (please upgrade from 1.3.1!)
- squashed potential infinite loop when addMonths and addDays
is called with an invalid date
- $.fullCalendar.parseDate() now correctly parses IETF format
- when switching views, the 'today' button sticks inactive, fixed
- gotoDate now can accept a single Date argument
- documentation for changes in 1.3.1 and 1.3.2 now on website
v1.3.1 (2009-09-30)
- Important Bugfixes (please upgrade from 1.3!)
- When current date was late in the month, for long months, and prev/next buttons
were clicked in month-view, some months would be skipped/repeated
- In certain time zones, daylight savings time would cause certain days
to be misnumbered in month-view
- Subtle change in way week interval is chosen when switching from month to basicWeek/basicDay view
- Added 'allDayDefault' option
- Added 'changeView' and 'render' methods
v1.3 (2009-09-21)
- different 'views': month/basicWeek/basicDay
- more flexible 'header' system for buttons
- themable by jQuery UI themes
- resizable events (require jQuery UI resizable plugin)
- rescoped & rewritten CSS, enhanced default look
- cleaner css & rendering techniques for right-to-left
- reworked options & API to support multiple views / be consistent with jQuery UI
- refactoring of entire codebase
- broken into different JS & CSS files, assembled w/ build scripts
- new test suite for new features, uses firebug-lite
- refactored docs
- Options
-
-
-
-
- monthNames (use instead of $.fullCalendar.monthNames)
- monthNamesShort (use instead of $.fullCalendar.monthAbbrevs)
- dayNames (use instead of $.fullCalendar.dayNames)
- dayNamesShort (use instead of $.fullCalendar.dayAbbrevs)
-
-
-
- x draggable -> editable/disableDragging
- x fixedWeeks -> weekMode
- x abbrevDayHeadings -> columnFormat
- x buttons/title -> header
- x eventDragOpacity -> dragOpacity
- x eventRevertDuration -> dragRevertDuration
- x weekStart -> firstDay
- x rightToLeft -> isRTL
- x showTime (use 'allDay' CalEvent property instead)
- Triggered Actions
-
-
-
- x monthDisplay -> viewDisplay
- x resize -> windowResize
- 'eventDrop' params changed, can revert if ajax cuts out
- CalEvent Properties
- Methods:
-
- x prevMonth -> prev
- x nextMonth -> next
- x prevYear/nextYear -> moveDate
- x refresh -> rerenderEvents/refetchEvents
- x removeEvent -> removeEvents
- x getEventsByID -> clientEvents
- Utilities:
- 'formatDate' format string completely changed (inspired by jQuery UI datepicker + datejs)
- 'formatDates' added to support date-ranges
- Google Calendar Options:
- Bugfixes
- gcal extension fetched 25 results max, now fetches all
v1.2.1 (2009-06-29)
- bugfixes
- allows and corrects invalid end dates for events
- doesn't throw an error in IE while rendering when display:none
- fixed 'loading' callback when used w/ multiple addEventSource calls
- gcal className can now be an array
v1.2 (2009-05-31)
- expanded API
- 'className' CalEvent attribute
- 'source' CalEvent attribute
- dynamically get/add/remove/update events of current month
- locale improvements: change month/day name text
- better date formatting ($.fullCalendar.formatDate)
- multiple 'event sources' allowed
- dynamically add/remove event sources
- options for prevYear and nextYear buttons
- docs have been reworked (include addition of Google Calendar docs)
- changed behavior of parseDate for number strings
(now interpets as unix timestamp, not MS times)
- bugfixes
- rightToLeft month start bug
- off-by-one errors with month formatting commands
- events from previous months sticking when clicking prev/next quickly
- Google Calendar API changed to work w/ multiple event sources
- can also provide 'className' and 'draggable' options
- date utilties moved from $ to $.fullCalendar
- more documentation in source code
- minified version of fullcalendar.js
- test suit (available from svn)
- top buttons now use
<button>
w/ an inner <span>
for better css cusomization
- thus CSS has changed. IF UPGRADING FROM PREVIOUS VERSIONS,
UPGRADE YOUR FULLCALENDAR.CSS FILE
v1.1 (2009-05-10)
- Added the following options:
- weekStart
- rightToLeft
- titleFormat
- timeFormat
- cacheParam
- resize
- Fixed rendering bugs
- Opera 9.25 (events placement & window resizing)
- IE6 (window resizing)
- Optimized window resizing for ALL browsers
- Events on same day now sorted by start time (but first by timespan)
- Correct z-index when dragging
- Dragging contained in overflow DIV for IE6
- Modified fullcalendar.css
- for right-to-left support
- for variable start-of-week
- for IE6 resizing bug
- for THEAD and TBODY (in 1.0, just used TBODY, restructured in 1.1)
- IF UPGRADING FROM FULLCALENDAR 1.0, YOU MUST UPGRADE FULLCALENDAR.CSS


Community
(current)
About M3
Documentation
404:
Page not found
Sorry, but the page you were trying to view does not exist.
Return to homepage


The Quick Start application, which is a part of the WUF repos at https://github.com/anvil-open-software, is intended to be used as a baseline, plain-vanilla application for quickly creating a new web-based application from scratch based on WUF.
The Quick Start application makes no assumptions about any other technology, including the backend. The application allows the developers to start with a bare-bones version of the application and then add any backend, datastore, authentication, or services needed.
To create a new application based on the Quick Start application:


Open Source License Change - April 2
When ManageIQ was open-sourced in June 2014, the project was carrying some bits that made it necessary to dual-license as GPL and Apache License. The intention was always to be single-licensed under the Apache license.
With the merging of PR 7481 and PR 7629, ManageIQ has transitioned to use the Apache License exclusively. We have chosen the Apache License for a number of reasons.
We could have chosen a number of other popular open source licenses, such as the GPL; however, the Apache License 2.0 currently enjoys widest acceptance among the businesses and organizations that we anticipate will be interested in using and contributing to ManageIQ. Part of that popularity is due to the minimal legal friction associated with the Apache License. We want there to be as few barriers to adopting ManageIQ as possible.
Permissive open source licenses are also popular in the Ruby and Ruby on Rails communities (although the MIT license is more commonly used than the Apache License). It is possible that some of the code in ManageIQ may be of general interest to these project ecosystems, and developers coming from those communities, who will tend to share such license preferences, are a potential source of contributors to ManageIQ.
The Apache License has certain advantages over the MIT license, especially from the perspective of corporate users and contributors, mainly because of its explicitness around grants of patent rights. We wish users of ManageIQ to have the assurances embodied in the patent license provision of the Apache License. We think the Apache License may be better suited than the MIT license to a project of ManageIQ’s scope.
When a large project emerges from a previously-proprietary codebase of a single company, as is true of ManageIQ, a permissive license like the Apache License helps build trust and confidence among potential users and contributors. In essence, it sends a strong signal that the original corporate author is not reserving any special legal privileges; all existing and potential community members enjoy equal status from a legal perspective.
Finally, the Apache License is the license of certain important open source projects having significant points of connection with ManageIQ, such as OpenStack. When we originally open-sourced ManageIQ and settled on the Apache License, we were particularly inspired by OpenStack’s license choice.
Special thanks to Richard Fontana for helping with the licensing pull requests and the content of this blog post.


We are a company here that wants to stop all the waste of food,
as there is tons of it every year.
in this local system we can easily add a donation to the system
to be readily accessible by others. as well as being easily able to
participate in the market as well.


--- layout: post title: Prerequisites for the AngularJS and Rails Tutorials tags: - angularjs-rails status: publish type: post published: true meta: _edit_last: '1' --- To play with these tutorials, you'll need Ruby and Rails installed. I use an Apple MacBook Pro and Linux (Ubuntu). If you use Windows, you'll probably need to use different instructions to install Ruby and Rails than those found here. But, if you run a Unix-y operating system like OSX or Linux, these instructions should get you started. Many operating systems come with Ruby pre-installed. This can be a good thing (it can save you time) and it can be a bad thing if the version is very outdated, and this is often the case with OS bundled versions of Ruby or Ruby gems. I highly recommend using RVM ("Ruby Version Manager") to install Ruby and to manage your dependent gems. RVM makes it possible to run and switch between multiple versions of Ruby on the same machine with ease (among other things). This means that even if your system Ruby is outdated, you can run the RVM version of Ruby easily and not have to go through the trouble of upgrading or troubleshooting it. You can find instructions on how to use RVM at the rvm.io website. There is a great community of people associated with the website if you need assistance. It can be as simple as running this this line from within a terminal window (but you should read the instructions first to make sure...):
curl -L https://get.rvm.io | bash -s stable --rubyOnce you have Ruby installed, you can use this command to install Rails:
gem install railsAfter that, you should have Ruby and Rails installed. If you are running a newer Apple computer, another handy utility is "pow" created by the inventors of the Ruby on Rails team. You can find more information on pow at the site pow.cx. Pow makes it super simple to load a Rails application, especially when you are developing applications which require a dedicated domain name, for example, Facebook login web apps. If you do use pow, you'll probably want to use the companion utility "powder". You can install this with this command.
gem install powderAfter you have installed pow and powder, enter into the directory for a rails application and run:
powder linkThis will make your application available under the name <application-name>.dev. For example, if your rails app is in the directory "mynewapp" then entering into this directory and running "powder link" will make your application available at http://mynewapp.dev. Remember to append "http://" to the front of the URL because some browsers (like Chrome) will interpret this as a search instead of a site request because of the uncommon ".dev" domain name ending. Now you will need to choose an editor, which is the tool you'll use for writing code. This is a very political decision, and many friendships have been lost arguing over editors. I am an ancient developer (way past 23) and use Emacs, but I would not recommend that to a beginner. If you are just starting out, TextMate is a great editor if you are running on an Apple. If you are running on Windows, NetBeans is a good one. There are many options, and each has its benefits and drawbacks. If you know any other developers, asking them is a good first step. And, be prepared for some strong opinions!


Here is a list of all class members with links to the classes they belong to:
- : -
- ::TableStruct_ortools_2fbop_2fbop_5fparameters_2eproto
: operations_research::bop::BopOptimizerMethod
, operations_research::bop::BopParameters
, operations_research::bop::BopSolverOptimizerSet
- ::TableStruct_ortools_2fconstraint_5fsolver_2fassignment_2eproto
: operations_research::AssignmentProto
, operations_research::IntervalVarAssignment
, operations_research::IntVarAssignment
, operations_research::SequenceVarAssignment
, operations_research::WorkerInfo
- ::TableStruct_ortools_2fconstraint_5fsolver_2fdemon_5fprofiler_2eproto
: operations_research::ConstraintRuns
, operations_research::DemonRuns
- ::TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fenums_2eproto
: operations_research::FirstSolutionStrategy
, operations_research::LocalSearchMetaheuristic
- ::TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto
: operations_research::RoutingModelParameters
, operations_research::RoutingSearchParameters
, operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators
- ::TableStruct_ortools_2fconstraint_5fsolver_2fsearch_5flimit_2eproto
: operations_research::RegularLimitParameters
- ::TableStruct_ortools_2fconstraint_5fsolver_2fsolver_5fparameters_2eproto
: operations_research::ConstraintSolverParameters
- ::TableStruct_ortools_2fglop_2fparameters_2eproto
: operations_research::glop::GlopParameters
- ::TableStruct_ortools_2fgraph_2fflow_5fproblem_2eproto
: operations_research::Arc
, operations_research::FlowModel
, operations_research::Node
- ::TableStruct_ortools_2flinear_5fsolver_2flinear_5fsolver_2eproto
: operations_research::MPConstraintProto
, operations_research::MPGeneralConstraintProto
, operations_research::MPIndicatorConstraint
, operations_research::MPModelProto
, operations_research::MPModelRequest
, operations_research::MPSolutionResponse
, operations_research::MPSolverCommonParameters
, operations_research::MPVariableProto
, operations_research::OptionalDouble
, operations_research::PartialVariableAssignment
- ::TableStruct_ortools_2fsat_2fboolean_5fproblem_2eproto
: operations_research::BooleanAssignment
, operations_research::LinearBooleanConstraint
, operations_research::LinearBooleanProblem
, operations_research::LinearObjective
- ::TableStruct_ortools_2fsat_2fcp_5fmodel_2eproto
: operations_research::sat::AllDifferentConstraintProto
, operations_research::sat::AutomatonConstraintProto
, operations_research::sat::BoolArgumentProto
, operations_research::sat::CircuitConstraintProto
, operations_research::sat::CircuitCoveringConstraintProto
, operations_research::sat::ConstraintProto
, operations_research::sat::CpModelProto
, operations_research::sat::CpObjectiveProto
, operations_research::sat::CpSolverResponse
, operations_research::sat::CumulativeConstraintProto
, operations_research::sat::DecisionStrategyProto
, operations_research::sat::DecisionStrategyProto_AffineTransformation
, operations_research::sat::ElementConstraintProto
, operations_research::sat::IntegerArgumentProto
, operations_research::sat::IntegerVariableProto
, operations_research::sat::IntervalConstraintProto
, operations_research::sat::InverseConstraintProto
, operations_research::sat::LinearConstraintProto
, operations_research::sat::NoOverlap2DConstraintProto
, operations_research::sat::NoOverlapConstraintProto
, operations_research::sat::PartialVariableAssignment
, operations_research::sat::ReservoirConstraintProto
, operations_research::sat::RoutesConstraintProto
, operations_research::sat::TableConstraintProto
- ::TableStruct_ortools_2fsat_2fsat_5fparameters_2eproto
: operations_research::sat::SatParameters


Vesa Karvonen
My special interest
Programming languages and techniques
``it is possible to make the structure of the program match the structure of the problem being solved.´´ — Burge
Some live coding magic!
this
setState
)merge
, scan
, ...)setState
) — lures you to dark side: local state


Step 1:
Enter your
CashApp ID
.
Step 2:
Choose your device.
Step 3:
Choose how much
FREE CashApp money
do you want.
-
+
Continue
Confirm


The purpose of LinuxChix is to support women in computing. At its narrowest, the scope of LinuxChix is to support women in Free and Open Source computing.
Methods of supporting women in computing include but are not limited to:
Technologies for doing this include but are not limited to:
Anything which does not support women in computing is outside the LinuxChix charter. This does not mean that these things are not worth doing, merely that they are not part of what LinuxChix is for.