User Guide for Release 2.11 Supply Capability Engine (SCE)
Tom Ervolina
Robin Lougee-Heimer
Dan Connors
April 7, 1998
The Supply Capability Engine (SCE) is a decision support tool for
supply/demand planning. SCE uses implosion technology to determine
the allocation of constrained material and capacity resources to
``best'' meet the demand. SCE extends traditional implosion
technology capability to include multisite-level planning, sourcing,
aggregation of parts, and features, both optional and selective. This
Guide describes how to use SCE to solve supply/demand planning
problems.
Traditional planning methodologies based on Material Requirements
Planning (MRP) systems ``explode'' the demands through the
Bill-of-Manufacturing (BOM) to determine the requirements, both in
quantity and in time, for material and capacity resources. (For more
details on MRP, [1] provides a good overview of the
subject.) MRP systems are uncapacitated and assume an unlimited
supply of material and capacity is available. The MRP methodology has
been widely adopted and successfully deployed throughout many
industries. However, MRP systems are unable to address many
fundamental questions:
- Given a constrained supply of material and capacity resources, what
demands can be met?
- What is the resulting feasible production plan?
- What are the requirements for the feasible production plan?
- For a demand that is not met on time, what is needed to make the
demand on time?
- How can substitute parts be effectively used?
These questions along with other shortcomings of the MRP methodolgy
has led to the development of capacitated planning tools for
constrained resource management and production planning. One such
tool, the Production Resource Manager (PRM) [2], incorporates
IBM's patented ``implosion'' technology for solving constrained
resource planning problems. The term implosion is used to suggest a
reverse procedure of the MRP explosion, namely, determining what
demands can be met given the constrained supply of materials and
capacities.
PRM is a set of software tools that allow developers to create
decision support applications on top of the implosion engine. The
basic inputs to the engine are standard MRP data on parts, demands,
supplies, BOM's and a description of the allocation objectives. PRM
can also incorporate substitute parts and Bill-of-Capacity (BOC) and
other advanced MRP data. PRM uses various techniques, including
mathematical programming and heuristic algorithms, for solving the
implosion problem. For certain objectives, the implosion problem can
be formulated as a mathematical optimization program. Given
appropriate cost data, PRM's optimization based implosion engine can
allocate constrained resources in order to maximize profit or revenue
or to minimize inventory. For other objectives, such as priority
based allocation, PRM's priority based implosion engine can be used.
The basic outputs of the PRM implosion engine are the production
volumes of all parts and the shipment volumes to the demands. PRM can
also report on the stock volumes, scrap volumes, and substitute part
usage volumes. When PRM is used in an optimization mode, it can
report the value of the objective function.
The Supply Capability Engine (SCE) is an application of the Production
Resource Manager. SCE extends the basic functionality of PRM to
handle a multiple site implosion. SCE also introduces additional
modeling capability to PRM to handle aggregation of parts and planning
for features and options. SCE is data driven and can handle problems
ranging from planning for a single line to planning for a global,
complex supply chain.
SCE was designed to meet the needs of the reengineered IBM
supply/demand planning process. SCE is being used to support the 20
Day Supply/Demand Calendar process. It is also being used at sites to
support the local execution of plans.
This Guide describes SCE modelling concepts, the data required to run
SCE and the outputs generated by SCE. In the next section, some of
the basic modeling concepts of SCE are discussed. In the following
section, a description of the input data is given. Then a description
of the output data is given. Finally, a description of how to run SCE
is provided. The detailed data model for SCE and a guide to the error
messages are provided in separate documents.
This section describes the SCE model, the data required to run SCE and
the outputs generated by SCE. SCE 2.11 is a stand-alone executable that
reads input data from flat files and writes results to flat files.
This guide will not attempt to address the issue of how to generate
the input flat files from the actual sources of data, nor will it
address the issue of how to take the output data and integrate it to
the execution systems. Those issues are all implementation dependent
and are left to the reader.
SCE is a flexible system allowing one to solve capacitated planning
problems for an environment as simple as a single manufacturing line to an
environment as complex as IBM's global enterprise supply chain. SCE's
flexibility comes from the fact that the problem SCE is solving is
defined by the input data and parameters. When preparing input data
for SCE, we must understand the scope of the problem. We must be able
to identify the boundaries of the ``enterprise.'' being modelled.
Within the scope of the problem being modeled, SCE clearly separates
the demand or marketing view of the problem from the manufacturing
view of the problem. In subsequent sections, more detail will be
provided about these two views.
As in many engineering modeling exercises, we must also determine the
level of detail at which we want to run the model. SCE can handle
very large problems, with tens of thousands of part numbers. This
comes at a cost --- the time it takes to solve the problem and the
size of the machine needed to solve the problem. (There are other
costs --- preparing the input data for such a large problem and
analyzing the output data for a large problem.) Judicious pruning of
complex BOMs can help reduce the size of the problem SCE faces.
SCE works with a time-bucketed model. Through the input data, we
specify the number of buckets or periods in the planning horizon. We
also provide a calendar file, which gives the starting date of each
bucket and the number of working days within each bucket. We
recommend that you use buckets of equal time duration. Certain data
for an SCE model is ``dated'', for example effectivity dates on BOM
records. For these fields we enter actual calendar dates as data.
Within the SCE program, there is internal logic which handles the
mapping between calendar dates and the appropriate period or bucket.
We can set the format of the calendar dates by specifying the
calendarFormat parameter in the SCE parameter's file. We allow for
three calendar formats:
| U | US Format, mm/dd/yyyy |
| E | European Format, dd/mm/yyyy |
| G | G General Format, yyyymmdd |
Data such as manufacturing cycle times, BOM offsets and interplant
shipment times are expressed in days. Logic within PRM handles the
appropriate rounding and mapping of this data into SCE's time-bucketed
view.
The scope of the problem being modeled sets the boundaries for what
SCE views as demand. Demands are requirements that are placed from
outside of the manufacturing network. SCE has adopted the following
convention. A demand consists of a planner part number, the
``geographic'' source of the demand, and a multiple period
volume statement. This convention allows the planners who are
responsible for preparing the demand statement to use their own part
naming convention for specifying the demand. The planner can be quite
flexible when specifying the geographic source of the demand. The
geographic source could be a specific customer, such as ``ACME'', a
geographic region, such as ``EMEA'' or ``Region 10'', or the worldwide
demand.
For example, if the scope of the SCE problem is a single IBM ECAT line
like Charlotte, demands could consist of the requirements coming from
upstream box ``customers'' like Poughkeepsie S390, Austin RS6000 and
Rochester AS400, requirements coming from Mechanicsburg, and possibly
requirements from OEM customers. Note that the OEM customers, and the
IBM customers Poughkeepsie, Austin, Rochester and Mechanicsburg are
all outside of the manufacturing network of the Charlotte ECAT line.
SCE was designed to support the reengineered IBM's enterprise
supply/demand planning process. For IBM's enterprise planning
problem, the scope of the SCE problem is the entire IBM manufacturing
network. In this process, the demand planners are responsible for
providing statements of demand at geographic levels. For this large
problem, we see demands coming from EMEA, LA, AP, NA and other
geographic sources. We also see demands from Mechanicsburg and
Amsterdam for service parts. Finally, there is demand from our OEM
businesses.
Demand volume, specified for each planner part number in a geographic
source, is represented as a vector and should contain an entry for
each time period specified in the SCE calendar file. Multiple demand
records for the same planner part number and geography are permitted;
SCE adds the demand volumes together. Multiple demand records for
the same planner part number and geography are
permitted; SCE adds the demand volumes together for multiple records.
There are two basic allocation algorithms within SCE -- priority based
and mathematical optimization based. When running SCE with the
priority based allocation scheme, the demand planners are also
responsible for setting the priority of the demands. The priority
allocation scheme works as follows. Within a time period or bucket,
the demands are sorted from highest priority to lowest priority (the
larger the priority number, the higher the priority). The allocation
scheme attempts to satisfy these demands by working on the highest
priority demand first, then the next highest and so on. Demands which
cannot be satisfied fall into backlog and SCE has two schemes for
handling backlog, which will be discussed below. After all of the
demands within a time period have been worked on, the algorithm moves
to the next period and begins allocating to those demands.
The SCE parameter defaultPriority can be used to set the
default priority for demands. Demands which have not had their
priority explicitly set will assume this default priority.
One of the first questions users of SCE pose after learning about
priorities is: How does SCE break ties? In the default behavior,
( equitability = 1), SCE sorts the demands by priority.
Demands of equal priority will be assigned a position in the sorted
list among their peers of other equal priority demands. The algorithm
then proceeds as described above. The order in which equal priority
demands enter the sorted list is controlled by the internal PRM code
and is, for all practical purposes, not controllable by the user.
For users who want a more equitable sharing of constrained resources
among demands of equal priority, they may want to set the
equitability factor to an integer larger than one. The allocation
logic breaks up demands of equal priority into ``equal'' pieces of
demand, with the number of pieces given by the equitability
factor. For example, if there is a demand for 100 and the
equitability factor is 5, then this demand is broken into 5 pieces,
each having a demand of 20. These smaller demands are than interwoven
with other demands of equal priority and the allocation logic
described above is applied to these demands.
The equitability factor is a global parameter for all demands in
the problem.
Although the user can shape the solution of the allocation by
assigning priorities to demands, the user may also want to ensure that
some demands are satisfied at a minimum level. For example, when
allocating supplies to geographies or customers, we can assign higher
priorities to the more important customers, but we can also specify
that the less important geographies or customers get a specified
minimum volume. If using the priority based allocation algorithms,
the algorithms will first attempt to satisfy the minimum demands and
then will use the standard priority based allocation algorithms for
the remaining demands. The minimum demands may not be feasible, in
which case the algorithms will meet as much
of the minimum demand as possible.
SCE's priority based allocation algorithms can handle backlogs in two
distinct manners: backlog priority and rollover priority. In the
backlog priority scheme, demands which are not satisfied on time
(partial or full) carry into the next period and take on highest
priority in the next period. In the rollover priority scheme, demands
which are not met on time roll into the next period, add to the
demands of the next period and assume the priority of the demands in
the next period. If you use the rollover priority scheme, you should
provide priorities for a demand for all periods, even if there isn't a
demand in that period. Otherwise, SCE would use a default priority
for demands that roll forward into a period in which you haven't given
a priority. SCE's optimization based allocation scheme handles
backlogs based on the rewards and penalties of satisfying demands.
Users specify the allocation engine : optimization ,
heuristic (backlog priority), or rollover (rollover priority).
We can model the loss of unmet demands in two ways: a ship late limit,
and a demand perishability. If using one of SCE's priority based
allocation engines, you can set the global defaultShipLateLimit
parameter. This parameter sets the number of periods, after which an
unsatisfied demand is lost. For example, if you set the parameter to
2, then any demand which is not met by at most two periods after it is
due is lost.
Demand perishability applies to individual demands and defines how
much of unmet demand in a period will carry over into the next period.
Demand perishability factors are time vectors that are specified for
individual demands. You can have some demands with larger
perishability factors than other demands.
SCE's optimization allocation algorithm can be set to maximize revenue
or profit. The user must set the engine to optimization ,
and then set the objectiveType for revenue or profit based
optimization. If you choose revenue based optimization, you must
provide demand revenue data for each demand (planner part number,
geography/customer). If you choose profit based optimization, you
must provide demand profit data for each demand. Note that in either
cases, the demand or profit can be different for different customers
for the same planner part number.
This section describes the data necessary for defining the
manufacturing view of SCE. This data includes manufacturing bills of
material and capacity, cycle times, yields, lot sizing, supply of
parts, interplant relationships and operations.
Every part which will be used in the manufacturing data must be
defined in the part definition file. A part's definition includes its
part number, and the name of the production facility (PDF) at which it is
a valid part. If the same part number
is used at two or more plants, it must be defined at each of the
plants.
Critical parts are those parts which are at the lowest level of the
BOM structures, that have a constrained supply. Critical parts are
listed in the parts conditioning file. The list consists of the part
numbers and the PDFs at which the parts are constrained. Parts which
are at the lowest level of a BOM which are not in the parts
conditioning file are considered to be unconstrained. During the
execution of SCE's allocation algorithms, if there isn't enough supply
of an unconstrained part, SCE will create enough supply of that part
in order to not constrain the meeting of a demand (outside of any
cycle time for the part). However, SCE will
not create supply for constrained parts; it will only use the supply
of the part provided in the supply file.
The parts conditioning file can help the user manage the low dollar,
non-critical parts (eg. nuts and bolts, packaging material) which
shouldn't be gating the demands. By excluding these parts from the
parts conditioning file, we will not gate demands due to the supply of
these parts. In fact, we can set their supply to zero and let SCE
tell us how much supply of those parts are needed to support the
production schedules.
For a part in the parts conditioning file, we can set the
constraintEndDate for the part. Then SCE will treat the part as
constrained up until this end date, after which the part is considered
to be unconstrained.
SCE's bill of material record describes a parent/child relationship
at the PDF at which the relationship is valid. The user can also
specify additional MRP-like BOM data such as the usage rate (quantity
per), usage time (offset), effectivity dates, fallout percentages, and
advanced flags for mandatory EC's, phantom bills and remove bills.
Note that if a parent part is built in two or more production
facilities, it must have SCE BOM records defined at each PDF.
SCE allows for manufacturing substitute BOM records. The record
consists of the parent part number, the child part number, the
substitute part number and the PDF at which the manufacturing (and
substitution) takes place. There are additional advanced MRP-like
parameters which are given in the SCE data model. Note that the
substitute BOM record is valid for a specific parent/child/pdf
relationship.
For any manufacturing part which has been defined in the parts
definition file, you can specify the cycle time, the number of days in
takes to build the part (the time to assemble the single level bill).
The cycle time record consists of the manufacturing part number, the
PDF, the cycle time, and effective dates. The same part can be manufactured in
different locations with different cycle times.
For any manufactured part which has been defined in the parts
definition file, you can specify the yield of the assembly process.
The yield record consists of the manufacturing part number, the PDF,
the yield, and effective dates. The same part can be manufactured in different
locations with different yields.
If you are using one of SCE's priority based engines, you can set a
lot size for any manufactured part. The lot size record consists of a
manufacturing part number, the PDF, the minimum lot size, the
incremental lot size, and effective dates.
For advanced modeling, SCE has the ability to aggregate parts.
Aggregate parts can be used to represent a a set of parts.
The part aggregation record consists of a
manufacturing part number and PDF where it is valid and an aggregate
part number and PDF where it is valid. This record would mean that
the manufacturing part number comes from the aggregate part. For
example, a supplier who supplies us with resistors may be able to give
us a volume commitment at a family of parts level. If we know the
parts that belong to this family, we can set up aggregate records to
indicate that the supply of real resistor part numbers comes from the
supply of the aggregate part.
The supply availability data tells SCE how much of a part will be
available from outside of the manufacturing network. This could
include the initial on-hand inventory, WIP, or supply we get from
sources outside of the network we have modeled. A supply record
consists of a manufacturing part number, the PDF at which the supply
is available, the supply volume vector. Note that supply can appear
at any level in the BOM, from the lowest level to the final
manufactured part. This permits us to model some make/buy situations.
Remember that supply is what is coming from outside of the
manufacturing network we have modeled. Do not include in the supply
statement those lower level parts which we have already captured in
the network. Multiple supply records for the same part number and PDF are
permitted; SCE adds the supply volumes together for multiple records.
SCE can also model capacity resources. In order to consider capacity
resources in the SCE model, you must first define the capacity
resources. For every capacity that will be used in the manufacturing
data, you must define it and the PDF at which it is valid. You may
want to model detailed capacities such as specific testers or other
equipment, or model higher level capacities such as line or daily
going rate capacities. Capacities differ from parts in that if you
don't use a capacity within the period it is available, the unused
portion is lost; it doesn't roll into the next period.
Like a BOM, a bill of capacity (BOC), defines parent/child
relationships in which the parent is a manufactured part, and the
child is a capacity resource. You must also provide the PDF at which
the record is valid. You can also give the usage rate of the capacity
(the default is one unit), the usage time and effectivity dates. The
usage rate must be in units consistent with how the capacity supply
has been specified.
The capacity availability data tells SCE how much of a capacity
resource part will be available at a specified PDF. As noted above,
the supply must be in units consistent with the usage rate given in
the BOCs. Suppose your bill of manufacturing (BOM and BOC) for CardA
at Charlotte requires using a tester named Tester1 for 30 minutes, the
tester is available for two 8 hour shifts (16 hours), your calendar is
set up to handle daily buckets, and your problem is a single period
problem. Then your supply record would include the name of the tester
capacity resource, Tester1, the PDF, Charlotte, and the supply, 16.
The BOC record would contain data for the parent, CardA, the child
capacity resource, Tester1, the PDF, Charlotte, and the usage rate,
0.5 (half an hour).
For any manufactured part in your model, you can specify both upper
and lower bounds for the production schedules of that part. This
allows you to control how much of a part gets produced within the
manufacturing network. If you are using a priority based engine, SCE
will only respect the production upper bounds, if it is feasible. If you are
using the optimization based engine, then both upper and lower
bounds will be respected (if it is feasible).
For advanced modeling, SCE has incorporated PRM's notion of
operations. Operations are generalizations of BOMs. They describe
how parts and capacities come together to produce other parts and
capacities. Recall that a BOM describes how parts and capacities come
together to form the parent part. Operations are needed to model the
complexities arising from co-product generation, rework, speed sorting
and other manufacturing scenarios in which more than one part or
capacity is produced. Like parts and capacities, operations which
will appear in the manufacturing data must be defined at a PDF. We
use the term ``execute'' to describe when an operation gets
carried out.
The operation bill of material gives parent child relationships, where
the parent is a valid operation and the child is a part or capacity
resource. You must also provide the PDF where this relationship is
valid. You can also specify usage rates, offsets, effectivity dates
and fallout factors for an operation BOM.
The operation bill of production (BOP) describes which parts or
capacities are produced due to the execution of an operation. An
operation BOP consists of the part or capacity produced by the
execution of the operation, the operation name, and the PDF. You can
also specify the production rate for the part being produced, offsets,
effectivity dates, and other advanced parameters.
For any operation which has been defined in the operations definition
file, you can specify the yield of the operation. The yield record
consists of the operation name, the PDF, and the yield. The same
operation can be executed in different locations with different
yields.
If you are using one of SCE's priority based engines, you can set a
lot size for any operation. The lot size record consists of an
operation name, the PDF, the minimum lot size and the incremental lot
size.
For any operation in your model, you can specify both upper and lower
bounds for the execution schedules of that operation. This allows you
to control how many times an operation gets executed within the
manufacturing network.
If you are using a priority based engine, SCE
will only respect the operation upper bounds, if it is feasible. If you are
using the optimization based engine, then both upper and lower
bounds will be respected (if it is feasible).
The interplant file describes how parts flow among the multiple plants
in the manufacturing network. You specify the sourcing of parts
within the network. An interplant record consists of the destination
PDF part number, the destination PDF, the source PDF part number, and
the source PDF. You can also include the transit time, in days, to go
from the source to destination PDF (``stock to stock''), effectivity
dates lot sizes, and
the preference or cost of choosing this source. If you have more than
one source for a part, you can use this last parameter to give
preference to a priority based allocation engine, or cost to the
optimization based engine, for using this choice for source.
SCE has the ability to consider both building blocks, also known as
selective features, and optional features, when allocating constrained
resources to the demands. We have attempted to capture different
types of features. In selective features, or building blocks, the
customer chooses from among a set of parts, the desired feature. For
example, when purchasing a computer system, the customer selects a
language publication package from a set of publications in different
languages. When a customer purchases a Risc System 6000, the
customer selects the hard disk from a set of hard disks, for example,
4Gb, 8Gb, or 12Gb. SCE's selective features attempts to model this
aspect of the customer choosing one, or perhaps more, items from a
set. Optional features are as the word implies -- optional. When
purchasing a computer system, the customer may select to buy a token
ring card; it's optional. Some customers will purchase the option and
others won't.
SCE requires that the selective features or optional features be
considered as children of top-level parts. We don't allow you to
model selective features or optional features for parts which are
themselves subassemblies. In fact, selective features and optional
features are actually coupled to demands as described below.
To use building blocks or selective features, you must define
categories for your selective parts. A category is a unique
identifier for a demand (planner part number and geography) which
calls out the usage of selective features. For example, the EMEA
demand for a AS400 Model ABC may call out for a category
``LangPubs_EMEA_AS400ABC'', which will represent the set of language
publications available for EMEA demand for the AS400 Model ABC. You
also need to provide an upper limit on the number of selective
features within a set that can be included into the top-level build
when satisfying the demand. If you set this limit to one, this is
equivalent to choosing exactly one feature within the selective set.
You may set this limit greater than one to model building block
categories for which the customer may choose more than one feature
from the selective set. The format of a record in the top-level build to
building block category definition file is a demand (planner part number and
geography), the category name, and the upper limit, whose default value is one.
Once you have defined the categories, you then must list the features
that belong to a category and the ratio at which that feature is
selected when a customer purchases the demanded part. In our example
on language publications, the selective features belonging to the
``LangPubs_EMEA_AS400ABC'' category could be ``PubEngUS'',
``PubEngUK'', ``PubFR'', ``PubGR'' and ``PubSP'', representing the
publication packages for US English, UK English, French, German and
Spanish. There feature ratios could be 0.2, 0.1, 0.3, 0.3, and 0.1,
indicating we expect 20% of the demand for AS400 Model ABC from EMEA
to request the US English publication package, 10% to request the UK
English publication package, and so on. The record in the top-level
build to building block category ratio file consists of a demand
(planner part number and geography), a building block category, a part
number belonging to that category, the usage rate of the part when it
is called out, and the feature ratio of the part. The feature ratio
is a time vector. In the implosion solution, the feature ratio is
multiplied by the total demand and this represents the maximum amount
of the demand that can be produced with the part. In our example, if
the demand for AS400 Model ABC from EMEA is 100, then the maximum
number of AS 400 Model ABC's with the German language publications
that we would plan to ship to EMEA is 30. Observe that if only have
25 German publication packages, that will prevent meeting the EMEA
demand.
In this version of SCE, you must use either revenue or profit
optimization if you are using SCE's building block modeling
capability. You must provide either revenue or profit data for the
additional revenue or profit associated with supplying the feature
part with the demanded part (planner part number and geography). Make
sure you aren't counting the revenue or profit twice. The format of
these files is a demand (planner part number and geography), the
feature part, and a vector of revenue or profit for supplying the
feature to the demand. You can assign different revenue or profit
rewards for different geographies and SCE will allocate the features
to the demands that maximize your economic objectives. Note that
parts which belong to building block categories can also appear as
mandatory BOM entries in other assemblies.
To use optional features, for every part which can be optional for a
demanded part (planner part number and geography), you must provide
the option ratio for this part on the demanded part. In the implosion
logic, this ratio multiplied by the shipment quantity of the demanded
part represents the maximum amount of the feature that can be shipped
with the demanded part. We attempt to maintain the feature ratio in
the shipment quantity. We typically do not want to gate the shipment
of a demand due to a shortage in an optional part. However, SCE has
the ability to gate the shipment of demand because of a constraining
optional part. For an optional feature and the demand there is a
parameter which can limit the maximum amount of the demand we want to
ship without the feature. We call this parameter
max_ship_without . The default value of this parameter is 1,
meaning that the feature is purely optional and will not gate demand.
If you set the value of the parameter to 0, then the feature is
mandatory. The product of the option ratio and the total demand is
the upper limit on how much demand we will satisfy without the
feature. The format of a record in the top-level build to optional
option ratio file is a demand (planner part number, geography),
optional part, usage rate, a vector of option ratios, and a vector of
ratios for the max_ship_without parameter.
Customer choice features are new for SCE 2.11. They are specified in the
same manner as Optional Features. To indicate that a feature is a customer choice
feature for a given machine, set the maxWithout vector ro a vector of -1's.
The customer choice feature ratio represents the fraction of customers
who want the feature, whereas the complement, 1.0-maxWithout, represent the
fraction of customers who do not want the feature. For the customers who want
the feature, its a mandatory requirement, for the rest of the customers, its
assumed that they do not want the feature (even if its available in excess).
You can use either the heuristic implosion engine or the revenue or
profit optimization engines when running SCE. If you select an
economic based optimization engine and you are modeling optional
features, you will need to provide an optional feature revenue or
profit file. The revenue or profit data represents the additional
revenue or profit you will receive if you ship an optional feature to
a demand. The format of a record in the optional feature revenue or
profit files consists of a demand (planner part number and geography),
optional feature, and a vector for the additional revenue or profit.
You can assign different revenue or profit rewards for different
geographies and SCE will allocate the optional features to the demands
that maximize your economic objectives. Note that parts which belong
to categories can also appear as mandatory BOM entries in other
assemblies.
We have presented the Demand and Manufacturing views of SCE. These
views are linked by the Demand Geography To Pdf Source File. This
data defines how demand (a planner part number and geography
(customer)) is sourced. A record for this data consists of the
planner part number, the geography, the manufacturing part number and
the manufacturing PDF. You can also provide effectivity dates and
transit times from the PDF to the geography. Only one source may be
in effect at any time for a specific demand. (If you want to model
the demand sourcing decision, introduce a ``fulfillment center.''
Source the demand to the fulfillment center, and then use the
preference/cost data on an interplant record to source the supply to
the fulfillment centers from the possible manufacturing PDFs.)
There are many parameters which govern how SCE runs, where it looks
for input data, and what reports it generates. These parameters are
given in the parameters file. The name of the parameters file must be
passed to the SCE executable from the command line when you invoke
SCE. Look at the Parameters File section of the SCE Data Model for a
complete listing of SCE parameters. The table gives the name of the
parameter, the type of parameter (boolean, string, character, etc.),
whether the parameter is mandatory, and a comment about the parameter.
The results of SCE's allocation of constrained resources are reported
in various output files. The output results are partioned into a
demand view and a manufacturing view, as is the input data.
The supply response file reports how SCE has allocated the constrained
resources to best meet the demand. In this file you will find for
each demand specified in the input data a corresponding supply
response. The supply response consists of the planner part number,
the geography (customer), and the supply volume vector, where entries
in the vector tell us how much of the demand is met in the
corresponding period.
The backlog response tells us how much behind schedule a demand will
be. The backlog in period t is the cumulative demand through period
t minus the cumulative supply response through period t.
(Perishable demand will appear as backlog.)
SCE reports manufacturing results in several output files. SCE
computes the build schedule for every manufactured part, the usage of
every part, the substitute usage of every substitute part, and many
other MRP and implosion related data.
For every manufactured part, SCE reports the recommended in house build
schedule for that part. A record in the manufacturing build schedule
consists of the manufacturing part number, the PDF at which the
manufacturing takes place, and a build volume vector. The volumes
reported are with respect to the completion date of the manufacturing.
For lowest level parts in the BOM which are not in the parts
conditioning file, SCE will report here the volume of the part that
SCE had to create in order to not constrain the demand.
For each parent/child/substitute/PDF relationship defined in the
manufacturing substitute BOM input file, SCE reports how much of the
parent is produced at the PDF using the substitute part in place of
the child part. This is based on the implosion solution.
For each parent/child/substitute/PDF relationship defined in the
manufacturing substitute BOM input file, SCE reports how much of the
parent is produced at the PDF using the substitute part in place of
the child part. This is based on the MRP solution.
The manufacturing part database dump file is a large collection of MRP
and implosion data for each manufacturing part in the model. A record
in this file consists of a manufacturing part number, PDF, a keyword
and a vector of data for that keyword. If the vector of data contains
all zeros, the record is excluded from the report. Here are
descriptions of the keywords:
- bldVol
-
The amount produced, as determined by implosion, from building the
part in house (from the build schedule file).
- consVol
-
The total volume consumed (used) by parent assemblies or
shipped directly to meet an external demand. This can also be
thought of as the usage of the part.
- cycletime
-
The cycletime, in periods, as used by SCE. Parts in the parts
conditioning file get assigned a cycletime of -1.
- deAggVol
-
The amount produced, as determined by implosion, from deaggregation.
- excessVol
-
The amount that supplyVol could be reduced while still
achieving the same production and shipment schedule as determined by
implosion.
- intPlVol
-
The amount arriving, as determined by implosion, from interplant
shipments (from the interplant orders file).
- mrpBldVol
-
The amount produced, as determined by MRP, from building the part in
house.
- mrpConsVol
-
The total demand on the part.
total demand = dependent + independent demand. (Note: this
differs from PRM where mrpConsVol is only the dependent demand on the
part.)
- mrpDeAggVol
-
The amount produced, as determined by MRP, from deaggregation.
- mrpExcessVol
-
The amount that supplyVol could be reduced while still
achieving the same MRP requirements schedule, reqVol.
- mrpIntPlVol
-
The amount arriving, as determined by MRP, from interplant shipments
(from the interplant demand file).
- mrpProdVol
-
The total MRP production volume for each time period as
determined by SCE's MRP. The MRP production volume is the sum of the
MRP amount produced by building the part in house, the MRP
amount produced by deaggregration, the MRP amount arriving
through interplant shipments (from the interplant orders file), and
the MRP amount produced from user defined operations.
- mrpRequirements
-
This is (reqVol - mrpExcessVol). In MRP terms,
the reqVol would be the recommended planned orders, and the
mrpExcessVol would be the recommended cancel orders. When you add them
together to get "mrpRequirements", you get one line that shows it all.
We don't go the extra step and do order move recommendations.
- mrpResidualVol
-
The amount that the supplyVol and mrpProdVol could be reduced while
still achieving the same MRP requirements, reqVol. This term includes
the mrpExcessVol and any excess due to co-product generation, negative
usage rates, and lot sizing.
- mrpUserOpVol
-
The amount produced, as determined by MRP, from user defined
operations.
- prodVol
-
The total production volume for each time period as
determined by implosion. The production volume is the sum of the
amount produced by building the part in house (from the build schedule
file), the amount produced by deaggregration, the amount arriving
through interplant shipments (from the interplant orders file), and
the amount produced from user defined operations. This is given in
terms of completion period rather than release period in order to be
consistent with the input format, which specifies all time-dependent
data in terms of completion period.
- reqVol
-
The net-required quantity (MRP calculation)
for each time period as computed by SCE's MRP engine.
- residualVol
-
The amount that the supplyVol and prodVol could be reduced
while still achieving the same production and shipment schedule as
determined by implosion. This term includes the excessVol and any
excess due to co-product generation, negative usage rates, and lot
sizing.
- scrapVol
-
The quantity of the part scrapped, as determined by the implosion solution.
- stockVol
-
Projected stock (inventory) level for each period with respect
to the SCE generated implosion solution.
- supplyVol
-
The total supply that the was entered through the Supply Availability
File. In SCE, you can have multiple supply records for a given part
at a PDF. This total reported here is the sum of the supply records.
- userOpVol
-
The amount produced, as determined by implosion, from user defined
operations.
The manufacturing part total demand reports the total demand,
independent + dependent, for a manufacturing part. A record in this
file consists of the manufacturing part number, the PDF, and the total
demand vector.
The manufacturing capacity database dump file is a large collection of
MRP and implosion data for each capacity defined in the model. A
record in this file consists of a capacity name, PDF, a keyword and a
vector of data for that keyword. If the vector of data contains all
zeros, the record is excluded from the report. If you don't define
capacities in your input model, SCE will not create this report. Here
are descriptions of the keywords:
- consVol
-
The total volume consumed (used) by parent assemblies.
- excessVol
-
The amount that supplyVol could be reduced while still
achieving the same production and shipment schedule as determined by
implosion.
- mrpConsVol
-
The total demand on the capacity.
- mrpExcessVol
-
The amount that supplyVol could be reduced while still
achieving the same MRP requirements schedule, reqVol.
- mrpRequirements
-
This is (reqVol - mrpExcessVol).
- mrpUserOpVol
-
The amount of the capacity produced, as determined by MRP, from user
defined operations.
- reqVol
-
The net-required capacity (MRP calculation)
for each time period as computed by SCE's MRP engine.
- scrapVol
-
The quantity of the capacity not used (scrapped), as determined by the
implosion solution.
- supplyVol
-
The total supply of capacity that the was entered through the Capacity
Supply Availability File. In SCE, you can have multiple supply
records for a given capacity at a PDF. This total reported here is the sum
of the supply records.
- userOpVol
-
The amount of the capacity produced, as determined by implosion, from
user defined operations.
The interplant orders file reports the volume of flow of a part
between plants. For each input interplant record (destination part
number, destination PDF, source part number, source PDF), this file
reports the volume of the flow, based on SCE's constrained implosion
solution, of the source part from the source PDF to the destination
PDF and destination part number. The data given represents the
quantity recieved at the destination Pdf in each period (ie, the
``customer's view'').
If you don't define interplant
relationships in your input model, SCE will not create this report.
The interplant demand file reports the volume of flow of a part
between plants in an unconstrained environment (MRP solution). For
each input interplant record (destination part number, destination
PDF, source part number, source PDF), this file reports the volume of
the flow, based on an MRP unconstrained solution, of the source part
from the source PDF to the destination PDF and destination part
number. The data given represents the
quantity recieved at the destination Pdf in each period (ie, the
``customer's view'').
If you don't define interplant relationships in your input
model, SCE will not create this report.
The operation execution schedule reports the execution volume for
every operation you have defined. A record in this file consists of
the operation name, the PDF, and a execution volume vector.
The operation substitute usage execution schedule reports the
execution volume for every operation for which a substitute part in
the operation's BOM was used. A record in this file consists of the
operation name, the primary part number, the substitute part number,
the PDF, and a substitute execution volume vector. This is based on the
implosion solution.
The MRP operation substitute usage execution schedule reports the
execution volume for every operation for which a substitute part in
the operation's BOM was used. A record in this file consists of the
operation name, the primary part number, the substitute part number,
the PDF, and a substitute execution volume vector. This is based on the
MRP solution.
The operation database dump file is a large collection of
MRP and implosion data for each user defined operation in the model. A
record in this file consists of a operation name, PDF, a keyword and a
vector of data for that keyword. If the vector of data contains all
zeros, the record is excluded from the report. If you don't define
operations in your input model, SCE will not create this report. Here
are descriptions of the keywords:
- execFlag
-
A boolean indicating if the operation is executable in the period.
- execVol
-
The execution volume of the operation, as determined by
the implosion solution.
- mrpExecVol
-
The execution volume of the operation, as determined by
the MRP solution.
- yieldRate
-
The yield rate of the operation (from the operation yield file).
The critical parts list gives us an ordered ranking of manufacturing
parts which were short in supply. A record in this file consists of a
manufacturing part number, the PDF and the period in which the part
was needed and not available. In the priority allocation mode, this
ordered ranking is generated by listing the short parts as the
allocation algorithm is run. In the optimization allocation mode, the
ordered ranking is based on the linear programming shadow prices of
the parts.
Focussed shortage schedules (FSS) are reports we can use to help us
identify what parts are needed in order to meet demands on time. When
we run SCE we can view the supply response to see which demands are
met and which aren't. However, this supply response solution doesn't
indicate why a demand was unsatisfied. To answer this question, we
must use SCE's focussed shortage schedule capability. The FSS will
report which constrained parts, that is, parts belonging to the parts
conditioning file, are gating the demands. There are three ways to
run SCE's FSS: the singleton scheme and the general set scheme and the
machine scheme. For each of these three ways to invoke SCE's FSS you
can also set the method in which the engine treats excess supply in
the calculation of the FSS coverage. The two methods include
conservative and liberal . When you set the method to be
conservative, SCE's FSS does not excess supply when computing the
coverage. When you set the method to be liberal, SCE's FSS uses excess
supply when computing the coverage. You choose the method by setting
fssSingletonMethod , fssGeneralSetMethod or
fssMachineMethod to conservative or liberal .
In the singleton scheme, SCE focusses on every unsatisfied demand, one
at a time, and determines which parts are needed, in what quantity and
which time period, in order to satisfy that specific demand, while
preserving the rest of the implosion solution. To run the singleton
FSS scheme, you must set the doFssSingleton parameter in the
parameters file to 1 .
A record in the FSS singleton scheme report consists of a demand
(planner part number and geography), and a manufacturing part number
that gated the demand, the PDF where the manufacturing part number is
consumed, an FSS keyword and the vector value for the keyword. The
keywords include FSSReq, FSSCoverage and FSSDelta. The FSSReq is the
gross requirement for the manufacturing part to meet the demand of the
focus. The FSSCoverage is the amount of the manufacturing part
available to be used to meet the demand of the focus. The FSSDelta is
the difference between the FSSReq and the FSSCoverage.
There may be more than one manufacturing part gating a demand. You
may see more than one record in the FSS report for a specific demand.
The FSS singleton reports are not, in general, additive. Do not take
the results of the FSS for Demand1 and add it to the results of the
FSS for Demand2 to determine the parts needed to clear both demands,
Demand1 and Demand2, simultaneously.
If you want to determine the set of parts needed to meet all the
demands within a set, you need to run SCE's general set scheme. Set
the doFssGeneralSet parameter to 1 to run the general set FSS
scheme. You must also define the sets. This is another input file,
which will be described here. A record in the FSS general set scheme
input file consists of a set identification name, and a demand
(planner part number and geography) you want to belong to the set.
Keep records that belong to the same set identification name in a
contiguous block. Note that you must declare your sets as input data,
before you run SCE. This requirement can be troublesome, because we
often don't know what we want to focus on until after we have run SCE
and viewed the results. (Unfortunately, we cannot consider all
subsets of demands, since that is too large for realistic sized SCE
models.)
A record in the FSS general set scheme output file consists of the set
identification name, a manufacturing part number that gated demand in
the set, the PDF at which the part is consumed, a FSS keyword and the
vector value for the keyword. The keywords and their meanings are the
same as for the singleton FSS scheme described above.
The machine scheme is identical to the general set scheme. You may
want to use the machine scheme if you have sets of demands for which
you want to run some with in the conservative mode and some in the
liberal mode.
There is an output file which links the demand and manufacturing views
of output. The supply response by PDF file tells us how much of a
demand (planner part and geography) is met by a specific PDF. A
record in this file consists of the planner part number, the
geography, the manufacturing part number at the supplying
manufacturing PDF, the supplying PDF, and the supply volume vector.
We report shipment schedules for selective features and optional features if
you have included them in your model. You have the choice of reporting
either ratios for the shipment quantities or absolute quantities. You
specify this choice by setting the featureFileOutputFormat parameter to
either absolute or percentage. The format of the feasible selective feature ratio
output record consists of the demand (planner part number and geography), the
category, the selective feature and the ratio or absolute shipment quantity.
The format of the feasible optional feature ration ratio
output record consists of the demand (planner part number and geography),
the optional feature and the ratio or absolute shipment quantity.
SCE is designed to run as a batch file. Assuming that SCE has been
properly installed on your machine the appropriate paths have been
enabled, you run SCE by entering on the command line scemain
where paramsFileName is the name of the SCE
parameters file for your problem. We recommend that you keep all of the
SCE input files for a specific run in the same directory.
When SCE runs it reports for each input file the number of records
read, the number of records accepted, the number of records rejected,
and the number of blank lines or comments read. The number of records
read should equal the sum of the number of records accepted, rejected,
and commented or blank. This report can be found in
sceInput.log , the SCE input log file. (You can change the default
name of the input log file by setting the inputLogFileName in
the parameters file.) At the bottom of this report, there will be a
message indicating if SCE has rejected any of the input records. You
should review this report after each run of SCE to determine if SCE
encountered any errors in processing the input data.
When SCE runs it also reports for each output file the number of records
written to that file. Many of the output files are in one-to-one
correspondence with an input file. The number of records written to the
output file should equal the number of good input records in the
corresponding input file. For example, the supply response file is in
one-to-one correspondence with the demand file. For every good record
in the demand file, there should be a corresponding record in the
supply response file. There are some output file correspondences which
are more complicated. The build schedule output file has a record for
every part that is in the part definition file, except those parts which
are in the parts conditioning file. (Constrained parts cannot be built.)
The number of records in the build schedule output file is the number of
good records in the parts definition file minus the number of good records
in the parts conditioning file. The sce output log file, whose default name
is sceOutput.log , shows the arithmetic to validate the correspondences
between output files and input files.
All SCE ``error'' messages get reported in the error message log, whose
default name is sceERROR.log . There are various levels of messages
reported in this log -- informational, warning, error, severe and fatal.
An SCE error message consists of a message identifier and a message.
An SCE message identifier begins with the prefix ``SCE'' followed by a
four digit number followed by a single character code, `I', `W', `E', `S',
and `F', which indicates the level of the error. The message will provide
a brief description of the error, and if possible, the line number and
the name of the file which SCE believes is causing the error.
- Material Requirements Planning, Joseph Orlicky, McGraw Hill,
1975.
- IBM Production Resource Manager, Release 4: User's Guide
and Reference Manual.


Returns a list of pathways from a GMT file.
read_gmt(gmtfile)
| gmtfile | A character value, containing the location of the GMT formatted file. It can also be a file found online |
|---|
A list of vectors, one for each pathway in the GMT file.
# this example reads in the freely available pathways from wikipathways mysigs <- read_gmt( "http://data.wikipathways.org/20180910/gmt/wikipathways-20180910-gmt-Homo_sapiens.gmt") head(mysigs)#> $`B Cell Receptor Signaling Pathway%WikiPathways_20180910%WP23%Homo sapiens` #> [1] "4690" "5781" "11184" "6195" "4609" "998" #> [7] "5777" "10892" "3635" "4208" "2308" "4209" #> [13] "2549" "4067" "6885" "640" "118788" "84433" #> [19] "5788" "7462" "6654" "3662" "3265" "8394" #> [25] "8395" "29760" "1871" "930" "933" "815" #> [31] "3932" "2969" "5294" "5295" "5296" "5970" #> [37] "3551" "5170" "5608" "23396" "5601" "5966" #> [43] "5604" "5605" "27071" "5580" "7006" "4773" #> [49] "1385" "1380" "673" "25780" "5335" "5336" #> [55] "5579" "100847070" "8462" "5594" "7410" "5596" #> [61] "1147" "2113" "1386" "4775" "207" "604" #> [67] "3608" "7409" "3725" "4790" "6452" "5880" #> [73] "6850" "4792" "2889" "695" "2885" "1432" #> [79] "973" "1399" "3059" "974" "1398" "2002" #> [85] "975" "5599" "4149" "5879" "6464" "5894" #> [91] "26469" "2932" "2931" "2534" "8517" "867" #> [97] "9846" "8915" #> #> $`Trans-sulfuration pathway%WikiPathways_20180910%WP2333%Homo sapiens` #> [1] "1786" "2730" "27430" "875" "191" "4357" "1491" "2805" "4548" #> [10] "51380" #> #> $`Nanoparticle triggered autophagic cell death%WikiPathways_20180910%WP2509%Homo sapiens` #> [1] "9474" "8678" "7248" "285973" "64422" "55054" "22863" "406991" #> [9] "9140" "83734" "596" "51100" "84557" "115201" "3630" "55626" #> [17] "7249" "3643" "81671" "7405" "10036" "8408" "9706" "10533" #> #> $`Benzene metabolism%WikiPathways_20180910%WP3891%Homo sapiens` #> [1] "2944" "27294" "4353" "1571" "1728" "2052" #> #> $`Codeine and Morphine Metabolism%WikiPathways_20180910%WP1604%Homo sapiens` #> [1] "7363" "7364" "5243" "1558" "1576" "1565" "54578" "54600" "1244" #> [10] "54576" "54575" "8714" "54659" "54658" "10599" #> #> $`Calcium Regulation in the Cardiac Cell%WikiPathways_20180910%WP536%Homo sapiens` #> [1] "102465524" "3760" "8490" "2792" "2791" "2702" #> [7] "111" "2701" "2700" "2788" "112" "2787" #> [13] "113" "114" "2786" "115" "2785" "2784" #> [19] "127534" "2783" "51764" "2709" "2707" "2706" #> [25] "2705" "2703" "6001" "94235" "6000" "8787" #> [31] "406974" "6004" "8786" "480" "481" "482" #> [37] "2280" "483" "55970" "486" "488" "489" #> [43] "3762" "801" "9628" "8536" "408" "805" #> [49] "409" "808" "490" "491" "492" "57369" #> [55] "10636" "773" "774" "775" "776" "777" #> [61] "811" "779" "814" "815" "816" "817" #> [67] "818" "6263" "6262" "5570" "5331" "5573" #> [73] "8601" "5575" "5576" "1132" "1131" "6261" #> [79] "1129" "782" "1128" "146" "784" "3708" #> [85] "10804" "147" "148" "2697" "3709" "5566" #> [91] "5567" "5569" "309" "5580" "5581" "5582" #> [97] "5583" "11142" "10052" "5587" "2870" "153" #> [103] "154" "155" "1133" "6546" "5577" "5578" #> [109] "5579" "3710" "6547" "10971" "2869" "2868" #> [115] "5350" "7532" "7531" "7534" "7533" "64407" #> [121] "5590" "844" "5588" "845" "7529" "196883" #> [127] "2771" "2770" "57165" "54331" "2767" "59345" #> [133] "26575" "5996" "5997" "5998" "5999" "2782" #> [139] "2781" "2778" "2810" "2776" "2775" "81025" #> [145] "2773" "107" "108" "10681" "109" "10287" #> [151] "3745" #># see how the gene identifiers are encoded as ENTREZ id


Show Menu
Home
Tracking
View Map
View Database
Assignments
Wiki
About
Assignments
{% if is_Valid == True %}
{% for assignment in assignments %}
UUID: {! assignment[0] !}
Is Vehicle:
{% if assignment[1] %}Yes{% else %}No{% end if %}
Name:
{! assignment[2] !}
{% end for %}
Change Assignment
UUID:
Name:
Platoon
Vehicle
{% end if %}


--- layout: post title: Upgrade yourself date: 2016-02-12 15:51:09.000000000 +00:00 type: post published: true status: publish categories: - meta-thinking-beyond tags: - education meta: _edit_last: '1' _oembed_37c49b8c330b2d5f9100d10b000f17b2: _oembed_time_37c49b8c330b2d5f9100d10b000f17b2: '1455291869' _jetpack_related_posts_cache: a:1:{s:32:"8f6677c9d6b0f903e98ad32ec61f8deb";a:2:{s:7:"expires";i:1495371082;s:7:"payload";a:3:{i:0;a:1:{s:2:"id";i:58;}i:1;a:1:{s:2:"id";i:106;}i:2;a:1:{s:2:"id";i:73;}}}} author: email<EMAIL_ADDRESS>display_name: natseg ---
My days are spent learning. Failing that - craving to learn.
I do my utmost to learn as much as possible at work.
When I go home, I either binge on tv shows or go online and learn some more.
If you want to know why, I will retrofit a link to the post on why I learn so much - learn until I am drained and stressed and sometimes cranky.
My time is most spent on:
- Duolingo which has an awesome Ted Talk associated with. I giggled quite a lot.
Luis von Ahn also worked on captcha and recaptcha
- edX created by no less than the MIT and Harvard University.
- codecademy back when it was really free - which should be camelCase if you think about it!
- Coursera which comes with a good Ted Talk too
- Stack Overflow where you'd better be prepared to read 12 pdfs on how to post if you would like not get flamed straight away
- all the blogs documenting great code along with clear explanations which I stumble upon when I google
- Wikipedia where I learnt an awful lot about regexes (come on, I am not going to link that)
Duolingo is a platform that stands out by its purpose, design, apparently simple yet impeccable code.
I have used every day for the past years and I have never had any reason to complain, only reasons to praise this app whether on web or handheld device.


What is RyujiNX?
It is a Nintendo Switch Emulator programmed in C#; unlike most emulators that are created with C++ or C. This emulator aims to offer good performance, a friendly interface, and consistent builds. RyujiNX is created by user over at the GBAtemp forums. This emulator is also available on GitHub, and is licensed under the "Unlicensed" license. Note: This emulator is not capable (as of now) of running Commercial Nintendo Switch games!If you somehow find a source claiming that the Emulator is capable, and it has not been officially confirmed by us; Please consider reporting it via our Discord server.
Please keep in mind; these builds are from AppVeyor and are considered unstable!
Where can I grab it?
As of right now, the emulator has no stable builds; although, you may follow the build guide by clicking the "Build" menu option above. Or you may download the latest pre-compiled build (above.)
Gaming?
RyujiNX currently doesn't work well with games as of now. Much like 'yuzu,' it only supports homebrew at the moment.
Platforms
RyujiNX is currently only available for Windows. Although, support for Linux, and macOS is there; but it may be more difficult to compile it.
Discord
Join the RyujiNX Discord server; you can get help, as well as converse with fellow users and developers. Join here
Why the name?
The name RyujiNX is based on the name "Ryujin." In other words, a name for a Mythical (Sea-God) Dragon. More information can be found here.
Our Team
Our developers: gdkchan (Project lead), Ac_K (Secondary Developer), Mary (Third Developer and helper), Dr.Hacknik (Web designer, and Discord maintainer), Hexagon12 and Simply Austin (For helping spread the news, and moderate our server); and thanks to the following users: Natehaxx, Stary, and Emulator_Team.


Texel is the most western of the Frisian Islands and is well known for its great beaches. The port lies in the centre of its southern coast.
The Veerhaven is the commercial port on the south western corner of the island. Visitors should berth in the yachthaven at Oudeschild, further east along the south coast.
Last updated September 2015.


This example illustrates how to use includes with the Jade templating language.
h1 Jade Includes Example
include includes/footer
This includes the footer file found at views/includes/footer.jade
To run the example first install modules with npm
npm install
Then start the server with
node app.js
Then open your browser at http://<IP_ADDRESS>:3000
Study the views/index.jade to see how it works.
If you want to experiment with the examples without having to restart the server every time install nodemon and then start the server
nodemon app.js
Nodemon will reload your app automatically when you make changes.


POTD
Roy Fielding
HTTP- it’s all about representations of data, not the data itself
urls are to represent a resouce. They should be stateless and you should get multiple representations of it (different data types for example).
SOAP is “like knocking on your neighbors’ door and ask them to send a message to a guy down the street.”
Blogs
1
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Spinning Up My First Server
??swap disk space
Passenger knows how to run your app, nginx does not
- nginx sends your request to a Passenger instance
- nginx is managing the load to Passenger
- Passenger is actually running the application ~> managing starting up your app and serving it
- it could run up to 20 instances of the app on a single server (the default is 5)
- nginx sends your request to a Passenger instance
nginx is the actual webserver. It’s a piece of software that speaks HTTP, is very high performance and sits between your application and the internet.
The tutorial is very detailed
- Not on the tutorial- adding the SSH key from the server
Lessons Learned From the Server Work
- Problem: So I couldn’t deploy for hours… I went and reconfigured like 3 times. Renamed the name of the application and going through the nginx config file on the server. It sucked.
- Answer: I had my database in my .gitignore file, which meant that it was in the deploy from the github. AHHHH!!! I never would have gotten that one.
Ruby
Opposites
- Enumerable#reject
- Returns an array for all elements of enum for which block is false (see alsoEnumerable#find_all).
- Enumerable#select
- Returns an array containing all elements of enum for which block is not false (see alsoEnumerable#reject).
- Enumerable#reject
Equivalent, different order for pipes
- Enumerable#each_with_object
- Iterates the given block for each element with an arbitrary object given, and returns the initially given object.
- [1, 2, 3, 4].each_with_object([]) { |element, result| result << element }
- Iterates the given block for each element with an arbitrary object given, and returns the initially given object.
- Enumerable#each_with_object
Enumerable#inject
- Combines all elements of enum by applying a binary operation, specified by a block or a symbol that names a method or operator.
- [1, 2, 3, 4].inject([]) { |result, element| result << element }
- Combines all elements of enum by applying a binary operation, specified by a block or a symbol that names a method or operator.
Rails
- link_to is a great example of a polymorphic interface
- if it receives an object (an instance of active record), it can create the correct link
- if it receives a string it can create the correct link out of that
1 2 3 4 5 |
|
urls that have parameters in them like songs/:genre ~> you need to pass a paramter so that it can match it ~> songs/:genre/:year needs two parameters
1
|
|
1 2 |
|


The best printer deals of November 2019
Find the best deals on printers this month with our tips and tricks to bagging the bargains.
by Ashleigh MacroIf your old printer is playing up or you're sick of high ink costs, a new model is what you need.
The good news is that you can find printer deals all year round, so read on to find out how to spot the biggest bargains and what to look for when buying a new printer.
Best printer deals right now
HP OfficeJet 5230
From: Currys PC World
Was: £99.99
Now: £39 (£60.99 off)
View Deal
Canon Pixma TS5050
From: Amazon
Was: £119.99
Now: £59.99 (50% off)
View Deal
HP Deskjet 2622
From: Amazon
Was: £32
Now: £24.99 (£7.01 off)
View Deal
HP Color LaserJet Pro M254dw
From: HP
Was: £169
Now: £119 (£50 cashback)
View Deal
What to look for in printer deals
It’s important to keep in mind that the price of the printer is just the beginning. You’ll also need to consider ink costs. Often what looks like a great value printer can turn out to be expensive in the long run because of expensive ink. Some manufacturers, including HP, now offer ink subscriptions which give you a fixed price for a certain number of prints per month, which makes it easy to know how much you'll be spending.
Most modern printers are multifunction all-in-one devices that can scan and copy documents in addition to your standard printing capabilities. Some include a fax machine, too.
You can find printer reviews by category – choose from budget, laser, laser colour, inkjet and all-in-one models
Look out for Wi-Fi-enabled printers, as these are incredibly useful for when you need to print from your phone or a laptop. Also consider whether they have USB ports or memory card slots for easier photo printing.
There are lots of different types of printers available, which can make it really tricky to decide which is right for you. It’s worth first noting that the printer market moves very slowly, so don't be afraid of buying last year's model.
Inkjet vs Laser
These are the two main printing technologies. An inkjet printer sprays tiny dots of ink onto paper and are generally cheaper than laser printers (though you may pay more in cartridges in the long run).
Laser printers, on the other hand, use a powdered ink called toner. The paper gets electronically charged to attract the ink into position. It's then fused with heat onto the page. Laser printers work best for text and generally for printing quickly at high volume.
In terms of colour printing, inkjet printers can product high quality images but are usually slower. Colour laser printers, while faster than inkjets are more expensive to buy, costing from around £130.
Ink cartridges might look cheaper than toner cartridges, but consider the cost per page: toner can often print 1000 pages or more, but ink might last only 100-200 pages. You can also use third-party toner which is much cheaper than genuine toner from Xerox, Samsung and others. Just make sure using it doesn't void your warranty.
For more advice on which printer to buy, visit our best printer round-up.
Where to find printer deals
We’re bringing you our carefully curated list of the best printer deals right here, but here are a few retailers you can check out for yourself for printer deals:
If you're hoping to catch one of Amazon's limited-time Lightning Deals, we'd recommend signing up for the 30 day free trial of Amazon Prime. Not only will this get you free next day delivery, but you'll also get access to Lightning Deals 30 minutes earlier than non-Prime members.
Where to find ink cartridge deals
Cartridges can be expensive in the long run, but you can score a deal if you know where to look. Aside from checking the retailers mentioned above, there are a couple other places worth looking. It's also well worth experimenting with third-party cartridges which can work out at a fraction of the price. We've had good success with third-party toner from Amazon and ebay.
Groupon often has discounts popular brands such as HP, Canon and Epson. See Groupon cartridge deals.
eBay is another place to check, though ensure you buy from an authorised reseller or a trustworthy source with a strong track record of positive reviews and ratings. See cartridge deals on eBay.
Best printer deals
1. HP OfficeJet 5230
From: Currys PC World
Was: £99.99
Now: £39 (£60.99 off)
View Deal
Print, copy and scan with this all-in-one printer. It also supports AirPrint on Apple devices but the Wi-Fi also supports Android and Windows. This deal also gets you four months of free HP Instant Ink.
2. Canon Pixma TS5050
From: Amazon
Was: £119.99
Now: £59.99 (50% off)
View Deal
The Pixma TS5050 will print, scan and copy. And at this price it's a good deal.
3. HP Deskjet 2622
From: Amazon
Was: £32
Now: £24.99 (£7.01 off)
View Deal
This compact HP inkjet printer can print, copy and scan. It comes with a two-month trial of HP instant ink - which re-orders ink so you have it when you need it.
4. HP Color LaserJet Pro M254dw
From: HP
Was: £169
Now: £119 (£50 cashback)
View Deal
Prints A4 up to 21 ppm in mono and up to 21 ppm in colour. Can hold 250 sheets. Print from your smartphone using the HP app.
With this deal, you must claim cashback from HP within 30 days of purchase.
5. HP Envy 5030 All-in-One Printer - Alexa-enabled
From: Amazon
Was: £69.99
Now: £54.99 (£15 off)
View Deal
Save on this all-in-one printer which you can control through the Amazon Alexa smart assistant. You also get three months worth of ink through HP's Instant Ink programme. You get an additional £2.75 off at checkout, which brings the total money off to £17.75.
6. HP Envy Photo 6234 All-in-One Wireless Inkjet Printer
From: Currys PC World
Was: £89.99
Now: £59.99 (£30 off after cashback)
View Deal
The printer works via WiFi, AirPrint and Google Cloud Print if you want to print wirelessly. It offers automatic double-sided printing at up to 13 prints per minute, and there's a dedicated photo paper tray too.
This deal gets you 4 months of HP InstantInk, and if you sign up for an Instant Ink subscription (there are no contracts) you can claim £30 cashback from HP until 31/10/19.
7. Epson Ecotank ET-2650 All-in-One Wireless Inkjet Printer
From: Currys PC World
Was: £230
Now: £150 (£80 off)
View Deal
This printer comes with two years worth of ink. It works with Apple AirPrint and Google Cloud Print and can also be used as a copier and scanner.


Capital City Trail reopens after multiyear restorations, bridge replacement
by Emilie BurdittMADISON, Wis. - Following restorations and a bridge replacement along the Capital City Trail between Fish Hatchery Road and Seminole Highway, the trail is reopening, according to a news release from Dane County Executive Joe Parisi.
The restorations took place over multiple years to improve safety on the 10-mile trail.
"The Capital City Trail is one of the most popular locations to bike in Dane County, and we are committed to restoring the trail so it can continue to be enjoyed for many years to come," Parisi said in the release.
Parisi's 2020 budget includes $250,000 to go toward the next section of work on the trail, according to the release. Some $1.5 million has already been spent on it.
"By investing in our network of trails, we enhance our outdoor spaces and Dane County residents' quality of life," Parisi said in the release.
All restorations include pavement resurfacing, drainage improvements, ADA improvements and signage upgrades. These restorations are being done for the more than 125,000 people who use the trail each year.


{% extends 'questionnaire/base.html' %} {% load static %} {% block body %}
If you would like to have a 30 min virtual interview on the topic instead please fill in your email address here so we can contact you to make arrangements.
We will only use your email address for this purpose and will not share it with any other parties.


Implementors of intermediate caches (proxies) have found it useful to convert the media type of certain entity bodies. A non-transparent proxy might, for example, convert between image formats in order to save cache space or to reduce the amount of traffic on a slow link.
If alwaysAddNoTransform
is true (it is false by default),
Polipo will add a 'no-transform' cache control directive to all
outgoing requests. This directive forbids (compliant) intermediate
caches from responding with an object that was compressed or
transformed in any way.


Lebanese broadcaster LBCI: banks will return to work on Tuesday
BEIRUT (Reuters) - Banks in Lebanon will reopen on Tuesday after a week-long closure, local broadcaster LBCI reported on Monday, following a bank employee union’s revision of new security measures.
Lebanese banks have been closed since Nov. 12 because of a strike that the bank employees’ federation said was over security concerns by staff facing intimidation from clients demanding their money.


PAYTPV iOS SDK
The PAYTPV SDK provides easy to use methods for connecting to the PAYTPV API.
Requirements
The SDK is compatible with iOS apps supporting iOS 8.0 and later.
Installation
CocoaPods
CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:
$ gem install cocoapods
To integrate PAYTPV into your project, specify it in your Podfile
:
pod 'PAYTPV'
Example Podfile:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
target '<TARGET_NAME>' do
pod 'PAYTPV'
end
Then, run the following command:
$ pod install
Don’t forget to use the .xcworkspace
instead of the .xcodeproj
from now on.
Carthage
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate PAYTPV into your project using Carthage, specify it in your Cartfile
:
github "PayTpv/IOS-SDK" ~> 1.0
Then, run carthage update
to build the framework and drag the built PAYTPV.framework
into your Xcode project.
Usage
After you’re done installing the SDK, you need to create the configuration object with your terminal details:
Swift:
import PAYTPV
let config = PTPVConfiguration(merchantCode: "MERCHANT_CODE", terminal: "TERMINAL", password: "PASSWORD", jetId: "JETID")
PTPVAPIClient.shared().configuration = config
ObjC:
#import <PAYTPV/PAYTPV.h>
PTPVConfiguration *config = [[PTPVConfiguration alloc] initWithMerchantCode:@"MERCHANT_CODE"
terminal:@"TERMINAL"
password:@"PASSWORD"
jetId:@"JETID"];
[[PTPVAPIClient sharedClient] setConfiguration:config];
After you created the configuration, you can start making requests:
Swift:
// get the user's card details
let card = PTPVCard(pan: "4111111111111111", expiryDate: "0518", cvv: "123")
// add the card
PTPVAPIClient.shared().addUser(card) { (user, error) in
guard let user = user else {
if let error = error {
// handle error
}
return;
}
// define payment details
let purchaseRequest = PTPVPurchaseRequest(amount: "199",
order: "ios_1234",
currency: PTPVCurrencyEUR,
productDescription: nil,
owner: nil,
scoring: nil)
// make the payment
PTPVAPIClient.shared().executePurchase(purchaseRequest, for: user, completion: { (purchase, error) in
guard let purchase = purchase else {
if let error = error {
// handle error
}
return;
}
// handle successful payment
})
}
ObjC:
// get the user's card details
PTPVCard *card = [[PTPVCard alloc] initWithPan:@"4111111111111111"
expiryDate:@"0518"
cvv:@"123"];
// add the card
[[PTPVAPIClient sharedClient] addUser:card completion:^(PTPVUser * _Nullable user, NSError * _Nullable error) {
if (error != nil) {
// handle error
return;
}
// define payment details
PTPVPurchaseRequest *purchaseRequest;
purchaseRequest = [[PTPVPurchaseRequest alloc] initWithAmount:@"199"
order:@"ios_1234"
currency:PTPVCurrencyEUR
productDescription:nil
owner:nil
scoring:nil];
// make the payment
[[PTPVAPIClient sharedClient] executePurchase:purchaseRequest forUser:user completion:^(PTPVPurchase * _Nullable response, NSError * _Nullable error) {
if (error != nil) {
// handle error
return;
}
// handle successful payment
}];
}];
If you have several terminals, you can instantiate a separate client with the configuration instead of using the shared client:
Swift:
let client = PTPVAPIClient(configuration: config)
client.addUser(..., completion: ...)
Objc:
PTPVAPIClient *client = [[PTPVAPIClient alloc] initWithConfiguration:config];
[client addUser:... completion:...];
Examples
There are Swift and Objective-C example applications included in the repository. They show how to use the SDK to: add a card, remove a card, make a payment, make a refund. Check the Examples
folder.


var listener: PurchasesListener?
Adds a PurchasesListener to handle async updates from Purchases. Remember to remove the listener when needed (i.e. Activity.onDestroy if it's an activity to avoid memory leaks)
listener
- Listener that will handle async updates from Purchases


Contact Form and Search Test
Home
(current)
Contact
Pricing
Social
Your Name (required):
Your Email (required):
Subject:
How can we help you?
Submit


RT @mfeathers: Pi [the universe is far more strange than we thought] http://bit.ly/dzmSGS
4/6/2010, 9:36:17 AM
Favs: 0
Retweets: 0
link--- layout: tweet ---
RT @mfeathers: Pi [the universe is far more strange than we thought] http://bit.ly/dzmSGS
4/6/2010, 9:36:17 AM
Favs: 0
Retweets: 0
link


--- title: The Beauty Destination date: 2017-01-06 00:00:00 Z layout: project type: project subtitle: Web Design | Development background: "/img/projects/the-beauty-destination/portfolio-2-thumb.png" ---
A fashion and beauty site run by Michelle Money & Laura Armstrong promoting education and availability of beauty products throughout the industry. Working with Michelle and Laura was a privilege especially when your clients have their vision and direction already ready for you! The Beauty Destination focuses on Eminence, a 100% organically grown, hand-picked, and hand-stirred product that is full of rich antioxidants, vitamins, and minerals.


DIRECTIONS
-
Preheat Oven: Preheat oven to 350 degrees F (175
degrees C).
-
Make Lemon Filling: In a medium saucepan ...
- Whisk together 1 cup sugar, flour, cornstarch, and salt.
- Stir in water, lemon juice and lemon zest.
-
Cook over medium-high heat, stirring frequently, until mixture
comes to a boil.
- Stir in butter.
-
Place egg yolks in a small bowl and gradually whisk in 1/2 cup of
hot sugar mixture.
- Whisk egg yolk mixture back into remaining sugar mixture.
-
Bring to a boil and continue to cook while stirring constantly
until thick.
- Remove from heat.
- Pour filling into baked pastry shell.
-
Make Meringue: In a large glass or metal bowl ...
- Whip egg whites until foamy.
-
Add sugar gradually, and continue to whip until stiff peaks form.
- Spread meringue over pie, sealing the edges at the crust.
-
Bake: Bake in preheated oven for 10 minutes, or until
meringue is golden brown.
This is our favorite recipe here at Granny's Pies. It has been enjoyed
by pie fans for many years. It's Granny's favorite! We hope you'll find
that this recipe is delicious and also easy to follow; it's a piece of
cake pie!
USER COMMENTS


Candiani Creates First Biodegradable Stretch Denim
Candiani Denim launches its first biodegradable stretch denim, made with its new patented technology and organic cotton.
by Tracey GreensteinBlue jeans are continuing to get a little more green. Italian family-owned sustainable denim mill Candiani said today that it has launched the world’s first biodegradable stretch denim, made from its patented Coreva Stretch Technology, a new natural, rubber fiber. Its “bio-stretch” selvage denim was created in partnership with Dutch denim-maker Denham.
Part of its “Life Is Movement” collection — which offers low-impact denim — the styles are available exclusively at Denham’s stores and web site. Candiani said the collection “[marks] a new era of performance denim made from bio-based materials and renewable resources.”
The new biodegradable stretch selvage denim was created using plant-based yarns and is entirely free from plastics and micro-plastics, due to Coreva, which replaces commonly used synthetics and petrol-based elastomers without compromising elasticity, recovery and durability, the firm said. Candiani’s Coreva integrates organic cotton that is wrapped around its natural rubber fiber; and by replacing traditional synthetics with its custom-engineered component, the stretch denim fabric is both biodegradable and high performing in elasticity and recovery.
Interestingly, Alberto Candiani, fourth-generation son and owner of the Candiani family mill, was inspired to create Coreva Stretch Technology while on a shopping trip for salami cold-cuts in his local delicatessen in Milan, when he had the idea to create a new, natural rubber yarn. Candiani said, “In a world where resources are diminishing and landfills are overflowing with discarded garments, it’s our duty to look for renewable resources, in addition to biodegradable and compostable materials. Denim has to take the lead as the indigo flag of this revolution. We are not doing this because there is a demand, but because it’s the right thing to do.”
For more business news from WWD, see:
Fashion Brand Vida ‘Redefines Growth,’ Addresses Consumption
At the Source: Peruvian Manufacturing in Focus
Change Agents: Denim Brands Working to Transform the Industry


THE FIFTH ELEMENT (Columbia - 1997) Starring Bruce Willis, Gary Oldman, Ian Holm, Milla Jovovich, Chris Tucker, Luke Perry, Brion James Screenplay by Luc Besson, Robert Mark Kamen Produced by Patrice Ledoux Directed by Luc Besson Running time: 127 minutes
** 1/2 (out of four stars)
Note: Some may consider portions of the following text to be spoilers. Be forewarned.
-------------------------------------------------------------
Regarding Luc Besson's THE FIFTH ELEMENT, nobody could quite summarize it so succinctly and so accurately as Mr. Besson's himself; of his film, which he conceived at age sixteen, he commented:
"I was writing solely for the pleasure of it. I just put down on paper everything that I love and see. I just like to go for it, and I consider the serious questions later."
That this is clearly evident in THE FIFTH ELEMENT would be somewhat of an understatement; this film seems to be a celluloid collage of a sci-fi fanboy's wildest fantasies. You want a goon squad of shapeshifting alien villians? You want benevolent aliens marching about Egyptian ruins? You want a giant, virtually unstoppable clump of Pure Evil rushing towards planet Earth, signifying the destruction of Life As We Know It(tm)? You want a battered Everyman (it's not by accident he's a taxi driver, the cinematic signifyer that This Is An Average Joe - see HEAVY METAL for a similar futuristic equivalent), pretty waif in tow, struggling against a sinister meglomaniac and his army of mercenaries to Save The Planet(tm) in a prototypical battle of Good vs. Evil? Boy, have you come to the right movie.
Mr. Besson throws striking sequences one after the other onscreen, and while they hardly coalesce in any sort of cohesive manner, in an odd way THE FIFTH ELEMENT sort of works; it's loud, bizarre, and remarkably silly, but to its credit the film never takes itself seriously in the least, and we are bombarded by so many audacious images and sights that it never becomes boring.
Not exactly high praise, to be sure, but THE FIFTH ELEMENT isn't exactly a great film. Its greatest strengths are its visuals; the sets and costumes are astonishing. Save for a fifteen-minute prologue, the film is set in 23rd century Earth, and Mr. Besson's view of it is a staggering one: multi-levelled congested traffic from flying automobiles zipping about, towering skyscrapers stretching above the smog on the surface beyond the reaches of the eye, plummeting elevators screaming down rails, and, of course, that Universal constant, McDonalds. The scenes in which we explore this strange new world through the eyes of Leeloo (Milla Jovovich), our genetically re-engineered heroine, are a visual feast, and a triumph not only for Mr. Besson's vision, but for the effects team at Digital Domain. Even that staple of the uninspired action film, the chase scene, takes new life in THE FIFTH ELEMENT; it's really something to watch Korben Dallas (Bruce Willis), our taxi-driving hero, desperately weave through three dimensional traffic in order to attempt to lose the police. Dan Weil's award-worthy production design is terrific, particularly the magnificent auditorium scene in the off-Earth resort complex.
THE FIFTH ELEMENT is filled with sequences and effects which should be a sci-fi fanboy's delight: the onscreen meticulous genetic reconstruction of Leeluu, from a scrap of recovered DNA to a scantily-clad, orange-haired pixie; the demonstration of evil Zorg's (Gary Oldman) powerful homing gun, which is never again used in the film. Why does Mr. Besson show us this stuff in the film? Why, because (in my best fanboy voice) it looks really really cool! (fanboy voice off) They're along the same lines as the gratuitous nothing other than to impress.
Tossing every wild idea that comes your way, though, can result in a lot of unnecessary onscreen junk which rather clearly fails to serve any purpose. I really couldn't think of any reason as to why the tentacled blue alien diva had to be tossed into the mix, other than so that Mr. Besson could perform a lot of cross-cutting between her wailing and the action going on elsewhere in the resort complex. For that matter, other than for sheer audacity, was it really even necessary for the resort complex to be halfway across the galaxy?
At this point I come to the most blatant of the unnecessary elements (no pun intended) of the film; the prancing, perpetually-screeching over-the-top Ruby Rhod (Chris Tucker) character. Why, oh why? He seems to be there sheerly for comic relief, but given all of the other comedic elements in the film (Ian Holm's hapless, bumbling priest Cornelius, Gary Oldman's scenery-chewing Zorg), was it even necessary? The Ruby Rhod character never works and is extremely grating, and by the time the film reached its denoument I had the sinking feeling that he was introduced simply so that there'd be an obligatory fourth person around in order to activate The Fifth Element.
Coming off the best in THE FIFTH ELEMENT is Milla Jovovich, as the wide-eyed Leeluu, who's so wonderfully expressive in her performance that I had to ground myself by noting that she had virtually no dialogue in the film. Ian Holm was also effective as the good-hearted but incompentant priest (no world saver is he). Gary Oldman is one of today's best actors, but his over-the-top performance in Mr. Besson's earlier film, the terrific THE PROFESSIONAL (a.k.a. LEON), is dwarfed by his bizarre villanous turn here - granted, it does make for interesting viewing, particularly when one considers the pointlessness of his role. Bruce Willis' performance in THE FIFTH ELEMENT, however, is unremarkable; surrendering to the gargantuan scope of the film's set pieces and its mythological struggle of Good vs. Evil, he's merely along for the ride.
THE FIFTH ELEMENT is a hodgepodge of individual sequences, visual effects and set pieces, some of them wonderfully inspired, and others misfiring badly. It doesn't all work out together, but on the basis of the effective spectacle of Mr. Besson's wonderously bizarre vision alone, the film is worth seeing, and the other strengths in THE FIFTH ELEMENT (of which there are, believe it or not, a few) are icing on the cake.
- Alex Fung email<EMAIL_ADDRESS>web : http://www.ncf.carleton.ca/~aw220/
-- Alex Fung<EMAIL_ADDRESS>| http://www.ncf.carleton.ca/~aw220/ "God, I loved it. 'I'll send you a copy.' BAM! Bitch went down. 'I'll send you a copy.' BAM! Sid - Superbitch!" - Rose McGowan, SCREAM
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Developer • Web Designer • Photographer • Musicologist • Amateur Chef • Backpacker • Linguist • Friend
Graduated June, 2015 with a B.A. in Computer Science
Data Structures, Software Design, Algorithms, Computer Organization and Architecture, Computability and Complexity, Programming Language Design and Implementation, Data Mining, Evolutionary Computing and Artificial Life


Java
Endorsed by Rafal Szymanski and 2 others who are highly skilled at this
Endorsed by Craig Burns (mutual connection)
SQL
Endorsed by Honorata Harasim-Nyszk, who is highly skilled at this
C++
Endorsed by Bart Karmilowicz and 1 other who is highly skilled at this
Machine Learning
Algorithms
Shell Scripting
Network Security
Perl
Scala
C#
Spring
DB2
Sybase
Python
J2EE
C
Java Enterprise Edition
Hibernate
Haskell
GWT
Prolog
Computer Architecture


Various methods for MRI tissue classification.
| Version: | 0.5-1 |
| Depends: | R (≥ 2.14.0), lattice (≥ 0.18-8), misc3d (≥ 0.8-1), oro.nifti (≥ 0.4.0) |
| Imports: | methods |
| Suggests: | tkrplot (≥ 0.0-23) |
| Published: | 2018-05-27 |
| Author: | Dai Feng and Luke Tierney |
| Maintainer: | Dai Feng <dai_feng at merck.com> |
| License: | GPL-2 | GPL-3 [expanded from: GPL] |
| NeedsCompilation: | yes |
| Citation: | mritc citation info |
| Materials: | ChangeLog |
| In views: | Cluster, MedicalImaging |
| CRAN checks: | mritc results |
| Reference manual: | mritc.pdf |
| Package source: | mritc_0.5-1.tar.gz |
| Windows binaries: | r-devel: mritc_0.5-1.zip, r-release: mritc_0.5-1.zip, r-oldrel: mritc_0.5-1.zip |
| OS X binaries: | r-release: not available, r-oldrel: not available |
| Old sources: | mritc archive |
| Reverse imports: | BayesBD |
Please use the canonical form https://CRAN.R-project.org/package=mritc to link to this page.


{% extends "base.html" %} {% load static %} {% block title %}Sign in ‹ {{ block.super }}{% endblock %} {% block body_attr %} data-active-nav-id="signin"{% endblock %} {% block body %}
In order to sign in, you'll need an Google Account. If you do not have an Google Account yet, you can create one here.


import logging
from ast import literal_eval
from time import sleep
from os.path import abspath
from concurrent.futures import ProcessPoolExecutor
from MyPiEye.Storage import ImageStorage
from MyPiEye.motion_detect import MotionDetect
from MyPiEye.usbcamera import UsbCamera
log = logging.getLogger(__name__)
"""
The workhorse of the program.
"""
[docs]class MainApp(object):
[docs] def __init__(self, config):
"""
:param config: a dict of consolidated options (defaults, ini, cmdline)
"""
self.config = config
# instanciates, but doesn't initialize
camera_id = literal_eval(config['camera'])
self.camera = UsbCamera(
resolution=config['resolution'],
camera=camera_id
)
# the camera can only be set from the .ini
camera_settings = config.get('iniconfig', {})
# convert the ini string key/val entries into a list of tuples
ignore_dict = camera_settings.get('ignore', {})
ignore_boxes = []
for _, v in ignore_dict.items():
val = literal_eval(v)
ignore_boxes.append(val)
# get the minimum sizes
minsizes = camera_settings.get('minsizes', {})
self.workdir = config['workdir']
self.workdir = abspath(self.workdir)
self.motiondetect = MotionDetect(
workdir=self.workdir,
# ini entries are always read as strings
minsize=literal_eval(minsizes.get('minsize', '0')),
ignore_boxes=ignore_boxes
)
# self.check should have ensured it exists
self.savedir = config['savedir']
self.executor = ProcessPoolExecutor(max_workers=2)
self.storage = ImageStorage(config)
[docs] def start(self):
"""
Initializes the camera, and starts the main loop. Cleans up when it stops.
:return: False on fail, True if the loop ends.
"""
try:
if not self.camera.init_camera():
log.error('Failed to open camera')
return False
self.watch_for_motions()
finally:
log.warning('Shutting down')
self.camera.close_camera()
log.warning('Waiting on external process shutdown')
self.executor.shutdown()
return True
[docs] def save_images(self, cv_image, capture_dt, motions):
"""
Saves CV2 image to various locations, with annotations.
:param cv_image: CV2 image
:param capture_dt: ``datetime``, UTC expected
:param motions: list of box lists.
:return:
"""
ymd = capture_dt.strftime('%y%m%d')
hms = capture_dt.strftime('%H%M%S.%f')
dtstamp = capture_dt.strftime('%y/%m/%d %H:%M:%S.%f')
# unaltered
clean_fname = '{}/{}.{}.jpg'.format(self.workdir, ymd, hms)
MotionDetect.save_cv_image(cv_image, clean_fname)
log.info('Saved {}'.format(clean_fname))
# timestamp
ts_fname = '{}/{}.{}.ts.jpg'.format(self.workdir, ymd, hms)
ts_image = MotionDetect.add_timestamp(cv_image, dtstamp)
MotionDetect.save_cv_image(ts_image, ts_fname)
log.info('Saved {}'.format(ts_fname))
# fully annotated
full_fname = '{}/{}.{}.box.jpg'.format(self.workdir, ymd, hms)
full_image = MotionDetect.add_motion_boxes(ts_image, motions)
MotionDetect.save_cv_image(full_image, full_fname)
log.info('Saved {}'.format(full_fname))
return clean_fname, ts_fname, full_fname
[docs] def watch_for_motions(self):
"""
Main loop for watching for changes
:return: Yields tuple of changes
"""
retries = 0
while True and retries < 3:
# Note: this is a CV2 image.
current_img = self.camera.get_image()
if current_img is None:
log.error('Failed to get image')
sleep(1)
retries += 1
continue
retries = 0
motion = self.motiondetect.motions(current_img)
if motion is not None:
log.debug('Motion detected.')
capture_dt, movements = motion
# process and save temp images
files = self.save_images(current_img, capture_dt, movements)
# store the temp files in their permanent locations
subdir = capture_dt.strftime('%y%m%d')
self.storage.save_files(subdir, files[2], files[1], capture_dt)
else:
# nothing to do, so goof off a fraction of a second
sleep(.1)
if retries >= 2:
log.error('Failed to get image after {} attempts'.format(retries + 1))


Motivation
How does life look through the 'pleasure, passion and purpose' lens?
Completely opposite of what it has been till date. I mean I have always believed that happiness should be the sole motive of life but the sustainability factor never occurred to me before. My aim now will be to find a purpose and work towards it instead of doing things for pleasure.
From the 'discovering values and higher purpose' exercise,
One of my core values is helping people in need. I have always tried to help my family, friends or whoever I could whenever I could. I believe that when people are struggling and are in need, a helping hand can provide a huge support. Just knowing that you are not alone in the moment of adversity can give one a huge boost to keep fighting and can act as a great motivation.
How did you find the resilience ideas and meditation exercise?
The ideas were very effective. Having a calm body and mind (inner calm) , I found that I was a lot more emotionally stable during the exercise than the actual experience. I could convince myself easily to let go of grasping and aversion and that the experiences were only physiological sensations, something temporary (emotional resilience) and that whatever the experience there's always light at the end of the tunnel (cognitive resilience).


Home
Menu
Music
Jobs
Sale Report
Update Menu
Follow the Winding Road to JavaJam
Specialty Coffee and Tea
Bagels, Muffins, and Organic Snacks
Music and Poetry Readings
Open Mic Night Every Friday
54321 Route 42
Ellison Bay, WI54210
888-555-5555