This document seeks to dispel the mystery and confusion surrounding LLVM's GetElementPtr (GEP) instruction. Questions about the wily GEP instruction are probably the most frequently occurring questions once a developer gets down to coding with LLVM. Here we lay out the sources of confusion and show that the GEP instruction is really quite simple.
When people are first confronted with the GEP instruction, they tend to relate it to known concepts from other programming paradigms, most notably C array indexing and field selection. GEP closely resembles C array indexing and field selection, however it's is a little different and this leads to the following questions.
Quick answer: The index stepping through the first operand.
The confusion with the first index usually arises from thinking about the GetElementPtr instruction as if it was a C index operator. They aren't the same. For example, when we write, in "C":
AType *Foo; ... X = &Foo->F;
it is natural to think that there is only one index, the selection of the field F. However, in this example, Foo is a pointer. That pointer must be indexed explicitly in LLVM. C, on the other hand, indices through it transparently. To arrive at the same address location as the C code, you would provide the GEP instruction with two index operands. The first operand indexes through the pointer; the second operand indexes the field F of the structure, just as if you wrote:
X = &Foo[0].F;
Sometimes this question gets rephrased as:
Why is it okay to index through the first pointer, but subsequent pointers won't be dereferenced?
The answer is simply because memory does not have to be accessed to perform the computation. The first operand to the GEP instruction must be a value of a pointer type. The value of the pointer is provided directly to the GEP instruction as an operand without any need for accessing memory. It must, therefore be indexed and requires an index operand. Consider this example:
struct munger_struct { int f1; int f2; }; void munge(struct munger_struct *P) { P[0].f1 = P[1].f1 + P[2].f2; } ... munger_struct Array[3]; ... munge(Array);
In this "C" example, the front end compiler (llvm-gcc) will generate three GEP instructions for the three indices through "P" in the assignment statement. The function argument P will be the first operand of each of these GEP instructions. The second operand indexes through that pointer. The third operand will be the field offset into the struct munger_struct type, for either the f1 or f2 field. So, in LLVM assembly the munge function looks like:
void %munge(%struct.munger_struct* %P) { entry: %tmp = getelementptr %struct.munger_struct* %P, i32 1, i32 0 %tmp = load i32* %tmp %tmp6 = getelementptr %struct.munger_struct* %P, i32 2, i32 1 %tmp7 = load i32* %tmp6 %tmp8 = add i32 %tmp7, %tmp %tmp9 = getelementptr %struct.munger_struct* %P, i32 0, i32 0 store i32 %tmp8, i32* %tmp9 ret void }
In each case the first operand is the pointer through which the GEP instruction starts. The same is true whether the first operand is an argument, allocated memory, or a global variable.
To make this clear, let's consider a more obtuse example:
%MyVar = uninitialized global i32 ... %idx1 = getelementptr i32* %MyVar, i64 0 %idx2 = getelementptr i32* %MyVar, i64 1 %idx3 = getelementptr i32* %MyVar, i64 2
These GEP instructions are simply making address computations from the base address of MyVar. They compute, as follows (using C syntax):
idx1 = (char*) &MyVar + 0 idx2 = (char*) &MyVar + 4 idx3 = (char*) &MyVar + 8
Since the type i32 is known to be four bytes long, the indices 0, 1 and 2 translate into memory offsets of 0, 4, and 8, respectively. No memory is accessed to make these computations because the address of %MyVar is passed directly to the GEP instructions.
The obtuse part of this example is in the cases of %idx2 and %idx3. They result in the computation of addresses that point to memory past the end of the %MyVar global, which is only one i32 long, not three i32s long. While this is legal in LLVM, it is inadvisable because any load or store with the pointer that results from these GEP instructions would produce undefined results.
Quick answer: there are no superfluous indices.
This question arises most often when the GEP instruction is applied to a global variable which is always a pointer type. For example, consider this:
%MyStruct = uninitialized global { float*, i32 } ... %idx = getelementptr { float*, i32 }* %MyStruct, i64 0, i32 1
The GEP above yields an i32* by indexing the i32 typed field of the structure %MyStruct. When people first look at it, they wonder why the i64 0 index is needed. However, a closer inspection of how globals and GEPs work reveals the need. Becoming aware of the following facts will dispel the confusion:
Quick answer: nothing.
The GetElementPtr instruction dereferences nothing. That is, it doesn't access memory in any way. That's what the Load and Store instructions are for. GEP is only involved in the computation of addresses. For example, consider this:
%MyVar = uninitialized global { [40 x i32 ]* } ... %idx = getelementptr { [40 x i32]* }* %MyVar, i64 0, i32 0, i64 0, i64 17
In this example, we have a global variable, %MyVar that is a pointer to a structure containing a pointer to an array of 40 ints. The GEP instruction seems to be accessing the 18th integer of the structure's array of ints. However, this is actually an illegal GEP instruction. It won't compile. The reason is that the pointer in the structure must be dereferenced in order to index into the array of 40 ints. Since the GEP instruction never accesses memory, it is illegal.
In order to access the 18th integer in the array, you would need to do the following:
%idx = getelementptr { [40 x i32]* }* %, i64 0, i32 0 %arr = load [40 x i32]** %idx %idx = getelementptr [40 x i32]* %arr, i64 0, i64 17
In this case, we have to load the pointer in the structure with a load instruction before we can index into the array. If the example was changed to:
%MyVar = uninitialized global { [40 x i32 ] } ... %idx = getelementptr { [40 x i32] }*, i64 0, i32 0, i64 17
then everything works fine. In this case, the structure does not contain a pointer and the GEP instruction can index through the global variable, into the first field of the structure and access the 18th i32 in the array there.
Quick Answer: They compute different address locations.
If you look at the first indices in these GEP instructions you find that they are different (0 and 1), therefore the address computation diverges with that index. Consider this example:
%MyVar = global { [10 x i32 ] } %idx1 = getelementptr { [10 x i32 ] }* %MyVar, i64 0, i32 0, i64 1 %idx2 = getelementptr { [10 x i32 ] }* %MyVar, i64 1
In this example, idx1 computes the address of the second integer in the array that is in the structure in %MyVar, that is MyVar+4. The type of idx1 is i32*. However, idx2 computes the address of the next structure after %MyVar. The type of idx2 is { [10 x i32] }* and its value is equivalent to MyVar + 40 because it indexes past the ten 4-byte integers in MyVar. Obviously, in such a situation, the pointers don't alias.
Quick Answer: They compute the same address location.
These two GEP instructions will compute the same address because indexing through the 0th element does not change the address. However, it does change the type. Consider this example:
%MyVar = global { [10 x i32 ] } %idx1 = getelementptr { [10 x i32 ] }* %MyVar, i64 1, i32 0, i64 0 %idx2 = getelementptr { [10 x i32 ] }* %MyVar, i64 1
In this example, the value of %idx1 is %MyVar+40 and its type is i32*. The value of %idx2 is also MyVar+40 but its type is { [10 x i32] }*.
This hasn't always been forcefully disallowed, though it's not recommended. It leads to awkward special cases in the optimizers, and fundamental inconsistency in the IR. In the future, it will probably be outright disallowed.
None, except that the address space qualifier on the first operand pointer type always matches the address space qualifier on the result type.
It's very similar; there are only subtle differences.
With ptrtoint, you have to pick an integer type. One approach is to pick i64; this is safe on everything LLVM supports (LLVM internally assumes pointers are never wider than 64 bits in many places), and the optimizer will actually narrow the i64 arithmetic down to the actual pointer size on targets which don't support 64-bit arithmetic in most cases. However, there are some cases where it doesn't do this. With GEP you can avoid this problem.
Also, GEP carries additional pointer aliasing rules. It's invalid to take a GEP from one object, address into a different separately allocated object, and dereference it. IR producers (front-ends) must follow this rule, and consumers (optimizers, specifically alias analysis) benefit from being able to rely on it. See the Rules section for more information.
And, GEP is more concise in common cases.
However, for the underlying integer computation implied, there is no difference.
You don't. The integer computation implied by a GEP is target-independent. Typically what you'll need to do is make your backend pattern-match expressions trees involving ADD, MUL, etc., which are what GEP is lowered into. This has the advantage of letting your code work correctly in more cases.
GEP does use target-dependent parameters for the size and layout of data types, which targets can customize.
If you require support for addressing units which are not 8 bits, you'll need to fix a lot of code in the backend, with GEP lowering being only a small piece of the overall picture.
GEPs don't natively support VLAs. LLVM's type system is entirely static, and GEP address computations are guided by an LLVM type.
VLA indices can be implemented as linearized indices. For example, an expression like X[a][b][c], must be effectively lowered into a form like X[a*m+b*n+c], so that it appears to the GEP as a single-dimensional array reference.
This means if you want to write an analysis which understands array indices and you want to support VLAs, your code will have to be prepared to reverse-engineer the linearization. One way to solve this problem is to use the ScalarEvolution library, which always presents VLA and non-VLA indexing in the same manner.
There are two senses in which an array index can be out of bounds.
First, there's the array type which comes from the (static) type of the first operand to the GEP. Indices greater than the number of elements in the corresponding static array type are valid. There is no problem with out of bounds indices in this sense. Indexing into an array only depends on the size of the array element, not the number of elements.
A common example of how this is used is arrays where the size is not known. It's common to use array types with zero length to represent these. The fact that the static type says there are zero elements is irrelevant; it's perfectly valid to compute arbitrary element indices, as the computation only depends on the size of the array element, not the number of elements. Note that zero-sized arrays are not a special case here.
This sense is unconnected with inbounds keyword. The inbounds keyword is designed to describe low-level pointer arithmetic overflow conditions, rather than high-level array indexing rules.
Analysis passes which wish to understand array indexing should not assume that the static array type bounds are respected.
The second sense of being out of bounds is computing an address that's beyond the actual underlying allocated object.
With the inbounds keyword, the result value of the GEP is undefined if the address is outside the actual underlying allocated object and not the address one-past-the-end.
Without the inbounds keyword, there are no restrictions on computing out-of-bounds addresses. Obviously, performing a load or a store requires an address of allocated and sufficiently aligned memory. But the GEP itself is only concerned with computing addresses.
Yes. This is basically a special case of array indices being out of bounds.
Yes. If both addresses are within the same allocated object, or one-past-the-end, you'll get the comparison result you expect. If either is outside of it, integer arithmetic wrapping may occur, so the comparison may not be meaningful.
Yes. There are no restrictions on bitcasting a pointer value to an arbitrary pointer type. The types in a GEP serve only to define the parameters for the underlying integer computation. They need not correspond with the actual type of the underlying object.
Furthermore, loads and stores don't have to use the same types as the type of the underlying object. Types in this context serve only to specify memory size and alignment. Beyond that there are merely a hint to the optimizer indicating how the value will likely be used.
You can compute an address that way, but if you use GEP to do the add, you can't use that pointer to actually access the object, unless the object is managed outside of LLVM.
The underlying integer computation is sufficiently defined; null has a defined value -- zero -- and you can add whatever value you want to it.
However, it's invalid to access (load from or store to) an LLVM-aware object with such a pointer. This includes GlobalVariables, Allocas, and objects pointed to by noalias pointers.
If you really need this functionality, you can do the arithmetic with explicit integer instructions, and use inttoptr to convert the result to an address. Most of GEP's special aliasing rules do not apply to pointers computed from ptrtoint, arithmetic, and inttoptr sequences.
As with arithmetic on null, You can use GEP to compute an address that way, but you can't use that pointer to actually access the object if you do, unless the object is managed outside of LLVM.
Also as above, ptrtoint and inttoptr provide an alternative way to do this which do not have this restriction.
You can't do type-based alias analysis using LLVM's built-in type system, because LLVM has no restrictions on mixing types in addressing, loads or stores.
LLVM's type-based alias analysis pass uses metadata to describe a different type system (such as the C type system), and performs type-based aliasing on top of that. Further details are in the language reference.
If the GEP lacks the inbounds keyword, the value is the result from evaluating the implied two's complement integer computation. However, since there's no guarantee of where an object will be allocated in the address space, such values have limited meaning.
If the GEP has the inbounds keyword, the result value is undefined (a "trap value") if the GEP overflows (i.e. wraps around the end of the address space).
As such, there are some ramifications of this for inbounds GEPs: scales implied by array/vector/pointer indices are always known to be "nsw" since they are signed values that are scaled by the element size. These values are also allowed to be negative (e.g. "gep i32 *%P, i32 -1") but the pointer itself is logically treated as an unsigned value. This means that GEPs have an asymmetric relation between the pointer base (which is treated as unsigned) and the offset applied to it (which is treated as signed). The result of the additions within the offset calculation cannot have signed overflow, but when applied to the base pointer, there can be signed overflow.
There is currently no checker for the getelementptr rules. Currently, the only way to do this is to manually check each place in your front-end where GetElementPtr operators are created.
It's not possible to write a checker which could find all rule violations statically. It would be possible to write a checker which works by instrumenting the code with dynamic checks though. Alternatively, it would be possible to write a static checker which catches a subset of possible problems. However, no such checker exists today.
The design of GEP has the following goals, in rough unofficial order of priority:
The specific type i32 is probably just a historical artifact, however it's wide enough for all practical purposes, so there's been no need to change it. It doesn't necessarily imply i32 address arithmetic; it's just an identifier which identifies a field in a struct. Requiring that all struct indices be the same reduces the range of possibilities for cases where two GEPs are effectively the same but have distinct operand types.
Some LLVM optimizers operate on GEPs by internally lowering them into more primitive integer expressions, which allows them to be combined with other integer expressions and/or split into multiple separate integer expressions. If they've made non-trivial changes, translating back into LLVM IR can involve reverse-engineering the structure of the addressing in order to fit it into the static type of the original first operand. It isn't always possibly to fully reconstruct this structure; sometimes the underlying addressing doesn't correspond with the static type at all. In such cases the optimizer instead will emit a GEP with the base pointer casted to a simple address-unit pointer, using the name "uglygep". This isn't pretty, but it's just as valid, and it's sufficient to preserve the pointer aliasing guarantees that GEP provides.
In summary, here's some things to always remember about the GetElementPtr instruction:


[1]
Dual Tuner, OTA Support, TIVO Experience; Not compatible w/Satelite
[2]
None serves no purpose; Way too expensive


NAME
grpc_wait_and
- Waits for multiple sessions to end.
SYNOPSIS
grpc_error_t grpc_wait_and(grpc_sessionid_t *idArray, size_t length)
ARGUMENTS
grpc_sessionid_t *idArray
- Pointer to the session IDs
size_t length
- The number of session IDs stored in sessions
DESCRIPTION
The grpc_wait_and() function waits for all of the sessions specified by sessions to end.
This function is MT-safe unless multiple wait functions wait the same
sessions simultaneously.
RETURN VALUE
If successful, GRPC_NO_ERROR is returned. In the case of an error, Error code is returned.
ERRORS
GRPC_NOT_INITIALIZED
- GRPC client is not initialized yet.
GRPC_INVALID_SESSION_ID
- Session ID is not valid.
GRPC_SESSION_FAILED
- The specified session failed.
GRPC_TIMEOUT_NP
- Timeout occurred in session.
GRPC_OTHER_ERROR_CODE
- Internal error detected.
last update : $Date: 2007/07/27 02:43:36 $


Space and time: New York City, March 2006
A strong dose of 2C-C in a public setting resulted in an overwhelming and paranoid experience. In retrospect, guinea pigging a new drug outside of a careful and private setting was very foolish and the ultimate reason that this trip went awry. 40mg turned out to be far more intense than I anticipated. At home I would have been able to handle it and probably would have even enjoyed myself, but I would never use 2C-C at this dosage again regardless.
I am a healthy male in my early 20s weighing 160 lbs. At 13 I had my first psychedelic experience. Since then, I have probably had about 100 trips using many different drugs in a variety of settings. I have also read thousands of pages of literature on psychedelic drugs.
In the last ten months, my interest in experimentation has waned. Most months I used MDMA once or twice in party environments. No other psychdelics since last summer. The last six weeks had seen no use at all besides alcohol and cannabis a couple of times a week. I use Ritalin to help concentrate on work for long periods of time occaisionally. I have a perscription for it.
The 2C-C was of known dosage and purity. I personally saw the powder in the clearly labelled and sealed commercial chemical packaging. It was encapsulated by a professional chemist, diluted with sugar to garauntee precision.
I had no prior experience with 2C-C. The only person I talked to who had experience with it said that it was mild. He did not specify the dosage or conditions he used it in. The only documentation I read was the entry in Pihkal, which briefly describes 40mg as an intense form of relaxation with lots of visuals. As mentioned earlier, it had been a long time (10 months) since I had used any psychedelic besides MDMA.
The night of my trip I was well rested and had barely eaten. No other drugs had been used that day. I am very well aware that testing new substances should always be done in a carefully controlled environment, but my prior experience made me feel overconfident. My attitude was that I could handle anything. This time last year, when I was tripping more frequently, I would not have been so foolish. MDMA had softened me and I lost sight of the power and risks of 'true' psychdelics. It was very fortunate that many sober friends who are experienced trippers were with me.
That evening, I went to a concert. Note that all times here are approximate. About half an hour before I got to the concert hall I dosed. When I arrived, the musicians were just warming up. The telltale tactile numbing and loosening of thoughts began. I felt great and started dancing. Other effects set in quickly over the next half hour. Emotional sensitivity to music and visual distortions grew stonger and stronger. I was sweating profusely, dancing wildly and having a ball.
However, I will still far away from the peak. Eventually I realized that I was having great difficulty thinking rationally and keeping my balance. Around +1:30 I grabbed one of my sober friends who and told him that I needed to go sit down. We walked up to the mezzanine and I sat down.
It felt good to be off my feet, but my entire field of vision was dissolving and warping. Forming sentences was challenging. I have had enough strong trips to know when I've made a mistake. At +2:00 told him that I was going to be incapacitated for the next two hours and would need careful attention. The room was swelling and distorting. Fractal patterns and patchwork weaved their way in and out of anything I tried to focus on. Conversations were beyond my ability.
I remember very little about what happened from +2:30 to +5:00. The last thing I recall distinctly was warning my friend that it was not possible for me to navigate my way down the stairs, let alone all the way home. Being manhandled out of the venue while peaking, even by close friends, had a very dire effect. Paranoid hallucinations set in. I believed that there was a mass of hysterical people who were freaking out all around me as we departed. We took a car service home and I was convinced that we were fleeing from the site of a major medical emergency.
When we arrived at my building around +3:15 I was peaking and livid. I had not clearly explained to anyone around me exactly what I thought was going on. I began making frantic rants on a variety of topics familiar to most trippers such as the depraved state of humanity in general, the dangers of greed, society's underappreciation of creativity and art, the importance of being in touch with nature, and of course all of my deepest personal insecurities that I normally pretend not to have. And of course, everyone was out to get me. The cops are listening to this conversation, right?
Around +6:00 I began settling down.  At +7:30 I was quiet and began to understand that everything was OK and that I had been freaking out. Although the psychological effects had faded, sleep was distant and the room was still breathing and swimming around me. At +8:00 I apolgized profusely to my friends, took 30mg of Ambien and went to sleep as the sun was coming up.
In the late afteroon I awoke. My sanity was restored, although the post-trip lethary and fuzziness was rougher than usual. I called a friend who hadn't heard anything about my escapade and went over to hang out with him for a few hours. To explain my apparent washed out mood I mentioned having a bad trip the night before. He was in the middle of cleaning his turtle aquarium when I got there. We talked about animals for the rest of the afternoon. It was refreshing to get my mind away from the incident.
Around sunset I went back home. My friends all came by to make sure that I was OK. After assuring them that things were fine, I told them that I would not want to discuss the previous night for awhile. The shame of the episode had put me in a depressed and frustrated mood.
Still, they informed me that at one point I was totally naked screaming at the top of my lungs trying to climb electrical conduit up to the cieling. They had to force feed me Xanax to get me to calm down. It was also mentioned to me that I ought to trim my pubic hair more regularly, which is true.
It has taken me about a week to digest what happened. This was a very powerful reminder of the importance of set and setting. If I had not been in the company of sober and trustworthy friends I probably would have wound up in a police station or hospital. In a proper setting there would not have been a problem. This was far from the most intense trip I've been on. One of these days I will write up my 750mcg LSD trip where I sat on a rock in the middle of a river for nine hours without moving. Being in public and having other people carrying and restraining me is what pushed me into paranoid hallucinations.
Short term memory and rational thought were severely impaired. Most typical psychedelic effects were present. Phantom epiphanies, amplification of obsessive tendencies, and delusions of grandeur abounded. When used correctly, I'm sure that a comfy halo of trancendence washes over the user.
2C-C does not produce the true ego death that LSD provides. Long term memory reflections and introspection were definitely major features of the experience, but I doubt any amount of 2C-C will take the user to the clear light.
Most users of my weight should probably try 25mg or so. Venturing past 30mg will probably incapacitate most people during the peak, unless you're a true high dosage champion. 40mg produced two hours of build, a three hour peak, four hour plateau (cut short by Ambien) and would probably allow sleep around hour ten. A 25mg dose is probably more like a six hour trip and eight hours until sleep.
It should be noted that I have used both Xanax and Ambien while tripping before and have never had a problem. The people who administered Xanax to me knew this.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Preparation time
30 mins to 1 hour
Cooking time
1 to 2 hours
Serves
Serves 6
A classic quiche is given an oriental twist with pak choi, sesame seeds and soy sauce.
Preheat the oven to 180C/350F/Gas 4.
To make the pastry, mix the flour, salt and sesame seeds in a medium bowl and make a well in the centre.
Beat together the butter and half the beaten eggs in a small bowl and gradually mix into the flour mixture to make a soft dough. Lightly knead the dough on a floured board until smooth then wrap in cling film and chill for at least 20 minutes.
To make the filling, season the salmon with salt and freshly ground black pepper and bake in the oven for about 20 minutes or until just cooked through. Allow the fish to cool a little then flake the flesh into small pieces.
Turn the oven up to 190C/375F/Gas 5.
Roll the pastry out on a floured board and line a greased 23cm/9in loose-bottomed tart tin. Chill for 15 minutes then prick the base with a fork, line with aluminium foil and baking beans and bake for 15 minutes.
Remove the foil and baking beans, brush the base of the tart case with the remaining beaten egg from the pastry ingredients and bake for five more minutes. Remove the tin from the oven and turn the temperature down to 180C/350F/Gas 4.
Arrange the salmon over the base of the tart case and drizzle over the soy sauce.
Mix the eggs with the cream in a jug, season with salt and freshly ground black pepper then pour three quarters of the mixture over the salmon. Arrange the pak choi on top, cut side up, and pour over the remaining egg mixture. Bake in the oven for about 35 minutes or until the filling is golden brown and just set.


Costa set for three months out after operation
MADRID, Nov 21 — Diego Costa is facing three months out after Atletico Madrid confirmed the striker underwent surgery on a cervical disc today.
Costa felt discomfort in his neck last week in training and the club decided the injury required surgery.
“Diego Costa underwent surgery on his cervical disc herniation in Madrid on Thursday,” Atletico confirmed in a statement.
“According to the information provided by the club’s medical services, the operation has gone as planned.”
Costa is expected to be out for around three months, meaning he will miss Atletico’s La Liga game against Barcelona on December 1.
He is also unlikely to play in either of their last two Champions League group games against Juventus and Lokomotiv Moscow but could return in time for the round of 16 matches at the end of February. — AFP


nips nips2013 nips2013-358 nips2013-358-reference knowledge-graph by maker-knowledge-mining
Source: pdf
Author: Assaf Glazer, Michael Lindenbaum, Shaul Markovitch
Abstract: In this paper we introduce a novel method that can efﬁciently estimate a family of hierarchical dense sets in high-dimensional distributions. Our method can be regarded as a natural extension of the one-class SVM (OCSVM) algorithm that ﬁnds multiple parallel separating hyperplanes in a reproducing kernel Hilbert space. We call our method q-OCSVM, as it can be used to estimate q quantiles of a highdimensional distribution. For this purpose, we introduce a new global convex optimization program that ﬁnds all estimated sets at once and show that it can be solved efﬁciently. We prove the correctness of our method and present empirical results that demonstrate its superiority over existing methods. 1
[1] Chih-Chung Chang and Chih-Jen Lin. LIBSVM: a library for support vector machines, 2001.
[2] Yixin Chen, Xin Dang, Hanxiang Peng, and Henry L. Bart. Outlier detection with the kernelized spatial depth function. IEEE Transactions on Pattern Analysis and Machine Intelligence, 31(2):288–305, 2009.
[3] G. Fasano and A. Franceschini. A multidimensional version of the Kolmogorov-Smirnov test. Monthly Notices of the Royal Astronomical Society, 225:155–170, 1987.
[4] A. Glazer, M. Lindenbaum, and S. Markovitch. Learning high-density regions for a generalized Kolmogorov-Smirnov test in high-dimensional data. In NIPS, pages 737–745, 2012.
[5] John A Hartigan. Clustering Algorithms. John Wiley & Sons, Inc., 1975.
[6] V. Hodge and J. Austin. A survey of outlier detection methodologies. Artiﬁcial Intelligence Review, 22(2):85–126, 2004.
[7] Roger Koenker. Quantile regression. Cambridge university press, 2005.
[8] Gyemin Lee and Clayton Scott. Nested support vector machines. Signal Processing, IEEE Transactions on, 58(3):1648–1660, 2010.
[9] Youjuan Li, Yufeng Liu, and Ji Zhu. Quantile regression in reproducing kernel hilbert spaces. Journal of the American Statistical Association, 102(477):255–268, 2007.
[10] D.G. Luenberger and Y. Ye. Linear and Nonlinear Programming. Springer, 3rd edition, 2008.
[11] A. Munoz and J.M. Moguerza. Estimation of high-density regions using one-class neighbor machines. In PAMI, pages 476–480, 2006.
[12] W. Polonik. Concentration and goodness-of-ﬁt in higher dimensions:(asymptotically) distribution-free methods. The Annals of Statistics, 27(4):1210–1229, 1999.
[13] B. Sch¨ lkopf, A.J. Smola, R.C. Williamson, and P.L. Bartlett. New support vector algorithms. o Neural Computation, 12(5):1207–1245, 2000.
[14] Bernhard Sch¨ lkopf, John C. Platt, John C. Shawe-Taylor, Alex J. Smola, and Robert C. o Williamson. Estimating the support of a high-dimensional distribution. Neural Computation, 13(7):1443–1471, 2001.
[15] R. Serﬂing. Quantile functions for multivariate analysis: approaches and applications. Statistica Neerlandica, 56(2):214–232, 2002.
[16] Ingo Steinwart, Don R Hush, and Clint Scovel. A classiﬁcation framework for anomaly detection. In JMLR, pages 211–232, 2005.
[17] Ichiro Takeuchi, Quoc V Le, Timothy D Sears, and Alexander J Smola. Nonparametric quantile estimation. JMLR, 7:1231–1264, 2006.
[18] Vladimir N. Vapnik. The Nature of Statistical Learning Theory. Springer-Verlag, New York, 2nd edition, 1998.
[19] R. Vert and J.P. Vert. Consistency and convergence rates of one-class svms and related algorithms. The Journal of Machine Learning Research, 7:817–854, 2006.
[20] W. Zhang, X. Lin, M.A. Cheema, Y. Zhang, and W. Wang. Quantile-based knn over multivalued objects. In ICDE, pages 16–27. IEEE, 2010.
[21] Yijun Zuo and Robert Serﬂing. General notions of statistical depth function. The Annals of Statistics, 28(2):461–482, 2000. 9


General Project Information
Individual Member Comments
Mike Ryu<EMAIL_ADDRESS>I started this quarter with a nothing-to-none web development experience, along with the skepticism that the change
of framework may cause significant issues in achieving the project's goal. Nonetheless, once we made a decision to
make the big change as a team, I tried my best to get my web development skill up to speed to be able to contribute
as much as I can in the limited time we had.
I went through codecademy's
javascript tutorial to learn javascript for the first time, and also struggled through advanced topics covered in
node and express framework tutorials. Although these tutorials were helpful,
they surely could not cover all the plugins and additional frameworks we ended up using for the project. This
created extra challenge as I had to learn how they worked in an extremely short period of time to produce
prototypes and working elements that were required for different milestones of the project.
For every development task assigned to me, I had to spend 30% - 40% of the development period just reading the code
written by Michael and other more web-development-proficient members just to understand how the framework has
changed and what will and will not work with those changes. In addition, as Matt mentions below, due to the nature
of our iterative development process (i.e. start with HTML dialogs - discard HTML dialogs - develop HBS template -
discard the initial HBS template - re-write HBS to use modal ...), much of the work I did earlier in the quarter
ended up being discarded without being contributed to the final product of this project. I believe this definitely
caused our final product to poorly reflect the time the team and I put in to get this application working.
It is very unfortunate that we were not able to achieve the initial goal we set in the beginning, but I would
like to emphasize that I still put in my best effort to be a resourceful member of the team by doing what
I did as mentioned above, and also by taking extra responsibilities such as managing all administrative
documentation and organization tasks.
We as a team held a great potential that would've eventually shown if the quarter wasn't so short, and I deeply
regret that we had to end the quarter with unsatisfactory outcome. But regrets aside,
I am very grateful for Michael and Grant C's diligence and patience in taking a heavy load upon themselves to
be the technical leads for the project, and that I got to experience a large-scale web development process through
this project. I would also like to use this opportunity to thank Dr. Fisher for granting us extra generosity
throughout the entire development process so we can move at a perfect pace that worked for all of us.
Matt Bleifer<EMAIL_ADDRESS>I spent the beginning of this quarter getting up to speed with web development. I have worked with JavaScript somewhat before,
but had never done any web development at all. I spent a long time learning about how web applications are structured and what
the structure of our app would be like. I then learned how the MVC design pattern fits into modern web development. I went through
all of the Node.js and Express tutorials in order to get up to speed with Node. Then I spent countless hours reading about MongoDB,
Mongoose, Backbone.js, Restify, and Marionette. I also spent a lot of time with Michael talking about these technologies and
asking him questions so that I could learn more. He also helped teach me about some more advanced JavaScript techniques that were being
used in our application. While getting up to speed with these new technologies I was also practicing some basic front end web development
with HTML, CSS, and JavaScript, in order to produce our original dialogs. As I became more comfortable with Backbone, I began to
dive into our front end development as much as I could to try to help Michael and Grant. I think what made things tough primarily
was that we all had to rely on michael to figure out the architecture of our application. Being that he was the only person able to make
these decisions early on, the architecture kept needing to be changed. Every time this happened, much of the code I had worked on would
be rendered useless and need to be rewritten. Sometimes Michael would take it upon himself to make these changes, but that would often
result in me needing to go back and try to understand what was changed in the file, as well as how the new libraries worked. None of this
was Michael's fault. He worked incredibly hard on this project and did his best to help us along, but in the end the experienced web
developers of the team just didn't have the time to explain all that they were doing while trying to tackle the more challenging
part of the application. All in all I am still very happy that I was able to learn so much about web development, as it was always an
area that I felt I was lacking in development skills. I feel that I worked extremely hard this quarter and only wish that there was
more to show for it.


Ithaca's largest online grocery store!!
Vidhya Sankaran- vs444
Adhitya Venkatesh-
av445
Big Red Basket is Ithaca’s largest online food and grocery store. It is a specialized online grocery store that collaborates with local grocers and online retailers to deliver best quality groceries at low cost.
| Products | Services |
|---|---|
| Fruits and vegetables | Same day delivery |
| Soft drinks and beverages | Quality you'll love, guaranteed |
| Chocolates and sweets | Mobile app for easy ordering |
| Frozen foods | Free delivery and other perks for CU students |
| Dairy | We accept VISA, Master Card , Amex and Cornell Card |
| Meat and seafood | Cash on Delivery |
| Baked goods | Save a list, and we'll tell you when you're running out. |
Big Red Basket makes its money by taking a small percentage of the sale price of each item that is sold through its website. It also allows local grocers to advertise their products by paying to be listed as featured products.
Big Red Basket’s main competitor is RosieApp.com. It is also an online grocery store that enables customers to order groceries at low price from local grocers and online retailers. Some of the competitive advantage Big red Basket has over Rosie’s include.
Visit our forum
Join us in a chat!
Follow this link
Follow this link
Sending a message to mit.edu. The path followed is shown in the below screenshot. Slowest nodes-<IP_ADDRESS> and <IP_ADDRESS> with RTT>=55ms
Follow this link
Describe the ease of use of the system, and the problems you experienced. Can you see multiple mouse pointers on the shared document and are they all active simultaneously, or do you have to take turns? Explain.
Yes multiple users can edit the document simultaneously and it is very easy and convenient to use. We can see multiple text pointers on the document with the Name of the user editing it and this helps with better coordination when editing the document simultaneously.
The major problem I faced with google doc is when I use the offline editing feature for editing- ie when I am not connected to the internet and I make changes to the same paragraph the other user has also done, then syncing up with the master document becomes an issue.
Another issue is it doesnot show the ownership details - we cannot know who edited a particular paragraph.Our stream could be seen here, it is not live at the moment.
Screenshot captured from Browser-


#include <Entity.hpp>
◆ Entity() [1/2]
| TouhouFanGame::ECS::Entity::Entity |
( |
| ) |
|
|
default |
◆ Entity() [2/2]
| TouhouFanGame::ECS::Entity::Entity |
( |
unsigned |
id, |
|
|
const std::string & |
name, |
|
|
const std::vector< Component * > && |
components |
|
) |
| |
◆ destroy()
| void TouhouFanGame::ECS::Entity::destroy |
( |
| ) |
|
◆ getComponent()
| Component & TouhouFanGame::ECS::Entity::getComponent |
( |
const std::string & |
name | ) |
const |
◆ getComponentsNames()
| std::vector< std::string > TouhouFanGame::ECS::Entity::getComponentsNames |
( |
| ) |
const |
◆ getID()
| unsigned TouhouFanGame::ECS::Entity::getID |
( |
| ) |
const |
◆ getName()
| std::string TouhouFanGame::ECS::Entity::getName |
( |
| ) |
const |
◆ hasComponent()
| bool TouhouFanGame::ECS::Entity::hasComponent |
( |
const std::string & |
name | ) |
const |
◆ serialize()
| void TouhouFanGame::ECS::Entity::serialize |
( |
std::ostream & |
| ) |
const |
◆ toBeDestroyed()
| bool TouhouFanGame::ECS::Entity::toBeDestroyed |
( |
| ) |
const |
◆ unserialize()
| void TouhouFanGame::ECS::Entity::unserialize |
( |
std::istream & |
| ) |
|
The documentation for this class was generated from the following files:


pplyr
(df
, dplyr_code
, verbose
=False
, fread
=False
)
pplyr lets you use dplyrs grammar of data manipulation from within python without any code changes.
pplyr writes a dataframe to csv, creates an R script with your dplyr code. The result is then returned as
a pandas Dataframe.
For now, the dataframe passed to R is stored as "df" within R. This might change in future versions.
By default, pplyr uses R's read.csv() and write.csv() functions. These functions are notoriously slow.
If you deal with larger dataframes, make sure to install the "data.tables" R package and
pass fread = True to pplyr to speed up read/write operations. Please note that the output is slightly different
for fread/fwrite and read.csv/write.csv.
See https://fdewes.github.io/pplyr/ for docs.


Greetings Friends,
Welcome back to the best weekend of your summer. You've been invited to view this website because we want you to be a part of the 7th Annual 'The Summer Party.' In order to live up to (read: wildly exceed) expectations for this extravaganza we need to know how many of you wonderful people will be joining us. As you well know, once you commit to attending 'The Summer Party' the hard part for you is over: all of your meals, drinks (prepared on Saturday night by a professional bartender no less!), entertainment, and accommodations will be taken care of.
If a weekend filled with friends, food and fun sounds exciting to you, please respond to the questionnaire linked below to let us know whether you (and any guests) will be attending, along with important things such as dietary restrictions.
The cost per person for this delightful and (likely) debaucherous all-inclusive weekend getaway at the world-famous Willowstreams Estate is $100. If you plan on attending, we'll charge you for this on Venmo. Thank you in advance, can't wait to add another one of these to the history books!
See you all soon.
Vegan or Gluten Free options will be available if requested.
Bring your cocktail attire and your appetite.
Sing, dance, drink, learn?, repeat.

At the bare minimum: A bathing suit (remember the slip n' slide!), towel, and cocktail attire for Saturday night. There is plenty of space to crash (couches, floors, etc...), but we definitely encourage you to bring a sleeping bag, air mattress, bedding, and/or pillows if you have.
Just to reiterate, please do not bring any alcohol. Although we appreciate the thought it is way easier to handle everything before everyone gets here.
We encourage all talents so any musical instruments you might want to break out, fun toys if you have them, board games, etc. are also welcome!
There will potentially be a yoga class Saturday morning in the fields so bring active wear and a mat if you have it.
By public transit: Make your way to 30th st station in Center City Philadelphia by train or bus. Depending on your time of arrival there will be a bit of carpooling back and forth. If not, take the Paoli-Thornburn Septa Regional Rail Line to either Bryn Mawr and Haverford and we'll have someone pick you up.
By car: There is plenty of space at the property to park your car.


Horizon Computer Services
1-401-640-1553
<EMAIL_ADDRESS>something
something
something
something
something
something
something


Connecticut gymnast, 20, dies after 'freak' training accident at university
by Stephen SoraceA 20-year-old gymnast at Southern Connecticut State University died Sunday after she suffered an injury during a training “accident,” the university said.
Melanie Coleman, a nursing major, suffered the injury on Friday and died two days later, the school’s official athletics website wrote in an obituary Monday, without giving further details.
Thomas Alberti, Coleman’s former coach, told the Hartford Courant she suffered the injury after slipping off a gymnastics bar. He called it “an unexpected accident with a tragic result.”
FORMER LIONS, SPARTANS WIDE RECEIVER CHARLES ROGERS DEAD AT 38
While neither Alberti nor the school elaborated on the injury, the Connecticut Post reported that Coleman suffered damage to her spinal cord while practicing on the bars.
It was described as a “tragic freak accident,” on a GoFundMe page set up for Coleman.
The school confirmed Coleman’s death in an email obtained by local media.
“Her coaches and professors describe Melanie as a special young woman, who excelled both in the classroom and in the gym,” Joe Bertolino, the university’s president, wrote in the email. “Our deepest sympathies are extended to her family and friends on this tragic loss.”
HOUSTON ASTROS STAR ALEX BREGMAN DISCLOSES DEATH OF GRANDFATHER AHEAD OF WORLD SERIES GAME 7
Coleman received honors as a leader in the sport and in the classroom, the university said. Last year, she was recognized by both USA Gymnastics and the Women’s Collegiate Gymnastics Association as an All-America Scholar-Athlete and Scholastic All-American, respectively.
“We are heartbroken and stunned by Melanie's passing,” head coach Mary Fredericks said. “She was an incredibly hard worker and a sweet-spirited young woman.”
When not competing or studying, Coleman volunteered as a youth instructor at New Era Gymnastics in Hamden, the university said.
She gave every ounce of energy and that makes a coach want to give everything.— Thomas Alberti, Coleman's former coach
Coleman’s discipline, dedication and love of gymnastics led the university to have her name inscribed on a banner in the school gym, along with the names of her two sisters, the Courant reported.
CLICK HERE FOR THE FOX NEWS APP
"She gave every ounce of energy and that makes a coach want to give everything,'' Alberti told the paper.
The university has offered counseling services for students seeking support following Coleman’s death.


Get listed
.
Full Name
What events do you photograph?
Babyshowers
Birthdays
Graduations
Weddings
How much do you charge for a full day event?
Below Ksh.20K
Ksh.20K-30K
Ksh.30K-40K
Ksh.40K-50K
Above Ksh.50K
Enter a link to your portfolio:
Email address
We'll never share your email with anyone else.
Submit an image of yourself:
Write something short about yourself...
List me!


CodeMirror: SubPar bindings demo
SubPar is an approximation of a subset of Paredit.
This page demos the inclusion of the minimized / optimized version of the code. NOTE: You might have to reload this page to get the source code to load inside the CodeMirror.
The SubPar keybindings are enabled
by including subpar.core.js,
subpar.js and setting the
keyMap
option to "subpar"
.
Features / Key Bindings
Keybindings can be customized by editing subpar.js.
- Delimiters
- Backspace, Delete, Ctrl-D handle these: () {} [] "" \
- Delimiters are created in pairs: () {} [] ""
- Typing a closing delimiter moves past it after deleting any whitespace at the end of the current list
- Movement
- Forward: Ctrl-Alt-F
- Backward: Ctrl-Alt-B
- Backward Up: Ctrl-Alt-U
- Forward Down: Ctrl-Alt-D
- Backward Down: Ctrl-Alt-P
- Forward Up: Ctrl-Alt-N
- Barf / Slurp
- Backward Barf: Shift-Ctrl-[ or Ctrl-Alt-Right or Ctrl-]
- Forward Barf: Shift-Ctrl-] or Ctrl-Left
- Backward Slurp: Shift-Ctrl-9 or Ctrl-Alt-Left or Ctrl-[
- Forward Slurp: Shift-Ctrl-0 or Ctrl-Right
- Splicing
- Splice: Alt-S
- Splice Delete Backward: Alt-Up
- Splice Delete Forward: Alt-Down
- Indentation
- Indent Selection: Ctrl-Alt-\
Bug reports are definitely welcome. I'll need to add Cmd
versions to support Mac OS. If you know what they should be and you
need them soon, let me know. Otherwise it won't happen until I get
access to a Mac.


Time for another Music Lesson.
Frank, I'm going to Music School!
I dont want this baby!
Music is the only medicine the heart and soul needs.
I'll give Zoé a little surprise!
After the lost of her baby, Zoé gets back to life.
I want a pet, some familiar presence.
Lets go find a new friend.
Love at first sight.
I love her so much!.
She is so cute !
I will call her Suzanne, a/s "Sue"
She is so lovely!
Zoe brings her new friend to her house.
Franken should be happy.
All right Sue!Let's go home!
Franken Stein found a new sex toy.
Come on Sue!Lift your tail!

Zoé discovers that Frank Stein raped Suzan
From now on,Zoé will take care of Suzan.
And your baby...
My Son!
My son will be called "Heinz".Heinz Stein.
Humans. No respect for wildlife.
End of Chapter.
Heinz Stein.


Carry on Up the Jungle A film review by Graeme Huggan Copyright 1998
What many have called 'one of the lesser Carry on movies', this spoof on Tarzan movies is all about the expedition in search of a long-lost son and the rare oozalum bird. Lady Evelyn Bagley (Joan Sims) lost her husband and her son many years ago in the jungle. She decides to return to that same jungle area to try and find out what happened to them. Also on the expedition are Professor Inigo Tinkle (Frankie Howerd) and Claude Chumley (Kenneth Connor) who are in search of the oozalum bird. Aiding them is expert hunter and poacher Bill Boosey (Sid James) and local guide/ head of tribe Upsidasi (Bernard Bresslaw). After searching for days in the blinding sun, they find the oozalum bird and also have to escape from a gorilla. Furthermore, they lose Bagley's assistant June (Jacki Piper) who decides to stay with her new found friend 'Tarzan' (Terry Scott). When Lady Bagley catches sight of him one night, she knows that he is her long-lost baby! Before she can acquaint herself with him, the whole expedition is captured by an all-woman tribe Aphrodisia led by Tonka (Charles Hawtrey) who decide to use the men to further populate their tribe. When Lady Bagley discovers that Tonka is her long-lost husband and Tonka falls from power, their only hope of escape is to be rescued by Tarzan and June! There are good performances from Joan Sims as the upper-crust lady on expedition and Frankie Howerd as prude Inigo (a part originally meant for Kenneth Williams, but due to his work commitments, was given to Howerd). Valerie Leon is entertaining as Leda, the eventual leader of Aphrodisia, and Terry Scott and Jacki Piper's partnership works well. On the other hand, Sid James' part is useless as is Kenneth Connor's part as Chumley. They are only in the movie to make up the number of regulars. Furthermore, Bernard Bresslaw suffers in the mundane part of Upsidasi. The small part of Tonka is well-suited to Charles Hawtrey. As leader of an all-woman tribe, he is hilarious. Similarly, the flashback to when he got lost in the jungle with little 'baby-waby' is very amusing. However, apart from a very very brief appearance at the start, he does not enter the movie until after sixty minutes duration. This Carry on suffers from some very poor parts and some weak performances (Connor and James). There are very poor production values as the whole film was made in the Pinewood studios and so the jungle looks terrible. The oozalum bird is ridiculously tacky and cheap! The jokes are getting very repititive by this stage and the absence of so many regulars (due to the need for only the characters of Bagley, Tonka, Tarzan and Tinkle) illustrates how basic the story is. Even so, this Carry on is entertaining and is not the worst of its kind.
My rating:- 2.5 out of 5 stars.
Written by Graeme Huggan.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


History of Apple's CEOs
People think Steve Jobs was the CEO of apple since the beginning, but the first CEO was Michael Scott from 1977 to 1981. Michael Scott was named CEO because the other workers were too inexperienced.
The second CEO was an investor by the name Mike Markkula. Markkula was Apple's third employee who served as CEO from 1981 to 1983. Even with Steve Jobs high graces, Markkula had Steve Jobs removed from the company.
The third CEO was a former PepsiCo CEO named John Sculley. John Sculley was Apple's CEO from 1983 to 1993. Sculley had great marketing skills to help sell computers but the company suffered high costs during his time as CEO.
The fourth CEO was Michael Spindler who was knicknamed "The Diesel". Spindler was CEO from 1993 to 1996 where he was blamed for the failure of Newton and Copland operating systems.
The fifth CEO was Gil Amelio who was the CEO of National Semiconductor previously. Amelio introduced Mac OS 8, but was soon removed when the company's stock was at a 12 year low.
Finally the sixth CEO was the one and only Steve Jobs who remained CEO from 1997 to 2011 where he stepped down because of health issues. Steve Jobs helped make Apple profitable again and revolutionized the technology world. Steve Jobs helped create Mac OS X, iPod, iPhone, and iPad along with improvements with the iMac.
The seventh and present CEO of Apple is Tim Cook who took over when Steve Jobs stepped down. Cook is known for being a quiet man. Cook is in great position to help Apple innovate and become even greater than before.


Apache Commons RNG: Random Numbers GeneratorsCommons RNG provides implementations of pseudo-random numbers generators that are either faster or of higher quality (and sometimes both) than java.util.Random. Casual use is as simple as: import org.apache.commons.rng.UniformRandomProvider; import org.apache.commons.rng.simple.RandomSource; // Instantiate a "Mersenne-Twister" generator with a factory method. UniformRandomProvider rng = RandomSource.create(RandomSource.MT); // Use it to produce a floating-point value between 0 and 1. double random = rng.nextDouble(); For more examples and more advanced usage, see the userguide. Commons RNG is intended to be a repository of pure Java implementations of random number generators that produce deterministic sequences. The current design has made no provision for features generally needed for cryptography applications (e.g. strong unpredictability). The emphasis is on state-of-the-art generators that pass stringent uniformity tests such as TU01 and Dieharder. Weaker algorithms, with known shortcomings, are also provided (for reference or due to their historical importance) but their use is best avoided in new applications. Download Apache Commons RNGReleasesDownload the latest release of Apache Commons RNG. |


Welcome to Zero 2 Crore
Choose the compnies and start making money You can play any number of games by altering the team combinations.
Get StartedChoose the compnies and start making money You can play any number of games by altering the team combinations.
Get Started


{% extends "base.html" %} {% block css %} {% endblock %} {% block content %}
By creating an account, you agree to the Terms of Service and Privacy Policy.
Already have an account? Log in


Katniss is a 16-year-old girl living with her mother and younger sister in the poorest district of Panem, the remains of what used be North America. Long ago the districts waged war on the Capitol and were defeated. As part of the surrender terms, each district agreed to send one boy and one girl to appear in an annual televised event called, "The Hunger Games." The terrain, rules, and level of audience participation may change but one thing is constant: kill or be killed. When her sister is chosen by lottery, Katniss steps up to go in her place.
This novel has been produced as a major motion film, watch the trailer now!
The Hunger Games Trilogy
Book 2: Catching Fire
Much to her shock, Katniss has fueled an unrest she's afraid she cannot stop. And what scares her more is that she's not entirely convinced she should try. As time draws near for Katniss and Peeta to visit the districts on the Capitol's cruel Victory Tour, the stakes are higher than ever. If they can't prove, without a shadow of a doubt, that they are lost in their love for each other, the consequences will be horrifying.
This novel has been produced as a major motion film, watch the trailer now!
The Hunger Games Trilogy
Book 3: Mockingjay
Katniss Everdeen, girl on fire, has survived, even though her home has been destroyed. There are rebels. There are new leaders. A revolution is unfolding.
This novel has been produced as two major motion film, watch the trailers now!
The Underland Chronicles
Book 1: Gregor the Overlander
Meet Gregor, a kid from New York City, who falls out of his laundry room into a fantastical subterranean world called the Underland. Accompanied by his toddler sister, Boots, he encounters giant talking creatures-- cockroaches, bats, spiders and rats--and an unusual society of humans. And they’re all expecting him...
The Underland Chronicles
Book 2: Gregor and the Prophecy of Bane
When giant roaches kidnap Boots and spirit her back to the Underland, Gregor follows to retrieve her. Soon he discovers that they are both implicated in “The Prophecy of Bane,” which warns of the dangers of a terrifying white rat. Guess whose job it is to destroy it?
The Underland Chronicles
Book 3: Gregor and the Curse of the Warmbloods
Gregor and Boots must return to the Underland to help find a cure for a deadly plague called the Curse of the Warmbloods. Gregor is desperate to succeed because, along with several of his Underland friends, a member of his own family is stricken.
The Underland Chronicles
Book 4: Gregor and the Marks of Secret
Gregor sets out to solve a mystery involving the Underland mice and ends up discovering a terrible secret. This book leads right into the fifth and final book of the series, "Gregor and the Code of Claw."
The Underland Chronicles
Book 5: Gregor and the Code of Claw
Everyone in the Underland has been taking great pains to keep The Prophecy of Time from Gregor. Gregor knows it must say something awful but he never imagined just how awful: It calls for the warrior's death. Now, with an army of rats approaching, and his mom and sister still in Regalia, Gregor the warrior must gather up his courage to help defend Regalia and get his family home safely. The entire existence of the Underland is in Gregor's hands, and time is running out. There is a code to be cracked, a mysterious new princess, Gregor's burgeoning dark side, and a war to end all wars.


1995 was the start of a boom, something like no other, a world in which the commerce world was changed for the better. This mainly consisted of fiber optics and silicon chips. The Internet was a significant breakthrough compared to previous innovations. For example, the radio took 38 years before getting 50 million users. But for the Internet, it took only four years.
The silicon chips caused this drive following Moore's law which states that the speed doubles every 18 months. The silicon chips' innovations grew in speed based on the etching to what materials the transistors are made of. By making chips denser and denser, it accomplished the Moore’s law easily.
According to Robert Metcalfe, the ethernet founder, states that every new node added to the network counts more than one. The growth is steep compared to every. As the Internet's size increases, the Internet's usefulness increases, and it is more compelling for new users to join this phenomenon.
Amazon was using the “Get big Fast” method to be the largest bookstore. As the Amazon and the Internet as a whole got bigger, Encryption was the key to secure internet users. The goal was to let the Amazon let users give vulnerable data during their purchases without letting someone tamper with the information during the transfer. A profound change occurred when public-key cryptography was introduced. It focused on the recipient being the only person to open the encrypted data. This concept calls for the sender to send a key lock to the receiver and let the receiver lock the information and only allow the sender to unlock the information's contents.
The Dot Com bubble was also affected wall street. With the introduction of the Internet, investors want a piece of what the future could give. The boom was its peak and inspired many new prospectors who want to get more decadent than Jeff Bassos. The unique ability to buy stocks from homes was the biggest magame changer as anyone could sit at home and invest in the stock market. These people are called day traders. Ecommerce companies were popping up at an alarming rate in order to whatever potential there could be.
Fiber optic cables were another big phenomenon regarding the Dot Com boom. The advanced version of Morris code uses light pulses to carry digital information in an unimaginable rate compared to when Morris code was used. There was a huge influx to get everything to be connected with fiber.
On April 14, 2000, the bust of the boom was black Friday, according to wall Street. The Dot Com bubble bust and September 11 closed off the remaining. Reality stuck for many companies as small were dealing with crippling sales and massive debt. Even though the ECommerce bubble bust, few still stand, including eBay and Amazon. The result of this Dot Com came in many new companies created, new jobs, and new opportunities as well as laying a new foundation to future that is none other.


--- layout: default title: "About---asdfasdf" ---
The LLF honors those unsung heroes whose efforts might otherwise go unnoticed. The LLF exists because of a need to recognize and promote the achievements of those members of the radio, music and entertainment industries and to help secure their place in history.
The Living Legends Foundation (LLF) is a registered 501 (c) (3) non-profit, tax-exempt organization first founded in Los Angeles in 1991 and incorporated in 1992, by record industry icon Ray Harris and radio programming legend Jerry Boulding. The organization has been funded primarily with corporate contributions and individual donations. Initial funding was provided from the sale of tickets to the first annual Living Legends Dinner, which was held on April 22, 1993 at the site of the Impact Conference at The Bally's Casino in Atlantic City, New Jersey.
The original purpose of The Living Legends Foundation was to recognize and honor legendary music and radio industry figures that have distinguished themselves by their contributions as trailblazers, trendsetter, teachers and/or mentors. The Living Legends Foundation is an organization dedicated to recognizing those members of the entertainment industry whose efforts and contributions have paved the way for many in the entertainment industry, especially, minorities and women. Many of those opportunities are in the areas of recorded music, radio broadcasting and retail (record stores).
The LLF honors those unsung heroes whose efforts might otherwise go unnoticed. The LLF exists because of a need to recognize and promote the achievements of those members of the radio, music and entertainment industries and to help secure their place in history.
Over the years the LLF has expanded its mission from just recognizing the achievements of the trailblazers of yesterday and today's new trailblazers to providing assistance to those, who have fallen on hard times. Unfortunately, unlike today with corporate pension plans and 401K options many of the early pioneers were left without healthcare, retirement funds and other benefits to sustain them when their careers were over. Therefore, the LLF has expanded its mission to provide financial assistance to some of its honorees and other industry members who had fallen on hard times. Over the years the LLF has provided almost $100,000 in assistance to those in need.
While most of those selected by The Living Legends Foundation are primarily honored at the Foundation's annual dinner, honorariums or other financial assistance is awarded to honorees that have a demonstrated need. Information and documentation regarding the financial need of an honoree is specifically requested at the time such an individual is nominated by the Foundation to be honored. However, LLF has provided assistance to those who have not been honored but have shown a demonstrated need.


By determining the heat losses from any particular box, we can therefore determine its refrigeration requirements. This assumes a well constructed box with no air leaks, the use of closed cell foam insulation, and a top-opening lid.
Box Dimensions:
Box Surface Area:
Box application:


Joel McHale and Thomas Lennon Join Halloween Family Adventure Film TREAT STREET
by Jessica FisherJoel McHale (The Soup, Community) and Thomas Lennon (Reno 911, 17 Again) have joined the cast of Treat Street, from writer and director Stimson Snead. The film’s description reads:
The plot centers on a group of kids out trick-or-treating who run into the most evil thing imaginable: teenagers. The teens steal their candy and the precocious protagonists must rally the neighborhood (including their parents) to get their haul back and save Halloween.
This sounds like a silly and fun Halloween movie that families can enjoy. Both actors are hilarious and should bring a funny element to the film for parents to enjoy. The film is set to shoot in the spring in Spokane, Washington, and hopefully we will get to enjoy it next Halloween. Are you down for another spooky family classic?


loading animation pop-up modal
Open simple pop-up
Pleae wait... This dialogue will close in 5 seconds


|
SdFat
|
Sd2Card class for V2 SD/SDHC cards. More...
Classes | |
| class | Sd2Card |
| Raw access to SD and SDHC flash memory cards. More... | |
Variables | |
| uint8_t const | SD_CARD_ERROR_ACMD23 = 0X7 |
| uint8_t const | SD_CARD_ERROR_ACMD41 = 0X8 |
| uint8_t const | SD_CARD_ERROR_BAD_CSD = 0X9 |
| uint8_t const | SD_CARD_ERROR_CMD0 = 0X1 |
| uint8_t const | SD_CARD_ERROR_CMD17 = 0X3 |
| uint8_t const | SD_CARD_ERROR_CMD24 = 0X4 |
| uint8_t const | SD_CARD_ERROR_CMD25 = 0X5 |
| uint8_t const | SD_CARD_ERROR_CMD58 = 0X6 |
| uint8_t const | SD_CARD_ERROR_CMD8 = 0X2 |
| uint8_t const | SD_CARD_ERROR_ERASE = 0XA |
| uint8_t const | SD_CARD_ERROR_ERASE_SINGLE_BLOCK = 0XB |
| uint8_t const | SD_CARD_ERROR_ERASE_TIMEOUT = 0XC |
| uint8_t const | SD_CARD_ERROR_INIT_NOT_CALLED = 0X17 |
| uint8_t const | SD_CARD_ERROR_READ = 0XD |
| uint8_t const | SD_CARD_ERROR_READ_REG = 0XE |
| uint8_t const | SD_CARD_ERROR_READ_TIMEOUT = 0XF |
| uint8_t const | SD_CARD_ERROR_SCK_RATE = 0X16 |
| uint8_t const | SD_CARD_ERROR_STOP_TRAN = 0X10 |
| uint8_t const | SD_CARD_ERROR_WRITE = 0X11 |
| uint8_t const | SD_CARD_ERROR_WRITE_BLOCK_ZERO = 0X12 |
| uint8_t const | SD_CARD_ERROR_WRITE_MULTIPLE = 0X13 |
| uint8_t const | SD_CARD_ERROR_WRITE_PROGRAMMING = 0X14 |
| uint8_t const | SD_CARD_ERROR_WRITE_TIMEOUT = 0X15 |
| uint8_t const | SD_CARD_TYPE_SD1 = 1 |
| uint8_t const | SD_CARD_TYPE_SD2 = 2 |
| uint8_t const | SD_CARD_TYPE_SDHC = 3 |
| uint8_t const | SD_CHIP_SELECT_PIN = SS_PIN |
| uint16_t const | SD_ERASE_TIMEOUT = 10000 |
| uint16_t const | SD_INIT_TIMEOUT = 2000 |
| uint16_t const | SD_READ_TIMEOUT = 300 |
| uint16_t const | SD_WRITE_TIMEOUT = 600 |
| uint8_t const | SPI_EIGHTH_SPEED = 3 |
| uint8_t const | SPI_FULL_SPEED = 0 |
| uint8_t const | SPI_HALF_SPEED = 1 |
| uint8_t const | SPI_MISO_PIN = MISO_PIN |
| uint8_t const | SPI_MOSI_PIN = MOSI_PIN |
| uint8_t const | SPI_QUARTER_SPEED = 2 |
| uint8_t const | SPI_SCK_PIN = SCK_PIN |
Sd2Card class for V2 SD/SDHC cards.
| uint8_t const SD_CARD_ERROR_ACMD23 = 0X7 |
SET_WR_BLK_ERASE_COUNT failed
| uint8_t const SD_CARD_ERROR_ACMD41 = 0X8 |
ACMD41 initialization process timeout
| uint8_t const SD_CARD_ERROR_BAD_CSD = 0X9 |
card returned a bad CSR version field
| uint8_t const SD_CARD_ERROR_CMD0 = 0X1 |
timeout error for command CMD0 (initialize card in SPI mode)
| uint8_t const SD_CARD_ERROR_CMD17 = 0X3 |
card returned an error response for CMD17 (read block)
| uint8_t const SD_CARD_ERROR_CMD24 = 0X4 |
card returned an error response for CMD24 (write block)
| uint8_t const SD_CARD_ERROR_CMD25 = 0X5 |
WRITE_MULTIPLE_BLOCKS command failed
| uint8_t const SD_CARD_ERROR_CMD58 = 0X6 |
card returned an error response for CMD58 (read OCR)
| uint8_t const SD_CARD_ERROR_CMD8 = 0X2 |
CMD8 was not accepted - not a valid SD card
| uint8_t const SD_CARD_ERROR_ERASE = 0XA |
erase block group command failed
| uint8_t const SD_CARD_ERROR_ERASE_SINGLE_BLOCK = 0XB |
card not capable of single block erase
| uint8_t const SD_CARD_ERROR_ERASE_TIMEOUT = 0XC |
Erase sequence timed out
| uint8_t const SD_CARD_ERROR_INIT_NOT_CALLED = 0X17 |
init() not called
| uint8_t const SD_CARD_ERROR_READ = 0XD |
card returned an error token instead of read data
| uint8_t const SD_CARD_ERROR_READ_REG = 0XE |
read CID or CSD failed
| uint8_t const SD_CARD_ERROR_READ_TIMEOUT = 0XF |
timeout while waiting for start of read data
| uint8_t const SD_CARD_ERROR_SCK_RATE = 0X16 |
incorrect rate selected
| uint8_t const SD_CARD_ERROR_STOP_TRAN = 0X10 |
card did not accept STOP_TRAN_TOKEN
| uint8_t const SD_CARD_ERROR_WRITE = 0X11 |
card returned an error token as a response to a write operation
| uint8_t const SD_CARD_ERROR_WRITE_BLOCK_ZERO = 0X12 |
attempt to write protected block zero
| uint8_t const SD_CARD_ERROR_WRITE_MULTIPLE = 0X13 |
card did not go ready for a multiple block write
| uint8_t const SD_CARD_ERROR_WRITE_PROGRAMMING = 0X14 |
card returned an error to a CMD13 status check after a write
| uint8_t const SD_CARD_ERROR_WRITE_TIMEOUT = 0X15 |
timeout occurred during write programming
| uint8_t const SD_CARD_TYPE_SD1 = 1 |
Standard capacity V1 SD card
| uint8_t const SD_CARD_TYPE_SD2 = 2 |
Standard capacity V2 SD card
| uint8_t const SD_CARD_TYPE_SDHC = 3 |
High Capacity SD card
| uint8_t const SD_CHIP_SELECT_PIN = SS_PIN |
define SOFTWARE_SPI to use bit-bang SPI SD Chip Select pin
Warning if this pin is redefined the hardware SS pin will be enabled as an output by init(). An avr processor will not function as an SPI master unless SS is set to output mode. The default chip select pin for the SD card is SS.
| uint16_t const SD_ERASE_TIMEOUT = 10000 |
erase timeout ms
| uint16_t const SD_INIT_TIMEOUT = 2000 |
init timeout ms
| uint16_t const SD_READ_TIMEOUT = 300 |
read timeout ms
| uint16_t const SD_WRITE_TIMEOUT = 600 |
write time out ms
| uint8_t const SPI_EIGHTH_SPEED = 3 |
Set SCK rate to F_CPU/16. See Sd2Card::setSckRate().
| uint8_t const SPI_FULL_SPEED = 0 |
Set SCK to max rate of F_CPU/2. See Sd2Card::setSckRate().
| uint8_t const SPI_HALF_SPEED = 1 |
Set SCK rate to F_CPU/4. See Sd2Card::setSckRate().
| uint8_t const SPI_MISO_PIN = MISO_PIN |
SPI Master In Slave Out pin
| uint8_t const SPI_MOSI_PIN = MOSI_PIN |
SPI Master Out Slave In pin
| uint8_t const SPI_QUARTER_SPEED = 2 |
Set SCK rate to F_CPU/8. See Sd2Card::setSckRate().
| uint8_t const SPI_SCK_PIN = SCK_PIN |
SPI Clock pin


I have fallen in love with web.py over the last few weeks—if you want a site up and running using Python as a backend just as fast (or faster) than you could with PHP, check it out.
But I did have a devil of a time with sessions, so in case you're using web.py and having problems, here's what I discovered:
Syntax: You'd expect a normal, pythonic dictionary, but, alas, we don't have this in web.py. To set a value (assuming my session object is named boringly "session," and I want to set "myvalue" to 1):
session.myvalue = 1
However, to access data, you have to use .get():
print session.get("myvalue")
will give you that same value back.
Debug Mode: I spent a good three-ish hours trying to figure out why my session data kept getting nuked. There is actually a bug in web.py (feel free to comment if/when this gets fixed) that reloads your module twice if you're in debug mode. To fix it, add this after the imports in your code:
web.config.debug = False
Of course, you end up with a tradeoff while you're working on your site (do I care to see the sometimes-helpful error messages enough to have session stuff broken?), but at least it should work fine when you're ready for the world to use it.


Coin Swap
To initiate a swap to move your brt to the new blockchain, please select your account/wallet address then click ‘New Swap’.
Right click on the Deposit Address, then select ‘Copy Deposit Address’.
Send your brt from your old brt wallet to that Deposit Address. Within 48 hours you will receive your new brt in this new wallet. A maximum of 1 swap per day is allowed.
Please visit the dedicated coin swap page on our website for step-by-step instructions and screenshots.
Deposit Address: {{ data.depositAddress }}
Updated: {{ convertCscTimestamp(data.updatedTimestamp) | date : 'yyyy-MM-dd HH:mm:ss' }}
Amount: {{getDepositAmount(data.deposit)}}
Status: {{getSwapStatus(data.swapStatus)}}


Tree info
Stand
Plot
Tag
Details
Species
Please select a species...
DBH (cm)
Status
Please select an option...
Canopy class
Please select an option...
Crown ratio (%)
Overall vigor (OV)
Please select an option...
Main stem (MS)
Please select an option...
Rooting
Please select an option...
Lean angle (deg)
Crown percentage
Tree percentage
Mapping
From (tag)
Distance (m)
Azimuth
Comments
Comment 1
Please select an option...
Comment 2
Please select an option...
Comment 3
Please select an option...
Custom comment


--- layout: post title: "Quznia" date: 2015-04-21 11:12:01 categories: Website ---
Company based around outsourcing, visual identification, copywriting and e-marketing.
Quźnia is a team consisting of both the young and unusual characters, as well as experienced professionals in the field of management, psychology, and sociology. Quźnia are the best photographers, programmers and graphic artists who share a common passion and positive energy. Nontrivial solutions are derived from the skills, knowledge and experience of each of us.
Created while working for Pixlab.pl
Technologies used:


| 010:047 Khan | : |
And for every Ummah (a community or a nation), there is a Messenger; when their Messenger comes, the matter will be judged between them with justice, and they will not be wronged. |
| 010:047 Maulana | : |
And for every nation there is a messenger. So when their messenger comes, the matter is decided between them with justice, and they are not wronged. |
| 010:047 Pickthal | : |
And for every nation there is a messenger. And when their messenger cometh (on the Day of Judgment) it will be judged between them fairly, and they will not be wronged. |
| 010:047 Rashad | : |
To each community, a messenger. After their messenger comes, they are judged equitably, without the least injustice. |
| 010:047 Sarwar | : |
A Messenger is appointed for all people. When the Messenger for them came he judged among them fairly and they were not wronged. |
| 010:047 Shakir | : |
And every nation had a messenger; so when their messenger came, the matter was decided between them with justice and they shall not be dealt with unjustly. |
| 010:047 Sherali | : |
And for every people there is a Messenger. So when their Messenger comes, it is judged between them with equity, and they are not wronged. |
| 010:047 Yusufali | : |
To every people (was sent) a messenger: when their messenger comes (before them), the matter will be judged between them with justice, and they will not be wronged. |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > تنزيه الله تعالى عن الظلم Pillars of Islam> Islamic> Oneness of Allah> Allah the Exalted is Free of Injustice الإيمان > الأنبياء والرسل > مهمتهم في البلاغ Faith> The Prophets and the Messengers of Allah> Their Mission to Inform العلاقات القضائية > تنظيمات قضائية > العدل Judicial Relationships>Juridical Regulations>Justice
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


NowPlaying class
A container for the service. Connects with the underlying OS via a method channel to pull out track data.
- Mixed in types
Properties
- hashCode → int
-
The hash code for this object. [...]
read-only, inherited
- runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
-
stream
→ Stream<
NowPlayingTrack> -
read-only
- track ↔ NowPlayingTrack
-
read / write
Methods
-
didChangeAccessibilityFeatures(
) → void -
Called when the system changes the set of currently active accessibility
features. [...]
inherited
-
didChangeAppLifecycleState(
AppLifecycleState state ) → void -
Respond to changes in the app lifecycle state, on iOS [...]
override
-
didChangeLocales(
List< Locale> locale) → void -
Called when the system tells the app that the user's locale has
changed. For example, if the user changes the system language
settings. [...]
inherited
-
didChangeMetrics(
) → void -
Called when the application's dimensions change. For example,
when a phone is rotated. [...]
inherited
-
didChangePlatformBrightness(
) → void -
Called when the platform brightness changes. [...]
inherited
-
didChangeTextScaleFactor(
) → void -
Called when the platform's text scale factor changes. [...]
inherited
-
didHaveMemoryPressure(
) → void -
Called when the system is running low on memory. [...]
inherited
-
didPopRoute(
) → Future< bool> -
Called when the system tells the app to pop the current route.
For example, on Android, this is called when the user presses
the back button. [...]
inherited
-
didPushRoute(
String route ) → Future< bool> -
Called when the host tells the application to push a new route onto the
navigator. [...]
inherited
-
didPushRouteInformation(
RouteInformation routeInformation ) → Future< bool> -
Called when the host tells the application to push a new
RouteInformation and a restoration state onto the router. [...]
inherited
-
isEnabled(
) → Future< bool> - Returns true is the service has permission granted by the systme and user
-
noSuchMethod(
Invocation invocation ) → dynamic -
Invoked when a non-existent method or property is accessed. [...]
inherited
-
requestPermissions(
{bool force: false} ) → Future< bool> - Opens an OS settings page [...]
-
start(
{bool resolveImages: false, NowPlayingImageResolver resolver} ) → Future< void> - Starts the service. [...]
-
stop(
) → void - Stops the service. [...]
-
toString(
) → String -
Returns a string representation of this object.
inherited
Operators
-
operator ==(
Object other ) → bool -
The equality operator. [...]
inherited
Static Properties
- instance ↔ NowPlaying
-
read / write


Color
Color is a great data type for creating compelling visuals as well as for rendering difference in the output from your Visual Program. When working with abstract data and varying numbers, sometimes it's difficult to see what's changing and to what degree. This is a great application for colors.
Creating Colors
Colors in Dynamo are created using ARGB inputs.This corresponds to the Alpha, Red, Green, and Blue channels. The alpha represents the transparency of the color, while the other three are used as primary colors to generate the whole spectrum of color in concert.
| Icon | Name | Syntax | Inputs | Outputs |
|---|---|---|---|---|
| ARGB Color | Color.ByARGB | A,R,G,B | color |
Querying Color Values
The colors in the table below query the properties used to define the color: Alpha, Red, Green, and Blue. Note that the Color.Components Node gives us all four as different outputs, which makes this Node preferable for querying the properties of a color.
| Icon | Name | Syntax | Inputs | Outputs |
|---|---|---|---|---|
| Alpha | Color.Alpha | color | A | |
| Red | Color.Red | color | R | |
| Green | Color.Green | color | G | |
| Blue | Color.Blue | color | B | |
| Components | Color.Components | color | A,R,G,B |
The colors in the table below correspond to the HSB color space. Dividing the color into hue, saturation, and brightness is arguably more intuitive for how we interpret color: What color should it be? How colorful should it be? And how light or dark should the color be? This is the breakdown of hue, saturation, and brightness respectively.
| Icon | Query Name | Syntax | Inputs | Outputs |
|---|---|---|---|---|
| Hue | Color.Hue | color | Hue | |
| Saturation | Color.Saturation | color | Saturation | |
| Brightness | Color.Brightness | color | Brightness |
Color Range
The color range is similar to the Remap Range Node from section 4.2: it remaps a list of numbers into another domain. But instead of mapping to a number domain, it maps to a color gradient based on input numbers ranging from 0 to 1.
The current Node works well, but it can be a little awkward to get everything working the first time around. The best way to become familiar with the color gradient is to test it out interactively. Let's do a quick exercise to review how to setup a gradient with output colors corresponding to numbers.
- Define three colors: Using a code block node, define red, green, and blue by plugging in the appropriate combinations of 0 and 255.
- Create list: Merge the three colors into one list.
- Define Indices: Create a list to define the grip positions of each color (ranging from 0 to 1). Notice the value of 0.75 for green. This places the green color 3/4 of the way across the horizontal gradient in the color range slider.
- Code Block: Input values (between 0 and 1) to translate to colors.
Color Preview
The Display.ByGeometry Node gives us the ability to color geometry in the Dynamo viewport. This is helpful for separating different types of geometry, demonstrating a parametric concept, or defining an analysis legend for simulation. The inputs are simple: geometry and color. To create a gradient like the image above, the color input is connected to the color range Node.
Color Exercise
Download the example file that accompanies this exercise (Right click and "Save Link As..."): Building Blocks of Programs - Color.dyn. A full list of example files can be found in the Appendix.
This exercise focuses on controlling color parametrically in parallel with geometry. The geometry is a basic helix, which we define below using the Code Block (3.2.3). This is a quick and easy way to create a parametric function; and since our focus is on color (rather than geometry), we use the code block to efficiently create the helix without cluttering the canvas. We will use the code block more frequently as the primer moves to more advanced material.
- Code Block: Define the two code blocks with the formulas above. This is a quick parametric method for creating a spiral.
- Point.ByCoordinates:Plug the three outputs from the code block into the coordinates for the Node.
We now see an array of points creating a helix. The next step is to create a curve through the points so that we can visualize the helix.
- PolyCurve.ByPoints: Connect the Point.ByCoordinates output into the points input for the Node. We get a helical curve.
- Curve.PointAtParameter: Connect the PolyCurve.ByPoints output into the curve input. The purpose of this step is to create a parametric attractor point which slides along the curve. Since the curve is evaluating a point at parameter, we'll need to input a param value between 0 and 1.
- Number Slider: After adding to the canvas, change the min value to 0.0, the max value to 1.0, and the step value to .01. Plug the slider output into the param input for Curve.PointAtParameter. We now see a point along the length of the helix, represented by a percentage of the slider (0 at the start point, 1 at the end point).
With the reference point created, we now compare the distance from the reference point to the original points defining the helix. This distance value will drive geometry as well as color.
- Geometry.DistanceTo: Connect Curve.PointAtParameter output into the input. Connect Point.ByCoordinates into the *geometry input.
- Watch: The resultant output shows a list of distances from each helical point to the reference point along the curve.
Our next step is to drive parameters with the list of distances from the helical points to the reference point. We use these distance values to define the radii of a series of spheres along the curve. In order to keep the spheres a suitable size, we need to remap the values for distance.
- Math.RemapRange: Connect Geometry.DistanceTo output into the numbers input.
- Code Block: connect a code block with a value of 0.01 into the newMin input and a code block with a value of 1 into the newMax input.
- Watch: connect the Math.RemapRange output into one Node and the Geometry.DistanceTo output into another. Compare the results.
This step has remapped the list of distance to be a smaller range. We can edit the newMin and newMax values however we see fit. The values will remap and will have the same distribution ratio across the domain.
- Sphere.ByCenterPointRadius: connect the Math.RemapRange output into the radius input and the original Point.ByCoordinates output into the centerPoint input.
- Number Slider: change the value of the number slider and watch the size of the spheres update. We now have a parametric jig.
The size of the spheres demonstrates the parametric array defined by a reference point along the curve. Let's use the same concept for the sphere radius to drive their color.
- Color Range: Add top the canvas. When hovering over the value input, we notice that the numbers requested are between 0 and 1. We need to remap the numbers from the Geometry.DistanceTo output so that they are compatible with this domain.
- Sphere.ByCenterPointRadius: For the time being, let's disable the preview on this Node (Right Click > Preview)
- Math.RemapRange: This process should look familiar. Connect the Geometry.DistanceTo output into the numbers input.
- Code Block: Similar to an earlier step, create a value of 0 for the newMin input and a value of 1 for the newMax input. Notice that we are able to define two outputs from one code block in this case.
- Color Range: Connect the Math.RemapRange output into the value input.
- Color.ByARGB: This is what we'll do to create two colors. While this process may look awkward, it's the same as RGB colors in another software, we're just using visual programming to do it.
- Code Block: create two values of 0 and 255. Plug the two outputs into the two Color.ByARGB inputs in agreement with the image above (or create your favorite two colors).
- Color Range: The colors input requests a list of colors. We need to create this list from the two colors created in the previous step.
- List.Create: merge the two colors into one list. Plug the output into the colors input for Color Range.
- Display.ByGeometryColor: Connect Sphere.ByCenterPointRadius into the geometry input and the Color Range into the color input. We now have a smooth gradient across the domain of the curve.
If we change the value of the number slider from earlier in the definition, the colors and sizes update. Colors and radius size are directly related in this case: we now have a visual link between two parameters!
Color On Surfaces
The Display.BySurfaceColors node gives us the ability to map data across a surface using color! This functionality introduces some exciting possibilities for visualizing data obtained through discrete analysis like solar, energy, and proximity. Applying color to a surface in Dynamo is similar to applying a texture to a material in other CAD environments. Let's demonstrate how to use this tool in the brief exercise below.
Color on Surfaces Exercise
Download the example file that accompanies this exercise (Right click and "Save Link As..."): Building Blocks of Programs - ColorOnSurface.zip. A full list of example files can be found in the Appendix.
First, we need to create (or reference) a surface to use as an input for the Display.BySurfaceColors node. For this example we are lofting between a sine and cosine curve.
- This Group of nodes is creating points along the Z-axis then displacing them based on sine and cosine functions. The two point lists are then used to generate NURBS curves.
- Surface.ByLoft: generate an interpolated surface between the list of NURBS curves.
- File Path: select an image file to sample for pixel data downstream
- use File.FromPath to convert the file path to a file then pass into Image.ReadFromFile to output an image for sampling
- Image.Pixels: input an image and provide a sample value to use along the x and y dimensions of the image.
- Slider: provide sample values for Image.Pixels
- Display.BySurfaceColors: map array of color values across surface along X and Y respectively
Close-up preview of the output surface with resolution of 400x300 samples


Methods summary
public
|
#
__construct( string $className = null, string $objectId = null )
Make a new plain LeanObject.
Make a new plain LeanObject.
Parameters
Throws
InvalidArgumentException
|
public static
LeanCloud\LeanObject
|
#
create( string $className, string $objectId = null )
Make a new object for class
Make a new object for class
The returned object will be instance of sub-class, if className has
been registered.
Parameters
Returns
|
public static
|
#
registerClass( )
Register a sub-class to LeanObject.
Register a sub-class to LeanObject.
When a sub-class extends LeanObject, it should specify a static
string variable ::$className , which corresponds to a className on
LeanCloud. It shall then invoke ->registerClass to register
itself to LeanObject. Such that LeanObject maintains a map of
className to sub-classes.
It is only callable on sub-class.
Throws
RuntimeException
|
public
string
|
|
public
|
|
public
|
|
public
array
|
#
getPointer( )
Pointer representation of object
Pointer representation of object
Returns
array
|
public
array
|
#
toJSON( )
Recursively encode object and its data to JSON
Recursively encode object and its data to JSON
Top level object are encoded to literal JSON, with __type and
className stripped out.
Returns
array
See
self::toFullJSON
|
public
array
|
#
toFullJSON( array $seen = array() )
Recursively encode object and its data to full JSON
Recursively encode object and its data to full JSON
Recursively encode object and its (snapshot) data to full JSON, the
__type and className will be included in the attributes.
Parameters
- $seen
- Objects that have been traversed
Returns
array
See
self::toJSON
|
public
string
|
|
public
DateTime
|
|
public
DateTime
|
|
public
LeanCloud\LeanObject
|
#
set( string $key, mixed $val )
Set field value by key
Parameters
- $key
- field key
- $val
- field value
Returns
Throws
RuntimeException
|
public
LeanCloud\LeanObject
|
|
public
null|LeanCloud\ACL
|
#
getACL( )
Get ACL for object
Returns
|
public
LeanCloud\LeanObject
|
#
delete( string $key )
Delete field by key
Parameters
Returns
|
public
mixed
|
#
get( string $key )
Get field value by key
Parameters
Returns
mixed field value
|
public
LeanCloud\LeanObject
|
#
increment( string $key, number $amount = 1 )
Increment a numeric field
Increment a numeric field
For decrement, provide a negative amount.
Parameters
- $key
- field key
- $amount
- amount to increment
Returns
|
public
LeanCloud\LeanObject
|
#
addIn( string $key, miexed $val )
Add one object into array field
Add one object into array field
Parameters
- $key
- Field key
- $val
- Object to add
Returns
Throws
RuntimeException
|
public
LeanCloud\LeanObject
|
#
addUniqueIn( string $key, mixed $val )
Add one object uniquely into array field
Add one object uniquely into array field
Parameters
- $key
- Field key
- $val
- Object to add
Returns
Throws
RuntimeException
|
public
LeanCloud\LeanObject
|
#
removeIn( string $key, mixed $val )
Remove one object from array field
Remove one object from array field
Parameters
- $key
- Field key
- $val
- Object to remove
Returns
Throws
RuntimeException
|
public
boolean
|
#
hasData( )
If object has data attributes.
If object has data attributes.
Returns
boolean
|
public
boolean
|
#
isDirty( )
If there are unsaved operations.
If there are unsaved operations.
Returns
boolean
|
public
|
#
save( LeanCloud\SaveOption $option = null )
Save object and its children objects and files
Save object and its children objects and files
Parameters
Throws
|
public
|
#
mergeAfterSave( array $data )
Merge server data after save.
Merge server data after save.
All local changes will be cleared.
Parameters
- $data
- JSON decoded server response
|
public
|
#
mergeAfterFetch( array $data )
Merge server data after fetch.
Merge server data after fetch.
Local changes will be cleared. Though it is different from
megerAfterSave, that changes on new fields (which do not exist
on server) will be preserved until saved to server.
Parameters
- $data
- JSON decoded server response
|
public
|
#
fetch( )
Fetch data from server
Local unsaved changes will be discarded.
Throws
RuntimeException, CloudException
|
public
|
#
fetchAll( array $objects )
Fetch objects from server
Fetch objects from server
Parameters
- $objects
- Objects to fetch.
Throws
RuntimeException, CloudException
|
public
|
#
destroy( )
Destroy object on server
It does and only destroy current object.
Throws
|
public
LeanCloud\Query
|
#
getQuery( )
Return query object based on the object class
Return query object based on the object class
Returns
|
public
LeanCloud\Relation
|
#
getRelation( string $key )
Get (or build) relation on field
Get (or build) relation on field
Parameters
Returns
Throws
RuntimeException
|
public static
|
#
traverse( array $value, function & $seen, $func )
Traverse value in a hierarchy of arrays and objects
Traverse value in a hierarchy of arrays and objects
Array and data attributes of LeanObject will be traversed, each time
a non-array value found the func will be invoked with the value as
arguement.
Parameters
- $value
- $seen Objects that have been traversed
- $seen
- $func A function to call when non-array value found.
- $func
|
public
array
|
#
findUnsavedChildren( )
Find unsaved children (both files and objects) of object.
Find unsaved children (both files and objects) of object.
Returns
array
|
public static
|
#
saveAll( array $objects )
Save objects and associated unsaved children and files.
Save objects and associated unsaved children and files.
Parameters
- $objects
- Array of objects to save
Throws
RuntimeException
|
public static
|
#
destroyAll( array $objects )
Delete objects in batch
Parameters
- $objects
- Array of Objects to destroy
|


Defines some commonly used struts forms. Where possible dyna action forms should be used. In particular the sort form defined here should be replaced with a dyna action form.


Home
Dashboard
Login/Signup
The Tech Blog
Dashboard
You'll find your posts here.
Create a new post!
There doesn't seem to be anything here...
Click the button above to create a new post!