| DOSE: |
2 hits |
oral |
LSD |
(gel tab) |
This, the most anticipated trip of the summer, was a real let down in a lot of ways.
Pre-Trip Introductions and Ramblings
The trip that was about to take place was planned perfectly, and everyone was super excited. The trippers would be myself, my girlfriend, and my old friends Kara and Jake.
Kara had asked me if I could 'hook her up' with acid for about a year now, and it just so happened that I finally had a little bit to share. She had only taken LSD once before, a couple years ago, and she recalled this experience fondly so I was excited to share the experience with her once again.
I had tripped with Jake before. Once, at a Phish show where he sort of wandered off, so we didn't actually trip together, and then once again just about a month ago when we ate some fantastic mushrooms and I lost my ego in the woods. This trip had revealed a few personality traits about Jake that made me a little uncomfortable, but I had a great time nonetheless. Regardless, I invited him to trip with us to return the favor. Additionally, he had never taken LSD before, and I was excited to show him why I considered LSD the best psychedelic drug.
And of course there was my girlfriend Psilosara. Some of you who frequent this forum, and inevitably end up reading some of the many trip reports I write, are probably familiar with her. She is my one love, my grounding force, and she also likes to take LSD. Why not bring her along too?
Myself? Well, I'd eaten some LSD from this same batch just a couple weeks before at a friend's apartment. As I already knew, the LSD was of good quality. I'll admit my frame of mind has been out of whack lately. I haven't been spending much time at home, I've had anxiety attacks followed by deep depression, and I only have sporatic and strange forms of employment. Basically, when I hear that Modest Mouse song 'Float On', I think, 'that's what I'm doing'.
And then there was my friend, who we'll call C-Slice. He was going to trip with us, but Kara decided the night before that C-Slice creeped her out, and she refused to trip with him. I had the pleasure of breaking this news to C-Slice, and apologizing on her behalf. It sort of pissed me off to have to do that, especially since the others just wanted to not tell him and instead tell him the wrong meeting time and place, or something.  If we're going to give someone the boot, somebody's at least gotta tell him straight to his face.  Upon doing so, the seed of regret had been planted inside of me.
The Trip
So it was 12:00 noon and the four of us parked a car on the bottom of a mountain and began to walk up a steep and rocky trail to the summit, which was only about a half hour's climb, where we'd find a place to trip out. At the bottom of the trail I gave everyone two microdots, except myself. I ate an extra large mutant microdot which looked like it was two normal microdots fused together.
We climbed this trail, and it was really hot out so we were all drenched in sweat by the time we reached the top. The actual top of the hill was a good couple hundred feet off the trail, so we decided we'd claim the top of the hill for our own, as it should prove to be a secluded and scenic location.
Sitting around, over the next couple of hours I observed my friends display the early signs of a trip setting in. A little bit of extra laughter here, a little bit of extra attention paid to a bit of moss there, and some muscle twitches over there. Of course I was already feeling the complex tryptamine surging through me. My hands were shaking a bit more than usual and I could feel the energy surging through my arms. My stomach had tightened just a bit, but nothing uncomfortable or really distracting.
Jake had brought a guitar up with him, and we took turns playing it as our trips set in. About two hours after dropping, I noticed some visuals like rocks breathing and patterns forming in the nature around us. Jake and Kara seemed a bit impatient, but I assured them there was another two hours to peak. This particular LSD seems to hit people a little later than a blotter does, most likely because of its microdot form. I dunno, it just does. So we walked around and explored our surroundings, talked about weird subject matter, and enjoyed stretching and feeling the wind blowing over the hill.
Fast forward three hours, and we are all peaking. At this point I feel like I need a change of scenery, and suggest going for a walk. I know the trails around this area well, and I know there are some particularly nice areas only a few minutes away. Why not explore rather than sitting in the same place for the entire day?
It was not just this particular spot that was getting to me. It was Jake. I thought I could barely stand to listen to him brag about how much ganja he sells one more time. 'It's not about the money.' Yeah, riiiight. Furthermore, I was tried of listening to him dominate the conversation by constantly changing the topic to something which allowed him to show off how well traveled he is and what a deep thinker he considers himself.
  Then he would look to Kara and my own girlfriend of almost four years for some sort of reinforcement for this condescending behavior.
Normally I would have said, 'My own little world?  That's right, poking this rock with this stick is exponentially more interesting than you.
But as many of you know, tension on LSD must be avoided at all costs. Especially at the peak of a trip, and with nowhere to go besides this hill top for the next several hours. So, feeling absolutely no need to explain myself, I said nothing. While there was a thunderhead slowly gathering humidity inside my brain, I remained neutral in outward appearance.
Psilosara was rocking back and forth in her camp seat, and I wondered what she was thinking and experiencing. I could feel the tension oozing out of her, but I didn't ask her for three reasons. First, I no longer felt like I was in the company of trusted friends, and any conversation I was to have with her, I wanted to be private. Second, I am always very respectful of people's rights not to reveal their thoughts, especially in front of other people, until they are ready to do so. I wish people would extend me this courtesy more often. Third, every time I looked at her or tried to start conversation, she was focused on the shirtless wonder boy. I thought it was strange that I could hardly make eye contact with her without her eyes darting towards this source of constant annoyance.
Anyway, Jake decided to roll a spliff (weed/tobacco), and I felt it was late enough in the trip for me to smoke. I took probably 8 or 10 drags from the spliff, and instantly my trip went from a high ++ to a +++.
And instantly my heartrate shot up from slightly elevated, as is normal under the influence of LSD, to VERY elevated and beating extra hard. I became hypersensitive to all my physical functions and it made me very anxious. FUCK. I've been here before. And now I'm back here again.
No, I didn't think I would die or have a heart attack. I've had a few panic attacks on weed, and one particularly nasty one on weed + DXM, where I did think I was going to have a heart attack. Apparently my heart can take it, but there's no way to calm yourself down when your heart is beating way faster and harder than normal. Of course the buzz focused itself into my left arm where it took on the feeling of a numb left arm. I'm no stranger to such psychosomaticism. I willed the buzz to focus in my right arm, and then move up to my mind. I've trained myself to do this.
Then I lay back and crossed my arms over my chest. This is to prevent confusion between my actual heart rate and the frequency of the tryptamine buzz, which is a bit faster than my actual heart rate and can be confused for a heart rate if I am not monitoring it. Maybe you think if I just ignore it, I'll calm down and it will slow down. No. However I can slow it down somewhat by focusing on the beats and gradually imagining that my heart is beating slower than it actually is.
During this time I couldn't have cared less about what was going on around me, except for Psilosara sitting to my left. She knew what was happening and put her hand on my chest for a moment, and as she did my heart calmed down to a level I could cope with.
But like I said my trip had elevated significantly since I smoked the spliff. I stared up at the trees and saw that each one was glowing brightly against the sky. The clouds were constantly shifting and changing shapes. The trees, however, were taunting me. I wanted to stop looking at trees, I was sick of all these damn trees, but no matter where I looked there were trees. I tried closing my eyes but the CEVs were not pleasing to look at. So I stared at the trees and made the entire forest turn into a fractal pattern. Well, that's cool, I guess.
Then I heard Jake mention something about me being in my own world, zoning out looking at the tree tops. I harnessed my negative energy and directed it in a beam right at him. 'I want you to feel what I am feeling!'
Right after that, to my great satisfaction, he appeared to be struck by the intensity of the trip. He laid back and stared at the tree tops himself. Up until this point I felt he had showed little appreciation for the LSD which I had worked hard to obtain for him, saying things like, 'I tripping, I guess.' and complaining about the lack of visuals right after being convinced that a stick in the dirt was a snake about to attack him, and also right after mentioning that the whole world looks like its being seen through a trippy filter.
Stuff like that really makes me want to keep my stash to myself. (not that I have a stash anymore)
After a while of intense thoughts, including some messed up thought loops which I managed to wrestle my way out of, I was ready to move around and get up. My heartrate was still very elevated but not any more than if I had just smoked a bunch of pot. So we began playing a mobile frisbee game. See, most of our throws were pretty good but pretty often we'd ricochet off a tree or throw it in the totally wrong direction, so the frisbee would land away from us. Then we'd just move our game to where the frisbee landed, and so on. This went on for some time, until our game ended up moving too far down the hill and we were attacked by deer flies and mosquitoes. We realized that we were pretty much trapped on the top of our hill, as the bugs were really starting to come out.
What is there to say about the rest of the trip? Coming down was a long, drawn out process. We were stuck up on the hilltop until almost 10:00pm because we didn't want to return to civilization (or anybody's house while their parents were still around, as we weren't near anyone's apartment at the time).
So we made a fire and fed it for quite some time, sitting around with little left to say and nothing left to do. At one point I asked Psilosara if she wanted to join me for a walk, hoping we could discuss things in private and enjoy a change of setting. She refused, saying that she didn't want to split up the group. I jokingly said, 'What, these kids?'... but I was dead serious. I saw no reason to give them any consideration. If Psilosara wasn't there I would have gone for a walk myself, and probably not come back.
Eventually though, it was time to head back. Our original plan, which I was fond of, was to walk back down though the woods to Psilosara's house which was directly off the same trail which took us to the top of the hill, but on the other side of the hill.
So we turned on our headlamps and went down what I thought was the same way we came up, but somehow didn't run into the trail. But since I know the geography of this wooded area pretty well, I just started wandering back and forth systematically back in the direction we had missed the trail. Jake continued to piss me off by constantly questioning my navigation, and suggested we go down the hill in the completely wrong way, away from any trails at all, and tried to rally support for this, the completely wrong direction. This pissed me off because I wasn't in the mood for getting totally lost in the woods far away from any trails or roads. Fortunately Kara agreed that we should keep heading back in the direction that I was taking us. So we walked this way, but Jake jumped ahead and led us, found the trail (of course), and took credit for saving us from being lost in the woods.
Then we went to Wendy's drive through and ate chicken.
What did I learn from this?
1. Be more selective when choosing who to trip with. No more going into trips 'for other people'.  No more of that.
2. The woods do not nescessarily provide endless entertainment for a tripper.
3.
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.


|
|
Photo album
PowerThere is a single mains power port at Knox Mountain Base (KMB), at the NW corner of the lawn with tennis courts, with 6 * 15A outlets, i.e. roughly one 15A outlet per team. I suggest we locate a central HQ tent next to the power port, and have it set up for weatherproof battery and laptop charging.Internet
WaterDrinking water is available only via a fountain near the boat launch at a trickle. You should bring drinking water, and use this for emergencies only. Non-potable water will be available from a hose near the tennis courts. This should be good for cleaning gear, but don't drink it. Sun and ShadeKelowna can be warm and sunny in June (though no promises!). The KMB area and boat area are full of shady trees, but the mountain proper is exposed and could be hot. We are allowed to drive vehicles into the old campsite area to shade them if you are planning on working out of your truck in the Barfoot style. If you don't have a truck, or in addition, I think a shade-tent would be useful for each team. Also, the HQ tent should be nice and shady. Bring a good hat, sunscreeen and plenty of water. TerrainGroundThere are many excellent trails that will suit the Husky. From easy, smooth and wide trails to steep, rocky and narrow. Also easy mountain bike trials with bumps and jumps if you want some fun but not quite natural vertical features. At KMB the old campsite and road, the beach park and lawns are suitable for driving Husky pretty much anywhere. Off the trails on the mountain proper is grassland with wild flowers and sparse trees. We should stick mostly to the trails to protect the landscape. CliffsThere are several locations with cliffs with exposed rock, and some are easily accessible from the ground. There is a tall, near-vertical cliff at KMB with excellent base access. We can not touch or climb the cliffs as they are delicate habitat, but we can observe them from close up. FlyingWe can fly anywhere that is safe. Unless you hold an SFOC, or have an under-2kg vehicle like ARDrone you must tether your UAV. There is lots of space to fly along and around the trails but the land is sparsely treed, which is a big limitation for tethered vehicles. There is an open meadow on the mountain that might be very good for flying. We have not yet secured vehicle access to this. See the images and let me and Isabelle know if you want to work on getting to this spot. Hotel and environsThe hotel is comfortable, nice and seems secure. It has a pool and a bar. There is a supermarket adjacent, plus a good burger place and coffee shops. It's a short drive or maybe 20 minute walk to the main downtown bars and restaurants. Kelowna is a very Western car-based town and is unfortunately spread-out. Renting a few bicycles would be very cool for getting around. KMB environsKMB is in a suburban family neighborhood. The downtown lunch spots are 5 minutes drive away, so you may want to bring a packed lunch and snacks for the day to save time. There will be people using the park around us, for running, dog walking, etc. I promised the city we were cool with this. Please don't expect a stationary environment at all times! |


Bathroom decorating is all in the details
by Ed Del GrandeQ: In the past you’ve written about using a suite of bathroom fixtures that all match each other to create a common design theme. How far can you go? Can you take that concept even further to get into things like accessories?
A: Some plumbing-fixture manufacturers offer suite-collection fixtures like toilets, sinks, faucets and bathtubs that are designed to match, and other offerings are available as well. The concept has expanded to include bathroom accessories like lighting, shelving, door pulls, towel holders and bathrobe hooks as well.
Speaking of robes, I’ve even seen bathroom suite offerings that include bathrobes with matching floor rugs, bath mats and towels.

Ed Del Grande<EMAIL_ADDRESS>. Ed Del Grande is a master plumber and contractor and is the author of the book “Ed Del Grande’s House Call.”
Ed Del Grande


public class Request extends ProtocolParam
Request
class represents user request. Request
uses JSON format as exchangeable means in client-server network. Note, JSON (JavaScript Object Notation) is a human-read format used for interchange between many protocols, available at http://www.json.org.
User request includes recommendation request, retrieval request, update request.
Each request has a so-called action
which is a short description (short string) of such request. Action can be considered as the purpose of request.
For example, the request that user requires a list of recommended items has action "recommend_user".
recommend_param
to store parameter of recommendation.
Such information contains user profile, ratings of such user on many items, list of contexts (place, time, accompany) relevant to user ratings.
Request
class) and response (represented by Response
class) extend directly protocol parameter specified by abstract class ProtocolParam
and so they have a tight interaction.
There are two types of request as follows:
RecommendParam
which is the first input parameter of methods Recommender.estimate(...)
and Recommender.recommend(...)
.
| Modifier and Type | Field and Description |
|---|---|
java.lang.String |
account_name
Account name.
|
java.lang.String |
account_password
Password of account.
|
int |
account_privileges
Privileges of account.
|
java.lang.String |
action
Action of request.
|
java.lang.String |
attribute
Attribute name.
|
Profile |
condition
Condition is the special profile which is used in condition clause
where in SQL statement for processing database, for example. |
java.io.Serializable |
external_itemid
Item identifier (item ID) is stored in outside database different from the Hudup database.
|
ExternalRecord |
external_record
External record represented by
ExternalRecord class is a record (a row in table) which is stored in other database (different from the framework database). |
java.io.Serializable |
external_userid
User identifier (user ID) is stored in outside database different from the Hudup database.
|
java.lang.String |
file_path
File path such as C:/Hudup/datasets/movielens/rating001.test
|
int |
file_type
File type such as Hudup file type (*.hdp), text file type (*.txt), CSV file type (*.csv), etc.
|
java.lang.String |
host
The host where Hudup server is deployed, for examle, "localhost".
|
InternalRecord |
internal_record
Internal record represented by
InternalRecord class is a record (a row in table) stored in the framework database. |
int |
itemid
Item identifier (item ID).
|
int |
max_recommend
Recommendation service produces a list of recommended item.
|
Nominal |
nominal
Nominal data indicates discrete and non-number data such as weekdays {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}.
|
java.lang.String |
nominal_ref_unit
The unit name of nominal (s).
|
int |
port
The port where Hudup server serves incoming requests.
|
Profile |
profile
Specified profile.
|
java.util.Set<java.lang.Integer> |
queryids
Specified set of identifiers (IDs).
|
Rating |
rating
This is a rating that a user gives on an item, represented by
Rating class. |
RatingVector |
rating_vector
Note, rating vector represented
RatingVector contains ratings. |
RecommendParam |
recommend_param
Specified recommendation parameter represented by
RecommendParam . |
java.lang.String |
reg_name
Registered name of recommendlet.
|
java.lang.String |
session_attribute_name
Specified name of the current session in server.
|
java.lang.String |
sql
Specified SQL statement.
|
java.lang.String |
unit
Specified unit name.
|
int |
userid
User identifier (user ID).
|
protocol
| Constructor and Description |
|---|
Request()
Default constructor.
|
| Modifier and Type | Method and Description |
|---|---|
static Request |
createQuitRequest()
Creating a quit request.
|
boolean |
isQuitRequest()
Testing whether or not this request is quit request.
|
static Request |
parse(java.util.Map<java.lang.String,java.lang.String> params)
Parsing (converting) a set of key-value pairs.
|
static Request |
parse(java.lang.String jsonText)
Parsing (converting) the specified JSON text (text form of a request) into the request.
|
java.lang.String |
toJson()
Converting this parameter into JSON format.
|
public java.lang.String action
public java.lang.String account_name
public java.lang.String account_password
public int account_privileges
public java.lang.String attribute
Attribute
class indicates the data type, which is also a wrapper of data type.
Each attribute has always a name.public Profile condition
where
in SQL statement for processing database, for example.public java.io.Serializable external_itemid
public ExternalRecord external_record
ExternalRecord
class is a record (a row in table) which is stored in other database (different from the framework database). It is opposite to internal record represented by InternalRecord
class which is a record stored in the framework database.public java.io.Serializable external_userid
public int file_type
public java.lang.String file_path
public InternalRecord internal_record
InternalRecord
class is a record (a row in table) stored in the framework database.public int itemid
public java.lang.String host
public int max_recommend
public Nominal nominal
nominal
, in brief, represented by Nominal
class.public java.lang.String nominal_ref_unit
nominal
, in brief, represented by Nominal
class.
Unit
represents a CSV file, database table, Excel sheet, etc. Unit is used to store object such as user profile, item profile, rating matrix, etc.public int port
public Profile profile
Profile
is one of important data structures, like record of table in database, has a list of values. Each value belongs to a particular attribute. Profile uses a attribute list to specify its data types. Every object can be modeled as profile to be stored in archive (file).public java.util.Set<java.lang.Integer> queryids
public RatingVector rating_vector
RatingVector
contains ratings.
If rating vector is user rating vector, it contains all ratings of the same user on many items.
If rating vector is item rating vector, it contains all ratings of many users on the same item.public Rating rating
Rating
class.public RecommendParam recommend_param
RecommendParam
. Recommendation parameter contains important information as follows:
public java.lang.String reg_name
Recommendlet
class is service or a small graphic user interface (GUI) that allows users to see and interact with a list of recommended items.
Recommendlet is now deprecated.public java.lang.String session_attribute_name
public java.lang.String sql
public java.lang.String unit
Unit
represents a CSV file, database table, Excel sheet, etc. Unit is used to store object such as user profile, item profile, rating matrix, etc.public int userid
public boolean isQuitRequest()
public static Request createQuitRequest()
public java.lang.String toJson()
ProtocolParam
toJson
in class ProtocolParam
public static Request parse(java.lang.String jsonText)
jsonText
- specified JSON text (text form of a request).public static Request parse(java.util.Map<java.lang.String,java.lang.String> params)
queryids
.
The text value "1,2,3" is parsed as the set {1,2,3}.
Finally, the variable queryids
is assigned by the set {1,2,3}.params
- set of key-value pairs.


Copyright © 2009 Marc Worrell Date: 2009-04-09 Copyright 2009 Marc Worrell Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Behaviours: gen_model.
Authors: Marc Worrell (marc@worrell.nl).
| delete/2 | Delete an edge by Id. |
| delete/4 | Delete an edge by subject, object and predicate id. |
| delete_multiple/4 | Delete multiple edges between the subject and the object. |
| duplicate/3 | Duplicate all edges from one id to another id. |
| get/2 | Get the complete edge with the id. |
| get_edges/2 | Return the full description of all edges from a subject, grouped by predicate. |
| get_id/4 | Get the edge id of a subject/pred/object combination. |
| get_triple/2 | Get the edge as a triple {subject_id, predicate, object_id}. |
| insert/4 | |
| insert/5 | |
| m_find_value/3 | Fetch all object/edge ids for a subject/predicate. |
| m_to_list/2 | Transform a m_config value to a list, used for template loops. |
| m_value/2 | Transform a model value so that it can be formatted or piped through filters. |
| object/4 | Return the Nth object with a certaing predicate of a subject. |
| object_edge_ids/3 | Return all object ids with the edge id for a predicate/subject_id. |
| object_predicate_ids/2 | Return the list of predicate ids in use by edges to objects from the id. |
| object_predicates/2 | Return the list of predicates in use by edges to objects from the id. |
| objects/2 | Return all object ids of the resource. |
| objects/3 | Return all object ids of an id with a certain predicate. |
| replace/4 | Replace the objects with the new list. |
| set_sequence/4 | Set edges order so that the specified object ids are in given order. |
| subject/4 | Return the Nth subject with a certaing predicate of an object. |
| subject_edge_ids/3 | Return all subject ids with the edge id for a predicate/object_id. |
| subject_predicate_ids/2 | Return the list of predicates is use by edges from subjects to the id. |
| subject_predicates/2 | Return the list of predicates is use by edges from subjects to the id. |
| subjects/2 | Return all subject ids of the resource. |
| subjects/3 | Return all subject ids of an object id with a certain predicate. |
| update_nth/5 | Update the nth edge of a subject. |
| update_sequence/4 | Reorder the edges so that the mentioned ids are in front, in the listed order. |
| update_sequence_edge_ids/4 | Update the sequence for the given edge ids. |
delete(Id, Context) -> any()
Delete an edge by Id
delete(SubjectId, Pred, ObjectId, Context) -> any()
Delete an edge by subject, object and predicate id
delete_multiple(SubjectId, Preds, ObjectId, Context) -> any()
Delete multiple edges between the subject and the object
duplicate(Id, ToId, Context) -> any()
Duplicate all edges from one id to another id. Skip all edges that give ACL errors.
get(Id, Context) -> any()
Get the complete edge with the id
get_edges(SubjectId, Context) -> any()
Return the full description of all edges from a subject, grouped by predicate
get_id(SubjectId, Pred, ObjectId, Context) -> any()
Get the edge id of a subject/pred/object combination
get_triple(Id, Context) -> any()
Get the edge as a triple {subject_id, predicate, object_id}
insert(SubjectId, Pred, ObjectId, Context) -> any()
insert(SubjectId, PredId, ObjectId, Opts, Context) -> any()
m_find_value(Key, M::Source, Context) -> term()
Fetch all object/edge ids for a subject/predicate
m_to_list(M::Source, Context) -> List
Transform a m_config value to a list, used for template loops
m_value(M::Source, Context) -> term()
Transform a model value so that it can be formatted or piped through filters
object(Id, Pred, N, Context) -> any()
Return the Nth object with a certaing predicate of a subject.
object_edge_ids(Id, Predicate, Context) -> list()
Return all object ids with the edge id for a predicate/subject_id
object_predicate_ids(Id, Context) -> List
Return the list of predicate ids in use by edges to objects from the id
object_predicates(Id, Context) -> List
Return the list of predicates in use by edges to objects from the id
objects(Id, Context) -> list()
Return all object ids of the resource
objects(Id, Pred, Context) -> List
Return all object ids of an id with a certain predicate. The order of the ids is deterministic.
replace(SubjectId, PredId, NewObjects, Context) -> any()
Replace the objects with the new list
set_sequence(Id, Pred::Predicate, ObjectIds, Context) -> ok | {error, Reason}
Set edges order so that the specified object ids are in given order. Any extra edges not speicified will be deleted, and any missing edges will be inserted.
subject(Id, Pred, N, Context) -> any()
Return the Nth subject with a certaing predicate of an object.
subject_edge_ids(Id, Predicate, Context) -> list()
Return all subject ids with the edge id for a predicate/object_id
subject_predicate_ids(Id, Context) -> List
Return the list of predicates is use by edges from subjects to the id
subject_predicates(Id, Context) -> List
Return the list of predicates is use by edges from subjects to the id
subjects(Id, Context) -> list()
Return all subject ids of the resource
subjects(Id, Pred, Context) -> List
Return all subject ids of an object id with a certain predicate. The order of the ids is deterministic.
update_nth(SubjectId::int(), Predicate, Nth::int(), ObjectId, Context) -> {ok, EdgeId} | {error, Reason}
Update the nth edge of a subject. Set a new object, keep the predicate. When there are not enough edges then an error is returned. The first edge is nr 1.
update_sequence(Id, Pred::Predicate, ObjectIds, Context) -> ok | {error, Reason}
Reorder the edges so that the mentioned ids are in front, in the listed order.
update_sequence_edge_ids(Id, Pred::Predicate, EdgeIds, Context) -> ok | {error, Reason}
Update the sequence for the given edge ids. Optionally rename the predicate on the edge.
Generated by EDoc, Apr 11 2012, 20:41:29.


HERMAN A film review by Frank Maloney Copyright 1992 Frank Maloney
HERMAN is a Norwegian film directed by Erik Gustavson, written by Lars Saabye Christensen from his own novel. It stars Anders Danielson Lie, Frank Robert, Elisabeth Sand. Unrated. In Norwegian, with English subtitles.
HERMAN is that unlikeliest of films, a fresh coming-of-age story. It is about an 11-year-old Oslo schoolboy, Herman (Anders Danielson Lie), who is a rather withdrawn, runty kid, bullied at school and misunderstood at home. He lives in a vivid fantasy world that includes a Norwegian-speaking Zorro and walking into traffic whilst pretending to be blind. His only friends are his ailing grandfather and a beer-soaked neighbor who was once a gardener to the king and who has pretty vivid fantasy life himself until it turns into a first-class case of the DTs. Herman's already fragile world really unravels when his barber discovers a bald patch on the child's head, the first symptoms of alopecia areata, an incurable cosmetic disorder that will cause him to lose all his hair in time.
It is Herman's progressive reactions to his malady and his growing baldness that mark his growth and maturity. His alopecia is, on one level, merely a symbol of the agonies and changes that we all go through moving from childhood to adulthood. But like all good symbols, this one is vividly specific, as Herman moves through anger (at his fate and at his parents who are at something of a loss to know how to handle things), onto various strategies, disguises, and other forms of denial and withdrawal, and ultimately landing on his feet in a charming act of acceptance.
Herman as played by Lie believably, ingratiatingly, and often comically. His performance is likable, light-hearted, and completely natural. He manages to make the unusual point that even a child in a stable, functional, loving family can still have a childhood marked by pain and insecurity, that growing up is hellish for all of us. Herman performs the more accustomed role, too, of deflating adult pretenses and evasions, of finding the truth amidst the lies.
This is a totally charming film and I recommend it highly. It's current run in Seattle (Metro Cinemas) is its U.S. premiere. It's being distributed by RKO Pictures. If it comes to your area, do yourself the favor of going.
-- Frank Richard Aloysius Jude Maloney .
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


[MAP_TITLE]
Sensors: [SENSOR_LIST]
Download this kml file
Water
Clouds
Show flood detection results
Map
[RADIO_SECTION_MODIS] [RADIO_SECTION_LANDSAT] [RADIO_SECTION_SENTINEL1]


Installing Newt on Linux¶
You can install the latest release (1.5.0) of the newt tool from a Debian binary package (amd64). You can also download and build the latest release version of newt from source.
This page shows you how to:
Set up your computer to download Debian binary packages from the JuulLabs-OSS APT repository.
Note: The key for signing the repository has changed. If you set up your computer before release 1.1.0, you will need to download and import the public key again.
Install the latest release version of newt from a Debian binary package. You can use apt-get to install the package or manually download and install the Debian binary package.
Download, build, and install the latest release version of newt from source.
If you are installing on an amd64 platform, we recommend that you install from the binary package.
See Installing Previous Releases of Newt to install an earlier version of newt.
Note: We have tested the newt tool binary and apt-get install from the JuulLabs-OSS APT repository for Ubuntu version 1704. Earlier Ubuntu versions (for example: Ubuntu 14) may have incompatibility with the repository. You can manually download and install the Debian binary package.
Note: See Contributing to Newt or Newtmgr Tools if you want to:
- Use the newt tool with the latest updates from the master branch. The master branch may be unstable and we recommend that you use the latest stable release version.
- Contribute to the newt tool.
Setting Up Your Computer to use apt-get to Install the Package¶
The newt Debian packages are stored in a private APT repository on https://github.com/JuulLabs-OSS/debian-mynewt. To use apt-get, you must set up the following on your computer to retrieve packages from the repository:
Note: You only need to perform this setup once on your computer. However, if you previously downloaded and imported the public key for the JuulLabs-OSS APT repository, you will need to perform step 2 again as the key has changed.
- Download the public key for the JuulLabs-OSS APT repository and import the key into the apt keychain.
- Add the repository for the binary and source packages to the apt source list.
Download the public key for the JuulLabs-OSS apt repo (Note: There is a -
after apt-key add
):
$ wget -qO - https://raw.githubusercontent.com/JuulLabs-OSS/debian-mynewt/master/mynewt.gpg.key | sudo apt-key add -
Add the repository for the binary and source packages to the mynewt.list
apt source list file:
$ sudo tee /etc/apt/sources.list.d/mynewt.list <<EOF
deb https://raw.githubusercontent.com/JuulLabs-OSS/debian-mynewt/master latest main
EOF
Note: Previously the repository lived under runtimeco/debian-mynewt
, and although
updating should remain working, if it stops pulling in the latest releases, please try updating
/etc/apt/sources.list.d/mynewt.list
and substitute runtimeco
by JuulLabs-OSS
.
Update the available packages:
$ sudo apt-get update
Note: If you are not using Ubuntu version 1704, you may see the following errors. We have provided instructions on how to manually download and install the binary package.
W: Failed to fetch https://raw.githubusercontent.com/JuulLabs-OSS/debian-mynewt/master/dists/latest/main/source/Sources HttpError404
Installing the Latest Release of Newt from a Binary Package¶
You can use either apt-get to install the package, or manually download and install the Debian binary package.
Method 1: Using apt-get to Upgrade or to Install¶
Run the following commands to upgrade or install the latest version of newt:
$ sudo apt-get update
$ sudo apt-get install newt
Note: If you encounter build errors (such as missing sys/mman.h
), please make sure you have a 32-bit glibc:
$ sudo apt-get install gcc-multilib
Method 2: Downloading and Installing the Debian Package Manually¶
Download and install the package manually.
$ wget https://raw.githubusercontent.com/JuulLabs-OSS/binary-releases/master/mynewt-newt-tools_1.5.0/newt_1.5.0-1_amd64.deb
$ sudo dpkg -i newt_1.5.0-1_amd64.deb
See Checking the Installed Version of Newt to verify that you are using the installed version of newt.
Installing the Latest Release of Newt from a Source Package¶
If you are running Linux on a different architecture, you can build and install the latest release version of newt from source.
Download and unpack the newt source:
$ wget -P /tmp https://github.com/apache/mynewt-newt/archive/mynewt_1_5_0_tag.tar.gz $ tar -xzf /tmp/mynewt_1_5_0_tag.tar.gz
Run the build.sh to build the newt tool.
$ cd mynewt-newt-mynewt_1_5_0_tag $ ./build.sh $ rm /tmp/mynewt_1_5_0_tag.tar.gz
You should see the
newt/newt
executable. Move the executable to a bin directory in your PATH:If you previously built newt from the master branch, you can move the binary to your $GOPATH/bin directory.
$ mv newt/newt $GOPATH/bin
If you are installing newt for the first time and do not have a Go workspace set up, you can move the binary to /usr/bin or a directory in your PATH:
$ mv newt/newt /usr/bin
Checking the Installed Version of Newt¶
Check which newt you are using and that the version is the latest release version.
$ which newt /usr/bin/newt $ newt version Apache Newt version: 1.5.0
Get information about newt:
$ newt Newt allows you to create your own embedded application based on the Mynewt operating system. Newt provides both build and package management in a single tool, which allows you to compose an embedded application, and set of projects, and then build the necessary artifacts from those projects. For more information on the Mynewt operating system, please visit https://mynewt.apache.org/. Please use the newt help command, and specify the name of the command you want help for, for help on how to use a specific command Usage: newt [flags] newt [command] Examples: newt newt help [<command-name>] For help on <command-name>. If not specified, print this message. Available Commands: build Build one or more targets clean Delete build artifacts for one or more targets create-image Add image header to target binary debug Open debugger session to target help Help about any command info Show project info install Install project dependencies load Load built target to board mfg Manufacturing flash image commands new Create a new project pkg Create and manage packages in the current workspace resign-image Re-sign an image. run build/create-image/download/debug <target> size Size of target components sync Synchronize project dependencies target Commands to create, delete, configure, and query targets test Executes unit tests for one or more packages upgrade Upgrade project dependencies vals Display valid values for the specified element type(s) version Display the Newt version number Flags: -h, --help Help for newt commands -j, --jobs int Number of concurrent build jobs (default 4) -l, --loglevel string Log level (default "WARN") -o, --outfile string Filename to tee output to -q, --quiet Be quiet; only display error output -s, --silent Be silent; don't output anything -v, --verbose Enable verbose output when executing commands Use "newt [command] --help" for more information about a command.


{# templates/election/election_list.html #} {% extends "template_base.html" %} {% block title %}Elections{% endblock %} {% block content %} < Back to Admin Home
Retrieve all elections. VIP elections supported for 2016.
{% if election_list %}| Election Name | Date | Google Civic ID | ||
| {{ forloop.counter }} | {{ election.election_name }} | {{ election.election_day_text }} | {{ election.google_civic_election_id }} | (edit) |
(no elections found)
{% endif %} {% endblock %}


Semantic Form
Personal Information
First name :
*
Last name :
*
Email :
**
Birthdate :
*
Gender:
--Please choose an option--
Female
Male
*
SES (Socioeconomic Status)
*
NSE A
NSE B
NSE C
NSE D
NSE D
Your Hobbies
*
Playing video games
Reading
Watching T.V.
Family Time
Going to Movies
Exercise
Sleeping
Billiards
Profile picture :
*
Submit


Music Collector
Seen concerts
Format
Gender
Artists
Year
City
Tour
some
some
some
some
Festival
some
some
some
some


Please select the image below that you are most likely to consider purchasing, even if you're only considering it for the unsatisfying and ephemeral mental stimulation it provides in a hot, loud, and strange smelling environment.
Please select the image below that you are most likely to consider purchasing, even if you're only considering it for the unsatisfying and ephemeral mental stimulation it provides in a hot, loud, and strange smelling environment.


Smoky Mountain Marathon
Townsend TN/USA
Race Winners
(28 runnings)
23 Mar
2002
2:37:49
3:16:58
2001
---
---
26 Feb
2000
2:43:42
3:19:57
27 Feb
1999
2:42:24
3:05:52
28 Feb
1998
2:46:20
3:09:54
22 Feb
1997
2:46:14
3:06:59
24 Feb 1996
2:44:36
3:16:40
25 Feb
1995
2:37:11
3:10:19
26 Feb
1994
2:42:31
3:16:19
27 Feb
1993
2:32:40
3:02:52
22 Feb
1992
2:43:20
3:22:31
23 Feb
1991
2:39:43
3:10:26
24 Feb
1990
2:33:37
3:12:40
25 Feb
1989
2:40:20
3:03:50
27 Feb
1988
2:39:09
3:04:36
28 Feb 1987
2:47:13
3:15:27
01 Mar 1986
---
---
09 Feb 1985
2:40:47
3:18:12
11 Feb 1984
2:29:50
3:40:15
12 Feb 1983
2:33:23
3:10:02
13 Feb 1982
2:32:54
3:27:36
14 Feb 1981
2:32:13
2:56:21
09 Feb 1980
2:20:09
3:28:06
10 Feb 1979
2:19:21
3:10:22
11 Feb 1978
2:29:55
3:07:56
12 Feb 1977
2:32:26
14 Feb 1976
2:36:34
15 Feb 1975
2:36:35
16 Feb 1974
2:42:28
Notes: 1974 was the inaugural year. This race was held in Knoxville for 1974-76, in Oak Ridge for 1977-83, in Oliver
Springs for 1984-86, and in Townsend for 1987-2002.
Lance Winders (TN/USA)
Melanie Cox-2
not held
not held
Guy Garman (TN/USA)
Melanie Cox (TN/USA)
Matt Holappa (MI/USA)
Lisa Veniziano (MI/USA)
Bart Yasso (PA/USA)
Isabel Anguerar (COL)
Kent Bradbury (USA)
Lynn Mayer (USA)
Patrick Materna (USA)
Marsha Elkins (USA)
Matt Patout (USA)
Mary Preisel-2
John Cobb (USA)
Deborah Hill (USA)
Bryant Miller (USA)
Dina Spagnoli (USA)
Patrick Farrell (USA)
Tina Brashears (USA)
Mark Roselek (USA)
Mary Preisel (TN/USA)
Paul Okerberg (GA/USA)
Susan McKarns (USA)
Tom Possert (IN/USA)
Jill Johnston (USA)
Sam Shirley (USA)
Susan Shipley-3
Ray Krolewicz (USA)
Vicki Johnson-2
n/a
n/a
Steven Lynn (USA)
Janet Hancock (IN/USA)
Terry Coker (USA)
Brenda Anderson (USA)
George Brown (USA)
Kim Abel (USA)
John Weitz (USA)
Martha Huff (USA)
Andrew Schramm (OH/USA)
Susan Shipley-2
Tom Condit (USA)
Vicki Johnson (GA/USA)
Kerry Ragg (NZL)
Susan Shipley (USA)
Marshall Adams (USA)
Mary Lindahl (USA)
Mike Wood (USA)
Gregory Carter (USA)
Terry Gallagher (MA/USA)
Tom Potter (TN/USA)
Most Wins (1974/2002)
Men
No man has won more than once.
Women
3
Susan Shipley (USA)
1979,1981,1988
Prize Money (ADR
qualified runners)
No prize money has been awarded at this race.
Race Time Bias
(sec/km)
Insufficient data to calculate the race time bias.
Competitive Level
(1990-date)
Insufficient data to calculate the competitive level.
Quality Performances
Men <2:20 1
Women
None under 2:50
Last Updated on 15 Feb 2007
Contributors: Allan Morgan, Jack Leydig (1)


Below is a list of all the events in your chosen sport. Each event is numbered, and at the bottom of the page you can enter the number of the event(s) you'd like to add!
Enter the numbers of the events you'd like to add to your schedule, separated by a space - e.g. 1 5 32:


Warren Of Love is a shooter and resource management game with gore and humor elements in which the player has to manage a small rabbit warren ruled by a terrible queen rabbit. The player has to cultivate carrots, make them reproduce with the queen rabbit and liquidate them to generate fertilizer for the carrots.
It was a game that was developed over three days for Ludum Dare 41. I played functions of programmer and designer.
It was developed in collaboration with: Gonzalo Pérez, as programmer; Nuria Calzada, as 2D Artist; and Juan Fernandez, as 2D Artist and Animator.
We won Best Audio Award at ESNE Gamejamon 2018.
PC & Mac
Programmer and Designer
Unity Engine - C#


We will Find the Right Professional for You
Save Time
Tell us your funeral requirments are we'll find you best quotes
Save Money
We make sure you find the best quotes
Personalized Service
We tailor quotes to your needs - just tell us what you want
We will Find the Right Professional for You
Answer the questions
Use our template to make sure all your wishes are captured in one place
Enter your email address
Use our template to make sure all your wishes are captured in one place
Answer the questions
Use our template to make sure all your wishes are captured in one place
We will Find the Right Professional for You
We will Find the Right Professional for You
How much does the averege Funeral Cost?
For many people, it's hard to consider a funeral as anything resembling a "celebration", but this is something that humanist funerals perhaps achieve the most.
Humanist Funeral: A Unique Farewell and Celebration Of Life
For many people, it's hard to consider a funeral as anything resembling a "celebration", but this is something that humanist funerals perhaps achieve the most.
Humanist Funeral: A Unique Farewell and Celebration Of Life
For many people, it's hard to consider a funeral as anything resembling a "celebration", but this is something that humanist funerals perhaps achieve the most.


You must type email Invalid email
You must type phone
You must type password Password must be > 6 symbols
You must type code


digitalxshop's products
Oxygen Forensic Suite 2014 <IP_ADDRESS>0
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Other
Sold: 2
In stock: 85
Digital delivery
Ships worldwide
YOUTUBE BOT make more view on YOUTUBE
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Other
Sold: 5
In stock: 9
Digital delivery
Ships worldwide
PACK VIRUS BUILDER V2
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Malware
Sold: 0
In stock: 131
Digital delivery
Ships worldwide
BIG PACK FORENSIC
1.20
USD
digitalxshop (36)
Vendor Level 1
Category: Exploits
Sold: 1
In stock: 96
Digital delivery
Ships worldwide
Ebooks earn MONEY Carding-Hacks,etc
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: E-Books
Sold: 4
In stock: 118
Digital delivery
Ships worldwide
SCANNER & SNIFFER MEGA PACK
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Data & Scans
Sold: 3
In stock: 9
Digital delivery
Ships worldwide
MEGAPACK EBOOKS EARN MONEY
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: E-Books
Sold: 0
In stock: 976
Digital delivery
Ships worldwide
SQL INJECTION TOOLS PACK COLLECTION
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Data & Scans
Sold: 0
In stock: 99
Digital delivery
Ships worldwide
Ebooks-Hack,Unix,Tutos make money
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: E-Books
Sold: 0
In stock: 78
Digital delivery
Ships worldwide
Wondershare Dr.Phone PRENIUM VIP
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Software Keys
Sold: 9
In stock: 69
Digital delivery
Ships worldwide
Remote Administation Tools Hack Website
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Exploits
Sold: 2
In stock: 80
Digital delivery
Ships worldwide
Ebooks Money Making-Hacks-etc
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: E-Books
Sold: 0
In stock: 77
Digital delivery
Ships worldwide
Make Phishings pages
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Data & Scans
Sold: 2
In stock: 96
Digital delivery
Ships worldwide
Virus Maker DarkWeb EDITION
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Malware
Sold: 0
In stock: 43
Digital delivery
Ships worldwide
ULTIMATE CARDING VIDEOS GUIDE EASY & SEC...
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Data & Scans
Sold: 2
In stock: 97
Digital delivery
Ships worldwide
♚ MAKE PHISHING EASY SET UP ♚
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Malware
Sold: 2
In stock: 760
Digital delivery
Ships worldwide
EARN 300$ A DAY
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: E-Books
Sold: 0
In stock: 76
Digital delivery
Ships worldwide
PACK Vulnerability Scanners and Exploite...
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Exploit Kits
Sold: 1
In stock: 58
Digital delivery
Ships worldwide
EARN 300$ A DAY
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: E-Books
Sold: 0
In stock: 76
Digital delivery
Ships worldwide
Huge Crypter Pack V.2.9
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Crypters
Sold: 1
In stock: 675
Digital delivery
Ships worldwide
$ PACK Make MONEY BTC eBooks $
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: E-Books
Sold: 0
In stock: 78
Digital delivery
Ships worldwide
Win-UFO v6.0 Full
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Botnets
Sold: 0
In stock: 65
Digital delivery
Ships worldwide
Ebooks Paypal-programing-scams
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: E-Books
Sold: 0
In stock: 45
Digital delivery
Ships worldwide
♛ Silent Miner Builder 100% WORKING 20...
3.99
USD
digitalxshop (36)
Vendor Level 1
Category: Hacking
Sold: 2
In stock: 40
Digital delivery
Ships worldwide
Stealer Pack
1.00
USD
digitalxshop (36)
Vendor Level 1
Category: Malware
Sold: 3
In stock: 81
Digital delivery
Ships worldwide


cxxVariableDefinition
A container for child elements giving further information about a member variable. All elements within <cxxVariableDefinition> are optional.
cxxVariableDetail
A container for child elements giving detailed information about a member variable.
cxxVariableScopedName
Indicates the name of the immediately enclosing scope where a variable is declared.
cxxVariableStorageClassSpecifierExtern
Indicates that a variable is marked as storage class extern. This is so that a variable can be used in a separate source file (or “translation unit”) to the one where it is originally defined.


--- title: "Reproducing Schotter in R" date: 2020-01-01T21:13:14-05:00 output: blogdown::html_page: inster-after: false categories: ["R"] tags: ["Schotter","aRt","Generative"] ---
I have been captivated by creative coding and generative art for a while. After discovering some of the work by Antonio S.Chinchón and his blog Fronkonstin on using R and mathematics to create amazing art work, I decided to play around. Schotter (1968) is a famous piece by Georg Nees, a pioneer in computer graphics and probably one of the first creative coders.
To pay tribute to Georg, I decided to implement a chunk of code that would reproduce Schotter using R. There are probably several ways to code this algorithm and I am sure several people have done this before. My goal was to see if my current R knowledge could be use to program Schotter without checking other implementations and learn something on the way.
Here my thought process.
Nowadays I use ggplot2 for every visualization, so I decided to utilize its amazing graphical powers. I also used dplyr although we could easily not use it here.
library(ggplot2)
library(dplyr)
The easiest way to build a square in ggplot2 is probably using geom_rect, however I did not find a way to rotate the geometry, so I decided to go for a polygon (geom_polygon) and control the position of the 4 vertices outside ggplot. For that I created the following function:
square<-function(x0=1,y0=1, size=1, angle=0){
xor<-x0+size/2 #X origin (center of the square)
yor<-y0+size/2 #Y origin (center of the square)
tibble(
x=c(x0,x0+size,x0+size,x0),
y=c(y0,y0,y0+size,y0+size)
)%>%mutate(x2=(x-xor)*cos(angle)-(y-yor)*sin(angle)+xor, #For rotation
y2=(x-xor)*sin(angle)+(y-yor)*cos(angle)+yor) #for rotation
}
Where x0 and y0 control the position of lower left (or other depending on the axis orientation) vertex, size the length of the sides and angle the amount of rotation from the original position. An x and y for each vertex is set as a template relative to x0, y0 and size. In this way, we will be able to control the position of the square in the canvas. x2 and y2 are set as the rotated coordinates for x and y, respectively. Ultimately, we will use x2 and y2, that will be equal to x and y if angle is 0. I decided to generate new columns for the rotations so I can plot both, the original x, y and the rotated (I confess I had to brush up my trigonometry and google a few things for this).
ggplot(square())+
geom_polygon(aes(x=x, y=y))+
coord_fixed()# just so that axis are equally spaced
We have our first square!! We can now play with fill and color
ggplot(square())+
geom_polygon(aes(x=x, y=y), fill=NA, color='black')+
coord_fixed()
Let’s play with some parameters
ggplot(square(size=2,angle=pi/4))+#size 2 and rotate 45 degrees
geom_polygon(aes(x=x, y=y), fill=NA, color='black')+
geom_polygon(aes(x=x2, y=y2), fill=NA, color='red')+
coord_fixed()
Schotter can be seen as a matrix of squares. A simple way to iterate through a matrix is to nest a loop inside a loop such that one loop goes through the rows and another through the columns.
The original Schotter has 12 columns and 24 rows (that I counted)
n<-24*12
df.list<-list()
for (j in 1:24){ #iterate through the rows
for (i in 1:12){ #iterate through the columns
temp<-square(x=i, y=j) #create a square at column i and row j
df.list[[n]]<-temp #save the data frame with the square n on a list
n<-n-1
}
}
This chunk creates a data frame containing the x, y, x2 and y2 for 288 (24x12) squares, that we can plotted. To plot each square independently as we will need for later, we need to add a new geom_polygon layer for each square to a ggplot object. We could have done this in the previous loops, but in the course of this mini project I have learned that you can pass a list to ggplot. So, we can iterate though our list of square data frames using lapply and add a geom_polygon for each square (a bit slow on my friend).
ggplot() +
lapply(df.list, function(square_data) {
geom_polygon(data = square_data, aes(x = x2, y = y2), fill=NA, color='black')}
)+
coord_fixed()
Now we have the grid of squares. At this point I have decided to deal with the unnecessary elements of the plot. I generated a theme function such that I can easily change the background color.
theme_background<-function(color='white'){
theme(axis.ticks = element_blank(), axis.text = element_blank(),
panel.background = element_blank(), panel.grid = element_blank(),
plot.background = element_rect(fill = color),
strip.background = element_rect(fill=color),strip.text = element_blank(),
axis.title = element_blank(), legend.position = 'none')
}
ggplot() +
lapply(df.list, function(square_data) {
geom_polygon(data = square_data, aes(x = x2, y = y2), fill=NA, color='black')}
)+
coord_fixed()+
theme_background()
Generative art is define by wikipedia as:
Generative art refers to art that in whole or in part has been created with the use of an autonomous system. An autonomous system in this context is generally one that is non-human and can independently determine features of an artwork that would otherwise require decisions made directly by the artist.
An easy way to give autonomy to our code is by introducing randomness. As we can appreciate from Schotter, both the position and the angle of the squares seems to be more random and move away from the ‘calm’ stage as we move through the rows. We will add this to our nested loops by generating a random displacement and rotation for each square that increases by row.
n<-24*12
df.list<-list()
for (j in 1:24){ #iterate through the rows
for (i in 1:12){ #iterate through the columns
displace<-runif(1,-j,j) #a random number is generated from a uniform distribution with min=-j and max=j
rotate<-runif(1,-j,j) #random number to rotate the square
temp<-square(x=i+displace, y=j+displace, angle=rotate) #create a square at column i and row j displaced by displace
df.list[[n]]<-temp #save the data frame with the square n on a list
n<-n-1
}
}
ggplot() +
lapply(df.list, function(square_data) {
geom_polygon(data = square_data, aes(x = x2, y = y2), fill=NA, color='black')}
)+
coord_fixed()+
theme_background()
Ups! Something isn’t quite right (although I like it!). I think is because j, that controls how much displacement and rotation can be added get to be too big in respect to x and y. So, let’s control for that. For that I divided j by 40 in the case of displace and by 100 in the case of rotate. I found these numbers by playing around. I also flipped y axis.
n<-24*12
df.list<-list()
for (j in 1:24){ #iterate through the rows
for (i in 1:12){ #iterate through the columns
displace<-runif(1,-j/40,j/40) #a random number is generated from a uniform distribution with min=-j and max=j
rotate<-runif(1,-j/100,j/100) #random number to rotate the square
temp<-square(x=i+displace, y=j+displace, angle=rotate) #create a square at column i and row j displaced by displace
df.list[[n]]<-temp #save the data frame with the square n on a list
n<-n-1
}
}
ggplot() +
lapply(df.list, function(square_data) {
geom_polygon(data = square_data, aes(x = x2, y = y2), fill=NA, color='black')}
)+
coord_fixed()+
theme_background()+
scale_y_reverse()
And voila! we have coded a generative algorithm to produce something like Schotter. Because the randomness, every time we run the code, the result will be different.
Now we wrap the code in a function so that we can easily change parameters
Schotter<-function(ncol_s=12, nrow_s=24, control_dis=40,
control_rot=100, fill_s=NA, color_s='black', alpha_s=0.2,
back_color='white'){
n<-ncol_s*nrow_s
df.list<-list()
for (j in 1:nrow_s){
for (i in 1:ncol_s){
displace<-runif(1,-j/control_dis,j/control_dis)
rotate<-runif(1,-j/control_rot,j/control_rot)
temp<-square(x=i+displace, y=j+displace, angle=rotate)
temp$s<-rep(n)
df.list[[n]]<-temp
n<-n-1
}
}
ggplot() +
lapply(df.list, function(square_data) {
geom_polygon(data = square_data, aes(x = x2, y = y2),
alpha=alpha_s, fill=fill_s, color=color_s)}
)+
theme_background(color = back_color)+
coord_fixed()+
scale_y_reverse()
}
We can now play!
Schotter()
Schotter(fill='firebrick', color='orange', nrow_s = 48, control_dis = 20)
This is all for now. There are a few ways the code could be improved, but I am happy with the result and I have had fun and learned something new!


Please view this website in landscape mode. Thank you very much!
HOME
ABOUT
PROJECTS
CONTACT
HOME
ABOUT
PROJECTS
CONTACT
BACKGROUND STORY
Spending more time reading game discussions than playing, the Village Idiot is on a journey to defeat the evil Backlog.
Save the world with the power of friendship and search engines!
STATS
Khoa
Lv.99 Village Idiot
Customizable ocean model using Gerstner waves, cubemap reflection, and flow mapping
Multithreading AI flocking algorithm. Varied swim animations through shader and GPU instancing
Interior mapping shader to simulate the inside of a building with textures
HLSL/Cg shading practice
Puzzle-platformer with online Q-learning AI that adapts to player's behavior
Stealth game with behavior tree for AI and a focus on animation
PCA survey to determine factors which affect sales and reception of Steam indie games
2-player augmented reality game for smartphones. In charge of Vuforia API and feature feasibility
WebGL game built from scratch. In charge of particle system, 3D model pipeline and collision detection
CONT
Resume
Email


Aurelia is a modern front-end framework for building browser, mobile and desktop applications.
There are many technical advantages to using Aurelia. In this article, you will find a list of points we think are interesting. Taken together, there is no other SPA framework today that can match Aurelia.
Aurelia is open source platform with commercial backing. If your business is going to spend significant money building software, you want to do it on a platform that's committed to you as a customer. You want to be able to form a relationship with your technology provider to ensure that you and your developers have a solid platform upon which to build your business now and in the years to come.


Thymeleaf Page Layouts
Introduction
Usually websites share common page components like the header, footer, menu and possibly many more. These page components can be used by the same or different layouts. There are two main styles of organizing layouts in projects: include style and hierarchical style. Both styles can be easily utilized with Thymeleaf without losing its biggest value: natural templating.
Include-style layouts
In this style pages are built by embedding common page component code directly within each view to generate the final result. In Thymeleaf this can be done using Thymeleaf Standard Layout System:

...

The include-style layouts are pretty simple to understand and implement and in fact they offer flexibility in developing views, which is their biggest advantage. The main disadvantage of this solution, though, is that some code duplication is introduced so modifying the layout of a large number of views in big applications can become a bit cumbersome.
Hierarchical-style layouts
In hierarchical style, the templates are usually created with a parent-child relation, from the more general part (layout) to the most specific ones (subviews; e.g. page content). Each component of the template may be included dynamically based on the inclusion and substitution of template fragments. In Thymeleaf this can be done using: Thymeleaf Layout Dialect and Thymeleaf Tiles Integration.
The main advantages of this solution are the reuse of atomic portions of the view and modular design, whereas the main disadvantage is that much more configuration is needed in order to use them, so the complexity of the views is bigger than with Include Style Layouts which are more “natural” to use.
Example Application
All the samples and code fragments presented in this article are available on GitHub at https://github.com/thymeleaf/thymeleafexamples-layouts
Thymeleaf Standard Layout System
Thymeleaf Standard Layout System offers page fragment inclusion that is similar to JSP includes, with some important improvements over them:
Basic inclusion with th:include
and th:replace
Thymeleaf can include parts of other pages as fragments (whereas JSP only includes complete pages) using th:include
(will include the contents of the fragment into its host tag) or th:replace
(will actually substitute the host tag by the fragment’s). This allows the grouping of fragments into one or several pages. Look at the example. The home/homeNotSignedIn.html
template is rendered when the anonymous user enters the home page of our application.
Class thymeleafexamples.layouts.home.HomeController
@Controller
public class HomeController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index(Principal principal) {
return principal != null ? "home/homeSignedIn" : "home/homeNotSignedIn";
}
}
Template home/homeNotSignedIn.html
<!DOCTYPE html>

...

...

Static header

Home

Test

Welcome to the Spring MVC Quickstart application!
Get started quickly by signing up.

Sign up

© 2013 The Static Templates

...

You can open the file directly in a browser:
In the above example, we are building a page that consists of page header and page footer. In Thymeleaf all fragments can be defined in a single file (e.g. fragments.html
) or in a separate files, like in this particular case.
Let’s shortly analyze the inclusion statement:

...

The first part of the statement, fragments/header
, is a template name that we are referencing. This can be a file (like in this example) or it can reference to the same file either by using the this
keyword (e.g. this :: header
) or without any keyword (e.g. :: header
). The expression after double colon is a fragment selector (either fragment name or DOM selector). As you can also see, the header fragment contains a markup that is used for static prototyping only.
Header and footer are defined in the following files:
Template fragments/header.html
<!DOCTYPE html>

...

<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">

</button>
My project

Home

Messages

Tasks

Sign in

Logout

…which we can open directly in a browser:
And template fragments/footer.html
<!DOCTYPE html>

...

© 2013 Footer

Note how that the referenced fragments are specified with th:fragment
attributes. This way we can define multiple fragments in one template file, as it was mentioned earlier.
What is important here, is that all the templates can still be natural templates and can be viewed in a browser without a running server.
Including with DOM Selectors
In Thymeleaf, fragments don’t need to be explicitly specified using th:fragment
at the page they are extracted from. Thymeleaf can select an arbitrary section of a page as a fragment (even a page living on an external server) by means of its DOM Selector syntax, similar to XPath expressions and CSS selectors.

...

The above code will include a paragraph with class="notice"
from thymeleaf.org
. In order to make it happen, the template engine must be configured with UrlTemplateResolver
:
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(templateResolver());
templateEngine.addTemplateResolver(urlTemplateResolver());
templateEngine.addDialect(new SpringSecurityDialect());
return templateEngine;
}
For the DOM Selector syntax reference checkout this section in Thymeleaf documentation: DOM Selector syntax.
Using expressions
In templatename :: domselector
, both templatename
and domselector
can be fully-featured expressions. In the below example we want to include different fragments depending on a condition. If the authenticated user is an Admin, we will show a different footer than for a regular user:

© 2013 The Static Templates

fragments/footer.html
has slightly changed, as we need to have two footers defined:
<!DOCTYPE html>

...

© 2013 Footer

© 2013 Admin Footer

Parameterized inclusion
Fragments can specify arguments, just like methods. Whenever they are explicitly specified with a th:fragment
attribute, they can provide an argument signature that can then be filled in with arguments from the calling th:include
or th:replace
attributes.
Examples talk best. We can use parameterized inclusion in many contexts but one real life context is displaying messages on different pages of our application after successful form submission. Let’s look at the signup process in the application:
@RequestMapping(value = "signup", method = RequestMethod.POST)
public String signup(@Valid @ModelAttribute SignupForm signupForm,
Errors errors, RedirectAttributes ra) {
if (errors.hasErrors()) {
return SIGNUP_VIEW_NAME;
}
Account account = accountRepository.save(signupForm.createAccount());
userService.signin(account);
// see /WEB-INF/i18n/messages.properties and /WEB-INF/views/homeSignedIn.html
MessageHelper.addSuccessAttribute(ra, "signup.success");
return "redirect:/";
}
As you can see, after a successful signup the user will be redirected to the home page with a flash attribute filled in. We want to create a reusable and parameterized fragment. This can be done as follows:
<!DOCTYPE html>

...

<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
Test

The above alert
fragment takes two arguments: type
and message
. The type
is the message type used for styling a message whereas the message
is a text that will be shown to the user. If we wanted, we could have even ensured that arguments existed or met certain conditions using a th:assert
attribute.
In order to include alert
in any template we may write the following code (please note, that the value of a variable can be an expression):

...

Parameterized fragments let developers create functional-like fragments that are easier to reuse. Read more about parameterized fragments in the Thymeleaf documentation: Parameterizable fragment signatures.
Fragment inclusion from Spring @Controller
Fragments can be directly specified from a Spring MVC controller, i.e. signup :: signupForm
; which can be useful for AJAX controllers that return only a small fragment of HTML to the browser. In the example below, the signup form fragment will be loaded upon AJAX request and the whole signup view - on regular request:
@RequestMapping(value = "signup")
public String signup(Model model,
@RequestHeader("X-Requested-With") String requestedWith) {
model.addAttribute(new SignupForm());
if (AjaxUtils.isAjaxRequest(requestedWith)) {
return SIGNUP_VIEW_NAME.concat(" :: signupForm");
}
return SIGNUP_VIEW_NAME;
}
The fragment is defined in signup/signup.html
:
<!DOCTYPE html>

...

<form method="post"
th:action="@{/signup}" th:object="${signupForm}" th:fragment="signupForm">
...
</form>

The above fragment is loaded when a new user wants to signup from a home page. The modal dialog will be shown upon clicking Signup
button and the content will be loaded via AJAX call (see home/homeNotSignedIn.html
).
References
Please check Thymeleaf documentation that describes this topic very thoroughly. You can find it here: Template Layout.
Natural templating is greatly explained in Bringing Thymeleaf and Natural Templates to the Spring PetClinic article in And what about the Natural Templates thing?
chapter. The example can be found on GitHub.
Thymol
When a Thymeleaf template is used as a static prototype, we cannot see the fragments we are including using the th:include/th:replace
host tags. We can only see the fragments aside, opening their own template documents.
However, there is a way to see the real fragments included into our pages while prototyping. This can be done using Thymol, an unofficial JavaScript library that is an implementation of Thymeleaf’s standard fragment inclusion functionality, providing static support for some Thymeleaf attributes like th:include
or th:replace
, conditional display with th:if
/th:unless
, etc.
As Thymol’s author states: Thymol was created in order to provide a more accurate static representation of Thymeleaf’s dynamic templating capabilities by offering support for Thymeleaf attributes through a statically accessible javascript library
Thymol documentation and examples can be found on the official project site here: Thymol at SourceForge.net.
Thymeleaf Tiles Integration
The Apache Tiles 2 Dialect was created in order to provide a more comfortable migration path to all those developers who are currently using Apache Tiles 2 with JSP. Tiles is one of the most used Java templating frameworks, and a lot of JSP users are used to thinking in terms of Tiles when it comes to layout.
Tiles dialect offers the possibility to go on doing layouts in the same way with Thymeleaf! In addition, The Tiles dialect allows mixing JSPs and Thymeleaf, so that migrating JSP applications gets much easier.
Configuration
To get started with Tiles Dialect we need to include it into the pom.xml
. The dependency is:
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-tiles2</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>

<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-tiles2-spring4</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
We will also need to configure the integration by adding a view resolver bean that will resolve Tiles views, a Tiles Configurer bean and of course the additional dialect to our template engine. Let’s go through it really quickly:
Tiles view resolver
This view resolver will resolve Tiles views. We will configure it to have lower precedence, meaning that it will be used when the previous one cannot resolve the views. We also need to set the viewClass
property of the resolver to ThymeleafTilesView.class
.
@Bean
public ViewResolver tilesViewResolver() {
ThymeleafViewResolver vr = new ThymeleafViewResolver();
vr.setTemplateEngine(templateEngine());
vr.setViewClass(ThymeleafTilesView.class);
vr.setCharacterEncoding("UTF-8");
vr.setOrder(Ordered.LOWEST_PRECEDENCE);
return vr;
}
Basic view resolver
The basic view resolver will not resolve the views whose names start with message/*
– those are our Tiles-based views, and they will be resolved by the previous ViewResolver
bean. This is very important, if we want to have several view resolvers in the application working alongside:
@Bean
public ViewResolver thymeleafViewResolver() {
ThymeleafViewResolver vr = new ThymeleafViewResolver();
vr.setTemplateEngine(templateEngine());
vr.setCharacterEncoding("UTF-8");
vr.setOrder(Ordered.HIGHEST_PRECEDENCE);
// all message/* views will not be handled by this resolver;
vr.setExcludedViewNames(new String[]{"message/*"});
return vr;
}
Template Engine
We need to add the Tiles Dialect
to the template engine:
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
...
templateEngine.addDialect(new TilesDialect());
return templateEngine;
}
Tiles Configurer
The Tiles configurer bean will configure the Tiles container by adding Tiles definition files to it:
@Bean
public ThymeleafTilesConfigurer tilesConfigurer() {
ThymeleafTilesConfigurer ttc = new ThymeleafTilesConfigurer();
ttc.setDefinitions(new String[]{"/WEB-INF/views/message/tiles-defs.xml"});
return ttc;
}
The complete configuration of the application lives in WebMvcConfig
, a Spring java configuration class.
Tiles definition
The Tiles definition is a standard XML file. In our example it looks like this:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
"http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>

<definition name="message/*" template="message/layout">
<put-attribute name="title" value="title/{1}"/>
<put-attribute name="content" value="content/{1}"/>
</definition>

<definition name="title/*" template="message/{1} :: title"/>
<definition name="content/*" template="message/{1} :: content"/>
</tiles-definitions>
In the above example, the message/*
views will use a message/layout.html
. In the layout file we use two Tiles attributes that will be evaluated to message/{1} :: title
and message/{1} :: content
fragments accordingly.
The layout file reads as follows:
<!DOCTYPE html>

<title tiles:include="title">Title</title>
...

Static header

Home

Static content for prototyping purposes only

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Praesent scelerisque neque neque, ac elementum quam dignissim interdum.
Phasellus et placerat elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Praesent scelerisque neque neque, ac elementum quam dignissim interdum.
Phasellus et placerat elit.

© 2014 The Static Templates

We can see several things in the above example. Firstly, the layout is a natural template and it is a valid UI design prototype (in this example the layout is very simple):
Secondly, we can mix standard layout (th:include/th:replace
) with Tiles dialect. Thirdly, Thymeleaf has ability to include a template fragment instead of the whole template.
Thymeleaf Layout Dialect
Layout Dialect gives people the possibility of using hierarchical approach, but from a Thymeleaf-only perspective and without the need to use external libraries, like Apache Tiles. Thymeleaf Layout Dialect uses layout/decorator templates to style the content, as well as it can pass entire fragment elements to included pages. Concepts of this library are similar to SiteMesh or JSF with Facelets.
Configuration
To get started with Layout Dialect we need to include it into the pom.xml
. The dependency is:
<dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
<version>1.2.1</version>
</dependency>
We will also need to configure the integration by adding an additional dialect to our template engine:
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
...
templateEngine.addDialect(new LayoutDialect());
return templateEngine;
}
No other changes are required.
Creating a layout
The layout file is defined in /WEB-INF/views/task/layout.html
:
<!DOCTYPE html>

<title layout:title-pattern="$DECORATOR_TITLE - $CONTENT_TITLE">Task List</title>
...

...

Static content for prototyping purposes only

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Praesent scelerisque neque neque, ac elementum quam dignissim interdum.
Phasellus et placerat elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Praesent scelerisque neque neque, ac elementum quam dignissim interdum.
Phasellus et placerat elit.

© 2014 The Static Templates

We can open the file directly in a browser:
The above file is our decorator for content pages we will be creating in the application. The most important thing about the above example is layout:fragment="content"
. This is the heart of the decorator page (layout). You can also notice, that header and footer are included using Standard Thymeleaf Layout System.
The content page looks as follows (WEB-INF/views/task/list.html
):
<!DOCTYPE html>

<title>Task List</title>
...

ID
Title
Text
Due to

No tasks

1
Title ...
Text ...
July 11, 2012 2:17:16 PM CDT

And in the browser it looks like this:
Content of this task/list
view will be decorated by the elements of task/layout
view. Please note layout:decorator="task/layout"
attribute in
element. This attribute signals to the Layout Dialect which layout should be used to decorate given view.
And what about Natural Templates using the Layout Dialect? Again, possible! In just the same way as with Tiles Dialect, you simply need to add some prototyping-only markup around the fragments being included in your templates and that’s it!
Include style approach with Layout Dialect
Layout Dialect supports not only hierarchical approach – it also provides a way to use it in an include-style way (layout:include
). Comparing with standard Thymeleaf includes, with Layout Dialect you can pass HTML elements to the included page. Useful if you have some HTML that you want to reuse, but whose contents are too complex to pass by means of parameterized inclusion in standard Thymeleaf dialect.
This is an example of a reusable alert fragment using layout:fragment
(task/alert.html
):
<!DOCTYPE html>

<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>

Alert header

Default alert content

The calling of the above fragment may look as follows (task/list.html
):

This is a simple list of tasks!

Or:

Some text

<button type="button" class="btn btn-danger">Take this action</button>
<button type="button" class="btn btn-default">Or do this</button>

In this case, the entire alert-content
of task/alert
(/WEB-INF/views/task/alert.html
) template will be replaced by custom HTML above.
References
Please check out the Layout Dialect documentation that describes this topic very thoroughly. You will definitively find some more advanced examples than in this article. You can find the documentation here: Layout Dialect.
Other Layout Options
For some of the developers neither of the solutions presented before is sufficient. Thymeleaf Standard Layout System is not enough and using external libraries is not an option. In that case, the custom solution may be the way to go.
Thymeleaf Custom Layout
One of such a solutions is well described in this blog post: Thymeleaf template layouts in Spring MVC application with no extensions. The idea of this solution is really simple. Let’s visualize that with an example:
Example view file (1):
<!DOCTYPE html>

...

Hello User!
Welcome to the Spring MVC Quickstart application!

And the layout file (2):
<!DOCTYPE html>

...

Header

Page Content

Footer

What will happen?
- Controllers return view names, that translate to single Thymeleaf view file (1)
- Before rendering the view, the original
viewName
attribute inModelAndView
object is replaced with with the name of the layout view and the originalviewName
becomes an attribute inModelAndView
. - The layout view (2) contains several include elements:

Page Content

- The actual view file contains fragments, pulled by the template which embeds the actual view
The project can be found on GitHub.
Future Plans
And finally, what’s the future of Thymeleaf layouts? There are some really interesting things planned:
Fragment-as-a-parameter inclusion
Current Thymeleaf fragments allow passing arguments, but these arguments are normally just small pieces of text. It is not really comfortable to pass a complete HTML, as it is possible with hierarchical layout systems (including the Layout Dialect).
In the future, it will be possible to select and pass entire subtrees of markup as arguments. See this ticket for more details.
Decoupled templates
In order to make the communication between UI designers and developers easier, Thymeleaf will offer the possibility to separate HTML markup and Thymeleaf processors into separate files as an option. See this ticket for more details.
Tiles 3 support
The Apache Tiles integration module currently only supports Tiles 2 integration. Tiles 3, although seems to be very alike Tiles 2, has a different architecture and therefore a separate module will be created in the future.
Summary
In this article, we described many ways of achieving the same: layouts. You can build layouts using Thymeleaf Standard Layout System that is based on include-style approach. You can use Apache Tiles with Tiles Dialect, if you are either migrating from Tiles or if Tiles is your choice. You also have powerful Layout Dialect, that uses decorator pattern for working with layout files. Finally, you can easily create your own solution. Hopefully, this article gives you some more insights on the topic and you will find your preferred approach depending on your needs.


Understand how works scope
A scope in programming language is an environment where we can access variables, functions..
In Javascript if, for, while.. don't create a scope. So in a script the global scope define all
variables written directly on the document root, in our example A variable is in the global scope.
The scope only have acess to variables define inside his own scope, for example we can't access to
the b variable in the global scope because she's in the first function scope. But we can acess to a
'parent' scope, for example we can access inside the first function to the A variable
which is define in the global scope.
Example with scope
- We create a A variable in the
global scope
.
- We call first() function which is declare in the
global scope
.
- We create a new scope by creating the
first() function
.
- We add in the first() function scope a B variable which is in the
first() scope
.
- We call the second() function which is declare in the
first() scope
.
- We create a new scope by creating the
second() function
.
- We add in the second() function scope a C variables which is define in the
second() scope
.
- We call the third() function who is available because she's in the
parent global scope
.
- Back in the global scope we create a new scope who is a
function third()
.
- We create in the third() scope a D variable which is define in the
third() scope
.
- In this example we have an error because we try to call a variable who is C
in the
third() scope
but this variable is define in the second() scope
so it's
impossible, because we know that we can only access variable, functions... in the parent scope.
The solution !!
- If we don't want any errors
we should try to acess D or A variables.


In order to compute cosine, we have to evaluate vector components at first. There are a number of probability/statistical weighting models but for now, ArangoSearch provides two, probably the most famous schemes:
Under the hood both models rely on 2 main components:
Term frequency (TF) – in the simplest case defined as the number of times that term
t occurs in document
d. Inverse document frequency (IDF) is a measure of how much information the word provides, i.e. whether the term is common or rare across all documents.
In AQL both weighting methods are exposed via corresponding functions:
BM25,
TFIDF. Note that both function accept AQL corresponding loop variable as the first argument. In 3.4 these functions have the following limitation: that’s not possible to use evaluated score value in generic AQL expressions (e.g. filters or calculations), the aforementioned functions must be used in SORT statement related to an ArangoSearch view.
Let’s imagine that we’re extremely interested in a nice sci-fi movie. I want to find something that matches the following set of keywords: “amazing, action, world, alien, sci-fi, science, documental, galaxy”:
|
|
db._query("FOR d IN v_imdb SEARCH ANALYZER(d.description IN TOKENS('amazing action world alien sci-fi science documental galaxy', 'text_en'), 'text_en') LIMIT 10 RETURN d")
|
Without any ranking I got
“The Prime of Miss Jean Brodie” in the very beginning of result set. That’s is definitely not what I did want to watch. Nevertheless, you may get different results, that’s non-deterministic since we haven’t specified any sorting condition there.
Let’s rank result with
VSM and
BM25 algorithm:
|
|
db._query("FOR d IN v_imdb SEARCH ANALYZER(d.description IN TOKENS('amazing action world alien sci-fi science documental galaxy', 'text_en'), 'text_en') SORT BM25(d) LIMIT 10 RETURN d")
|
After inspecting result set you note that first place is taken by
“Religulous” movie. That’s again something that is not particularly relevant to our original query. The reason is the following: in the query above, we didn’t explicitly specified sorting order. Default value is ASC which means that we implicitly asked ArangoDB to show us the
most irrelevant results first. Let’s fix it by explicitly specifying our intention to get the most relevant docs in the beginning of result set:
|
|
db._query("FOR d IN v_imdb SEARCH ANALYZER(d.description IN TOKENS('amazing action world alien sci-fi science documental galaxy', 'text_en'), 'text_en') SORT BM25(d) DESC LIMIT 10 RETURN d")
|
And now the most relevant document is
“AVPR: Aliens vs. Predator – Requiem”. Yes, that’s definitely better.


--- layout: default published: true ---
Web3Templates is a collection of high quality conversion oriented beautiful landing page templates for any purposes. Signup for Beta Access now and get 50% OFF on Premium Membership for life!


The host computer containing this web page has been found, but can’t be contacted.
Try clicking “Reload” in the "View" menu to see if
the host computer will send you the page (sometimes it’s just
a matter of timing to get your request for the web page to the
host computer at the right moment).
If you keep getting this message instead, you will probably have to wait until later, when the host computer is turned back on or becomes less busy.


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.joonegap.WeightGene
This Gene is used to model individual weights (or bias') in the neural network.
It can take any double
value, and in all respects
is very similar to a DoubleGene
, except that it is
initialised with a uniform random distribution ranging over [-0.5, 0.5]
| Field Summary | |
protected Configuration |
m_activeConfiguration
The current active configuration that is in use. |
protected java.lang.Double |
m_value
References the internal double value (allele) of this Gene. |
| Constructor Summary | |
WeightGene()
Constructs a new DoubleGene with default settings. |
|
WeightGene(Configuration a_activeConfiguration)
Constructs a new DoubleGene according to the given active configuration. |
| Method Summary | |
void |
cleanup()
|
int |
compareTo(java.lang.Object other)
|
boolean |
equals(java.lang.Object other)
|
java.lang.Object |
getAllele()
|
java.lang.String |
getPersistentRepresentation()
|
int |
hashCode()
|
Gene |
newGene(Configuration a_activeConfiguration)
|
void |
setAllele(java.lang.Object a_newValue)
|
void |
setToRandomValue(RandomGenerator a_numberGenerator)
|
void |
setValueFromPersistentRepresentation(java.lang.String a_representation)
|
java.lang.String |
toString()
|
| Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Field Detail |
protected java.lang.Double m_value
protected transient Configuration m_activeConfiguration
| Constructor Detail |
public WeightGene()
public WeightGene(Configuration a_activeConfiguration)
a_activeConfiguration
- The current active configuration.| Method Detail |
public Gene newGene(Configuration a_activeConfiguration)
public void setAllele(java.lang.Object a_newValue)
public java.lang.String getPersistentRepresentation() throws java.lang.UnsupportedOperationException
java.lang.UnsupportedOperationException
public void setValueFromPersistentRepresentation(java.lang.String a_representation) throws UnsupportedRepresentationException
UnsupportedRepresentationException
public java.lang.Object getAllele()
public void setToRandomValue(RandomGenerator a_numberGenerator)
public int compareTo(java.lang.Object other)
public boolean equals(java.lang.Object other)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object
public void cleanup()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Reports on any instance of unnecessary parentheses.
Parentheses are considered unnecessary if the evaluation order of an expression
remains unchanged if the parentheses are removed.
Use the checkbox below to ignore parentheses which help to clarify an expression
with several operators.


Classic Computer Science Problems in JavaScript
Chapter 1: Small Problems
Chapter 2: Search Problems
Chapter 3: Constraint-satisfaction Problems
Chapter 4: Graph Problems
Chapter 5: Genetic Algprithms
Chapter 6: kMeans Clustering
Chapter 7: Fairly Simple Neural Networks
Chapter 8: Adversarial Search
Chapter 9: Miscellaneous Problems


SudoVirtualCardsError
public enum SudoVirtualCardsError : Error, Equatable, LocalizedError
Errors that occur in SudoVirtualCards.
-
Configuration supplied to
DefaultSudoVirtualCardsClient
is invalid.Declaration
Swift
case invalidConfig
-
User is not signed in.
Declaration
Swift
case notSignedIn
-
Failed to create a funding source.
Declaration
Swift
case fundingSourceCreationFailed
-
Local key pair failure.
Declaration
Swift
case localKeyPairFailure
-
No ownership proof is available.
Declaration
Swift
case noOwnershipProofAvailable
-
Failed to provision a card.
Declaration
Swift
case provisionFailed
-
Failed to setup a funding source.
Declaration
Swift
case setupFailed
-
Failed to complete the funding source process.
Declaration
Swift
case completionFailed
-
Failed to refresh the funding source.
Declaration
Swift
case refreshFailed
-
Failed to cancel.
Declaration
Swift
case cancelFailed
-
Failed to update.
Declaration
Swift
case updateFailed
-
Failed to retrieve.
Declaration
Swift
case getFailed
-
Algorithm is unrecognized.
Declaration
Swift
case unrecognizedAlgorithm(_: String)
-
Funding source type is unrecognized - check you have the latest version of the SDK
Declaration
Swift
case unrecognizedFundingSourceType(_: String)
-
Transaction type is unrecognized.
Declaration
Swift
case unrecognizedTransactionType
-
The card id supplied could not be found.
Declaration
Swift
case cardNotFound
-
The card used is in a bad/unsupported state.
Declaration
Swift
case cardStateError
-
The transaction id supplied could not be found.
Declaration
Swift
case transactionNotFound
-
There is a currency mismatch between inputs.
Declaration
Swift
case currencyMismatch
-
The velocity for the card is exceeded.
Declaration
Swift
case velocityExceeded
-
The entitlement for the card is exceeded.
Declaration
Swift
case provisionalFundingSourceNotFound
-
The supplied fundingSourceId does not match any recorded funding source.
Declaration
Swift
case fundingSourceNotFound
-
The funding source is not currently active and therefore unavailable to be used.
Declaration
Swift
case fundingSourceNotActive
-
A new funding source was requested to be created but it is using the same credit card (same card number) as an existing active funding source.
Declaration
Swift
case duplicateFundingSource
-
Currency provided is not supported.
Declaration
Swift
case unsupportedCurrency
-
The funding source cannot be completed as its setup has not completed successfully.
Declaration
Swift
case fundingSourceNotSetup
-
The funding source completion data is invalid. This can occur when there is a mismatch between the completion data and the recorded setup data.
Declaration
Swift
case fundingSourceCompletionDataInvalid
-
The funding source or provisional funding source is in an invalid state for the requested operation
Declaration
Swift
case fundingSourceStateError
-
The funding source failed attempts to validate e.g. as determined when making an initial authorization. Reasons for being unacceptable include insufficient funds if a preauthorization is performed, the funding source is high risk and other reasons.
Declaration
Swift
case unacceptableFundingSource
-
Returned on funding source completion when further user interaction is required to complete the funding source setup
Declaration
Swift
case fundingSourceRequiresUserInteraction(_: FundingSourceInteractionData)
-
Indicates the requested operation failed because the user account is locked.
Declaration
Swift
case accountLocked
-
Indicates that the request operation failed due to authorization error. This maybe due to the authentication token being invalid or other security controls that prevent the user from accessing the API.
Declaration
Swift
case notAuthorized
-
Indicates API call failed due to it exceeding some limits imposed for the API. For example, this error can occur if the vault size was too big.
Declaration
Swift
case limitExceeded
-
Indicates that the user does not have sufficient entitlements to perform the requested operation.
Declaration
Swift
case insufficientEntitlements
-
Indicates the version of the vault that is getting updated does not match the current version of the vault stored in the backend. The caller should retrieve the current version of the vault and reconcile the difference.
Declaration
Swift
case versionMismatch
-
Indicates that an internal server error caused the operation to fail. The error is possibly transient and retrying at a later time may cause the operation to complete successfully
Declaration
Swift
case serviceError
-
Indicates that there were too many attempts at sending API requests within a short period of time.
Declaration
Swift
case rateLimitExceeded
-
Operation failed due to an invalid request. This maybe due to the version mismatch between the client and the backend.
Declaration
Swift
case invalidRequest
-
Indicates that the request failed due to connectivity, availability or access error.
Declaration
Swift
case requestFailed(response: HTTPURLResponse?, cause: Error?)
-
Indicates that a GraphQL error was returned by the backend.
Declaration
Swift
case graphQLError(description: String)
-
Indicates that a fatal error occurred. This could be due to coding error, out-of-memory condition or other conditions that is beyond control of
SudoIdentityVerificationClient
implementation.Declaration
Swift
case fatalError(description: String)
-
Backend environment error occurred.
Declaration
Swift
case environmentError
-
Returned when JSON web tokens submitted are rejected because they: 1. fail signature verification 2. is not an appropriate token for the invoker user to be submitting (e.g. user id doesn’t match) 3. is a resource reference token for resource type unrecognized by the service to which the token has been submitted
Declaration
Swift
case invalidToken
-
Returned when an operation fails because the user’s level of identity verification is insufficient.
Declaration
Swift
case identityInsufficient
-
Returned when an operation fails due to lack of verification.
Declaration
Swift
case identityNotVerified
-
Returned if specified time zone is not recognized.
Declaration
Swift
case unknownTimezone
-
Returned when the user has no entitlements associated with them
Declaration
Swift
case noEntitlements
-
An internal error has occurred and will need to be resolved by Anonyome.
Declaration
Swift
case internalError(_: String?)
-
Returned if an API argument is not valid or inconsistent with other arguments.
Declaration
Swift
case invalidArgument(_: String?)
-
Returned when the input was not in the expected format.
Declaration
Swift
case decodingError
-
Service is currently incorrectly generating this error with a Code suffix. Prepare for that to be fixed
Declaration
Swift
public static func == (lhs: SudoVirtualCardsError, rhs: SudoVirtualCardsError) -> Bool
-
Declaration
Swift
public var errorDescription: String? { get }