Authenticating
To use TumblrSharp properly, you'll need to authenticate with a user account. Tumblr does provide some unauthenticated API endpoints in their V1 API, but TumblrSharp doesn't cover those (and will most likely never).
without OAuth Flow
Often, apps that consume 3rd party APIs use OAuth. There are a few ways to setup TumblrSharp with OAuth, but the easiest is to use the Tumblr Console. Note - this method is only suitable for your own usage (e.g., if you are making a personal bot or anything specific to your own user account. Please look below if you're looking to make an app that anyone can use).
Sign into your account, create an application, and then enter your Consumer key and Consumer Secret into the Tumblr Console. Tumblr will then show four sensitive keys - a consumer key
, consumer secret
, oauth_token
and oauth_token_secret
.
Here is an example class -
using DontPanic.TumblrSharp;
using DontPanic.TumblrSharp.Client;
public static class Tumblr
{
public static string Blog { get; set; }
public static TumblrClient Client;
const string CONSUMER_KEY = "xxx";
const string CONSUMER_SECRET = "xxx";
const string OAUTH_TOKEN = "xxx";
const string OAUTH_TOKEN_SECRET = "xxx";
static Tumblr()
{
// create our client
Client = new TumblrClientFactory().Create<TumblrClient>(CONSUMER_KEY, CONSUMER_SECRET, new DontPanic.TumblrSharp.OAuth.Token(OAUTH_TOKEN, OAUTH_TOKEN_SECRET));
}
}
With that static class set up, you can call methods easily
UserInfo userInfo = await Tumblr.Client.GetUserInfoAsync();
with OAuth Flow
This section is for production applications. If you want individual user access, you'll need to use OAuth's regular flow. Before continuing, I recommend reading the OAuth Bible if you are not familiar with how OAuth works. (We're doing Three-Legged OAuth 1.0A).
This section also is not going to show how to implement C#/WPF/Winforms specific functions, like capturing a custom URI protocol. (However, an examples repository will be up soon!)
Overview
Before we begin, let's take a minute to deconstruct the steps we'll need to accomplish in order to sign in a user.
- Create our Tumblr Application
- Request a
Request
Token - Open a web browser and prompt a user for permission
- Capture a
callback
URI - Request an
Access
Token - Perform authenticated requests
Although this may seem complex, it's not terribly difficult. The hardest part is capturing the callback
URI, as it differs depending on if you are using Xamarin, WPF, UWP, etc.
Creating the Tumblr Application
You will first need to register a Tumblr application. This can be accomplished by signing into your account, clicking Settings > Apps > Register New Application. If you're already signed in, just click here.
The form will ask for several necessary fields. You can fill out everything but the Default callback URL
anyway you'd like. For the Default callback URL
, you have a few choices. If you're using TumblrSharp with an ASP.NET web project, you'll want to set this to your website's URL. If you're creating anything that doesn't live on a web server, you're going to want to specify a custom URI
A URI scheme is a simple way to associate certain calls to a specific application. For instance,
https://
opens with a web browser, andftp://
is used with FTP clients like Filezilla. URI schemes are fairly arbitrary. Music streaming company Spotify uses the URIspotify://
to communicate between the browser and their desktop application.
For our own application, we can use a custom URI. This can be anything, but I recommend using your app's name. If my application were "Noted", my Default callback URL
would be noted://
.
After you have chosen a callback URL, save the application.
Getting a request token
The first step in the OAuth flow is to get a request token.
// create our OAuth client
OAuthClient oauthClient = new OAuthClient(
new DontPanic.TumblrSharp.HmacSha1HashProvider(),
CONSUMER_KEY,
CONSUMER_SECRET);
// get a request token
// replace "noted://" with your own callback URI
Token requestToken = await oauthClient.GetRequestTokenAsync("noted://");
Next, we need to ask the user for their permission. We can do this in a variety of ways, but preferably we want to open the default browser to a specific URL, which is a specific site route with the requestToken key appended.
var authenticateUrl = "https://www.tumblr.com/oauth/authorize?oauth_token=" + requestToken.Key;
// depending on your project, you might open up a web browser a different way
System.Diagnostics.Process.Start(authenticateUrl);
Once the webpage opens, the user will hopefully click "Allow", and your callback URL will be triggered.
Capturing the callback URL
This is the toughest part, since it requires a little research. There is a different way for every platform, so look up how to associate your application with a URI protocol. For instance, if you were using Xamarin with Android, you would flag your method like this:
[IntentFilter(new[] { Intent.ActionView }, DataScheme = "noted", Categories = new[] { Intent.CategoryBrowsable, Intent.CategoryDefault })]
We want a specific method to fire when the callback URI is called.
Getting access tokens
Once you've captured your callback, you're ready for the final step: requesting access tokens. Let's parse our verifier url.
// this will be significantly different depending on what type of project you're making. You'll need to consult the documentation for the service in question.
var verifierUrl = Intent.Data.EncodedQuery;
Once we have the query, we can make a request for an Access Token, and then we can initialize our TumblrClient class!
Token accessToken = await oauthClient.GetAccessTokenAsync(requestToken, verifierUrl);
TumblrClient client = new TumblrClientFactory().Create<TumblrClient>(CONSUMER_KEY, CONSUMER_SECRET, accessToken);
Using the TumblrClient
Once we're done, we have access to all of our necessary API endpoints.
UserInfo info = await client.GetUserInfoAsync();
Code
Token requestToken;
async void Authenticate()
{
// create a new instance of our OAuthClient we will use to authenticate
OAuthClient oauthClient = new OAuthClient(
new DontPanic.TumblrSharp.HmacSha1HashProvider(),
CONSUMER_KEY,
CONSUMER_SECRET);
// Get our request token with the URI scheme "noted://"
requestToken = await oauthClient.GetRequestTokenAsync("noted://");
// open up the authenticateUrl in the user's default browser
// var authenticateUrl = "https://www.tumblr.com/oauth/authorize?oauth_token=" + requestToken.Key;
var authenticateUrl = oauthClient.GetAuthorizeUrl(requestToken).AbsoluteUri;
System.Diagnostics.Process.Start(authenticateUrl);
}
// this method is called when the user allows access through the web browser
// this will look different depending on what your platform uses to open URI schemes
[SomeFlagThatTellsThisMethodWhatToOpen]
async void OnAllow(string data)
{
// get our access token and instantiate a new TumblrClient
Token accessToken = await oauthClient.GetAccessTokenAsync(requestToken, data);
TumblrClient client = new TumblrClientFactory().Create<TumblrClient>(CONSUMER_KEY, CONSUMER_SECRET, accessToken);
// call a method that requires authentication
UserInfo info = await client.GetUserInfoAsync();
}


Use the Options dialog to select parameters applied while freezing drawings/views. The dialog displays when you click Options
on the Freeze Drawings dialog.
Define parameters:
- Under Export, click Options to open the Export Options dialog.
- Under View, select Remove the source view to delete the source views of frozen views/drawings.
- Under Import colors, select the colors to be applied while importing a DWG file:
- Black and white
- Preserve colors
- Invert colors
- Under Files, define all parameters necessary to save a DWG file.


{% extends "layout_bsa.html" %} {% block page_title %} Help paying for NHS Costs prototype {% endblock %} {% block content %} Back Apply for help with NHS costs { if thirdparty } How often does {firstname} pay their mortgage? { else } How often do you pay your mortgage? How often do you pay your mortgage? Every week Every 2 weeks Every 4 weeks Every calender month Once a year How much do you pay? Do include any endowment premiums linked to the mortgage. Do not include premiums for any other type of insurance, money you owe that should have been paid earlier, or any amount of mortgage that you are voluntarily overpaying. {% endblock %}
Apply for help with NHS costs
Do include any endowment premiums linked to the mortgage.
Do not include premiums for any other type of insurance, money you owe that should have been paid earlier, or any amount of mortgage that you are voluntarily overpaying.


A personalized system for tracking and maintaining employee information. Built using ReactJS frontend, ExpressJS backend, and a MySQL database.
Worked as the project managaer and scrum master for a team of 6 students at Monmouth University for their Master's Practicum project.
A framework that enhances in-home accessibility by enabling gesture control of smart home devices.
Winner of HackTCNJ 2018 Best Hardware Hack.
Check it outWe designed a general purpose RISC-V based chip for educational purposes. The chip is able to load and execute code compiled to RISC-V machine language by a separate computer. The chip has 16 General Purpose Input Output pins that can be used for interaction.
View on GitHubOur hack uses a neural network which is trained to identify potential harassment by utilizing static semantic analysis. To help demonstrate the network, it was implemented onto an Amazon Echo. Upon using the Echo's wake word and asking for "Harassment Monitor", the Echo will listen silently in the background for any words spoken and forward them into the neural network. If the network deems that the conversation could be considered harassment, the user is notified by Alexa and an e-mail and an SMS text message is sent to the supplied contact. We hope that by catching harassment and reporting it, the spread of it can be prevented for the greater good of society.
Winner of Hack TCNJ 2017 Best Hardware Hack.
Check it out The Games of Today, Tomorrow!
Project management experience with an agile development team. We build and maintain relations with both internal and external conections. Organize and manage standup meetings and performs the role of scrum master of our kanban board task list.


I even went to school for it (a good one, in my totally unbiased opinion).
I love puzzles and building things, and I'm happiest when I'm making tools to help other people, and fortunately Software Engineering is the perfect fit for that.
My primary areas of expertise are in .NET and Python desktop and server applications, with experience in the Win32 API.
If you'd like some more structured information or want to contact me, I've got some links for that:
For those curious, the current version of this site is a static HTML page served on GitHub Pages and styled using Lit. Icons from Iconogram's Devicons.


Welcome
Millions of movies, Tv Shows and People
What's Popular
Streaming
On TV
For Rent
In Theaters
Peaky Blinders
Sep 12, 2013
83%
Peaky Blinders
Sep 12, 2013
83%
Peaky Blinders
Sep 12, 2013
83%
Peaky Blinders
Sep 12, 2013
83%
Peaky Blinders
Sep 12, 2013
83%
Latest Trailers
Streaming
On TV
For Rent
In Theaters


| MATLAB 文件帮助: cv.calcOpticalFlowFarneback | 查看 cv.calcOpticalFlowFarneback 的代码 | Index |
calcOpticalFlowFarneback Computes a dense optical flow using the Gunnar Farneback's algorithm
flow = cv.calcOpticalFlowFarneback(prevImg, nextImg)
flow = cv.calcOpticalFlowFarneback(prevImg, nextImg, 'OptionName',optionValue, ...)
prevImg
.prevImg
and
single
type (2-channels). Flow for (x,y)
is stored in the third
dimension.<1
) to build pyramids
for each image. PyrScale=0.5
means a classical pyramid, where each
next layer is twice smaller than the previous one. default 0.5.Levels=1
means that no extra layers are created and only the
original images are used. default 1.PolyN
is 5 or 7. default 5.PolyN=5
, you can set PolySigma = 1.1
. For PolyN=7
, a good value
would be PolySigma = 1.5
. default 1.1.WinSize x WinSize
filter instead of a box
filter of the same size for optical flow estimation. Usually, this
option gives z more accurate flow than with a box filter, at the cost
of lower speed. Normally, WinSize
for a Gaussian window should be
set to a larger value to achieve the same level of robustness.
default false.The function finds an optical flow for each prevImg
pixel using the
[Farneback2003] alorithm so that:
prevImg(y,x) ~ next(y + flow(y,x,2), x + flow(y,x,1))
[Farneback2003]:
Gunnar Farneback. "Two-frame motion estimation based on polynomial expansion". In Image Analysis, pages 363-370. Springer, 2003.


How to:
The extension icon will display the number of zero-width characters on the page.
A warning will appear if you select text containing zero-width characters.
Click "more" in the warning notification to get a safe version of the text.
Github
-
Twitter


In zonal
categorical data is handled with execute_zonal_cat
which computes the relative proportion of a numeric class in each aggregation unit. In the following we illustrate its use using a mosaiced 1km grid containing MODIS 2019 land cover.
file = '/Users/mjohnson/Downloads/MCD12Q1.006.nc'
(r = raster::raster(file))
#> class : RasterLayer
#> dimensions : 2896, 4616, 13367936 (nrow, ncol, ncell)
#> resolution : 1000, 1000 (x, y)
#> extent : -2357000, 2259000, 277000, 3173000 (xmin, xmax, ymin, ymax)
#> crs : +proj=aea +lat_0=23 +lon_0=-96 +lat_1=29.5 +lat_2=45.5 +x_0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs
#> source : /Users/mjohnson/Downloads/MCD12Q1.006.nc
#> names : LCType1
#> z-value : 17897
#> zvar : LCType1
Looking at the grid we can see in consists of 1.3367936 × 107 grid cells each with a 1000 meter by 1000 meter resolution. Additionally, there are 18 unique values in the grid (17 landcover and one nodata value).
First, we want to identify the percent of each land cover within each county in the USA Northeast. Doing this follows the same process as all zonal
workflows and requires (1) identifiying the aggregation units, (2) building a weight grid and (3) running the intersection.
AOI = AOI::aoi_get(state = "Northeast", county = "all")
plot(AOI$geometry, main = paste(nrow(AOI), "counties"))
system.time({
w = weighting_grid(file, AOI, "name")
lc = execute_zonal_cat(file, w)
})
#> user system elapsed
#> 2.26 0.60 2.14
glimpse(lc)
#> Rows: 1,664
#> Columns: 3
#> $ name [3m[38;5;246m<chr>[39m[23m "Aroostoo…
#> $ value [3m[38;5;246m<int>[39m[23m 8, 10, 13…
#> $ percentage [3m[38;5;246m<dbl>[39m[23m 0.1334921…
to_plot = merge(AOI, lc)
{plot(filter(to_plot, value == 5)['percentage'], border = "NA", main = "Mixed Forest", reset = FALSE)
plot(AOI::aoi_get(state = "Northeast")$geometry, add = TRUE)}
{plot(filter(to_plot, value == 13)['percentage'], border = "NA", main = "Urban", reset = FALSE)
plot(AOI::aoi_get(state = "Northeast")$geometry, add = TRUE)}
While the above works, callinging on fields by there numeric ID is prone to error. Instead, this example shows how a reclassification table can be supplied to modify the column headings of the output table.
AOI = AOI::aoi_get(state = "North Central", county = "all")
plot(AOI$geometry, main = paste(nrow(AOI), "counties"))
#### Define Reclass Table
A reclassification table tells us what each numeric value represents in a categorical raster. Below, we use a CSV file to define this mapping. The schema used is that one column must be named “from” - this is the exisiting data values, and one column must be named “to” - this is the desired column headings.
system.time({
# Build Weight Grid
w = weighting_grid(file, AOI, "geoid")
# Intersect applying mapping
lc = execute_zonal_cat(file, w, rcl)
})
#> user system elapsed
#> 5.858 0.970 4.563
glimpse(lc)
#> Rows: 7,105
#> Columns: 3
#> $ geoid [3m[38;5;246m<chr>[39m[23m "27077", …
#> $ value [3m[38;5;246m<chr>[39m[23m "woody_sa…
#> $ percentage [3m[38;5;246m<dbl>[39m[23m 0.3552908…
midwest = merge(AOI, lc)
{plot(filter(midwest, value == 'croplands')['percentage'], main = "Croplands", border = 'NA', reset = FALSE)
plot(AOI::aoi_get(state = "North Central")$geometry, add = TRUE)}
{plot(filter(midwest, value == 'urban')['percentage'], main = "Urban", border = 'NA', reset = FALSE)
plot(AOI::aoi_get(state = "North Central")$geometry, add = TRUE)}
In the MODIS land cover scheme there are 5 classes loosly representing forest. If wanted to aggregate these to a single forest class, we can use the output zonal
table.
forest =filter(lc, grepl('forest|broad|needle', value)) %>%
group_by(geoid) %>%
summarise(forest = sum(percentage)) %>%
right_join(AOI) %>%
sf::st_as_sf()
{plot(forest['forest'], main = "Forest", border = 'NA', reset = FALSE)
plot(AOI::aoi_get(state = "North Central")$geometry, add = TRUE)}
From the exactectractr
vignettes there is an example to compute class statisitcs using dplyr
. Here we compare that appraoch, to one supplimented with data.table
, to zonal
with pre-compted weights, and to a single zonal
execution.
library(raster)
library(exactextractr)
library(data.table)
# exactextract with dplyr
exactextract_dplyr = function(file, AOI) {
exact_extract(raster(file), AOI, function(df) {
df %>%
mutate(frac_total = coverage_fraction / sum(coverage_fraction)) %>%
group_by(name, value) %>%
summarise(freq = sum(frac_total), .groups = "keep")
}, summarize_df = TRUE, include_cols = "name", progress = FALSE)
}
# exactextract with data.table
exactextract_dt = function(file, AOI){
exact_extract(raster(file), AOI, function(df) {
dt = setDT(df)
dt$frac_total = dt$coverage_fraction / sum(dt$coverage_fraction)
dt[, .(freq = sum(frac_total, na.rm = TRUE)), by = .(name, value)]
}, summarize_df = TRUE, include_cols = "name", progress = FALSE)
}
# pre-compute weights
w = weighting_grid(file, AOI, "name")
bnch <- bench::mark(
iterations = 1, check = FALSE, time_unit = "s",
exactextract_dplyr = exactextract_dplyr(file, AOI),
exactextract_dt = exactextract_dt(file, AOI),
zonal_full = execute_zonal_cat(file, w = weighting_grid(file, AOI, "name")),
zonal_stage_weights = execute_zonal_cat(file, w)
)
| expression | medianTime | memoryAllocated | medianTime_rel | memoryAllocated_rel |
|---|---|---|---|---|
| zonal_stage_weights | 1.012143 | 554.750732MB | 1.000000 | 1.740559 |
| zonal_full | 4.537179 | 1.572529GB | 4.482746 | 5.052303 |
| exactextract_dt | 5.025951 | 501.532288MB | 4.965654 | 1.573583 |
| exactextract_dplyr | 28.367905 | 318.719894MB | 28.027568 | 1.000000 |


Instructions
1. Find the contract address for the token you wish to dstribute.
2. Copy and paste it into the "Token Contract" field in the correct format.
3. Click the approve button and fire the transaction and wait for it to confirm.
4. Enter each wallet you would like to send tokens to, followed by a comma and then the amount of ETH that wallet previously sent to you for their OTC contribution.
5. Use a new line for each wallet address and its respective amount of ETH.
6. Input the total number of tokens that you are distributing as a collective total in the "Tokens To Distribute" field.
7. The disTRIBUTE dapp will calculate each wallets share of tokens according to the formula: ETH From Wallet/Total ETH Sum.
7. Click the DISTRIBUTE button and fire off the transaction.
8. All tokens should be distributed accordingly once the transaction confirms.
9. Check on etherscan to confirm the distribution was successful.
Input Data:
0x97874b0c9d5a70233a895bce1cf2608b3f8c4009,5
0xda07f6a0f65165571738f0e38f49aab2b65f977d,10
0x318fc08d92275957d9024c9f1f12df54542af7c0,1
0x1f8a6d8185b76f5ac08f335610a2390dab3225a8,4


Class RelationshipService
- java.lang.Object
-
- edu.cnm.deepdive.tunefull.service.RelationshipService
-
@Service public class RelationshipService extends java.lang.Object
RelationshipService
provides a layer betweenRelationshipRepository
andRelationshipController
for business logic.- Since:
- 1.0
- Version:
- 1.0
- Author:
- Robert Dominugez, Roderick Frechette, Laura Steiner
-
-
Constructor Summary
Constructors Constructor Description RelationshipService(RelationshipRepository relationshipRepository)
Autowired constructor for RelationshipService.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Optional<Relationship>
get(long id)
Gets the Relationship by its id, if it exists.java.util.List<Relationship>
getFollows(User user)
Gets all the Relationships in which the user is following other usersjava.util.List<Relationship>
getFriendships(User user)
Gets the Relationship between two users, using the two users as parameters.java.util.List<Relationship>
getPending(User user)
Gets all the Relationships in which the user has been sent a friend request and the user has not responded yet.Relationship
requestFriendship(User requester, User requested)
Creates a relationship between two users by sending a friend request.Relationship
save(Relationship relationship)
Saves the relationship to the repository.boolean
setFriendshipAccepted(Relationship friendship, boolean accepted)
Sets the boolean that determines whether a relationship is a friendship or not.Relationship
startFollowing(User follower, User followed)
Creates a relationship between two users in which one is following the other.
-
-
-
Constructor Detail
-
RelationshipService
@Autowired public RelationshipService(RelationshipRepository relationshipRepository)
Autowired constructor for RelationshipService.- Parameters:
relationshipRepository
- RelationshipRepository
-
-
Method Detail
-
get
public java.util.Optional<Relationship> get(long id)
Gets the Relationship by its id, if it exists.- Parameters:
id
- long- Returns:
- Optional<Relationship>
-
getFriendships
public java.util.List<Relationship> getFriendships(User user)
Gets the Relationship between two users, using the two users as parameters.- Parameters:
user
- User- Returns:
- List<Relationships>
-
getFollows
public java.util.List<Relationship> getFollows(User user)
Gets all the Relationships in which the user is following other users- Parameters:
user
- User- Returns:
- List<Relationships>
-
getPending
public java.util.List<Relationship> getPending(User user)
Gets all the Relationships in which the user has been sent a friend request and the user has not responded yet.- Parameters:
user
- User- Returns:
- List<Relationships>
-
requestFriendship
public Relationship requestFriendship(User requester, User requested)
Creates a relationship between two users by sending a friend request.- Parameters:
requester
- Userrequested
- User- Returns:
- the relationship that was created
-
startFollowing
public Relationship startFollowing(User follower, User followed)
Creates a relationship between two users in which one is following the other.- Parameters:
follower
- Userfollowed
- User- Returns:
- the relationship that was created
-
save
public Relationship save(Relationship relationship)
Saves the relationship to the repository.- Parameters:
relationship
- Relationship- Returns:
- returns the relationship that was saved
-
setFriendshipAccepted
public boolean setFriendshipAccepted(Relationship friendship, boolean accepted)
Sets the boolean that determines whether a relationship is a friendship or not.- Parameters:
friendship
- Relationshipaccepted
- boolean- Returns:
- the boolean that has been set
-
-


Significantly faster, especially for larger networks
Now interactive for networks ~10,000 nodes, ~3,000,000 edges
Annotations behave much, much better
Lays the foundation for future enhancements
Performance optimization of some table data
Java upgrade
Support for Java 11
Specifically tested against OpenJDK 11 (no Oracle license restrictions)
Also included JavaFX 13
Core App Updates
Analyze Network
The old NetworkAnalyzer has been completely rewritten and simplified. The results may still be
found in the node and edge tables as before
Network Merge
The network merge code has been significantly updated
CyBrowser
The update to JavaFX 13 has resulted in a significant functionality boost for CyBrowser,
fixing many bugs. It's still not a replacement for your daily browsing, but it's better than before
CyNDEx
CyNDEx no longer depends on JXBrowser, which should significantly reduce the startup and implementation
issues.


I was selected to share some of my experience with MongoDB at MongoSV.
“MongoSV is an annual one-day conference in Silicon Valley dedicated to the open source, non-relational database MongoDB. The comprehensive agenda includes 50+ sessions covering topics for both the novice and experienced user, with presentations from 10gen engineers as well as MongoDB users.”
Impressions and Observations
I’ve been to a few other similar MongoDB events in NYC and DC but this was the largest by far. There were over 1,000 attendees and 5 tracks plus whiteboard and birds of a feather sessions.
Schema free != Design free
As freeing as a document store is, there’s still work to be done in designing how you’ll store and retrieve your data. It’s super-easy to get up and running without giving this much thought but you will need to design your documents eventually. There were at least 3 sessions about schema design during MongoSV.
Aggregation Framework
The new aggregation framework is great, highly anticipated, and much needed. During the Keynote, Eliot Horowitz demonstrated an application built on MonogDB that used the Twitter API to capture tweets related to the day’s events. The demo site ran throughout the day and was used in a contest to see who tweeted the most about the conference and who was mentioned most. The source code for the app was subsequently made available on github. Check out Chris Westin’s presentation on MongoDB’s New Aggregation Framework.
MongoDB at CustomInk - Adoption, Operations, and Community
My presentation, ”MongoDB at CustomInk - Adoption, Operations, and Community”, detailed some of the reasons we decided to go with MongoDB, the challenges we faced bringing it into the organization, how we’re using it in production today, lessons learned, and some of our future plans. I also covered some of the operational considerations for putting MongoDB into production: how do we deploy, operate, and monitor MongoDB. I also described CustomInk’s involvement in the MongoDB community.
You can catch a video of my presentation on the 10gen site or just checkout the slides below.
MongoDB at shutterfly
It was great to meet Kenny Gorman from shutterfly and share some of our experiences with MongoDB. shutterfly and CustomInk have a lot in common. Of course, both are online retailers but some other things that we share include:
- Products are designed by the customer
- Products are tangible, manufactured, and shipped to the customer. Capacity planning is about more than just “how many servers do we need?”
- Both sell a variety of products
- The companies were both started in 1999
- Both use MongoDB, Oracle, and MySQL
- Most or all production servers run in a physical datacenter
Of course, there are plenty of differences, too. shutterfly is publicly traded and larger than CustomInk.
It was interesting to see how shutterfly’s approach to adopting MongoDB is very similar to CustomInk’s. Both store product data in MongoDB but order data lives in relational databases.
Check out Kenny’s Performance Tuning and Scalability presentation.
AWS and MongoDB
Using MongoDB on Amazon’s AWS was, not surprisingly, another hot topic. I think that if either shutterfly or CustomInk were to launch their business today, they’d likely look to AWS, or something similar, to house their infrastructure. The truth of the matter is that in 1999 that simply wasn’t an option so neither company stared there. At CustomInk, we have started moving some of our production services out of the data center and into alternate hosting environments (managed hosting or “the cloud”). However, the real sweet spot for us with AWS, at the moment, is staging and test servers. With AWS, we have the ability to quickly, easily, and inexpensively spin up a separate environment for each development branch.
The “developer happiness” that MongoDB affords does not make it immune to the “operational considerations” that every platform must take into account. These considerations vary from one environment to the next (bare metal, vm in a data center, managed hosting, “the cloud”, etc.) Application that are not built to take advantages of the strengths of each environment will eventually suffer the consequences of running there. Those consequences may include downtime, poor performance, and/or lots of operational complexity.
Other videos and presentations
Check-out all of the presentations from the conference on the 10gen site.
The conference also included the announcement of the MongoDB Community Award winners. But that’s a story for my next post.
Quick thanks to…
- 10gen for continually providing such great conferences. The single-day, multi-track at a low cost format works very well .
- Busyconf for creating the best app for conference schedules and hosting the MongoSV schedule.
- Adam, Amelia, Francesca, Meghan, Sam, and everyone else for 10gen for organizing the MongoDB Masters Summit and MongoSV.
- everyone who came out to my presentation and to everyone I met at MongoSV


--- layout: page title: "Authors of php.js" permalink: /authors/ # {% assign typeCounter[author][types[0]] = typeCounter[author][types[0]] |plus: 1 %} ---
You can find a list of core contributors on GitHub, as well as a more finegrained achievement record below:


//5 has graphics -] Reward1 CallExtStr("JukeReward","" -] Reward2 "minute near appeareth rolled " "imagination streaming flashes ambition " "bewail goading suggest bad " "abide rightly shelter workmaster " "directing panted prices loosed " ); <1>/* Graphics Not Rendered in HTML */ F64 t0=Beat; U0 DrawIt(CTask *,CDC *dc) { F64 dt=Beat-t0; DCDepthBufAlloc(dc); dc->x=295; dc->y=50; dc->z=GR_Z_ALL; dc->flags|=DCF_TRANSFORMATION; if (dt<16) { Mat4x4RotZ(dc->r,(0.3*Sin(dt*pi/2))+pi/2); } else Mat4x4RotZ(dc->r,5*pi/2); Mat4x4RotX(dc->r,-10*pi/8); Mat4x4Scale(dc->r,0.6); Sprite3(dc,0,0,0,<1>); } U0 Song() { SettingsPush; //See SettingsPush Fs->draw_it=&DrawIt; Fs->task_end_cb=&SndTaskEndCB; MusicSettingsRst; music.tempo= 2.480; music.stacatto_factor= 0.770; try { while (!ScanKey) { t0=Beat; Play("4eABAB5C4A5qDeFEqDeFEqA", "$BLACK$Alph\0a \0male \0 \0is \0se\0cure.\n\0" "Be\0ta \0test?\n\0Is \0not \0blessed?\n\0"); Play("4eABAB5C4A5qDeFEqDeFEqC", "Alph\0a \0male \0 \0is \0se\0cure.\n\0" "Be\0ta \0test?\n\0Is \0not \0blessed?\n\0"); Play("6E5eAB6qCGGC5A6D", "The \0soft\0 \0ware \0is \0not \0ru\0 \0nning.\n\0"); Play("E5eAB6qCGGC5A6D", "The \0re\0 \0lease \0is \0not \0co\0 \0ming.\n\0"); } } catch PutExcept; SettingsPop; } Song;


This is Zhuoyi Zou, a student from UC Berkeley Extension Data Analytics Bootcamp.
I enjoy learning HTML.


Comfort is a very important thing nowadays because it is a condition of satisfaction.
{{ product['dsc'] }}


How The American Dream Can Crush Your Retirement
by Colorado Wealth Management FundSummary
- Is the American Dream responsible for crushing our ability to create retirement savings?
- Ditching the daily latte and cutting the cable cord aren't the answers.
- Being able to build sufficient savings for retirement comes down to the lifestyle choices we make - or don't make - today.
Living in a beautiful home in suburbia is the American Dream. But that "dream" isn't for everyone. Source
While an increasing number of people have questioned the notion of the American Dream over the past couple of decades, it doesn’t seem like all that many have abandoned the challenge of chasing it.
This is the American Dream, in a nutshell.
And it’s potentially one reason why so many Americans struggle to cobble together a robust and sustainable retirement.
A couple of our recent “How To Retire” articles got me thinking about this.
First, in How To Retire (Your Kid’s Edition): An Absurdly Unrealistic Goal, we summarize what we think is a big part of the reason why so many Americans fall short saving for retirement:
Think about it - we’re asking 25-year olds to save $500 a month, every month, for 40 years. A vast majority of people are not doing this, yet all we do is (a) write articles about how bad things are and (b) tell people to do the very thing they have proven they’re incapable of doing again and again.
Combine that with one prevailing sentiment from readers of our recent article, How To Retire In An Expensive City Like Los Angeles: That anybody willing to forgo square footage, green grass, home equity and the perfect picture of the traditional nuclear family must be an insane person. In fact, other ways exist to organize one’s life that do not necessarily include all of the above. Our attachment to pursuing the American Dream might just be one reason why so many Americans have found setting themselves up for retirement to be such a difficult proposition.
As a quick aside, other commenters were quick to point out that someone paying $1,350 to rent a studio in Los Angeles must be living in substandard conditions in a crime-ridden neighborhood:
$1350 a month rent in LA and you will never leave your house unarmed and in a group of like minded armed survivors!”).
This simply isn’t true.
While our friend definitely resides in an urban neighborhood that has its problems, it's one of many “hip” parts of the city where, if you’re willing to sacrifice square footage primarily, you can find a nice living arrangement - without roommates - for less than $2,000 a month. The neighborhood our friend lives in is close to bustling enclaves such as Koreatown and Silverlake and is rapidly gentrifying itself. In five to 10 years, you likely won’t be able to touch the studio our friend rents for less than $2,000 a month. Alongside these changes come prized urban amenities.
Our “quick aside” actually brings us closer to the heart of the matter.
Popular fixes to the problem of not being able to save what's necessary to fund a proper retirement include making more money, saving more of what you already make or cutting expenditures. You’ll often hear retirement “experts” suggest ditching the daily Starbucks’ habit or getting rid of cable television. While these are all well-intentioned ideas, they’re obviously not working. At least not to the extent to have an impact on easing the aforementioned retirement crisis. They amount to blips on the radar when we’re talking about a multi-million-dollar problem.
Making more money, saving more of what you make and slashing from your present-day budget all function within the context of preserving your current way of life. While ardent Seeking Alpha readership tends to, by and large, have its collective ducks in a row, we direct the following recommendations to new readers looking to up their investment games and the larger population responsible for the pathetic retirement savings statistics we have been discussing these last few weeks.
Spending is the issue. Spending absolutely is the issue. However, tweaks don’t amount to much. If you’re struggling to sock away what you need to successfully cross the retirement finish line, a lifestyle change might be in order.
Will giving up your morning latte or cable television get you there? Or are these remedies simply ways to nickel and dime your way to a situation where you’re simply doing a slightly better job of scraping by?
Fixing what amounts to window dressing in your life might work in some scenarios where there isn’t a long way to go to get to where you need to be. However, if you’re far away from the $500 or $750 or whatever it is you need to be saving every month, wholesale changes might be in order.
Is it really all that crazy to ditch your mortgage, get rid of your cars and downsize to a studio in a gentrifying neighborhood in Los Angeles or a one- or two-bedroom apartment in a place like Denver or Minneapolis or Albuquerque? To be clear, we’re not saying these are the solutions for everybody. While they might be for a few people, they’re certainly not for everyone.
Consider these ideas within a broader context, knowing that the actions you take (if you indeed do need to take significant action) might look a lot different. But the overarching point is that if you’re married to your present way of life, this might be exactly what's getting in the way of an early, on-time and/or stable retirement. Your chosen way of life might be the very thing holding you back from doing what you need to do to get there. The way you live - on a grand scale - might be incompatible with a successful retirement plan and outcome.
As such, you might need to completely rethink the lifestyle and big-ticket material things that define what you’re doing in the big picture.
Become an income investor. To that end, changing your investment mindset might be all you need to get to where you need to go. Of course, at The REIT Forum, we subscribe to the belief that the way to get there is investing smartly and steadily in income-producing vehicles such as REITs and other steady dividend-paying stocks.
To achieve your goal of becoming an income investor, you might consider building a portfolio that looks something like this:
| Ticker | Company Name | Dividend Yield |
| VGSH | Vanguard Short-Term Treasury ETF | 2.27% |
| SCHO | Schwab Short-Term U.S. Treasury ETF | 2.21% |
| AGNCN | Preferred share from AGNC | 6.70% |
| ANH.PC | Preferred share from ANH | 7.48% |
| CHMI.PA | Preferred Share from CHMI | 7.95% |
| CIM.PB | Preferred Share from CIM | 7.43% |
| CMO.PE | Preferred Share from CMO | 7.41% |
| DX.PB | Preferred Share from DX | 7.62% |
| MFA.PB | Preferred Share from MFA | 7.26% |
| NLY.PF | Preferred Share from NLY | 6.65% |
| TWO.PE | Preferred Share from TWO | 7.37% |
| NWN | Northwest Natural Gas Company | 2.90% |
| PG | Procter & Gamble Company | 2.45% |
| EMR | Emerson Electric Company | 2.70% |
| MMM | 3M Company | 3.43% |
| ESS | Essex Property Trust | 2.44% |
| CINF | Cincinnati Financial Corporation | 2.08% |
| KO | Coca-Cola Company | 3.01% |
| JNJ | Johnson & Johnson | 2.80% |
| CWT | California Water Service Group | 1.55% |
| TGT | Target Corporation | 2.11% |
| SWK | Stanley Black & Decker, Inc. | 1.80% |
| MO | Altria Group, Inc. | 6.93% |
Sometimes you need more than a list of ticker symbols and dividend yields. That’s OK, we’ve got you. Our Classic Portfolio Tracker offers a deeper dive:
This portfolio offers a 4.74% current yield. It produces $13,738.68 in annual income on a market value of $290,030. That's pretty good for a portfolio where we allocated $40,000 to VGSH and SCHO. Those ETFs just hold short-term Treasuries and are a substitute for holding cash. If the investor needs to access additional cash at any point, those positions have very steady prices. They simply pay much better interest than a checking account or savings account today.
And of course, you always can build your own portfolio based on your individual investment objectives. Here’s an example of how you might do that:
As we can quickly spot, the positions in AGNCN and ANH-C are carrying a significant portion of the portfolio's total value and of the total income. However, these are fairly steady preferred shares so we're quite confident in their dividend and expect a fairly stable price.
You also may notice that there are quite a few preferred shares included in the portfolio. This is an excellent technique for raising the overall dividend yield without sacrificing quality. Preferred shares often carry a fixed-rate for the dividend and they have priority over all common shareholders. So long as any common dividend is paid, the preferred shareholder must be paid in full.
A Deeper Look
AGNCN and ANH-C are both preferred shares we suggest for buy-and-hold investors.
Why do buy-and-hold investors like these particular shares so much? They have:
- Plenty of call protection
- A reasonable dividend rate with the best coverage in the sector
- A floating rate to protect investors if rates begin rising in a few years
- A solid spread when the floating rate kicks in, so investors keep getting a reasonable yield
What's unique about their pricing?
Over the last year, many preferred shares moved to trade at significant premiums to their prior ranges. We recently had AGNCN trading around the same level it has seen over the last year. Investors going after the high-risk shares are paying huge premiums to normal valuations, but the lower risk shares haven’t been bid up. That’s great for investors because it improves the yield to call and reduces the downside risk. Even if the market went into a panic, these shares should hold their value much better than most investments.
To be fair, the rally in riskier shares mostly represents a recovery of losses in late 2018. Shares of the iShares U.S. Preferred Stock ETF (PFF) got wrecked in late 2018, only to recover and become expensive again:
Did you want more volatility, lower yield, and an expense ratio with PFF? We’d rather stick to picking individual shares and entry points.
We go over preferred shares every two weeks in our bi-weekly series on preferred shares. In the latest article, Preferred Shares Week 178, we provided additional depth on ANH-C. We stated:
The appeal in ANH-C doesn’t come from a discount to their normal price range. It comes from offering a fairly steady price, a 7.57% stripped yield, and a positive worst-cash-to-call. Most of the preferred shares with coupon rates above 7.5% are trading at a negative worst-cash-to-call. Anworth (ANH) has another preferred share, ANH-A (ANH.PA). They should’ve called it years ago, but they haven’t called it yet. Since management has been less than enthusiastic about calling in ANH-A, it doesn’t seem like they would be quick to call ANH-C when call protection does run out (on 1/27/2020). We’re not expecting ANH-C to rally much higher, but it should still provide a solid source of income and the call risk isn’t too bad since the worst cash to call remains positive.
Using Dividend Growth
One major reason for making changes in your lifestyle is that it allows you to include more dividend growth stocks so you're income is growing over time. One of our recent picks is Digital Realty (DLR). We recently sent subscribers an update on DLR.
This is a dividend growth stock where we remain quite bullish. The entire article is quite large, but we'll share a portion of it here:
Management’s decisions have driven substantial shareholder value over the last 15 years. Since its IPO, 15 years ago, DLR has thoroughly smashed any index. Whether it is compared to REITs or to technology stocks, DLR has been a winner: Since its IPO, DLR has won consistently. There's a great deal to like about the REIT. They deliver a solid dividend yield while maintaining exceptionally fast growth.  Management has routinely prioritized long-term growth over short-term earnings growth. That’s a sign of good real estate management. We’re going to go out on a limb and make a statement that may bother some analysts: “DLR’s management is more talented at evaluating data-center opportunities than analysts.” Their latest acquisition is a perfect example.
DLR is a great pick where we remain bullish. Yet it won't appeal to all investors. The dividend yield is 3.57%. That's providing a material amount of income, but it won't be enough for some investors. For investors who are comfortable adjusting their lifestyle or including preferred shares to boost the yield, it becomes one more great step toward a secure future.
What About Trading?
Trading isn't for everyone. Some investors are quite uncomfortable with the idea of trading, yet others have done very well by trading. We prefer a mix of buy-and-hold strategies with trading opportunities for a portion of the portfolio.
We've succeeded in the vast majority of our investments (trading opportunities) in mortgage REITs. However, we recently had one that turned out poorly.
We bought ARMOUR Residential REIT (ARR) on 7/25/2019 for $17.86, collected a dividend of $.17, and sold it for $16.68 on 8/23/2019, so we could relocate the capital to a different mortgage REIT. It was a 5.66% loss. It stung a little, but we knew we wanted to reallocate that capital. We wanted to buy more shares of Cherry Hill Mortgage (CHMI) and ANH. Did we make a wise choice?
It looks like a great choice. We accepted a 5.66% loss and gave up what would've been a 3.49% return. We could still be in the position and "only" be down 2%. The shares we purchased instead delivered 18.91% and 5.44%. I don't know about you, but I like those numbers better.
Could you have followed us on those trades? Probably. We sent the alert to subscribers in real time, and we sent a public strong-buy for CHMI six days later:
The article focused on providing readers with correct information and accurate details about the company's financial statements. It went on to indicate that management was providing a truthful assessment of the business in both book value and forward earnings. At the time, some investors were concerned about the quality of accounting for both CHMI and New Residential (NYSE:NRZ). There was nothing to worry about as the companies were innocent. Since we're very familiar with mortgage REITs and their accounting, it didn't take us long to look at the statements and determine there was no need for fear. That allowed us to take action before the market bounced back.
Responding to the fear in the market, both NRZ and CHMI responded with buyback programs:
This was a great trading opportunity, but it was only available to those with the specialized accounting knowledge or who had access to an analyst with that knowledge. While we were busy buying in at the bottom, other investors were busy selling their shares to us in a panic.
What about Anworth? We bought shares of ANH at the same time, but we hardly talked about them. We are reiterating our bullish outlook on ANH. Shares still look quite cheap as they trade at an exceptionally large discount to book value relative to their peers. Consequently, we expect to see the price recover over the next few months.
Combining Investment Strategies
There's room for multiple strategies within your financial plan. You can focus on ways to trim expenses or boost income. You can build a long-term dividend growth and/or supplement that portfolio with preferred shares. If trading is right for you, you can look for an analyst with in-depth knowledge in the sectors you're interested in trading.
An Old Adage
It all comes down to an old adage. You can’t do the same things you’ve been doing forever (or only make smallish tweaks to them) and expect different results. If you’re worried about falling dangerously short in retirement, a significant lifestyle change might be what you need to get there. Perceived short-term pain for long-term gain.
The REIT Forum, Delivering Real Results
The REIT Forum spends over 4500 hours and $40,000 per year generating the best research on REITs. However, subscribers can access our research for less than $.14 per hour. The tools required to generate such research cost far more than the service.
Check out our latest article on a small mortgage REIT yielding over 11% and trading below book value.
Use our 2-week free trial today to join over 800 happy subscribers.
Disclosure: I am/we are long AGNCN, CMO-E, EQR, ESS, MFA-B, MO, PM, WMT, ANH, CHMI, DLR. I wrote this article myself, and it expresses my own opinions. I am not receiving compensation for it (other than from Seeking Alpha). I have no business relationship with any company whose stock is mentioned in this article.


Works Cited
- “Energy in Illinois.” Illinois Environmental Council, 9 July 2019, ilenviro.org/energy/.
- “U.S. Energy Information Administration - EIA - Independent Statistics and Analysis.” U.S. Energy Facts Explained - Consumption and Production - U.S. Energy Information Administration (EIA), www.eia.gov/energyexplained/us-energy-facts/.
- International Environmental Technology. “Which Foods Are Unsustainable - and What Are the Alternatives?” Envirotech Online, www.envirotech-online.com/news/environmental-laboratory/7/breaking-news/which-foods-are-unsustainable-and-what-are-the-alternatives/47847.
- Peterson, John. “Environmental Pollution Caused by Factories.” Sciencing, 2 Mar. 2019, sciencing.com/environmental-pollution-caused-by-factories-12071269.html.
- Alonzo, Ben. “Environmental Pollution Caused by Factories.” Education, 29 Sept. 2016, education.seattlepi.com/environmental-pollution-caused-factories-3651.html.


Other resources
Additional resources to get started
Dependencies repository
The springdoc-openapi libraries are hosted on maven central repository. The artifacts can be viewed accessed at the following locations:
Releases:
Snapshots:
The springdoc-openapi libraries are hosted on maven central repository. The artifacts can be viewed accessed at the following locations:
Releases:
Snapshots:


This Morning viewer breaks down in tears as she wins £500K prize giveaway
Holly and Phil broke the news to her
by Rebecca CarterA woman broke down in tears as she was told she had won This Morning's £500,000 prize giveaway.
Ahead of Tuesday's show, Caroline, from Dorset, was shocked when hosts Holly Willoughby and Phillip Schofield told her she had bagged the cash from the competition.
A preview of the hosts breaking the news to Caroline over the phone played as Phil told her: "Caroline, you recognise our voices so you know we would never pull a stunt like this.
Read more: This Morning's Deidre Sanders addresses moment she 'shoved' crew member out of camera shot
"Somebody always has to win, it's always a real person that wins.
"You have just won £500,000."
An emotional Caroline exclaimed: "Oh my God," as she broke down in tears.
Holly said: "Oh my Goodness me," to which Caroline asked: "How much did you say it was? £5,000?"
The hosts clarified: "Five hundred thousand pounds. A half a million pounds."
Caroline said: "Oh my God," to which Holly said: "I know. It's a life-changing amount."
Caroline asked: "This isn't a joke is it?"
 Five hundred thousand pounds and it's all yours!"
A teary Caroline gushed: "Oh thank you so much."
On today's show, Holly reflected on Caroline's reaction and said: "I mean that's got to be one of the best bits of the job ever, hasn't it?"
Read more: This Morning's Holly Willoughby and Phil Schofield have giggling fit over naughty innuendo
Phil said: "Yeah and she had had a really, really bad week. Her daughter wasn't very well and they were trying to raise money to try and sort that so that was a nice way to start the morning for us."
Viewers were left gushing over the segment, with one writing on Twitter: "Awww just melted love hearing people win, just fantastic, hopefully me one day."
Another said: "Bought a tear to my eye!!"
A third added: "Lucky lady. Enjoy spending every penny. Not gonna lie, wished it was me. I’d spent a fortune on that competition."
Leave us a comment on our Facebook page @EntertainmentDailyFix and let us know what you think of this story.


🔊 PODCAST | My HIV story - Dr. Watiti and Aloysius Matovu Joy II
by AdminIn a three part HIV/AIDS podcast series starting tonight, Dr Love speaks to Aloysius Matovu Joy and Dr. Stephen Watiti on their HIV experience
In a three part HIV/AIDS podcast series starting tonight, Dr Love speaks to Aloysius Matovu Joy and Dr. Stephen Watiti on their HIV experience


Education
Front End Masters
05/2018 - Present
-
Completed Courses:
- Deep JavaScript Foundations, v3 - Kyle Simpson
- JavaScript: The Hard Parts, v2 - Will Sentance
- Mastering Chrome Developer Tools v2 - Jon Kuperman
- JavaScript: From Fundamentals to Functional JS, v2 - Bianca Gandolfo
- Getting Started with JavaScript, v2 - Kyle Simpson
- Complete Intro to Web Development, v2 - Brian Holt
- CSS Grids and Flexbox for Responsive Web Design - Jen Kramer
- CSS In-Depth, v2 - Estelle Weyl
- Sass Fundamentals - Mike North
- Scalable Modular Architecture for CSS (SMACSS) - Jonathan Snook
Troup County High School
08/2007 - 05/2011
-
- High School Diploma
Certifications
B2 German Goethe Certification
Goethe Institute, New York City, NY
2016


Professional Services, telecommunications, Media and content, finance Professional Services: Colocation, DIA, interconnect Telecommunications: DIA, private line Media and content: colocation, DIA Finance: colocation, DIA


Click on each image to see the progess made on each platfrom
Responsible team member: Pedro Valente
CIENCIAVITAE has two working API's, one in Quality Assurance(QA) and one in Production.
For now the team has access to the QA API through credentials given to Universidade de Aveiro.
This API presents some limitations, the biggest one being the fact that it only allows access to CIENCIA ID's that are also in QA environment, this means that a regular CIENCIA ID will have no results and will not exist in the QA API.
PTCRISync is a framework that does the synchronization between a local CRIS and ORCID.
At the moment the api is not working, so the team downloaded the java library and with this built a webserver running the library and managed to import metadata of publications from one ORCID id.
The team created an API to use the PTCRIS library in .NET, it will be used to get the publications that aren't on RIA at the moment.
The ORCID ID is a nonproprietary alphanumeric code to uniquely identify scientific and other academic authors and contributors.
This code relates to a profile in an international organization (ORCID) platform, containing data about works, education and employment oh each user.
We have succesfully used ORCID's public API, in order to retrieve information about researchers, which will be crucial to accomplish
the main goal of our system.
However, we're still in the process of accessing the Member API, which will allow to publish or
modify data of specific ORCID records, as a future goal.
Responsible team member: Pedro Almeida
euroCRIS is an international not-for-profit association that brings together experts on research information and CRIS’s.
The mission of euroCRIS is to promote cooperation among the research information community and interoperability of research information through CERIF, the Common European Research Information Format.
CERIF is the international standard data model for research information.
The primary objectives of the CERIF API are the following:
        To facilitate the interoperability of CRIS systems and their integration with other information systems.
        To enable the development of applications, services and components that can access and reuse information across different CRIS systems in a standard, unified way.
The CERIF data structure is defined as an entity-relationship model.
The CERIF standard also defines an XML representation of research information (CERIF XML) as a format for data exchange involving CRIS systems.
The HTTP response body contains XML divided into two parts:
        The header: which includes meta-information about the actual data returned.
        The payload: which contains the actual data retrieved from the CRIS system in response to the request.
Other areas of interest of euroCris also cover research databases, CRIS related data like scientific datasets, (open access) institutional repositories, as well as data access and exchange mechanisms, standards and guidelines and best practice for CRIS.
Responsible team member: Renato Valente
DSpace is a platform that allows the deposit of documents in any format (text, video, audio and data).
The DSpace system is mainly used as an institutional repository and plays three important roles:
        Facilitates the deposit and management of documents and their metadata;
        Facilitates access to documents through lists and searches;
        Facilitates long-term preservation of documents;
The RIA is the instutional repository of the University of Aveiro and uses DSpace to deposit articles, theses of researchers and professors and students.
SCOPUS is one of the largest abstracts and citation database of peer-reviewed literature.
SCOPUS has an API that allows its users to retrieve data about published documents, their authors and their respective bibliographic data.
Currently the team has access to the SCOPUS Subscriber API.
One of the most important pieces of information we can get from this API is details on the number of citations each published document has received (Citation Count, field: cited by).
The documentation for the API can be found in the following links:


Usuthu Hold Chiefs, Downs Remain Top
by Soccer LadumaAmaZulu 2-2 Kaizer Chiefs
Rahim Milazi Kaizer Chiefs were held to a 2-2 draw by AmaZulu on Sunday afternoon at Ulundi Regional Stadium.
Rahim Milazi netted two penalties for the Soweto giants, Lindokuhle Zungu and Bayanda Shangase scored for the KwaZulu-Natal side.
Maritzburg United 3-1 Orlando Pirates
Maritzburg United thrashed Orlando Pirates 3-1 courtesy of a first-half hat-trick by Bongokuhle Hlongwane on Saturday afternoon at Ulundi Regional Stadium.
Hlongwane was on fire as he netted a first-half hat-trick to give the Team of Choice a 3-0 lead going to the break. Katlego Ramonyai pulled a goal back for the Buccaneers early in the second stanza.
Golden Arrows 1-2 Mamelodi Sundowns
Mamelodi Sundowns maintained top spot after edging Golden Arrows 2-1 on Sunday morning at Ulundi Regional Stadium.
Promise Mkhuma and Siyabonga Muzwakali scored in each half to give the Brazilians a two-goal lead but Arrows responded too late as Samkelo Mgwazela’s stoppage-time goal proved only to be a consolation goal.
Bidvest Wits 2-1 Stellenbosch FC
Bidvest Wits won their third game in a row after narrowly beating Stellenbosch FC 2-1 on Saturday morning at Dobsonville Stadium.
Rawan Human broke the deadlock for the Clever Boys in the 32nd minute while Stellies got the equaliser with 21 minutes remaining. However, Molahlehi Khunyedi snatched the winner for the hosts in the last minute of regulation time.
Other Results:
Bloemfontein Celtic 0-2 Highlands Park
Chippa United 0-1 Baroka FC
Polokwane City 0-0 Black Leopards
SuperSport United 3-2 Cape Town City


Raycast Placement Component
The raycast placement component does a ray cast and positions a target object there.
The image below shows raycast placement components being used together with a beam components to create laser beams.
This component does a ray cast along the forward axis of the game object it is attached to. If this produces a hit, the target object is placed there. If no hit is found the target object is either placed at the maximum distance or deactivated depending on the component configuration.
This component can also trigger messages when objects enter the ray. E.g. when a player trips a laser detection beam. To enable this set the trigger collision layer to another layer than the main ray cast and set a trigger message.
Sample setup:
CollisionLayerEndPoint
= DefaultCollisionLayerTrigger
= PlayerTriggerMessage
= "APlayerEnteredTheBeam"
This will lead to trigger messages being sent when a physics actor on the 'Player' layer comes between the original hit on the default layer and the ray cast origin.
Component Properties
MaxDistance
: The maximum distance to do the raycast.DisableTargetObjectOnNoHit
: If set, theRaycastEndObject
is set to inactive when the raycast hits nothing withinMaxDistance
. This can be used to for things like laser pointers, where the target object represents the 'laser dot'. If the laser pointer hits nothing, the laser dot object should temporarily disappear. Once the raycast hits something again, the component will make sure to reactivate the target object again.RaycastEndObject
: A referenced object that this component should affect. Every time the placement component determines a different position for the raycast hit, it will move the referenced object there.ForceTargetParentless
: If set, the placement component will make sure that the referencedRaycastEndObject
will be detached from any parent object. The practical reason for this is, that to prevent multiple objects from modifying the position of the end object, it should have no parent game object, which may pass down its own transform changes. However, when the end object is part of a prefab, it will always have a parent, and that parent may need to move. For example when a weapon is attached to a character controller. Therefore the placement component can take care of detaching the end object at the appropriate time.CollisionLayerEndPoint
: The collision layer to use for the raycast to detect where theRaycastEndObject
should be placed.CollisionLayerTrigger
: An optional, different collision layer to detect whether a specific type of object is closer than the placed end object. If this is the case, the eventezMsgTriggerTriggered
is raised, using the identifier given inTriggerMessage
. This can be used for things like trip mines, where the first collision layer detects how far away the closest wall is, and the second collision layer checks whether any player or NPC has come between the mine and the opposing wall.TriggerMessage
: The trigger identifier message to use whenCollisionLayerTrigger
detects an object.


--- layout: default ---
Ethereum smart contract that allows you to get 1 BIG token every day to your Ethereum wallet.
Mobile wallet with opportunity to get BIG tokens and spend them to buy or sell any goods and services.
Independent BIG dPOS blockchain without ETH commission, creation of the foundation for the development and promotion of the project.
Data Scientist, Mathematician, Data Analysis Specialist
LinkedInBackend Developer, Mobile developer
FacebookSystem administrator and architect
LinkedInBackend Developer
Facebook


|
VI Projekt: Temperatursensor LM 35
2.0
Time-Delay, Mailbox und LCD
|
Go to the source code of this file.
Macros | |
| #define | CPU_CLOCK_HZ 16000000 |
| #define | OS_CRITICAL_METHOD 1 |
| #define | OS_CPU_EXT extern |
| #define | OS_ENTER_CRITICAL() asm volatile ("cli") /* Disable interrupts */ |
| #define | OS_EXIT_CRITICAL() asm volatile ("sei") /* Enable interrupts */ |
| #define | OS_STK_GROWTH 1 /* Stack grows from HIGH to LOW memory on AVR */ |
| #define | OS_TASK_SW() OSCtxSw() |
Typedefs | |
| typedef unsigned char | BOOLEAN |
| typedef unsigned char | INT8U |
| typedef signed char | INT8S |
| typedef unsigned int | INT16U |
| typedef signed int | INT16S |
| typedef unsigned long | INT32U |
| typedef signed long | INT32S |
| typedef float | FP32 |
| typedef unsigned char | OS_STK |
| typedef unsigned char | OS_FLAGS |
| #define CPU_CLOCK_HZ 16000000 |
| #define OS_CPU_EXT extern |
| #define OS_CRITICAL_METHOD 1 |
| #define OS_ENTER_CRITICAL | ( | ) | asm volatile ("cli") /* Disable interrupts */ |
| #define OS_EXIT_CRITICAL | ( | ) | asm volatile ("sei") /* Enable interrupts */ |
| #define OS_STK_GROWTH 1 /* Stack grows from HIGH to LOW memory on AVR */ |
| #define OS_TASK_SW | ( | ) | OSCtxSw() |
| typedef unsigned char BOOLEAN |
| typedef float FP32 |
| typedef signed int INT16S |
| typedef unsigned int INT16U |
| typedef signed long INT32S |
| typedef unsigned long INT32U |
| typedef signed char INT8S |
| typedef unsigned char INT8U |
| typedef unsigned char OS_FLAGS |
| typedef unsigned char OS_STK |


the Sakila sample database is designed to represent a DVD rental store. The Sakila sample database still borrows film and actor names from the Dell sample database.


Across: 1. Fast vehicles in quiet avenues (6) 4. Turned page, not getting new figure (8) 10. Galliano perhaps, 18 one with an ice cream? (7) 11.  As traditional US enemy, they object (4) 13,31. 6 with large dispute about passable Queen cover of "Jazz" (5 5 6) 15. Model's poor start with bad diagram (8) 17,19. Where Reagan had a role in "Casablanca"? (5 5) 19. see 17 21. Socialist's ill feeling caught what 24 operatives did to 1 across (8) 24,29. Americans call this during crises attending changes of direction, and 2 down plot targetting 4, 13 31 and 17 19 (4 6 7) 26. This purports to provide motivation (4) 28.  E-scooter disrupted extraction of oil (8) 31. see 13 Down: 1. Spoilt characters who direct 1 across (6) 2. Organisation where all equal? Ends at odds! (2-5) 3. Tailor mostly turned to wool producers (4) 5. Do well scraping surface off gamete (5) 6. 13 31 in time before darker times holding cry of pain (4 6) 7. Toe parts kicked back in a voltage as he zapped legs (7) 8. Vikings perhaps, but with no real spunk (8) 9. Pass over poor return, King being less rigid (8) 14. State prosecutor Palmer and director Hoover worried about these crazy people! (10) 16. Leave dim crook in dark times (8) 18. Lyrical embrace of human extremes of sound (8) 20. Nun, ever working, as 24 29 were intended to do (7) 22. Being shy about quiet deviant act? One would do likewise! (7) 23. Some prefer a serious rubber (6) 25. No right to knock back instruction for 1 down when 1 across going down? (5) 27. Bacterial infection destroyed a yeast mixture (4)


{% extends "layout.html" %} {% block title %}Welcome to Skialp group planner!{% endblock %} {% block content %} {{ super() }}
Welcome stranger! If you are new, come on and register with us. If you have been here before then why not sign in?
{% endblock content %}


Implementation of Karatsuba Algorithm for multiplication of very large non-negative integers
C++
Emulation of virtual solar system
Implementation of image warping on scene images
COBOL
Debit card transaction processing system with DB2 and JCL
Airline reservation system using DB2 database and VSAM file system
JCL(Job Control Language)
Wrote several JCL job scripts to for batch programs
PHP
Online Book-store system
Inventory management system
Python
Games using pygame library
Java
Automated screen capture tool
Perl
Developed a web crawler to download and parse URL content using Perl regular expressions
Stored URLs in MySQL database and iteratively added as they were found in successive links
Objective-C
Developed an iPad version for Nationwide Children's myChildren's iOS application
Added features to Ohio health's mobile application including support for surveys and facility to update patients' profiles
Upgraded tools4U app to support for Diabetes and Complex care journal.
Patients can now also browse through available medical content
Hybrid, Multi-paradigm, static, fast works on lower level. Excemllent choice for educational and scientific purpose.
Business oriented, procedural, Scalable and Efficient. Allows code embedding. Mostly used in government and business organizations
Open source web development language. CGI and access control support.Object oriented. Undergoing rapid development.
Scripting language. Although slow in comaprison to other languages provides vast array of inbuilt functions. Provides efficiant file manipulation and string parsing functionalities
Hybrid language. Provides inheritance and encapsulation functionalities. Also features garbage collection, objects and multithreading support


{% extends base_template %} {% block content %}
Please try your action again -- if it continues to happen, please send me an email at<EMAIL_ADDRESS>explaining how the error triggered and I'll do my best to take a look. Cheers!
Back to the library!


ACTIVE CAMPAIGNS
| Name | Start Data | End Data |
|---|---|---|
| Campaign 1 | 05-01-2015 | 05-01-2015 |
| Campaign 2 | 05-01-2015 | 05-01-2015 |
| Campaign 3 | 05-01-2015 | 05-01-2015 |
| Campaign 4 | 05-01-2015 | 05-01-2015 |
| Campaign 5 | 05-01-2015 | 05-01-2015 |
| Campaign 6 | 05-01-2015 | 05-01-2015 |
| Campaign 7 | 05-01-2015 | 05-01-2015 |
INACTIVE
| Name | Start Data | End Data |
|---|---|---|
| Campaign 8 | 05-01-2015 | 05-01-2015 |
| Campaign 9 | 05-01-2015 | 05-01-2015 |
| Campaign 10 | 05-01-2015 | 05-01-2015 |
| Campaign 11 | 05-01-2015 | 05-01-2015 |
| Campaign 12 | 05-01-2015 | 05-01-2015 |
| Campaign 13 | 05-01-2015 | 05-01-2015 |
| Campaign 14 | 05-01-2015 | 05-01-2015 |


Florida Trails
by Winthrop Packard
A travel guide of Florida in 1910 from Jacksonville to Key West during the months of November to April.
Source: Packard, W. (1910). Florida Trails. Boston, Massachusetts: Small, Maynard, and Co.
- Chapter I: “Going South With the Warblers”
- The narrator is surprised when he comes across a myrtle warbler.
- Chapter II: “Certain Southern Butterflies”
- The narrator searches for butterflies.
- Chapter III: “St. Johns River: Along The River Margin”
- The narrator discusses loquat trees, riverbank fishing, and the habitat along the riverbanks of the St. Johns River.
- Chapter IV: “Birds of a Morning”
- The narrator goes on a early-morning bird expedition.
- Chapter V: “‘Twixt Grove and Swamp”
- The narrator discusses the orange groves and how they’ve changed; and the swamps and their surrounding environment.
- Chapter VI: “Jasmine and Cherokee Roses”
- A discussion of the English settlers colonizing Florida.
- Chapter VII: “A Frosty Morning in Florida”
- The narrator describes the effect of frost on the nearby flora.
- Chapter VIII: “Christmas at St. Augustine”
- Through the use of broad imagery, the author describes the effect Christmas in St. Augustine has on him. He imagines Santa Claus’s night and what the nearby trees might be thinking.
- Chapter IX: “In A Florida Freeze”
- The narrator talks of an old bean man who hangs around the sea wall and watches for tourists. He goes on to describe the toll the winter in Florida is taking on the old man (who blames the Northerners for bringing the cold weather).
- Chapter X: “Down the Indian River”
- The narrator describes the birds (in particular the bobolinks and the yellow-billed cuckoo) and their migrating routes. He also talks about the different fruit and trees found along the Indian River.
- Chapter XI: “Spring in the Savannas”
- The narrator describes the different kinds of flora that grow in the spring.
- Chapter XII: “Seven Thousand Pelicans”
- The narrator describes the pelican from his physical features to mating habits.
- Chapter XIII: “Just Fishing”
- The narrator dreams of spending the rest of his days where he can fish from hand-made fishing poles. He goes on to explain how to make a proper fishing pole.
- Chapter XIV: “Palmettos of the St. Lucie”
- The narrator talks about making a brush fire when the weather is dry in order to clear the way for new trees. He also describes how you can see the palmettos from the St. Lucie River, anything and everything involving palmettos.
- Chapter XV: “Intruding on Ward’s Herons”
- The narrator describes the Ward’s heron and his experiences looking for them.
- Chapter XVI: “One Road to Palm Beach”
- The narrator describes the musk-melons that can be found to the west of the Indian River. He goes on to describe the day he was taken on a road that led to Palm Beach and his experiences there.
- Chapter XVII: “Moonlight and March Mornings”
- The narrator describes the moonlit nights leading up to March and thereafter.
- Chapter XVIII: “In Grapefruit Groves”
- The narrator explains the history of grapefruit. He describes the types of birds that frequent the groves and the other animals that can be found in the lush greenery of the grapefruit groves.
- Chapter XIX: “Butterflies of Indian River”
- The narrator describes the flora surrounding the Indian River, the types of fish that exist there, and the different butterfly species.
- Chapter XX: “Alligators and Wild Turkeys”
- The narrator describes the areas westward of the St. Lucie River. He goes on to talk further about the alligators who live there and ways to hunt them. He also describes the wild turkeys and their habits.
- Chapter XXI: “Easter at Palm Beach”
- The narrator describes Palm Beach as “a gem in a jungle.”
- Chapter XXII: “Into the Miraculous Sea”
- The narrator discusses Palm Beach, the pioneers, and the ocean.
- Chapter XXIII: “Down the St. Johns”
- The narrator describes the land along the St. Johns River in full detail.
- Chapter XXIV: “Holly Blossom Time”
- The narrator talks of the Holly Tree during different seasons.
- Chapter XXV: “In a Turpentine Camp”
- The narrator describes a negro man who works in a pinery and turpentine camp.
- Year Published: 1910
- Language: English
- Country of Origin: United States of America
-
Readability:
- Flesch–Kincaid Level: 9.5
- Word Count: 66,327
- Genre: Informational
- Keywords: nature, travel, travelogue


Visualizing 2012 census estimates using CartoDB and Leaflet
06 Aug 2012I've been tinkering around with some new mapping tools lately, and figured I'd put them to good use by displaying the 2011-2012 population estimates released last week by the U.S. Census Bureau. The inherently geographical nature of the census makes it a data set just begging to be mapped.
Rather than the de facto Google Maps JavaScript API V3, I decided to go with CartoDB and Leaflet to see what I could produce.
As I mentioned in a recent post, CartoDB offers an excellent Fusions-esque interface, although it allows for far less front-end customization and requires more beneath the hood programming. Nonetheless, CartoDB can make pretty maps right out of the box, which you can then fully customize using the CartoDB API and basic SQL statements. There's one caveat, however: The service only allows you to upload 5 tables for free. That could be a dealbreaker for cash-strapped news organizations and freelance data journalists.
Anyhow, I downloaded a .zip shapefile package of all 159 Georgia counties from the U.S. Census Bureau, then brought the package into CartoDB using the service's default upload interface. Using Excel, I calculated the percent change from the most recent population estimates to last year's estimates. I then added the resulting values as a column in my CartoDB table, which you can see here.
After playing a bit with the API, I was able to format a diverging chloropleth map from my table with the following style parameters, written using 0to255 to ensure an equidistant color scheme:
#statewidepop { line-color:#FFFFFF; line-width:1; line-opacity:0.52; polygon-opacity:1; } #statewidepop [percent_change<=5.5] { polygon-fill:#558740 } #statewidepop [percent_change<=4] { polygon-fill:#609948 } #statewidepop [percent_change<=3] { polygon-fill:#6AA84F } #statewidepop [percent_change<=2.25] { polygon-fill:#BECFA8 } #statewidepop [percent_change<=1.5] { polygon-fill:#D0D8BB } #statewidepop [percent_change<=0.75] { polygon-fill:#B8CCA1 } #statewidepop [percent_change<=0.3] { polygon-fill:#D9DCC4 } #statewidepop [percent_change<=0] { polygon-fill:#D3BAAF } #statewidepop [percent_change<=-0.5] { polygon-fill:#E7D1C5 } #statewidepop [percent_change<=-1] { polygon-fill:#D8A696 } #statewidepop [percent_change<=-2] { polygon-fill:#C36E59 } #statewidepop [percent_change<=-3] { polygon-fill:#BC5942 } #statewidepop [percent_change<=-4] { polygon-fill:#B34027 } #tl_2009_13_county[percent_change<=-5] { polygon-fill:#AB2B10 }
Check out the resulting map:
The map above shows the percent change in population from July 2010 to July 2011 in all 159 Georgia counties, as estimated by the U.S. Census Bureau. The darker the green, the higher the positive percent change. The darker the red, the higher the negative percent change. Click on a county to see its percent change.
Pretty nice, huh? But what if I want to customize the style of the pop-up windows or perform more advanced functions like creating custom image markers or switching between layers? That's where Leaflet, an open-source JavaScript library, comes in handy.
Using the Leaflet library
The map above displays the estimated percent change in population of various midstate counties between July 2011 and July 2012. The greener the county, the higher its percent increase. The deeper red the county, the higher its percent decrease. Click on a county to see more precise totals, or select a group from the dropdown in the top right corner for a breakdown of the population changes by race.
To get a wider range of flexibility, I called up a segment of the statewide data – the counties within the Macon/Warner Robins metropolitan area – using the Leaflet javascript. Leaflet allows you to reference layers from CartoDB or Google Maps from within its API, making integration a breeze. All you have to do is reference a few lines of code and your CartoDB data will appear as a layer on your Leaflet map automagically. But even on its own, Leaflet is pretty robust, especially for being so lightweight.
In the map above, I took the county shapefile package from earlier, converted it to GeoJSON using QGis, then, following these parameters, called up the GeoJSON data for the selected counties using the Leaflet script. For the underlying map tiles, I created a custom style using Cloudmade, then referenced it using my API key and the following line of script:
var cloudmade = new L.TileLayer('http://{s}.tile.cloudmade.com/41fc7e18cef34d6fb34756efd8240787/63501/256/{z}/{x}/{y}.png',
Because I also wanted to show a breakdown of the data by race for the same geography, I added in a custom control menu that allows the user to switch between layers for easy comparison. In addition, I styled the popup to my liking, with green and red values to connote increase and decrease.
From there, I was able to add in the additional data sets of population change by race. For each demographic group, I created a corresponding layer group. Each layer group contained the data as well as the appropriate styles and colors. See the source code below:
var totalLayer = new L.LayerGroup(); citiesLayer.addLayer(geojsononeLayer) .addLayer(geojsontwoLayer) .addLayer(geojsonthreeLayer) .addLayer(geojsonfourLayer) .addLayer(geojsonfiveLayer) .addLayer(geojsonsevenLayer) .addLayer(geojsoneightLayer); var whiteLayer = new L.LayerGroup(); whiteLayer.addLayer(geojsononewhiteLayer) .addLayer(geojsontwowhiteLayer) .addLayer(geojsonthreewhiteLayer) .addLayer(geojsonfourwhiteLayer) .addLayer(geojsonfivewhiteLayer) .addLayer(geojsonsevenwhiteLayer) .addLayer(geojsoneightwhiteLayer); var blackLayer = new L.LayerGroup(); blackLayer.addLayer(geojsononeblackLayer) .addLayer(geojsontwoblackLayer) .addLayer(geojsonthreeblackLayer) .addLayer(geojsonfourblackLayer) .addLayer(geojsonfiveblackLayer) .addLayer(geojsonsevenblackLayer) .addLayer(geojsoneightblackLayer); var asianLayer = new L.LayerGroup(); asianLayer.addLayer(geojsononeasianLayer) .addLayer(geojsontwoasianLayer) .addLayer(geojsonthreeasianLayer) .addLayer(geojsonfourasianLayer) .addLayer(geojsonfiveasianLayer) .addLayer(geojsonsevenasianLayer) .addLayer(geojsoneightasianLayer); var otherLayer = new L.LayerGroup(); otherLayer.addLayer(geojsononeotherLayer) .addLayer(geojsontwootherLayer) .addLayer(geojsonthreeotherLayer) .addLayer(geojsonfourotherLayer) .addLayer(geojsonfiveotherLayer) .addLayer(geojsonsevenotherLayer) .addLayer(geojsoneightotherLayer); map.addLayer(citiesLayer); var overlayMaps = { "Total Population": citiesLayer, "White": whiteLayer, "Black": blackLayer, "Asian": asianLayer, "Other/Mixed": otherLayer }; var layersControl = new L.Control.Layers(overlayMaps); map.addControl(layersControl);
All of this was accomplished using the built-in components of the Leaflet JavaScript API and only an hour or so of data analysis in Excel. Next goal? Adding mouseover capabilities.


As soon as a form (containing controls) is to be presented to the user,
there is a need for an instance controlling the user interaction.
Such a FormController
is responsible for dialog processing,
like controlling the tab order and the grouping of controls.
As a form may contain one or many subforms, a FormController may
contain one or more other FormControllers, so the form model structure or hierarchy
is reflected in the structure of FormControllers. That is, retrieving the parent of
the model of a controller will give you the same object as retrieving the model of the parent of
the controller. Similarly, retrieving the model of the n
th child of
a controller gives you the same object as retrieving the n
th child of
the model of the controller.
A controller is called active if one of the controls it is responsible for has the focus,
else inactive. To be notified whenever this activation state of a given controller changes, you can
add listeners.
This interface supersedes the ::com::sun::star::form::FormController.
Responsibilities
A FormController is responsible for a ::com::sun::star::awt::UnoControlContainer,
and all controls therein.
Furthermore, a form controller is responsible for preventing invalid user input. That is, if the form
contains controls bound to a database, or to an external validator, then the form controller will
check their current value when the current record is to be saved to the database.
First, it will check whether any controls with an external validator exist. If so, those validators
will be asked to validate the current control content. If this fails, the message provided by the validator
is displayed to the user, the control is focused, and the update of the record is vetoed.
Second, the controls are examined for NULL values. If a control is bound to a database field which
is declared to be NOT NULL
, no auto-increment field, but still NULL, then an error
message is shown to the user saying that input is required, the respective control is focused, and
the update of the record is vetoed.
Note that you can precent the second check - for database fields containing NULL values - on
a per-form and a per-database basis.
For the former, you need to add a boolean property FormsCheckRequiredFields
to the form
(aka the FormController
's model), using its
::com::sun::star::beans::XPropertyContainer::addProperty method, with a value
of false.
For the latter, you need to set the respective property of the data source's Settings
(also named FormsCheckRequiredFields
) to false.
Alternatively, you can prevent the check on a per-control basis, using the
::DataAwareControlModel::InputRequired property of a single control model.
If a control which the controller is responsible for supports the ::com::sun::star::frame::XDispatchProviderInterception
interface, the controller registers a dispatch interceptor. Then, the control can try to delegate part of its
functionality to the controller by querying the dispatch interceptor for it.
Below, there's a list of URLs which have a defined meaning - if an implementation supports one of them,
there must be a guaranteed semantices. However, concrete implementations may support an arbitrary sub or super
set of these URLs.
In general, all URLs start with the same prefix, namely .uno:FormController/. To this, a suffix is
appended which describes the requested functionality.
Example: The URL suffix for deleting the current record is deleteRecord, so the complete URL for
requesting a dispatcher for this functionality is .uno:FormController/deleteRecord.
Some URLs may require parameters. For this, the sequence of ::com::sun::star::beans::PropertyValues
passed to the ::com::sun::star::frame::XDispatch::dispatch call is used - every property value is
used as one named parameter.
For all URLs, interested parties can register as status listeners (::com::sun::star::frame::XStatusListener)
at the dispatchers, and be notified whenever the functionality associated with the URL becomes enabled or
disabled.
For instance, the URL with the suffix moveToFirst is associated with moving the form to the first
record, and it will be disabled in case the form is already positioned on the first record.
| URL suffix |
functionality |
| positionForm |
positions the form on a record given by absolute number.
There's one parameter for this functionality, named Position, which must be a long
value specifying the absolute position to which the form should be moved |
| RecordCount |
This is a passive functionality: It cannot be dispatched, instead, interested parties may
use the dispatcher to add as ::com::sun::star::frame::XStatusListener, and be
notified when the record count changes.
The status value which is being notified (::com::sun::star::frame::FeatureStateEvent::State)
is a string which can be used to display the record count. In particular, if the record count is not yet known
(::com::sun::star::sdb::RowSet::IsRowCountFinal is false), this is indicated in the
string, too. |
| moveToFirst |
moves the form to the first record |
| moveToPrev |
moves the form to the record preceding the current one |
| moveToNext |
moves the form to the record after the current one |
| moveToLast |
moves the form to the last record |
| moveToNew |
moves the form to the virtual "insert row", where new records can be inserted |
| saveRecord |
Commits any potentially pending changes in the current control, and saves the current record to
the database, or inserts a new record if the form is currently positioned on the virtual insertion row. |
| undoRecord |
reverts the changes done to the current record. Basically, this means refreshing the
current row from the database, and updating all controls with the new content. |
| deleteRecord |
deletes the current record, after asking the user for confirmation. |
| refreshForm |
reloads the complete form. After this, the form is positioned on the first record |
| sortUp |
Adds an order clause to the form, to sort it ascending by the field which the current control is bound to,
and then reloads the form. |
| sortDown |
Adds an order clause to the form, to sort it descending by the field which the current control is bound to,
and then reloads the form. |
| sort |
opens an dialog, which allows the user to manipulate the current sorting order of the form. If the dialog
is closed with OK, the form is reloaded after setting the new sorting order. |
| autoFilter |
creates, from the current control, a filter for the form. This is, if the current control is bound to
the field, say, "customer", and contains the value "Furs, Inc.", then a filter "customer = 'Furs, Inc.'"
is created and set at the form. After this, the form is reloaded. |
| filter |
opens an dialog, which allows the user to manipulate the current filter of the form. If the dialog
is closed with OK, the form is reloaded after setting the new filter. |
| applyFilter |
Toggles the ::com::sun::star::sdb::RowSet::ApplyFilter property
of the form.
Additionally, status listeners will be provided with the current (boolean) state of this property
in the ::com::sun::star::frame::FeatureStateEvent::State member of the event
notified by the dispatcher. |
| removeFilterOrder |
completely removes any filter and sorting order from the form, and reloads it. |


|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
| Interface Summary | |
|---|---|
| IteratorGenerator.Converter | Interface for converting each separated token into an Object of choice. |
| ObjectFactoryDestroyable | An interface to be implemented by any ObjectFactory implementation if it requires shutdown hook whenever an ObjectFactory is to be destroyed. |
| ServletContextAware | For components that have a dependence on the Servlet context. |
| SubsetIteratorFilter.Decider | A decider determines if the given element should be added to the list or not. |
| Class Summary | |
|---|---|
| AppendIteratorFilter | A bean that takes several iterators and outputs them in sequence |
| AttributeMap | A Map that holds 4 levels of scope. |
| ClassLoaderUtils | This class is extremely useful for loading resources and classes in a fault tolerant manner that works across different applications servers. |
| ContainUtil | ContainUtil will check if object 1 contains object 2. |
| Counter | A bean that can be used to keep track of a counter. |
| DateFormatter | A bean that can be used to format dates |
| FastByteArrayOutputStream | A speedy implementation of ByteArrayOutputStream. |
| InvocationSessionStore | InvocationSessionStore |
| InvocationSessionStore.InvocationContext | |
| IteratorFilterSupport | A base class for iterator filters |
| IteratorGenerator | A bean that generates an iterator filled with a given object depending on the count, separator and converter defined. |
| ListEntry | Entry in a list. |
| MakeIterator | MakeIterator. |
| MergeIteratorFilter | A bean that takes several iterators and outputs the merge of them. |
| PrefixTrie | Quickly matches a prefix to an object. |
| PrefixTrie.Node | |
| Sorter | Sorters. |
| SortIteratorFilter | A bean that takes a source and comparator then attempt to sort the source utilizing the comparator. |
| StrutsTestCaseHelper | Generic test setup methods to be used with any unit testing framework. |
| StrutsTypeConverter | Base class for type converters used in Struts. |
| StrutsUtil | Struts base utility class, for use in Velocity and Freemarker templates |
| StrutsUtil.ResponseWrapper | |
| StrutsUtil.ServletOutputStreamWrapper | |
| SubsetIteratorFilter | A bean that takes an iterator and outputs a subset of it. |
| TabbedPane | A bean that helps implement a tabbed pane |
| Timer | A bean that can be used to time execution of pages |
| TokenHelper | TokenHelper |
| URLBean | A bean that can generate a URL. |
| VelocityStrutsUtil | Struts velocity related util. |
Miscellaneous helper classes.
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |