CREATE TEXT SEARCH DICTIONARY creates a new text search dictionary. A text search dictionary specifies a way of recognizing interesting or uninteresting words for searching. A dictionary depends on a text search template, which specifies the functions that actually perform the work. Typically the dictionary provides some options that control the detailed behavior of the template's functions.
If a schema name is given then the text search dictionary is created in the specified schema. Otherwise it is created in the current schema.
The user who defines a text search dictionary becomes its owner.
Refer to Chapter 12 for further information.
The name of the text search dictionary to be created. The name can be schema-qualified.
The name of the text search template that will define the basic behavior of this dictionary.
The name of a template-specific option to be set for this dictionary.
The value to use for a template-specific option. If the value is not a simple identifier or number, it must be quoted (but you can always quote it, if you wish).
The options can appear in any order.


Column with 25% width. Parent grid set to justify-content: space-between
Column nested within a flexy grid with items centered. Parent grid width is 25%
Column with 25% width. Parent grid set to justify-content: space-between.
flexy-1
Flexy-11
flexy-2
flexy-10
flexy-4
flexy-8
flexy-5
flexy-7
flexy-6
flexy-6
flexy-7
flexy-5
flexy-6
flexy-4
flexy-9
flexy-3
flexy-10
flexy-2
flexy-11
flexy-1
flexy-12


Features
- can add employees
- add remove and edit permissions
- can look at users and page views
- can crud a cluster
Pages
- Dashboard - view visitors, new notfications, products bought
- users - remove, edit, or add user
- employees - edit permissions, remove, approve new employees, send form link
- cluster - remove, edit, add


Content Settings
Cookies
Location
Camera
Microphone
Notifications
JavaScript
Flash
Images
Popups
Ads
Background Sync
Sound
Automatic Downloads
Unsandboxed Plugin Access
Handlers
MIDI Devices
Zoom Levels
USB Devices
PDF Documents
Protected Content
Clipboard
◂
Back


{% extends 'base.html' %} {% block title %}Successful Login - {{ block.super }}{% endblock %} {% block content %}
You have been authenticated as {{ user.email }}


cmp2cmproj converts a Cmajor project file project.cmp to a MSBuild compatible project fle project.cmproj understood by the Cmajor Visual Studio extension.
Usage: cmp2cmproj [options] { project.cmp }
| --help | -h | Print help. | |
| --verbose | -v | Be verbose. |
cms2sln converts a Cmajor solution file solution.cms to a MSBuild compatible solution file solution.sln understood by the Visual Studio. All Cmajor projects contained by the solution.cms are converted to MSBuild compatible project files project.cmproj.
Usage: cms2sln [options] { solution.cms }
| --help | -h | Print help and exit. | |
| --verbose | -v | Be verbose. |
cmproj2cmp converts a MSBuild compatible project file project.cmproj to a Cmajor project fle project.cmp understood by the Cmajor compiler cmc.exe.
Usage: cmproj2cmp [options] { project.cmproj }
| --help | -h | Print help and exit. | |
| --verbose | -v | Be verbose. |


Hello! Welcome to my portfolio site. My name is Emily Raper and I am an aspiring fullstack web developer. Right now, I am a undergraduate student at the University of Minnesota - Twin Cities, studying Technical Writing and Communication with an emphasis in IT and Design. I am also minoring in Computer Science and completeing a Fullstack Web Development course through the university. Following this course, I hope to obtain an internship where I use these skills, while still completeing my senior year of college. After I graduate I would love to work as a junior web developer.
HTML is all of the text you see on this page and on any site. CSS makes the site pretty with colors, fonts, and pictures, and Bootstrap helps make this process easier. JavaScript is the language that allows me to create interactive sites.


Complexity is the quality of consisting of many interrelated parts. When software consists of many interrelated parts, it becomes more difficult to reason about. Software that is difficult to reason about is a more fertile breeding ground for bugs than software that is simple.
Every problem space contains some level of inherent complexity, which is shared by all possible solutions. However, as programmers, we can reduce the complexity of our chosen solutions by limiting the interrelatedness of their constituent components. This is commonly referred to as favouring cohesion over coupling, and forms the bedrock on which axioms such as the single responsibility principle are built.
In codebases that are large and/or unfamiliar, it can be difficult to know whether regions of complexity exist and where they might be. By defining metrics of complexity, the search for offending components can be automated and brought into the existing build process alongside other forms of static analysis and unit tests. Although the metrics themselves are far from perfect, they can be useful in helping to identify areas of code that warrant closer inspection. They can also be tracked over time, as an indicator of the direction that overall code quality may be moving in.
The metrics that are reported by this site are generated by escomplex, which can be used in such a way on JavaScript projects. Currently, it is able to report on the following complexity metrics: lines of code, number of parameters, cyclomatic complexity, cyclomatic complexity density, Halstead complexity measures, maintainability index, dependencies, first-order density, change cost and core size.
This can be either physical (a count of the actual lines in the file) or logical (a count of the imperative statements). The physical count is widely considered to be a less useful metric because it is easily subverted by collecting multiple statements on a single line of code. However it should be noted that the logical count can be similarly flawed, since the tersest expression of a solution is not necessarily the optimal one.
Analysed statically from the function signature,
so no accounting is made
for functions that rely on the arguments
object.
Lower is better
Defined by Thomas J. McCabe in 1976, this is a count of the number of cycles in the program flow control graph. Effectively the number of distinct paths through a block of code. Lower is better.
Proposed as a modification to cyclomatic complexity by Geoffrey K. Gill and Chris F. Kemerer in 1991, this metric simply re-expresses it as a percentage of the logical lines of code. Lower is better.
In 1977, Maurice Halstead developed a set of metrics which are calculated based on the number of distinct operators, the number of distinct operands, the total number of operators and the total number of operands in each function. This site picks out three Halstead measures in particular: difficulty, volume and effort.
(# distinct operators / 2) *
(# operands / # distinct operands)
(# operators + # operands) *
log2(# distinct operators + # distinct operands)
difficulty * volume
Designed in 1991 by Paul Oman and Jack Hagemeister at the University of Idaho, this metric is calculated at the whole program or module level from averages of the other 3 metrics, using the following formula:
171 -
(3.42 * ln(mean effort)) -
(0.23 * ln(mean cyclomatic complexity)) -
(16.2 * ln(mean logical LOC))
Values are on a logarithmic scale ranging from negative infinity up to 171, with greater numbers indicating a higher level of maintainability. In their original paper, Oman and Hagemeister identified 65 as the threshold value below which a program should be considered difficult to maintain.
A list of dependencies
from calls to CommonJS and AMD require
.
Analysed statically from the function signature,
so no accounting is made
for dynamic calls
where a variable or function
is obscuring the nature of the dependency.
Fewer is better.
The percentage of all possible internal dependencies that are actually realised in the project. Lower is better.
The percentage of modules affected, on average, when one module in the project is changed. Lower is better.
The percentage of modules that are both widely depended on and themselves depend on other modules. Lower is better.
The key point with all of these metrics is that the prescribed threshold values should not be considered as definitive indicators of whether a particular piece of code is "too complex", whatever that might mean. Software development is a broad, varied practice and every project is subject to a unique set of countless environmental factors, rendering such general absolutes as essentially arbitrary. Further, complexity itself is such an amorphous, multi-dimensional continuum, that attempting to pigeon-hole chunks of code at discrete points along a single axis is an intrinsically crude model.
It is better to use them as a somewhat fuzzy, high-level mechanism, which can identify regions of potential interest or concern and from which your own programming- and domain-expertise can take over for a more comprehensive analysis.


As an interactive environment and notebook tool that promotes literate programming, SoS allows you to perform and record your analysis in different languages in a single Jupyter notebook, with seamless integration of multiple Jupyter kernels (e.g. python, and R). The ability to exchange data between live jupyter kernels allows you to use the most appropriate languages for different parts of your analyses.
SoS can work with all Jupyter kernels and currently provides native support (with data exchange) for the following languages:
| Bash |
| JavaScript |
| Julia |
| MATLAB |
| Ruby |
| Octave |
| Python 2 |
| Python 3 |
| R |
| SAS |
| TypeScript |
SoS follows your definition of workflow that allows you to define workflows in both foward and makefile style, even a mixture of both. More specifically, you can define workflows as ordered steps that would be executed sequentially step by step to process specified input files; or as a set of makefile-style rules that would be executed to generated specified output files; or as a sequence of steps with help from makefile-style steps. SoS automatically analyzes the input and output of steps and execute workflows using a dynamic DAG (Directed Acyclic Graph) that would be expanded and shrinked during the execution.
SoS separates the execution of workflows as individual execution units and record the signature of the execution units during the execution of the workflow.  The execution units are indepedent of workflows so some steps of your workflow could be ignored if they have been executed by another workflow.
SoS is very easy to learn so that you can start using it in minutes without having to learn any of the advanced features. As demonstrated in our Quick Start Guide, you can easily consolidate your scripts into an executable workflow using SoS and add more features to the script step by step if necessary. The multi-kernel feature of the Jupyter notebook is also easy to use with only two magics to remember.
SoS is released under a 3-clause BSD license and is available for Mac OSX, Linux, and Windows operating systems. SoS provides an interactive environment for interactive data analysis on your PC. With just a few additional steps, your script can be transformed to a workflow that deals with different input files and different processing logics, and can be run in batch mode on a cluster system or in a cloud environment.
SoS is open source and provides an API to work with aribitrary languages. Its data-exchange model allows the exachange of arbitrary data types between languages with results in native data types. If your favoriate language is not yet support and you are familiar with Python, feel free to add it to SoS.


If you want to play with random players, please leave the Room input
field empty and press the Play button.
If you want to play with your friends, please Generate room and
Share the code.
To connect to an existing generated room, please paste the code into
the Room input field.


Click the link below to review the Website. Tell us if you can read the "full-text" of the article linked.
Instructions:
${articleTitle}
Sometimes we don't get the article title above. If that happens, you should be able to find it here: ${articleID}
Could you read the full text?
YesIf yes, can you give us the link?
Remember to include https:// or http:// (this is best just copied from your URL bar)
If no, why?
I was asked to loginIf asked to login, can you give us the link?
Remember to include https:// or http:// (this is best just copied from your URL bar)


EastEnders return, Corrie car accident and 8 more soap spoilers this week
by Stephen PattersonThe start of a new week brings with it plenty of drama in soapland, and what with us edging closer to Christmas, there’s more drama than ever this week, as Rainie Branning (Tanya Franks) returns in EastEnders, while Daniel Osbourne (Rob Mallard) is knocked down by a car in Coronation Street.
Over in Emmerdale, disaster strikes as Archie goes missing, while John Paul McQueen (James Sutton) returns in Hollyoaks.
The truth about Leo revealed in EastEnders
Leo reveals to Whitney that he’s booked a night stay for the pair of them at a hotel. However, Callum’s suspicions of Leo continue to grow — something which he later relays to Tiffany. However, Tiffany’s having none of it, and accuses him of simply being jealous. After giving it some more thought, Tiffany decides to ring Bianca to get to the bottom of what’s going on, and she learns that Leo is Tony’s son. However, she’s unable to get through to Whitney at the hotel.
One to watch: Tuesday 10th December at 7:30pm on BBC One.
Yasmeen and Geoff return with an announcement in Coronation Street
Yasmeen and Geoff return from Vegas, and Geoff announces that they tied the knot while abroad. He wastes little time in manipulating Yasmeen upon their return, and attempts to convince her that Alya doesn’t approve of their marriage. Later, at their welcome home party, Geoff gushes over his new wife, but when they’re alone he accuses her of embarrassing him, and attempts to make her eat a crab shell from the bin.
One to watch: Monday 8th November at 7:30pm on ITV.
Archie goes missing and Jimmy’s questioned in Emmerdale
Arthur is worried his secret will out, and thus he tells Archie they’d all be better off if he just left. The next day, Jai’s devastated when he realises that Archie has gone missing. Jimmy is taking in and questioned by the police in regards to Archie’s disappearance, and matters are made worse when Arthur vanishes too. Jai promises Jimmy that he’ll pay for what’s happened.
One to watch:
Mercedes is being watched in Hollyoaks
Mercedes begins to worry that the shooter is still out there, and her fears are worsened when she receives a threatening letter. She relays this information to Breda, who attempts to put her mind at ease, but later a barrel is pushed over in The Dog carpark — someone is watching her.
One to watch: Tuesday 10th December at 7pm on E4.
Martin gets quite the shock in EastEnders
Martin is shocked to discover that Ben’s gone legit, and thus he seeks out Tubbs to get him back in the business. As a result, he ends up making quite a lot of cash, and Martin’s chuffed, but he considers calling it a day. However, when he gives Sonia money to buy Bex a car — and Bex is delighted as a result — he has a change of heart.
One to watch: Monday 9th December at 8pm on BBC One.
Robert is arrested in Coronation Street
Robert is arrested on suspicion of assault after the police discover that fragments of Vicky’s vase retrieved from his van have her blood on them. The former Bistro owner is left incredibly confused by the discovery, and proceeds to know how it got there.
One to watch: Friday 13th November at 7:30pm on ITV.
Aaron continues to intimidate Wendy in Emmerdale
Aaron continues to intimidate Wendy as he hopes he can scare her out of the village. However, Luke soon finds out about his plan and confronts him as a result. Later, Aaron continues to torment Wendy, before paying Luke another visit. As the animosity rises, Aaron reaches for a golf club and prepares to attack the young man — but will he follow through?
One to watch:
John Paul returns in Hollyoaks
Yazz continues to dig into Edwards past and she warns Finn that Diane simply isn’t safe in his company.  Later, he meets with Sally, and a taxi arrives. John Paul exits the vehicle, and is curious as to why he’s been summoned back to Chester, and Edward reveals they need his help to rid the village of Finn.
One to watch: Monday 9th December at 7pm on E4.
Rainie returns in EastEnders
With Rainie’s release imminent, Stuart plans a surprise party for her. However, he soon reveals to Callum that he’s got himself a trial shift at Coker and Mitchell’s — and Callum’s less than pleased about the whole thing. Later, Rainie returns and she and Stuart waste little time in reuniting, as she shows off her present for him.
One to watch: Friday 13thDecember at 8pm on BBC One.
Daniel is knocked down in Coronation Street
Daniel struggles to cope without Sinead, and Ken, Adam and Peter are all concerned as a result. He continually watches the video of Sinead talking about his kiss with Bethany, and his flat is in a right state. However, matters go from bad to worse when — after they take him out for lunch in the Bistro — Daniel gets drunk and is hit by Cathy’s car. Bethany rushes to his aid, and she tells him Sinead knew the kiss meant nothing. Afterwards, Daniel promises to be a better dad to Bertie.
One to watch:Wednesday 11th November at 7:30pm on ITV.


9.1 Localization Accuracy and Reliability
9.3 Target Location in Clutter
9.4 Detection of Very Small Objects
The target location in noise problem can be formulated as target object located at coordinates of an image plane specified by its samples,, . The samples of an observed input image that contains a target object are the samples of the target object signal and samples of a random process that represents imaging system sensor noise:
Equation 9‑1
Two types of are considered, one where is non correlate Gaussian noise, and the other where is correlated Gaussian noise.
is considered zeros mean and statistically independent on the signal .
For the non-correlated Gaussian noise model, in addition to the assumption that noise samples are statistically independent on the signal, is considered to be uncorrelated and have a Gaussian probability distribution density with zero mean and variance.
The optimal MAP estimates of object coordinates are solutions of equation:
Equation 9‑2
Correspondingly, ML-estimate of target coordinates can be obtained as
Equation 9‑3
This indicates that the target location algorithm will be comprised two units: correlator unit, which computes mutual correlation function of the observed signal and the target object signal , or template, in all possible range of its coordinates, and a unit for locating position of the highest signal peak at the correlator output (Figure 9‑1).
Figure 9‑1: Flow diagram of the ML optimal localization device
Optimal MAP-estimator also consists of a correlator and a decision-making device locating the maximum in the correlation pattern. The only difference between ML- and MAP-estimators is that, in the MAP-estimator, the correlation pattern is biased by the appropriately normalized logarithm of the object coordinates’ a priori probability distribution.
The digital correlation can be implemented in DFT domain:
Equation 9‑4
Where is input signal DFT spectrum, is the complex conjugate of the target object DFT spectrum. Such an implementation is called matched filtering. Correspondingly, the filter that implements this operation is called matched filter.
For the correlated Gaussian noise model, in addition to the assumption that noise samples are statistically independent on the signal, is considered to be correlated and have a Gaussian probability distribution density with zero mean and noise DFT power spectrum of where is a normalized spectrum shaping function such that
Equation 9‑5
Applying the observed signal plus noise mixture, with a filter with frequency response
Equation 9‑6
Which is also known as a whitening filter, will result in noise power spectrum become uniform with spectral density, while the target object signal spectrum is modified to. This means that by using the whitening filter, the target with correlated noise became a target with white, uncorrelated noise.
Therefore for the case of additive correlated noise ML-optimal localization device should consist of the whitening filter followed by a filter matched to the modified target object signal and by a device for localizing the signal maximum. This is the optimal localization device shown in a flow diagram of Figure 10‑2. that provide maximum likelihood (ML) estimation of the target object coordinates.
The whitening filters and the filter matched to the modified target object can be combined into one filter with discrete frequency response
Equation 9‑7
The above reasoning implies also that, for a target signal observed in a mixture with additive correlated Gaussian noise, filter defined by Equation 9‑38 generates a signal which is monotonically related with a posteriori probability of target coordinates.
The filter defined by Equation 9‑38 has yet another important feature. It provides the highest possible, for all linear filters, ratio of its response to the target object signal to standard deviation of noise at its output (signal-to-noise ratio).
For that reason it is referred as the SNR-optimal filter.
There are two essentially different types of possible localization errors. One type of the errors occurs when noise intensity is relatively low with respect to that of the target object signal. In such cases, correlator output maxima are located in a close vicinity of the target location, and, therefore, localization errors are relatively small. The second type of the errors is represented by large errors, which occur, when correlator output maxima are found very far away from the actual position of the target object. Small localization errors are caused by distortion of the target autocorrelation peak shape by the noise. Large errors are a result of prominent large noise outbursts occurring outside the area occupied by the object.
We call the first type of error normal errors because their probability distribution density can be approximated by a Gaussian (normal) distribution.
The errors of the second type are called anomalous errors, and its probability distribution density can be approximated uniform distribution density. The uniform distribution density of anomalous errors has quite an obvious explanation. Outside the area occupied by the object only noise component is present. Because it is a stationary random process, extremely large noise outbursts, which cause anomalous localization errors, are equally probable everywhere in this area.
Because the SNR-optimal filter is the matched filter for the target object signal modified by the whitening operation, the potential localization accuracy of the optimal filter can be derived from error in localization accuracy in the presence of white noise in which target object DFT spectrum is replaced by its whitened spectrum.
A key feature of correlated noise is that the potential localization accuracy in the presence of non-white noise is always better than that for white noise with the same variance.
This conclusion is well intuitively understood. Consider, for instance, a trivial special case, when noise is band limited and its bandwidth is less than that of the signal. SNR-optimal filter is in this case a band pass filter, which lets through all input signal frequencies, where noise spectrum vanishes to zero and blocks all other frequency, where noise spectrum is non-zero. The resulting signal is therefore noise free and the potential localization error variance is equal to zero.
The “Localization Accuracy and Reliability” experiment introduce target image localization algorithms in two noise environments, correlated and non-correlated Gaussian noise, with two different versions of target – smooth target and sharp target.
The 15x15 target image (sharp or smooth) is planted randomly in a noisy image. Using the proper correlator (depending on the noise type), the target location is estimated.
This process is repeated for times, where is a parameter provided by the user. An error histograms is constructed and updated with each iteration. The error is set to be the norm between actual location and found location.
Figure 9‑3: "Localization Accuracy and Reliability". Top left is the sharp target image. Bottom left is the smooth target image. Top middle is the sharp image located in a noisy image, with white Gaussian noise. Bottom middle is the smooth image located in a noisy image, with white Gaussian noise. Top right is the location error histogram of localization of the sharp image built from 10000 iterations. Bottom right is the location error histogram of localization of the smooth image built from 10000 iterations. The SNR used was 0.025.
Figure 9‑4: Location error histograms, zoomed in. Left is the sharp target location error histogram. Right is the smooth target location error histogram.
Figure 9‑3 and Figure 9‑4 shows an important issue with respect to the task of object localization.
There are two sources of localization error are indicated by the error histogram. In the error histogram there are two sections – near zero error, and far from zero errors. The near zero errors can be models with a Gaussian, and are related to normal errors described at <IP_ADDRESS>. The far from zero errors can be modeled as uniform distribution, and are related to anomalous errors, also described at <IP_ADDRESS>.
Image registration is the problem of aligning two image of the same scene, taken from different locations. In the case of a translation motion (a shift in the x-y coordinates) between the two images, the task of finding the shift can be considered as target localization, where the target is the entire image.
Given two images which are a shifted version of one another, the translation shift can be found by:
Equation 9‑9
Where their correlation function is:
Equation 9‑10
Three versions of the same image (for example, the 3 color component of an RGB image) are coordinate shifted from one another. The correlation function is calculated between the first image and the second one, and between the first image and the third one. The images are then shifted back according to the found shift.
Figure 9‑5: “Image Registration”. Top left is the three shifted images. Top right is the calculated cross correlation between the first image and the second image. Bottom left is calculated cross correlation between the first image and the third image. Bottom right is the image after alignment of source images.
The problem described in 9.1 Localization Accuracy and Reliability of locating a single target in a noisy image does not take into account other objects in the image, which are not the target, and may result in higher correlation then the target. “Target Location in Clutter” is focused on the solution for this problem in the form of linear filters. The formulation of the problem is as follows:
Let , , be samples of an input image that contains , in coordinates , a target image defined by its samples . Position of the target object has to be found as a position of the highest signal peak at the output of a linear filter. Let also be discrete frequency response of the linear filter, and be DFT spectral coefficients of the target object and of the input image, respectively ().
Then filter output at the location of the target object is:
and filter response to the entire input image is
Equation 9‑12
The rate of target object false detections is determined by the number of possible target positions within filter output image , in which . One can try to minimize this number by an appropriate selection of the filter frequency response . No analytical solution of this minimization problem is feasible, because there is no analytical relationship between frequency response of the filter and probability density of its output signal. The only statistical parameters of the filter output signal that can be determined given the filter frequency response are signal mean value:
Equation 9‑13
and variance:
Equation 9‑14
The latter follows from Parseval relationship. Therefore, for optimization of the localization device filter we will rely upon the Tchebyshev’s inequality, which establishes a relationship between probability that a random variable exceeds some threshold and the variable’s mean value and standard deviation :
Equation 9‑15
Using this inequality, obtain for the probability of false identification of the target object located in coordinates with one of non-target (background) objects:
Equation 9‑16
where are filter output values at points outside the target location, and are their mean value and variance, is filter output value, defined by Equation 9‑11, at the target location. Optimal design of the filter requires minimization of on average over all range of possible target object coordinates:
According to Equation 9‑17, this is equivalent to:
Equation 9‑18
We call the ratio
“signal-to-clutter ratio”.
Equation 9‑19 implies that, for minimizing, one should maximize . If DFT power spectrum of the input image background component is known, can be found using Parseval relationship:
Equation 9‑20
and therefore
Equation 9‑21
Substitute this equation and Equation 9‑11 in Equation 9‑19, obtain:
Equation 9‑22
By virtue of Cauchy–Bunyakovsky–Schwarz inequality defined by this equation has an upper bound:
Equation 9‑23
that is reached when
where asterisk * denotes complex conjugation.
One can see that filter defined by Equation 9‑24 is analogous to the SNR-optimal filter (Equation 9‑8) introduced in <IP_ADDRESS> for object localization in the presence of correlated Gaussian noise. The numerator of its frequency response is the frequency response of the filter matched to the target object, just as in the SNR-optimal filter for target locating on the background of additive white Gaussian noise. The denominator of its frequency response is image background component power spectrum averaged over all possible positions of the target object. It replaces the additive Gaussian noise power spectrum in the filter of Equation 9‑8. This makes optimal filter defined by Equation 9‑24 to be adaptive to the input image. We will call this filter SCR-optimal adaptive correlator.
In order to be implement SCR-optimal adaptive correlator, one needs knowledge of the averaged power spectrum of the background component of the image. It has to be estimated from power spectrum of the input image. For this one has to specify in which way target and background components are combined in the input image.
Consider following two models for this relationship: additive model and implant model. For the additive model, target image and background components are summed up to form the input image:
Equation 9‑25
The additive model seems to be adequate to the cases of “transmissive” imaging, such as, for instance X-ray imaging.
For the implant model, target object and background image component complement each other and the latter is a part of the input image
selected by a certain target window function equal to one in points that belong to the target object and to zero in not target object points. The implant model is more adequate to “reflective” imaging, such as, for instance, conventional photography.
For the additive model, spectrum of the background image component can be found as:
Equation 9‑27
In this case its averaged power spectrum can be evaluated as:
Equation 9‑28
For the implant model (Equation 9‑26), it can be shown that
Equation 9‑29
where are DFT spectral coefficients of the target object window function for target located in the origin of coordinates:
Equation 9‑30
In a special case when the target window function is a rectangle of pixels, averaged over unknown target object coordinates power spectrum of the background image component can be, for the implant model, evaluated as:
Equation 9‑31
As target objects usually occupy only a relatively small part of the input image area (the largest relative area of the target is 1/9 for the case, when are 3x3 possible positions of the target), contribution of the target object into power spectrum of the input image is relatively small. In view of this, both additive and implant models imply that one can use, as a zero-order approximation to the averaged power spectrum of the image background component, either power spectrum of the input image:
Equation 9‑32
or input image power spectrum smoothed by a certain smoothing window function :
Equation 9‑33
This smoothing corresponds to windowing input image by an “apodization” function, which is equal to unity in the center of the image and gradually decays to zero to the image borders. Such a windowing, known in optics as “apodization”, is a useful method for reducing border effects in evaluating image DFT spectra, caused by cyclicity of DFT.
The described SCR-optimal adaptive correlator minimizes the probability of anomalous errors of target localization in images by means of adaptation of its filter frequency response to the power spectrum of the background image component. This approach is justified if images are spatially homogeneous in terms of their spectra, i.e. power spectra of arbitrary image fragments do not differ much from the power spectrum of the entire image. While this is true for many images, which belong to the class of so-called texture images, this spectral homogeneity is an exemption rather than a rule. Generally, images are non-homogeneous and their local power spectra may vary very substantially
A natural extension of the above developed SCR-optimal adaptive correlators to non-homogeneous images is designing and applying the correlator filter locally in sliding window of the size commensurable with size of image fragments that can be regarded as being homogeneous in terms of their power spectra. In such an implementation, in each position () of the window SCR-adaptive filter is applied to the image within the window and signal-to-clutter ratio is computed as ratio of the squared filter output signal to the variance of the filter output signal within the window (local variance):
Equation 9‑34
Estimate of the target coordinates is then found as a position of the global maximum over the map. We will refer to sliding window SCR-optimal adaptive correlators with frequency response
where is an estimate (obtained as it is described in the previous section) of the image background component within the window in its -th position, as to SCR-optimal local adaptive correlators.
SCR-optimal local adaptive correlators do substantially outperform global optimal adaptive correlators in terms of signal-to-cluster ration they provide in real-life images.
The “Target Location in Clutter” experiment compares 4 different localization method: matched filter, normalized cross correlation (NCC), SCR-optimal filter and SCR-optimal local adaptive correlators.
Unlike the other correlators, the normalized cross correlation is not a linear function of the image, and it is used in the “Target Location in Clutter” experiment as reference. The normalized cross correlation localization algorithm is performed in a sliding window on the searched image. For each window in the searched image with same size as the fragment searched the normalized cross correlation is calculated:
Equation 9‑36
Where is the current window in the searched image and is its mean value, is the fragment image and is the fragment mean value. [2]
Figure 9‑6:"Target Location in Clutter". Top left is the test image. The selected target is marked with black square. Top right are the localization results - match filter (red), SCR (blue), NCC (yellow). Bottom left is the homogonized SCR result. Searched fragmetn was 32x32 size. Additive model is used for background spectrum estimation.
Figure 9‑7:"Target Location in Clutter". Top left is the test image. The selected target is marked with black square. Top right are the localization results - match filter (red), SCR (blue), NCC (yellow). Bottom left is the homogonized SCR result. Searched fragmetn was 3x3 size. Additive model is used for background spectrum estimation.
Figure 9‑8:"Target Location in Clutter". Top left is the test image. The selected target is marked with black square. Top right are the localization results - match filter (red), SCR (blue), NCC (yellow). Bottom left is the homogonized SCR result. Searched fragmetn was 3x3 size. Window smoothing model is used for background spectrum estimation.
Figure 9‑6 ,Figure 9‑7 and Figure 9‑8 illustrates the importance of homogenization. Although not always the case, matched filter with homogenized input will result in good localization result. A similar argument can be claimed about proper background spectrum estimation. Comparing the results of Figure 9‑7 and Figure 9‑8, it can be seen that by switching the method of spectrum estimation, the failure in detection of SCR changed to a success.
The “Detection of Very Small Objects” experiment detects and emphasis small object in a target image using SCR-optimal local adaptive correlators described at Equation 9‑35, with local spectrum calculated as 3x3 averaging filter of the entire image spectrum. The correlation with the target is done by convolution with mask of ones with size given by user.
Figure 9‑9: "Detection of Very Small Object". Left is the test image. Right image is an image with small object highlighted, using correlation filter. Small object is 3x3 matrix of ones.
For Impulse noise filtering problem when the location of distorted pixels are not known, their detection represents the main problem. The Impulse noise characteristics are described on chapter Error! Reference source not found. Error! Reference source not found.. The task of locating the location of distorted pixels can be treated as a special case of object localization in clutter images.
For localization of impulse noise samples, individual pixels replaced by noise are the localization target. Hence, target spectrum in Equation 9‑24 that determines SCR-optimal adaptive correlator is uniform, and the correlator filter frequency response will be in this case determined solely by an estimate
When positions of power spectrum of the image background component:
Equation 9‑37 implies that image filtering using this filter is double whitening. Double whitening can be approximated by two convolution of the image with Laplacian (the double Laplacian). Detection of impulse noise samples can be then implemented by comparing of the output of such a filter in every pixel with a certain threshold. As the threshold, the filter output standard deviation multiplied by a certain constant can be taken, the constant been selected so as maximize the probability of correct detection, given the probability of false alarms that may occur due to contrast small details and object edges in the image. At the correction stage, image samples that have been detected as distorted, can be replaced by “predicted” values found by a one or another smoothing operation over those samples in their vicinity that are not marked as distorted. As the smoothing operation, arithmetic mean or its robust non-linear versions can be used. This algorithm can mathematically be formalized as
where are filtered image samples, are samples of the initial distorted image, are samples of the result of applying to image the double Laplacian operator, is a detection threshold constant multiplier to the standard deviation of , are the “predicted” values. is a free parameter of the algorithm that depends on the probability of pixel distortion: the lager the probability the lower must be .
In case when the probability of pixel distortion is sufficiently large, many clusters of two of more adjacent distorted pixels may occur, which hampers detection of individual distorted pixels by the filter aimed at detection of individual distorted pixels. The reliability of the detection of distorted pixels can be increased if denoising is implemented in an iterative fashion, using as input image, at each iteration, the image obtained on the previous iteration and with decreasing, from iteration to iteration, of the impulse noise detection threshold in order to remove and correct at earlier stages of iterations the most intensive impulse noise outbursts. This algorithm can mathematically be formulated by the equation
Equation 9‑39
where are filtered image samples at -th iteration (), are samples of the result of applying to image at -th iteration the double Laplacian operator, is the detection threshold constant multiplier to the standard deviation of , are the “predicted” values found.
A simple and fast modification of this denoising filtering is recursive filtering in a sliding window, in which detection and estimation for each pixel are carried out in the process of image row-wise/column-wise scanning using, for detection, comparison of prediction error, found in the same way as in DPCM-coding (see 4.2), with a certain detection threshold:
Equation 9‑40
where “predicted” values of -th pixel for image scanning in the direction of index are computed, in the same way as in DPCM coding, by weighted summation of pixels on the preceding and the given row, which have been already processed, and is a detection threshold. In order to lower the probability of missing distorted pixels should be lower, which increases the probability of false detection. This may result in blurring of image edges. In order to reduce the damage, it was found useful to modify the filter in the following way:
Equation 9‑41
where is a certain correcting constant, which is smaller than the visual detection threshold for small targets of the size of one pixel and larger than visual detection threshold for large targets. Practical values of are roughly in the range of 10 to20 gray levels (in the 0-255 scale).
Described impulse noise filtering algorithms belong to the family of non-linear filters because they contain detection components, which are substantially non-linear.
“Impulse noise filtering” experiment examines two different impulse noise reduction algorithms:
Iterative filter and recursive filter, described at 9.5.1.
Figure 9‑10: "Impulse Noise Filtering". Top left is the test image. Top right is the test image tampered with impulse noise. Bottom left is the iterative algorithm result. Bottom right is the recursive algorithm result.
As can be seen at Figure 9‑10,
although both filters produces good results, the iterative version seems with
better final result.
|
[1] |
L. P. Yaroslavsky, "Image Parameter Estimation: Case Study—Localization of Objects in Images," in Theoretical Foundations of Digital Imaging Using MATLAB, CRC Press, 2012, p. 343. |
|
[2] |
P. Fua, "A parallel stereo algorithm that produces dense depth maps and preserves image features," [Research Report] RR-1369,, 1991. |


Showing results for {{query}}
PLAYLISTS
{{p.name}}
TRACKS
SONG
ARTIST
ALBUM
TIME
{{t.artists[0].name}}
{{t.album.name}}


All of the doc herein is cheerfully certified as incorrect, incomplete, misleading and almost certainly misguided. Do not use! Please return to your NSA-certified digital plantation. If you found this site by accident, please keep it to yourself. Clear your hard drive, wipe your search history... but always trust content from Tlon, Tianming, Urban Republic.
1.1 Build
First, build...
Prepare your computer:
Urbit depends on:
- gmp
- libsigsegv
- openssl
- libssl-dev (Linux only)
- ncurses (Linux only)
Currently we support OSX, Ubuntu, Debian and AWS Linux AMI. Intrepid ninjas may attempt ports to other OSes. If you're not an intrepid ninja, try a VM (eg, VirtualBox).
OS X:
Do you have XCode? Type
gcc
. If it saysno input files
, you have XCode.Otherwise, install XCode:
https://developer.apple.com/xcode/
, with the Command Line tools.Install dependencies
Do you have Homebrew? Type
brew
. If it does something, you have Homebrew.Otherwise,
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
will install it.And follow up with
sudo brew install gmp libsigsegv openssl
This will ask you for the root password, which ideally you know.
Macports? Type
port
. If it does something, you have Macports.Otherwise go here.
Then
sudo port install gmp libsigsegv openssl
Enter your root password at the prompt.
Ubuntu or Debian:
sudo apt-get install libgmp3-dev libsigsegv-dev openssl libssl-dev libncurses5-dev git make exuberant-ctags
AWS:
sudo yum --enablerepo epel install gcc git gmp-devel openssl-devel ncurses-devel libsigsegv-devel ctags
Get the source:
Either:
A. Download and unzip https://github.com/urbit/urbit/archive/master.zip
.
B. git clone https://github.com/urbit/urbit.git
.
Configure your build:
cd
to the unpacked Urbit directory you just created. If this works,
ls urb
should show:
urbit.pill zod/
Great!  If you know what this is doing, feel free to do it right. Otherwise:
echo "export URBIT_HOME=`pwd`/urb" >>~/.bash_profile
source ~/.bash_profile
To make sure this worked,
echo $URBIT_HOME
should show /urb
within the current directory.
make:
make
. Sometimes things are just easy.
vere:
Run bin/vere -c mypier
, where mypier
is a directory that doesn't yet exist.
All your state (an append-only log and a memory checkpoint) will live in this
directory. Its name doesn't matter and is not visible internally.
A pier is an Urbit virtual machine that hosts one or more Urbit identities,
or ships. When you run vere -c
, it automatically creates a 128-bit ship,
or submarine
. Your name (a hash of a randomly-generated public key) will
look like:
~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted
First you'll see a string of messages like:
vere: urbit home is /Users/cyarvin/Documents/src/u3/urb
loom: mapped 1024MB
time: ~2013.9.1..03.57.11..4935
ames: on localhost, UDP 63908.
generating 2048-bit RSA pair...
and then it'll pause a little, 'cause this is slow... and then
saving passcode in /Users/cyarvin/.urbit/~magsut-hopful.txt
(for real security, write it down and delete the file...)
and, then, if the network gods are happy, your submarine will start pulling down Arvo files:
+ /~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted/main/1/bin/ticket/hoon
+ /~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted/main/1/bin/reset/hoon
+ /~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted/main/1/bin/ye/hoon
+ /~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted/main/1/bin/ls/hoon
and the like. You'll see a couple pages of this stuff. Don't worry too much about the details right now.  This monicker is a mouthful. You can stick with it (for now), but... you're going to need a wider xterm.
Which might be fine! However, please note that just by sending a simple email,
you can get a much better ship - a destroyer
, with a nice short name like
~waclux-tomwyc
Just email<EMAIL_ADDRESS>, with your submarine in the subject. We'll send you
destroyers - not one, but two. Yes, two! Tell us something cool in the
body, and we'll send you even more.
If you have a destroyer, you need to configure it. Otherwise, just stretch that xterm wide and skip to section 1.2.
Your destroyers will arrive in the form of [ship ticket] pairs. Let's say one
of your ships is ~waclux-tomwyc
and its ticket is
~ribdyr-famtem-larrun-figtyd
(What are these strings, anyway? Just random unsigned integers, rendered in
Hoon's syllabic base, @p
.)
A new life awaits you on the off-world colonies! To begin, just type at the prompt:
:begin ~waclux-tomwyc
and follow the directions. When the script completes, hit return and you'll be
the ~waclux-tomwyc
you wanted to be.
1.2 Taming Arvo
If all went well, you now have a nice short prompt:
~waclux-tomwyc/try=>
If all did not go well (send us another email), or you're just too impatient to wait for your destroyer, you have a big long prompt. Which is fine, really, just ugly - and all these exercises will still work.
Let's try a few quick things to stretch your fingers. Type these command lines and you should see the matching results:
~waclux-tomwyc/try=> "hello, world"
"hello, world"
~waclux-tomwyc/try=> (add 2 2)
4
~waclux-tomwyc/try=> :hello %world
"hello, world."
~waclux-tomwyc/try=> :cat /=main=/bin/hello/hoon
::
:: /=main=/bin/hello/hoon
::
|= *
|= [planet=@ta ~]
^- bowl
:_ ~ :_ ~
:- %%
!>("hello, {(trip planet)}.")
What did you just do?
One, you used Arvo as a Hoon REPL to print the constant "hello, world"
, which
is a fancy way to write the Nock noun
[104 101 108 108 111 44 32 119 111 114 108 100 0]
Two, you called the Hoon add
function to see that two plus two is four. Math
seems to work the same on the off-world colonies.
Three, you ran the Arvo application :hello
with the argument
%world
, which is just a fancy way to write the atom
431.316.168.567
(or, for non-Germans, 431,316,168,567
). You
might recognize it better as 0x64.6c72.6f77
- the ASCII
characters in LSB first order.
(Is Urbit German? Sadly, no. But all our noun print formats are URL-safe, which dot is and comma isn't.)
And you (4) used the Arvo application :cat to print the Hoon file
/=main=/bin/hello/hoon
which, supposing your current date is
~2013.9.1..04.38.31..f259
(ie, September 1, 2013 at 4:38:31 GMT/LS25 plus 0xf259/65536 seconds), is equivalent to the global path
/~waclux-tomwyc/main/~2013.8.23..04.38.31..f259/bin/hello/hoon
which anyone in Urbit can, see and even use - but we're getting ahead of ourselves.
In any case, what we've seen is that Arvo is a dangerous and powerful operating system which if handled improperly can cause serious injury or loss of life. We exaggerate. Slightly.
The first thing you need to know is how to control this tool. Try your arrow keys - you'll see that Arvo has traditional Unix history editing. Up and down, left and right work, as do the simple emacs controls:
^A go to beginning of line
^B left arrow
^D delete next character
^E go to end of line
^F right arrow
^K kill to end of line
^L clear the screen
^U kill the whole line
^Y yank (restore from kill ring)
Don't expect any other emacs (or even readline - this is not readline, it's internal to Arvo) commands to work.
There are also some special control keys specific to Arvo. It's a good idea to learn these first so that you feel in, um, control.
First, we'll quit out of an infinite loop with ^C:
~waclux-tomwyc/try=> :infinite
When you hit return at the end of this line, Arvo will appear to hang. Do not be alarmed! This is not a bug - it means that we've started running our infinite loop before printing the next console prompt. Simply hit ^C, and you'll see
! intr
~waclux-tomwyc/try=> :infinite
Hit ^U to delete the line and escape from infinity. Arvo is a deterministic OS; you interrupted it while processing an event that would never terminate. It returns to the state it was in before you hit return - as if nothing had ever happened.
You're probably used to using nondeterministic, preemptive OSes, in which the difference between a waiting process and an executing event isn't apparent to the user. Since Arvo is not preemptive, it has two very different states: waiting and working.
When Arvo is working, ^C cancels the event it's working on. When Arvo is
waiting, ^C ends the current task, which is the task that's currently prompting
you - or showing the [waiting...]
prompt, indicating that it's waiting for
something else other than keyboard input.
Try this by running
~waclux-tomwyc/try=> :begin
Do you have a ship and a ticket? yes
Then hit ^C and you'll be back to the command prompt (which, unlike in Unix, is not a task itself, but part of the OS).
 We often want to switch between tasks, or between tasks and the command line. Sort of like switching between windows, except in a command line. We do this with ^X. Try
~waclux-tomwyc/try=> :begin
Do you have a ship and a ticket? yes
But hit ^X instead of ^C. You'll get a prompt again. Use it:
~waclux-tomwyc/try=> :begin
~waclux-tomwyc/try=> :hello %world
"hello, world."
~waclux-tomwyc/try=>
Hit ^X again:
~waclux-tomwyc/try=> :begin
~waclux-tomwyc/try=> :hello %world
"hello, world."

There's one more magic control key that switches your whole reality. This is ^W, which switches between the ships in a pier. Do you have multiple ships in your pier? Sure - you still have your old submarine. Hit ^W:
~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted/try=>
Hit ^W again:
~waclux-tomwyc/try=>
Finally, Arvo is a single-level store. Since it's not the '70s anymore and disk is cheap, everything you do is saved for ever. (In fact, it's saved in two ways - as a memory image and an event log - so you, or the government if they haz your filez, can repeat every computation you've every performed.)
As in Unix, hitting ^D on an empty line ends the program:
~waclux-tomwyc/try=>
oxford:~/urbit; pwd
/Users/cyarvin/urbit
oxford:~/urbit; echo "hello, world"
hello, world
oxford:~/urbit;
Then you can restart and be right back where you were - just
run vere
without -c
:
oxford:~/urbit; bin/vere mypier
vere: urbit home is /Users/cyarvin/urb
loom: loaded 9MB
time: ~2013.9.1..17.23.05..0cc1
ames: on localhost, UDP 60342.
http: live on 8080
rest: checkpoint to event 383
rest: old 0v1c.gkr1o, new 0v10.m4gdu
---------------- playback complete----------------
waclux-tomwyc/try=>
Use your arrow keys and you'll see your history is still there.
Arvo is indestructible and can be shut down however you like
without losing data. Also, starting a new process while an old
one is still running will kill the old one safely. And, to leave
a server running in the background, use vere -d
.
But don't try to operate the same ship on two Unix hosts at the same time. This will confuse everyone, including yourself.
1.3 Path magic
What do we know? Okay, so this is an OS. It's a little like Unix but different. It can print expressions and run commands. Commands start with a colon. Let's try the simplest command:
~waclux-tomwyc/try=> :ls
! type-fail
! exit
Hey, that didn't work! It didn't work for two reasons. One,
Arvo command-line arguments are typed, and :ls
expects a path.
Two, :ls
needs that path - unlike in Unix, applications can't
see the current path or shell variables. (This is because Arvo
doesn't have 57 different ways of configuring an app.) So try
~waclux-tomwyc/try=> :ls /~waclux-tomwyc/try=
con bin lib doc
This seems somewhat cumbersome - isn't there a way to refer to the current path? There is, though it doesn't look like Unix.
~waclux-tomwyc/try=> :ls %
con bin lib doc
Let's look at these paths in a little more detail. An Arvo path is more or less the same thing as a Unix path, except that Unix isn't a global revision-control store. It has the general form
/ship/desk/case/spur
where ship
is your ship, desk
is a project (repository,
branch, etc), case
is a revision of that project (a change
number, a date or a label), and spur
is a path within it.
As in Unix, the shell (batz
) keeps a current path. As in
Unix, you can write paths in an absolute or relative syntax,
and as in Unix /
is the path separator. Everything else
is completely different.
Let's use the REPL to print out some paths. First, here's the current path or something like it:
~waclux-tomwyc/try=> /~waclux-tomwyc/try/~2013.9.1
['~waclux-tomwyc' %try '~2013.9.1' ~]
For complicated reasons related to the Hoon type system - which, for a higher-order functional type inference engine, is as stupid as we could make it - this noun gets rendered as a tuple rather than a path. We can rectify this with a cast:
~waclux-tomwyc/try=> `path`/~waclux-tomwyc/try/~2013.9.1
/~waclux-tomwyc/try/~2013.9.1
It's the same value, just printed differently. Except for the date, this is the same as your current path:
~waclux-tomwyc/try=> `path`%
/~waclux-tomwyc/try/~2013.9.1..17.49.18..282e
The current date, of course, is always changing:
~waclux-tomwyc/try=> `path`%
/~waclux-tomwyc/try/~2013.9.1..17.50.39..7e38
Just to remind ourselves that these are Hoon expressions:
~waclux-tomwyc/try=> `path`/(scot %p ->-)/try/(scot %da (add ~d7 -<-))
/~waclux-tomwyc/try/~2013.9.8..17.55.03..b2ae
That's you next week. It's black magic, don't worry about it. Let's get back to relative paths.
A relative path is a function of the current path. First, let's make the current path interesting by moving to something deeper:
~waclux-tomwyc/try=> :cd /=main=/foo/bar/baz/bam
~waclux-tomwyc/main=/foo/bar/baz/bam>
Hey, wait, we actually used a relative path here. The simplest
kind of relative path matches the current path by replacing a
path component with =
. So we could just as well have said
~waclux-tomwyc/main=/foo/bar/baz/bam> -<+
'~2013.9.1..21.38.34..7a08'
~waclux-tomwyc/main=/foo/bar/baz/bam> :cd /~waclux-tomwyc/main/[-<+]/foo/bar/baz/bam
Why is -<+
the current date as text? Look, we're trying to
learn Arvo without too much Hoon here. Just accept that it is.
In this context, anyway. Notice also that the prompt uses a
relative path when (as is usually the case) the current case
is just the present time, so that we don't have to stare at
~waclux-tomwyc/main/~2013.9.1..21.38.34..7a08/foo/bar/baz/bam>
In any case, we can now use =
to our heart's content. Notice
that you don't need /
to separate content from =
. ==
is
perfectly fine, too.
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`/=
/~waclux-tomwyc
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`/==
/~waclux-tomwyc/main
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`/===
/~waclux-tomwyc/main/~2013.9.1..21.46.46..b250
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`/===zebra==
/~waclux-tomwyc/main/~2013.9.1..21.47.45..9ec8/zebra/bar/baz
I guess you could do this on Unix. With awk or something. It's
apparently been some time since the Nixon administration - how
about a new OS? Anyway, there's another way to edit paths - with
%
, which we've seen before, from the end -
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`%
/~waclux-tomwyc/main/~2013.9.1..21.53.17..07f6/foo/bar/baz/bam
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`%/frampton/comes/alive
/~waclux-tomwyc/main/~2013.9.1..21.55.53..8c5f/foo/bar/baz/bam/frampton/comes/alive
Unix can back up with ..
. We do the same with multiple %
:
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`%%
/~waclux-tomwyc/main/~2013.9.1..22.22.51..34a1/foo/bar/baz
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`%%%
/~waclux-tomwyc/main/~2013.9.1..22.22.53..a332/foo/bar
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`%%%%
/~waclux-tomwyc/main/~2013.9.1..22.22.55..4909/foo
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`%%%%/frampton/comes/alive
/~waclux-tomwyc/main/~2013.9.1..22.23.02..9b05/foo/frampton/comes/alive
Finally, we can use %
as a separator and edit both prefix and
suffix. In this case, =
is assumed up to the endpoint edit:
~waclux-tomwyc/main=/foo/bar/baz/bam> `path`/=zebra%%%%/frampton/comes/alive
/~waclux-tomwyc/zebra/~2013.9.1..22.26.39..e76d/foo/frampton/comes/alive
Thus concludes our edition of Path School. Let's go back to the
default desk (try
, meant for experiments only):
~waclux-tomwyc/main=/foo/bar/baz/bam> :cd /=try=
~waclux-tomwyc/try=>
1.4 Actual editing
But wait!  How
did they get there? Oh, right, installation automatically
checked them out of ~zod
or ~doznec
. That's one way to get
files. We'll see more of this in a little bit.
Another way is to cook your files up within Arvo itself. We'll
see this in the next chapter, but it's worth noting its
limitations - no one has ported vim
to Arvo yet, nor will for a
long time.
The easiest way to get data in and out of Arvo is just to sync.
You'll find a complete copy of your ship's filesystem, as of the
current date, in your $URBIT_HOME
. For example:
~waclux-tomwyc/try=> :cat %/bin/goodbye/hoon
|= *
|= [planet=tape ~]
:_ ~ :_ ~
[%$ !>("hello, {planet}.")]
~waclux-tomwyc/try=>
Then either stop the server with ^D, or switch to another window:
oxford:~/urbit; cat $URBIT_HOME/waclux-tomwyc/try/bin/goodbye.hoon
|= *
|= [planet=tape ~]
:_ ~ :_ ~
[%$ !>("hello, {planet}.")]
oxford:~/urbit;
As you see, the dot-extension pattern in Unix gets converted to a path slash in Arvo. Otherwise, the mapping is straightforward. Legal Arvo paths are a strict subset of Unix paths - for example, uppercase characters are not allowed - so the round trip is always clean. So long as Urbit is always the primary state and Unix is only a derived view, this works great.
Edit $URBIT_HOME/waclux-tomwyc/try/bin/goodbye.hoon
, in another window or
while the server is down, then restart the server. As soon as you enter any
keyboard input in vere
, you'll see
: /~waclux-tomwyc/try/2/bin/goodbye/hoon
~waclux-tomwyc/try=>
Go ahead and type
~waclux-tomwyc/try=> :goodbye "world"
"goodbye, world."
~waclux-tomwyc/try=>
What happened here? Arvo, of course, cannot make system calls
and does not have any access at all to the Unix filesystem. But
Arvo processes an event stream which the Unix program vere
follows, and generates actions which vere
applies. If you know
Git, the best way to see $URBIT_HOME
is as a working directory
in which changes are automatically committed.
1.5 Local revision control
Now you're ready to see the full power of this fully armed and operational revision-controlled filesystem.
Of course, you can build a revision-control system on top of Unix. And many have. That doesn't make Unix a revision-control system, though. VMS had something of the sort. (Some of us are so old we actually used VMS.) But VMS had... other issues...
Again, an Arvo path starts with /ship/desk/case
. The case,
ie version, applies to the whole desk, ie, project. When we
edited /=try=/bin/goodbye/hoon/
, our change created case
2
of /~waclux-tomwyc/try
.
All paths are immutable and referentially transparent. Once
we've made our change, both cases of /~waclux-tomwyc/try
exist
(logically; they're not actually copied, of course):
~waclux-tomwyc/try=> :cat /=try/1/bin/goodbye/hoon
|= *
|= [planet=tape ~]
:_ ~ :_ ~
[%$ !>("hello, {planet}.")]
~waclux-tomwyc/try=> :cat /=try/2/bin/goodbye/hoon
|= *
|= [planet=tape ~]
:_ ~ :_ ~
[%$ !>("goodbye, {planet}.")]
Time also works as you'd expect. Remember, =
as the case means
"at the current time":
~waclux-tomwyc/try=> :cat /=try=/bin/goodbye/hoon
|= *
|= [planet=tape ~]
:_ ~ :_ ~
[%$ !>("goodbye, {planet}.")]
~waclux-tomwyc/try=> :cat /=try/(scot %da (sub -<- ~m1))/bin/goodbye/hoon
|= *
|= [planet=tape ~]
:_ ~ :_ ~
[%$ !>("hello, {planet}.")]
Ie, now it's goodbye and a minute ago it was hello. This is anything but fancy. Finally, let's label it:
~waclux-tomwyc/try=> :label %try %zebra
= new /~waclux-tomwyc/try/3
~waclux-tomwyc/try=> :cat /=try/zebra/bin/goodbye/hoon
|= *
|= [planet=tape ~]
:_ ~ :_ ~
[%$ !>("goodbye, {planet}.")]
Note that adding a label is part of the delta stream and creates
a new change number, 3
.
What's more, these revisions don't just apply in :cat
. Of
course, this is a program and it exists to be run. Normally when
we say
~waclux-tomwyc/try=> :goodbye "world"
"goodbye, world."
this actually does a path search and ends up as a shorthand for
~waclux-tomwyc/try=> :=/try=/bin/goodbye "world"
"goodbye, world."
But of course, we can use the full revision notation here:
~waclux-tomwyc/try=> :=/try/1/bin/goodbye "world"
"hello, world."
~waclux-tomwyc/try=> :=/try/2/bin/goodbye "world"
"goodbye, world."
~waclux-tomwyc/try=> :=/try/new/bin/goodbye "world"
"goodbye, world."
Yeah, I guess that's kind of cool. But... actually...
Arvo is anything but a fancy revision control system - partly because it's a very young one, partly because it's cool to be crude. However, making revision control part of the OS, not on top of the OS, opens up... certain... possibilities.
What happens if we try to use a revision that doesn't exist yet?
Remember that the new
label was change 3
. But suppose we try
~waclux-tomwyc/try=> :=/try/4/bin/goodbye "world"
[waiting...]
Hm? Again, either quit with ^D, or use another window; edit
$URBIT_HOME/waclux-tomwyc/try/bin/goodbye.hoon
. Change
"goodbye" to "hasta la vista." Then, bin/vere mypier
if
you quit, or just hit space to trigger the sync.
vere: urbit home is /Users/cyarvin/Documents/src/u3/urb
loom: loaded 10MB
time: ~2013.9.2..07.26.20..b510
ames: on localhost, UDP 31337.
http: live on 8080
rest: checkpoint to event 965
rest: old 0v16.5un6m, new 0v1i.il78t
---------------- playback complete----------------
: /~waclux-tomwyc/try/4/bin/goodbye/hoon
"hasta la vista, world."
Neighbor, tell me you've seen that before. Or with labels:
~waclux-tomwyc/try=> :=/try/crazy/bin/goodbye "world"
[waiting...]
Use ^X to get a prompt back while this task waits. Then, create the label:
~waclux-tomwyc/try=> :=/try/crazy/bin/goodbye "world"
~waclux-tomwyc/try=> :label %try %crazy
= crazy /~waclux-tomwyc/try/5
"hasta la vista, world."
What's going on here? What's going on is that the Arvo filesystem is an immutable, ie, referentially transparent, namespace. Since every path will only be bound to one file, when we encounter a path that's not yet bound (but could be bound in future), we do every OS's favorite thing - we block.
Civilization, a wise man once said, is the set of events you can block on. What's happening here is not in principle difficult at all. It is pretty hard to do, however, if your revision control system is not in intimate proximity to your scheduler.
It would be difficult, we feel, to argue that this isn't cool. But one could argue that it's just a party trick. But once your revision control system and your scheduler are jammed into one phone booth... why not jam networking in there too?
1.6 Network revision control
Arvo is the OS. Urbit is the network. In theory you could write an Urbit client that wasn't Arvo, though it's hard to see why. But it seems unseemly to erase this distinction entirely.
So... let's do some networking. Arvo is an immutable namespace. But... Urbit is a global immutable namespace.
We sent you two destroyers, right? You could run them both from
the same pier (ie, from the same Unix process), but this would be
confusing for a newb. So it's time to make a new window and boot
up your second ship. Let's say it's ~wolnum-sorleb
:
vere -c otherpier
And follow the same directions as above. If it worked, you should be able to say hi to yourself:
~wolnum-sorleb/try=> :hi ~waclux-tomwyc "welcome to Urbit"
; ~waclux-tomwyc is your neighbor
; ~waclux-tomwyc: "this is fun"
; ~wolnum-sorleb is your neighbor
~waclux-tomwyc/try=> :hi ~wolnum-sorleb "this is fun"
; ~wolnum-sorleb: "welcome to Urbit"
(Neighbors are Urbit ships that have completed a symmetric key exchange. In most cases they will also be communicating via direct UDP packets, though if both sides are behind bad NAT gateways the (encrypted) packets have to bounce through our servers.)
Okay, that seemed to work. Now we can use the global namespace as if the whole world was one giant computer:
~waclux-tomwyc/try=> :cat /~wolnum-sorleb/try=/bin/goodbye/hoon
[waiting...]
|= *
|= [planet=tape ~]
:_ ~ :_ ~
[%$ !>("hello, {planet}.")]
~waclux-tomwyc/try=> :~wolnum-sorleb/try=/goodbye "world"
[waiting...]
"hello, world."
Whoa.
But perhaps that was a little slow. The network isn't very well tuned yet, and there are several roundtrips as we request config files that aren't actually there for this trivial app.
Moreover, if we try it again, it'll be slow again, because we are
requesting files at the current date with that try=
. Let's try
to use a label instead:
~waclux-tomwyc/try=> :~wolnum-sorleb/try/alpha/goodbye "world"
[waiting...]
Hey, whoops. That label doesn't exist yet. So, our process will block forever until it does. Let's go over to the other side and create it:
~wolnum-sorleb/try=> :label %try %alpha
= alpha /~wolnum-sorleb/try/2
At which point you'll see
~waclux-tomwyc/try=> :~wolnum-sorleb/try/alpha/goodbye "world"
"hello, world."
Pretty cool, right? Now try it again. Since bindings are permanent, it won't hit the network at all:
~waclux-tomwyc/try=> :~wolnum-sorleb/try/alpha/goodbye "world"
"hello, world."
Let's try it with some data:
~waclyx-tomwyc/try=> (mul 10 ^:@/~wolnum-sorleb/try/beta/doc/fortytwo/noun)
[waiting...]
~wolnum-sorleb/try=> :ram /===/doc/fortytwo/noun; (mul 6 7)
+ /~wolnum-sorleb/try/3/doc/fortytwo/noun
~wolnum-sorleb/try=> :label %try %beta
~waclyx-tomwyc/try=> (mul 10 ^:@/~wolnum-sorleb/try/beta/doc/fortytwo/noun)
420
So not only can you use any data in Urbit, on the command line or in a program, as if it were a constant - if the data isn't available yet, your task will block until it is.
Of course, a cynic would say, this is just a party trick too. True enough! But perhaps it'll get the party's attention.
Obviously, what's going on here is that a file request is just a special case of a subscribe operation. An attempt to use a resource, local or remote, that isn't ready, is automatically treated as a subscription to that resource, and creates state on the server that owns it which will be activated once the resource does exist. (And if you kill the requesting task on the client, yes, it will cancel the request on the server.)
It's the combination of a purely functional language and OS with a secure, referentially transparent global namespace that makes Urbit a qualitatively different programming experience. APIs are great and REST is an attempt to make the Web almost functional, but at bottom a Web request remains a side effect in a mutable system. While Urbit requests are built on a message queue layer which you can use if you like, simply sharing data (and/or code) isn't a matter of APIs, requests, installs, etc. You just use it.
It is of course possible to build the same kinds of services with 20th-century Web protocols. Just as there are revision control servers on the Internet, there are pretty good (certainly much more featureful) publish-and-subscribe protocols over HTTP. But such protocols are standalone systems, and difficult to integrate with each other in a single programming environment and service layer.
1.7 Classic Unix crap#
If a real OS runs on the bare hardware and is preemptive, it's clear that Arvo is not a real OS and will never be one. It will always run on Unix. Of course in a sense it comes to bury Unix, but also to praise it - to imitate it - and even to surpass it. Unix today is ancient, bloated and debilitated, but its historic greatness is eternal. Comparing Unix to other OSes of its time is comparing Shakespeare to other playwrights of his time.
But, ya know, times change. How do we surpass Unix? We've got two words for you - typed pipes! Yeah, Arvo has typed pipes. It also has typed arguments and even typed configurations. These types are probably not quite the types you're used to, if you're a language geek (Hoon doesn't do PL theory), but they do the same job and pretty well if we say so ourselves.
Broadly speaking, an Arvo task is a function that consumes events and produces effects. When you learn Hoon, we'll return to what this actually means. For now, this is a good excuse to see the classic server process that consumes events and produces effects - a Web server.
~waclux-tomwyc/try=> :game "Elvis"
[waiting...]
Point your browser at localhost:$PORT/game/fun
, where $PORT is
the HTTP port shown when you started vere
:
http: live on 8080
Hit ^C
on the task when you're done. Try editing the page
or the application:
/=try=/bin/game/hoon
$URBIT_HOME/waclux-tomwyc/try/bin/game.hoon
/=try=/web/game/fun/hoon
$URBIT_HOME/waclux-tomwyc/try/web/game/fun.hoon
and then hitting reload. You'll see that you need to restart the server to change the app, but not to change the page.
Note that fun.hoon
is not a template language - just Hoon.
Hoon is good at synthesizing hierarchical data structures
and does not need a DSL to generate XML, thank you very much.
Lorem ipsum...
1.8 Update, upgrading and continuity
To update the


OnlineBookStroe
Home
Books
Technology
Fiction
Story
Sign Up
Login
Search By Category And Athor
View Details...
View Details...
View Details...


Hello World! My name is Michael Daye. I am a new programmer who is hungry for challenges and knowledge. My coding journey started very recently but my mind has been prepared for this path for many years. My preparation started in high school. I followed an educational path that focused on design. I learned how utilize 3DS Max, Adobe Illustrator, and Adobe Photoshop.
I became ready for new challenges and joined the workforce as a part of the service industry and then shortly afterwards as a retail employee. Retail molded much of my professional growth. I became a nimble learner, quickly adapting to changing levels of traffic and customer needs. My ability to communicate increased greatly. I spent time speaking, assisting, and giving direction to customers, direct reports, and supervisors on hourly basis. This honed my ability to engage with and best assist indiivduals from all walks of life. I found that my ability to adapt and be creative were not being fully utilized in my current role, that's where programming came in.
When I was introduced to coding it was like a bulb went off in my head. The strongest motivations that I had to succeed were all activated at once. My skills in problem solving, communication, and creativity are all in full force when coding. I dream of owning my own development firm one day so that I can engage others who want to code and give them the opportuntity to succeed and achieve their dreams as well!


DRAM shipments rise as ASPs fall
by David MannersQ3 DRAM revenue rose 4% ending three quarters of QoQ decline as server and smartphone customers pulled shipments forward, says DRAMeXchange.
However profit margins were reduced as ASPs fell 20%.
Samsung increased Q3 bit shipments by 30% and quarterly revenue by 5% QoQ but its profit margin fell to 33% from 41% in Q2.
Hynix grew bit shipments by 20% and revenue by 3.5% but saw profit margin fall to 24% from 28% in Q2 which would have been worse had it not been for a production shift from server DRAM to mobile DRAM.
Micron increased bit shipments by almost 30% but saw its market share slip to under 20%.


<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">

Hi Christian,

thank you and sorry for being off-topic. That helped! I could
compile for 32bit under Ubuntu 14.04 64 bit with gcc like that:

--snip--

sudo apt-get install gcc-multilib g++-multilib

cd gecode-5.0.0

./configure CC="gcc -m32" CXX="g++ -m32" ...

--snap--

For others: I had to start with a vanilla gecode-source-tree,
after compiling for 64bit and "make clean" it would not work
compiling for 32bit. I got this error:
"./gecode/flatzinc/parser.hh:68:41: fatal error:
gecode/flatzinc/parser.tab.hh" in the part. deleting the sources
and starting directly with 32 bit worked.

Now I have a working 32bit gecode. Sadly, my fzn-Files doesn't
work, I get the foloowing error in 32bit (64bit working):

--snip--

terminate called after throwing an instance of
'Gecode::MemoryExhausted'

what(): Memory: Heap memory exhausted

--snap--

It seems to happen around 4 GB Memory being allocated. Now I
wonder: I thought the 4 GB Memory-size limit under 32bit has been
circumvented under Linux?

Do I have do set something before compiling or do I have to do
some trick before the run like calling ulimit or alike? Or is it
just a limit I have to accept?

Thank you

Alexander

Am 20.11.2016 um 14:33 schrieb Christian Schulte:

<blockquote<EMAIL_ADDRESS>type="cite">

Hi,
Even though this is not really a Gecode-related question, the catch is that
you need to pick up the right compiler, either 64 or 32 bit. You have to
figure this out for your platform.
Let's assume the C++ compiler for 32 bit is called g++-32 (that's most
likely wrong) and the C compiler is called gcc-32 (again, made up) then you
can set the environment variable CXX and CC before you run configure to
point to the right C++ and C compilers (one can also pass that to make by
make CXX=g++-32 CC=gcc-32).
Hope that helps
Christian
--
Christian Schulte, www.gecode.org/~schulte
Professor of Computer Science, KTH, <a class="moz-txt-link-abbreviated" href="mailto:cschulte<EMAIL_ADDRESS>Expert Researcher, SICS, <a class="moz-txt-link-abbreviated" href="mailto:cschulte<EMAIL_ADDRESS>-----Original Message-----
From: <a class="moz-txt-link-abbreviated" href="mailto:users-bounces<EMAIL_ADDRESS>[<a class="moz-txt-link-freetext" href="mailto:users-bounces<EMAIL_ADDRESS>On Behalf
Of Alexander Schuppisser
Sent: Saturday, November 19, 2016 23:37
To: <a class="moz-txt-link-abbreviated" href="mailto:users<EMAIL_ADDRESS>Subject: [gecode-users] Compile gecode for 32-bit under Linux
Hi,
I'd like to compare the performance of a 64-bit version of fzn-gecode to a
32-bit-version unter Linux (Ubuntu 16.04 or 14.04) for a certain problem.
But I could not crosscompile it.
I know that it's possible, because in the Minizinc IDE is a fzn-gecode for
32 bit. But this version has dependencies to Qt (which I don't have running
it on a server). That's how I compile what I need on 64 bit:
static:
export PREFIX="/home/nath/apps/gecode-5.0.0"
./configure \
--prefix="$PREFIX" --enable-float-vars=no --enable-examples=no
--enable-qt=no --enable-gist=no --enable-doc-dot=no \
--enable-doc-tagfile=no --enable-driver=no --enable-examples=no
--enable-scheduling=no --enable-graph=no --enable-minimodel=no \
--enable-static --disable-shared
shared:
export PREFIX="/home/nath/apps/gecode-5.0.0"
CFLAGS="-Wl,-rpath,$PREFIX/lib" CXXFLAGS="-Wl,-rpath,$PREFIX/lib" \
./configure \
--prefix="$PREFIX" --enable-float-vars=no --enable-examples=no
--enable-qt=no --enable-gist=no --enable-doc-dot=no \
--enable-doc-tagfile=no --enable-driver=no --enable-examples=no
--enable-scheduling=no --enable-graph=no --enable-minimodel=no
Now what to cange / add to get a 32-bit binary in the end?
I tried a lot of things with Flags and setting env-Variables before
compiling found as general tips for cross compiling, but nothing worked for
fzn-gecode. What do I need to do?
Thank you
Alexander


Brief Overview
Boat Dimensions:
(ft^3)
Passenger 1:
(lbs)
Passenger 2:
(lbs)
Boat:
(lbs)
Leeway:
(lbs)


Teleplay by: Andrew Reich & Ted Cohen
Story by: Brian Buckner & Sebastian Jones
Transcribed by: Eric Aasen
[Scene: Central Perk, Monica, Chandler, Phoebe, and Joey are there. Monica is holding a piece of paper.]
Monica: So the wedding caterer sent me this list of twelve appetizers and I have to narrow it down to six.
Joey: Food? Uh-huh gimme! (She hands him the paper.)
Chandler: So did Monica tell you about this great band called the Swing Kings that were trying to get to play at the wedding?
Phoebe: Since when are you into swing music?
Chandler: Oh since forever! I used to go all over town listening to bands!
Monica: Chandler.
Chandler: Gap commercial. (To Monica) So did you book them? Did you call?
Monica: I will.
Chandler: Do you want me to call?
Monica: No, Ill do it. You just stick to your job.
Phoebe: What is your job?
Chandler: Staying out of the way.
Joey: This is impossible Monica, why dont you just pick all 15? (Hands back the paper.)
Monica: There were only twelve.
Joey: Oh yeah, I added three.
Monica: What are peanut butter fingers?!
Joey: Oh yeah (He mimes sticking his fingers into a jar of peanut butter, scooping some out, and eating it off his fingers.)
Opening Credits
[Scene: A Street, Chandler and Ross are at a newsstand.]
Ross: (noticing a beautiful woman moving in down the street) Well hello! Shes cute! Should we uh, go try to talk to her?
Chandler: Sure! Thats one of the great things about being engaged. Im not nervous talking to pretty girls anymore.
The Woman: Could you guys help me? (Chandler shyly exhales and looks away.)
Ross: Uh yeah! Let me, let me get that for you.
The Woman: It-its really heavy.
Ross: (exhales) I got it. (He lifts the box and grunts under the strain.) (Calmly) So hi, Im uh, Im Ross and this is my friend Chandler. (He shyly waves.)
The Woman: I-I am Kristen.
Ross: Kristen, hi. Are you uh, new to the area, cause if you are Id love to show you around sometime.
Kristen: I I uh, actually just moved from four blocks over.
Ross: Ah.
Kristen: But-but this block is like a whole other world.
Ross: Yknow actually it does have a very interesting history. Uh, this street is the first street in the city to have an underground sewer system. (Kristen crinkles her nose at that.) Before that sewage and waste would just flow right down the street. Yeah, sometimes ankle deep! (He stops when he realizes what hes talking about.)
Chandler: (To Ross) Smooth.
Kristen: (To Chandler) Excuse me? (Chandler does the shy thing again.)
Ross: Umm, say youre gonna be starving after all this moving. What do you say I take you to dinner tonight?
Kristen: Oh Id like that.
Ross: Yeah?
Kristen: Yeah.
Ross: Great! Uh, let me take this up for you. (The box hes holding.)
Kristen: After you.
Ross: Oh no-no, after you. (She grabs a chair and heads upstairs.) (When shes gone.) Oh my God! (He drops the box and Chandler cant pick it up.)
[Scene: A Bridal Shop, Phoebe and Rachel are waiting for Monica who is trying on her wedding dress.]
Phoebe: (wearing a veil) Am I crazy or does this totally go?!
(Monica enters from the dressing room wearing her gown.)
Rachel: Oh my God! You look so beautiful!
Phoebe: (To Rachel) Thank you Rachel but, look at Monica!
Monica: This is it. Yeah, this is the one. I cant believe I found it!
(Another woman walks up.)
The Woman: Wow you look so beautiful!
Monica: Well Im Monica Geller, ball like a baby.
The Woman: Im Megan Bailey.
Monica: Have you found your dress yet?
Megan: Oh no, these dresses are all so amazing but there is no way I could afford one.
Monica: No, I cant afford this either. No. I-I-Im, Im just to figure out which one I want then Im gonna get it at Kleinmans, this discount place in Brooklyn, day after tomorrow they are having a huge sale.
Megan: Oh, thanks for the tip.
Monica: Yeah! So-so when are you getting married?
Megan: Oh Im not, I just like to try these on.
Rachel: I do the same thing.
Megan: Im just kidding. Im getting married July 25th.
Rachel: Im just kidding too. (Laughs) Im getting married in December. (Turns away not happy with herself.)
Megan: (To Monica) So when are you getting married?
Monica: Oh May 15th.
Megan: Oooh its getting close!
Monica: Yeah!
Megan: So uh, whos your photographer?
Monica: Jeffery.
Megan: We met with him. Did he show you the photos of the nude wedding he did?
Monica: The best man? Wow!
Megan: I know! I almost called off my wedding. Oh, whos your band?!
Monica: Oh, my fiancee wants the Swing Kings.
 My fiancee wants the heavy metal band Carcass.
Phoebe: Ooh, is that spelled with a C or a K? Oh my God! It doesnt matter; theyre both great!
(Another woman walks past Rachel carrying a wedding dress.)
Rachel: Oh yknow what? Yknow what?  This place is so overpriced.
The Woman: I own this store.
Rachel: So, does this (The dress) come in another color or (The store owner walks away.)
[Scene: A Street, Joey is walking by Kristen who is still moving in.]
Joey: (checking her out) Hi! You uh, movin in or movin out?
Kristen: Im moving in.
Joey: Oh uh, can I give you a hand?
Kristen: Oh okay. But yknow what? Be careful. Because a guy was helping me before had to leave because he hurt his back.
Joey: Boyfriend?
Kristen: No.
Joey: Im Joey. (They shake hands.)
Kristen: Kristen.
 (Pause) What is it again?
Kristen: Kristen.
Joey: Got it! (He picks up a lamp.) So
Kristen: So uh, do you live around here?
Joey: Yeah! Yeah! Right down there. (Points.)  Do not take a nap on this stoop (Points to hers) or you can wake up with your shoes gone.
Kristen: Ill remember that.
Joey: Okay. Yeah. Listen would you uh, would you like to have dinner with me tonight?
Kristen: Oh I, I have plans tonight.
Joey: Oh.
Kristen: But how about tomorrow?
Joey: Sounds great! Okay all right, well where does this go? (The lamp hes holding.)
Kristen: You look strong, why dont I take that and you grab one of the boxes.
Joey: Okay. Yeah. (She leaves and he goes to pick up a box marked books, but decides to take the box marked pillows instead.) Yeah, Ill grab this one. (He follows her upstairs.)
[Scene: Kleinmans, a horde of women including Rachel, Phoebe, and Monica are waiting for the store to open.]
A Woman: What is taking so long?! I mean whatever!
Rachel: (To Phoebe) So this is Brooklyn.
Monica: All right, listen up. There is usually only one dress in each size so when they open those doors, fan out. Now, this is what youre looking for! (Holds up a picture of it.) Memorize it! When you locate the dress, blow on these. All right? (She passes out whistles to them.) Three short blasts, when you hear it. Come running.
Rachel: Okay.
Phoebe: Got it.
Monica: All right.
(A worker comes to open the door and the horde starts to press forward.)
A Woman: Here he comes! Hurry!
Rachel: Oh theyre pushing! Theyre pushing!!
Monica: (To Rachel) Hey! Dont be a baby!
Rachel: Well I
(The door opens allowing the horde to charge in, knocking Rachel out of the way and to the ground.)
A Woman: Lets go!!
Phoebe: (coming back out) Hey! Rachel! Come on!!!!
[Time lapse, inside the store, Monica is frantically looking for her dress.]
Monica: No. No. Not it. Not it. Not it. (Checks another rack and another woman tries to reach around her.) (To the woman) Dont crowd me! (Finds it) This is it! This is the dress! Oh my God, its perfect! (She takes it off of the rack and someone has a hold of it on the other side of the rack and tugs on it.) Im sorry, this ones taken! (The other woman tugs harder pulling Monica through the rack.) Whoa!
Monica: Megan!
Megan: Monica!
Monica: You came?!
Megan: Yeah!
Monica: This is my dress!
Megan: No!
Monica: Yes it is! You saw me wearing it!
Megan: And now youll see me buying it.
Monica: What? You freak! You wouldnt even have known about this place if it wasnt for me!
Megan: Look, you dont want to fight me.
Monica: Maybe I do! Im pretty feisty! (She blows the signal.)
[Cut to Phoebe in another part of the store.]
Phoebe: (hearing the signal) Im coming! Im coming! (She takes off towards the signal and almost knocks another woman over.)
Woman: Hey!
(She hears another signal in another direction.)
Phoebe: Okay! (Runs that way and hears another whistle blast.) Hey! (Heads the other way and hears another blast.) What do I do?!! (She runs in the second direction and finds that the whistling is coming from inside a rack. She moves the dresses out of the way to find Rachel curled up in a fetal position frantically blowing on the whistle.) What are you doing? (Rachel doesnt stop.) Did you find the dress?
Phoebe: Did you find the dress?
Rachel: No! You gotta get me out of here Phoebe! These bargain shoppers are crazy!
Phoebe: IWe gotta get Monica. (She starts to leave.)
Rachel: No! You gotta hold my hand!!
Phoebe: Oh my God!! (She grabs Rachels hand and drags her towards Monica.) Excuse me! Excuse me! (Shes knocking women and veils out of the way as she moves.)
(She gets to Monica who has the dress balled up in one hand and is sitting on Megan who is sprawled out on the floor.)
Monica: (handing Phoebe the dress) Go! Go! Go!
Rachel: (seeing whos trapped) Hey
Monica: NOW!!!!!!!! (Rachel runs off and Monica gets up to follow her.)
[Scene: Central Perk, Chandler and Ross are there.]
Chandler: So Ross, how was your date the other night? Did you tell her about the magical ride that starts with the flush of every toilet?
Ross: Laugh all you want but uh, she actually left me a message saying shed like to go out again.
Chandler: Huh.
 And Ill make sure to tell her my friend Chandler says (He mimics the shy reaction Chandler did.)
Joey: (entering) Hey Chandler!
Chandler: Hey!
Joey: Listen, sorry I didnt stop by last night but I had a date.
Chandler: Uh Joe, when its one oclock in the morning and you dont come by? Thats okay!
Joey: Well check it out, I was with this really hot girl who just moved in right across the street!
Chandler: Really? Right across the street?
Joey: Yeah!
Chandler: Whend you meet her?
Joey: Two days ago.
Chandler: Excellent! Yknow Ross met somebody too!
Joey: Oh yeah?
Ross: (returning) Hey.
Chandler: Hi! Howd it go?
Ross: Oh great! Were going out again Saturday. But I just found shes also seeing some other guy.
Chandler: (sarcastically shocked) Really?! Joe? What would you do if you were in Rosss situation?
Joey: Well, I sorta am. I mean yeah, Im dating this girl whos also seeing another guy. But, I dont know, Im not to worried about it.
Ross: Well you shouldnt be. Believe me I wouldnt want to be the guy whos up against you. (Chandler laughs.) I mean that doofus is going to lose!
Chandler: So this is nice! I wish I didnt have to go, believe me! But unfortunately I have to. (He gets up and Joey moves over next to Ross.) Oh uh, by the way, whats the name the girl youre dating?
Joey and Ross: Kristen Lang.
Chandler: Bye! (Exits.)
Commercial Break
[Scene: Central Perk, time lapse from the earlier scene.]
Ross: Well obviously only one of us can keep dating her.
Joey: Obviously! So, how do we decide?
Ross: Well now lets-lets look at this objectively, I think I should date her
Joey: (not buying it) Uh-huh. Uh-huh. Or, or Im the one who dates her.
Ross: Thats interesting, but check this out. I date her
Joey: Yeah-yeah I like that but just to go in another direction
Ross: Okay, okay. This can go on for a while.
Joey: Yeah well we should order some food then.
Ross: No Joey! Look why dont, why dont we just let her decide? Okay? Hey-hey, well each go out with her one more time. And-and well see who she likes best.
Joey: (smiling) That sounds fair.
Ross: Maybe Ill take her to that new French restaurant down the street
Joey: Ah yeahwait a second now! Look were gonna have to set a spending limit on the date. I dont have the money to take her to a fancy place like that.
Ross: Well sorry, thats what I do on dates.
Joey: All right, well I guess Ill just have to do what I do on dates.
Ross: So lets decide on the spending limit
Joey: Yeah. Uh, (thinks) a slice (Thinks) six dollars?
Ross: I was thinking more like a hundred.
Joey: Okay. Can I borrow 94 dollars?
[Scene: Monica and Chandler's, Monica, Phoebe, and Rachel are admiring Monicas wedding dress.]
Monica: Oh
Phoebe: I know. Hand me a tissue. (Monica hands her one.)
(Rachel goes to the fridge, opens it, and blows on the whistle Monica gave her at the store, which causes Phoebe and Monica to turn around and look at her.)
Rachel: Youre out of Diet Coke.
(The phone rings and Monica answers it as Rachel goes into the bathroom.)
Monica: Hello? (Listens) What?! (Listens) You what?!  (Listens) Wh(She is hung up on.)
Phoebe: What?!
Monica: That was that girl Megan! She booked the Swing Kings on the day of our wedding and said that I couldnt have them back unless I gave her the dress!
Phoebe: (gasps) Does that mean Carcass is available?
Monica: What am I gonna do?! That is the dress! That is the dress! Wh Chandler wants the band. What do I do?
Phoebe: Well just figure out a way to talk him out of it.
Monica: How?
(There are three short whistle blasts from the bathroom.)
Rachel: Youre out of toilet paper!
[Scene: Ross's apartment, Ross is getting ready for his date with Kristen.]
Joey: (entering) Hey!
Ross: Hey! Whats up?
Joey: I just wanted to come by and yknow, wish you good luck on your date.
Ross: Oh thanks!
Joey: Yeah. What time are you meeting her?
Ross: We have 8:00 reservations at Grammercy Bistero.
Joey: Wow, thats in like 20 minutes. Youd better get dressed.
Ross: I am dressed.
Joey: Oh. Well good! (To himself) For me. (He picks up a jar of lotion.) What is this? Did you give yourself a facial?
Ross: I have an oily T-zone!
Joey: Okay dude! (Finds a receit.)
Ross: Thats right.
Joey: You spent a hundred dollars. Thats the limit. Youre screwed!
Ross: Uh actually, I sent the flowers before the actual date. So techincally, technically I didnt break any rules. Thanks for stopping by though.
Joey: Oh-oh! So thats the way its gonna be huh? Yeah I can break the rules too yknow!
Ross: Oh yeah? What are you gonna do?
Joey: I dont know.
Ross: Why am I not surprised?
Joey: Yknow what Ross?
Ross: I dont think you have much choice.
Joey: Well well see!
Ross: Bye-bye!
Joey: Yeah bye-bye! (Exits and comes back in still holding the lotion.) Hey! So just a light layer?
Ross: Yes. Yes. Just here (Runs his fingers down the bridge of his nose) and there (Runs his fingers across his forehead).
[Scene: Monica and Chandler's, Chandler is entering without touching anything with his hands. Phoebe, Monica, and Rachel are there.]
Chandler: Joey got meat sauce on the banister again! (He goes into the bathroom to wash his hands.)
Phoebe: Yeah, swing music is so out.
Monica: Phoebe, hes gotta be in the room for that to work.
Chandler: (returning) What are you guys talking about?
Monica: Well umm, we were just talking about the yknow, the Swing Kings and just wondering whether yknow, they were the right way to go.
Rachel: Yeah, I went to a wedding once where they had swing music and uh, two months later the couple got divorced. And now Im not saying that theres any connection here yknow, but they did tell me thats why they got divorced.
Chandler: But I love swing music!
Phoebe: Yeah but the Swing Kings?
Chandler: Look all I know is when Monica and I went to see them, we had fun! And theres another reason too.
Rachel: Well, what is the other reason?
Chandler: I dont want to say.

Chandler: Well its just while Monica and I were dancing to them it was the first time I knew that you were the woman I wanted to dance all my dances with.
Monica: Oh crap!
[Scene: Grammercy Bistero, Ross and Kristen are waiting for their table to be ready. Ross is returning from talking to the matired.]
Ross: So they said our table will be ready in just a few minutes.
Kristen: Oh great!
Ross: Yeah.
Kristen: Is your back feeling better?
Ross: Oh yeah its fine. I guess the more muscles you have the more they can spasim out of control.
Joey: (entering) Kristen?
Kristen: Joey!
Joey: Hi!
Kristen: Hi! What are you doing here?
Joey: Oh I like this place. And technically, technically Im not breaking any rules so I
Kristen: Well uh, Ross? This is Joey. Joey? Ross.
Joey: Hi!
Ross: Hi. (They shake hands.) Its nice to meet you. I used to have a friend named Joey. I dont anymore.
Kristen: Our table will be ready in a couple minutes.
Ross: Yeah. So
Joey: Sure! I would love to wait with you guys! Thanks! (Sits down.)
Ross: So Joey umm, you look familiar. Are uh, are you on TV or something?
Kristen: Well Joey doesnt like to talk about it but, hes one of the stars of Days Of Our Lives.
Ross: Thats right! Thats right, dont you play a woman?
Joey: A woman in a mans body.
Ross: Much better.
Joey: So yknow Ross its funny cause, you look familiar to me too. Have you ever been married?
Ross: Well yes, yes I have. In fact umm, just the other day Kristen and I were talking about how Ive been married and how I have a son.
Kristen: Yeah, little Eric.
Ross: Thats right! Wait no, Ben.
Joey: So youve just married the one time then?
Ross: Well umm
Kristen: Youve been married twice?
Ross: Yes. And another time after that. Boy Im getting hungry!
Kristen: You said the waiter ate my crab cake.
Joey: (laughs that one off) Yeah. So uh Ross, well nowwhy did that first marriage breakup? Was it because the woman was straight or she was a lesbian?
Kristen: Do you two know each other?
Joey and Ross: No. No.
Joey: No. It just seems like Ross is the kind of a guy that would marry a woman on the verge of being a lesbian and then push her over the edge.
(Kristen is not enjoying this.)
Ross: Wait a minute! Were you on a poster for gonorrhea?
Joey: Have you ever slept in the same bed as a monkey?!

Joey: Fine!
Ross: Hey-hey have you ever locked yourself in a TV cabinet VD boy?!
Joey: Monkey lover!
(They both notice that Kristen has left.)
Joey: When do you think we lost her?
Ross: Probably around gonorrhea.
[Scene: Monica and Chandler's, Chandler is entering.]
Chandler: Hi, honey! Im home!
Monica: (from the bedroom) Dont come in here!
Chandler: Why? Do you another boyfriend in there or something?
Monica: No! We only mess around at his place!
Chandler: Yknow its funny I started it but, now its scary me. So could you come out here please?
Monica: No, Im wearing a wedding dress.
Chandler: Oh you got a wedding dress? Thats great!
Monica: Yeah but Im not keeping it.
Chandler: Well then why cant I see it?
Monica: Oh. I guess you can. Okay but; I-I have to return it, so you cant like it.
Chandler: Okay I promise. Ill-Ill hate it. (She enters.) Wow! You-you look hideous.
Monica: Really?
Chandler: Yeah, thats like the most ugliest dress Ive ever seen. Wh-why do you to return it?
Monica: Oh because it doesnt really fit. Oh by the way, I-I booked the Swing Kings.
Chandler: Oh thats great! Great! Thanks! But that dress I mean its like yuck! Its terrible! It makes me wanna just rip it right off of you!
Monica: Okay! But you cant rip it. Well, maybe a little.
Chandler: Okay!
Ending Credits
[Scene: Monica and Chandler's, Chandler, Joey, and Ross are watching a basketball game on the couch.]
Monica: (entering) Hey guys! Do you wanna look at the song list for the wedding? (They ignore her.) Guys?

Monica: All right? Whats going on?
(They all slowly turn around to reveal that they are giving themselves a facial.)
Monica: Im sorry. Im sorry. I-I should probably leave you girls alone. (She heads for the bedroom.)

Joey: Yeah! (Monica goes in the bedroom.) Yknow, she could use a little (Whistles that she needs to do what theyre doing.) (Something happens on the game.) Oh nice shot!!! (They all cheer.)
End


| 1 |
English I |
Principles of Management |
Business Mathematics – I |
Computer System and IT Applications |
Micro Economics |
| 2 |
English II |
Human Resources Management |
Business Mathematics – II |
Introductory Database |
Macro Economics |
| 3 |
English II |
Human Resources Management |
Business Mathematics – II |
Introductory Database |
Macro Economics |
| 4 |
English II |
Human Resources Management |
Business Mathematics – II |
Introductory Database |
Macro Economics |
| 5 |
English II |
Human Resources Management |
Business Mathematics – II |
Introductory Database |
Macro Economics |


First Name
Last Name
Male Female Other
Preffered contact method: Email Phone
Email
Phone
Town Varna Plovdiv Burgas Sofia Pleven
Age
Programming language
I agree the Terms and Conditions


2 Kings 20:7
And Isaiah said, Take a lump of figs. And they took and laid it on the boil, and he recovered.