| Total net profit | -1.55 | Gross profit | 0.48 | Gross loss | -2.03 |
| Profit factor | 0.24 | Expected payoff | -0.26 | ||
| Absolute drawdown | -2.03 | Maximal drawdown (%) | 1.29 (-174.32%) | ||
| Total trades | 6 | Profit trades (% of total) | 1 (16.67%) | Loss trades (% of total) | 5 (83.33%) |
| Long positions (won %) | 1 (0.0%) | Short positions (won %) | 5 (20.0%) | ||
| Largest | profit trade | 0.48 | loss trade | -0.74 | |
| Average | profit trade | 0.48 | loss trade | -0.41 | |
| Minimum | profit trade | 0.48 | loss trade | -0.19 | |
| Maximum | take profit in pips | 182.2 | stop loss in pips | -90.0 | |
| Average | take profit in pips | 129.4 | stop loss in pips | -44.5 | |
| Minimum | take profit in pips | 40.7 | stop loss in pips | -17.0 | |
| Maximum | Reward-Risk | 9.5 | Duration in minutes | 18 | |
| Average | Reward-Risk | 4.5 | Duration in minutes | 6.3 | |
| Minimum | Reward-Risk | 0.5 | Duration in minutes | 0 | |
| Maximum | consecutive wins (profit in money) | 1.0 (0.48) | consecutive losses (loss in money) | 5.0 (-2.03) | |
| Average | consecutive wins | 1.0 | consecutive losses | 5.0 |
| Total net profit | -0.19 | Gross profit | 0.0 | Gross loss | -0.19 |
| Profit factor | 0.0 | Expected payoff | -0.19 | ||
| Absolute drawdown | 0.0 | Maximal drawdown (%) | 0.0 (0.0%) | ||
| Total trades | 1 | Profit trades (% of total) | 0 (0.0%) | Loss trades (% of total) | 1 (100.0%) |
| Largest | profit trade | 0.0 | loss trade | -0.19 | |
| Average | profit trade | 0.0 | loss trade | -0.19 | |
| Minimum | profit trade | 0.0 | loss trade | -0.19 | |
| Maximum | take profit in pips | 161.3 | stop loss in pips | -17.0 | |
| Average | take profit in pips | 161.3 | stop loss in pips | -17.0 | |
| Minimum | take profit in pips | 161.3 | stop loss in pips | -17.0 | |
| Maximum | Reward-Risk | 9.5 | Duration in minutes | 0.0 | |
| Average | Reward-Risk | 9.5 | Duration in minutes | 0.0 | |
| Minimum | Reward-Risk | 9.5 | Duration in minutes | 0.0 | |
| Maximum | consecutive wins (profit in money) | 0.0 (0.0) | consecutive losses (loss in money) | 1.0 (-0.19) | |
| Average | consecutive wins | 0.0 | consecutive losses | 1.0 |
| Total net profit | -1.36 | Gross profit | 0.48 | Gross loss | -1.84 |
| Profit factor | 0.26 | Expected payoff | -0.27 | ||
| Absolute drawdown | -1.84 | Maximal drawdown (%) | 1.1 (-148.65%) | ||
| Total trades | 5 | Profit trades (% of total) | 1 (20.0%) | Loss trades (% of total) | 4 (80.0%) |
| Largest | profit trade | 0.48 | loss trade | -0.74 | |
| Average | profit trade | 0.48 | loss trade | -0.46 | |
| Minimum | profit trade | 0.48 | loss trade | -0.28 | |
| Maximum | take profit in pips | 182.2 | stop loss in pips | -90.0 | |
| Average | take profit in pips | 123.1 | stop loss in pips | -50.0 | |
| Minimum | take profit in pips | 40.7 | stop loss in pips | -25.0 | |
| Maximum | Reward-Risk | 7.3 | Duration in minutes | 18.0 | |
| Average | Reward-Risk | 3.5 | Duration in minutes | 7.6 | |
| Minimum | Reward-Risk | Duration in minutes | 1.0 | ||
| Maximum | consecutive wins (profit in money) | 1.0 (0.48) | consecutive losses (loss in money) | 4.0 (-1.84) | |
| Average | consecutive wins | 1.0 | consecutive losses | 4.0 |


|
|
Chapter 31: PerformanceThis chapter is concerned with performance, that is, the time taken to perform a computation, and how to improve it.There is one golden rule for achieving good performance in a J program. The rule is to try to apply verbs to as much data as possible at any one time. In other words, try to give to a verb arguments which are not scalars but vectors or, in general, arrays, so as to take maximum advantage of the fact that the built-in functions can take array arguments. The rest of this chapter consists mostly of harping on this single point. 31.1 Measuring the Time TakenThere is a built-in verb 6!:2 . It takes as argument an expression (as a string) and returns the time (in seconds) to execute the expression. For example, given :mat =: ? 256 256 $ 256 NB. a random matrixThe time in seconds to invert the matrix is given by: 6!:2 '%. mat' 0.075273If we time the same expression again, we see: 6!:2 '%. mat' 0.0734835Evidently there is some uncertainty in this measurement. Averaging over several measurements is offered by the dyadic case of 6!:2 . However, for present purposes we will use monadic 6!:2 to give a rough and ready but adequate measurement. If we intend to compare times for several expressions, it will be convenient to introduce a little utility function: compare =: (; (6!:2)) @: > "0 NB. compare timings compare '+/ i. 1000' ; '*/ i. 1000' +----------+----------+ |+/ i. 1000|2.14228e_5| +----------+----------+ |*/ i. 1000|8.44842e_6| +----------+----------+ 31.2 The Performance MonitorAs well as 6!:2, there is another useful instrument for measuring execution times, called the Performance Monitor. It shows how much time is spent in each line of, say, an explicit verb.Here is an example with a main program and an auxiliary function. We are not interested in what it does, only in how it spends its time doing it..
main =: 3 : 0 m =. ? 10 10 $ 100x NB. random matrix u =. =/ ~ i. 10 NB. unit matrix t =. aux m NB. inverted p =. m +/ . * t 'OK' ) aux =: 3 : 0 assert. 2 = # $ y NB. check y is square assert. =/ $ y %. y )We start the monitor: load 'jpm' start_jpm_ '' 178570and then enter the expression to be analyzed main 0 NB. expression to be analyzed OKTo view the reports available: firstly , the main function: showdetail_jpm_ 'main' NB. display measurements Time (seconds) +--------+--------+---+-----------------+ |all |here |rep|main | +--------+--------+---+-----------------+ |0.000004|0.000004|1 |monad | |0.000079|0.000079|1 |[0] m=.?10 10$100| |0.000011|0.000011|1 |[1] u=.=/~i.10 | |0.042640|0.000005|1 |[2] t=.aux m | |0.062151|0.062151|1 |[3] p=.m+/ .*t | |0.000015|0.000015|1 |[4] 'OK' | |0.104900|0.062265|1 |total monad | +--------+--------+---+-----------------+and we may wish to look at the auxiliary function: showdetail_jpm_ 'aux' Time (seconds) +--------+--------+---+-----------------+ |all |here |rep|aux | +--------+--------+---+-----------------+ |0.000004|0.000004|1 |monad | |0.000004|0.000004|1 |[0] assert. 2=#$y| |0.000010|0.000010|1 |[1] assert. =/$y | |0.042617|0.042617|1 |[2] %.y | |0.042635|0.042635|1 |total monad | +--------+--------+---+-----------------+Evidently, main spends most of its time executing lines 2 and 3 . Notice that the time under "all" of line 2 is near enough equal to the time for line 2 "here", (that is, in main ) plus the time for "total" of aux 31.3 The Golden Rule: Example 1Here is an example of a function which is clearly intended to take a scalar argument.collatz =: 3 : 'if. odd y do. 1 + 3 * y else. halve y end.' odd =: 2 & | halve =: -:With a vector agument it gives the wrong results collatz 2 3 4 5 6 7 8 9 1 1.5 2 2.5 3 3.5 4 4.5So we need to specify the rank to force the argument to be scalar (collatz "0) 2 3 4 5 6 7 8 9 1 10 2 16 3 22 4 28This is an opportunity for the Golden Rule, so here is a version designed for a vector argument: veco =: 3 : 0 c =. odd y (c * 1+3*y) + (1 - c) * (halve y) )The results are the same: data =: 1 + i. 1e5 (collatz"0 data) -: (veco data) 1Here is a variation. The adverb } is applied to the bit-vector odd y to generate a verb, and the monadic case of this verb meshes together the first and second items of its argument. meco =: 3 : 0 c =. odd y (c }) (halve y) ,: (1+3*y) ) (meco data) -: veco data 1The vector versions are faster: compare 'collatz"0 data ' ; 'veco data ' ; 'meco data' +---------------+----------+ |collatz"0 data |0.315611 | +---------------+----------+ |veco data |0.0280563 | +---------------+----------+ |meco data |0.00665947| +---------------+----------+ 31.4 Golden Rule Example 2: Conway's "Life"J. H. Conway's celebrated "Game of Life" needs no introduction. There is a version in J at Rosetta Code, reproduced here:pad=: 0,0,~0,.0,.~] life=: (_3 _3 (+/ e. 3+0,4&{)@,;._3 ])@padTo provide a starting pattern, here is a function rp which generates an r-pentomino in a y-by-y boolean matrix. rp =: 3 : '4 4 |. 1 (0 1; 0 2; 1 0; 1 1; 2 1) } (y,y) $ 0' ] M =: rp 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 life M 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0We notice that the life verb contains ;._3 - it computes the count of neighbours of each cell separately, by working on the 3-by-3 neighbourhood of that cell. By contrast here is a version which computes all the neighbours-counts at once, by shifting the whole plane to align each cell with its neighbours. sh =: |. !. 0 E =: 0 _1 & sh W =: 0 1 & sh N =: 1 & sh S =: _1 & sh NS =: N + S EW =: E + W NeCo =: NS + (+ NS) @: EW NB. neighbour-count evol =: ((3 = ]) +. ([ *. 2 = ])) NeCoThe last line expresses the condition that (neighbour-count is 3) or ("alive" and count is 2).  We will need test-data in the form of these relations in various sizes. It is useful to define a verb to generate test-data from random integers. (Integers are adequate as substitutes for symbols for present purposes.) The argument y is the number of different titles required.maketestdata =: 3 : 0 T =. i. y NB. titles domain A =. i. <. 4 * y % 5 NB. authors domain S =. i. <. y % 2 NB. subjects domain AT =. (?. (#T) $ # A) ,. (?. (#T) $ #T) NB. AT relation TS =. (?. (#T) $ _1+# T) ,. (?. (#T) $ #S) NB. TS relation AT;TS ) 'AT1 TS1' =: maketestdata 12 NB. small test-data 'AT2 TS2' =: maketestdata 1000 NB. medium 'AT3 TS3' =: maketestdata 10000 NB. large 31.5.2 First MethodRecall also from Chapter 18 a verb for the join of relations, which we will take as a starting-point for further comparisons. We can call this the "first method".VPAIR =: 2 : 0 : z =. 0 0 $ '' for_at. x do. z=.z , |: v (#~"1 u) |: at , "1 y end. ~. z ) first =: (1&{ = 2&{) VPAIR (0 3 & {)
This shows that, for example, if author 5 wrote title 8, and title 8 is about subject 2, then author 5 wrote about subject 2. 31.5.3 Second Method: Boolean MatrixHere is another method. It computes a boolean matrix of equality on the titles. Row i column j is true where the title in i{AT equals the title in j{TS . The authors and titles are recovered by converting the boolean matrix to sparse representation, then taking its index-matrix.second =: 4 : 0 'a t' =. |: x 'tt s' =. |: y bm =. t =/ tt NB. boolean matrix of matches sm =. $. bm NB. convert to sparse im =: 4 $. sm NB. index-matrix 'i j' =. |: im (i { a),. (j { s) )Now to check the second method for correctness, that is, giving the same results as the first. We don't care about ordering, and we don't care about repetitions, so let us say that two relations are the same iff their sorted nubs match. same =: 4 : '(~. x /: x) -: (~. y /: y) ' (AT2 second TS2) same (AT2 first TS2) 1Now for some times t1 =: 6!:2 'AT2 first TS2' t2 =: 6!:2 'AT2 second AT2' t3 =: 6!:2 'AT3 first TS3' t4 =: 6!:2 'AT3 second TS3' 3 3 $ ' '; (#AT2) ; (#AT3) ; 'first' ; t1; t3 ; 'second' ; t2; t4 +------+----------+--------+ | |1000 |10000 | +------+----------+--------+ |first |0.0356744 |7.916 | +------+----------+--------+ |second|0.00337303|0.321806| +------+----------+--------+We see that the advantage of the second method is reduced at the larger size, and we can guess this is because the time to compute the boolean matrix is quadratic in the size. We can use the performance monitor to see where the time goes. require 'jpm' start_jpm_ '' 178570 z =: AT3 second TS3 showdetail_jpm_ 'second' NB. display measurements Time (seconds) +--------+--------+---+----------------+ |all |here |rep|second | +--------+--------+---+----------------+ |0.000007|0.000007|1 |dyad | |0.000329|0.000329|1 |[0] 'a t'=.|:x | |0.000208|0.000208|1 |[1] 'tt s'=.|:y | |0.177003|0.177003|1 |[2] bm=.t=/tt | |0.131638|0.131638|1 |[3] sm=.$.bm | |0.000009|0.000009|1 |[4] im=:4$.sm | |0.000160|0.000160|1 |[5] 'i j'=.|:im | |0.017383|0.017383|1 |[6] (i{a),.(j{s)| |0.326736|0.326736|1 |total dyad | +--------+--------+---+----------------+Evidently much of the time went into computing the boolean matrix at line 2. Can we do better than this? 31.5.4 Third method: boolean matrix with recursive splittingHere is an attempt to avoid the quadratic time. If the argument is smaller than a certain size, we use the second method above (which is quadratic, but not so bad for smaller arguments).If the argument is larger than a certain size, we split it into two smaller parts, so that there are no titles shared between the two. Then the method is applied recursively to the parts. By experimenting, the "certain size" appears to be about 256 on my computer. third =: 4 : 0 if. 0 = # x do. return. 0 2 $ 3 end. if. 0 = # y do. return. 0 2 $ 3 end. 'a t' =. |: x 'tt s' =. |: y if. 256 > # x do. bm =. t =/ tt NB. boolean matrix of matches sm =. $. bm im =. 4 $. sm NB. index-matrix 'i j' =. |: im (i { a),. (j { s) else. p =: <. -: (>./t) + (<./t) NB. choose "pivot" title pv =: t <: p x1 =. pv # x x2 =. (-. pv) # x assert. (#x1) < (#x) assert. (#x2) < (#x) qv =. tt <: p y1 =. qv # y y2 =. (-. qv) # y assert. (#y1) < (#y) assert. (#y2) < (#y) (x1 third y1) , (x2 third y2) end. )Check correctness : (AT2 third TS2) same (AT2 second TS2) 1And timings. Experiment on my computer shows the second method will run out of space where the third method will succeed. 'AT4 TS4' =: maketestdata 30000 'AT5 TS5' =: maketestdata 100000 t4a =: 6!:2 'AT4 second TS4' t5 =: 6!:2 'AT2 third TS2' t6 =: 6!:2 'AT3 third TS3' t7 =: 6!:2 'AT4 third TS4' t8 =: 6!:2 'AT5 third TS5' a =: ' '; (#AT2); (#AT3) ; (#AT4); (#AT5) b =: 'second'; t2; t4; t4a; 'limit error' c =: 'third' ; t5; t6; t7 ; t8 3 5 $a,b,c +------+----------+---------+---------+-----------+ | |1000 |10000 |30000 |100000 | +------+----------+---------+---------+-----------+ |second|0.00337303|0.321806 |3.05887 |limit error| +------+----------+---------+---------+-----------+ |third |0.00134601|0.0173196|0.0553821|0.192562 | +------+----------+---------+---------+-----------+In conclusion, the third method is clearly superior but considerably more complex. 31.6 Golden Rule Example 4: Mandelbrot SetThe Mandelbrot Set is a fractal image needing much computation to produce. In writing the following, I have found to be helpful this Wikipedia article .
Computation of the image requires, for every pixel in the image, iteration of a single scalar function until a condition is satisfied. Different pixels will require different numbers of iterations. The final result is the array of counts of iterations for each pixel. Hence it may appear that the Mandelbrot Set is an inescapably scalar computation. It is not, as the following is meant to show. The Golden Rule applies.
31.6.1 Scalar VersionThe construction of an image begins with choosing a grid of points on the complex plane, one for each pixel in the image. Here is a verb for conveniently constructing the grid.makegrid =: 4 : 0 'm n' =. x 'px py qx qy ' =. , +. y (|. py + (i.m) * ((qy-py) % m-1)) (j.~ /) (px + (i.n) * ((qx-px) % n-1)) )The left argument specifies the grid as m-by-n pixels. The right argument specifies the positions of lower-left and upper-right corners of the image as points in the complex plane. To demonstrate with a tiny grid: 3 4 makegrid 0j0 3j4 0j4 1j4 2j4 3j4 0j2 1j2 2j2 3j2 0 1 2 3For a Mandelbrot image, this is more suitable: GRID =: 400 700 makegrid _2.5j_1 1j1Here, the right argument is chosen to be _2.5j_1 1j1 because it is known that the whole of the Mandelbrot image is contained within this region of the complex plane. Notice that this region is a rectangle with sides in the ration 4 : 7. The left argument, m-by-n pixels, is chosen to be in the same ratio. The image is computed by applying a Mandelbrot function to each pixel in the grid. Here is a suitable Mandelbrot function. It follows the design outlined in the Wikipedia article, mfn1 =: 3 : 0 NB. y is one pixel-position v =. 0j0 n =. 0 while. (2 > | v) *. (n < MAXITER) do. v =. y + *: v n =. n+1 end. n )We need to choose a value for MAXITER, the maximum number of iterations. The higher the maximum, the more complex the resulting image. For present purposes let us choose a maximum of 64 iterations, which will give a recognisable image. MAXITER =: 64 NB. maximum number of iterations image1 =: mfn1 " 0 GRIDThe result image1 is a matrix of integers, which can be mapped to colors and then displayed on-screen with: require '~addons/graphics/viewmat/viewmat.ijs' viewmat image1to produce an image looking something like this:
31.6.2 Planar VersionNow we look at a version which computes all pixels at once. Here is a first attempt. It is is a straightforward development of mfn1 but here all the computations for every pixel are allowed to run for the maximumum number of iterations.mfn3 =: 3 : 0 NB. y is entire grid N =. ($ y) $ 0 v =. 0j0 for_k. i. MAXITER-1 do. v =. y + *: v N =. N + (2 > | v) end. 1 + N )For small values of MAXITER, this is OK. A quick demonstration, firstly of correctness: it produces the same result as mfn1. MAXITER =: 9 (mfn1 " 0 GRID) -: (mfn3 " 2 GRID) 1And it's faster: e3a =: 'mfn1 " 0 GRID NB. Wikip. with MAXITER=9' e3b =: 'mfn3 " 2 GRID NB. Planar with MAXITER=9' compare e3a;e3b +----------------------------------------+--------+ |mfn1 " 0 GRID NB. Wikip. with MAXITER=9|6.06934 | +----------------------------------------+--------+ |mfn3 " 2 GRID NB. Planar with MAXITER=9|0.168251| +----------------------------------------+--------+Unfortunately there is a problem with any larger values of MAXITER. The repeated squaring of the complex numbers in v will ultimately produce, not infinity, but a "NaN Error", caused by subtracting infinities. Observe: (*: ^: 9) 1j3 NB. this is OK 1.96052e255j_9.80593e255 (*: ^: 30) 1j3 NB. but this is not |NaN error | (*:^:30)1j3 |[-589] c:\users\homer\X15\temp.ijsHere is an attempt to avoid the NaN errors. One cycle in every 8, those values in v which have "escaped", (that is, no longer contribute to the final result N) are reset to small values to prevent them increasing without limit. mfn4 =: 3 : 0 N =. ($ y) $ 0 v =. 0j0 for_k. i. MAXITER - 1 do. v =. y + *: v N =. N + 2 > | v if. 0 = 8 | k do. e =. N < k v =. e } v ,: 1.5j1.5 end. end. N+1 )In spite of the burden of resetting, the timing looks about 10 times faster than the scalar method: MAXITER =: 64 e1 =: 'image1 =: mfn1 " 0 GRID NB. Scalar' e4 =: 'image4 =: mfn4 " 2 GRID NB. Planar, resetting' compare e1 ; e4 +---------------------------------------------+-------+ |image1 =: mfn1 " 0 GRID NB. Scalar |17.6847| +---------------------------------------------+-------+ |image4 =: mfn4 " 2 GRID NB. Planar, resetting|1.50849| +---------------------------------------------+-------+and we check the result is correct: image4 -: image1 1 31.7 The Special Code of Appendix B of the DictionaryIn Appendix B of the J Dictionary there are listed about 80 different expressions which are given special treatment by the interpreter to improve performance. Many more expressions are listed in the Release NotesAn example is +/ . Notice that the speedup only occurs when +/ itself (as opposed to something equivalent) is recognised. data =: ? 1e6 $ 1e6 NB. a million random integers plus =: + compare 'plus / data' ; '+/ data' +-----------+----------+ |plus / data|0.220362 | +-----------+----------+ |+/ data |0.00157533| +-----------+----------+The special expressions can be unmasked with the f. adverb which translates all defined names into the built-in functions. foo =: plus / compare 'foo data'; 'foo f. data' +-----------+----------+ |foo data |0.221123 | +-----------+----------+ |foo f. data|0.00160007| +-----------+----------+The recommendation here is NOT that the programmer should look for opportunities to use these special cases. The recommendation is ONLY to allow the interpreter to find them, by giving, where appropriate, a final little polish to tacit definitions with f. . This brings us to the end of Chapter 31 |
The examples in this chapter
were executed using J version 802 beta.
This chapter last updated 21 Jun 2015
Copyright © Roger Stokes 2014.
This material may be freely reproduced,
provided that acknowledgement is made.


{% extends "mail/base.html" %} {% block content-wrapper %}
Your request for the storage project {{ order.project_name }} in the LSDF Online Storage has changed its state.
New state is {{ order.state }}


The NEWEST SHOES have strong stories to share
Bring 'em back with Florida's MASTERS TENNIS
Key INDUSTRY CONFERENCES set for Miami
FORMERLY RSI MAGAZINE
MARCH 2016 / VOLUME 44 / NUMBER 3 / $5.00
Find the right string for your customers
Incorporating USPTA
pg.49


Time left:
days
Hours
Minutes
Seconds
days
Hours
Minutes
Seconds
Your browser does not support the video tag.


Basic pdf-viewer demo
Buttons, checkboxes and list are not part of the component
Fit page width
Fit page
Zoom in
Zoom out
{{item.label}} {{item.edition}}
Single page
Double page


Using Different Data Input Types
Clearing the Value for an Attribute
For a complete list of accepted attribute names and values, see the reference document.
To update Resource Finder by email, use the email address pattern<EMAIL_ADDRESS>For example:
Pakistan<EMAIL_ADDRESS>Haiti<EMAIL_ADDRESS>Each attribute in the system accepts values of a specific kind. The different types of fields are as follows:
Plain text: any value is accepted
Numeric: values must be numbers only
Boolean: values must be ‘yes’ or ‘no’
Geopoint: values must be two floating point numbers, separated by
a comma, formatted as latitude north of equator, then longitude west of
Greenwich
Checklist: any number of values from a predefined set of plain text
options*
Choice: one of a predefined set of plain text options*
Unspecified: if at any point you wish to erase the value for an
attribute, the value must be ‘*none’
* Accepted values are restricted to a predefined list of choices. Each attribute may have its own list of possible choices.
Each facility type has several attributes that can be updated with this system. When making changes, the attributes may be specified in a case insensitive manner. Using “Available beds” is equivalent to both “Available Beds” and “available beds”, or even “aVAILABLE bEDS”. Example methods of describing an attribute are listed below:
Name: a short name for the field. These names may include any standard character in the roman alphabet [A-Z], upper or lower case.
Examples: Available beds, Services
Abbreviation: an abbreviated name for an individual attribute. Uses the same characters as the name of an attribute.
Examples: avbed, serv
Both versions, the full name or abbreviation, are acceptable as identifiers for an attribute in an update email.
To update a single facility, you must first declare which facility is being updated. To do so, begin your email like this:
update General Hospital
where “General Hospital” is the name of the hospital to be edited. Each line after should specify a specific attribute to be updated, a colon, and a value to update the attribute to. For example:
Available beds: 50
As shown, the format for each line should be “Attribute: value for the attribute”. Multiple lines may be put in a row, like so:
Available beds: 50 Total beds: 100
Similarly, abbreviations may be used as mentioned above:
avbed: 50 totbed: 100
Put together, if we wanted to update the hospital “General Hospital” to show that there are 50 available beds and 100 total beds, we might write the following:
update General Hospital avbed: 50 totbed: 100
If we wanted to update multiple facilities in one email, simply append a similar section for the second hospital below the first, like so:
update General Hospital avbed: 50 update Public Hospital avbed: 75
After your email has been sent, you should receive email containing a list of the updates the server accepted. In addition, you’ll receive a list of any errors you made in your email, as well as a short reference document to remind you of the basics, just in case.
Assuming the email you receive does not explicitly mention any errors, no further action is required for your update to go through on the server.
Below you’ll find a description of how to specify each data input type, as well as an example of each.
Plain text lines simply follow the format above, where any value may be input after the colon, be it a word, phrase, number, etc.
Contact name: John Smith Address: 5 Avenue Rd
Numeric attributes require the value to be a number.
Total beds: 100
Boolean values can be set with a simple ‘yes’ or ‘no’. The values ‘y’, ‘n’, ‘true’, and ‘false’ are also acceptable as alternatives.
Reachable by road: yes Can pick up patients: false
Checklists are made up of a collection of values, chosen from a specific list of accepted values. For example, if the “services” field has the options “Cardiology”, “Pediatrics”, and “General Surgery”, you would select values as such:
Services: Cardiology, Pediatrics
This above example would set the value for “Services” to both “Cardiology” and “Pediatrics”. As you can see, each value is simply separated by a comma. You can also use a plus/minus syntax to add or remove individual choices, rather than overwriting the entire list. To do so, format the value like so:
Services: -Cardiology, +General Surgery
This example would remove “Cardiology” from the list of values, as well as add “General Surgery”. As we also set “Pediatrics” earlier, that value would still remain.
Multiple choice values are similar to checklists, except you may only select one value instead of many. For example, if dealing with the attribute “Operational status”, which has the values “Open” and “Closed”, we would set it to “Open” like this:
Operational status: Open
Unspecified values are a special case. Any attribute may be cleared with the special keyword “*none”. This action effectively erases the current value. From that point on, accessing the value for an attribute will return nothing until it has been set again to a new value. To do so, use the following syntax:
Services: *none
If you send email with no updates to the server, you will automatically receive a templated email with instructions in reply. This email will be tailored to the default subject type in the subdomain you have emailed.
If you wish the form to automatically include the title for a specific facility, set the subject line of your email to that title. For example, to update the facility “General Hospital” in the subdomain “Pakistan”, you would enter the following information into your email:
To<EMAIL_ADDRESS>Subject: General Hospital Body: <blank>
If at any point you make an error in your email update to the server, you will receive email back, pointing out your mistake.
By mistake, a user might send the server an email like this:
update General Hospital Available beds: fifty
In response, they would receive the following error message:
update General Hospital Available beds: fifty -- "Available beds" requires a numerical value.
The third line, indented by the two dashes, is where the error message is located. In this particular case, as the attribute “available beds” is a numerical attribute, typing in a word (even though fifty is a textual representation of the number 50) is not a valid value.
If the attribute in question is a checklist or multiple choice type attribute, then a list of accepted values will follow the error message. For example, an incorrect attempt to update the multiple choice “Services” attribute will result in the following error message:
update 128 Chak Hospital Services: x -- "Services" requires all values to be from a specific set. -- Accepted values are: General surgery, Orthopedics, Neurosurgery, ---- Vascular surgery, Internal medicine, Cardiology
There may be cases when multiple facilities have the same name. Attempting to update a facility in that case will result in an error message asking you to choose the one you wish to update. For example, if there are three facilities with the name “General Hospital”, an attempted update will return a list of facilities, each accompanied by a unique ID:
General Hospital (example.org/123) General Hospital (example.org/456) General Hospital (example.org/789)
To find which facility to update, visit the Resource Finder application and click the icon on the map corresponding to the facility. The info window that opens will display the ID of the facility, which can then be matched to one of the above items. Then retry the update, including the ID. For example:
update General Hospital (example.org/123) Available beds: 15
would update the facility General Hospital, associated with the key “example.org/123”, to show 15 available beds.
{% include "footer.html" %} {% include "../../templates/analytics.html" %}


My strengths and weaknesses in respect of this learning plan is that i learn by doing, not so much by reading or being told something. I am more focused when i am in a proper work environment, i tend to slack off when i am at home. i should also limit social media distractions to stay more focused. my commitment is that i will come into Dev Academy everyday in bootcamp and whenever required in foundations and when i am working i will limit distractions to break times. when i work with others i will put into practice good communication and understanding. when i need help i will first ask the appropriate slack channels if appropriate and then i will ask my faccilatator and then if that doesent work i will ask someone at Dev Academy. my only daily commitments are going to the gym and i have my brothers wedding in febuary and my sisters wedding in april so i will have to plan ahead for those.
Home


What They Do: Computer hardware engineers research, design, develop, and test computer systems and components.
Work Environment: Computer hardware engineers usually work in research laboratories that build and test various types of computer models. Most work in computer systems design services and in manufacturing.
How to Become One: Most computer hardware engineers need a bachelor’s degree from an accredited program.
Salary: The median annual wage for computer hardware engineers is $114,600.
Job Outlook: Employment of computer hardware engineers is projected to grow 6 percent over the next ten years, about as fast as the average for all occupations. A limited number of engineers will be needed to meet the demand for new computer hardware because more technological innovation takes place with software than with hardware.
Related Careers: Explore occupations that share similar duties, skills, interests, education, or training with the occupation covered in the profile.


Italian ship attacked by pirates in Mexico, two crew hurt
MEXICO CITY (Reuters) - Pirates attacked an Italy-flagged offshore supply vessel in the southern Gulf of Mexico, injuring two crew members, the Mexican Navy said on Tuesday, in the latest outbreak of robbery and piracy to hit oil platforms and infrastructure in the area.
One of the crew members of the boat, “Remas,” received a bullet wound, and the other suffered a concussion, and both were transferred to a nearby hospital, the Navy said in a statement.
Owned by Italian offshore contractor Micoperi, the boat is a supply vessel for Mexico’s oil industry.
It had a crew of about 35 when the attack occurred off the city of Ciudad del Carmen in the state of Campeche, according to two people familiar with the matter and local media reports.
About eight armed pirates arrived in two small ships and boarded the vessel, robbing the crew, the reports said.
Micoperi and the Italian embassy in Mexico did not immediately respond to requests for comment.
Mexican state oil firm Pemex has said robbery is increasingly affecting its oil infrastructure. Sophisticated equipment has been stolen and resold, and crews robbed.
Most registered attacks have been in the southern rim of the Gulf of Mexico, where dozens of oil platforms produce thousands of barrels of crude per day.


--- layout: post title: Water Marble Nail Art tags: - Nail Art status: publish type: post published: true meta: _edit_last: '2' _graphene_slider_img: global _graphene_slider_imgurl: '' _graphene_show_addthis: global _aioseop_title: Water Marble Nail Art al2fb_facebook_link_id: '218440691518395_252939528068511' al2fb_facebook_link_time: '2011-08-01T19:50:17+00:00' al2fb_facebook_link_picture: post=http://missenchanted.com/wp-content/uploads/2011/08/IMG_1349.jpg _aioseop_keywords: Water Marble Nail Art _yoast_wpseo_linkdex: '0' _thumbnail_id: '1262' --- Found this intresting video on youtube and gave it a try :)
[youtube]http://www.youtube.com/watch?v=U7bwL2S7auk&feature=relmfu[/youtube]
Problems faced:


--- layout: post title: Just a quickie oneliner: Skate school has become the Saturday morning ritual but we get to visit Skate Biz to get some gear! summary: Skate school is winding down and we will start to get our Saturday mornings back. However that really means we end up doing the much needed work around the house instead. excerpt: Saturdays have turned into busy days for us lately although the mornings can start a little later due to skate school starting at 10:00am ... categories: - Family - Hockey - Random - Skating tags: - Braden - Brett - Skate School - Skatebiz - Vicki status: publish type: post published: true meta: _edit_last: '2' slider_hidetitle: 'on' if_slider_image: '' slider_custom_thumb: '' ---
Saturdays have turned into busy days for us lately although the mornings can start a little later due to skate school starting at 10:00am. I for one had a bit of a sleep in this morning as did Braden, which he needed as he has a chesty cough and a little tired. The later waking up both this morning and Friday morning really helped Braden to keep going today while we were out and about.
Firstly we had skate school this morning and I am happy to say all of us have passed to the next levels, Braden moving from Novice 1 to Novice 2 and Vicki and I from Intermediate 1 to Hockey 1. I know that the instructor of us wanted to move us up, me a little prematurely as she knows that a) we don't need to know 3-turns and b) they aren't the easiest to do in hockey skates. I hear that Braden did a great job in his class this morning and really impressed his instructor, which is awesome work. Now we need to decide what we will do in the next 4 weeks of class, whether we transfer over to a Thursday afternoon so we can attend Hockey 1 or do we just use the 90 minutes on the ice for practice?
We followed this up by heading to Skatebiz to get some kit for Vicki and myself, this ended up taking longer than expected, but in reality it was time well spent. We both ended up with different helmets than we first though, both moving from the Bauer 2100 to an Easton Stealth S9, but the fit was so much more comfortable. Both helmets need to be ordered in, but that is not a problem as we won't be practicing for a few weeks yet. Vicki ended up getting some Bauer gloves, some X15's and decided she would get some pants as well and ended up getting Bauer X20's. I ended up getting some Easton S11 gloves, and wow they feel so good to use, can't wait to use them on the ice! We also grabbed a new bag for Braden so I could use the bigger one, we ended up with a small version of the Easton S10 small wheeled bag.
This afternoon was a very late lunch at Nandos and then a trip home to do some needed yard work for me, mowing the back yard of our yard and also the neighbours yard and Vicki getting stuck into some housework and re-arranging the hockey kit bags. Really not a very exciting finish to the day, but a necessary one to make sure we can do the fun things!


Republican NY Rep. Peter King Retiring From Congress
by ASSOCIATED PRESSWASHINGTON (AP) — Rep. Peter King, a moderate Republican who has represented a Long Island congressional district for nearly 30 years, said Monday the he won’t seek reelection in 2020, presenting Democrats with a fresh suburban target in 2020.
The decision came days after voters flocked to Democratic candidates in state elections in Kentucky and Virginia, underscoring Republican vulnerability in a suburban revolt against President Donald Trump.
The 14-term congressman, 75, said in a Facebook post that he wants “flexibility to spend more time” with his children and grandchildren.
“The prime reason for my decision was that after 28 years of spending 4 days a week in Washington, D.C., it is time to end the weekly commute and be home in Seaford,” he wrote.
King’s district includes southwestern Suffolk County and a portion of Nassau County, about an hour’s drive east of Manhattan.
With King’s retirement, Democrats seem certain to target the district in 2020. While the district went narrowly for Trump in 2016, many suburban districts around the country have been moving steadily toward Democrats as moderate, well-educated voters swing away from the polarizing president.
King, a former chairman of the House Homeland Security Committee, has cultivated a reputation for bipartisanship while maintaining a hard line on immigration and crime. He is the longest-serving Republican member of New York’s congressional delegation. He won reelection in 2018 by 6 percentage points.
Twenty House Republicans have said they will not seek reelection. Three other Republican lawmakers have resigned and already left Congress.
Democrats retook the House in 2018, and are looking to grab new seats in suburban districts in what they see as a backlash against Trump.
Only a handful of the Republican-held districts being vacated by retirements are expected to be seriously competitive next year. But King’s district will be one of them, underscoring Republican vulnerability in suburban areas, spotlighted last week as suburban voters in Virginia and Kentucky flocked to Democratic candidates in elections for state offices.
Copyright © 2019 courthousenews.com


viral OpenUrl glycoprotein SARS-CoV- protein using transcripts RNA cleavage coronavirus CrossRef genome proteins deletion site sites identified phosphorylation transcript sequence &; virus predicted Figure mass FREE Text Abstract analysis cell peptides cells shown used data spike structure transcription deleted mRNA peptide sequencing subgenomic ORF Vero View furin mapped number transcriptome type unique acid coronaviruses detected human new novel potential region wild binding domain polyA ./s--- Download Nature Table direct length loop present respiratory S/S illustrates known large model previously proposed proteome read spectrometry tandem total (Thermo Fusion However, according described files generated host location nanopore nsp processed recently revealed stock surface use version (Supplementary Biol Coronavirus Health SARS-CoV Virology Virus adenovirus amino bat challenge coding corresponding dataset deletions depth end entry form furin-like highly including indicated infected information list nsp, nucleocapsid pipeline protein. proteins. range reported samples sequences similar single study trypsin viruses ./jvi.- Methods N-terminal Open Protein SARS-CoV, SARS-CoV-. Scientific) Spike Virol Whittaker, acute animal associated cells. charge chymotryptic clinical data-hide-link-title=""> data-icon-position="" distinct dominant encoded evidence features figure formic high mRNAs major manufacturer’s map min, models native polyproteins potentially proteases proteomics replication set severe spectrometry. start subsequently syndrome tab transcriptomics tryptic ... ./... ./zenodo. Allied Analysis Belouzard, Bristol COVID- Cell Data Direct Finally, Nanopore ORF. ORFs Res Respiratory S-glycoprotein Science TRS Wu, [[#x]] aligned average based bioRxiv, boundary carefully cases chymotrypsin code coloured complex confirmed conserved containing contains database detect determine digested downstream early enables evolution extracted fusion generate glycoprotein. hand here. http://doi.org/./zenodo. identification immune in-frame individual infectious inline inside key leader like likely line multiple naturally noted pathogenesis. polyprotein popup positions ppab. produced represent result resulting sequenced showed significance significant software space supported table: tail target transcriptome. translated tropism vaccine yellow


Dear IFRC Go User,{% include "includes/logo.html" %}
It is a great day! We would like to confirm that your IFRC GO account that is not linked to the Red Cross and Red Crescent Movement has been approved by the Regional Administrator.
If you do experience any problems, please contact<EMAIL_ADDRESS>You can start your IFRC GO experience here.
Thank you,
IFRC Go


--- layout: page title: "About" description: "" ---
A collection of writings and presentations made by me, Ian Whitney (he/his). I'm a developer and IT manager working for the University of Minnesota. I mostly write Ruby, though recently I spend a lot of time working with Kafka and other data tooling.
Many of the posts on this site are about code design. I spend a lot of time thinking about how to improve the design of my code. But, despite all that thinking, my initial coding attempts always have significant design problems. Yours probably do too. There are a lot of programmers out there better than me, but I don't think any of them are happy with their first drafts.
In writing there's the a maxim "Good Writing is Rewriting" and it's true in programming as well. If you want your code design to improve, then you have to refactor. And that refactoring shouldn't be haphazard code changes; you should be taking small, deliberate steps that you know will move your code towards a better design.
Hence the name. If writing is rewriting, then design is refactoring.
I am Ian Whitney, a Ruby programmer at the University of Minnesota. I am not a rockstar, or a ninja or even remotely epic.


--- layout: post status: publish published: true title: Programming Magazines author: display_name: Tomas Restrepo login: tomasr email<EMAIL_ADDRESS>url: http://winterdom.com/ author_login: tomasr author_email<EMAIL_ADDRESS>author_url: http://winterdom.com/ wordpress_id: 925 wordpress_url: http://winterdom.com/2002/09/programmingmagazines date: '2002-09-13 19:33:35 +0000' date_gmt: '2002-09-13 19:33:35 +0000' categories: - Development tags: [] comments: [] ---
Simon asks: "Anyone got any programming magazine recommendations?"
Well, I still enjoy Dr. Dobb's Journal, and the ocasional C/C++ Users Journal, and MSDN Mag (although I admit I liked the old MSJ better).
I agree, nonetheless; the overall landscape of programming magazines seems to have decayed somewhat...


Here you can add, edit or remove authors. You can't remove author that is attached to any book.
edit Edit cancel Remove


Register to VidDoc
or
login
After successful registration, you will be redirected to login again with your credentials
{% csrf_token %}
Username
{% if invalid_user %}
A user with this name already exists, please try again with a different username.
{% endif %}
Email
{% if not valid_email %}
Please enter a valid email.
{% endif %} {% if email_exists %}
This email is registered with us. Please login or register with another email.
{% endif %}
Password
Repeat Password
{% if not valid_password %}
The passwords do not match! Please enter the same password in both fields.
{% endif %}
Address
Age
{% if not valid_age %}
Please enter an age within the range of 0 - 130 (inclusive)
{% endif %}
City
Phone Number
{% if not valid_phone_number %}
Please enter a 10 digit phone number
{% endif %}
Register


Why should we avoid using closures in Swift structs?
We all love closures, don’t we? Closures make an iOS developer’s life easy. Well, if it makes it easy, then why am I saying to avoid using closures in Swift structs? The reason is, “Memory leaks and unexpected behaviors.” Wait. What? Memory leak in structs? How could that be possible?
Structs are value types, and there is no way a memory leak can occur. Is that statement even true? We have so many questions already. So let’s get back to the basics of memory management in Swift.
Back to basics
The reason I am taking you back to the basics is that before diving into the main problem, we need to have a stronghold of the basics.
The basic types in Swift fall into two categories. One is the “Reference type,” and the other is the “Value type.” Generally, Classes are reference types. On the other hand, structs and enums are value types.
Value types
The value types store the data directly in memory. Every instance has a unique copy of the data. When a variable is assigned to an existing variable, the data is copied. The allocation of the value types is done in the stack. When the value type variable goes out of scope, the deallocation of the memory occurs.
struct Person {
var name : String
}
var oldPerson = Person(name: "Rizwan")
var newPerson = oldPerson
newPerson.name = "Oh my Swift"
print(oldPerson.name)
print(newPerson.name)
-------
Output:
Rizwan
Oh my Swift
-------
We can see that changing the value of the newPerson doesn’t change the value of oldPerson. This is how value types work.
Reference types
The reference types keep a reference (aka a pointer) to the data when initialized. Whenever a variable is assigned to an existing reference type, the reference is shared among the variables. The allocation of reference types is done in the heap. The ARC (Automatic Reference Counting) handles the deallocation of the reference type variables.
class Person {
var name: String
init(withName name: String){
self.name = name
}
}
var oldPerson = Person(withName: "Rizwan")
var newPerson = oldPerson
newPerson.name = "Oh my Swift"
print(oldPerson.name)
print(newPerson.name)
------
Output
Oh my Swift
Oh my Swift
------
We can see that changing the oldPerson variable reflects the changes in the newPerson variable. This is how reference types work.
Usually, memory leaks occur in reference types. It occurs in the form of retain cycles in most of the cases. To know more about retain cycles, read this blog from Flawless app stories.
So, if reference types are the reason for memory leaks, we can use value types for all purposes. That should solve the problem.
Unfortunately, this is not the case. Sometimes structs and enums can be treated as reference types, and this means that retain cycles can occur in structs and enums too.
Closures - The Villain in structs
When you use closures in structs, the closure behaves as a reference type, and the problem starts there. The closures need to have a reference to the environment outside so that the environment can be modified when the closure body is executed.
In the case of classes, we can use weak self
to break the retain cycle. When we try to do it for a struct, we get the following compiler error, ‘weak’ may only be applied to class and class-bound protocol types, not ‘{struct name}’
struct Car {
var speed: Float = 0.0
var increaseSpeed: (() -> ())?
}
var myCar = Car()
myCar.increaseSpeed = {
myCar.speed += 30 // The retain cycle occurs here. We cannot use [weak myCar] as myCar is a value type.
}
myCar.increaseSpeed?()
print("My car's speed :")
print(myCar.speed) // Prints 30
var myNewCar = myCar
myNewCar.increaseSpeed?()
myNewCar.increaseSpeed?()
print("My new car's speed :")
print(myNewCar.speed) // Prints 30 still!
You would have expected the result of myNewCar to be 90.0, but it prints My new car’s speed: 30.0
But why?
Well, the reason is, “myNewCar” is a partial copy of “newCar.” Since closures and their environments cannot be copied completely. The value of “speed” is copied, but the property “increaseSpeed” of “myNewCar” (myNewCar.increaseSpeed?()) holds a reference to the “increaseSpeed” of “myCar” with the “speed” of “myCar” in the captured environment. So, the “increaseSpeed” of “myCar” is invoked.
These are the various reasons why closures in Swift structs are dangerous.
So what do we do now?
The straight forward solution is, avoid using closures in value types. If you want to use them, you should be very careful with it, or else it might lead to unexpected results. Regarding the retain cycle, the only way to break them is to set the variables “myCar” and “myNewCar” to nil manually. It doesn’t sound ideal, but there is no other way.
It was really thought provoking for me when I learnt about the behaviour of closures in value types. I hope you also felt the same.
Enjoyed reading it? Feel free to share your comments below. Like this article? Share it with your friends! You can also follow me on twitter right here: https://twitter.com/rizwanasifahmed
References
[2] https://github.com/Wolox/ios-style-guide/blob/master/rules/avoid-struct-closure-self.md
[3] https://www.objc.io/issues/16-swift/swift-classes-vs-structs/
[4] https://marcosantadev.com/capturing-values-swift-closures/
More articles
Like our articles? Support us!


Tyler Wians
CSC 317: Computer Networks
Home → 10.13
Virtual Circuit and Datagram Networks
The network layer can provide connection and connectionless services in many ways
parallel to the transport layer. For example, a network-layer connection service begins with
handshaking between the source and destination host, while a network-layer connectionless
service does not have any handshaking preliminaries. However there are some differences:
- Network-layer services are host-to-host provided by the network-layer for the transport
layer, rather than process-to-process which is provided by the transport-layer for the application
layer.
- In all major computer network architectures to date, the network layer provides either a
host-to-host connection service or a host-to-host connectionless service. Computer
networks that provide only a connection service at the network layer are called virtual-circuit
(VC) networks, while the ones that provide only a connectionless service are called datagram
networks.
- The network-layer connection service and the transport-layer connection-oriented service are
fundamentally different, in that the latter is implemented in the end systems where as the former is
implemented in the routers in the network core as well as in the end systems.
Virtual Circuit Networks
A virtual circuit consists of:
- A path between source and destination hosts (a series of links and routers)
- VC numbers, where there is one number for each link along the path
- Entries in the forwarding table in each router along the path
A packet belonging to a virtual circuit will carry a VC number in its header. Because a virtual
circuit may have a different VC number on each link, each intervening router must replace the VC number
of each traversing packet with a new VC number. The new VC number is obtained from the forwarding table.
Host A requests that the network establish a VC between itself and Host B.
- Network chooses path A-R1-R2-B, and assigns VC numbers 12, 22, and 32 to the three links.
- When a packet leaves Host A, VC# = 12.
- When a packet leaves R1, VC# = 22.
- When a packet leaves R2, VC# = 32.
How does a the router determine the next VC number?
Each router has a forwarding table, where the VC numbers are stored.
Replacing the VC number every time it passes through the router reduces the length of the VC field in
the packet header. It also eliminates the need for additional communication between the routers because
it would need to decide on a common VC number.
In a VC network, the network's routers must maintain connection state information for the ongoing
connections. Each time a new connection is established across a router, a new entry must be added to the
router's forwarding table.
There are three identifiable phases in a virtual circuit:
- VC Setup:
- Transport-layer contacts network-layer, specifies receiver's address, waits for the network to set up the VC.
- Network-layer determines path between sender and receiver, as well as the VC numbers for each link.
- Network-layer adds entry in the forwarding table in each router.
- Network-layer may also reserve resources along the path of the VC.
- Data Transfer: Packets are being sent to the destination.
- VC Teardown
- Initiated when the sender or receiver informs the network-layer of its desire to terminate the VC.
- Network-layer informs the other end system of the call termination.
- Network-layer updates forwarding tables in each of the routers to indicate the VC no longer exists.
The messages that end systems send into the network to initiate or terminate a VC, as well as the messages passed between
the routers to set up the VC, are known as signaling messages. The protocols used to exchange these messages are often
referred to as signaling protocols.


explore recent tracks
click on the image to learn more
go
Most Recently Played
/discover
unable to find similar tracks


 Tsau!'. The people say that the stars are cursing the springbok's eyes for them. When the stars came out, |han≠kass’o's grandfather Tsatsi prayed to them, asking to exchange his hungry heart with the star's satisfied one so he might also be filled up.
Comments
1) See also Prayer to a star, 2) This story is found in Book VIII-28
Contributors
|han≠kass'o (Klein Jantje) (VIII)
Date
30 – 31 May 1879
Categories
Celestial bodies and aeroscopy, Poetry
Keywords
stars (what they say) , stars (their arms) , stars (their stomachs) , stars (their hearts) , stars (prayers to on account of hunger) , stars (are large) , stars (and hunger) , stars ('art filled') , stars (say 'Tsau! Tsau!') , stars (what |han≠kass'o's grandfather told him about) , stars (|han≠kass'o's grandfather's prayer to) , stars (talking to) , stars (appear well fed) , stars (their hearts) , stars (curse the springbok's eyes) , stars (|han≠kass'o listens to) , stars (sound in the summer) , stars (newly came out) , stars (a prayer asking for their filled stomachs) , stars (a prayer asking for their arms that do not miss their aim) , stars (a prayer asking for their satisfied hearts) , prayer (incantation) , prayer (to the stars when hungry) , prayer (for successful hunting) , prayer (asking for the star's heart so the people will not hunger) , prayer (asking the star for its filled stomach) , prayer (asking the star for its arm that does not miss its aim) , prayer (asking the star for its satisfied heart) , prayer (asking the stars to take the people's hearts) , prayer (and prayers regarding the successful hunting of springbok) , prayer (and what the stars say) , hunger (the star 'mayest also hunger') , hunger (the star's heart will not) , hunger (stars seem as if they 'possessed food') , hunger (a prayer asking for the star's heart) , hunger (the stars appear to be satisfied) , hunger (the stars are large and appear well fed) , hunger (and an exchange of hearts, stomachs and arms) , hunger (and what the stars say) , incantations (prayers) , incantations (to the stars) , incantations (asking the stars for their hearts) , incantations (to the stars when hungry) , incantations (and prayers regarding the successful hunting of springbok) , incantations (and what the stars say) , hearts (the peoples' are hungry) , hearts (the stars' appear satisfied) , hearts (and a prayer to the stars) , hearts (and what the stars say) , springbok (the stars curse their eyes) , springbok (and prayers to the stars) , springbok (a prayer that an arrow may hit) , springbok (and what the stars say) , |han≠kass'o (and his grandfather Tsatsi's prayers to the stars) , |han≠kass'o (what his grandfather told him about the stars) , |han≠kass'o (his personal history) , hunting (missing one's aim and a prayer to the stars) , hunting (and hunger) , hunting (prayers for successful) , hunting (what the stars say) , personal history (what |han≠kass'o's Tsatsi's told him about the stars) , personal history (and what the stars say) , personal history (|han≠kass'o listens to the stars sound) , food (prayers asking the stars for food and successful hunting) , food (stars seem as if they 'possessed food') , food (and what the stars say)
Story Pages
8449-8458


A hundred years ago, diseases like smallpox, polio, and measles ran rampant across America. The development and deployment of large-scale vaccination programs across the country helped banish these diseases from the United States, and in the case of smallpox, extinguish it entirely. Two of America's success stories are with the smallpox and the MMR (Mumps, Measles, and Rubella) vaccine.
Image from Brooklyn Historical Society.
Christopher Columbus's 1492 expedition first brought smallpox to the New World, and it was not until 1952 that the disease was finally eradicated from the Americas. While smallpox was one of the first diseases to have a vaccine developed, with experiments occuring as early as 1796, it took over a century to substantially reduce cases in America. By the 20th century, mass vaccination campaigns had largely controlled the disease in the US, with the last endemic case occurring in 1952. [Source]
These four maps show the gradual elimination of smallpox from the US, from 1928, to the last natural smallpox outbreak in 1949, to its eradication from the US in 1952.
Note: Occasionally, the state maps will take a while to load. Please be patient.
"It was terrible,"
— Beth Lyon, victim of a 1977 Des Moines measles outbreak. [Source]
Before a measles vaccine became available in 1963, an estimated 3 to 4 million Americans a year contracted the disease. Nearly every child contracted the disease by the time they turned 15 years old.[Source] Around the same time, rubella, or German measles, was first isolated. When an outbreak of the disease, which disproportionately affects pregnant mothers and infants, struck North America and Western Europe in 1963–5, serious efforts began towards vaccination, and a vaccine was available by 1970. [Source] Mumps, another common childhood disease, had a vaccine developed by 1968.[Source] These three vaccines were packaged as a single "MMR" vaccine, and with the development of a chicken pox (varicella) vaccine in 1995, as an "MMRV" vaccine.
Image of a teenager with measles from theDes Moines Register.
By the early 1970s, vaccines for mumps, measles, and rubella were commercially available. Since then, the diseases have been eliminated or nearly eliminated in the US.


CSPICE_GCPOOL returns the value of a string kernel variable
(scalar or array) from the kernel pool.
Given:
name name of a pool variable associated to string values.
[1,m] = size(name); char = class(name)
start value for the index indicating the first component of the data
vector assigned to 'name' for return (index 1 for all
elements).
[1,1] = size(start); int32 = class(start)
room value specifying the maximum number of components that can
return for 'name'.
[1,1] = size(room); int32 = class(room)
the call:
[cvals, found] = cspice_gcpool( name, start, room )
returns:
cvals the values assigned to 'name' beginning at index 'start'.
'cvals' returns empty if the variable 'name' does not exist in
the kernel pool.
[n,m] = size(cvals); char = class(cvals)
found the flag indicating true if 'name' exists in the kernel pool and
has character type, false if it is not.
[1,1] = size(found); logical = class(found)
'cvals' has a size of 'room' or less (N<='room').
Any numerical results shown for this example may differ between
platforms as the results depend on the SPICE kernels used as input
and the machine specific arithmetic implementation.
%
% Load a kernel containing the variable assignments:
%
% CTEST_VAL = ('LARRY', 'MOE', 'CURLY' )
%
% ITEST_VAL = ( 3141, 186, 282 )
%
% DTEST_VAL = ( 3.1415, 186., 282.397 )
%
cspice_furnsh( 'pool_t.ker' )
%
% Retrieve up-to 'ROOM' character entries for
% kernel pool variable named 'CTEST_VAL' to
% the array named 'cvals'. The first index to return,
% 'START', has value 1 (this returns all strings).
%
VAR = 'CTEST_VAL';
ROOM = 25;
START = 1;
%
% cspice_gcpool returns an empty array if the variable
% does not exist in the kernel pool.
%
[cvals, found] = cspice_gcpool( VAR, START, ROOM );
if ( found )
txt = sprintf( 'Found %s in the kernel pool', VAR );
disp(txt)
n_elements = size( cvals, 1 );
%
% Retrieve the number of elements returned in 'cvals' from the
% first element returned from "size".
%
for n=1:n_elements
txt = sprintf( ' Element %d of %s: ``%s``', n, VAR, cvals(n,:) );
disp(txt)
end
else
txt = sprintf( 'Failed to find %s in the kernel pool', VAR );
disp(txt)
end
%
% It's always good form to unload kernels after use,
% particularly in MATLAB due to data persistence.
%
cspice_kclear
MATLAB outputs:
Found CTEST_VAL in the kernel pool
Element 1 of CTEST_VAL: ``LARRY``
Element 2 of CTEST_VAL: ``MOE``
Element 3 of CTEST_VAL: ``CURLY``
None.
For important details concerning this module's function, please refer to
the CSPICE routine gcpool_c.
MICE.REQ
KERNEL.REQ
-Mice Version 1.2.1, 01-JUN-2016, EDW (JPL)
Corrected typo in example code. Ouput loop showed use of "i" rather
than "n."
-Mice Version 1.2.0, 12-MAR-2012, EDW (JPL), SCK (JPL)
"logical" call replaced with "zzmice_logical."
I/O descriptions edits to conform to Mice documentation format.
-Mice Version 1.0.0, 06-MAR-2007, EDW (JPL)
RETURN the character value of a pooled kernel variable
RETURN the string value of a pooled kernel variable
|


Initial set of chosen keys
Click on the piano to start playing
x
Saving the song...
Your song ID is: (loading...)
Save this ID to load in the future.
x
Load a song by ID
Edit options
Availible only when all the keys are chosen
Identity RetrogradeFinal set
Complete your initial set and then use the options above
Instructions
Click on the keyboard to play a note.
Each note can only be played once.
Once the order of the notes has been chosen, you may play them as is or modify by adding more notes according to rules of:
- Identity
- Retrograde
- Transposition


Abuleita's Food Truck - Contact Us
Tell Us What You Think
Contact Reason
Order Online
Pickup
Reservations
First Name
Last Name
Country
Australia
Canada
USA
Preferred contact method
Phone
SMS
Email Address
Phone Number
Subject
Enter your four-digit passcode, then click OK
OK


The first tool used for searching on the Internet was Archie.
The name stands for "archive" without the "v". It was created in 1990. The program downloaded the directory listings of all the files located on public anonymous FTP (File Transfer Protocol) sites, creating a searchable database of file names.
JumpStation
the first WWW resource-discovery tool to combine the three essential features of a web search engine
(crawling, indexing, and searching)
1994: WebCrawler
One of the first "all text" crawler-based search engines that allowed users to search for any word in any webpage, which has become the standard for all major search engines since.
Soon after, many search engines appeared and vied for popularity.
These included Magellan, Excite, Infoseek, Inktomi, Northern Light, and AltaVista.
Yahoo! was among the most popular ways for people to find web pages of interest.
Year 1996: Netscape is looking to give a single search engine an exclusive deal
Chosen search engine would be featured on Netscape's web browser.
There was so much interest that instead Netscape struck deals with five of the major search engines: for $5 million a year, each search engine would be in rotation on the Netscape search engine page.
The five engines were Yahoo!, Magellan, Lycos, Infoseek, and Excite.
(Back)Links analysis
is a subset of network analysis, exploring associations between objects.
The idea of formulating a link analysis problem as an eigenvalue problem was probably first suggested in 1976 by Gabriel Pinski and Francis Narin, who worked on scientometrics ranking scientific journals.
PageRank
Information on the web could be ordered in a hierarchy by "link popularity": a page is ranked higher as there are more links to it.
Google adopted the idea of selling search terms
This move had a significant effect on the SE business.


Missing film name and spreadsheet id
film name but no jsonUrl
The Sting
Film name and jsonUrl - but nothing
Lost in Translation
Film name and jsonUrl
Animal Kingdom
Late Spring
Shadow of a Doubt
Tokyo Story
Rear Window
Red River
Film name and URL
American Beauty


Progress Circle Component used to display progress with a fraction in the center. The component uses angular material library.


Ghana is an amaizing country with diverse culture for example the Akan people frequently name their children after the day of the week they were born and the order in which they were born. These "day names" have further meanings concerning the soul and character of the person. Middle names have considerably more variety and can refer to their birth order, twin status, or an ancestor's middle name.Most Ghanaians have at least one name from this system, even if they also have an English or Christian name. Notable figures with day names include Ghana's first president Kwame Nkrumah and former United Nations Secretary-General Kofi Annan.


Landing Page
Special Projects
This story is part of a series of specially designed stories that represents some of the best journalism The Post has to offer. Check out the rest of the special projects here.
Mijana Masur
11.06.17
In 2010, Chris Knisely had a decision to make.
Knisely, then an At-Large Athens City Council member and Ohio University Heritage College of Osteopathic Medicine’s director of research and grants, felt she needed to devote her full attention to either the university or Athens. She decided to pursue her work with city council.
“As much as I liked working at the university, I felt like I needed to vote more of my time to either one or the other, and I decided to do the city council work.” Knisely said.
Knisely has been living and working in Athens since 1996. Living in a small town was a welcome change for her — she’d lived in and around metropolitan areas, including Cleveland, Columbus and Washington, D.C., for most of her life.
“We need to work … in the best way that we can with the city administration so that we can be good stewards of our moneys and our resources that we have for the city."– Chris Knisley
“(Athens is) the smallest community I've ever lived in, and I really enjoy that,” Knisely said. “I enjoy that sense of community.”
Prior to moving to Athens, Knisely worked for nonprofit organizations, including the Ohio Humanities Council, a group that promotes the study of humanities.
Knisely, who graduated from Ohio Wesleyan University with a degree in education, first came to Athens in 1994 as part of a summer seminar that helped middle school teachers get their master's degrees. She returned permanently to work at HCOM in 1996.
When she moved to Athens, Knisely became involved with neighborhood associations but didn’t know if she had the skills to be a council member. In 2008, a departing OU graduate student vacated her At-Large seat, and Knisely’s peers encouraged her to run. She filled the vacant seat and began serving on city council.
After she made her decision to further pursue her council work in 2010, Knisely was elected as council president in December 2014 and began serving in 2015.
Athens Mayor Steve Patterson called Knisely an “outstanding” city council president.
“She has always been, through my lens, an outstanding president of council,” Athens Mayor Steve Patterson said. “She has done a fantastic job in terms of communicating, not only with my office, but also with council.”
Council has undertaken many city projects, including the Stimson Avenue roundabout, the approval of improvements to East State Street and the approval of the city’s new pool, since Knisely was elected
“She’s very efficient and professional and tries to look at all sides of an issue,” Michele Papai, D-3rd Ward, said in a previous Post report.
Knisely credits council’s success to city employees and her fellow council members.
“It's not because of me,” Knisely said. “It's because of this whole cadre of talented people.”
Knisely, a Democrat who made $8,693 in calendar year 2017, is running unopposed for reelection as council president. She said she hopes to continue working with the city administration during her next term.
“We need to work … in the best way that we can with the city administration so that we can be good stewards of our moneys and our resources that we have for the city,” she said.
Correction: A previous version of this report incorrectly stated Chris Knisely’s salary. The article has been updated to reflect the most accurate information.
Landing Page
This story is part of a series of specially designed stories that represents some of the best journalism The Post has to offer. Check out the rest of the special projects here.


#include <config.h>
#include <math.h>
#include <bdd/util.h>
#include <bdd/st.h>
#include <bdd/cuddInt.h>
Go to the source code of this file.
Functions | |
| static int cuddZddDagInt | ARGS ((DdNode *n, st_table *tab)) |
| int | Cudd_zddDagSize (DdNode *p_node) |
| double | Cudd_zddCountMinterm (DdManager *zdd, DdNode *node, int path) |
| void | Cudd_zddPrintSubtable (DdManager *table) |
| static int | cuddZddDagInt (DdNode *n, st_table *tab) |
Variables | |
| static char rcsid[] | DD_UNUSED = "$Id: cuddZddMisc.c,v <IP_ADDRESS> 2005/04/18 17:40:17 mchu Exp $" |
Function********************************************************************
Synopsis [Counts the number of minterms of a ZDD.]
Description [Counts the number of minterms of the ZDD rooted at node
. This procedure takes a parameter path
that specifies how many variables are in the support of the function.]
SideEffects [None]
SeeAlso [Cudd_zddCountDouble]
Definition at line 129 of file cuddZddMisc.c.
References Cudd_zddCountDouble(), and DdManager::sizeZ.
Referenced by Cudd_zddPrintDebug().
| int Cudd_zddDagSize | ( | DdNode * | p_node | ) |
Function********************************************************************
Synopsis [Counts the number of nodes in a ZDD.]
Description [Counts the number of nodes in a ZDD. This function duplicates Cudd_DagSize and is only retained for compatibility.]
SideEffects [None]
SeeAlso [Cudd_DagSize]
Definition at line 99 of file cuddZddMisc.c.
References cuddZddDagInt(), st_free_table(), st_init_table(), st_ptrcmp(), and st_ptrhash().
Referenced by Cudd_zddPrintDebug().
| void Cudd_zddPrintSubtable | ( | DdManager * | table | ) |
Function********************************************************************
Synopsis [Prints the ZDD table.]
Description [Prints the ZDD table for debugging purposes.]
SideEffects [None]
SeeAlso []
Definition at line 155 of file cuddZddMisc.c.
References Cudd_E, Cudd_IsConstant, Cudd_T, DdNode::index, DdNode::next, NIL, DdSubtable::nodelist, DdManager::one, DdNode::ref, DdManager::sizeZ, DdSubtable::slots, and DdManager::subtableZ.
Function********************************************************************
Synopsis [Performs the recursive step of Cudd_zddDagSize.]
Description [Performs the recursive step of Cudd_zddDagSize. Does not check for out-of-memory conditions.]
SideEffects [None]
SeeAlso []
Definition at line 236 of file cuddZddMisc.c.
References Cudd_E, Cudd_IsConstant, Cudd_T, NIL, st_insert(), and st_is_member.
Referenced by Cudd_zddDagSize().
char rcsid [] DD_UNUSED = "$Id: cuddZddMisc.c,v <IP_ADDRESS> 2005/04/18 17:40:17 mchu Exp $" [static] |
CFile***********************************************************************
FileName [cuddZddMisc.c]
PackageName [cudd]
Synopsis [.]
Description [External procedures included in this module:
Internal procedures included in this module:SeeAlso []
Author [Hyong-Kyoon Shin, In-Ho Moon]
Copyright [ This file was created at the University of Colorado at Boulder. The University of Colorado at Boulder makes no warranty about the suitability of this software for any purpose. It is presented on an AS IS basis.]
Definition at line 62 of file cuddZddMisc.c.


AWS::ECR::Repository
The AWS::ECR::Repository
resource specifies an Amazon Elastic Container
Registry (Amazon ECR) repository, where users can push and pull Docker images, Open
Container Initiative (OCI) images, and OCI compatible artifacts. For more information,
see Amazon ECR private repositories in the Amazon ECR User
Guide.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "Type" : "AWS::ECR::Repository", "Properties" : { "EncryptionConfiguration" :
EncryptionConfiguration
, "ImageScanningConfiguration" :ImageScanningConfiguration
, "ImageTagMutability" :String
, "LifecyclePolicy" :LifecyclePolicy
, "RepositoryName" :String
, "RepositoryPolicyText" :Json
, "Tags" :[ Tag, ... ]
} }
YAML
Type: AWS::ECR::Repository Properties: EncryptionConfiguration:
EncryptionConfiguration
ImageScanningConfiguration:ImageScanningConfiguration
ImageTagMutability:String
LifecyclePolicy:LifecyclePolicy
RepositoryName:String
RepositoryPolicyText:Json
Tags:- Tag
Properties
EncryptionConfiguration
-
The encryption configuration for the repository. This determines how the contents of your repository are encrypted at rest.
Required: No
Type: EncryptionConfiguration
Update requires: Replacement
ImageScanningConfiguration
-
The image scanning configuration for the repository. This determines whether images are scanned for known vulnerabilities after being pushed to the repository.
Required: No
Type: ImageScanningConfiguration
Update requires: No interruption
ImageTagMutability
-
The tag mutability setting for the repository. If this parameter is omitted, the default setting of
MUTABLE
will be used which will allow image tags to be overwritten. IfIMMUTABLE
is specified, all image tags within the repository will be immutable which will prevent them from being overwritten.Required: No
Type: String
Allowed values:
IMMUTABLE | MUTABLE
Update requires: No interruption
LifecyclePolicy
-
Creates or updates a lifecycle policy. For information about lifecycle policy syntax, see Lifecycle policy template.
Required: No
Type: LifecyclePolicy
Update requires: No interruption
RepositoryName
-
The name to use for the repository. The repository name may be specified on its own (such as
nginx-web-app
) or it can be prepended with a namespace to group the repository into a category (such asproject-a/nginx-web-app
). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the repository name. For more information, see Name type.Note If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
Required: No
Type: String
Minimum:
2
Maximum:
256
Pattern:
(?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*
Update requires: Replacement
RepositoryPolicyText
-
The JSON repository policy text to apply to the repository. For more information, see Amazon ECR repository policies in the Amazon Elastic Container Registry User Guide.
Required: No
Type: Json
Minimum:
0
Maximum:
10240
Update requires: No interruption
Tags
-
An array of key-value pairs to apply to this resource.
Required: No
Type: List of Tag
Update requires: No interruption
Return values
Ref
When you pass the logical ID of this resource to the intrinsic Ref
function, Ref
returns the resource name, such as
test-repository
.
For more information about using the Ref
function, see Ref.
Fn::GetAtt
The Fn::GetAtt
intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.
For more information about using the Fn::GetAtt
intrinsic function, see Fn::GetAtt.
Arn
-
Returns the Amazon Resource Name (ARN) for the specified
AWS::ECR::Repository
resource. For example,arn:aws:ecr:eu-west-1:123456789012:repository/test-repository
. RepositoryUri
-
Returns the URI for the specified
AWS::ECR::Repository
resource. For example,123456789012.dkr.ecr.us-west-2.amazonaws.com/repository
.
Examples
Specify a repository
The following example specifies a repository named
test-repository
. Its policy permits the users Bob
and Alice
to push and pull images. Note that the IAM users actually
need to exist, or stack creation will fail.
JSON
"MyRepository": { "Type": "AWS::ECR::Repository", "Properties": { "RepositoryName" : "test-repository", "RepositoryPolicyText" : { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPushPull", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/Bob", "arn:aws:iam::123456789012:user/Alice" ] }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability", "ecr:PutImage", "ecr:InitiateLayerUpload", "ecr:UploadLayerPart", "ecr:CompleteLayerUpload" ] } ] } } }
YAML
MyRepository: Type: AWS::ECR::Repository Properties: RepositoryName: "test-repository" RepositoryPolicyText: Version: "2012-10-17" Statement: - Sid: AllowPushPull Effect: Allow Principal: AWS: - "arn:aws:iam::123456789012:user/Bob" - "arn:aws:iam::123456789012:user/Alice" Action: - "ecr:GetDownloadUrlForLayer" - "ecr:BatchGetImage" - "ecr:BatchCheckLayerAvailability" - "ecr:PutImage" - "ecr:InitiateLayerUpload" - "ecr:UploadLayerPart" - "ecr:CompleteLayerUpload"
Specify a repository with an image scanning configuration
The following example creates a repository named test-repository
with image scanning enabled. For more information on image scanning, see Image scanning in the Amazon ECR User
Guide.
JSON
"MyRepository": { "Type": "AWS::ECR::Repository", "Properties": { "RepositoryName" : "test-repository", "ImageScanningConfiguration" : { "ScanOnPush": true } } }
YAML
MyRepository: Type: AWS::ECR::Repository Properties: RepositoryName: "test-repository" ImageScanningConfiguration: ScanOnPush: true
Specify a repository with a lifecycle policy
The following example creates a repository with a lifecycle policy.
JSON
{ "Parameters": { "lifecyclePolicyText": { "Type": "String" }, "repositoryName": { "Type": "String" }, "registryId": { "Type": "String" } }, "Resources": { "MyRepository": { "Type": "AWS::ECR::Repository", "Properties": { "LifecyclePolicy": { "LifecyclePolicyText": { "Ref": "lifecyclePolicyText" }, "RegistryId": { "Ref": "registryId" } }, "RepositoryName": { "Ref": "repositoryName" } } } }, "Outputs": { "Arn": { "Value": { "Fn::GetAtt": [ "MyRepository", "Arn" ] } } } }
YAML
Parameters: lifecyclePolicyText: Type: String repositoryName: Type: String registryId: Type: String Resources: MyRepository: Type: AWS::ECR::Repository Properties: LifecyclePolicy: LifecyclePolicyText: !Ref lifecyclePolicyText RegistryId: !Ref registryId RepositoryName: !Ref repositoryName Outputs: Arn: Value: !GetAtt MyRepository.Arn
See also
-
Creating a lifecycle policy in the Amazon ECR User Guide
-
PutLifecyclePolicy in the Amazon ECR API Reference


Linux and Git Tutorial
Linux Commands
Insert Mode
The shortcut is: "i" The Insert mode lets you insert text in a document. (insert text where the cursor is) or "o" (insert text at the beginning of the following line).
Visual Mode
The shortcut is: "V" The visual mode permits the user to select the text as you would do with a mouse but using the keyboard instead of the mouse. Useful to copy several lines f text for example.
Command Mode
Command begins with the symbol ":" When you are in another mod you can use the escape key (sometimes you'll need to hit it twice) to come back to command mod at any time.
Vim Usage Example
Example editing of the file /etc/hosts/
vim /etc/hosts
The editor is now in command mode. To start editing the file content, enter:
:1[enter]
Now you can edit the file by navigating to the line that you want to change with the cursor keys and then start typing the text. When you are finished with editing, press the [esc] key to go back to the command mode.
To save the file and exit the editor, enter:
:x[return]
In case you want to quit vim without saving the file, enter:
:q![return]
Vim Command Reference
Save ::w
Save and exit :wq
exit :q
force (example:! :w! :q!)
Vertical Split: open a document and then type :vsplit /path-to-document/document and this will open the specified document and split the screen so you can see both documents.
copy :y
copy a line :yy
paste :p
cut :d
cut a line :dd
Home Directory
Home Directory is the default directory that a user places into when the logs in. The username is typically where the files are listed under
Tildo
Character: ~
The Tildo is a character used that refers to the current user's home directory.
CD
The "CD" command stands for "change directory." As the name suggests it used to change the directory. If the commands has no argument then it take you to the home directory.
mkdir
"mkdir" command in Linux allows the user to create directories (also referred to as folders in some operating systems ). This command can create multiple directories at once as well as set the permissions for the directories.
$ mkdir [options...] [directories...]
$ mkdir NewDirectory
Copying Files (cp)
cp refers to copy. You can make a copy of a file or directory using cp command. -r use it for folders to copy internal recursive files, otherwise folder copy will not work.
$ cp welcome.txt welcome_copy.txt
Print Working Directory (PWD)
It refers to print working directory. It prints the absolute path of directory where you are in right now.
$ pwd
/home/root
mv
The "mv" command is used to move files. You can use absolute or relative paths when moving files. You can also change the name of the destination file.
This command is used to move a file.
$ mv /home/vagrant/file01 /tmp/file01
This command is used to move and change the name of the file
$ cp /home/vagrant/file01 /tmp/newfile
rm
The "rm" command is used to delete files and directories.
Use this command to delete a file:
$ rm /tmp/file01
Use this command to recursively remove all files in a directory:
$ rm -r /tmp/dir01
Use this command to skip the confirmation prompt for removing a file:
$ rm -f /tmp/file01
History
"history" is a command that shows the last 500 commands you have entered.
$ history
You can use "-c" to clear the history buffer
$ history -c
You can use "!!" to rerun the previous command
$ !!
You can also use "!N" where "N" is the number of the command from the history command output.
$ !5
Git Commands
Important Commands to know
- $ git init -- initialize
- $ git add -- add to repository
- $ git status -- see unstaged and staged files
- $ git reset -- remove files from staging area
- $ git commit -m "commit message here" -- commit to branch
- $ git add -A -- add everything to staging area
- $ git log -- see commit just made
- $ cd -- change directory
- $ cd .. -- previous directory
- $ ls -- what's in directory
- $ ls -la -- all info about directory
- $ touch .gitignore -- ignore files (for files with sensitive info)
Repository (Create/Track)
Repository: Location of where file are in
Commit: Command on git that selects branch
- Create a repository on GitHub
- Configure your credentials:
- $ git config --global user.email<EMAIL_ADDRESS>- $ git config --global user.name "Your Name"
- Go to the folder with desired projects: $cd ./file_path/
- Initialize git repository: $ git init
- Link GitHub repository successfully linked: $ git remote add origin
- Check if repository successfully linked: $ git remote -v
- Add all files to staging area. Replace dot with filename to add specific files: $ git add
- Check staging area: $ git status To unstage a file: $ git rm --cached file_name
- Commit any changes to master branch: $ git commit -m "COMMIT MESSAGE"
- Push changes to master branch: $ git push origin master
Cloning
Clone: Command on git that clone your branch on a local computer
* $ git clone
* e.g. $ git clone ../remote_repo.git .
* $ git clone https://github.com/stval98/A03
- List all repository information: $git remote -v
- List all branches in repository (local and remote): $ git branch -a
Push to (local/Remote)
Push: Command used on git that trasfer commit commands from a local computer to a remote repo
Pull: Command used on git that downloads fiel from a remote repo and installs and update on a local computer
Remote: Command used on Git that creates a copy of a file on local computer
- Show changes made to files: $ git diff
- Check staging area: $ git status
- Add files to staging area: $ git add -A
- Check changes made to staging area: $ git status
- Commit changes to master branch: $ git commit -m "changes made"
- Pull changes from master branch: $ git pull origin master
- Push changes to master branch: $ git push origin master
Merging Branches to Master and Deleting
Branch: Command on git that creates a branch
Merge: Command on git that merges two branche into separate branch
Creating a Local Branch
- Create Branch: $ git branch BRANCH_NAME
- Switch to branch: $ git checkout BRANCH_NAME
- List Local Branches: $ git branch
Merging Branches
- Switch to your production branch
- Create a branch to add the hotfix
- After it's tested, merge the hotfix branch, and push to production
- Switch back to your original user story and continue working.
Delete a Local Branch:
- List branches merged in so far: $ git branch --merged
- Delete branch locally: $ git branch -d BRANCH_NAME
- List all branches: $ git branch -a
- Delete remote branch: $ git push origin --delete BRANCH_NAME
$ git branch iss53
$ git checkout iss53
$ git checkout -b iss53
Solve a Merge Conflict
Merge Conflict: Command on git used when merge command has competing commits and needs users help to deciide final merge
Fetch: Command on git that update files from remote repository to local computer
- Pull changes from master branch: $ git pull origin master
- Check staging area to see file affected: $ git status
- Inspect file to find conflict. Search for <<<<<<< HEAD conflict marker.
- Make necessary changes to resolve the conflict.
- Commit changes: $ git commit -m "changes made"
- Push changes to branch: $ git push


What time is it?!
IT'S PIZZA TIME!
🍕🍕🍕
Fill out the form below to build out your pizza.
Name:
Size:
Small
Medium
Large
Sauce:
Marinara
Garlic Alfredo
Pesto
Pepperoni
Sausage
Ham
Bacon
Bell Peppers
Mushrooms
Onion
Artichoke
Olives
Sardines
Garlic
Pineapple (THE BEST TOPPING EVAR)
Take me to pizza heaven!
Order for:


About
Please find my new hompage here!
“Judge your success by the degree that you’re enjoying peace, health, and love”
- H. Jackson Brown Jr.
Welcome! I am a Ph.D. candidate in Technology and Operations at the University of Michigan's Ross School of Business. I am co-advised by John Silberholz and Roman Kapuscinski.
Motivated by a multidisciplinary background in statistics, financial economics, and industrial engineering, I made on the topic of operations management and management science, especially regarding energy markets. My current research focuses on establishing generalizable lessons on optimal control of battery energy storage systems using analytical modeling frameworks.
Before coming to Michigan, I received my B.S. in Statistics and Financial Economics from Seoul National University (SNU) in 2016 and M.S. in Industrial & Systems Engineering from Korea Advanced Institute of Science and Technology (KAIST) in 2019. I also have several working experiences that shaped my research interests in operations management. I co-founded and led a start-up for blind masseurs (Cham Son Gil Cooperative), which recently opened its 8th branch in South Korea. After graduating SNU, I spent a year working at SK Telecom as a full-time marketing manager.
Education
- University of Michigan-Ann Arbor, Technology & Operations, Sep 2019 - Present
- Korea Advanced Institute of Science and Technology (KAIST), M.S., Industrial & Systems Engineering, Feb 2017 – Feb 2019
- Seoul National University, B.S., Statistics, Mar 2009 – Feb 2016
- Seoul National University, B.S., Financial Economics Minor, Mar 2009 – Feb 2016
Research Experience
- Visiting Scholar, KAIST (Feb 2019 - Jul 2019)
- Research Assistant, KAIST, Sponsor: LG CNS (Jul 2018 – Feb 2019)
- Research Assistant, KAIST, Sponsor: Kantar TNS (Mar 2017 – Feb 2019)
- Research Assistant, Seoul National University, Time Series Analysis Lab (Dec 2012 – Feb 2013)
Work Experience
- Marketing Manager, SK Telecom (Jan 2016 – Feb 2017)
- Marketing Intern, SK Telecom (Jun 2015 – Aug 2015)
- Co-Founder, Team Leader, ChamSonGil Cooperative (Sep 2013 – Jul 2015)
- Sergeant, HHC, 8th U.S. ARMY (May 2010 – Feb 2012)
Teaching Experience
- Teaching Assistant, KAIST, IE481 Data-driven Decision Making and Control, (Fall, 2018)
- Teaching Assistant, KAIST, IE241 Engineering Statistics 1, (Spring, 2018)
Research
(International Journals)- Bae, J., Kapuscinski, R., and Silberholz, J. "Cost-Saving Synergy: Energy Stacking in Battery Energy Storage Systems," submitted. [link]
- Bae, J. and Park, J. "Count-based Change Point Detection via Multi-Output Log-Gaussian Cox Processes," IISE Transactions, 2019. [link]
- Bae, J., Park, J., Choi, J., and Soh, S. "A Recommending System for Mobile Games using Dynamic Nonparametric Model," submitted.
- Sim, H., Bae, J., and Park, J. "Optimal Management of Energy Storage Systems for Wind Turbines," work in Progress.
- The Recommender System for Mobile Applications, 2018 Global Marketing Conference, Tokyo, Japan.
- Frequency-based Anomaly Detection via Multi-Output Log Gaussian Cox Processes, 2018 Stochastic Processes and their Applications, Gothenburg, Sweden.
- An Application of Doubly Stochastic Poisson Process for Detecting Abnormalities, INFORMS Annual Meeting 2018, Phoenix, AZ.
Awards & Honors
-
National Science & Technology Scholarship (2009-2014), KOSAF
-
Social Venture Idea (2014), Ministry of Employment & Labor, Republic of Korea
-
Enactus National Competition (2014), Enactus
-
Hope Advertisement (2014), Seoul Metropolitan Government
-
SCH Social Venture Idea (2013), Soonchunhyang University
-
SK Social Enterprise (2013), SK Happiness Foundation
-
Army Commendation Medal (2012), 8th U.S.ARMY
References
- Roman Kapuscinski (Ph.D. Advisor), Professor, Department of Technology and Operations, University of Michigan
kapuscin (at) umich.edu - John Silberholz (Ph.D. Advisor), Assistant Professor, Department of Technology and Operations, University of Michigan
josilber (at) umich.edu - Jinkyoo Park (M.S. Advisor), Assistant Professor, Department of Industrial & Systems Engineering, KAIST
jinkyoo.park (at) kaist.ac.kr - Jeonghye Choi, Associate Professor, Department of Marketing, Yonsei University
jeonghye (at) yonsei.ac.kr - Seung Bum Soh, Assistant Professor, Department of Operations, Decisions, and Information, Yonsei University
sbsoh (at) yonsei.ac.kr
Contact
Joonho Bae
baejh (at) umich.edu
Ph.D. Candidate
914 Hill Street, Suite 229, Ann Arbor, MI 48109-1234


I am a student at the Lebanese American University(LAU), having some experience in Web and mobile development.
you can download the paper version of my CV here
In this position my main role is to help students and staff facing technical issues with university’s material, I am also responsible for the maintenance and installation of this materials.
LIS is a company that created an automation system for fuel companies, my main role in this company was to assist clients in the use of this software and help them solving any problem they would encounter (Via TeamViewer or on the ground).
GPA: 3.34
This project is about a two parts software:
Foodigo is an app that collect offers on different social medias and display those in a Website (also available as an application) the website is developped using php, html and javascript
you can find the website and the app hereApart from being a web and mobile developer, I like mechanics, and everything related to cars, I appreciate outdoors and enjoy hiking.
I am a big fan of Artificial intelligence and one of my main goals is to fully develop one from scratch.


Diseases brought about by bacteria’s
in the animals body have been rampantly spreading.
Here are examples of the bacteria
causing diseases and it’s description.
It is amazing to know that a disease
can spread with just physical contact.
Minute they may seem but they do big things.
Discover the wonders of bacteria's affecting human now
It is amazing to know that a disease
can spread with just physical contact.
Minute they may seem but they do big things.
Discover the wonders of bacteria's affecting human now