A Path is a list of Path elements which represents a path to a file, directory or symbolic link
Path elements are non-empty strings. The exact set of valid strings MAY be specific to a particular FileSystem implementation.
Path elements MUST NOT be in {"", ".", "..", "/"}.
Path elements MUST NOT contain the characters {'/', ':'}.
Filesystems MAY have other strings that are not permitted in a path element.
When validating path elements, the exception InvalidPathException SHOULD be raised when a path is invalid [HDFS]
A path element pe is invalid if any character in it is in the set of forbidden characters, or the element as a whole is invalid
forall e in pe: not (e in {'/', ':'}) not pe in {"", ".", "..", "/"}
A Path p is valid if all path elements in it are valid
def valid-path(path): forall pe in path: valid-path-element(pe)
The set of all possible paths is Paths; this is the infinite set of all lists of valid path elements.
The path represented by empty list, [] is the root path, and is denoted by the string "/".
The partial function parent(path:Path):Path provides the parent path can be defined using list slicing.
def parent(pe) : pe[0:-1]
Preconditions:
path != []
The last Path Element in a Path is called the filename.
def filename(p) : p[-1]
Preconditions:
p != []
This definition handles absolute paths but not relative ones; it needs to be reworked so the root element is explicit, presumably by declaring that the root (and only the root) path element may be [‘/’].
Relative paths can then be distinguished from absolute paths as the input to any function and resolved when the second entry in a two-argument function such as rename.
A filesystem FS contains a set of directories, a dictionary of paths and a dictionary of symbolic links
(Directories:Set[Path], Files:[Path:List[byte]], Symlinks:Set[Path])
Accessor functions return the specific element of a filesystem
def FS.Directories = FS.Directories def files(FS) = FS.Files def symlinks(FS) = FS.Symlinks def filenames(FS) = keys(FS.Files)
The entire set of a paths finite subset of all possible Paths, and functions to resolve a path to data, a directory predicate or a symbolic link:
def paths(FS) = FS.Directories + filenames(FS) + FS.Symlinks)
A path is deemed to exist if it is in this aggregate set:
def exists(FS, p) = p in paths(FS)
The root path, “/”, is a directory represented by the path [“/”], which must always exist in a filesystem.
def isRoot(p) = p == ["/"]. forall FS in FileSystems : ["/"] in FS.Directories
A path MAY refer to a directory in a FileSystem:
isDir(FS, p): p in FS.Directories
Directories may have children, that is, there may exist other paths in the FileSystem whose path begins with a directory. Only directories may have children. This can be expressed by saying that every path’s parent must be a directory.
It can then be declared that a path has no parent in which case it is the root directory, or it MUST have a parent that is a directory:
forall p in paths(FS) : isRoot(p) or isDir(FS, parent(p))
Because the parent directories of all directories must themselves satisfy this criterion, it is implicit that only leaf nodes may be files or symbolic links:
Furthermore, because every filesystem contains the root path, every filesystem must contain at least one directory.
A directory may have children:
def children(FS, p) = {q for q in paths(FS) where parent(q) == p}
There are no duplicate names in the child paths, because all paths are taken from the set of lists of path elements. There can be no duplicate entries in a set, hence no children with duplicate names.
A path D is a descendant of a path P if it is the direct child of the path P or an ancestor is a direct child of path P:
def isDescendant(P, D) = parent(D) == P where isDescendant(P, parent(D))
The descendants of a directory P are all paths in the filesystem whose path begins with the path P -that is their parent is P or an ancestor is P
def descendants(FS, D) = {p for p in paths(FS) where isDescendant(D, p)}
A path MAY refer to a file that has data in the filesystem; its path is a key in the data dictionary
def isFile(FS, p) = p in FS.Files
The length of a path p in a filesystem FS is the length of the data stored, or 0 if it is a directory:
def length(FS, p) = if isFile(p) : return length(data(FS, p)) else return 0
The home directory of a user is an implicit part of a filesystem, and is derived from the userid of the process working with the filesystem:
def getHomeDirectory(FS) : Path
The function getHomeDirectory returns the home directory for the Filesystem and the current user account. For some FileSystems, the path is ["/","users", System.getProperty("user-name")]. However, for HDFS, the username is derived from the credentials used to authenticate the client with HDFS. This may differ from the local user account name.
A path cannot refer to more than one of a file, a directory or a symbolic link
FS.Directories ^ keys(data(FS)) == {} FS.Directories ^ symlinks(FS) == {} keys(data(FS))(FS) ^ symlinks(FS) == {}
This implies that only files may have data.
This condition is invariant and is an implicit postcondition of all operations that manipulate the state of a FileSystem FS.
The data is encrypted if the file is in encryption zone.
def inEncryptionZone(FS, path): bool
The nature of the encryption and the mechanism for creating an encryption zone are implementation details not covered in this specification. No guarantees are made about the quality of the encryption. The metadata is not encrypted.
All files and directories under a directory in an encryption zone are also in an encryption zone.
forall d in directories(FS): inEncyptionZone(FS, d) implies forall c in children(FS, d) where (isFile(FS, c) or isDir(FS, c)) : inEncyptionZone(FS, c)
For all files in an encrypted zone, the data is encrypted, but the encryption type and specification are not defined.
forall f in files(FS) where inEncyptionZone(FS, f): isEncrypted(data(f))
Not covered: hard links in a FileSystem. If a FileSystem supports multiple references in paths(FS) to point to the same data, the outcome of operations are undefined.
This model of a FileSystem is sufficient to describe all the FileSystem queries and manipulations excluding metadata and permission operations. The Hadoop FileSystem and FileContext interfaces can be specified in terms of operations that query or change the state of a FileSystem.


{% extends 'base.html' %} {% block content %}
With the help of Natural Language Processing get the emotions of your customer and different articles and understand the overal sentiment of the same.


Test Plan for: Begs Mobile app Component
Persona Type Tested: Primary, Secondary, Negative
Context: A meeting room from the office for the primary, and at home for the rest.
Duration:15 minutes
Complete the following before starting: Greeting and Consent & User Background Information.
Overall Objectives
- What is the user's opinion about the Begs mobile application.
- How intuitive the recommendations are.
Scenario
In the first scenario, the user has the first interaction with the mobile application. This first interaction will have a welcome page, she/he will can select his/her preferences or/and allergies and after that will be redirect to the main page. Will find the main categories and recommendations used, as well as the main menu of the application. It will also have a product selected, scanned with QR code and added to the shopping cart to complete the order. During this flow, you will find the moving image.
Tasks
- How can you choose preferences or allergies? 25sec ;
- On what ranks is the "Recommendations" category? 30sec ;
- How do you find the recommendations for products? 30sec ;
- Which image on the main page is in motion? 50sec ;
- How can you see new products? 40sec ;
- How can you scan a QR code product? 40sec ;
- How can you add a product to your shopping cart? 60 sec ;
Post-test Questions
- How difficult was it to find the main menu?
- What was the first impression when you opened the application?;
- Did you feel in difficulty finding the new product list?
- What seemed the easiest to you?
Notes for Test Coordinator
- Remind the user that you would like them to 'think aloud' so that you can understand what they are thinking, about the task or the product/application;
- Read the user the scenario for the test;
- Read the user the tasks he has to complete. If the tasks are complex, you may want to put a sheet of paper in front of the user with each task written out;
- Record the user's actions, comments, questions, and body language (write them in the Test Observations section accompanied by video/audio).
- Don't offer help; let the user attempt to perform the task. If they ask for help reply with: "What do you think you/that would do?" "What do you think that means?".
References
- Fluid User Testing;
- usability.gov Templates;
- Handbook of Usability Testing by Jeffrey Rubin;
- A Practical Guide to Usability Testing by Joseph S. Dumas and Janice C. Redish.
Other Notes
- Users with less experience in using mobile apps have done the tasks in more time.
- Users with more experience in using mobile apps were excited about the first interaction with the application and were curious to use it.


Installation¶
optimModels requires Python 3, which is available for all major operating systems. We recommend the Anaconda python distribution.
optimModels can be easily installed using pip:
pip install optimModels
Additional dependencies:
framed python package for analysis and simulation of metabolic models. odespy offers a unified interface to a large collection of software for solving systems of ordinary differential equations (ODEs). inspyred framework for creating biologically-inspired computational intelligence algorithms in Python, including evolutionary computation, swarm intelligence, and immunocomputing.


IoT with Arduino101 Demo
Values will display in real time when device is connected...


Home
takes you to
home page
About Us
takes you to
about us page
Products
takes you to
products page
Partners
takes you to
partners page
Contact Us
takes you to
contact page


Inventory
Brian added 15(20ct., 1") Bandages.
Brian removed 10 Blankets.
Josh added 1 Kitten.
Messenger
Brian:
Josh:


Blacksmith Feynn:
Huh?
Is that a beer?! Amazing! You really brought it! I thought you were just a weakling entertainer!
I'm impressed! I guess if I live long enough, I'll see everything! You even brought snacks! You really take care of your customers, don't you?
You passed the beer test with flying colors, but now comes the hard part!
I haven't heard you sing yet! Sing me a song and then I'll decide whether or not to tell you how to get the stone of pilgrimage!
"OK, here goes...!"


MIDAQ ALLEY (Callejón de los milagros, El) (director: Jorge Fons; screenwriter: Vicente Leñero/Based on the Nobel Prize novel, by the Egyptian Naguib Mahfouz; cinematographer: Carlos Marcovich; editor: Carlos Savage; cast: Ernesto Gómez Cruz (Rutilio (Don Ru)), María Rojo (Doña Cata), Salma Hayek (Alma), Bruno Bichir (Abel), Delia Casanova (Eusebia), Esteban Soberanes (Jimy), Claudio Obregon (Don Fidel), Abel Woolrich (Zacarias), Juan Manuel Bernal (Chava), Daniel Gimenez Cacho (Jose Luis), Margarita Sanz (Susanita), Luis Felipe Tovar (Guicho), Óscar Yoldi (Ubaldo "El Poeta"), Tiaré Scanda (Maru), 1995-Mex.)
Reviewed by Dennis Schwartz
This film is tied together by four tired soap opera tales, that are competently-crafted but predictable. They are heart rendering tales of love turned sour. Instead of being set in 1940s Egypt, this faithful adaptation of Nobel Prize-winning Naguib Mahfouz's novel, is set in a modern Mexican city, on a street called Midaq Alley. In my humble opinion, this film could have been made by using only one of the stories, instead of making them into roughly four- 40 minute segments, each with a title flashed on the screen to indicate the start of the new story. The four segments, which three of them are introduced by a game of dominoes being played in a bar, are entitled: Rutilio, Alma, Susanita, and The Return (Chava and Abel return from the States), with each segment taking the view of the titled character. It is hard to believe that this film won more awards than any other Mexican film ever has! It makes you wonder about the quality of film that didn't win an award.
In the first story, Mr. Ru is a macho man and hardworker, grimacing at life as he sees its dark side from working in the bar that he owns on Midaq Alley. His only son Chava is called lazybones by him, as he wishes only to leave Mexico and live in the States and get rich quickly. Chava's best friend is the young barber Abel, who dreams of some day owning his own beauty parlor and marrying the beautiful Alma, a neighborhood young girl he has known all his life. The two friends are ridiculed by Mr. Ru for always hanging around together and for acting like queers. This in-fighting between father and son, delights his regular customers, the domino players.
After a night of forced lovemaking to celebrate with his wife Eusebia their thirtieth wedding anniversary, Ru decides to become queer. It happens just like that! The next day he's a queer and goes into a department store and buys socks, in the process picking up the reserved young sales clerk Jimy. Their gay union upsets Chava, who in a fit of rage, cracks open Jimy's skull and then talks Abel into running away with him to Tijuana and eventually to the States. Mr. Ru tells his wife, I was going to leave him the bar and provide for him in every way, but he disappointed me, as this segment ends with Ru weeping that he lost his only son.
The second segment, the most bearable one of the four, mainly because Salma Hayek as Alma, is a real knockout and her story of being poor, looking for someone to take care of her, is filled with all the clichés befitting the telling of a story about a young virgin lover, and of her failure to find love. It is the usual tear-jerker fare seen on those afternoon soap operas on American TV. She is impatient for the barber to love her and open his own shop, but when he suddenly leaves with Chava, even as they are embracing each other and promising to love each other forever, he unexpectedly leaves her with the promise that he will return soon with money and offer her his hand in marriage. She is confused and disappointed by his action and she is ashamed with herself why they never had sex to bond their relationship. Soon, after he is gone, an elderly shop keeper, Mr. Fidel, comes onto her and with her mother's permission, she accepts his proposal for marriage. But he has a fatal heart attack just before the wedding, at Mr. Ru's bar, while playing dominoes.
Alma, meanwhile, has been pursued in the street by a handsome rich man named Jose Luis, who tracks her down, tempting her with his wealth, good looks and self-confidence. He turns out to be a coke-sniffing pimp, who turns her into a high-class whore. She runs away from home and lives in his whorehouse, with him completely dominating her life, as her impatience to wait for the right man ruins her life.
The third story is about a buck-toothed, middle-aged spinster, Susanita, who is the landlord where Alma and her mother Cata dwell. Susanita is desperate to meet a man before she gets too old, and is happy when she has her fortune read in the cards by Cata and is told that the cards say a man of passion will come into her life. At first she thinks that man is Chava, but he only came to her on the night of his flight away from here in order to get money.  She then lures the 26-year-old sneak-thief waiter in Mr. Ru's bar, Guicho, to marry her. He steals from her as he still does from Mr. Ru. When she catches him in the act and asks him to leave, he begs her to not kick him out. After all, she decides, she did get her teeth fixed and still needs someone to love her, so, she keeps this untrustworthy thief as her husband.
The final episode is about the return of the two young men, Chava and Abel, who went to the States to make their fortune. Chava returns after being away for two years, with a wife and a baby son. He has split from Abel after a disagreement in the States and is surprised when Abel soon shows up, courting Alma at her apartment door. For Chava, it is tough going because his father is still angry with him and his marriage is not a happy one and his economic prospects are dim. For Abel, it is a bitterly disappointing time, as he returns home broke without any economic prospects and he has found out that his virgin love is now a whore and a drug addict. He goes to the whorehouse and confronts Alma, but she can't leave. He then comes back and slashes her pimp with a razor before he is fatally knifed in the stomach by the pimp.
On the plus side, the stories are intricately woven together so that they make sense. There is much humor in the telling of the stories and the acting is decent. Otherwise, this plays mostly as glorified soap opera, with few surprises in all of its lengthy presentation.
REVIEWED ON 4/18/2000 GRADE: C-
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


hello
Getting Started
The starterkit allows you to create and build awesome sites without worrying about anything else. To get started, first you will need to download starterkit or clone the repository using git.
$ git clone https://github.com/carloscuesta/starterkit.git
After downloading, install the dependencies. (Note: Gulp needs to be installed in your system, if not install gulp globally).
$ npm install
Now you will be able to use the starterkit.
Exploring Starterkit Tasks
Starterkit comes with a lot of tasks that can be runned with:
$ gulp taskname
Let's take a look at them. There are 4 main tasks that groups a bunch of other subtasks. You can run directly a group of tasks using the main one, or just a specific one by their name.
- gulp : Default dev task, watch and serves your code, compiling on change and injecting them into the browser.
- build : Compiles styles and templates, transpiles scripts, optimizes images and beautifies prepro files.
- optimize : Clean unused CSS, extract critical path, compress images.
- deploy : Upload your /dist folder into your server.
To see with more detail the subtasks runned, please take a look at the starterkit documentation on GitHub.
Generator Starterkit
Would you like to change or use another technologies, frameworks or languages with the same workflow? Starterkit also has a yeoman generator that will create and scaffold out a new project with your choices and options easily in a minute.
generator-starterkit


NC
price converter.
Last update:
USD value:
Conversion in total.
CTRL+SPACE+C
To trigger.
State:
Mode:
Fork


Everything up till the % character is just like the normal Jenkins Cron-like scheduler. Then after the % character you should format your parameters as name value pairs separated by equals and semicolons: name=value;othername=othervalue
There are of course limitations to what can be passed as parameters. As well as what types of parameters can be assigned. The internal mechanism leans on the same HTTP POST request method for triggering builds as documented in Launching a build with parameters.
This is a first step toward solving this Jenkins issue.
Examples:
# every fifteen minutes (perhaps at :07, :22, :37, :52) H/15 * * * * %name=value # every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24) H(0-29)/10 * * * * % name=value; othername=othervalue # every fifteen minutes with timezone TZ=Australia/Sydney H/15 * * * * %name=value # every fifteen minutes with percent sign in param key/value H/15 * * * * %name=value;key=10%;


Issue Three
My mother made us leave the house to get fresh air. We went to the gas station because we didn’t know how to get anywhere else and Molly didn’t have a car yet. It used to be a convenience store but Andy told us that they got cut off from their suppliers. Now, when Molly, Angie, and I go, we could only buy off-brand tea and potato chips. Five men were in line for cigarettes. Andy, who sometimes picked Molly up in his car, was working the register. I thought he was beautiful. The smell of gasoline collected on dark hairs on his neck. His veins popped out of his pasty arms. His heavy dark eyes creased around the corners when he smiled at us.
“I can’t talk, if you could just wait,” Andy said.
Andy raised his arm. At only twelve, I’d wait hours for Andy.  My little sister, Angie’s forehead was sweaty and her hands callused and rough as she wiped the sugar from the candy we bought her onto her pants. My mother bought the pants for me but they were too small.
“Let’s just go,” Molly said.
“You heard mom, just a little time out of the house.”
Molly had yet to doubt my mother’s authority. As she leaned on the window edge, her body was curled inward.  I was glad she didn’t put on any makeup today. Usually, her eyes were widened and dark.  I thought about how she looked more like my father than the rest of us. I wondered, if eventually, I would be pretty like Molly.
“Where else are we going to go?” I asked.
“I don’t know,” Molly said. “I want to go home.
I tugged at Angie’s arm and we sat on the shut-off metal vent by the window. Angie pressed her face against the glass and I smoothed the wrinkles of her shirt.
“I’m going outside. It’s stuffy and smells bad.”
The bell rang when Molly left. Another of the cigarette customers with younger wide eyes and a loose thin t-shirt watched her through the glass. I wondered that if I got in line, whether Andy would give me a package of cigarettes. There was no one else at the gas station around our age. The only woman was hushing her husband. She held her pudgy wrists with her thick hands. Her husband’s tattoo gleamed next to the blue and tan of beer cans.
“How have you guys been?” Andy asked.
Andy leaned his body over the empty counter and I tried to get closer to him. The cigarette men had left.
“Fine,” I said, “just taking a walk around the neighborhood. We thought we might visit.”
I pulled Angie up by her arm.
“I’m doing well.  Andy asked. “I remember those from last time I came for Molly.”
Angie grabbed the edge of the counter and smeared the dust around.
“The house is burning up in baking fumes,” I said.
I dropped the few remaining coins I brought into the tip bowl. Andy smiled and spit slid around the top of his retainer.
“Ah, I see,” Andy said. “The three of you are cooling off.”
“Molly in particular.”
Andy leaned his body forward to avoid the glare of the sun and to see Molly. She was sitting cross-legged on the ground. The grass that poked through the cracks in the sidewalk rubbed against her bare-freckled skin. I hoped he would notice our similarities.
“Is your family going to the history fair?” I asked Andy.
“Don’t know.”
“We’re going. My history teacher is giving us extra credit if we go,” I said. “We’re studying it right now. It’s also dad’s favorite.”
My father would sit around the dinner table and tell us stories about the town. He’d always begin with the buildings: the State Theater and the factories first and then the arcade and the downtown shopping center. He would tighten up his face and say, “And now look at it? Ugly cement buildings. It’s truly a shame; even in the 50’s, this place was a beauty.”
At the fair, a display of our town’s history in the form of vignettes lines the old road: silicon and metal men in suits and women in wax dresses who as the years go on curve and thin out. When I was alone, I thought about the metal men who watched us destroy and rebuild their buildings. Dad says, Charles Acker, the richest man in town, gave his sons the tallest building in town to make something of themselves. I imagined he thought about them driving forward but it seems people left in the same way people came.
The bell on the door rang and fresh air fluttered my jacket sleeves. Andy shifted his body away from us. Molly was uprooting pebbles lodged in the cracks in the sidewalk. The men who walked in didn’t look at us. They opened and closed cooler doors while Angie jumped and tried to lift herself onto the counter. I clenched my knees together and Andy’s face turned away. The three of us floated in the men’s plaster smell and the sound of their mouth breathing and their scratchy shirt fabric.
“You glad to be back in school?” Andy asked.
“Yeah, it’s been okay,” I told him. “How do you like high school?”
“It’s fine. I like the sports. Classes are hard.”
I wondered if Andy looked at me the way people look at Molly around town. She radiated as if she is actually doing something.
“Seventh grade, right?” Andy said.

“Do you have Mr. Beumers? He hated me.”
“No. Is he a social studies teacher?”
“No, he was my science teacher,” Andy told me. “I’ll just be happy when I’m done with school.”
I laughed, asked, “Will you give me a cigarette?”
Andy’s eyes took on a tired look in this light.
“I don’t think I can do that,” he said.
“How about a beer?” I asked. “Couldn’t you take me for a ride in your car?”
He stared, “Gum. You should be happy with this.”
I took the gum and stared up at Andy. I couldn’t really tell exactly what color his eyes were but I did see where his arm was bruised from sports and his hair oily.
“I think we’ll be heading home,” I said.
He waved us off. Molly stood up when she heard the bell. I thought she recognized the sound of our feet. Angie only wore maryjanes with glitter. My feet were dirty. Molly rubbed her lips together and they became wet with her spit.
“We going home?” Molly asked.
“No,” I said.
“Where are we going to go?”
“I don’t know,” I said. “Dad says he always used to go to the theater.”
“What theater?”
Molly’s nostrils flared and, like Andy, she started talking to me like I was a child.
“Did you know that downtown there used to be ten or more theaters?” I told her.
“No, I didn’t know that.”
“They tore them down or were abandoned,” I said. “Ms. Corey told me that. There used to be so much to do.”
Molly started walking away. I liked to think she has the look of someone from the past—maybe Harry Demint from the handout. A rough, free spirited, and warmhearted frontiersmen, together with his two friends he built a log cabin and planned a town. They built the cabin themselves, even their wives stayed back. Mr. Foos was the first to get his family; I liked to think my father is the most like him out of the three.
“Molly, don’t go home yet,” I said.
I dragged Angie behind me to catch Molly around the corner. Her hair flew behind her like a veil. Angie had taken to the habit of dragging her feet and the glitter on her shoes left a trail behind us.
“I’m tired,” Molly said.
Angie and I had caught up to her. She was swinging her arms and her fingertips grazed her shorts’ hem. In my mind, Molly didn’t have an intermediate phase.  The other Molly was taller than me. She straightened her hair so it emitted electrical burning smells. The fat fell off in chucks in the shower next to the dark hairs in the drain. She stayed in this phase the longest. I rubbed my own legs together and the hairs that scratch bare skin mesh together.
“I’m going home,” Molly said. “I’m tired and I’m going home.”
I pushed Angie forward so she could clamp her pink-sugared hands onto Molly’s blouse. When I think about why I didn’t follow them, a lot of reasons come to mind. It may be the way they both fit into the background. Molly’s hair was blowing around her face and looked like the leaves. Angie’s smeared face and muddied calves melted into the sidewalk. For the first time, I didn’t want to be Molly. I didn’t want to go home or stay still.
Lilith Todd is a senior at the Miami Valley School, OH. A fiction and non-fiction writer, she is currently editor of her highschool newspaper and literary magazine. She has participated in many writers' workshop including, in 2012, the Iowa Young Writers' Studio. The end of her junior year, she won the Betsy M. Hughes Creative Writing Award. In addition, she interns at a local art museum.
Copyright © 2012-2015, The Postscript Journal. All rights reserved.


Trying to coerce ASP.Net's validators to work right with a screen-reader. Not sure if I'm winning or losing the battle yet.
6/19/2009, 10:00:14 AM
Favs: 0
Retweets: 0
link--- layout: tweet ---
Trying to coerce ASP.Net's validators to work right with a screen-reader. Not sure if I'm winning or losing the battle yet.
6/19/2009, 10:00:14 AM
Favs: 0
Retweets: 0
link


GfycatApi
Undocumented
-
Undocumented
-
Client Id of your App, as registered with Gfycat.
Declaration
Objective-C
@property (readonly, copy, nonatomic) NSString *_Nonnull appClientID;
Swift
var appClientID: String { get }
-
Client Secret of your App, as registered with Gfycat.
Declaration
Objective-C
@property (readonly, copy, nonatomic) NSString *_Nonnull appClientSecret;
Swift
var appClientSecret: String { get }
-
The oauth token stored in the account store credential, if available. If not empty, this implies user has granted access.
Declaration
Objective-C
@property (readonly, copy, nonatomic, nullable) NSString *accessToken;
Swift
var accessToken: String? { get }
-
The username stored in the account store credential, if available. If not empty, this implies user is logged in.
Declaration
Objective-C
@property (readonly, copy, nonatomic, nullable) NSString *username;
Swift
var username: String? { get }
-
Creates a new user account
Declaration
Objective-C
- (void)createAccountWithUsername:(nonnull NSString *)username password:(nonnull NSString *)password email:(nullable NSString *)email success:(nonnull GfycatResponseBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func createAccount(withUsername username: String, password: String, email: String?, success: Any!, failure: Any!)
Parameters
username
Username for account
password
Password for account
email
Email address for account - Optional
success
Provides a dictionary authorization and refresh tokens.
failure
Provides an error and a server status code.
-
Gets authorization token and validates this session.
Declaration
Objective-C
- (void)validateSession:(nonnull GfycatResponseBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func validateSession(_ success: Any!, failure: Any!)
Parameters
success
Provides a dictionary authorization token.
failure
Provides an error and a server status code.
-
Refreshes authotization token if refresh token has not expired, otherwise fetches a new authorization token.
Declaration
Objective-C
- (void)refreshSession:(nonnull GfycatResponseBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func refreshSession(_ success: Any!, failure: Any!)
Parameters
success
Provides a dictionary authorization token.
failure
Provides an error and a server status code.
-
Validate if authorization is done.
Declaration
Objective-C
- (BOOL)isSessionValid;
Swift
func isSessionValid() -> Bool
Return Value
YES if access token present, otherwise NO.
-
Validate if login is done.
Declaration
Objective-C
- (BOOL)isLoggedIn;
Swift
func isLoggedIn() -> Bool
Return Value
YES if user is logged in, otherwise NO.
-
Clears stored access token and browser cookies.
Declaration
Objective-C
- (void)logout;
Swift
func logout()
-
Get information about a Media object.
Declaration
Objective-C
- (void)getMedia:(nonnull NSString *)mediaId withSuccess:(nonnull GfycatMediaObjectBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func getMedia(_ mediaId: String, withSuccess success: Any!, failure: Any!)

-
Get list of all categories.
Declaration
Objective-C
- (void)getCategoriesWithSuccess:(nonnull GfycatCategoryArrayBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func getCategoriesWithSuccess(_ success: Any!, failure: Any!)
Parameters
success
Provides a media list object.
failure
Provides an error and a server status code.
-
Get a list of media objects from a category.
Declaration
Objective-C
- (void)getCategoryMedia:(nonnull NSString *)categoryTitle count:(NSInteger)count WithSuccess:(nonnull GfycatMediaBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func getCategoryMedia(_ categoryTitle: String, count: Int, withSuccess success: Any!, failure: Any!)
Parameters
categoryTitle
Title of category.
count
Count of objects to fetch.
success
Provides an array of Media objects and Pagination info.
failure
Provides an error and a server status code.
-
Search published Media with string.
Declaration
Objective-C
- (void)searchMediaWithString:(nonnull NSString *)searchString count:(NSInteger)count withSuccess:(nonnull GfycatMediaBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func searchMedia(with searchString: String, count: Int, withSuccess success: Any!, failure: Any!)
Parameters
count
Count of objects to fetch.
success
Provides a media list object.
failure
Provides an error and a server status code.
-
Get paginated objects as specified by information contained in the PaginationInfo object.
Declaration
Objective-C
- (void)getPaginatedItemsForInfo:(nonnull GfycatPaginationInfo *)paginationInfo withSuccess:(nonnull GfycatPaginatiedResponseBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func getPaginatedItems(forInfo paginationInfo: Any!, withSuccess success: Any!, failure: Any!)
Parameters
paginationInfo
The PaginationInfo Object obtained from the previous endpoint success block.
success
Provides an array of paginated Objects.
failure
Provides an error and a server status code.
-
Creates a new Gfycat upload target
Declaration
Objective-C
- (void)createGfycatWithParameters:(nullable NSDictionary *)parameters success:(nonnull GfycatUploadKeyBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func createGfycat(withParameters parameters: [AnyHashable : Any]?, success: Any!, failure: Any!)
Parameters
parameters
Dictionary of optional parameters for new Gfycat. Valid keys are: kNewGfycatTitle as an NSString, kNewGfycatDescription as an NSString, kNewGfycatTags as an NSArray of NSString, kNewGfycatPrivate as an NSNumber 0 or 1; // TODO - Should we include the MD5 flag incase people want to upload duplicates?
success
Provides a response dictionary with keys kNewGfycatName and kNewGfycatSecret.
failure
Provides an error and a server status code.
-
Upload file to create new Gfycat
Declaration
Objective-C
- (void)uploadFileUrl:(nonnull NSURL *)fileUrl forUploadKey:(nonnull GfycatUploadKey *)uploadKey success:(nonnull GfycatSuccessBlock)success progress:(nullable GfycatProgressBlock)progress failure:(nullable GfycatFailureBlock)failure;
Swift
func uploadFileUrl(_ fileUrl: URL, forUploadKey uploadKey: Any!, success: Any!, progress: Any!, failure: Any!)
Parameters
success
Called on success.
progress
Provides an upload progress.
failure
Provides an error and a server status code.
-
Deletes a Gfycat target
Declaration
Objective-C
- (void)deleteGfycatWithParameters:(nullable NSDictionary *)parameters success:(nonnull GfycatUploadKeyBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func deleteGfycat(withParameters parameters: [AnyHashable : Any]?, success: Any!, failure: Any!)
Parameters
parameters
Dictionary of optional parameters for new Gfycat. Valid keys are: kNewGfycatTitle as an NSString, kNewGfycatDescription as an NSString, kNewGfycatTags as an NSArray of NSString, kNewGfycatPrivate as an NSNumber 0 or 1; // TODO - Should we include the MD5 flag incase people want to upload duplicates?
success
Provides a response dictionary with keys kNewGfycatName and kNewGfycatSecret.
failure
Provides an error and a server status code.
-
Report Media object as offensive.
Declaration
Objective-C
- (void)reportMedia:(nonnull NSString *)mediaId withSuccess:(nonnull GfycatResponseBlock)success failure:(nullable GfycatFailureBlock)failure;
Swift
func reportMedia(_ mediaId: String, withSuccess success: Any!, failure: Any!)
Parameters
mediaId
Id of a Media object.
success
Provides a dictionary server response if any.
failure
Provides an error and a server status code.


Test Report
Stylesheet: C:/projects/fontoxml/fontoxml-dita-ot-plugin-standard-schema/xslt/xsltMixedContent.xsl
Tested: 17 August 2017 at 10:26
Contents
Full file testpassed:1 / pending:0 / failed:0 / total:1
| Full file test |
passed:1 / pending:0 / failed:0 / total:1 |
| wrap in p and nodes before the rootelement are created correctly |
Success |
Full file test 2passed:1 / pending:0 / failed:0 / total:1
| Full file test 2 |
passed:1 / pending:0 / failed:0 / total:1 |
| wrap in p and nodes before the rootelement are created correctly |
Success |
Text, inline elements and block level elements are mixedpassed:1 / pending:0 / failed:0 / total:1
| Text, inline elements and block level elements are mixed |
passed:1 / pending:0 / failed:0 / total:1 |
| Text and inline elements are wrapped in a p element |
Success |
Text, inline elements, comments and block level elements are mixedpassed:1 / pending:0 / failed:0 / total:1
| Text, inline elements, comments and block level elements are mixed |
passed:1 / pending:0 / failed:0 / total:1 |
| Text and inline elements are wrapped in a p element |
Success |
When there are block level elements in a p elementpassed:1 / pending:0 / failed:0 / total:1
| When there are block level elements in a p element |
passed:1 / pending:0 / failed:0 / total:1 |
| The p element is removed and a new p element is wrapped around the inline elements |
Success |
When there are block level elements and comments in a p elementpassed:1 / pending:0 / failed:0 / total:1
| When there are block level elements and comments in a p element |
passed:1 / pending:0 / failed:0 / total:1 |
| The p element is removed and a new p element is wrapped around the inline elements |
Success |
When there is an image outside the ppassed:1 / pending:0 / failed:0 / total:1
| When there is an image outside the p |
passed:1 / pending:0 / failed:0 / total:1 |
| Nothing should happen |
Success |
When there is an mathml element outside the ppassed:1 / pending:0 / failed:0 / total:1
| When there is an mathml element outside the p |
passed:1 / pending:0 / failed:0 / total:1 |
| Only the namespace should be fixed |
Success |
When there is an image and text outside the ppassed:1 / pending:0 / failed:0 / total:1
| When there is an image and text outside the p |
passed:1 / pending:0 / failed:0 / total:1 |
| The text should be wrapped |
Success |
When there is an mathml element and text outside the ppassed:1 / pending:0 / failed:0 / total:1
| When there is an mathml element and text outside the p |
passed:1 / pending:0 / failed:0 / total:1 |
| The text should be wrapped |
Success |
When there is an note and image and text in the ppassed:1 / pending:0 / failed:0 / total:1
| When there is an note and image and text in the p |
passed:1 / pending:0 / failed:0 / total:1 |
| The text with images should be wrapped |
Success |
When there is an image and text in the ppassed:1 / pending:0 / failed:0 / total:1
| When there is an image and text in the p |
passed:1 / pending:0 / failed:0 / total:1 |
| Nothing should happen |
Success |
When there is an image and text in the notepassed:1 / pending:0 / failed:0 / total:1
| When there is an image and text in the note |
passed:1 / pending:0 / failed:0 / total:1 |
| Nothing should happen |
Success |
When there is an mathml element and text in the notepassed:1 / pending:0 / failed:0 / total:1
| When there is an mathml element and text in the note |
passed:1 / pending:0 / failed:0 / total:1 |
| Only the text should be wrapped |
Success |
leading and trailing spaces in slipassed:1 / pending:0 / failed:0 / total:1
| leading and trailing spaces in sli |
passed:1 / pending:0 / failed:0 / total:1 |
| leading and trailing spaces are gone |
Success |
leading and trailing spaces in notepassed:1 / pending:0 / failed:0 / total:1
| leading and trailing spaces in note |
passed:1 / pending:0 / failed:0 / total:1 |
| leading and trailing spaces are gone and text is wrapped in paragraphs |
Success |
leading and trailing spaces in ppassed:1 / pending:0 / failed:0 / total:1
| leading and trailing spaces in p |
passed:1 / pending:0 / failed:0 / total:1 |
| leading and trailing spaces are gone and text is wrapped in paragraphs |
Success |
Spaces in linespassed:1 / pending:0 / failed:0 / total:1
| Spaces in lines |
passed:1 / pending:0 / failed:0 / total:1 |
| only the line breaks are preserved |
Success |
image is the only element in a paragraphpassed:1 / pending:0 / failed:0 / total:1
| image is the only element in a paragraph |
passed:1 / pending:0 / failed:0 / total:1 |
| only the first two paragraphs are unwrapped |
Success |
mathml element is the only element in a paragraphpassed:1 / pending:0 / failed:0 / total:1
| mathml element is the only element in a paragraph |
passed:1 / pending:0 / failed:0 / total:1 |
| Nothing happens |
Success |
image is the only element in a paragraphpassed:1 / pending:0 / failed:0 / total:1
| image is the only element in a paragraph |
passed:1 / pending:0 / failed:0 / total:1 |
| only the first paragraph is unwrapped |
Success |
mathml is the only element in a paragraphpassed:1 / pending:0 / failed:0 / total:1
| mathml is the only element in a paragraph |
passed:1 / pending:0 / failed:0 / total:1 |
| The paragraph is unwrapped and the mathml elements are wrapped |
Success |


{% extends 'tenant_intake/base.html' %} {% load staticfiles i18n compress %} {% block content %} {% compress js inline %} {% include 'tenant_intake/entrepreneur/round_1/6/js.html' %} {% endcompress %}
{% trans 'If you are happy with your answers, please click submit to continue, otherwise you can hit previous to go back and review your work.' %}


Home
Pages
About us
Web hosting plans
Domain names
Blog
Support portal
Contact us
Sign in
Chat now
Find a personal or professional domain
that stands out.
What you will get with domain names?
Domain Lock
Mauris at libero sed justo pretium maximus ac non ex. Donec sit amet ultrices dolo.
Domain Renewal
Mauris at libero sed justo pretium maximus ac non ex. Donec sit amet ultrices dolo.
Easy Management
Mauris at libero sed justo pretium maximus ac non ex. Donec sit amet ultrices dolo.
What you will get with domain names?
.com
$12.95/yr*
.club
$9.95/yr*
.co
$12.95/yr*
.space
$9.95/yr*
.us
$5.95/yr*
.org
$9.95/yr*
.net
$10.95/yr*
.me
$12.95/yr*
.io
$19.95/yr*
.co.uk
$5.95/yr*
.info
$12.95/yr*
.host
$9.95/yr*
.online
$12.95/yr*
.site
$9.95/yr*
.tech
$5.95/yr*
Start now
Ready to ask your first question?
Need any help?
Support portal


From
Wikipedia:
A hash function is any function that can be used to map data of arbitrary size to data of fixed size.
A good hash function/algorithm that can be used in cryptography has the following properties:
- Defined range: No matter how long the input is, the output is always of the same length
- Determinism: For the same input, the output will always be identical
- Non-invertible: From the output you can not calculate or guess the input
- Uniformity: Small changes in the input lead to significant changes in the output
For our example we use SHA256 (also called SHA-256, short for Secure Hash Algorithm 2, 256 bit) because it is the
same hash algorithm that is currently used for the Bitcoin network.
The output is always 256bit long which is 64 characters when encoded hexadecimally.
Below you can see SHA256 in action. Just type any data into the input field and watch how the corresponding hash changes.
Links:


--- layout: ad-layout title: Halbert - Desperate Ohio Nerd parent: Swipe - Ads nav_order: 34 ---
Dear Friend,
If you would like to make alot of money very quickly, this is going to be the most exciting message you will ever read.
Here is why: my name is Gary Halbert and, some time ago, I was dead broke. My business wasalmost bankrupt and I couldn't even pay the rent. Actually, I wasn't just broke, I was desperate.
Then, one day, I came up with a "crazy idea" about how to write a certain kind of sales letter (it was not a chain letter) that would get people to send me money.
I was living in Ohio at the time and my friends laughed at the idea. They thought it was a big joke. They said I was a dreamer and that I had no "common sense." In fact, one guy said I was just a nerd and that my idea was so silly, he felt sorry for me.
Oh yeah? Well, I didn't care. I still thought I had a good idea and I typed upa few of my letters and started mailing them out. And guess what? People did start sending me money. And I used that money to mail more letters which brought in more money. And I used that to mail even more letters which brought in even more money.
And so on.
What's the bottom line? Simply this: before I was finished, that one simple letter pulled in...
Think about it: more than seven million people wrote back to me and every one of those people sent a check (made out to my wife) or else cash I could put in my pocket. And what was Iselling? Actually, it doesn't matter. You sec, the magic was not in the product, it was in the letter!
Do you have something to sell? If so, you can use that "crazy idea" I used in my letter to create a letter of your own and sell almost anything you've got.
If you answered .. yes" to any of the above questions, you should try my "crazy idea." You can read all about it in my new book called...
Listen: many years ago, I thought I wanted to be a salesman. I got myself a job selling encyclopedias doorto-doo r and I kept at it until I was darn good. But there was a problem. You see, I could only knock on about 40 doors each evening. And therefore, no matter how hard I worked, there was a definite ceiling on my earning capacity.
And besides that, selling doorto-door is a horrible way to make a living!
So, I kept searching and searching until I came up with my "crazy letter idea" which is the first experience I ever had with what I call RCS or "Remote Control Selling."
RCS uses the secrets of something else I developed called "Killer Advertising" which almost forces people to buy whatever you are selling. And, what RCS lets you do is, sell almost anything without ever meeting your customers in person... or even talking to them on the phone!
These "remote control" selling secrets of "Killer Advertising" can be used by anyone. Even a housewife, a student, or someone who is unemployed. And, if you have a business (or you want to have a business), these secrets can generate so much cash-flow, you may actually have a hard time getting all the money to the bank. I'm not kidding. My "crazy letter idea," for example, brought in...
By the way, getting that many checks every day means you have to hire at least 30 full-time employees just to make your bank deposit. But anyway, my "crazy letter idea" isn't the only thing you'll learn when you read my book. No. *That's just Chapter One!
Here is a sample of what you will learn when your read the rest of the book:
There's more. A lot more. Including how, (if you're not married), to use RCS to find your dream lover, how to get the most valuable gift in the world absolutely free (I was once paid $2,500 for one of these), how to avoid legal hassels and lawsuits from "human buzzards" who are jealous of your success, and so on.
OK, that's it for now. I'm running out of space here. But anyway, I hope I have given you enough information about my new book to make you decide to get it and read it right away. But please...
Look, the cost of my book is extremely low compared to what you get. However, even so, I don't want to deposit a single penny of your money until you read my book and find out for yourself how good it really is. Does thats ound strange to you? I'm sorry if it does but no matter what... I intend to treat you like I would like to be treated!
In other words, I think you deserve to be able to read my book before you allow me tocash your money order or check.
Here's how to order. All you have todo is write your name and address and the words "Maximum Money" on a piece of paper and send it with your check or money order (postdated 30-days ahead) in the amount of S l9.9S plus $3.00 postage and handling (total $22.95) to:
That's all there is to it. As soon as I receive your order. I will send the book to you immediately...
You'll get the book right away and you'll have plenty of time to read it and check it out. Then, if you are not 100% satisfied, just return it to me and I'll send you back your uncashed check or money order with no questions asked.
Do you want extra fast service? If so,you can use one of your credit cards and order by phone and... you still get 30-days to check out my book before I process your credit card charge! The number is...
By the way, checks and money orders should be made payable to Everett & Lloyd, and it is not a good idea to mail cash. Thank you.


This page visualizes 7,384 "Fourth of July" (and related search) images from the Digital Public Library of America (DPLA), which aggregates cultural heritage metadata from thousands of institutions.
Under the hood is a WebGL model of how the Inception Convolutional Neural Network perceives "relatedness" and then a mapping of the computed relationships into 3-dimensional space using UMAP algorithm such that similar images appear near each other.
Except for a few small modifications, this is based on the work and code published by the Yale Digital Humanities Labs in their PixPlot repository, which I learned about through an excellent video presentation from a Coalition for Networked Information (CNI) project briefing.
Click the clusters on the left to zoom to those areas, or use the mouse and/or keyboard to browse on your own. Scroll to zoom in, or use the up/down keys. Right click to rotate.
Clicking on an item will center the camera to that image, and double-clicking an item will take you to the record for that image in DPLA.


MORE NESTING:
This is sort of a continuation of Nesting vs. Tetris.
Watch nesting fail again. This time it can't figure out that two pieces fit on one slab. I had one woodlands job but I scanned ahead and found another
woodlands job that gets installed two days later so I tried to merge them. (It didn't make any difference this time
but in general merging jobs is about the best way to save material.)
I always assume the smaller caesarstone slabs are 119x54 unless another inch or two will make a difference in which case I curse under my breath and go measure the slabs.
So starting out I want to put the 171733 joints close together.
Well, it looks like there's no way I can put the joints on the giant 173087 pieces next to each other. Let's try nesting. I know I rag on AlphaCAM's nesting
but the fact is I use it every day; it's a handy tool and sometimes it "thinks" of something I didn't think of.
No luck. I can't figure out. You can see AlphaCAM's attempt on the right two slabs. It can't figure it out, either.
So it looks like I'm going to have to go with something like the pic below. Now at this point you might have seen the obvious already but for
some reason I didn't.
But I had that usual nagging in the back of my mind like, maybe the slab is a couple inches bigger. And you wouldn't believe
how many times one extra inch made all the difference in the world. So I cursed under my breath and went and measured the slabs.
I got 120 x 56½. So I messed with it some more but even with the bigger slabs I ran into the same issues so I let AlphaCAM's nesting try and as you can see
it couldn't figure it out, either. (I even tried increasing the time per sheet but it made no difference. In a blink it decided it needed two slabs.)
So I kept staring at. Really this took me like ten minutes, I must be drunk on Nyquil or something. But then I was like oh....
See this what all those nights playing Tetris were for. Plus this is 3/16" bigger all around for the CNC so if they lose 1/8" on the top or bottom then who cares.
One thing to note is if you rotate those pieces differently before you try AlphaCAM's nesting, it can figure it out.
I don't really know what's up with that. I'm guessing it's because it started with the way I had the #2 piece so the joint was parallel to the bottom of the slab
but the other time I let it try it didn't have the sense to try that rotation. Who knows. Like I said, nesting is a handy tool, just don't rely on it. So after all that
this is the layout I came up with:
If we were really at the top of our game we'd move that smallest #3 piece to the yellow job to save a half slab, those half slab remnants save the day all the time.
But I've seen too much color match insanity to care anymore. All the joints are next to each other, it's staying like this. So now the shop can just throw these slabs
up and rip through them no problem. No one has to play "match the slabs".
But then again I don't know if it's worth doing any of this this because no one will notice.
If some other guy would have put the two big 173087 pieces on separate slabs he would gotten more credit for programming faster and then when the joints didn't match the shop guys
would have gotten blamed instead of him.
What do you think? Should I bother? Email me<EMAIL_ADDRESS>Download here:
fun.ard
fun.dxf
© Copyright 2018 by laconiclizard


THIS IS THE BEST BMI CALCULATOR IN GÖTET
Calculate BMI with metric formula
Calculate BMI with imperial formula
Calculate your bmi with metric formula
Calculate your bmi with imperial formula


The Ultimate Memory Challenge
Welcome to the Challenge!
WARNING: User may experience severe childhood flashbacks.
Repeat back the pattern by pressing buttons. Note you will only be given 3 chances. Best of Luck!
Start
Stop


--- layout: post title: Making a Chrome Extension categories: - Programming tags: [] comments: [] ---
It's easy to make a chrome extension. The first thing you need is a manifest, describing the extension and defining permissions.
{% highlight javascript %} { "manifest_version": 2, "name": "test", "description": "a test extension", "version": "1.0", "browser_action": { "default_popup": "popup.html" }, "permissions": [ "activeTab" ] } {% endhighlight %}As far as I can tell, this is basically the minimum that will work. The manifest version, name, description, and version are all required. Next, you need either a browser action or a page action. A browser action is one that is always available. When you click on the extension's icon, a popup appears, displaying popup.html. Finally, the permissions array lists what the extension is allowed to do. In this case, I gave it permission to ask the browser for information about the active tab.
Here's popup.html: {% highlight html %}


{% extends "layout.html" %} {% block title %} | About {% endblock %} {% block content %}
Welcome to Playlist Machine, a tool that lets you generate Spotify playlists based on ("inspired by") a specified artist and song. You can also choose a genre and set up audio features.
This app is created with Python (Flask), using the Spotify Web API (mostly Recommendations endpoint).
A source code is available on GitHub.
{% endblock %}


Toggle navigation
SPACESCAPES | The Docix Tutorials
Training
Support Us
Contact
Docix.net
SPACESCAPES
Start Lessons
Section 1: Introduction
Videos:
COURSE TRAILER
WELCOME AND INTRODUCTIONS
TOOLS NEEDED FOR THIS COURSE
CHECKING OUT WHAT WE ARE GOING TO CREATE
Section 2: The Starfield
Videos:
INTRODUCTION TO ILLUSTRATOR
THE BLACK BACKGROUND
CREATING THE SHAPE FOR OUR STAR BRUSH
CREATING OUR STAR BRUSH
PAINTING OUR STARFIELD
EXPORTING OUR STARS
IMPORTING OUR STARS
Section 3: Building Our Planet
Videos:
TEXTURE TO SPHERE
CUSTOMIZING OUR EFFECT
COLOR WITH CURVES
Section 4: Crafting Nebulas
Videos:
FRACTAL NOISE
MASKING
NEON FLAMES
Section 5: Details and Wrapup
Videos:
HORIZON LIGHT WITH SABER
STARLIGHT WITH OPTICAL FLARES
ADDING MOONS
FINAL ADJUSTMENTS
RENDERING
WRAP-UP IN PHOTOSHOP
Section 6: Other Spacescapes
Videos:
SECTION OVERVIEW
Breakdown: AESOP
Breakdown: AESOP - Animated
Breakdown: TELZROW
Breakdown: TELZROW - Animated
Breakdown: DAWN
Breakdown: DAWN - Animated
Breakdown: SHAWN
Breakdown: SHAWN - Animated
COURSE WRAPUP
Love the Course?
Support us on Patreon, join our community, and help us create new courses!
Patreon
Want to connect?
Linkedin
Instagram
Twitter
.oOo!
†
!oOo.


I originally wrote this article for Volume 118, Issue 3 of mathNEWS.
Sleep is Important
It’s easy to get caught up in interviews, assignments, projects, midterms, and late nights playing board games. Don’t forget to sleep! As much as your friends may brag about getting through the week on three hours of sleep, you’ll be much more productive if your manage your energy and get enough sleep through the week.
 You might be choosing between sleeping or studying for another three hours, between a co-op opportunity in the San Francisco Bay Area or a co-op opportunity in Kitchener, or between pasta or breaded fish at the cafeteria.
So why are you wasting your time doing things you don’t like and that won’t take you a step closer to reaching your goals? When you put down this paper, go do something that will make your life better.
Don’t Date Someone From Your Cohort
If you are (un)fortunate enough to be in a program with a cohort, think very carefully before dating someone in your class. There are so many ways it could end horribly. I’ll let your imagination run wild here.
Volunteering
If you were one of the people who enjoyed volunteering in high school, don’t just give up on it now that you’re here! Even if you’re not in Engineering, WE-Connect, part of Waterloo Engineering Outreach, is involved with many events where you can get involved. Every year, volunteers are needed for the FIRST Lego League and the FIRST Robotics Regional Competition on campus. Become an Orientation leader. Start a business on campus. Run for student government. Get involved!
 We’ll have to see whether we’re going to clamp down and not put anything on the Internet, or whether we’re going to accept that people do stupid things and that it’s funny. Until then, think before you post.


creation: 3/24/99 (using AWT), major revision: 01/06/02 (using Swing); small edits: 07/24/02, 01/14/03
This chapter introduces Graphical User Interface (GUI) programming. Users interact with modern application programs using graphical components such as windows, buttons, text boxes, and menus. An immense amount of computer processing goes on when these components are displayed and manipulated. It would be difficult to write a GUI application from scratch. Luckily, most of the work has been done for you in a set of classes called Swing.
Swing is a large package. These notes only discuss the very basics.


AWS IoT TopicRule FirehoseAction
Firehose
is a property of the AWS IoT TopicRule Action property that describes an
action that writes data to a Kinesis Data Firehose stream.
Syntax
JSON
{ "DeliveryStreamName":
String
, "RoleArn":String
, "Separator":String
}
YAML
DeliveryStreamName:
String
RoleArn:String
Separator:String
Properties
DeliveryStreamName
-
The delivery stream name.
Required: Yes
Type: String
RoleArn
-
The Amazon Resource Name (ARN) of the IAM role that grants access to the Kinesis Data Firehose stream.
Required: Yes
Type: String
Separator
-
A character separator that's used to separate records written to the Kinesis Data Firehose stream. For valid values, see Firehose Action in the AWS IoT Developer Guide.
Required: No
Type: String


WELCOME TO TITANIUM OPENSYSTEMS
THE LEAD STORY: You Can Modernize to React, Bootstrap and/or NodeJS Without Tearing Down Your Entire Infrastructure to Bedrock
Common (and mistaken) wisdom would have us believe that a full-blown tear-down and rebuild development death march is the only path to migrate web applications to modern javascript web application technologies (such as React, Bootstrap and NodeJS). While that path my offer an approach to accomplish the desired result, it entails a very high cost in terms of disruption, risk and large up-front expenditures. Can we take a less ugly more strategicpath?
Titanium Opensystems (TOS) has assembled a set of tools, techniques, strategies, and frameworks that together enable a staged migration path to modern React web technologies. There is no need to abruptly dismember existing SQL databases and mid-tier application servers. Instead we may use APIs at each level of web architecture to enable a component-by-component staged migration from old to new. It's a highly flexible approach that can follow various strategies at any pace.
Web and Application Development
TOS has the skills to create unique experiences which
will delight your customers with great online
user experiences.
For the web, TOS creates web-apps using modern JavaScript
“Full-Stack” technologies including React, Bootstrap and NodeJS, providing
a solid architectural foundation for your web applications.
On this foundation TOS builds web apps that are richly interactive,
beautiful and very engaging for your customers to view on desktop and
moobile devicess.
Cloud Analytics and Big Data -- including Real-time Everything
The world has changed. In today's fast-paced world, the stale and
incomplete information of yesteryear (even if it ever was "good enough" then)
certainly will not cut it today. The right-now of IOT, Web, and physical
world dynamics present an ever-changing landscape of both
great opportunities to seize and major perils to negotiate. Leading
organizations optimize both using powerful analytics to get the big
picture (and the many key small pictures) extracted in real-time from
information sources -- everywhere -- from IOT (devices), to the Web to the
physical world, to create real-time IoE (internet of everything).
So what could your organization do with all-sources
(IOT, Web and physical-world) in real-time to single-truth enterprise data
and intelligence on tap RIGHT NOW?
Cloud
The cloud provides a path to faster deployment of applications,
increased efficiency of your IT staff, better security, and lower costs
if done correctly. Leverage TOS expertise in assessing, completing, and
supporting the movement of IT to the cloud.
A masterpiece
Great thought leadership and execution leadership
Innovative, inventive


% include common/stylesheets.html %>
<% include common/header.html %> <%- body %> <% include common/footer.html %> <% include common/javascripts.html %> <% include common/back_to_top.html %>


Application views, buttons and menus
|
| |
Note that the icons according to the used theme/skin. |
| |
Note that the texts may vary according to the selected language. |
Almost any operation can be done in 2 ways: by using the assigned button or by choosing from the context menu
that will pop-up when you right click on an item or in a view.
The main view windows look like this:
You can see the "First", "Back", "Next", "Last" buttons on the buttom, and also a combobox that
allows you to directly jump to a given page. This is needed because, in order to
minimize the network traffic and provide fast applications, all the data in a view
is paged in 50-items page. So, if you have a view containing 10 000 items, you will have to
jump from one page to another. In the PDF quick reports, all the data will be visible (though is not
recommended to export this amount of data).
| |
In order to edit or view an item, you must double click on it. |
| |
In order to perform any other operation an item, you must right click on a item or in the "white" area in the view.
A menu like:
will be displayed.
|
| |
The displayed menu items may vary according to your user level. |
|
Data from these views is draggable to another view that accepts the same data type or to the "Personal documents" zone or "Clipboard" |
Left panel buttons description:
|
|
Show the archive view (if enabled).
|
|
|
Show the current view (return from archive). This should be used in conjuction with the archive button.
|
|
|
Print the current view on the server's default printer.
|
|
|
Generate a quick report and show it in print preview.
|
|
|
Export this view as a PDF document.
|
|
|
Export this view as a RTF document.
|
|
|
Export this view in XML. The XML format is used for transparent interaction
with other applications (eg.: Excel).
Also, it can be used to localy save the data for later importing.
|
|
|
Imports data from XML. The structure of the XML must be defined and compatible
with the application.
It can import previously exported XML data when using the "XML export button".
|
Other forms of views are the drop-down choose-from forms that look like this:
|
|
|
Data from these views is draggable to another view that accepts the same data type or to the "Personal documents" zone or "Clipboard" |
| |
In order to select an item, you must double click on it. |
| |
In order to perform any other operation an item, you must right click on a item or in the "white" area in the view.
A menu like:
will be displayed.
|
Here you wil identify the almost the same buttons like in the master views. (excepting the "Advanced search" expander).
You can see the "First", "Back", "Next", "Last" buttons on the buttom, and also a combobox that
allows you to directly jump to a given page. This is needed because, in order to
minimize the network traffic and provide fast applications, all the data in a view
is paged in 50-items page.
|
Other buttons that you may encounter:
|
|
Show the advanced search fields (if any). Please note that in order to
activate an advanced search field, you must first check the checkbox
preceeding the filed name. After you're done searching, you must uncheck it.
Also, you can choose from varios comparators like "=(equal)", "<=(less or equal)", ">=(greater or equal)"
or "<>(not equal)".
|
|
|
You will see these buttons on the buttom of a input form.
The first button: export form to XML (for importing at a later time or in another program)
The second button: print the form on the server's default printer
The third button: save form localy as PDF
The fourth button: Save data to the database.
The fifth button: Cancel the operation and close the form.
|
|
|
You will see these buttons on the buttom of a view in an input form.
The first button: print the form view data on the server's default printer
The second button: save form view localy as PDF
The third button: Add data to the view.
The fourth button: Delete data from the view.
The Add and Delete operations can be also performed by right clicking in the form view.
|
Data from these views is draggable to another view that accepts the same data type or to the "Personal documents" zone or "Clipboard" |
|
|
|
You will see these buttons on the buttom of a view in an input form that accepts only one item.
The first button: delete data from the view.
The second button: add data to the view.
The add and delete operations can be also performed by right clicking in the form view.
If the view already contains an item, you must first delete it/remove it from the view.
|
Data from these views is draggable to another view that accepts the same data type or to the "Personal documents" zone or "Clipboard" |
|
|
|
You can perform quick searches by entering some text in the search field and pressing the Enter key or the Find button.
You can also perform pattern search using the '%' character.
The '%' replaces a letter or a group of letters.
Eg.
If you want to search for all the data containing 'John' as a field you can search for '%John%' (without the quotes).
Then all the results like 'John Smith' and 'Mr. John' will be displayed.
|
|


rMaps makes it easy to create, customize and share interactive maps from R, with a few lines of code. It supports several javascript based mapping libraries like Leaflet, DataMaps and Crosslet, with many more to be added.
rMaps is still under development and can be installed from github using devtools.
InstallThe easiest way to get started is by looking through the examples on github. You can also read the blogto understand the internals of rMaps (which would come in handy when you want to customize your maps), or get a preview of new features,


Sorry for the inconvenience. Please try again.
If this keeps happening, please let us know and we'll fix this. Thank you.
Go back to home page.
{% extends "regapp/base.html" %} {% load staticfiles %} {% block title %}Lisplay - Request Error!{% endblock %} {% block content %}
Go back to home page.


To begin with, I have been a vivid Arch Linux user for quite some time. I greatly enjoyed the flexibility this specific distribution offers, even when using derivatives, such as ArchBang. Pacman also happens to be my favorite package manager by far. Not to mention that Arch Linux, despite being a supposedly bleeding-edge Linux distribution, never failed me. However, as in every long-term relationship, small things kept piling up and one of them finally became the last straw. In my case it was the constant need for manual configuration and issues with less popular AUR packages. For example, I really wanted to use Window Maker as my desktop environment, even though it's merely a window manager. Unfortunately, many of the Dock-App packages in the AUR were outdated or simply broken, because the original maintainers dropped them. Another case concerned the Adobe Flash plugin for Chromium. It relied on a .rpm package from Google’s repositories which at one point in time simply got removed. Some time passed before the AUR package maintainer noticed the problem and provided a working link in his/her PKGBUILD. Not a big deal in the long run, though as I wrote before, this would happen over and over.
I have no grudge against Arch Linux. Quite the contrary – I love it! For a distribution that small, it is more than incredible how popular and versatile it became. In addition, it taught me a great deal about Linux and its kernel. However, I decided to resume my journey through Linux Land and move on. Where to?, one might ask. Debian, perhaps? Maybe Gentoo? I think I still have a LOT to learn!


--- layout: post title: A Trick to Modify Configure Files categories: computer tags: [shell, system admin] ---
Sometimes, we need to update configure files using a shell script (or whatever). Simple it might seem, there some triky things:
My solution is basically to "mark" our changes in place so that we can easily spot and undo the changes later on.
 #DEL_LGFANG orginal line m ... orginal line n #BEGIN_LGFANG New lines are in between Other applications shall never modify this block #END_LGFANG
To restore the file, all that we need to do are:
#BEGIN_LGFANG
and #END_LGFANG
.
#DEL_LGFANG
Below are bash functions which facilitate the work as well as examples of usage.
function add { local filename=$1 local lines=$2 cat >> $filename <<EOF #BEGIN_LGFANG $lines #END_LGFANG EOF } function del { local filename=$1 local target_line=$2 sed -i "/${target_line}/s/\(#DEL_LGFANG \)*\(.*\)$/#DEL_LGFANG \2/" $filename } function restore { # 1. delete added # 2. restore deleted (uncomment commented) local filename=$1 sed -i -e '/BEGIN_LGFANG/,/END_LGFANG/d' \ -e 's/^.*DEL_LGFANG *//' $filename } # Examples lines='line1 line2' add test.conf "$lines" del test.conf todel restore test.conf


Very easy and quickly
This product will possess a lot of function.
HTML5
Using HTML5.Adopted the Semantic Web.
CSS3
Using CSS3.Simple and dynamic design.
jQuery
Adopted jQuery, uses its own jQuery plugins.
Responsive
This site can be displayed in a variety of devices responsive.
Gridsystem
It has adopted the grid system of the same width as the Bootstrap4.
Align height
Align the height of the element.
SEO
This framework has been created specifically for SEO.
Hero header
You can easily set up a Heroheader of the full screen.
Drawer menu
You can easily use the drawer menu,such as a native app.
Parallax
Dynamic performance using the scroll effects and parallax.
Validation
Contact form with validation function.Required items,e-mail address,such as the length of the text and more.
BEM
When you try out once...
about BEM.


MIU
Sign in with your Email
Slug
Drop your image here
Your makes:
{% for make in makes %}
{% endfor %}


The d-type-spec argument is used for destructuring. If the d-type-spec argument consists solely of the type fixnum, float, t, or nil, the of-type keyword is optional. The of-type construct is optional in these cases to provide backwards compatibility; thus, the following two expressions are the same:
;;; This expression uses the old syntax for type specifiers. (loop for i fixnum upfrom 3 ...) ;;; This expression uses the new syntax for type specifiers. (loop for i of-type fixnum upfrom 3 ...) ;; Declare X and Y to be of type VECTOR and FIXNUM respectively. (loop for (x y) of-type (vector fixnum) in l do ...)
A type specifier for a destructuring pattern is a tree of type specifiers with the same shape as the tree of variable names, with the following exceptions:
Destructuring allows binding of a set of variables to a corresponding set of values anywhere that a value can normally be bound to a single variable. During loop expansion, each variable in the variable list is matched with the values in the values list. If there are more variables in the variable list than there are values in the values list, the remaining variables are given a value of nil. If there are more values than variables listed, the extra values are discarded.
To assign values from a list to the variables a, b, and c, the for clause could be used to bind the variable numlist to the car of the supplied form, and then another for clause could be used to bind the variables a, b, and c sequentially.
;; Collect values by using FOR constructs. (loop for numlist in '((1 2 4.0) (5 6 8.3) (8 9 10.4)) for a of-type integer = (first numlist) and b of-type integer = (second numlist) and c of-type float = (third numlist) collect (list c b a)) => ((4.0 2 1) (8.3 6 5) (10.4 9 8))
Destructuring makes this process easier by allowing the variables to be bound in each loop iteration. Types can be declared by using a list of type-spec arguments. If all the types are the same, a shorthand destructuring syntax can be used, as the second example illustrates.
;; Destructuring simplifies the process. (loop for (a b c) of-type (integer integer float) in '((1 2 4.0) (5 6 8.3) (8 9 10.4)) collect (list c b a)) => ((4.0 2 1) (8.3 6 5) (10.4 9 8)) ;; If all the types are the same, this way is even simpler. (loop for (a b c) of-type float in '((1.0 2.0 4.0) (5.0 6.0 8.3) (8.0 9.0 10.4)) collect (list c b a)) => ((4.0 2.0 1.0) (8.3 6.0 5.0) (10.4 9.0 8.0))
If destructuring is used to declare or initialize a number of groups of variables into types, the loop keyword and can be used to simplify the process further.
;; Initialize and declare variables in parallel by using the AND construct. (loop with (a b) of-type float = '(1.0 2.0) and (c d) of-type integer = '(3 4) and (e f) return (list a b c d e f)) => (1.0 2.0 3 4 NIL NIL)
If nil is used in a destructuring list, no variable is provided for its place.
(loop for (a nil b) = '(1 2 3) do (return (list a b))) => (1 3)
Note that dotted lists can specify destructuring.
(loop for (x . y) = '(1 . 2) do (return y)) => 2 (loop for ((a . b) (c . d)) of-type ((float . float) (integer . integer)) in '(((1.2 . 2.4) (3 . 4)) ((3.4 . 4.6) (5 . 6))) collect (list a b c d)) => ((1.2 2.4 3 4) (3.4 4.6 5 6))
An error of type program-error is signaled (at macro expansion time) if the same variable is bound twice in any variable-binding clause of a single loop expression. Such variables include local variables, iteration control variables, and variables found by destructuring.


This delicious sandwich is flavorfull and easy to make. Definitely for those who love mozzarella.
Ciabatta bread
1 tablespoon extra virgin olive oil
4 ounces sliced fresh mozzarella
thin tomato slices (enough for your bread and depeding on your taste)
salt and freshly ground pepper
8 large basil leaves
Pesto can be used instead of Basil or you can use them together
Instructions:
Preheat the Ciabatta bread in the oven. After heating up the bread to perfection lightly brush one side of each slice of bread with olive oil. Layer the mozzarella cheese and the tomato. Season lightly with salt and pepper the amount is up to you. Add the basil leaves over the tomato. Top with the other bread slice oiled side down. Re-heat in the oven or microwave(2 minutes). The cheese shpuld be semi melted and it's ready to serve


{% extends 'groups/base.html' %} {% block content %}
You can add people to this course by using UW Groups. Learn more about using UW Groups or browse to find groups.
You have unsaved changes.
Please allow up to 10 minutes for changes to take effect.
One or more errors occurred while adding your group


| Library: | Wiring |
| Introduced: | 2.0 Beta 1 (in Base library, moved to Wiring in 2.7.0) |
| Appearance: |
A pin is an output or an input to a circuit, depending on the value of its Output? attribute. In drawing a pin, Logisim represents output pins using a circle or rounded rectangle, and input pins are represented using squares or rectangles. In either case, the individual bits of the value being sent or received is displayed within the component (except within printer view, when the component only says how many bits wide the pin is).
A pin is a convenient component for interacting with a circuit, and beginning Logisim users need not use them in any other way. But a user building a circuit using several subcircuits (as described in the `Subcircuits' section of the User's Guide) will use pins also to specify the interface between a circuit and a subcircuit. In particular, a circuit layout's pin components define the pins that appear on the subcircuit component when the layout is used within another circuit. In such a circuit, the values sent and received to those locations on the subcircuit component are tied to the pins within the subcircuit layout.
A pin component has only one pin, which will be an input to the component if the pin is an output pin, and it will be an output to the component if the pin is an input pin. In either case, its bit width matches the Data Bits attribute, and its location is specified by the Facing attribute.
When the component is selected or being added,
Alt-0 through Alt-9 alter its Data Bits
attribute,
the arrow keys alter its Facing
attribute,
and Alt with an arrow key alters its Label Location
attribute.
Clicking an output pin has no effect, although the pin's attributes will be displayed.
Clicking an input pin will toggle the bit that is clicked. If it is a three-state pin, then the corresponding bit will rotate between the three states.
If, however, the user is viewing the state of a subcircuit as described in the `Debugging Subcircuits' of the User's Guide, then the pin's value is pinned to whatever value the subcircuit is receiving from the containing circuit. The user cannot change the value without breaking this link between the subcircuit's state and the containing circuit's state, and Logisim will prompt the user to verify that breaking this link is actually desired.
Allows the label associated with the component to be edited.


# blog-org #+TITLE: Blog posts All the blog posts: #+INCLUDE: sitemap.org::*posts :only-contents t # blog-org ends here


DAO Build Guide
Section I
General Starting Class Overview
The Warrior
The Rogue
The Mage
Section II
Class Specialization
Warrior Specs
Rogue Specs
Mage Specs
Section III
The Tank
The Two-Hander
The Dual Wielder
The Archer
A Preface on Mage Builds
The Nuker
The Support Healer
The Debilitator
The Spellsword
A Quick Guide To Spell Combos
Section IV
Noteworthy Gear
Amulets, Belts, and Rings
Mage Armour
Light Armour
Medium Armour
Heavy Armour
Massive Armour
Shields
Waraxes, Maces and Longswords
Battleaxes, Greatswords and Mauls
Bows
Daggers and Staves
Section V
Building and Developing Your Team
Alistair
Morrigan
The Dog
Leliana
Sten
Zevran
Wynne
Shale
Oghren
Final Character
Versions
Version 1


Authentication
To access the API you need to send an X-API-Token
HTTP header holding your API token.
In order to get your own token by email, click the following link:
Send My REST API Token By Email
Your API token is personal and should not be shared with anyone. In particular, it must
never be provided to a customer or a partner for any purpose, or included in a program that
is used outside of Infinidat.


FIT4Green provides a generic communication module for enabling the communication between FIT4Green and the Resource Management System (RMS) which is used on a dedicated supercomputer. This communication module has to be adapted to the needs of the present RMS. There are different ways to adapt the communication module to the FIT4Green plug-in:
There is already a communication module provided in the FIT4Green software stack which is preconfigured to use the common used Torque/PBS resource manager. This communication module has been tested with the Torque versions <= 2.5.9.
It is necessary to edit the properties file of that Torque communication module. The name of the properties file is predetermined by the name of the module. For example if the module name in the central f4gconfig.properties file is COMDatacentreXYZ_ClusterA, the name of the properties file must be COMDatacentreXYZ_ClusterA.properties. This file must be placed in the Tomcat installation folder of the FIT4Green instance:
FIT4Green_TOMCAT_INSTALLATION/common/classes/resources/COMDatacentreXYZ_ClusterA.properties
The README file in the project folder of the supercomputing communication module provides the meaning of the particular properties. The most important properties are the definitions of the used actions to save energy or to start jobs in the cluster environment.
The provided supercomputing communication module was designed to use the Torque RMS. However, the implementation reflects typical tasks which have to be performed in the same way by different RMS. So, the main class org.f4g.com.pbs.ComPBS can be likely used and modified only slightly. The classes which send requests to the Torque RMS and parse the output can be found in package org.f4g.com.pbs.common. These classes have to be adapted to the requirements of the used RMS for getting Node and Job information, sending actions to the system, and reading failure messages.
TThe simplest way is to place the FIT4Green server containing the supercomputing communication module directly on the login node of the cluster machine, so that updates and actions can be directly gathered and started on the cluster. In such a scenario FIT4Green must run as the root user, since RMS updates are gathered by requesting the PBS DIS interface.
It might be the case that administrators do not want to install FIT4Green on the cluster. For that purpose a so called proxy application is provided which can be installed on the login node of the cluster. The communication module connects to the proxy by using secure Java Socket connections and the proxy executes updates and actions on behalf of the communication module. For enabling such a connection it is needed to:
Yes. The University of Mannheim implemented a solution where RMS updates can be requested without root access. Please check the README of the proxy project for that purpose.
The proxy can simply be started by executing the start_proxy.sh script in the installation directory. After starting, the Socket server waits for client requests from the communication module.
It is necessary to provide some shell scripts on the cluster side which can be used by FIT4Green and the communication module to execute node, job, and energy saving based actions on the cluster. For that purpose some scripts are already provided which were specified for the test-bed environment but can also be used as a basis for customized scripts. These scripts can be found in the conf folder of the FZJProxy project. The following scripts were used and can be adapted appropriately:
Before the communication module can be used ensure that the following configuration has been done:
FIT4Green can be used coupled with the Grid middleware Unicore when jobs should be brokered energy efficiently in federated supercomputing environments. In such a scenario, users submit their jobs by using Unicore to a distributed cluster environment against the background that those jobs should be submitted to the most energy efficient machine. Such an installation needs some configuration work to allow Unicore to send job allocation requests to FIT4Green for getting back the best suitable cluster resource. Please refer to the README file in the supercomputing communication module project for a detailed description of such a configuration.


{% extends "websiteBackbone/header.html" %} {% block content %} Contact us Do you have any questions? Please do not hesitate to contact us directly for quotes, hiring inquiries, or general questions. LinkedIn | Email Us | Github {% csrf_token %} Send {% endblock %}
Do you have any questions? Please do not hesitate to contact us directly for quotes, hiring inquiries, or general questions.


Use Testnet:
Choose an action: Issue badge Cancel badge Update badge (by issuer) Update badge (by badgee) Reject badge (by badgee)


What Even Is the Internet!?
5/31/15
Have you ever wondered how the internet works? I haven't actually given it that much thought until recently. Todays blog will cover the fundamental properties of the internet and how it actually works... in a simple explanation of course. To begin, it would make sense to define the internets over all job, to move computerized information from one computer to another. In other words messages are passed from one computer to another until the end destination is met. In essence, the internet acts as the middle ground between computers so they may communicate with one another just like a postal service.
Some of you may be asking, like me, about how the internet actually moves this data around. The public telephone network is responsible for much of the internet however it is important not to mistake telephone networks with internet networks. The difference between these two networks is that a telephone network performs under something called automated circuit switching. Internet, on the other hand, uses something called packet switching where little packets of data from the source are sent into the interwebs and are allowed to travel seperately to their end destination. Packet switching is much more efficient than circuit switching. You don't have to have a permanent connection between the two places that are communicating, for a start, so you're not blocking an entire chunk of the network each time you send a message.
Computers have different jobs on the internet. Some of them are electronic filing cabinets that simply store information and pass it on when requested. These are called servers and the computers in this sense are considered to be clients. Servers are provided by internet service providers (ISP) and are solely responsible for communication between two computers.


Test passes if the characters "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*|abcdefghijklmnopqrstuvwx" appear, in the same order, in the box below.


Contents
This is a design document detailing the cluster maintenance scheduler, HRoller.
To enable automating cluster-wide reboots a new htool, called HRoller, was added to Ganeti starting from version 2.7. This tool helps parallelizing cluster offline maintenances by calculating which nodes are not both primary and secondary for a DRBD instance, and thus can be rebooted at the same time, when all instances are down.
The way this is done is documented in the hroller(1) manpage.
We would now like to perform online maintenance on the cluster by rebooting nodes after evacuating their primary instances (rolling reboots).
In order to perform rolling maintenance we need to migrate instances off the nodes before a reboot. How this can be done depends on the instance’s disk template and status:
If an instance was shutdown when the maintenance started it will be considered for avoiding contemporary reboot of its primary and secondary nodes, but will not be considered as a target for the node evacuation. This allows avoiding needlessly moving its primary around, since it won’t suffer a downtime anyway.
Note that a node with non-redundant instances will only ever be considered good for rolling-reboot if these are down (or the checking of status is overridden) and an explicit option to allow it is set.
Each node must migrate all instances off to their secondaries, and then can either be rebooted, or the secondaries can be evacuated as well.
Since currently doing a replace-disks on DRBD breaks redundancy, it’s not any safer than temporarily rebooting a node with secondaries on them (citation needed). As such we’ll implement for now just the “migrate+reboot” mode, and focus later on replace-disks as well.
In order to do that we can use the following algorithm:
All non-DRBD disk templates that can be migrated have no “secondary” concept. As such instances can be migrated to any node (in the same nodegroup). In order to do the job we can either:
Note that for non-DRBD disks that still use local storage (eg. RBD and plain) redundancy might break anyway, and nothing except the first algorithm might be safe. This perhaps would be a good reason to consider managing better RBD pools, if those are implemented on top of nodes storage, rather than on dedicated storage machines.
If full evacuation of the nodes to be rebooted is desired, a simple migration is not enough for the DRBD instances. To keep the number of disk operations small, we restrict moves to migrate, replace-secondary. That is, after migrating instances out of the nodes to be rebooted, replacement secondaries are searched for, for all instances that have their then secondary on one of the rebooted nodes. This is done by a greedy algorithm, refining the initial reboot partition, if necessary.
Hroller should become able to execute rolling maintenances, rather than just calculate them. For this to succeed properly one of the following must happen:
DRBD nodes’ replace-disks‘ functionality should be implemented. Note that when we will support a DRBD version that allows multi-secondary this can be done safely, without losing replication at any time, by adding a temporary secondary and only when the sync is finished dropping the previous one.
Non-redundant (plain or file) instances should have a way to be moved off as well via plain storage live migration or gnt-instance move (which requires downtime).
If/when RBD pools can be managed inside Ganeti, care can be taken so that the pool is evacuated as well from a node before it’s put into maintenance. This is equivalent to evacuating DRBD secondaries.
Master failovers during the maintenance should be performed by hroller. This requires RPC/RAPI support for master failover. Hroller should also be modified to better support running on the master itself and continuing on the new master.


The Flink project welcomes all sorts contributions in the form of code (improvements, features, bugfixes), documentation, tests, and community participation (discussions & questions).
We maintain all known issues and feature drafts in the Flink project JIRA.
We also try to maintain a list of simple "starter issues" that we believe are good tasks for new contributors. Those tasks are meant to allow people to get into the project and become familiar with the process of contributing. Feel free to ask questions about issues that you would be interested in working on.
In addition, you can find a list of ideas for projects and improvements in the projects wiki page.
This section gives you a brief introduction in how to contribute code and documentation to Flink. We maintain both the code and the documentation in the same repository, so the process is essentially the same for both. We use git for the code and documentation version control.
The Flink project accepts code contributions though the GitHub Mirror, in the form of Pull Requests. Pull requests are basically a simpler way of offering a patch, by providing a pointer to a code branch that contains the change.
The first step is to create yourself a copy of the Flink code base. We suggest to fork the Flink GitHub Mirror Repository into your own GitHub account. You need to register on GitHub for that, if you have no account so far.
Next, clone your repository fork to your local machine.
git clone https://github.com/<your-user-name>/incubator-flink.git
It is typically helpful to switch to a topic branch for the changes. To create a dedicated branch based on the current master, use the following command:
git checkout -b myBranch master
Now you can create your changes, compile the code, and validate the changes. Here are some pointers on how to set up the Eclipse IDE for development, and how to build the code.
After you have finalized your contribution, verify the compliance with the contribution guidelines (see below), and commit them. To make the changes easily mergeable, please rebase them to the latest version of the main repositories master branch. Assuming you created a topic branch (step 3), you can follow this sequence of commands to do that: Switch to the master branch, update it to the latest revision, switch back to your topic branch, and rebase it on top of the master branch.
git checkout master
git pull https://github.com/apache/incubator-flink.git master
git checkout myBranch
git rebase master
Have a look here for more information about rebasing commits.
Push the contribution it back into your fork of the Flink repository.
git push origin myBranch
Go the website of your repository fork (https://github.com/<your-user-name>/incubator-flink
) and use the "Create Pull Request" button to start creating a pull request. Make sure that the base fork is apache/incubator-flink master
and the head fork selects the branch with your changes. Give the pull request a meaningful description and send it.
Before sending a patch or pull request, please verify that it complies with the guidelines of the project. While we try to keep the set of guidelines small and easy, it is important to follow those rules in order to guarantee good code quality, to allow efficient reviews, and to allow committers to easily merge your changes.
Please have a look at the coding guidelines for a guide to the format of code and pull requests.
Most important of all, verify that your changes are correct and do not break existing functionality. Run the existing tests by calling mvn verify
in the root directory of the repository, and make sure that the tests succeed. We encourage every contributor to use a continuous integration service that will automatically test the code in your repository whenever you push a change. Flink is pre-configured for Travis CI, which can be easily enabled for your private repository fork (it uses GitHub for authentication, so you so not need an additional account). Simply add the Travis CI hook to your repository (settings --> webhooks & services --> add service) and enable tests for the "incubator-flink" repository on Travis.
When contributing documentation, please review the rendered HTML versions of the documents you changed. You can look at the HTML pages by using the rendering script in preview mode.
cd docs
./build_docs.sh -p
Now, open your browser at http://localhost:4000
and check out the pages you changed.
There is no strict protocol for becoming a committer. Candidates for new committers are typically people that are active contributors and community members.
Being an active community member means participating on mailing list discussions, helping to answer questions, being respectful towards others, and following the meritocratic principles of community management. Since the "Apache Way" has a strong focus on the project community, this part is very important.
Of course, contributing code to the project is important as well. A good way to start is contributing improvements, new features, or bugfixes. You need to show that you take responsibility for the code that you contribute, add tests/documentation, and help maintaining it.
Finally, candidates for new committers are suggested by current committers, mentors, or PMC members, and voted upon by the PMC.


I am a PhD candidate at the University of North Carolina at Chapel Hill. My philosophical interests lie in ethics (normative and applied), social and political philosophy, and moral psychology.
I am writing my dissertation on trust, with a specific focus on trusting attitudes, and groups as their object. We frequently report trusting (or not trusting) such groups as "The Police," "The Church," or "The University." What kind of attitudes are we reporting when we do this? What about groups could make them worthy of such attitudes? Can we understand the answers to these questions by analyzing interpersonal trust? And if groups can't be worthy of trust, do we lose something of significance? I aim to provide answers to these questions that will also shed light on how our lives might go better or worse, in a world in which our connections to others are increasingly mediated by our relations to various groups.
I wrote my MA thesis on justice in Adam Smith's Theory of Moral Sentiments. Prior to coming to Chapel Hill, I completed my BA at St. Olaf College, studying both philosophy and international development.