Here's What I Do
I'm a computer engineer, graduated in 2013. I worked as software developer until 2015, then I decided to have a little change in carreer and become a manager in a store in a Municipal Market in Belo Horizonte. But after these almost 3 years I want keep learning new techonology and wanto to go back to my development.
My skills
Look what I like to do:
- C#
- HTML
- Javascript - stil learning
- Learning Ruby on rails
Drop me a line
You can talk to me sending me an e-mail or a message on facebook. E-mail Diogo Lima Diogo Lima


My Test Scores
- Concreete Sequential(CS) 36
- Abstract Sequential(AS) 24
- Abstract Random(AR) 40
- Abstract Sequential(AS) 24
My Own Assessment During Phase 0
Gregorc's Mind Styles Model makes a suprisingly good sense to me because what I stuggled most during
phase 0 were blogging and pairing.
Aside from the fact that I don't really like wrting, I'm just not good at sharing my thoughts with others.
It's not that I don't care about the subject but I am very shy when it comes to exposing my feelings and thoughts
I think because I'm afraid of rejection. And also I just don't think that people care so much to hear ehat I have to say and
I don't want to bore them.
Pairing was a little hard for me for the similar reason. Even though I had a great time paring every one of my partners but
I can tell that I'm not at my most confortable level. What I experinced was, however, that I gradually got used to paring and didn't
feel unconfortable as much as I used to and I am glad that pairing was one of the requirements because I did learn a lot from others and
O also got to know my future class mates in advance!
Strategy for Phase 1 and beyond at DBC
I think that its't the best to have a simple plan so that I won't constantly thinking about what I'm supposed to do during school. I just need focus on why I decided to go to DBC. I wanted to learn programming and become a good programmer with people who have the same goal. Also, have completely different experience from the past and expose myself to new things. WHen I think about all the reasons why I made the choice, it makes me feel better I feel a little unconfortable because at the end, I think to myself, "that's exactly how I should be feeling!".


Fluorescence-detected magnetic field effects on radical pair reactions from femtolitre volumes.
We show that the effects of applied magnetic fields on radical pair reactions can be sensitively measured from sample volumes as low as ∼100 femtolitres using total internal reflection fluorescence microscopy. Development of a fluorescence-based microscope method is likely to be a key step in further miniaturisation that will allow detection of magnetic field effects on single molecules.


Aims to quantify time intensity data by using sigmoidal and double sigmoidal curves. It fits straight lines, sigmoidal, and double sigmoidal curves on to time vs intensity data. Then all the fits are used to make decision on which model (sigmoidal, double sigmoidal, no signal or ambiguous) best describes the data. No signal means the intensity does not reach a high enough point or does not change at all over time. Sigmoidal means intensity starts from a small number than climbs to a maximum. Double sigmoidal means intensity starts from a small number, climbs to a maximum then starts to decay. After the decision between those four options, the algorithm gives the sigmoidal (or double sigmoidal) associated parameter values that quantifies the time intensity curve. The origin of the package name came from "SIngle CEll Growth Analysis in R".
| Version: | 0.2.2 |
| Imports: | dplyr, minpack.lm, fBasics, ggplot2, stats |
| Suggests: | covr, cowplot, testthat, vdiffr, knitr |
| Published: | 2017-10-17 |
| Author: | M. Umut Caglar [aut, cre], Claus O. Wilke [aut] |
| Maintainer: | M. Umut Caglar <umut.caglar at gmail.com> |
| BugReports: | https://github.com/wilkelab/sicegar/issues |
| License: | GPL-2 | GPL-3 |
| URL: | https://github.com/wilkelab/sicegar |
| NeedsCompilation: | no |
| Materials: | README |
| CRAN checks: | sicegar results |
| Reference manual: | sicegar.pdf |
| Vignettes: |
Calculation of additional parameters of interest Identifying the best-fitting model category Fitting individual models Introduction Plotting the fitted models |
| Package source: | sicegar_0.2.2.tar.gz |
| Windows binaries: | r-devel: sicegar_0.2.2.zip, r-release: sicegar_0.2.2.zip, r-oldrel: sicegar_0.2.2.zip |
| OS X binaries: | r-release: sicegar_0.2.2.tgz, r-oldrel: sicegar_0.2.2.tgz |
| Old sources: | sicegar archive |
Please use the canonical form https://CRAN.R-project.org/package=sicegar to link to this page.


--- layout: post title: Ship Great Apps Faster By Collaborating With Designers ---
Whenever I hangout with mobile developers at meetups, I hear a bunch of misconceptions tossed around, but one of the most pernicious is the belief that designers are head-in-the-clouds artists, throwing pixels around without concern for what it will mean to implement their creation. On the surface, this comparison is apt; both artists and designers create visual artifacts out of ink, paper, and pixels. Dig a little deeper into what designers do every day though, and you will discover that that design is not art. Rather, design is a problem solving discipline which tackles a different, but complementary, set of problems to the ones engineers solve when creating a product. Once engineers internalize this idea of designers as problem solvers and not artists, it opens up a whole new mode of collaboration which allows for otherwise impossible products to be shipped.
Unfortunately, most product and engineering teams operate in a way which makes building this type of understanding difficult. Many teams make problem definition and ideation solely the realm of designers and product managers with engineers only getting involved once a mock-up is mostly finalized.
In this world, it’s easy to see why engineers see designers as artists and not problem solvers. If all an engineer sees is a Sketch file with some redlines, it’s easy to be blind to all the work that went into figuring out what to put on the design, and instead focus on the pixel massaging necessary to make it look good.
This process failure isn’t a problem in the happy path of product development: designers propose solutions which fit easily within the platform constraints, and engineers are able to implement them with some light back and forth. Unfortunately, very few mock-ups can be implemented on this happy path. Maybe the mock-up proposes adding a bunch of custom one-off dimensions to the layout, which will make it hard to maintain in the future. Or perhaps there’s an animation which seems simple, but would actually take weeks to implement (I’m looking at you, keyboard animations on Android). What’s a team to do in this case?
The choice I hear all too frequently is to push-and-pull until one side “wins”. Either the design is implemented as-is, regardless of platform standards and technical debt incurred, or the feature gets axed as “technically infeasible”. This type of thinking is a classic example of positional bargaining, with designers and engineers negotiating against each other about what the final product should look like. Both of these miss the point though, as what they should really be asking is “what are we trying to solve in the first place, and how can we build a solution which gets us there in the best way possible?”
Once the problem has been reframed that way then folks on both sides of the table can start to work together to make it a reality. Animations can be changed, dimensions tweaked, and platform-specific widgets can be used to replace the custom solution that was initially designed. All of these changes work together to create a product that solves the same problems for users, but can be shipped faster and with more maintainable code.
This promised land of faster shipping, happier teams, and satisfied users sounds great, but getting to this type of collaboration does not happen overnight. It requires a large amount of education for both designers and developers so that they can understand the impacts of ignoring the others’ concerns.
Fortunately, Google has started shouldering some of the burden by doing an all-out Material design education push. This has helped designers understand the principles behind how to build beautiful Android applications, and it has helped engineers understand the types of problems their design teams aim to solve day-in and day-out. At the same time, the Material guidelines are just that: guidelines; sometimes they will need to be bent, or even broken in order to solve a particular problem. In those cases, there is no substitute for engineers and designers understanding some core principles of how the other discipline works.
So if you’re an engineer, and you encounter a design which seems like it has some unforeseen technical consequences, take time to talk about those challenges and the impact they’ll have on your project. And if you’re a designer sharing a mock-up, don’t throw some redlines on a sketch file and assume your engineers will understand ideas like grouping, and consistency; take time to educate engineering teams on the “why’s” of a particular design, including some of the fundamental principles they may not even be aware of. You may just be surprised at the end result.
Curious of what this looks like in action?
When we redesigned the Yelp Android application in 2014, all the mock-ups called for bottom tabs even though the Android design guidelines specifically told us not to do it. Our engineers read those design guidelines and expressed concerns about the mock-ups the design team, citing concerns about platform. Our design team listened to our concerns, explained why we wanted persistent tabs in the application, and showed all of the other possible iterations, along with an explanation about why something like top tabs (which were standard at the time) were insufficient. At the same time, the initial mock-ups called for those tabs to stay consistent, but the screen content would still animate. We tried A LOT of different ways to make this happen, but short of rewriting the whole app to use Fragments (which would’ve been a mammoth undertaking), or doing some janky UI tricks on every Activity, we couldn’t figure out how to make this happen. As a result, we decided to just remove transitions entirely from our app. We were all bummed that we couldn’t get the type of beautiful transitions that we initially wanted, but we delivered the most important parts of the design and didn’t build a mountain of technical debt.
A big thanks goes out to Briana Como and Ramya Mallya, both of whom helped tremendously in providing context and editing for the thoughts here.


Our Story
Kenna Littlefield is Level 9 gymnast at OOA Gymnastics and loves to coach, but is usually busy practicing. The summer after her freshman year of high school, she knew she wanted to do something for her community and that she was very passionate about gymnastics. She also understood that gymnastics was expensive and, therefore, unavailable to many families in the community. She came up with the idea of organizing and coaching a free gymnastics class, and The Flips Project was born.
Over the next several months she was busy with planning. She contacted her friends from the gym and had a meeting with 30 potential volunteers. OOA Gymnastics graciously gifted her the use of their facility. She made flyers and began working with FAN and reaching out to other community leaders for advice and marketing suggestions. The first class was the summer of 2018, which wasn’t flawless but allowed for some great learning. Over the school year the class was restructured and began again in Spring of 2019. It continued smoothly through the summer and hopefully will continue to flourish throughout the year and for many to come.
We are currently looking to grow the program and spread the word through the website, flyers, and a social media presence. We are constantly looking for new volunteers to help with marketing, social media, and coaching. Our next steps towards the vision of increasing the accessibility to gymnastics is to be able to sponsor gymnasts to continue after the 8 weeks in recreational classes through OOA and possibly the competitive team. Sponsors and Donations from the community would make this possible.


{% extends 'base.html'%} {% import "bootstrap/wtf.html" as wtf %} {% block content %} {% block styles%} {{ super() }} {% endblock %}
|PICKUP LINES|
- I'm not drunk, I'm just intoxicated by you.
- I see you, when you see me.
|INTERVIEW PITCH|
- Who are you what do you do?
- What make yoou think you are good at this position?
- What do you want in your future career?
|PRODUCT PITCH|
- The goal is to sell.
- Too salesy?It'll put off your audience
- Are any of those product types?
|PROMOTION PITCH|
- He replaced me in scranton when I got this promotion.


ULEE'S GOLD A film review by James Berardinelli Copyright 1997 James Berardinelli
RATING (0 TO 10): 8.0 Alternative Scale: ***1/2 out of ****
United States, 1997 U.S. Release Date: 6/20/97 (limited) Running Length: 1:51 MPAA Classification: R (Profanity, violence) Theatrical Aspect Ratio: 1.85:1
Cast: Peter Fonda, Patricia Richardson, Jessica Biel, J. Kenneth Campbell, Christine Dunford, Steven Flynn, Dewey Weber, Tom Wood, Vanessa Zima Director: Victor Nunez Producer: Victor Nunez Screenplay: Victor Nunez Cinematography: Virgil Marcus Mirano Music: Charles Engstrom U.S. Distributor: Orion Classics
ULEE'S GOLD is the first movie since MICROCOSMOS to prod my thoughts towards the invisible world of insects (bees in particular). This film illustrates that the power of motion pictures isn't always about taking us to strange worlds or putting us in the path of an enraged dinosaur. Instead, it can be something as simple-yet-profound as opening our eyes to how different people survive in the real world. The title character in ULEE'S GOLD is a beekeeper who lives and works in the Florida Panhandle's tupelo marshes, and, although this is a narrative feature, not a documentary, it taught me a great deal about the difficulties of harvesting of honey. Yet, as important as honeycombs and beekeeping are to the story, they are not the central focus. This movie, from writer/director Victor Nunez, whose previous film was Ashley Judd's debut, RUBY IN PARADISE, is about damaged characters and fractured relationships. Ultimately, it's this aspect of the film that makes it compelling; the honey-making stuff is an added bonus.
It's worth noting that Ulee (Peter Fonda, in a performance that recalls the work of his late father, Henry Fonda) is more comfortable dealing with his bees than with people. Since the death of his wife six years ago, he has turned into a physical and emotional recluse. He lives with his two granddaughters, Penny (Vanessa Zima) and Casey (Jessica Biel), who were abandoned by their parents. Their father and Ulee's son, Jimmy (Tom Wood), is serving a sentence for armed robbery. Their mother, Helen (Christine Dunford), has dropped out of sight. One day, during the busiest time of the honey-making season, Ulee receives a call from Jimmy, who claims that a couple of his former criminal associates have located Helen, strung out on drugs, in Orlando. Reluctantly, Ulee makes the trip to bring his daughter-in-law home, and, in the process, becomes involved in a search for old robbery money.
The crime-related activities of ULEE'S GOLD represent the film's least interesting aspect, and the criminals (played by Steven Flynn and Dewey Weber) scarcely rise about the stereotype level. Fortunately, the movie offers far richer and more complex elements, such as how Ulee relates to Penny, a quiet, introverted child who misses her mother, and Casey, a rebellious teenager. Or how he struggles to mend fences with Jimmy and Helen. Or how he learns to once again trust outsiders, including the local sheriff (J. Kenneth Campbell) and Connie (Patricia Richardson), an attractive nurse renting a house across the street.
With ULEE'S GOLD, Peter Fonda reminds us that he is capable of much more than making quirky cameos in the likes of LOVE AND A .45, BODIES REST AND MOTION, and ESCAPE FROM L.A. This is a subtle, nuanced performance that brings to the fore all of Ulee's pain and uncertainty, then hides it beneath a carefully-constructed facade. Fonda shows us a man who wants to relate to those around him, but is no longer sure how. It's fitting that Ulee bonds with his daughter-in-law and granddaughters amidst the bees and honeycombs.
Supporting Fonda is a cast of fresh and familiar faces. Patricia Richardson, best known for her role in TV's HOME IMPROVEMENT, plays a decidedly different sort of character here, and acquits herself admirably. As Ulee's granddaughters, Vanessa Zima (THE BABYSITTERS' CLUB) and newcomer Jessica Biel give strong, unaffected performances. Christine Dunford has the difficult task of essaying the drugged-out Helen, and Tom Wood is quietly effective as Jimmy.
Nunez's script is thoughtful and intelligent, and it challenges his actors with fully-formed personalities for them to breathe life into (Peter Fonda, in fact, called Ulee "the best character I've ever read"). The highest compliment I can offer ULEE'S GOLD is that it plays more like real life than a movie. During the course of the film, we learn a little about the different grades of honey. And, just as the light golden Tupelo is in the top echelon, so too is ULEE'S GOLD.
- James Berardinelli e-mail<EMAIL_ADDRESS>ReelViews web site: http://www.cybernex.net/~berardin
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


| Modifier and Type | Field and Description |
|---|---|
protected processing.core.PImage |
frightened |
protected processing.core.PImage |
ghost |
protected int |
goHorizontal |
protected int |
goVertical |
protected boolean |
isAlive |
protected boolean |
isFrightened |
protected boolean |
isInvisible |
protected int |
speed |
protected int |
startFrightenedTime |
protected int |
startX |
protected int |
startY |
protected int[] |
target |
protected int |
x |
protected int |
y |
| Constructor and Description |
|---|
Chaser(int x,
int y,
processing.core.PImage ghost,
processing.core.PImage frightened,
int speed)
Constructs a new Chaser object.
|
| Modifier and Type | Method and Description |
|---|---|
double |
calculateDistance(int startX,
int startY,
int endX,
int endY)
Calculate the distance between two positions
|
boolean |
canGo(java.lang.String direction,
MyMap map)
Whether one direction can go.
|
void |
checkTarget()
If the target location is outside the bounds of the grid, the closest point is used.
|
java.util.List<java.lang.String> |
constructPriorities()
Construct a list of string represents the priority in the four directions.
|
void |
die()
Make this ghost die
|
void |
draw(processing.core.PApplet app)
Draw the ghost
If any reference parameter is null, do nothing.
|
static boolean |
drawGhosts(processing.core.PApplet app,
java.util.List<java.lang.Integer> modeLengths,
int frameCount,
int frightenedLen,
java.util.List<Chaser> allGhosts,
java.util.List<Chaser> chasers,
Player player,
MyMap map)
Draw all ghosts according to their modes.
|
void |
drawLine(processing.core.PApplet app)
Draw the line between the ghost and its target
If any reference parameter is null, do nothing.
|
boolean |
getFrightened()
Set the status of this ghost.
|
boolean |
getIsAlive()
Judge this ghost is alive or not
|
boolean |
getIsInvisible()
Get the ghost is invisible or not.
|
int[] |
getTarget()
Get the target of chaser
|
int |
getX()
Get the x-asis position of the chaser
|
int |
getY()
Get the y-asis position of the chaser
|
void |
move()
Move the chaser according to field 'goHorizon' and field 'goVertical'
|
static int[] |
prefixSum(java.util.List<java.lang.Integer> modeLengths)
prefix sum of the list modeLengths
If any reference parameter is null, return null.
|
void |
reset()
Reset the player's position to the initial position.
|
void |
setAlive(boolean status)
Set the ghosts is alive of not
|
void |
setDirection(java.lang.String direction)
Change the displacement in the corresponding direction.
|
void |
setFrightened(boolean status)
Set the status of this ghost.
|
void |
setInvisible(boolean status)
Set the invisible status.
|
void |
setMode(boolean isScatter,
Player player,
MyMap map,
Chaser chaser)
Set the mode of the player.
|
void |
setPosition(int x,
int y)
Set the position of this ghost
|
void |
setPriorityDirection(java.util.List<java.lang.String> priorities,
MyMap map)
Change the displacement of the chaser in the most suitable direction.
|
void |
updateTarget(boolean isScatter,
Player player,
Chaser chaser)
Update the target according to different modes.
|
protected int x
protected int y
protected int startX
protected int startY
protected int goHorizontal
protected int goVertical
protected processing.core.PImage ghost
protected processing.core.PImage frightened
protected boolean isAlive
protected int speed
protected int[] target
protected boolean isFrightened
protected boolean isInvisible
protected int startFrightenedTime
public Chaser(int x, int y, processing.core.PImage ghost, processing.core.PImage frightened, int speed)
x
- the x-axis positiony
- the y-axis positionghost
- image of chaserfrightened
- image of frightened chaserspeed
- the speed of chaserpublic void move()
When goHorizon is greater than 0, it means y-axis plus goHorizon which is positive, go down, vice versa. When goVertical is greater than 0, it means x-axis plus goVertical which is positive, go right, vice versa.
public int getX()
public int getY()
public int[] getTarget()
public boolean getFrightened()
public void setFrightened(boolean status)
status
- true is frightened, false is not frightened.public void draw(processing.core.PApplet app)
app
- An object of App class which is a subclass of PApplet.public void drawLine(processing.core.PApplet app)
app
- An object of App class which is a subclass of PApplet.public boolean getIsAlive()
public void setAlive(boolean status)
status
- alive or deadpublic void die()
public boolean getIsInvisible()
public void setInvisible(boolean status)
status
- Set the ghost's field 'invisible' into value of status.public void setPosition(int x, int y)
x
- x-axisy
- y-axispublic void reset()
public double calculateDistance(int startX, int startY, int endX, int endY)
startX
- x-axis of the start positionstartY
- y-axis of the start positionendX
- x-axis of the end positionendY
- y-axis of the end positionpublic void setMode(boolean isScatter, Player player, MyMap map, Chaser chaser)
isScatter
- whether the player is in scatter mode.player
- An object of the class Player.map
- An object of the class MyMap.chaser
- An object of the class Chaser.public void updateTarget(boolean isScatter, Player player, Chaser chaser)
Upper left corner (0, 0), Upper right corner (28 * 16, 0), Bottom left (0, 35 * 16), Bottom right (28 * 16, 35 * 16)
If any reference parameter is null, do nothing.
isScatter
- If it is true, the mode is 'scatter'.If it is false, the mode is 'chase'.player
- An object of Player.chaser
- An object of the class Chaser.public void checkTarget()
public boolean canGo(java.lang.String direction, MyMap map)
direction
- The string of one direction.map
- An object of MyMappublic java.util.List<java.lang.String> constructPriorities()
public void setDirection(java.lang.String direction)
direction
- direction String, including "Left" "Right" "Up" "Down".public void setPriorityDirection(java.util.List<java.lang.String> priorities, MyMap map)
priorities
- A list of string represents directions.map
- An object of MyMap.public static int[] prefixSum(java.util.List<java.lang.Integer> modeLengths)
For example :
modeLengths: [2, 20, 2, 30, 2, 100]
prefixSum: [0,2, 22, 24, 54, 56, 156]
so the number in prefix sum represents the current time(second)
If the current time is 52, 52 % 156 = 52 and 52 is between 24 and 54.
modeLengths
- The list of integer represents the length of every mode.public static boolean drawGhosts(processing.core.PApplet app, java.util.List<java.lang.Integer> modeLengths, int frameCount, int frightenedLen, java.util.List<Chaser> allGhosts, java.util.List<Chaser> chasers, Player player, MyMap map)
app
- An object of App class which is a subclass of PApplet.modeLengths
- The list of integer represents the length of every mode.frameCount
- The number of current frame.frightenedLen
- The length of frightened.allGhosts
- The list of all ghosts.chasers
- The list of chasers.player
- An object of Player.map
- An object of MyMap.


Placements top-right top top-left right no animate, always, rounded, large, bounce, success left bottom-right bottom bottom-left


--- layout: post status: publish published: true title: "分享我为应付广告学功课而做的iPod包装设计" author: Leask author_login: leask author_email<EMAIL_ADDRESS>author_url: https://leaskh.com wordpress_id: 386 wordpress_url: http://leaskh.wordpress.com/2006/12/22/%e5%88%86%e4%ba%ab%e6%88%91%e4%b8%ba%e5%ba%94%e4%bb%98%e5%b9%bf%e5%91%8a%e5%ad%a6%e5%8a%9f%e8%af%be%e8%80%8c%e5%81%9a%e7%9a%84ipod%e5%8c%85%e8%a3%85%e8%ae%be%e8%ae%a1 date: '2006-12-22 06:33:04 +0800' date_gmt: '2006-12-22 06:33:04 +0800' categories: - Design tags: [] comments: [] ---


Apple Seeds watchOS 6.1.1 Beta 3 to Developers [Download]
by iClarifiedApple has seeded watchOS 6.1.1 beta 3 to developers for testing. The build number is 17S5446a.
No major new features have been discovered yet in watchOS 6.1.1 but we'll let you know if we find any.
Developers can download the watchOS configuration profile from the link below. Please download the iClarified app or follow iClarified on Twitter, Facebook, YouTube, and RSS for updates.
Download


Disney+ comes to UK, France, Italy, and Spain March 31, 2020
Source: Disney
What you need to know
- Disney has announced that Disney+ will be coming to a number of countries in Western Europe March 31, 2020.
- The United Kingdom, France, Spain, and Italy have been confirmed for this launch window with more "to be announced soon".
- Available titles will vary by country.
During today's Investor Call, Disney announced that Disney+ would be coming to a number of Western European countries including France, Italy, Spain, and the United Kingdom on March 31, 2020. This lines up with the "first half of 2020" rollout that western Europe was slated for in the global timeline debuted back during the April Disney+ Investor Day.
If you're in one of these countries, congrats, but remember that just because all of these awesome films and TV shows have been confirmed for launch day next week in the US doesn't mean you'll be seeing them come April. This is especially true for France, where media law states that theatrically-released films are barred from streaming services like Disney+ for three years, meaning you won't see Endgame on Disney+ in France until 2021.


Please Contact Your IT Team


Skinning via Progressive Enhancement using the Event Utility and the Loader
Using Progressive Enhancement to skin checkboxes with the help of the
Loader,
ClassNameManager Utility,
and the Event Utility's focus and blur events and the
delegate method.


Member Directory
Interested in learning who makes up the VTR community? Below is a list of just some of our exceptionally awesome members. If you're interested in becoming a member, learn more here.
{{ range .Data.Pages }} {{ .Render "summary" }} {{ end }}


Successive Prime Number Days
This app lists successive prime number days between given two years. A prime number day means a day which becomes a prime number when expressed as yyyymmdd.
Enter start and end years (1-9999)
Start Year
End Year


Lets get started
Let’s take a super simple http API that’s available on the internet and try to test that. A good example API is - ipify that returns the calling client’s IP address in text/json/jsonp format.
Lets decide up on a mini test plan of sort. Here are the sorts of tests I want to run,
- Test that all features work the way they are expected to
- Test that all features handle bad or empty data as input
This is good enough to start with.
Simplest test case
I usually write the simplest possible test case first. In this case that would be to connect to the API, pass in some value and get an return value. Nothing complicated. I like the requests library in python for such tasks and whats what I’m going to use.
Install the awesome requests library using the below,
pip install requests
Here’s what the simplest test case looks like,
from requests import get
ip = get(‘https://api.ipify.org').text
print(‘My public IP address is: {}’.format(ip))
Lets stick these lines in a script and run it like this
python test_api.py
and here’s what I get as output
(test_env) Deepaks-MBP:tmp dbhaskaran$ python test_api.py
My public IP address is: <IP_ADDRESS>
That was easy.
Hitting other features of the API
Ok great we’ve gotten the basic test written up correctly. Lets try to cover all the basic features of the API first.
Here’s what that code looks like,
from requests import get
test_url = 'https://api.ipify.org'
json_url = 'https://api.ipify.org?format=json'
jsonp_url = 'https://api.ipify.org?format=jsonp'
jsonp_callback_url = 'https://api.ipify.org?format=jsonp&callback=getip'
def get_response(test_url=test_url, format='text'):
if format == 'text':
response = get(test_url)
elif format == 'json':
response = get(json_url)
elif format == 'jsonp':
response = get(jsonp_url)
elif format == 'jsonp_callback':
response = get(jsonp_callback_url)
return response.text
if __name__ == "__main__":
print 'Get Text response'
get_response()
print 'Get JSON response'
print get_response(format='json')
print 'Get JSONP response'
print get_response(format='jsonp')
print 'Get JSONP callback response'
print get_response(format='jsonp_callback')
Here’s what the output looks like,
(perf_test_env) Deepaks-MBP:tmp dbhaskaran$ python test_api.py
Get Text response
<IP_ADDRESS>
Get JSON response
{"ip":"<IP_ADDRESS>"}
Get JSONP response
callback({"ip":"<IP_ADDRESS>"});
Get JSONP callback response
getip({"ip":"<IP_ADDRESS>"});
Negative testing
We can throw some negative tests at this API now and see how it does.
(perf_test_env) Deepaks-MBP:tmp dbhaskaran$ python test_api.py
...
...
Attempt invalid format
<IP_ADDRESS>
Attempt invalid callback url
<IP_ADDRESS>
Attempt special characters in format
<IP_ADDRESS>
Overall looks like the API holds up to these tests well. We haven’t seen much fail yet.
Pytest
I’m going to rewrite the tests into a format that works well with a standard test runner like pytest.
pip install pytest
will take care of the pytest installation for you.
Converted one test to pytest and the output looks like this,
(trial_ground) Deepaks-MBP:tmp dbhaskaran$ pytest test_api.py -v
=============================================================================
test session starts
=============================================================================
platform darwin -- Python 2.7.10, pytest-3.1.2, py-1.4.34, pluggy-0.4.0
-- /Users/dbhaskaran/.virtualenvs/trial_ground/bin/python
cachedir: .cache
rootdir: /private/tmp, inifile:
collected 1 items
test_api.py::TestApi::test_text_response PASSED
==========================================================================
1 passed in 0.25 seconds
===========================================================================
The code now looks like this,
from requests import get
class TestApi():
test_url = 'https://api.ipify.org'
invalid_url = 'https://api.ipify.org?format=invalid'
json_url = 'https://api.ipify.org?format=json'
jsonp_url = 'https://api.ipify.org?format=jsonp'
jsonp_callback_url = 'https://api.ipify.org?format=jsonp&callback=getip'
invalid_callback_url = 'https://api.ipify.org?format=invalid'
def get_response(self, test_url=test_url, format='text'):
if format == 'text':
response = get(test_url)
if format == 'somethinginvalid':
response = get(invalid_url)
elif format == 'json':
response = get(json_url)
elif format == 'jsonp':
response = get(jsonp_url)
elif format == 'jsonp_callback':
response = get(jsonp_callback_url)
elif format == 'jsonp_invalid_callback':
response = get(invalid_callback_url)
if format == 'baddata':
response = get(test_url + '?format=!#$')
return response.text
def test_text_response(self):
print 'Get Text response'
assert self.get_response(format='text') != ''
Lets do all the other tests too.
Here’s what a test failure looks like, as I was in the middle of refactoring my code and ran the tests before finishing up the task.
(trial_ground) Deepaks-MBP:tmp dbhaskaran$ pytest test_api.py -v
============================================================================= test session starts =============================================================================
platform darwin -- Python 2.7.10, pytest-3.1.2, py-1.4.34, pluggy-0.4.0 -- /Users/dbhaskaran/.virtualenvs/trial_ground/bin/python
cachedir: .cache
rootdir: /private/tmp, inifile:
collected 4 items
test_api.py::TestApi::test_text_response PASSED
test_api.py::TestApi::test_json_response FAILED
test_api.py::TestApi::test_jsonp_response FAILED
test_api.py::TestApi::test_jsonp_callback_response FAILED
================================================================================== FAILURES ===================================================================================
I fixed the errors and then all of them started passing.
(trial_ground) Deepaks-MBP:tmp dbhaskaran$ pytest test_api.py -v
============================================================================= test session starts =============================================================================
platform darwin -- Python 2.7.10, pytest-3.1.2, py-1.4.34, pluggy-0.4.0 -- /Users/dbhaskaran/.virtualenvs/trial_ground/bin/python
cachedir: .cache
rootdir: /private/tmp, inifile:
collected 4 items
test_api.py::TestApi::test_text_response PASSED
test_api.py::TestApi::test_json_response PASSED
test_api.py::TestApi::test_jsonp_response PASSED
test_api.py::TestApi::test_jsonp_callback_response PASSED
========================================================================== 4 passed in 0.91 seconds ===========================================================================
Now all the tests have been converted over to pytest tests. Here’s the output,
(trial_ground) Deepaks-MBP:tmp dbhaskaran$ pytest test_api.py
============================================================================= test session starts =============================================================================
platform darwin -- Python 2.7.10, pytest-3.1.2, py-1.4.34, pluggy-0.4.0
rootdir: /private/tmp, inifile:
collected 7 items
test_api.py .......
========================================================================== 7 passed in 1.69 seconds ===========================================================================
And here’s the code,
from requests import get
class TestApi():
test_url = 'https://api.ipify.org'
invalid_url = 'https://api.ipify.org?format=invalid'
json_url = 'https://api.ipify.org?format=json'
jsonp_url = 'https://api.ipify.org?format=jsonp'
jsonp_callback_url = 'https://api.ipify.org?format=jsonp&callback=getip'
invalid_callback_url = 'https://api.ipify.org?format=invalid'
def get_response(self, test_url=test_url, format='text'):
if format == 'text':
response = get(test_url)
if format == 'somethinginvalid':
response = get(self.invalid_url)
elif format == 'json':
response = get(self.json_url)
elif format == 'jsonp':
response = get(self.jsonp_url)
elif format == 'jsonp_callback':
response = get(self.jsonp_callback_url)
elif format == 'jsonp_invalid_callback':
response = get(self.invalid_callback_url)
if format == 'baddata':
response = get(self.test_url + '?format=!#$')
return response.text
def test_text_response(self):
print 'Get Text response'
assert self.get_response(format='text') != ''
def test_json_response(self):
print 'Get Json response'
assert self.get_response(format='json') != ''
def test_jsonp_response(self):
print 'Get Jsonp response'
assert self.get_response(format='jsonp') != ''
def test_jsonp_callback_response(self):
print 'Get Jsonp callback response'
assert self.get_response(format='jsonp_callback') != ''
def test_invalid_format(self):
print 'Attempt invalid format'
assert self.get_response(format='somethinginvalid') != ''
def test_invalid_callback_url(self):
print 'Attempt invalid callback url'
assert self.get_response(format='jsonp_invalid_callback') != ''
def test_special_characters(self):
print 'Attempt special characters in format'
assert self.get_response(format='baddata') != ''


[CHAPTER 344]
STATE ENVIRONMENTAL POLICY
Section
344-1 Purpose
344-2 Definitions
344-3 Environmental policy
344-4 Guidelines
Note
Department of transportation's bridge rehabilitation and replacement program; temporary exemption from certain construction requirements of this chapter through June 30, 2022, or until completion. L 2012, c 218; L 2017, c 48.
Cross References
Development of environmental goals and objectives by department of health, see §321-1.1.
Law Journals and Reviews
A Suggested Framework for Judicial Review of Challenges to the Adequacy of an Environmental Impact Statement Prepared under the Hawaii Environmental Policy Act. 18 UH L. Rev. 719.
Determining the Expiration Date of an Environmental Impact Statement: When to Supplement a Stale EIS in Hawaii. 35 UH L. Rev. 249 (2013).


I'm a Senior at the University of Colorado at Boulder Studying Computer Science with a Minor in Economcis


Endless Plains [ag71], plain, in Imperia, peasants: 103
Last updated Turn #98
Endless Plains [ag71], plain, in Imperia, peasants: 103
------------------------------------------------------------------------
30: The fog has cleared.
30: The population grows by one peasant.
Routes leaving Endless Plains:
North, to Ocean [af71], Crystal Sea, 2 days
East, plain, to Endless Plains [ag72], 7 days
South, forest, to Old Forest [ah71], 8 days
West, plain, to Endless Plains [ag70], 7 days
Seen here:
Stack of nazgul [hw0r], nazgul, number: 3
Stack of giant lizards [jn3r], giant lizards, number: 7
Pack of wolves [ci7f], wolves, number: 3
Horde of rats [cl3v], rats, number: 34
Pack of wolves [hr2n], wolves, number: 2


Importantly, here are two pigs aboard a concrete boat moored in the mud at Burnham-on-Crouch. Readers will recall the town as one where Daniel Defoe reported the existence of fogwives. He had nothing to say of pigs and concrete boats, but it is unlikely, given the sunlight, that we are looking at mistpigs. Note the heavy chain tethering the concrete boat to the mud, to ensure it does not drift off into the River Crouch and cause maritime havoc.
Photograph courtesy of the Pansy Cradledew Maritime Concrete Latter-Day Daguerrotype Company Ltd.


Search
Preparing search index...
The search index is not available
Celer Light Client API Docs
Options
All
Public
Public/Protected
All
Inherited
Externals
Only exported
Menu
Globals
"data/payment"
Payment
Class Payment
Hierarchy
Payment
Index
Constructors
constructor
Properties
incoming
Channel
Id
note
outgoing
Channel
Id
payment
Id
settlement
Amount
status
Methods
get
Conditional
Pay
get
Note
set
Conditional
Pay
calculate
Payment
Id
get
Payment
IdList
Differences
get
Uint8
Array
List
Differences
Constructors
constructor
new
Payment
(
paymentId
:
string
, conditionalPay
:
ConditionalPay
, incomingChannelId
:
string
, outgoingChannelId
:
string
, note
?:
Any
)
:
Payment
Parameters
paymentId:
string
conditionalPay:
ConditionalPay
incomingChannelId:
string
outgoingChannelId:
string
Optional
note:
Any
Returns
Payment
Properties
incoming
Channel
Id
incoming
Channel
Id
:
string
note
note
:
Uint8Array
outgoing
Channel
Id
outgoing
Channel
Id
:
string
payment
Id
payment
Id
:
string
settlement
Amount
settlement
Amount
:
Uint8Array
status
status
:
PaymentStatus
Methods
get
Conditional
Pay
get
Conditional
Pay
(
)
:
ConditionalPay
Returns
ConditionalPay
get
Note
get
Note
(
)
:
Any
Returns
Any
set
Conditional
Pay
set
Conditional
Pay
(
conditionalPay
:
ConditionalPay
)
:
void
Parameters
conditionalPay:
ConditionalPay
Returns
void
Static
calculate
Payment
Id
calculate
Payment
Id
(
payment
:
ConditionalPay
)
:
string
Parameters
payment:
ConditionalPay
Returns
string
Static
get
Payment
IdList
Differences
get
Payment
IdList
Differences
(
a
:
PayIdList
, b
:
PayIdList
)
:
[
Uint8Array
[]
,
Uint8Array
[]
]
Parameters
a:
PayIdList
b:
PayIdList
Returns
[
Uint8Array
[]
,
Uint8Array
[]
]
Static
get
Uint8
Array
List
Differences
get
Uint8
Array
List
Differences
(
aAsArrays
:
Uint8Array
[]
, bAsArrays
:
Uint8Array
[]
)
:
[
Uint8Array
[]
,
Uint8Array
[]
]
Parameters
aAsArrays:
Uint8Array
[]
bAsArrays:
Uint8Array
[]
Returns
[
Uint8Array
[]
,
Uint8Array
[]
]
Globals
"data/payment"
Payment
Status
Payment
constructor
incoming
Channel
Id
note
outgoing
Channel
Id
payment
Id
settlement
Amount
status
get
Conditional
Pay
get
Note
set
Conditional
Pay
calculate
Payment
Id
get
Payment
IdList
Differences
get
Uint8
Array
List
Differences
Made by
Horyus
. Documentation generated by
TypeDoc.


Cookbook/InterfacingWithC
Interfacing with Kdb+ from C
Introduction
The best way to understand the underpinnings of KDB+, and to interact with it from C is to start with the header file available from here.
This is the file you will need to include in your C or C++ code in order to interact with Kdb+ from a low-level.
Note that the k struct changed with the release of v3.0, and if you are compiling using the c library (c.o/c.dll) stamped on or after 2012.06.25 you should ensure you use the correct k struct by defining KXVER accordingly. e.g. gcc -D KXVER=3 ... If you need to link against earlier releases of the c library, you can obtain those files from the svn repository [1], revision 1442.
Lets explore the basic types and their synonyms that you'll commonly encounter when programming at this level. First though, it is worth noting the size of data types in 32 versus 64 bit operating systems to avoid common mistake.
64 bit Linux is an "LP64" operating system. This means that an int is 32 bits, while long, long long and pointers are 64 bits. The same is true for Solaris, AIX, HP-UX, and Mac OS X. Microsoft Windows on the EM64T and AMD64 architectures use a different model, LLP64. This is an attempt to maintain better compatibility with existing 32 bit source code which assumes long will be exactly 32 bits. In the LLP64 model, int and long are 32 bit while long long and pointers are 64 bit. Single precision floating point and double precision are always 32 and 64 bits respectively in all the data type models (ignoring extended or non-standard floating point formats on certain architectures).
To provide succinct composable names, the Kdb+ header defines synonyms for the common types as in the following table:
| Type | Synonym |
| 16 bit int | H |
| 32 bit int | I |
| 64 bit int | J |
| char* | S |
| unsigned char | G |
| char | C |
| 32 bit float | E |
| 64 bit double | F |
| void | V |
With this basic knowledge we can now tackle the types available in Kdb+ and their matching C types and accessor functions provided in the C interface. We will see shortly how the accessor functions are used in practice.
| Kdb+ type name | Kdb+ type number | Encoded type name | C type | Size in bytes | Interface list accessor function |
| mixed list | 0 | - | K | - | kK |
| boolean | 1 | KB | char | 1 | kG |
| guid | 2 | UU | U | 16 | kU |
| byte | 4 | KG | char | 1 | kG |
| short | 5 | KH | short | 2 | kH |
| int | 6 | KI | int | 4 | kI |
| long | 7 | KJ | int64_t | 8 | kJ |
| real | 8 | KE | float | 4 | kE |
| float | 9 | KF | double | 8 | kF |
| char | 10 | KC | char | 1 | kC |
| symbol | 11 | KS | char* | 4 or 8 | kS |
| timestamp | 12 | KP | int64_t | 8 | kJ |
| month | 13 | KM | int | 4 | kI |
| date | 14 | KD | int | 4 | kI (days from 2000.01.01) |
| datetime | 15 | KZ | double | 8 | kF (days from 2000.01.01) |
| timespan | 16 | KN | int64_t | 8 | kJ |
| minute | 17 | KU | int | 4 | kI |
| second | 18 | KV | int | 4 | kI |
| time | 19 | KT | int | 4 | kI (milliseconds) |
| table/flip | 98 | XT | - | - | x->k |
| dict/table with primary keys | 99 | XD | - | - | kK(x)[0] for keys and kK(x)[1] for values |
| error | -128 | - | char* | 4 or 8 | kS |
Note that the type numbers given are for vectors of that type. For example, 9 for vectors of the Kdb+ type float. By convention, the negative value is a scalar: -9 is the type of a scalar float value.
The K object structure
The Kdb+ types are all encapsulated at the C level as "K objects". Recall that k is the low-level language underlying the q language in Kdb+. K objects are all instances of the following structure (note this is technically defining K objects as pointers to the the k0 structure but we'll conflate the terms and refer to K objects as the actual instance).
typedef struct k0 { I r; // The object's reference count H t, u; // The object's type and attribute flags union { // The data payload is contained within this union. // The scalars are held in the following members: G g; H h; I i; J j; E e; F f; S s; // The following members are used for more complex data. struct k0*k; struct { I n; G G0[1]; }; }; }*K;
This struct has been modified for v3.0, the new members (m and a) are for kdb+ internal use.
As an exercise, it is instructive to count the minimum and maximum number of bytes a K object can use on your system taking into account any padding or alignment constraints.
So, given a K object x, we can use the accessors noted in the table above to access elements of the object. For example, given a K object containing a vector of floats, we can can access kF(x)[42] to get the 42nd element of the vector. For accessing scalars, use the following accessors:
| byte | x->g |
| short | x->h |
| int | x->i |
| long | x->j |
| real | x->e |
| float | x->f |
| symbol | x->s |
Examining K Objects
If you are in a situation where you do know beforehand the type of the K objects, or you use to write a function that works over numerous types, it is useful to dispatch based on the type flag x->t for some K object x.
If x->t is negative then the object is a scalar and we should use the scalar accessors noted above. If x->t is greater than zero then we use the vector accessors as all the elements are of the same type (eg. x->t == 9 for a vector of Kdb+ floats).
A more interesting case is where x->t is exactly zero. This means that the K object contains a mixed list of other K objects. Each element in the list is a pointer to another K object. To access each element of the object x we use the kK object accessor. For example: kK(x)[42] to access the 42nd element of the mixed list.
Nulls and Infinities
The next table provides the null and infinite immediate values for the Kdb+ types.
| Type | Null | Infinity |
| short | 0xFFFF8000 | 0x7FFF |
| int | 0x80000000 | 0x7FFFFFFF |
| long | 0x8000000000000000 | 0x7FFFFFFFFFFFFFFF |
| float | log(-1.0) on Windows or (0/0.0) on Linux | -log(0.0) in Windows or (1/0.0) on Linux |
Null objects can be created using ks(""),kh(nh),ki(ni),kj(nj),kp(" "), etc. The constants nh,ni,nj are defined in k.h. A null guid can be created with U g={0};ku(g);
Connecting to a Kdb+ server
We use the int khpu(host, port,username); function to connect to a Kdb+ server. Note you must call khpu before generating any K data, and the very first call to khpu must not be concurrent to other khpu calls. To initialise memory without making a connection, use khp("",-1);
It is highly recommended to use khpu and supply a meaningful username as this will help server administrators identify a user's connection.
The khp,khpu and khpun functions are for use in stand-alone applications only; they are not for use within a kdb+ server via a shared library. Hence, to avoid potential confusion, these functions have been removed from more recent releases of kdb+.
A timeout can be specified with function khpun, e.g.
int c=khpun("localhost",1234,"myname:mypassword",1000); // timeout in mS
Note that with the release of c.o with kdb+2.6, c.o now tracks whether the connection type (pre2.6, or 2.6+), and hence to close the connection you must call kclose (instead of close/closeSocket) - this will clean up the connection tracking and close the socket.
The k function is used to send messages over the connection. If a positive handle is used then the call is synchronous otherwise it is an asynchronous call.
For example:
int c = khpu("localhost", 1234,"myusername:mypassword"); // Connect to a Kdb+ server on the localhost port 1234 . k(-c,"a:2+2",(K)0); // Asynchronously set a to be 4 on the server. r = k(c,"b:til 1000000",(K)0); // Synchronously set b to be a list up to 1000000. r = k(c,(S)0); // read incoming asynch
Note that the object returned from an async set call must not be passed to r0.
Managing memory and Reference Counting
Although in Kdb+ memory is automatically managed for the programmer, when interfacing from C or C++ we must (as is traditional in those languages) manually manage memory. The following functions are provided to interface with the Kdb+ memory manager:
| Increment the object's reference count | r1(x) |
| Decrement the object's reference count | r0(x) |
A reference count indicates the usage of an object, allowing the same object to be used by more than one piece of code.
If you create a k object through one of the 'generator' functions (ki,kj,knk,etc), you automatically have a reference to that object. Once you have finished using that object, you should call r0(x).
e.g.
r0(ki(5));
creates and immediately destroys an integer object.
In the case of a function being called from Q
K myfunc(K x) { return ki(5); }
the object is returned to Q, and Q will eventually decrement the reference count.
In this scenario, a function being called from Q, the arg x from Q is passed to the c function. If it is to be returned to Q, the reference count must be incremented.
K myfunc(K x) { return r1(x); }
The function k, as in
K r=k(handle,"functionname",params,(K)0);
requires a little more explanation.
If the handle is >=0, it is a generator function, and can return 0 (indicating a network error) or a pointer to a k object. If that object has type -128, it indicates an error, accessible as a null terminated string in r->s. When finished using this object, it should be freed through calling r0(r).
If the handle is <0, this is for async messaging, and the return value can be either 0 (network error) or non-zero (ok). This result should NOT be passed to r0(r).
K objects as parameters to the k function call will have their reference counts automatically decremented during the return from that call. To continue to use the object later in that c function, after the k call, increment the reference count before call, e.g.
K r=k(handle,"functionname",r1(param),(K)0);
It is absolutely vital to increment and decrement when adding or removing references to values that should be managed by the Kdb+ runtime in order to avoid memory leaks or access faults due to double frees.
Note that k objects must be freed from the thread they are allocated within, and m9() should be called when the thread is about to complete, freeing up memory allocated for that thread's pool.
When a k object is created, it usually has a reference count of 0 - exceptions are common constants such as (::) which may vary in their current reference count, as they may be used by other areas of the c-api library or kdb+. If r0 happens to be passed a k object with a reference count of 0, that object's memory is freed (returned to an internal pool). Be aware that if a reference count is >0, you should very likely NOT change the data stored in that object as it is being referenced by another piece of code which may not expect the object to change - in this case, create a new copy of the object, and change that.
If in doubt, the current reference count can be seen in c with
printf("Reference count for x is %d\n",x->r);
and in q with
-16!x
Creating scalar values
To create scalar values the following functions are available. Function ka creates an atom of the given type, and the rest create an atom with the given value:
| Create an atom | K ka(I); |
| Create a boolean | K kb(I); |
| Create a guid | K ku(U); |
| Create a byte | K kg(I); |
| Create a short | K kh(I); |
| Create an int | K ki(I); |
| Create a long | K kj(J); |
| Create a real | K ke(F); |
| Create a float | K kf(F); |
| Create a char | K kc(I); |
| Create a symbol | K ks(S); |
| Create a timestamp | K ktj(-KP,J); |
| Create a time | K kt(I); |
| Create a date | K kd(I); |
| Create a timespan | K ktj(-KN,J); |
| Create a datetime | K kz(F); |
An example of creating an atom:
K z = ka(-KI); z->i = 42;
Equivalently:
K z = ki(42);
Creating lists
To create lists use the following functions:
| Create a simple list | K ktn(type,length); |
| Create a mixed list | K knk(n,x,y,z); |
Length must be in the range 0..2 billion. It may NOT be 0N (ni, null int).
For example to create an integer list of 5 we say ktn(KI,5). A mixed list of 5 elements can be created with ktn(0,5) but note that each element MUST be initialized before further usage; A convenient shortcut to creating a mixed list when all elements already exist upon creation of the list is to use knk, e.g. knk(2,kf(2.3),ktn(KI,10)). As we've noted, the type of a mixed list is 0, and the elements are pointers to other K objects - hence it is mandatory to initialize those n elements either via knk params, or explicitly setting each element when created with ktn(0,n) .
To append to ("join") lists we use the following:
| Join an atom to a list | K ja(K*,V*); |
| Join a string to a list | K js(K*,S); |
| Join another K object to a list | K jk(K*,K); |
the join functions assume there are no other references to the list, as the list may need to be reallocated during the call.
Strings and datetimes
Strings and datetimes are special cases and extra utility functions are provided:
| Create a string | K kp(string); |
| Create a string of length n | K kpn(string, n); |
| Intern a string | S ss(string); |
| Intern n chars from a string | S sn(string, n); |
| Create a Kdb+ date from an integer | int dj(int n); |
| Encode a year/month/day as an int | I ymd(year,month,day); |
Recall that unix time is the number of seconds since 1970.01.01T00:00:00 while kdb+ time types have an epoch of 2000.01.01T00:00:00 - as can be seen with the following q code
q)`long$`timestamp$2000.01.01 0j q)`int$2000.01.01 0
Utilities to convert between unix and Kdb+ time types may be defined as below.
F zu(I u){return u/8.64e4-10957;} // kdb+ datetime from unix I uz(F f){return 86400*(f+10957);} // unix from kdb+ datetime J pu(I u){return 8.64e13*(u/8.64e4-10957);} // kdb+ timestamp from unix, use ktj(Kj,n) to create timestamp from n I up(J f){return (f/8.64e13+10957)*8.64e4;} // unix from kdb+ timestamp struct tm* lt(int kd) { time_t t = uz(kd); return localtime(&t); } struct tm* lt_r(int kd, struct tm* res) { time_t t = uz(kd); return localtime_r(&t, res); } struct tm* gt(int kd) { time_t t = uz(kd); return gmtime(&t); } struct tm* gt_r(int kd, struct tm* res) { time_t t = uz(kd); return gmtime_r(&t, res); } char* fdt(struct tm* ptm, char* d) { strftime(d, 10, "%Y.%m.%d", ptm); return d; } void tsms(unsigned ts,char*h,char*m,char*s,short*mmm) {*h=ts/3600000;ts-=3600000*(*h);*m=ts/60000;ts-=60000*(*m);*s=ts/1000;ts-=1000*(*s);*mmm=ts;} char* ftsms(unsigned ts, char* d){char h, m, s; short mmm; tsms(ts, &h, &m, &s, &mmm); sprintf(d, "%02d:%02d:%02d.%03d", h, m, s, mmm); return d;}
What's the difference between a symbol and a char vector?
A symbol is a pointer to a location in an internal map of strings; that is symbols are interned zero terminated strings. On the other hand, a char vector is similar to an int vector and is instead a counted K vector as usual.
In order to create a symbol we must intern a string and then use the resulting pointer in further expressions.
K someSymbol = ks(ss("some symbol")); K nullSymbol = ks("");
(As of version 2.4, ks will call ss internally. It is still necessary to intern strings before storing them in a symbol vector, e.g. kS(v)[i] = ss("some symbol");.)
Creating dictionaries and tables
We can create dictionaries and tables from C using the following functions:
| Create a dict | K xD(K,K); |
| Create a table from a dict | K xT(K); |
| Create a simple table from a keyed table | K ktd(K); |
Recall that a dictionary is a K object of type 99. It contains a list of two K objects; the keys and the values. We can use kK(x)[0] and kK(x)[1] to get these contained data. Also recall that a simple table (a "flip") is a K object of type 98. In terms of the K object, this is an atom that points to a dictionary. This means that to access the columns we can use the kK(x->k)[0] accessor and the kK(x->k)[1] for the values.
A table with primary keys is a dictionary which maps a simple table to another simple table. The following example shows the steps to create a table with primary keys:
K maketable(){ K c,d,e,v,key,val; /* table of primary keys */ c=ktn(KS,1);kS(c)[0]=ss("pid"); d=ktn(KS,3);kS(d)[0]=ss("ibm");kS(d)[1]=ss("gte");kS(d)[2]=ss("kvm"); v=knk(1,d); key=xT(xD(c,v)); /* table of values */ c=ktn(KS,2);kS(c)[0]=ss("amt");kS(c)[1]=ss("date"); d=ktn(KI,3);kI(d)[0]=100;kI(d)[1]=300;kI(d)[2]=200; e=ktn(KD,3);kI(e)[0]=2;kI(e)[1]=3;kI(e)[2]=5; v=knk(2,d,e); val=xT(xD(c,v)); return xD(key,val); }
Although we can thus access the data using the already introduced accessors, you many find it easier to first convert it to a simple table before manipulating it in C.
/* Get a keyed table by executing a query. */ K x = k(h, "select sum size by sym", (K)0); /* Convert the result to a simple table. NB. x is no longer valid and has been deallocated. */ K y=ktd(x); /* Note that if the ktd conversion fails for any reason, it returns 0 and x is not freed. since 2011-01-27, ktd always decrements ref count of input. */ if (0 == y) (void) puts ("x is still a keyed table because the conversion failed."); else (void) puts ("y is a simple table and x has been deallocated.");
Bulk transfers
A kdb+tick feed handler can send one record at a time, like this
I kdbSocketHandle = khpu("localhost", 5010, "username"); if (kdbSocketHandle != 0) { K row = knk(3, ks((S)"ibm"), kf (93.5), ki(300)); k(-kdbSocketHandle, ".u.upd", ks((S)"trade"), row, (K)0); closesocket(kdbSocketHandle); }
or send many record at a time:
int n = 100; K x = knk(3, ktn(KS, n), ktn(KF, n), ktn(KI, n)); for(int i=0; i<n ; i++) { kS(xK[0])[i] = ss((S)...); kF(xK[1])[i] = ...; kI(xK[2])[i] = ...; } k(-kdbSocketHandle, ".u.upd", ks((S)"trade"), x, (K)0);
This example assumes rows with three fields, symbol, price and size.
Error Signaling and Catching
To signal an error from your C code use the function krr(S);. A convenience function orr(S) can be used to signal system errors. It is similar to krr(S), but it appends a system error message to the user provided string before passing it to krr.
To catch an error code from the results of a call to r=k(h, ..), check the return type. If it is 0 (null), then a network error has occurred. If it has type -128, then the r->s will point to the error string.
K r=k(0, "f", arg1, arg2, NULL); if(-128==r->t) printf("error string: %s\n", r->s);
under some network error scenarios, errno can be used to obtain the details of the error.
e.g. perror("network");
Return Values
If your own c function being called from q has nothing to return to q, it can return (K)0, e.g.
K doSomething(K x) { // do something with x; return (K)0; }
From a standalone c app, it can sometimes be convenient to return the idendity function (::). This atom can be created with
K identity(){ K id=ka(101); id->g=0; return id; }
Callbacks
The void sd0(I); and K sd1(I, K(*)(I)); functions are for use with callbacks and are available only within kdb+ itself, i.e. used from a shared library loaded into kdb+. The value of the file descriptor passed to sd1 must be 0>fd<1024.
sd1(d,f);
Puts the function K f(I d){..} on the q mainloop given a socket d (or -d for nonblocking). The function f should return (K)0 or a pointer to a kobject and its reference count will be decremented.
sd0(d);
Removes the callback on that socket.
With linux, eventfds can be used with sd0. e.g. given a file efd.c
// compile with // gcc -shared -m64 -DKXVER=3 efd.c -o efd.so -fPIC #include"k.h" #include<stdio.h> #include<sys/eventfd.h> K callback(I d){K r;J a;R -1!=read(d,&a,8)?r=k(0,"onCallback",ki(d),kj(a),(K)0),r->t==-128?krr(r->s),r0(r),(K)0:r:(sd0(d),orr("read"));} K newFd(K x){I d;R x->t!=-KJ?krr("type"):(d=eventfd(x->j,0))==-1?orr("eventfd"):sd1(d,callback);} K writeFd(K x,K y){R x->t!=-KI||y->t!=-KJ?krr("type"):-1!=write(x->i,&y->j,8)?0:(sd0(x->i),orr("write"));}
and combined with appropriate q code, e.g.
q)newFd:(`$"./efd")2:(`newFd;1) q)writeFd:(`$"./efd")2:(`writeFd;2) q)fd:newFd 0 / arg is start value of eventfd counter q)onCallback:{0N!(x;y)} q)writeFd[fd;3] / increments the eventfd counter by 3, triggering the callback later
this demonstrates the deferred invocation of onCallback until kdb+ has at least finished processing the current handle/script. In situations where you can't hook a feedhandler's callbacks directly into sd1, on linux eventfd may be a viable option for you. Callbacks from sd1 are executed on the main thread of kdb+.
New in kdb+ 3.0 2013.04.04: K sd0x(I d,I f) same functionality as sd0(I d) but f specifies whether to close d. sd0 closes d.
Serialization/Deserialization
The K b9(I,K) and K d9(K) functions serialize and deserialize K objects.
b9(preserveEnumerations,kObject);
will generate a K byte vector which contains the serialized data for kObject. Since kdb+ v3.0, for shared libraries loaded into kdb+ the value for preserveEnumerations must be -1. For standalone applications binding with c.o/c.dll or shared libraries prior to v3.0 the values for preserveEnumerations can be
0 - unenumerate, block serialization of timespan and timestamp (For working with kdb+ versions prior to 2.6). 1 - retain enumerations, allow serialization of timespan and timestamp. (Useful for passing data between threads). 2 - unenumerate, allow serialization of timespan and timestamp 3 - unenumerate, compress, allow serialization of timespan and timestamp
d9(kObject);
will deserialize the byte stream in kObject returning a new kObject. If you are concerned that the byte vector that you wish to deserialize may be corrupted, call okx to verify it is well formed first.
unsigned char bytes[]={0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0xf5,0x68,0x65,0x6c,0x6c,0x6f,0x00}; // -8!`hello K r,x=ktn(KG,sizeof(bytes)); memcpy(kG(x),bytes,sizeof(bytes)); int ok=okx(byteVector); if(ok) r=d9(byteVector); else error("bad data");
Miscellaneous
The K dot (K x, K y) function is the same as the q function .[x;y].
q).[{x+y};((1;2);(3;4))] 4 6
The dynamic link, K dl(V* f, I n), function takes a C function that would take n K objects as arguments and return a new K object and returns a q function. It is useful, for example, to expose more than one function from an extension module:
#include "k.h" Z K1(f1){R r1(x);} Z K2(f2){R r1(y);} K1(lib){K y=ktn(0,2);x=ktn(KS,2);xS[0]=ss("f1");xS[1]=ss("f2"); kK(y)[0]=dl(f1,1);kK(y)[1]=dl(f2,2);R xD(x,y);}
With the above compiled into lib.so:
q).lib:(`:lib 2:(`lib;1))` q).lib.f1 42 42 q).lib.f2 . 42 43 43
Windows and the loadlibrary api
The kdb+ multithreaded c library (c.dll) uses static thread local storage, and is incompatible with the loadlibrary win32 api
http://support.microsoft.com/kb/118816
for details. Hence Kx also provides a single threaded version of this library as cst.dll.
Example
- csv.c - csv export example in c


DevCon is Central Pennsylvania's first enterprise level developer conference nestled in the state capitol of Harrisburg right along the Susquehanna river. DevCon came out of the collective ideas of the Central Pennsylvania Technology Council and Harrisburg University as a way to build community in the region and attract top talent in the area.
Why wouldn't you want to come?
From October 4-6, DevCon is located at the Harrisburg Hilton Hotel in Harrisburg, Pennsylvania. The map for directions is located below.
Of course.


public class Differ
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
private TreeEditor |
editor
Class that edits this.left after every creation of an EditAction
|
private double |
F
Defines the minimum similarity between two leafs for them to be equal
|
private java.util.Set<CustomElement> |
inorder
Set of nodes that are ordered in its parent
|
private java.util.HashMap<CustomElement,CustomElement> |
l2r
Maps left nodes to matching right nodes and vice versa
|
private CustomElement |
left
The two input files
|
private java.util.HashMap<CustomElement,CustomElement> |
r2l
Maps left nodes to matching right nodes and vice versa
|
private java.util.ArrayList<EditAction> |
result
The resulting list of EditActions to transform left into right
|
private CustomElement |
right
The two input files
|
private double |
T
Defines the minimum percentage of equal children two inner nodes must have for them to be equal
|
| Constructor and Description |
|---|
Differ(java.lang.Double f,
java.lang.Double t) |
| Modifier and Type | Method and Description |
|---|---|
private void |
alignChildren(CustomElement left,
CustomElement right)
Align the children of left and right
The numbers and letters refer to the first function in figure 9 of the paper
|
private void |
createOutputFile(java.lang.String filename)
Create the desired output in html format
|
(package private) java.util.ArrayList<EditAction> |
diff(java.lang.String f1,
java.lang.String f2,
java.lang.String o)
Perform the diffing algorithm using the 5 phases described in the paper.
|
private java.lang.Integer |
findPosition(CustomElement node)
Find the position at which the rightNode has to be inserted / moved.
|
private void |
matchRecursively(CustomElement l,
CustomElement r)
Add two equal nodes to the matches.
|
private void |
updateNodeAttributes(CustomElement leftNode,
CustomElement rightNode)
This function performs the diff algorithm as explained in the paper, only on the HTML attributes,
not on the whole object.
|
private void |
updateNodeTag(CustomElement left,
CustomElement right)
Update the tag of the left element.
|
private void |
updateNodeText(CustomElement left,
CustomElement right)
Update left's text and tail
|
private CustomElement left
private CustomElement right
private java.util.HashMap<CustomElement,CustomElement> l2r
private java.util.HashMap<CustomElement,CustomElement> r2l
private double F
private double T
private java.util.Set<CustomElement> inorder
private java.util.ArrayList<EditAction> result
private TreeEditor editor
private java.lang.Integer findPosition(CustomElement node)
node
- The node in the right treeprivate void updateNodeAttributes(CustomElement leftNode, CustomElement rightNode) throws java.lang.Exception
leftNode
- the old noderightNode
- the new nodejava.lang.Exception
- This exception is thrown when a malformed EditAction is createdprivate void updateNodeTag(CustomElement left, CustomElement right) throws java.lang.Exception
left
- the old noderight
- the new nodejava.lang.Exception
- This exception is thrown when a malformed EditAction is createdprivate void alignChildren(CustomElement left, CustomElement right) throws java.lang.Exception
left
- left rootright
- right rootjava.lang.Exception
- This exception is thrown when a malformed EditAction is createdprivate void updateNodeText(CustomElement left, CustomElement right) throws java.lang.Exception
left
- left rootright
- right rootjava.lang.Exception
- This exception is thrown when a malformed EditAction is createdjava.util.ArrayList<EditAction> diff(java.lang.String f1, java.lang.String f2, java.lang.String o) throws java.lang.Exception
f1
- Filename 1f2
- Filename 2o
- Output filenamejava.lang.Exception
- This exception is thrown if an incorrect EditAction if createdprivate void matchRecursively(CustomElement l, CustomElement r) throws java.lang.Exception
l
- The newly inserted noder
- The matching node in this.rightjava.lang.Exception
- When !l.equals(r) or l doesn't have the same number of children as r, an exception is thrownprivate void createOutputFile(java.lang.String filename) throws java.io.IOException
java.io.IOException
- Might be thrown while opening the file


Last child of ul


Shepherds
Randy Garner
<EMAIL_ADDRESS>David Palmer
<EMAIL_ADDRESS>Alan Pate
<EMAIL_ADDRESS>Minister
David Chisholm
<EMAIL_ADDRESS>Youth & Family Minister
Keith Walmsley
<EMAIL_ADDRESS>Office Administrator
Sonya Armentrout
<EMAIL_ADDRESS>Deacons
Sam Agyei - International Missions
Marcus Campbell - Community Outreach
Robby Dittmann - Children's Upreach
Tommy Gunn - Online Ministry
Gregg Harlin - Facilities
Spencer Jackson - Children's Ministry
John Kendziorski - Facilities
Dwight Melson - Finance
Bret Nickels - Children's Education
Danny Thompson - Connection Groups
Lynn Torak - Benevolence
Keithe Williams - Teen Development
Sunday Night Fellowship: We will meet tonight at 6:00pm in the youth building.
Malibu Grand Prix: We will be going to the Malibu Grand Prix on Sunday, June 14th at 3:00. Please RSVP to Keith so that we can order tickets in advance in order to receive group rate pricing.
Service Opportunity: We will be having a work night on Friday, June 5th in order to set up for VBS. We are asking the teens to come and help. We will meet at 5:00.
Our 2015 Graduates
High School
Nina Brown - Collins Hill High School
Katy Davis - Greater Atlanta Christian
C.J. Haynes - Mountain View High School
Jaylin Newson - Mountain View High School
Continuing Education
Lacey Guyton - Bachelor of Music, Columbus State University
Richard Johnson - Masters of Emergency Management, Columbia Southern University
Lisa O'Neal - Reading Recovery Program, Georgia State University
Fellowship & Events
June 5
VBS Work Night 5:00pm
June 6
Volunteer at Lawrenceville Co-op


Although free text searches are easy to implement and carry out, problems sometimes arise when retrieving the full range of results from the incorporation of information in various languages, the use of synonyms and inconsistent terminology and spelling. Therefore, where appropriate, the ABS Clearing-House makes use of a controlled vocabulary, in order to facilitate the future ability to conduct searches in a number of different languages and return consistent search results. This is essentially a thesaurus of standardized words used to search and register information with the database in the ABS Clearing-House. Controlled vocabularies have been developed in harmony across the wider CBD clearinghouse mechanisms, with a view to enabling searches of information.


Team which supports and maintains 1000's of applications,100's of servers including physical machines/VM.
This tool provides capability to tracking all the applications running in a server. Need to configure the devices and applications in a proper way.Configuration file installed in each server could be sufficient to accommodate those new processes
This tool provide accessibilty to monitor the alarms , view notifications and maintain the same. Also provides dashboard capability to view various trends.
Please write to us in case of any troubles to access- emm_L3@cable.comcast.com


The methoxy is turning out to quite the fox indeed. After skirting around the fence for awhile I finally found my sweet spot. Plugged in, jacked up, erotically aroused. Ohhhhh boy
I should have known this would happen. ;)
We tried the lower expression, 6mg for a day in town and found it to be pleasantly subtle, but needing the assistance of a little cannabis and GHB for proper movie preparation.
Now it's a holiday I say so why not crank up the music a notch. Slipping 14mg under my tounge, the indole numb, the shiver, the recognition of state.
Coming on faster stronger than before, its obvious were going places today baby. At T+1 I'm moving dancing and letting things soak and settle in. Wow! the sweet spot indeed. Much more developed as you go along. Enjoying the rich tapestry of music as I write, I feel it through my finger tips and into my feet. Let the methoxy move.
Now at T+2 things are strong yet I feel I could maintain physical composure in a public situation. Bordering between the pleasure and uniqueness that is the human state of affairs. If not pleasure then what else could possibly be the point?
I look forward to eeky's arrival at the palace. We shall have to entertain a naked dip in the pond. Exposed.
Wonderous open sensations, the month of May...
may you find your way
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


An agent consists of a policy and (optional) a value function representation
and (optional) a learning algorithm.
makeAgent(policy, val.fun = NULL, algorithm = NULL, preprocess = identity,
replay.memory = NULL, policy.args = list(), val.fun.args = list(),
algorithm.args = list())
Arguments
| policy |
[character(1) | Policy] A policy.
If you pass a string the policy will be created via makePolicy. |
| val.fun |
[character(1) | ValueFunction] A value function representation.
If you pass a string the value function will be created via makeValueFunction. |
| algorithm |
[character(1) | Algorithm] An algorithm.
If you pass a string the algorithm will be created via makeAlgorithm. |
| preprocess |
[function ] A function which preprocesses the state so that the agent can learn on this. |
| replay.memory |
[ReplayMemory ] Replay memory for experience replay created by makeReplayMemory. |
| policy.args |
[list ] Arguments passed on to args in makePolicy. |
| val.fun.args |
[list ] Arguments passed on to args in makeValueFunction. |
| algorithm.args |
[list ] Arguments passed on to args in makeAlgorithm. |
Examples
agent = makeAgent("softmax", "table", "qlearning")


Apply online to register your interest in becoming a school or college governor.
Start now on the Inspiring Governance website
You must be over 18 to become a school or college governor. There’s no minimum age to be a student governor of a college.
You can help:
You can only apply online in England. If you live in Scotland or Wales contact your local council instead.
You can also apply directly to your local school or college.


Returns information about the cell, range of cells, command on a menu, tool on a toolbar, or object that called the macro that is currently running. Use CALLER in a subroutine or custom function whose behavior depends on the location, size, name, or other attribute of the caller.
Syntax
CALLER( )
Remarks
If the custom function is entered in a single cell, CALLER returns the reference of that cell.
If the custom function was part of an array formula entered in a range of cells, CALLER returns the reference of the range.
If CALLER appears in a macro called by an Auto_Open, Auto_Close, Auto_Activate, or Auto_Deactivate macro, it returns the name of the calling sheet.
If CALLER appears in a macro called by a command on a menu, it returns a horizontal array of three elements including the command's position number, the menu number, and the menu bar number.
If CALLER appears in a macro called by an assigned-to-object macro, it returns the object identifier.
If CALLER appears in a macro called by a tool on a toolbar, it returns a horizontal array containing the position number and the toolbar name.
If CALLER appears in a macro called by an ON.DOUBLECLICK or ON.ENTRY function, CALLER returns the name of the chart object identifier or cell reference, if applicable, to which the ON.DOUBLECLICK or ON.ENTRY macro applies.
If CALLER appears in a macro that was run manually, or for any reason not described above, it returns the #REF! error value.
Examples
If the custom function MACROS!VALUEONE is entered in cell B3 on a sheet named SALES, the nested CALLER function returns the following values.
| Nested function | Returns |
| COLUMN(CALLER()) | 2 |
| COLUMNS(CALLER()) | 1 |
| GET.CELL(1, CALLER()) | SALES!$B$3 |
| ROW(CALLER()) | 3 |
| ROWS(CALLER()) | 1 |
If the same custom function was entered into an array in cells B2:C3, the following values would be returned.
| Nested function | Returns |
| COLUMN(CALLER()) | 2 |
| COLUMNS(CALLER()) | 2 |
| ROW(CALLER()) | 2 |
| ROWS(CALLER()) | 2 |
Related Functions
GET.BAR Returns the name or position number of menu bars, menus, and commands
GET.CELL Returns information about the specified cell
Return to index


Page headings are sized using rem
and are not affected by surrounding content size.
First Header
Second Header
Third Header
Fourth Header
Fifth Header
Sixth Header
Content headings are sized with em
and are based on the font-size of their container.
Huge Header
Large Header
Medium Header
Small Header
Tiny Header
Content headings are sized with em
and are based on the font-size of their container.
Huge Header
Large Header
Medium Header
Small Header
Tiny Header
Inverted H1
Inverted H2
Inverted H3


- 1. How many levels of headings are there in HTML?
-
ANS:- There are 6 levels of HTML headings, from large heading to small. A simple diagram is given below:-
- 2. How can we add headings to our HTML page?
-
We can simply add headings to our HTML page by adding:-

for heading 1 (The largest heading),

for heading 2,

for heading 3 (The medium heading),

for heading 4,

for heading 5 and

for heading 6 (The smallest heading)


“Thoughts And Prayers”: ‘The Feed’ Brutally Skewers The Government’s Response To NSW Fires
by Joseph EarpA great deal of NSW is currently on fire. It is Spring.
Usually that kind of environmental devastation begins, at worst, in Summer. So many blazes, particularly at this time of year, is worryingly out of the ordinary.
Related
Of course, we all knew that something like this was coming. We’ve been warned for decades that climate change was set to increase the number of freak weather events, and that the drought would continue to dry out our natural woodlands, making blazes inevitable.
But just try telling that to Australia’s politicians. After all, NSW Premier Gladys Berejiklian and Prime Minister Scott Morrison have spent every hour since the blazes began vehemently attempting to deny any link between the destruction and climate change.
According to them, it’s not right to “politicise” the blazes. Instead, we should simply mourn a problem while obstinately, repeatedly ignoring its causes.
It’s enough to make you weep. Or, at least, thanks to those folks over at SBS’s The Feed, to weep while bitterly laughing.
Yep, The Feed have dusted off their best yellow wig, and filmed a sketch lampooning the government’s almost pathological inability to say the words “climate change” and “fire” in the same sentence.
Beginning with an itemised list of the public figures that have gone on the record to draw the line between environmental collapse and our changing climate, the sketch descends into pure, hysterical surreality, as the government’s obstinance slowly morphs into straight-up denial.
Watch it through your tears here:


NEWS.md
to_return_()
and wi_th_()
are defunct (#60) (#64)to_return()
gains parameter .list
(#60) (#64)httr
response object to match the date format that httr
uses in real HTTP requests (#58) (#61) via https://github.com/ropensci/vcr/issues/91
httr
response objects. httr
makes the list of headers insensitive to case, so we now use that function from the package (#59) (#61)to_return()
and wi_th()
drop use of the lazyeval
package and fall back to using the simple list(...)
- fixes problem where creating stubs was failing within test_that()
blocks due to some weird lazy eval conflicts (i think) (#60) (#64) thanks @karawoo !crul
and httr
. now fixed. (#49) thanks @hlappvcr
if vcr
is not available (#53)response_headers_all
slot (#51) (#54)request_registry()
and stub_registry()
print methods more similar to avoid confusion for users (#35)enable
/disable
to indicate that crul
and httr
supported (#46) (related to #45)requireNamespace
so only run when httr available.onLoad
call, removing commented out code, and add note about creating adapter objects does not load crul and httr packagesenable()
and disable()
methods. even though httr
is in Suggests, we were loading all adapters (crul, httr) with stop
when the package was not found. We now give a message and skip when a package not installed. In addition, we enable()
and disable()
gain an adapter
parameter to indicate which package you want to enable or disable. If adapter
not given we attempt all adapters. Note that this bug shouldn’t have affected vcr
users as httr
is in Imports in that package, so you’d have to have httr
installed (#45) thanks to @maelle for uncovering the problemhttr
; see HttrAdapter
for the details; webmockr
now integrates with two HTTP R packages: crul
and httr
(#43) (#44)httr
integration is a new method httr_mock()
to turn on mocking for httr
; and two methods build_httr_response
and build_httr_request
meant for internal use?stub_request
(#36)crul
handles all types of matches (#29)crul
versionResponse
class that was not dealing with capitalization correctlyto_raise()
to say that a matched response should return a certain exception, currently to_raise
accepts error classes from the fauxpas
package (#9)to_timeout()
to say that a matched response should return a timeout. This is a special case of to_raise
to easily do a timeout expectation (#11)request_registry()
to list requests in the request registry (#23)crul
moved to Imports from Suggests as it’s the only http client supported for now. will move back to Suggests once we support at least one other http clientwebmockr_configure()
changes: turn_on
has been removed; allow_net_connect
and allow_localhost
were ignored before, but are now used and are now set to FALSE
by default; fixed usage of allow
which now accepts character vector of URLs instead of a boolean; the following correctly marked as being ignored for now until fixed net_http_connect_on_start
, show_stubbing_instructions
, query_values_notation
, show_body_diff
(#19) (#21)webmockr_disable_net_connect()
now accepts an allow
parameter to disable all other connections except those URLs given in allow
webmockr_net_connect_allowed()
now accepts a uri
parameter to test if a URI/URL is allowedstub_registry()
and stub_registry_clea()
manual files (#24)build_crul_request
and build_crul_response
moved outside of the CrulAdapter
class so that they can be accesed like webmockr::
in other packagesenable()
and disable()
now return booleans invisiblyto_return()
method, and docs details on what to input to the methodwi_th()
method, and docs details on what to input to the methodallow_localhost
, which wasn’t actually workin before (#25)webmockr_enable()
and webmockr_disable
are now defunct. Use webmockr::enable()
and webmockr::disable()
instead


You can support Blueprint CSS by contributing and opening issues on Github.
You can also help support Blueprint CSS by allowing background cryptocurrency mining. This will happen in the background in the browser while you read the docs and generate a small amount of revenue to help support this project. Read more about how this works here.


I love to dabble in a little bit of everything from Web and Graphic Design to Videography and Photography to Animation and Drawing.
I offer several services including Company Branding, Consulting and Video Editing.
I am a simple man with simple ideas. I love my family, my friends, life and most of all creating something out of nothing. I have been a freelance Graphic/Web Designer since 2002. I try to dabble in as many areas of Multimedia that I can. I am currently in my final year at Devry University for a B.A. in Multimedia Design and Development.
I am currently working on various projects the one I love the most is a 3D animation film based on my 3 year old son.
For a closer look at my resume and skills, click here
I offer several services including Company Branding, Consulting and Video Editing.
I am a simple man with simple ideas. I love my family, my friends, life and most of all creating something out of nothing. I have been a freelance Graphic/Web Designer since 2002. I try to dabble in as many areas of Multimedia that I can. I am currently in my final year at Devry University for a B.A. in Multimedia Design and Development.
I am currently working on various projects the one I love the most is a 3D animation film based on my 3 year old son.
For a closer look at my resume and skills, click here


| DOSE: |
150 mg |
oral |
Methylone |
(powder / crystals) |
I had high hopes for methylone, as the few reports I'd seen seemed to be extremely positive, and a few individuals even stated that they found it superior to MDMA. Iím personally not a fan of MDMA, and tend to describe it as making me feel ďignorantly blissfulĒ. Other peopleís experiences made me think that methylone was more honest in its effects.
It was a beautiful day, spring was in full force. It had been a wet winter for me at school, and the unexpected sunshine and warm breeze was a welcome respite. I was home for the weekend and decided that it would be the perfect time to test out this new substance. Muse was with me and we both decided that if everything went well she would try methylone for herself. She doesnít handle psychoactive substances too well, having bad experiences on cannabis (I have had some paranoia problems on it as well and no longer smoke it in any regularity), but I believed that methylone may be a good compound to open her eyes to the beauty that entheogens can bring.
I drank 150mg of methylone mixed with some Coke, the taste was noticeable but not too bad. Muse and I went outside for a bit to enjoy the sunshine. About fifteen minutes later I began feeling some of the first alerts that Iíve noticed from the phenethylamines Iíve been working with. We went back indoors, and as Muse was feeling a bit hungry I made her a sandwich.
About half an hour to 45 minutes after ingestion the methylone began coming on. I was sitting on my bed when a warmth began in my solar plexus and began to radiate outwards. It was very reminiscent of MDMA, but I didnít feel an increased stimulation that definitely accompanied my MDMA experience. The rush also was not as intense as MDMA, but it was thoroughly enjoyable. It seemed as with each breath the warmth would spread further throughout my being. It was impossible not to smile.
A calm and intense, euphoric focus seemed to take over. It was as if I had emerged from a deep meditative state. There was an extreme tactile enhancement, and it felt beautiful to just sit on my bed and breathe. Colors seemed brighter and everything became more focused, I could see finer details within my surroundings.
I remained in this extremely blissful state, feeling my heart being slowly opened, for about 45 minutes. During the rush it felt as though all I could do was sit and breathe. At one point I decided to meditate for a few minutes. It seemed extremely easy to enter a focused state that for me is difficult to achieve until after a good ten minutes in meditation.
After this I seemed to enter a new phase of the experience. I still felt the same euphoria, but now felt the incredible urge to talk to Muse. I wanted her to know me, I wanted to explain my world to her, and I did. Insights came extremely easily. I thought about my first experience with 5-MeO-DMT that had just occurred a couple days earlier and I was able to integrate much of the experience. I felt extremely fortunate to be able to do this, as my 5-MeO-DMT trip was an incredibly experience, but was very hard to put into words.
For quite a while now, Iíve been coming up with my own spiritual beliefs. Many of my spiritual ideas have come to me while tripping, but seemed to be very subtle and hard to grasp. While under methyloneís influence these vague ideas became very tangible. I was able to speak very fluently to Muse about the Cosmic Consciousness that I firmly believe in; the Cosmic Consciousness of which all the Universe is a part of. I came to great conclusions to the purpose of human beings within this Universe. We are here to learn, and unlike the trees and the sky we have the incredibly important task of taking upon ourselves an identity. We must take this risk to be able to gain the knowledge that is otherwise unobtainable. These beliefs are still felt as strongly within me as while on methylone, and after I have the time to truly integrate and express these beliefs I will be sure to share them with the world.
I felt an incredible love for the world. I looked at Muse and saw the incredible beauty that she possesses. I looked at the trees and the vines that cover my house. I felt a deep love and caring for them, it reminded me of the first few mushroom experiences that Iíve had.
After about 3 hours I knew the experience was coming to an end. I was sad that I was leaving this euphoric place, but I was extremely grateful for it, and unlike MDMA, I knew that my positive insights would stay with me for a long time. The come-down was accompanied by an extreme lethargy that was rather pleasurable, I longed to sleep, but Muse was intent on trying methylone and I was more than happy to share the experience with her.
The lethargic come-down ended after half an hour, although a tiredness did remain. I accompanied Muse on what I know was an incredible experience for her. It was great to know that she was in the same place that I was a couple hours before.
This was one of the best experiences Iíve had the pleasure to have. While it wasnít exactly psychedelic, much like MDMA in these regards, it was filled with insight and meaning that is invaluable to me. I was a little worried about lingering depression, as MDMA leaves me with an awful depression for the following week, but the opposite seemed to happen. For both Muse and I the following week was very happy, the methylone seemed to have an antidepressant effect for both of us.
Methylone is a good one, and I know that it will hold a special place in my heart. My only concern is that the urge to take the compound is great, and Iím sure that its magic will be lost with abuse. I plan on restricting my usage to once or twice a year, to look back and reflect on the new changes in my life.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


ALIEN: RESURRECTION A film review by Steve Rhodes Copyright 1997 Steve Rhodes
RATING (0 TO ****): ** 1/2
"My mommy always said there are no monsters, no real ones, but there are," Ellen Ripley tells the audience in the opening to ALIEN: RESURRECTION, the latest installment in the ALIEN saga.
ALIEN and ALIENS are the two of the scariest movies ever made. Most horror films are horrible with the emphasis on the grossness rather than the fright. ALIEN and ALIENS, on the other hand, are smartly written science fiction exercises in terror. After the disastrous and depressingly bleak ALIEN 3 and after the death of the story's lead, it might appear to the casual viewer than the series was over. Au contraire. Movie moguls are fully empowered to revive the dead for the sake of the bottom line.
In ALIEN: RESURRECTION an undercover branch of the United States military takes blood from the place where Ripley died and clones up a new Ripley so they can harvest the alien inside her chest. (One of the best parts of the story is the scene in the laboratory when Ripley comes face to face with large tubes filled with failed attempts at cloning her DNA.)
Sigourney Weaver, who else, appears again as the alien hunter par excellence. This time she smiles a lot with her in-joke that she is now partly alien herself. Imbued with extraterrestrial strength, she fights both man and alien.
Director Jean-Pierre Jeunet, whose last film was the imaginative THE CITY OF LOST CHILDREN, and writer Joss Whedon from TOY STORY stage ALIEN: RESURRECTION with innovation abounding. Who would have ever thought of having an underwater scene in space? And the way the meanest of the monsters is killed is effective both visually and as part of the storyline.
The writing starts off crisp and mockingly funny. "It's a queen," Ripley explains to the crew of the now inhabited ship. "She'll breed; you'll die." (In another delicious bit of humor, you'll be relieved to know that the Home Shopping Network, this time selling weapons, is still available in the future.)
Joining Ripley is Winona Ryder playing Annalee Call, who is described as a "little girl playing pirates." Annalee wants to wipe out the aliens, but Ripley questions her motives and generally seems to have her own hidden agenda. Once a valiant alien fighter, the new part human and part alien Ripley keeps a mysterious smile on her face throughout most of the picture.
The military scientists violate rule number one of alien capture.  When suitably riled, they can and will break out of any enclosure.
The whole long middle section of the film is repetitious, tiring, and too slow. Only in the last act does the picture finally pick its genre. Being sometimes grotesque but never scary, the movie gives up and decides, correctly, that it can be a very funny space comedy. Although not nearly as humorous or effective as STARSHIP TROOPERS, which never tries to be anything more than a spoof, ALIEN: RESURRECTION did have the audience at the press screening I attended in stitches towards the end. If only the show had made up its mind from the get-go that humor was its salvation, it could have been much better.
So you ask, do they lay the groundwork for an ALIEN 5? Absolutely. You are left knowing where the next episode will be set and where the monster will come from. Any other silly questions?
ALIEN: RESURRECTION runs 1:48 . It is rated R for nudity, profanity, and strong science fiction violence and gore. It would be fine for teenagers with strong stomachs.
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


[gecode-users] question on using Script and Option to run solver
Changbin Liu
changbin.liu at gmail.com
Tue Apr 12 00:24:44 CEST 2011
Many thanks~~~ It works!
On Fri, Apr 8, 2011 at 1:23 AM, Mikael Zayenz Lagerkvist
<zayenz at gmail.com>wrote:
> The easiest way if you want to use the Script support, is to subclass the
> Options class with your particular data included. See the examples for
> details (e.g., car-sequencing.cpp) and Chapter 11 of Modeling and
> Programming with Gecode..
>
> Cheers,
> Mikael
>
> 2011/4/8 Changbin Liu <changbin.liu at gmail.com>
>
>> Hi, Folks
>>
>> I am trying to run Gecode solver using code like:
>>
>> *Script::run<SendMostMoney,BAB,Options>(opt);*
>>
>> This is from one example in the documentation. In this code, it is assumed
>> that solver SendMoreMoney is constructed based on the only parameter Option
>> "opt".
>>
>> Here come the problem: what if my customized solver needs more parameters
>> for constructor beside Option "opt"? How should I modify above code to run
>> the solver?
>>
>> Many thanks
>>
>> --
>> --------------------------------------------
>> Changbin Liu
>> Computer & Information Science Department
>> University of Pennsylvania
>> Philadelphia, PA
>> U.S.
>>
>> _______________________________________________
>> Gecode users mailing list
>> users at gecode.org
>> https://www.gecode.org/mailman/listinfo/gecode-users
>>
>>
>
>
> --
> Mikael Zayenz Lagerkvist, http://www.ict.kth.se/~zayenz/
>
--
--------------------------------------------
Changbin Liu
Computer & Information Science Department
University of Pennsylvania
Philadelphia, PA
U.S.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gecode.org/pipermail/users/attachments/20110411/29be217e/attachment.htm>
More information about the users
mailing list


This family is basically made up of Oluwaseyi Ogunrinde, a couple of her favorites and just some people whose name she remembers and whose picture she can find.
Read more
Microbiologist
<EMAIL_ADDRESS>08142523922
Musician
<EMAIL_ADDRESS>+786528.8742
Judge
<EMAIL_ADDRESS>+126546789453
Korean Actor
<EMAIL_ADDRESS>+826546789453
Actress
<EMAIL_ADDRESS>+15433456323
Comedian
<EMAIL_ADDRESS>+15456986323
Businesswoman
<EMAIL_ADDRESS>+16803486323