Class Wmc
A Wmc entity presents an OGC WMC.
Namespace: Mapbender\WmcBundle\Entity
ORM\Entity
ORM\Table(name="mb_wmc_wmc"): ORM\DiscriminatorMap({"mb_wmc" = "Wmc"})
Located at Mapbender/WmcBundle/Entity/Wmc.php
ORM\Entity
ORM\Table(name="mb_wmc_wmc"): ORM\DiscriminatorMap({"mb_wmc" = "Wmc"})
Located at Mapbender/WmcBundle/Entity/Wmc.php
Methods summary
public
mixed
|
|
public
integer
|
|
public
mixed
|
|
public
|
|
public
mixed
|
|
public
array|
|
|
public
mixed
|
|
public
string
|
|
public
|
|
public
|
|
public
|
#
setDescriptionurl(
Set description URL |
public
|
|
public
mixed
|
|
public
string
|
|
public
|
|
public
string
|
|
public
mixed
|
|
public
string
|
|
public
mixed
|
|
public
mixed
|
|
public
string
|
|
public
|
|
public
string
|
|
public
Symfony\Component\HttpFoundation\File\File
|
|
public
mixed
|
|
public
boolean
|
|
public static
mixed
|
#
create(
Create WMC entity |
Magic methods summary
Properties summary
protected
mixed
|
$id
|
|
protected
string
|
$version
$version The wmc version |
# "1.1.0" |
protected
string
|
$wmcid
$wmcid a wmc id |
|
protected
mixed
|
$state
|
|
protected
array
|
$keywords
$keywords The keywords of the wmc |
# array() |
protected
string
|
$abstract
$abstract The wmc description |
|
public
|
$logourl
A description url |
|
public
|
$descriptionurl
A description url |
|
protected
|
$contact
A contact. |


Growth models and forest production require existing data
manipulation and the creation of new data, structured from basic forest
inventory data. The purpose of this package is provide functions to support
these activities.
| Version: |
0.9.5 |
| Depends: |
sqldf, stringr, plyr, R (≥ 3.0) |
| Imports: |
data.table, tcltk, utils, stats, graphics, devEMF, png, grDevices, methods, ggplot2, gridExtra |
| Suggests: |
testthat |
| Published: |
2018-11-18 |
| Author: |
Clayton Vieira Fraga Filho,
Ana Paula Simiqueli,
Gilson Fernandes da Silva,
Miqueias Fernandes,
Wagner Amorim da Silva Altoe |
| Maintainer: |
Clayton Vieira Fraga Filho <forestgrowthsoftware at gmail.com> |
| License: |
GPL-2 |
| NeedsCompilation: |
no |
| Materials: |
NEWS |
| CRAN checks: |
Fgmutils results |


Consider the following 4 invocations of logappend
followed by an invocation of logread
:
$ ./logappend -T 1 -K secret -A -E Fred log1
$ ./logappend -T 2 -K secret -A -G Jill log1
$ ./logappend -T 3 -K secret -A -E Fred -R 1 log1
$ ./logappend -T 4 -K secret -A -G Jill -R 1 log1
These commands have used the key secret to append 4 events to the log log1
, recording the arrival of Fred and Jill in room 1 of the gallery. If logread
is then used to print the state of the gallery, the following should be printed:
$ ./logread -K secret -S log1
Fred
Jill
1: Fred,Jill
If we continue using log1
and record some movements, we can then use logread
to get a list of the rooms entered by Fred.
./logappend -T 5 -K secret -L -E Fred -R 1 log1
./logappend -T 6 -K secret -A -E Fred -R 2 log1
./logappend -T 7 -K secret -L -E Fred -R 2 log1
./logappend -T 8 -K secret -A -E Fred -R 3 log1
./logappend -T 9 -K secret -L -E Fred -R 3 log1
./logappend -T 10 -K secret -A -E Fred -R 1 log1
./logread -K secret -R -E Fred log1
1,2,3,1
We can also use logappend
in batch mode like so (on a fresh log log2
):
$ cat batch
-K secret -T 0 -A -E John log2
-K secret -T 1 -A -R 0 -E John log2
-K secret -T 2 -A -G James log2
-K secret -T 3 -A -R 0 -G James log2
$ ./logappend -B batch
$ ./logread -K secret -S log2
John
James
0:James,John


This page is meant to help demonstrate how hello-ref work.
What it does basically is grabs the value of ?Ref= from the URL and presents a custom message.
You get to control the design and text for each referral.
When you share your website on a network, append ?ref= to the URL
so you can present a message when people hop in
Check the gitHub repo for an updates release notes
Click here to add ?ref=test to this file and get a message
I have hello-ref implemented on my personal website, /project (shameless plug!)
so when you'll go in, you'll see a message just for you. glhf!


Moneycontrol Ultimate Business Quiz #73: Test your knowledge Take a shot at the Moneycontrol Ultimate Business Quiz. Check how many you get right. 01 Nov 2019 by Avinash Mudaliar Q1. This school of thought is largely characterized by rejection of the concept of the human being as a rational actor, always seeking to maximize material self-interest that underlies classical economic thinking. As per this philosophy western economic systems were (and are) based on what the founder called the “multiplication of wants”. What is it called? (Image: Pixabay) Answer: Gandhian Economics (Image: Wikimedia Commons) Q2. This is India's only parenting show on YouTube. It tackles the delights and woes of the developing years of children between 2-12 years. Viewers will get to see popular VJ & actress, Maria Goretti host the 4th season, bringing in parenting experiences of celebs like Rakshanda Khan, Maninee De, Chahat Khanna, Suchitra Pillai and many more.Apart from the informative and heart-warming conversations, brands like Asian Paints, Nestle Ceregrow & Mothercare have also shared their inputs and handy tips for the moms to follow. What is it called and who is the producer? (Image: Pixabay) Answer: 9 months and Firstpost Studio. (Image: Screengrab from YouTube) Q3. What was founded in 1919 by Frank Little and Alva Kinney, who brought together four grain mills as Nebraska Consolidated Mills (NCM) with its head Grand Island, Nebraska? Its headquarter was moved to Omaha in 1922. The company ran at a profit until 1936, when Kinney retired. Name the company. (Image: Reuters) Answer: Conagra Foods Q4. Founded by Mahatma Gandhi, this publishing house of great repute having to its credit publications of more than 800 titles in English, Gujarati, Hindi and other languages so far. Located on the west side of the river Sabarmati, Ahmedabad, this unique institution has grown from strength to strength during the last eight and half decades. Name the publishing house. (Image: Wikimedia Commons) Answer: Navjivan Trust The concept was designed to help create atmosphere and foot-traffic at the entrance to stores at Swanston Street, Melbourne (a very large store with the front counter a considerable distance from the shop's entrance). The idea was developed between Charlie Bell and the local Regional Corporate team (David Bayes, Mike Tregurtha and Jim Vasiliadis). The first of its kind was opened as a Corporate store in Melbourne. The first one in the United States opened in Chicago, Illinois, in May 2001 when there were about 300 worldwide. Name it and what is it called in Turkey? (Image: Reuters) Answer: McCafe and McD Cafe in Turkey Q6. He was an American cardiologist born in Chelsea Massachusetts [born to Ukrainian immigrants from Novogrod Wolyn aka Zwill Ukraine (formally the Russian Empire), Issac Litman and Sadie Zewat Litman] and Harvard Medical School professor and researcher. Who is this doctor and what acoustic medical device for auscultation does he have a patent for? Answer: David Littman and the stethoscope (Image: Pixabay) Q7. Made of wood and brass, this is one of the original equipment belonging to a French physician who devised the first contraption for auscultation in 1816. It consists of a single hollow tube. The familiar one, with rubber tubing going to both ears, was not developed until the 1850s. Regarded as the father of chest medicine, he demonstrated the importance of the instrument in diagnosing diseases of the lungs, heart and vascular systems. Ironically, how did he die? Rene Laennac. He died of Tuberculosis. (Image: Pixabay) Q8. This man is from the Israeli Navy. His motto, when he landed in New York was to get a great job, have tons of fun and make lots of money. He said this in an interview in 2017. His journey has been dubbed as from “The Kitbuttz to Coworking”. Who is he? (Image: Reuters) Answer: Adam Neumann. (Image: Reuters) Q9. He is all set to launch a theatre festival called ‘Khidkiyaan-Just Act’, presented by Just Act, which is founded by him. It provides an opportunity for theatre lovers to join in peeping through ‘Khidkiyaan’ and to keep theater alive. The four-day festival kick-starts on 26th September with Khidkiyaan Kala Samman presented to Manoj Bajpayee for his achievements followed by a play titled ‘Khoobsurat Bala’ which is directed by Imtiaz Ahmed. Each day there would be a brand new play which the audiences can enjoy. ‘Ulatbaansi ’ directed by Hemant Pandey will be on 27th September, followed by ‘The Last Salute’ directed by Arvind Gaur on 28th September. ‘The Last Salute’ will also be presented by the legendary Mahesh Bhatt and the last play ‘Chainpur Ki Dastan’ by NK Pant will be held on 29th September. It is a 4-day festival open to one and all free of charge. Who is the master caster behind this initiative? (Image: Reuters) Answer: Mukesh Chhabra Q10. They recently confirmed plans for a section that will be edited by seasoned journalists, in a departure from its long-standing practise of letting algorithms dictate a user's experience. A human team will select relevant, reliable breaking and top news stories. "The number of publishers included in the X will grow over time.” What is X and the feature? (Image: Pixabay) Answer: Facebook and News Tab (Image: Reuters) Q11. Significantly, both X and Y hailed from Kathiawar in Gujarat. For nearly three decades, they followed contrasting styles of leadership. X joined the All India Muslim League in 1913 and was Pakistan’s first Governor-General until his death. Incidentally, records show that both Y and X wanted the Cabinet Mission Plan (1946) to succeed. When it failed, X called it the “saddest day of his life” and Y refused to talk to Nehru for 4-5 days. Later, Y also forced Nehru and Patel to give Pakistan’s revenue share of Rs 55 crore by going on indefinite fast. Identify X and Y. (Image: Pixabay) Answer: X - Muhammad Ali Jinnah, Y - Mahatma Gandhi (Image: Pixabay) Q12. What is this set of Emojis called? Answer: EmotiKarl (Image: Reuters) Q13. “There was an employee meeting a number of years ago and Steve [Jobs] was talking . . . He [said] that one of the fundamental motivations was that when you make something with love and with care, even though you probably will never meet . . . the people that you’re making it for, and you’ll never shake their hand, by making something with care, you are expressing your gratitude to humanity, to the species.” What did these lead to? (Image: Reuters) Answer: The inspiration behind LoveFrom by Jony Ive (Image: Reuters) Q14. This is a game by Bandai named after one of the pioneers of early gaming. What is the name of the game/pioneer? Answer: Gunpei Yokoi, the designer of GameBoy. The game is called GunPey . Q15. The strategy + business magazine was originally published by Booze Allen Hamilton since 1995. The magazine’s founding editor Joel Kurtzman coined a term to describe his published interviews with influential business figures. What was this term? (Image: Moneycontrol) Answer: Thought leadership. Q16. Bonnes is a commune in the Vienne department in the Nouvelle-Aquitaine region in western France. In about 1973 because of a certain event, the town had a sudden increase in the volume of mail handled because of which the post office was reclassified at a higher status and the postmaster's salary raised. So, what happened in 1973? (Image: Pixabay) Answer: In 1973, Ogilvy retired as Chairman of Ogilvy & Mather and moved to Touffou, his estate in France. While no longer involved in the agency's day-to-day operations, he stayed in touch with the company. His correspondence so dramatically increased the volume of mail handled in the nearby town of Bonnes that the post office was reclassified at a higher status and the postmaster's salary raised. (Image: Reuters) Q17. Agent X (née Weisfelt) is a fictional character on the US television science fiction series Warehouse 13 (2009–2014), portrayed by Saul Rubinek. He is the Special Agent in Charge of Warehouse 13 and is the immediate supervisor of Agents Pete Lattimer, Myka Bering and Claudia Donovan. Identify this character named after a famous business personality. Answer: Arthur Nielsen


AKA Reacts To Burna Boy’s Grammy Nomination
by Gbenga SijuadeSouth African rapper and songwriter, Kiernan Jarryd Forbes known professionally as AKA has congratulated Nigerian born hip-hop star Burna Boy on his Grammy nominations.
Naija News understands that the South African rapper was forced to congratulate him after a fan asked AKA that, “@akaworldwide Burna just got nominated for a Grammy, what do you have to say??”.
It will also be recalled that Burna Boy’s nomination coincides with the cancellation of his scheduled performance at the Africa Unites Concert in South Africa.
The concert was reportedly cancelled due to uproar from South Africans. They kicked up a fuss because of Burna Boy’s comments in the wake of xenophobic attacks on Nigerians in South Africa earlier in the year.
When Burna was then announced as a headlining act for the South African concert, AKA and other South Africans demanded an apology from Burna.
Here is AKA’s congratulatory message below:


This website was inspired by Below The Line and Senate.io.
The candidate information was retrieved directly from the AEC's website.
Election information is available from a number of places. Here is a selection:
Made by Mark, with assistance from Geoff. The source code is available, and please let me know of any bugs or suggestions.


AKAN NAME is an application that takes the users birthday date and calclates the week and the day they were born.The results
will vary on their gender outputs Akan name.
The app will show you accurate and right results and is easy to use.The app also
keeps track of your birthday and will notify you when the time comes.
Akan is derived fron the Ghananians where by the are named after the day name which will be similar with the day they were
born during the week simultaniously.You as well have a name which has meaning derived from your community or Family.
Most African communities adn tribes follow the same procedure.Many communities are diverse and sub divided into small
groups where you may find them sharing this common names.
We are inspired by the ghananian traditions and culture where by we follow the specific naming given by our traditionalists we are proud of the diverese merge that we have been able to create which connects the AKANA naming to the world.


ROW 33
I. Due Today
II. Essential Questions
III. Agenda
A. Spiritual Exercise
IV. Assignments
A. Read and Highlight Pages in EROW
https://db.tt/bERux67d
Progress: 0%
Effort: 10 minutes
B. NOW for ROW 33
Progress: 0%
Effort: 10 minutes
https://db.tt/bERux67d
Progress: 0%
Effort: 10 minutes
Progress: 0%
Effort: 10 minutes


|
Figure 1
|
Structure of piezoelectric pressure sensor. |
|
Figure 2
|
( a) Working principle diagram. ( b) Mechanics principle dia ... |
|
Figure 3
|
ANSYS model of quartz crystal. |
|
Figure 4
|
Potential diagram of quartz crystal under 2 MPa of pressure. |
|
Figure 5
|
Potential diagram of quartz crystal under 2 MPa of pressure ... |
|
Figure 6
|
Potential diagram of quartz crystal under 2 MPa of pressure ... |
|
Figure 7
|
Potential diagram of quartz crystal under 2 MPa of pressure ... |
|
Figure 8
|
Potential diagram of quartz crystal under 2 MPa of pressure ... |
|
Figure 9
|
( a) Machete hammer principle diagram. ( b) Test system. |
|
Figure 10
|
Pressure test data. |
|
Figure 11
|
Flowchart of the EMD-SIT. |
|
Figure 12
|
Outputs of the two models. |
|
Figure 13
|
Frequency response of the two models. |
|
Figure 14
|
Step response of the two models. |
|
Figure 15
|
Error curve after compensation. |


---
layout: default
---
Get in touch via our general email address or contact some department directly. Do you want to integrate Particl into your service or platform? Do you have a marketing or media proposal? Do you want to invite a Particl team member to your event or organize one of your own?Contact us
For secure matters (security issues & bugs), you can reach us via PGP/GPG keys provided below.Partnerships
Marketing & Press
Events & Meet-ups
We take security seriously. If you found a critical bug, security issue or just want to communicate in encrypted manner, use our provided public key to encrypt your emails.


#assign n0_docs="true"> <#assign n1_query="true"> <#assign dtoquery = "true">
DtoQuery is where we use SQL and map it into plain beans. These plain beans are just ordinary beans with public constructor(s) and public getters/setters.
public static class CustomerDto { Integer id; String name; ... // getters & setters }
// using positioned parameters List<|CustomerDto> beans = database.findDto(CustomerDto.class, "select id, name from customer where name = ?") .setParameter(1, "Rob") .findList();
// using named parameters List<|CustomerDto> beans = database.findDto(CustomerDto.class, "select id, name from customer where name = :name") .setParameter("name", "Rob") .findList();
When mapping the SQL resultSet to the DTO beans the following is used.
Note that we perform the mapping using MethodHandles rather than reflection. That does mean it expects the Constructor and Setter methods to have public access.
We can apply firstRows/maxRows to the sql query.
String sql = "select id, name from customer where name like ?"; List<|CustomerDto> robs = server().findDto(CustomerDto.class, sql) .setParameter(1, "Rob%") .setMaxRows(10) .findList();
The appropriate sql will be added to apply firstRows/maxRows for the database platform.
select id, name from o_customer where name like ? limit 10
By default when performing the mapping, if we are not able to map a column to a property (setter method) then an exception is thrown.
Instead we can set relaxed mode on the query via query.setRelaxedMode()
and that
means it will effectively ignore/skip any column that it can't map.
This is expected to be useful when there is potentially a large existing query and there is a desire to only map some of the columns into bean properties.
When using Postgres we can use Postgres ANY
in DtoQuery using positioned parameters
or by using setArrayParameter()
.
The benefit of using Postgres ANY
is that we end up using a single SQL query regardless of the number
of parameters - a single JDBC PreparedStatement and the database has a single SQL query to parse. This results in
the database doing less hard parsing and better use of PreparedStatement cache, less query plans to cache, less memory consumed.
When using index positioned parameters and binding a collection that will bind as a JDBC ARRAY.
List<|Integer> ids = List.of(1, 2); String sql = "select id, name from customer where id = any(?)" List<|CustomerDto> list = DB.findDto(CustomerDto.class, sql) .setParameter(ids) // bind as JDBC ARRAY .findList();
When using named parameters by default Ebean expects use of an IN
clause and collections are "expanded".
For example, a collection of 3 values is expanded into 3 separate JDBC bind values ?,?,?
rather than JDBC binding a single ARRAY.
To bind collections as a Postgres ARRAY for an ANY
clause we need to use setArrayParameter()
.
List<|Integer> ids = List.of(1, 2); String sql = "select id, name from o_customer where id = any(:idList)" List<|CustomerDto> list2 = DB.findDto(CustomerDto.class, sql) .setArrayParameter("idList", ids) // bind as JDBC ARRAY .findList();
We use findEach when processing a large query where we do not wish to hold all the beans in a list but instead process them one at a time.
String sql = "select id, name from o_customer where id > :id order by id desc"; database.findDto(CustomerDto.class, sql) .setParameter("id", 0) .findEach(customer -> { log.debug("got " + customer.getId() + " " + customer.getName()); ... });
findStream is similar to findEach where we process the result one at a time.
We should use a try with resources
block to ensure the underlying resources
are closed.
String sql = "select id, name from o_customer where id > ? order by id desc"; try (Stream<|CustomerDto> customers = database.findDto(CustomerDto.class, sql) .setParameter(0) .findStream()) { // use the stream of customers ... ... }
findIterate is similar to findStream and findEach where we process the result one at a time.
We should use a try with resources
block to ensure the underlying resources
are closed.
String sql = "select id, name from o_customer where id > :id order by id desc"; try (QueryIterator<|CustomerDto> customers = database.findDto(CustomerDto.class, sql) .setParameter(0) .findIterate()) { // iterate through the customers ... }
If we are looking to select a single column we look to use SqlQuery.mapToScalar() for that.
String sql = "select mysequence.nextval"; Long nextVal = DB.sqlQuery(sql) .mapToScalar(Long.class) .findOne();<@next_edit "Queries" "/docs/query/" "/docs/query/dtoquery.html"/>


Enter value between 4 and 6.
Enter number seperated by comma (,)
Enter nonzero number seperated by comma (,)


|
Cricket Audio
|
Custom file base class. More...
#include <customfile.h>
Public Member Functions | |
| virtual bool | isValid () const =0 |
| Returns true if the file was successfully opened. More... | |
| virtual int | read (void *buf, int bytes)=0 |
| Read from the file. More... | |
| virtual int | getSize () const =0 |
| Returns the size of the file. More... | |
| virtual void | setPos (int pos)=0 |
| Sets the read position in the file. More... | |
| virtual int | getPos () const =0 |
| Returns the read position in the file. More... | |
Custom file base class.
If you want to override the low-level details of how files are read (for example, to read files over a network, or to decrypt encrypted files as they are read), create a subclass and register a handler with CkSetCustomFileHandler().
This will work for bank files, and for .cks and Ogg Vorbis streams, but not for other stream types such as MP3, AAC, etc.
|
pure virtual |
Returns the read position in the file.
|
pure virtual |
Returns the size of the file.
|
pure virtual |
Returns true if the file was successfully opened.
|
pure virtual |
Read from the file.
Returns number of bytes actually read.
|
pure virtual |
Sets the read position in the file.


|
| |
674
|
|
Oracle Performance Tuning and Optimization
by Edward Whalen
Sams, Macmillan Computer Publishing
ISBN: 067230886x Pub Date: 04/01/96
|
22
1000
Chapter 20 BLOB System
Oracle can store Binary Large Objects (BLOBs) using the RAW or LONG RAW data type available from Oracle. BLOBs are used to store data that cannot be stored in a textual form. Such data can have any of the following forms:
- Images. These images may have any of several formats, including GIF and JPEG.
- Video. These types of images may be in MPEG or some other format.
- Audio. Audio data can be stored in a variety of formats, including PCM, ADPCM, DSP, GSM, and so on.
- Documents. Scanned documents can be stored as a BLOB.
These and many other types of data can be stored in an Oracle database using the RAW or LONG RAW data type. These data types permit you to store any type of data that does not fit into the typical data types. This allows you immense flexibility in the type and amount of data you can store in a database. With the increased popularity of multimedia applications and data, the effective storage of such data is becoming more important.
Characteristics of BLOBs
Binary large data is a term used to describe any type of binary data that is significant in size and stored on a computer. Although BLOBs do not have to be stored in a database, for the purposes of this book, only data stored in an Oracle database is addressed.
BLOBs stored in an Oracle database usually exhibit the following characteristics:
- Significant size. Each record is significant in size. Although the size depends on your particular database and application, with BLOBs, the objects can be 1M in size or larger.
- Binary data. BLOB data is binary by definition.
- Strict response time criteria. Because the data can consist of sources that require continuous data feeds (such as video and audio), the response-time criteria may be strict. When numeric data is momentarily interrupted, the user hardly notices, but when an audio or video stream is interrupted, it is quite noticeable.
- Compression. Because the data is binary and large, it may or may not be stored in a compressed state. This depends on the database and the application.
These are the general attributes of binary large objects. The way this data is accessed is quite different from other types of applications described in the preceding chapters. The following section looks at the data access patterns for BLOBs.
Data Access Patterns
The data access patterns for a system used for BLOB storage are unique. One or more tables have records of a megabyte or more. When this data is accessed, it is a continuous data access to a single record. In the other types of database applications you have seen, it is unlikely that a single record is larger than a data block. With BLOBs, it is certain that a single record will span many data blocks.
System Load
The load you see when accessing BLOBs is different than the typical load you see with other types of RDBMS systems. With BLOBs, the load tends to be more on the I/O subsystem and less on the sy
d3a
stem processors.
In a typical OLTP, batch, or DSS system, the system processors are kept busy determining where to look for the next piece of data, completing some other function such as a sort, or performing aggregate functions. It is also normal for the I/O subsystem to spend most of its time seeking to new data rather than waiting for sequential data to be retrieved. In fact, in most type of RDBMS operations, it is normal for more time to be spent seeking than retrieving the data.
In a system used to access BLOB data, it is not unusual for more time to be spent retrieving the data than seeking to it. This reversal occurs because of the large amount of data associated with a typical BLOB record. It is not unusual for the BLOB system to spend a lot of time in I/O activities; therefore, it is less sensitive to the CPU horsepower of the system.
Because the data accesses to these large records are sequential, simply adding more disk drives to the system may not solve the problem. However, because most of these accesses occur simultaneously with other disk accesses, many of the concepts discussed in previous chapters still apply. A disk array can still be very beneficial.
Other tuning concepts also apply but may vary slightly from previous examples. The primary emphasis in accessing BLOB data is the I/O subsystem. The performance of your system is based primarily on the performance of the I/O subsystem.
Following is a list of the load characteristics of a BLOB system:
- Relatively few processes on the system. For the BLOB system, the Oracle Parallel Query option is not of any benefit.
- Extremely high network traffic. The primary function of this type of system is to provide some sort of data stream. Typically, this function is to service remote clients.
- Heavy I/O usage. The BLOB system depends heavily on the I/O subsystem. Although the accesses are sequential, multiple simultaneous accesses make this I/O random. By taking advantage of multiblock reads, sequential access is done as much as possible.
- Very little redo log usage during access, heavy usage during data loading. These types of systems are primarily used for data retrieval; however, adding data to the system can significantly affect the redo log.
- Very little or no use of rollback segments. Again, because BLOB functions consist of very little update activity, the rollback segments are hardly used. However, if data loading is done with INSERT statements instead of with the direct path loader, rollback segments may be affected.
- Moderate to heavy use of memory. Memory is used not only for the SGA but for each of the server processes that may be performing additional functions.
You can use these characteristics to help design and tune your BLOB system for optimal performance. The first step in this design process is to set goals for what you want to achieve.
55e
|


***********************************************************
Free Shipping On Everything!
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo15d?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
***********************************************************
Shop It Like It’s Hot (Spring Weather Or Not)
40% Off Everything*
*Excludes Aerie Undies & 3rd Party Merchandise
Now Through 4.2. In Stores & At AE.com
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo15e?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Men
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo11b?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Women
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo12b?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
USE CODE: 88915111
***********************************************************
Share 40% Off & Free Shipping With Friends On Facebook
***********************************************************
Project Live Your Life
Vote Daily Through 4.3
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo22a?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
You Decide The Next Faces Of AE
The final week to vote is here & it’s
all up to you to tell us who you want in our next campaign!
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo22d?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Vote Now
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo22g?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
***********************************************************
Free Shipping On Everything. Limited Time Only.
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo15k?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
***********************************************************
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo22m?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Forward
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo7?RAF_TRACK=&AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Become A Fan On Facebook
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo20?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Follow Us On Twitter
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo23?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Instagram
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo5?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Pinterest
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo21?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
shopkick
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo1?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Mobile Alerts
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo6?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
***********************************************************
Come Hang Out…Find A Store
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo19?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Download The AE App
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo17?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Earn Up To 40% Off
Sign Up For AEREWARDS
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo18?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
***********************************************************
Automatic free shipping at AE.com valid for orders
placed through March 31, 2013 at 11:59 PM PDT, and shipping to U.S. &
Canadian addresses. Offer not valid on international orders. This offer
is good for U.S. standard shipping within 3 to 7 business days pending
credit approval and authorization. Orders to Canadian addresses will be
shipped via Canada post within 6 to 10 business days to urban areas and
15 to 22 business days to rural areas. This free shipping offer can be
combined with other discount offers. No discount code is required at the
AE.com shopping bag. Not applicable toward previously purchased
merchandise. All deliveries are pending credit approval, merchandise
availability, delivery and weather conditions. Free shipping promotion
and associated terms & conditions subject to change at AE’s sole
discretion.
*Receive 40% off your purchase at AE, Aerie, or AEO Factory Brand stores
or enter discount code 88915111 on ae.com, aerie.com or
aeofactorystore.com beginning March 27, 2013 at 6:00 am EDT through
April 2, 2013 at 11:59 pm PDT to get 40% off your AE and AEO Factory
Store purchases. This 40% off offer cannot be combined with other
discount offers. Discount applies to AE and AEO Factory Store
merchandise costs only, not tax and shipping & handling costs. This
discount is not redeemable for cash, nor applicable toward previously
purchased merchandise. Excludes Aerie undies, Aerie clearance undies and
AEO Factory Aerie undies and merchandise from these brands: Adidas,
Bass, BC, Bed Stu, Birkenstock, Chronicle, Clarks, Creative Rec, DV,
Eastland, GOLA, Havaianas, Keds, Me Too, MIA, Minnetonka, New Balance,
New Balance/PF Flyers, Old Soles, Palladium, Pro Keds, Reebok, Saucony,
Seychelles, Sperry, Steve Madden, Sweet Shoes, Tailgate, Timberland,
Tretorn, Volley and college and pro merchandise. Discount promotion and
associated terms and conditions subject to change at AE’s sole
discretion.
© 2013 AEO MANAGEMENT CO. ALL RIGHTS RESERVED.
***********************************************************
Update Your Email Address:
<EMAIL_ADDRESS>Sign Up For Email:
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo16?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Privacy Policy:
http://e.ae.com/a/tBRVDEBB7uylYB8xoPKNuZn6S$b/aeo14?AAP_FLAG=N&CUSTOMER_NBR=1235023277209
Add<EMAIL_ADDRESS>to your address book.
Our mailing address: 77 Hot Metal Street, Pittsburgh, PA 15203


This is a free and coloborative Web tool , a free site for wind up with subject specific knowledge. You can contribute with your own questions and answers to this repository for grater good. Hope you dig it :)
feel free to comment on answers to share a thought
Learn from questions
Learn from questions
Learn from questions
Learn from questions


Before going through the troubleshooting pointers make sure you are in introHCI directory using your terminal.
Type ls and you should see the following:
If you do not see all the files shown in the image above this means you did not setup introHCI directory correctly. Go back to Lab1 and read carefully Slide 12.
Make sure your lab1 and lab2 folders are inside the introHCI directory. It should look like the following:
Now we are ready to troubleshoot Lab2
- If you're having trouble with vagrant run the following commands in the introHCI directory (i.e. introHCI). Example of error: connection closed by remote host
- vagrant reload
- vagrant ssh
- If you succeed in the previous two steps, type cd lab2
- If you get Heroku: command not found in your terminal
- First, make sure you have gone through Step 1 (above)
- Type heroku login, if you still get command not found. Type the entire line below:
- wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
- If this comments returns immediately this means you are not connected to internet in your vagrant environment. Refer to Step 1.
- After typing heroku login you get errors similar to StackError
- Type in your terminal ping google.com. If you do not get a quick response this means your virtual machine cannot connect to the world. Go back to Step 1.
- If you do get a response then follow Step 2


% with messages = get_flashed_messages(with_categories=true)
% if messages
% for category, message in messages
{{ message }}
% endfor
% endif
% endwith
% if form and form.errors
There were problems with your submission.
% endif
% block body
Content under construction.
% endblock


Evolved Web Apps With SAPUI5
Pre-flight Check
Web Page:
SAPUI5:
→ All systems go – ready for take-off!


--- title: "Submit Resource - Thank You" permalink: "/thank-you/submit-resource/" layout: "submit-resource-form" ---
Thank you for your contribution!
Your submission should be reviewed shortly. Please note that someone from the Center for Open Data Enterprise (CODE) may contact you for further information.
Return to Homepage


You must enable JavaScript to use this application.
Submit
Paste data from Excel rows/columns to flatten into a list.


Copyright (C) 2012, Integrated Communication Systems Group, TU Ilmenau.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1.) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2.) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3.) Neither the name of the "Integrated Communication Systems Group, TU Ilmenau" nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
In this work, the library "libnet" is used to assemble and send packets. Its source code is available under: https://github.com/sam-github/libnet.
Moreover, the library "libcap" is used to capture packets from network devices. The source code for this library is available under: http://www.tcpdump.org/#source.


Thank you for signing up for the All of Us Researcher Workbench!
Your Username: ${USERNAME} has been ${BETA_ACCESS_REPORT}
Please ${ACTION}


Baltas and Kosowski's modifications to the basic time-series momentum strategy can be summarized in the formula below:
\[r_{t,t+1}^{TSMOM-CF} = \frac{1}{N_t} \sum_{i=1}^{N_t} X_t^i \frac{\sigma_{P,tgt}}{\sigma_t^i} CF(\bar{\rho}_t)r_{t,t+1}^i\]where:
\[r_{t,t+1}^{TSMOM-CF} = \text{TSMOM-CF portfolio return from time t to time t+1}\] \[N_t = \text{Number of portfolio constituents at time t}\] \[X_t^i = \text{Trading signal value of asset i at time t}\] \[\sigma_{P,tgt} = \text{Target level of volatility for the overall portfolio}\] \[\sigma_t^i = \text{Estimated volatility of asset i at time t}\] \[CF(\bar{\rho}_t) = \text{Correlation factor that adjusts the level of leverage applied to each portfolio constituents at time t}\] \[r_{t,t+1}^i = \text{return of asset i from time t to time t+1}\]The formula shows that the weights for each portfolio constituent are dependent on three parts:
The TREND trading rule determines the trading signal based on the statistical strength of the realized return:
\[ \text{TREND}_i^{12M} \quad \begin{cases} +1, \text{ if } t(r_{t-12,t})>+1 \\ t(r_{t-12,t}), \text{ otherwise} \\ -1, \text{ if } t(r_{t-12,t})<-1 \\ \end{cases} \]where t() is the t-statistic of the daily futures log-returns over the past 12 months to scale the gross exposure to each portfolio constituents.
When the absolute value of our t-statistic is greater than 1, the trend is highly statistically significant, so the strategy puts 100% exposure to the asset. When the t-statistic is between -1 and 1, the strength of the trend is not as significant, so the strategy scales its exposure to less than 100%.
Instead of estimating each asset's volatility as the standard deviation of past close-to-close daily logarithmic returns, Baltas and Kosowski adopt a more efficient volatility estimator proposed by Yang and Zhang (2000). The formula for the Yang and Zhang volatility estimator (\(\sigma_{YZ}\)) is shown below:
\[\sigma_{YZ}^2(t) = \sigma_{OJ}^2(t) + k \sigma_{SD}^2(t) + (1-k) \sigma_{RS}^2(t)\]where:
\[\sigma_{OJ} = \text{Overnight jump estimator (standard deviation of close-to-open daily logarithmic returns)}\] \[\sigma_{SD} = \text{Standard volatility estimator (standard deviation of close-to-close daily logarithmic returns)}\] \[\sigma_{RS} = \text{Rogers and Satchell (1991) range estimator}\] \[k = \text{parameter that minimizes YZ estimator variance, which is a function of the numbers of days in the estimation}\]The formula for parameter k is below:
\[k = \frac{0.34}{1.34+\frac{N_D+1}{N_D-1}}\]The Rogers and Satchell range estimator calculation is based on the following formula:
\[\sigma_{RS}^2(\tau) = h(\tau)[h(\tau)-c(\tau)]+l(\tau)[l(\tau)-c(\tau)]\]where \(h(\tau)\), \(l(\tau)\) and \(c(\tau)\) denote the logarithmic difference between the high, low and closing prices respectively with the opening price. The RS volatility of an asset at the end of month t, assuming a certain estimation period, is equal to the average daily RS volatility over this period.
The estimation period is chosen to be 1 month, or 21 trading days, based on Baltas and Kosowski's suggestions.
where:
\[N = \text{number of assets in the portfolio}\] \[\rho_{i,j} = \text{correlation between asset i, j}\] \[X_i = \text{trade signal of asset i}\] \[\bar{\rho} = \text{average pairwise signed correlation for the entire portfolio}\]


Alpha rarefaction
{% if empty_columns %}The following metadata categories have been omitted because they did not contain any values: {{ empty_columns|join(', ') }}
{% extends 'base.html' %} {% block head %} {% endblock %} {% block content %}
The following metadata categories have been omitted because they did not contain any values: {{ empty_columns|join(', ') }}


Folders¶
Functions for the folders endpoint. See the Official Documentation for more information.
List Folders¶
Use this endpoint to obtain a list of folders within a Bodis account.
1Bodis::listFolders();
You can pass any parameters listed in their documentation as an array.
1Bodis::listFolders();
2 'page' => 1,
3 'per_page' => 25
4]);
Folders returned will be an array of the Folder Resource: Example Response
'data' => [
0 => JeffreyHosler\BodisApiWrapper\Resources\Folder {
+id: 000
+totalDomains: 483
+name: 'Test Folder'
}
1 => JeffreyHosler\BodisApiWrapper\Resources\Folder {
+id: 001
+totalDomains: 12
+name: 'Test 2 Folder'
}
]
'current_page' => 1
'first_page_url' => 'https://api.bodis.com/v2/folders?page=1'
'from' => 1
'last_page' => 1
'last_page_url' => 'https://api.bodis.com/v2/folders?page=3'
'next_page_url' => 'https://api.bodis.com/v2/folders?page=2'
'path' => 'https://api.bodis.com/v2/folders'
'per_page' => 25
'prev_page_url' => null
'to' => 25
'total' => 2
Add Folder¶
Use this endpoint to add new folders to a Bodis account.
1Bodis::addFolder([
2 'name' => 'New Folder'
3]);
Folders returned will be an array of the Folder Resource: Example Response
JeffreyHosler\BodisApiWrapper\Resources\Folder {
'name' => 'New Folder',
'user_id' => 00000,
'id' => 0003
}
Update Folder¶
Use this endpoint to update folders within a Bodis account.
1Bodis::updateFolder($id, [
2 'apply_settings' => false,
3 'parking' => [
4 'imprint' => false,
5 'zeroclick_disabled' => false,
6 'keywords' => [
7 'master_keywords' => [
8 'Video Games',
9 'Free Games'
10 ],
11 'related_search_terms' => [
12 'Play Free Games',
13 'Free Games Online'
14 ]
15 ]
16 ],
17 'sale' => [
18 'status' => 'NOT_FOR_SALE',
19 'url' => 'https://example.com/{DOMAIN_NAME}',
20 'price' => 1000,
21 'min_price' => 800,
22 'desktop_location' => 'TOP',
23 'desktop_custom_text' => '{DOMAIN_NAME} is for sale!',
24 'desktop_type' => 'BLEND_IN',
25 'mobile_location' => 'TOP',
26 'mobile_custom_text' => '{DOMAIN_NAME} is for sale and great for mobile!',
27 'mobile_type' => 'HIGHLIGHT',
28 'is_auto_redirect' => false,
29 'custom_inquiry_text' => 'Serious offers only, please.'
30 ]
31]);
Note
This endpoint does not return any content
Delete Folder¶
Use this endpoint to delete folders from a Bodis account.
1Bodis::deleteFolder($id);
Note
This endpoint does not return any content


Carro: 0 Elemento(s)
Elementos recientes
Pearl Izumi Men's E:Motion Tri N1 Neutral Race Shoe
1 x $124.99
Pearl Izumi Men's E:Motion Tri N1 Neutral Race Shoe
1 x $124.99
Pearl Izumi Men's E:Motion Tri N1 Neutral Race Shoe
1 x $124.99
Ver Todos
Checkout
EN
German
Russian
French
Arabic
Mi Cuenta
My lista de deseos
Checkout
Blog
Iniciar Sesión
Toggle navigation
Inicio
Inscripción
Programa
Reglamento
Información
Voluntarios
Blog
Blog Detail
Promo Video
Galería
Tienda
Shop
Product Detail
Contáctenos
My Wishlist
Product Name
Unit Price
Stock Status
Pearl Izumi Men's E:Motion Tri N1 Neutral Race Shoe
$124.99
In Stock
Pearl Izumi Men's E:Motion Tri N1 Neutral Race Shoe
$124.99
In Stock
Pearl Izumi Men's E:Motion Tri N1 Neutral Race Shoe
$124.99
In Stock
Learn more about dwarfing your
competitors.
Contact Us


For this rotation, the project was to sew a pair of pants. I chose a paterned fabric, so the hardest part was getting the parernts to match up. I also had a few mishaps with the sewing machine, but none too disastrous. My biggest mistake was probably buring myself on one of the irons.


Toggle navigation
ISC @ UCSD
Home
About
Events
Programs
Contact
Inter-Sustainability Council
Rough draft of ISC website
Bootstrap v3.3.7
jQuery v1.11.1


Sending a message occurs in two stages. An initial call to send() sets a message ID and field count. A field is zero or more datums of the same data type (int, double, etc). Then pack() methods are called, once for each field. The message is not sent to the other application until the last field has been packed.
Receiving a message also occurs in two stages. An initial call to recv() returns a message ID, field count, and info about each of the fields (id, data type, length) in the message. A field is zero or more datums of the same datat type (int, double, etc). Then unpack() methods are called, typically once for each field. Fields can be unpacked in any order, or not at all.
These are code examples for the various CSlib methods used to exchange messages. Code for the sending app and receiving app are shown together:
Additional details on the methods:
API:
void send(int msgID, int nfield); int recv(int &nfield, int *&fieldID, int *&fieldtype, int *&fieldlen);
C++ sending app:
int msgID = 1; int nfield = 10; cs->send(msgID,nfield); // cs = object created by CSlib()
C++ receiving app:
int nfield; int *fieldID,*fieldtype,*fieldlen; int msgID = cs->recv(nfield,fieldID,fieldtype,fieldlen);
C sending app:
void *cs; // ptr returned by cslib_open() int msgID = 1; int nfield = 10; cslib_send(cs,msgID,nfield);
C receiving app:
void *cs; int nfield; int *fieldID,*fieldtype,*fieldlen; int msgID = cslib_recv(cs,&nfield,&fieldID,&fieldtype,&fieldlen);
Fortran sending app:
type(c_ptr) :: cs ! ptr returned by cslib_open() integer :: msgID = 1 integer :: nfield = 10 call cslib_send(cs,msgID,nfield)
Fortran receiving app:
type(c_ptr) :: cs integer :: msgID,nfield type(c_ptr) :: ptr,pfieldID,pfieldtype,pfieldlen integer(c_int), pointer :: fieldID(:) => null() integer(c_int), pointer :: fieldtype(:) => null() integer(c_int), pointer :: fieldlen(:) => null()
msgID = cslib_recv(cs,nfield,pfieldID,pfieldtype,pfieldlen) call c_f_pointer(pfieldID,fieldID,[nfield]) call c_f_pointer(pfieldtype,fieldtype,[nfield]) call c_f_pointer(pfieldlen,fieldlen,[nfield])
Python sending app:
msgID = 1 nfield = 10 cs.send(msgID,nfield) # cs = object created by CS.open()
Python receiving app:
msgID,nfield,fieldID,fieldtype,fieldlen = cs.recv()
Comments:
For the send() method, the msgID is an integer identifier chosen by the sender, so the receiver can interpret the message accordingly. It can be positive, negative, or zero. Nfield is the number of data fields in the message. Nfield can be >= 0.
Nfield is returned by recv(). FieldID, fieldtype, and fieldlen are vectors of length nfield. They contain the field ID, field data type, and field length for each field (explained below). These vectors are allocated by the CSlib, which just returns pointers to the vectors. The values in those vectors are those specified by the sender, in the pack() methods that follow.
For the C cslib_recv(), note that the address of nfield, fieldID, fieldtype, fieldlen are passed.
For the Fortran cslib_recv(), pfieldID, pfieldtype, pfieldlen are returned as pointers. The c_f_pointer() function converts them to Fortran vectors of length nfield.
A single value is a 32-bit integer, 64-bit integer, 32-bit floating point value, or a 64-bit floating point value.
API:
void pack_int(int id, int value); void pack_int64(int id, int64_t value); void pack_float(int id, float value); void pack_double(int id, double value);
int unpack_int(int id); int64_t unpack_int64(int id); float unpack_float(int id); double unpack_double(int id);
C++ sending app:
int id = 1; // different for each pack call int oneint = 1; int64_t oneint64 =<PHONE_NUMBER>; float onefloat = 1.5; double onedouble = 1.5;
cs->pack_int(id,oneint); // cs = object created by CSlib() cs->pack_int64(id,oneint64); cs->pack_float(id,onefloat); cs->pack_double(id,onedouble);
C++ receiving app:
int id = fieldID[0]; // different for each unpack call
int oneint = cs->unpack_int(id); int64_t oneint64 = cs->unpack_int64(id); float onefloat = cs->unpack_float(id); double onedouble = cs->unpack_double(id);
C sending app:
void *cs; // ptr returned by cslib_open() int id = 1; int oneint = 1; int64_t oneint64 =<PHONE_NUMBER>; float onefloat = 1.5; double onedouble = 1.5;
cslib_pack_int(cs,id,oneint); cslib_pack_int64(cs,id,oneint64); cslib_pack_float(cs,id,onefloat); cslib_pack_double(cs,id,onedouble);
C receiving app:
void *cs; int id = fieldID[0];
int oneint = cslib_unpack_int(cs,id); int64_t oneint64 = cslib_unpack_int64(cs,id); float onefloat = cslib_unpack_float(cs,id); double onedouble = cslib_unpack_double(cs,id);
Fortran sending app:
type(c_ptr) :: cs ! ptr returned by cslib_open() integer(4) :: id = 1 integer(4) :: oneint = 1 integer(8) :: oneint64 =<PHONE_NUMBER> real(4) :: onefloat = 1.5 real(8) :: onedouble = 1.5
call cslib_pack_int(cs,id,oneint) call cslib_pack_int64(cs,id,oneint64) call cslib_pack_float(cs,id,onefloat) call cslib_pack_double(cs,id,onedouble)
Fortran receiving app:
type(c_ptr) :: cs integer(4) :: oneint integer(8) :: oneint64 real(4) :: onefloat real(8) :: onedouble integer(4) :: id = fieldID(1)
oneint = cslib_unpack_int(cs,id) oneint64 = cslib_unpack_int64(cs,id) onefloat = cslib_unpack_float(cs,id) onedouble = cslib_unpack_double(cs,id)
Python sending app:
id = 1 oneint = 1 oneint64 =<PHONE_NUMBER> onefloat = 1.5 onedouble = 1.5
cs.pack_int(id,oneint) # cs = object created by CS.open() cs.pack_int64(id,oneint64) cs.pack_float(id,onefloat) cs.pack_double(id,onedouble)
Python receiving app:
id = fieldID[0]
oneint = cs.unpack_int(id) oneint64 = cs.unpack_int64(id) onefloat = cs.unpack_float(id) onedouble = cs.unpack_double(id)
Comments:
For all the pack() methods, id is an identifier the sending app chooses for each field it packs. These can normally just be 1,2,3,...,N for N fields, but that is not required. Each id can be positive, negative, or zero. For the unpack() methods, the receiving app can access the list of field IDs from the fieldID vector returned by recv().
API:
void pack_string(int id, char *string); char *unpack_string(int id);
C++ sending app:
txt = (char *) "hello world"; int id = 1;
cs->pack_string(id,txt); // cs = object created by CSlib()
C++ receiving app:
int id = fieldID[0];
char *txt = cs->unpack_string(id);
C sending app:
void *cs; // ptr returned by cslib_open() int id = 1; txt = (char *) "hello world";
cslib_pack_string(cs,id,txt);
C receiving app:
void *cs; int id = fieldID[0]; char *txt = cslib_unpack_string(cs,id);
Fortran sending app:
type(c_ptr) :: cs ! ptr returned by cslib_open() character(len=32) :: txt = "hello world" integer(4) :: id = 1
call cslib_pack_string(cs,id,trim(txt)//c_null_char)
Fortran receiving app:
type(c_ptr) :: cs type(c_ptr) :: ptr character(c_char), pointer :: txt(:) => null() integer(4) :: id = fieldID(1)
ptr = cslib_unpack_string(cs,id) call c_f_pointer(ptr,txt,[fieldlen(1)-1])
Python sending app:
txt = "hello world" id = 1
cs.pack_string(id,txt) # cs = object created by CS.open()
Python receiving app:
id = fieldID[0]
txt = cs.unpack_string(id)
Comments:
The memory for the string returned by unpack_string() is owned by the CSlib. It just returns a pointer to the app.
For Fortran, the trim() function removes trailing space. A c_null_char is appended to the pack string to make it a NULL-terminated C-style string. A pointer to the string is returned by cslib_unpack_string(). The c_f_pointer() function converts it to a Fortran style string of length N-1 to remove the trailing NULL.
The pack() and unpack() methods are for exchanging multiple datums of the same data type, which can represent contiguous 1d vectors or multidimensional arrays (2d, 3d, etc) of datums. The set size can be one, i.e. a single value. Here we give examples for vectors. The syntax for declaring multidimensional arrays in the native langauges are different, so that is discussed below.
Use these methods if all an app's processors send/receive a copy of the entire field. Use the parallel versions (below) if the field data is distributed across the sending or receiving app processors.
The syntax for 64-bit floating point datums (float64) is shown here. The comments indicate what to change for 32-bit integers (int32), 64-bit integers (int64), or 32-bit floating point (float32).
API:
void pack(int id, int ftype, int flen, void *data); void *unpack(int id);
C++ sending app:
int id = 1; int ftype = 4; // 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 int flen = 100; double *sdata = (double *) malloc(flen*sizeof(double)); // int for int32, int64_t for int64, float for float32, double for float64
cs->pack(id,ftype,flen,sdata);
C++ receiving app:
int id = fieldID[0]
double *rdata = (double *) cs->unpack(id); // int for int32, int64_t for int64, float for float32, double for float64
C sending app:
void *cs; // ptr returned by cslib_open() int id = 1; int ftype = 4; // 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 int flen = 100; double *sdata = (double *) malloc(flen*sizeof(double)); // int for int32, int64_t for int64, float for float32, double for float64
cslib_pack(cs,id,ftype,flen,sdata);
C receiving app:
void *cs; int id = fieldID[0];
double *rdata = (double *) cslib_unpack(cs,id); // int for int32, int64_t for int64, float for float32, double for float64
Fortran sending app:
type(c_ptr) :: cs ! ptr returned by cslib_open() integer(4) :: id = 1 integer(4) :: ftype = 4 ! 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 integer :: flen = 100 real(8), allocatable, target :: sdata(:) ! integer(4) for int32, integer(8) for int64, real(4) for float32, real(8) for float64 allocate(sdata(flen))
call cslib_pack(cs,id,ftype,flen,c_loc(sdata))
Fortran receiving app:
type(c_ptr) :: cs integer(4) :: id = fieldID(1) integer(4) :: flen = fieldlen(1) type(c_ptr) :: ptr real(c_double), pointer :: rdouble(:) => null() ! integer(c_int) for int32, integer(c_int64_t) for int64, real(c_float) for float32, real(c_double) for float64
ptr = cslib_unpack(cs,id) call c_f_pointer(ptr,rdata,[flen])
Python sending app:
id = 3 ftype = 4 # 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 flen = 100 dtype = 1,2,3 # to send Python list, Numpy array, ctypes vector
if dtype == 1: # Python list sdata = flen*[0] elif dtype == 2: # Numpy 1d array sdata = np.zeros(flen,np.float) # float -> intc for int32, int64 for int64, float32 for float32, float for float64 elif dtype == 3: # ctypes vector sdata = (ctypes.c_double * flen)() # c_int for int32, c_longlong for int64, c_float for float32, c_double for float64
cs.pack(id,ftype,flen,sdata) # cs = object created by CS.open()
Python receiving app:
id = fieldID[0] dtype = 1,2,3 # to return Python list, Numpy 1d array, ctypes vector
rdata = cs.unpack(id,tflag=dtype) # tflag is optional, default = 3 for ctypes
Comments:
For pack(), ftype specifies the type of datums in the field:
For pack(), flen is the number of datums in the field. Flen can be 0 or more.
The final data argument for pack() is a pointer to contiguous chunk of memory that stores the flen datums. If flen = 0, data can be NULL. If flen = 1, and a scalar values is passed, then the argument should be the address of the scalar value, since the CSlib interprets it as a vector. Note that data can be passed as a pointer to any data type, (int, int64_t, float, double, etc). The library treats it as a void pointer and casts it to the appropriate type to match the ftype argument.
Pack() can be passed a pointer to any data type, (int, int64_t, float, double, etc). The CSlib treats it as a void pointer and casts it to the appropriate type to match the ftype value.
Unpack() returns a "void *" pointer to the field data. The app casts the pointer to the appropriate data type.
There is no allocation of memory by the app for calls to unpack(). The CSlib owns the memory for the data and just returns a pointer to the app.
For the Fortran unpack(), the function c_f_pointer() must be called to map the returned C pointer to a Fortran variable. The final argument of c_f_pointer is a "shape" argument with the length of the vector. This is known by the receiving app as a value in the fieldlen vector returned by recv().
For the Python pack(), data can be passed as a Python list (or tuple), a Numpy array, or a ctypes vector. Examples for how to create these data structures are shown above. All of these data types are accessed the same in subsequent Python code, e.g. rdata[13].
The Python unpack() takes a final optional argument tflag (for type flag). It can be specified as 1,2,3 to return the vector as a Python list, Numpy array, or ctypes vector. The default is tflag = 3 = ctypes vector.
Similar to pack() and unpack(), the pack_parallel() and unpack_parallel() methods are for passing a contiguous list of datums which can represent 1d vectors or multidimensional arrays (2d, 3d, etc) of datums. Here we give examples for vectors. The syntax for declaring multidimensional arrays is different, so those are discussed below.
Use these methods if the field data is distributed across the sending or receiving app processors. Use the pack() and unpack() methods above if all an app's processors send/receive a copy of the entire field.
The syntax for 64-bit floating point datums (float64) is shown here. The comments indicate what to change for 32-bit integers (int32), 64-bit integers (int64), or 32-bit floating point (float32).
API:
void pack_parallel(int id, int ftype, int nlocal, int *ids, int nper, void *data); void unpack_parallel(int id, int nlocal, int *ids, int nper, void *data);
C++ sending app:
int id = 1; int ftype = 4; // 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 int nlocal = 100; // could be different for each proc int nper = 1; // for a vector (see multidimensional arrays below) int *ids = (int *) malloc(nlocal*sizeof(int)); // this proc's datum IDs double *sdata = (double *) malloc(nlocal*sizeof(double)); // int for int32, int64_t for int64, float for float32, double for float64
cs->pack_parallel(id,ftype,nlocal,ids,nper,sdata);
C++ receiving app:
int id = fieldID[0]; int nlocal = 200; int nper = 1; int *ids = (int *) malloc(nlocal*sizeof(int)); double *rdata = (float *) malloc(nlocal*sizeof(double)); // int for int32, int64_t for int64, float for float32, double for float64
cs->unpack_parallel(id,nlocal,ids,nper,rdata);
C sending app:
void *cs; // ptr returned by cslib_open() int id = 1; int ftype = 4; // 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 int nlocal = 100; int nper = 1; int *ids = (int *) malloc(nlocal*sizeof(int)); double *sdata = (double *) malloc(nlocal*sizeof(double)); // int for int32, int64_t for int64, float for float32, double for float64
cs->pack_parallel(id,ftype,nlocal,ids,nper,sdata);
C receiving app:
void *cs; int id = fieldID[0]; int nlocal = 200; int nper = 1; int *ids = (int *) malloc(nlocal*sizeof(int)); double *rdata = (float *) malloc(nlocal*sizeof(double)); // int for int32, int64_t for int64, float for float32, double for float64
cslib_unpack_parallel(cs,id,nlocal,ids,nper,rdata);
Fortran sending app:
type(c_ptr) :: cs ! ptr returned by cslib_open() integer(4) :: id = 1 integer(4) :: ftype = 4 ! 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 integer :: nlocal = 100 integer :: nper = 1 integer(4), allocatable, target :: ids(:) real(8), allocatable, target :: sdata(:) ! integer(4) for int32, integer(8) for int64, real(4) for float32, real(8) for float64 allocate(ids(nlocal)) allocate(sdata(nlocal))
call cslib_pack_parallel(cs,id,ftype,nlocal,c_loc(ids),1,c_loc(sdata))
Fortran receiving app:
type(c_ptr) :: cs integer(4) :: id = fieldID(1) integer :: nlocal = 200 integer :: nper = 1 integer(4), allocatable, target :: ids(:) real(8), allocatable, target :: rdata(:) ! integer(4) for int32, integer(8) for int64, real(4) for float32, real(8) for float64 allocate(ids(nlocal)) allocate(rdata(nlocal))
cslib_unpack_parallel(cs,id,nlocal,c_loc(ids),nper,c_loc(rdata))
Python sending app:
id = 1 ftype = 4 # 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 nlocal = 100 nper = 1 dtype = 1,2,3 # to send Python list, Numpy array, ctypes vector
ids = nlocal*[0]
if dtype == 1: # Python list sdata = nlocal*[0] elif dtype == 2: # Numpy 1d array sdata = np.zeros(nlocal,np.float) # np.intc for int32, np.int64 for int64, np.float32 for float32, np.float for float64 elif dtype == 3: # ctypes vector sdata = (ctypes.c_double * nlocal)() # c_int for int32, c_longlong for int64, c_float for float32, c_double for float64
cs.pack_parallel(id,ftype,nlocal,ids,nper,sdata)
Python receiving app:
id = fieldID[0] nlocal = 200 nper = 1 dtype = 1,2,3 # to return Python list, Numpy array, ctypes vector ids = nlocal*[0]
rdata = cs.unpack_parallel(id,nlocal,ids,nper,tflag=dtype) # tflag is optional, default = 3 for ctypes
Comments:
For these parallel methods, nlocal is the number of elements of global data each processor owns, where an "element" is nper datums. See the next section on multidimensional arrays for code examples where nper > 1.
Each element has a unique global ID from 1 to Nglobal, where Nglobal = the sum of nlocal across all processors. Ids is a 1d integer vector of length nlocal containting the subset of global IDs the processor owns. See code examples at the end of this page for how processors might partition the data and initialize their nloca and ids.
The data argument for pack_parallel() and unpack_parallel() is a pointer to a contiguous 1d vector. In this case, it stores the nper*Nlocal datums owned by the processor. The first nper values are the datums for the first element in the ids vector, the next Nper values are the datums for the second element, etc.
Unlike for unpack(), the memory for the field data returned by unpack_parallel() is stored by the app; it is not stored internal to the CSlib. This means the app must allocate the memory before calling unpack_parallel().
For the Python code, see the comments above in this section for the use of dtype and Python lists, Numpy arrays, ctypes vectors.
Multidimensional arrays (2d,3d,etc) can be passed as field data using the same pack(), unpack(), pack_parallel(), unpack_parallel() described above. But ONLY if their numeric values are stored in contiguous memory. We illustrate in this section how to declare and use such arrays with the 4 pack/unpack methods.
For C/C++, a malloc2d() function is used here to allocate contiguous memory for the array data. Code for this function is given in this section. It's just an example of how to create appropriate multidimensional arrays for use with the CSlib. It's not needed for Fortran or Python, because their multidimensional arrays use contiguous memory.
Note that if one of the client or server apps is written in Fortran, but the other is not, and you send an array of data from one to the other, you should insure data is ordered consistently in the two arrays. This issue is also discussed in this section.
The syntax for 64-bit floating point datums (float64) is shown here. The comments indicate what to change for 32-bit integers (int32), 64-bit integers (int64), or 32-bit floating point (float32). It should also be clear how to adapt the syntax below for 3d, 4d, etc arrays.
API:
void pack(int id, int ftype, int flen, void *data); void pack_parallel(int id, int ftype, int nlocal, int *ids, int nper, void *data);
void *unpack(int id); void unpack_parallel(int id, int nlocal, int *ids, int nper, void *data);
C++ sending app:
int id = 1; int ftype = 4; // 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 int flen = 1000; int nlocal = 100; int nper = 3; int *ids = (int *) malloc(nlocal*sizeof(int)); double **sarray = (double **) malloc2d(flen,nper); // int for int32, int64_t for int64, float for float32, double for float64 double **sarraylocal = (double **) malloc2d(nlocal,nper);
cs->pack(id,ftype,nper*flen,&sarray[0][0]); // note nper*flen cs->pack_parallel(id,ftype,nlocal,ids,nper,&sarraylocal[0][0]);
C++ receiving app:
int id = fieldID[0]; int nlocal = 200; int nper = 3; int flen = fieldlen[0] / nper; // fieldlen = nper*flen int *ids = (int *) malloc(nlocal*sizeof(int)); double **rarray = (double **) malloc2d(flen,nper); // int for int32, int64_t for int64, float for float32, double for float64 double **rarraylocal = (double **) malloc2d(nlocal,nper);
double *rvec = (double *) cs->unpack(id); // int for int32, int64_t for int64, float for float32, double for float64 memcpy(&rarray[0][0],rvec,nper*flen*sizeof(double)); // copy into 2d array if desired cs->unpack_parallel(id,nlocal,ids,nper,&rarraylocal[0][0]);
C sending app:
void *cs; // ptr returned by cslib_open() int id = 1; int ftype = 4; // 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 int flen = 1000; int nlocal = 100; int nper = 3; int *ids = (int *) malloc(nlocal*sizeof(int)); double **sarray = (double **) malloc2d(flen,nper); // int for int32, int64_t for int64, float for float32, double for float64 double **sarraylocal = (double **) malloc2d(nlocal,nper);
cslib_pack(cs,id,ftype,nper*flen,&sarray[0][0]); cslib_pack_parallel(cs,id,ftype,nlocal,ids,nper,&sarraylocal[0][0]);
C receiving app:
void *cs; int id = fieldID[0]; int nlocal = 200; int nper = 3; int flen = fieldlen[5] / nper; int *ids = (int *) malloc(nlocal*sizeof(int)); double **rarray = (double **) malloc2d(flen,3); // int for int32, int64_t for int64, float for float32, double for float64 double **rarraylocal = (double **) malloc2d(nlocal,3);
double *rvec = (double *) cslib_unpack(cs,id); // int for int32, int64_t for int64, float for float32, double for float64 memcpy(&rarray[0][0],rvec,nper*flen*sizeof(double)); cslib_unpack_parallel(cs,id,nlocal,ids,nper,&rarraylocal[0][0]);
Fortran sending app:
type(c_ptr) :: cs ! ptr returned by cslib_open() integer(4) :: id = 1 integer(4) :: ftype = 4 ! 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 integer(4) :: flen = 1000 integer :: nlocal = 100 integer :: nper = 3 integer(4), allocatable, target :: ids(:) real(8), allocatable, target :: sarray(:,:),sarraylocal(:,:) ! integer(4) for int32, integer(8) for int64, real(4) for float32, real(8) for float64 allocate(ids(nlocal)) allocate(sarray(nper,flen)) ! note 3xN, not Nx3 allocate(sarraylocal(nper,nlocal))
call cslib_pack(cs,id,ftype,flen,c_loc(sarray)) call cslib_pack_parallel(cs,id,ftype,nlocal,c_loc(ids),nper,c_loc(sarraylocal))
Fortran receiving app:
type(c_ptr) :: cs integer(4) :: id = fieldID(1) integer :: nlocal = 200 integer :: nper = 3 integer(4) :: flen = fieldlen(1) / nper integer(4), allocatable, target :: ids(:) type(c_ptr) :: ptr real(c_double), pointer :: rarray(:) => null() ! integer(c_int) for int32, integer(c_int64_t) for int64, real(c_float) for float32, real(c_double) for float64 real(8), allocatable, target :: rarraylocal(:,:) ! integer(4) for int32, integer(8) for int64, real(4) for float32, real(8) for float64 allocate(ids(nlocal)) allocate(rarraylocal(nper,nlocal))
ptr = cslib_unpack(cs,id) call c_f_pointer(ptr,rarray,[nper,flen]) call cslib_unpack_parallel(cs,id,nlocal,c_loc(ids),nper,c_loc(rarraylocal))
Python sending app:
id = 1 ftype = 4 # 1 for int32, 2 for int64 = 2, 3 for float32, 4 for float64 flen = 1000 nlocal = 100 nper = 1 dtype = 1,2,3 # to send Python list, Numpy array, ctypes vector
ids = nlocal*[0]
if dtype == 1: # Python list of lists sarray = [nper*[0] for i in range(flen)] sarraylocal = [nper*[0] for i in range(nlocal)] elif dtype == 2: # Numpy 2d arrays sarray = np.zeros((flen,nper),np.float) # intc for int32, int64 for int64, float32 for float32, float for float64 sarraylocal = np.zeros((nlocal,nper),np.float) elif dtype == 3: # ctypes 2d arrays sarray = ((ctypes.c_double * nper) * flen)() # c_int for int32, c_longlong for int64, c_float for float32, c_double for float64 sarraylocal = ((ctypes.c_double * nper) * nlocal)()
cs.pack(id,ftype,flen,sarray) cs.pack_parallel(id,ftype,nlocal,ids,nper,sarraylocal)
Python receiving app:
id = fieldID[0] nlocal = 200 nper = 1 flen = fieldlen[0] / nper dtype = 1,2,3 # to create Python list, Numpy array, ctypes vector from returned data ids = nlocal*[0]
rvec = cs.unpack(id,tflag=dtype) # tflag is optional, default = 3 for ctypes rveclocal = cs.unpack_parallel(id,nlocal,ids,nper,tflag=dtype) if dtype == 1: # Python list of lists rarray = [rvec[i:i+nper] for i in range(0,len(rvec),nper)] rarraylocal = [rveclocal[i:i+nper] for i in range(0,len(rveclocal),nper)] elif dtype == 2: # Numpy arrays rarray = np.reshape(rvec,(flen,nper)) rarraylocal = np.reshape(rveclocal,(nlocal,nper))
Comments:
Which return vecs (not arrays), which require data copies.
For Python, when unpacking to a Python list (dtype=1), a 1d Python list is returned by unpack() and unpack_parallel(). The lists can be restructured into a 2d list of lists, as shown above. This requires a data copy (as did the creation of the 1d Python list).
For Python, when unpacking to a Numpy array (dtype=2), a 1d Numpy vector is returned by unpack() and unpack_parallel() since the CSlib does not know the dimensionality of the array desired by the caller. But the Numpy reshape() function can then be used to morph the data into a multidimensional array (without a copy).
For Python, when unpacking to ctypes (dtype=3), a 1d ctypes vector is returned by unpack() and unpack_parallel().
TODO: Should give example of how to convert (copy?) ctypes vec to ctypes array.
In this context, "owns" means allocates memory to store the data and later frees it.
For all the pack methods used when sending a message, the app owns the data memory.
For the recv() method, the CSlib owns the 3 returned field vectors: fieldID, fieldtype, fieldlen.
For the unpack() and unpack_string() methods, the CSlib owns the data. Only a pointer is returned to the app.
For the unpack_parallel() method, the app owns the data. It allocates the data before calling unpack_parallel(). The CSlib fills in values for the datums owned by each processor.
All of these rules hold for C/C++ and Fortran apps. In Fortran, data owned by the CSlib is not copied into Fortran vectors, arrays, strings in the code examples above. Instead, the variables are declared as Fortran pointers, and they point to the memory allocated inside the CSlib.
For Python apps, the rules are sightly different, because of the support for different Python data types (Python lists, Numpy arrays, ctypes vectors). A returned string is copied into a Python string, owned by the app, If data owned by the CSlib is returned as a Python list, it is copied and the app owns the list. If data owned by the CSlib is returned as a Numpy array or ctypes vector, no copy is performed. The Numpy or ctypes object points to memory allocated inside the CSlib. If new Python data structures are created after the unpack(), e.g.
Note that in an efficiency sense, all of this means that data received as a message by the CSlib is not copied when invoking methods where the CSlib owns the data. For methods where the app owns the data, a copy is performed.
IMPORTANT NOTE: The CSlib reuses its internal data buffers for every send and receive. Thus if the CSlib owns the memory for data that is received/unpacked by the app (as discussed in the previous sub-section), the pointers returned to the app will NOT be valid once the app issues the next send() and pack() calls. The app MUST make its own copy of the data if persistence is required. This is true even if the app simply wishes to in-place modify a vector of received field data to send it back to the other app. To do this, the app should make a copy of the data, modify the copy, then send the copy.
As explained in the previous sub-section, this applies to the field vectors returned by recv(), the string returned by unpack_string(), and the data returned by unpack(). It does not apply to the data returned by unpack_parallel(), because the app owns that memory.
All the code examples above show the sending and receiving app using matching pack() and unpack() methods for the same field data. However, in general that is not required.
Say an app sends a field with a single integer via pack_int(). The receiving app can receive that field data via unpack_int(). But it could also use unpack(), as follows in C++:
int id = 1; int *vec = (int *) cs->unpack(id); // length of vec will be 1 value = vec[0];
Or a parallel app could even use unpack_parallel() as follows, assuming only one proc sets nlocal = 1 and ids.
int id = 1; int nlocal = 1; // other procs set nlocal = 0 int nper = 1; int *ids = NULL; int *rvec = NULL; if (nlocal) { ids = (int *) malloc(nlocal*sizeof(int)); ids[0] = 1; rvec = (int *) malloc(nlocal*sizeof(double)); } cs->unpack_parallel(id,nlocal,ids,nper,rvec); value = rvec[0];
Similarly, one app can use pack() to send a field, and the other app could use unpack_parallel() to receive the field. Or vice versa. This is because the internal message format within the CSlib is independent of how the message was packed. This section below gives details on how the field data is organized for pack_parallel() and unpack_parallel().
Also note, that if both the sending and receiving app are parallel, and use pack_parallel() and unpack_parallel() for the same field, there is no requirement that the two apps distribute the field data in the same way. In fact two apps may be running on different numbers of processors so identical distributions are not even possible.
In this context, synchronizing refers to how a parallel app uses the CSlib. If a CSlib method is synchronizing it means all processors in a parallel app must call it at the same time (or the app will pause until all its processors make the call). Non-synchronizing calls do not need to be called at the same time (or at all) by individual processors.
The recv() call is synchronizing. All processors must call it together because the returned data is communicated to all of them.
None of the unpack() calls are synchronizing.
None of the pack() calls are synchronizing, except for pack_parallel(). All processors must call it together since they will communicate to gather data for the message.
The send() call is not technically synchronizing in the following sense. The normal way to use the send() and pack() methods to send a message from a parallel app is to have all processors call the same methods. However, if pack_parallel() is not used to pack any of the fields for a particular message it is OK for the app to only invoke the send() and pack() calls from its processor 0. However, there is no harm in having all processors invoke the send() and pack() calls, assuming they all have a copy of the send data.
When using pack_parallel(), the field data sent to the other app will be the union of the data portions from all the processors. Thus if Nglobal = sum of Nlocal, it will be nper*Nglobal in length. The library uses the ids vectors containing sets of unique global IDs from each of the processors to order the data elements from 1 to Nglobal in the send message. As discussed above, the receiving app processors can access the field data in one of two ways. Either via the unpack() method, which gives each processor access to the entire globally ordered vector with all nper*Nglobal datums. Or via the unpack_parallel() method, which fills a local vector provided by the receiving app with nper*Nlocal datums for the elements corresponding to the ids vector provided by each receiving processor.
This means that for a serial app, a pack_parallel() call sends the same volume of data as a pack() call, but the data that is sent will be reordered from 1 to Nglobal using the list of sending ids. Likewise for a serial app, an unpack_parallel() call receives the same volume of data as an unpack() call, except that the data will be owned by the app (not the CSlib) and will be ordered from 1 to Nglobal using the list of receiving ids.
In some of the code examples above for multidimensional arrays, data is returned from the CSlib via an unpack methods as a vector. As shown, it can be copied into a 2d array for the app to use. However, to avoid the copy, you can also simply index the contiguous vector values using I,J indices with the appropriate 1d offset.
For example, assume the 1d vector contains Nx*Ny values representing a 2d Nx by Ny array. The vector values have a C-style ordering where the 1st row of values in the array appear first in the vector and are followed by the 2nd row, etc. Then in C syntax:
array[i][j] = vector[i*ny + j];
In Fortran syntax, the vector would be indexed the same but array would be declared and indexed as Ny by Nx:
real(8) :: array(ny,nx) array(j,i) = vector(i*ny + j)
These 2 methods allow data to be sent or received which is distributed across the processors of a parallel app.
As a concrete example, say that the xyz coordinates of 1000 particles are spread across 4 processors with global IDs from 1 to Nglobal = 1000. Each processor owns a subset of the particles, indexed by its ids vector. One proc has Nlocal = 230 particles (any subset of the global IDs), another has 240, another 250, and another 280. The coords are stored locally in a 2d Nlocal x 3 array of doubles (ftype = 4), so they can be accessed as coords[i][j], where I = 0 to nlocal-1, J = 0,1,2. Thus nper = 3. Each processor could then call pack_parallel() as follows in C++. This assumes the data within the 2d coords array is stored contiguously:
cs->pack_parallel(1,4,nlocal,ids,3,&coords[0][0]);
The following code examples in different languages illustrate another way a parallel app could distribute the elements of a vector of length Nglobal with global IDs from 1 to Nglobal. The vector elements are split evenly across the Nprocs processors in strided fashion. Nlocal = # of datums owned by processor me. Ids = list of Nlocal global IDs owned by processor me.
C++ or C:
MPI_Init(&argc,&argv); MPI_Comm world = MPI_COMM_WORLD; int me,nprocs; MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs);
int nglobal = 1000; int nlocal = nglobal/nprocs; if (me < nglobal % nprocs) nlocal++;
int *ids = (int *) malloc(nlocal*sizeof(int)); int m = 0; for (int i = me; i < nglobal; i += nprocs) ids[m++] = i+1;
Fortran:
Integer :: world,me,nprocs,ierr,nglobal,nlocal integer(4), allocatable, target :: ids(:)
call MPI_Init(ierr) world = MPI_COMM_WORLD call MPI_Comm_rank(world,me,ierr) call MPI_Comm_size(world,nprocs,ierr)
nglobal = 1000 nlocal = nglobal/nprocs if (me < mod(nglobal,nprocs)) nlocal = nlocal + 1
allocate(ids(nlocal)) m = 1 do i = me+1,nglobal,nprocs ids(m) = i m = m + 1 enddo
Python:
from mpi4py import MPI world = MPI.COMM_WORLD me = world.rank nprocs = world.size
nglobal = 1000 nlocal = nglobal/nprocs if me < nglobal % nprocs: nlocal += 1
ids = nlocal*[0] m = 0 for i in range(me,nglobal,nprocs): ids[m] = i+1 m += 1


The journey to Machu Picchu changed me. The mystery and utter strangeness of the place rekindled a sense of wonder and awe that I had lost somewhere. The city itself is simply an impossibility, perched atop steep cliffs, banked on 3 sides by a massive gorge and a rushing river, beyond which are mountains beyond mountains as far as the eye can see, all covered in a green blanket of cloud forest and jungle. So save up and go. If anything, go to see the majesty of the place itself and get in some spectacular cloud-forest hiking.
A quick trip to the Sacred Valley, including Machu Picchu will reveal all sorts of majestic landscapes, ruins, wonders, and marvels (not to mention great food and culture). But to really understand the amazement and mystery of the place, you need to do your research. A good place to start is the fantastic travel/history/adventure book, Turn Right at Machu Picchu: Rediscovering the Lost City One Step at a Time by Mark Adams. Also, The Last Days of the Incas by Kim MacQuarrie depicts the tragedy of war and conquest between the Inca and the Spanish colonists.
For me, reading and researching before the trip, asking lots of questions, and visiting the museums in Cuzco during our trip made the mystery that much more tangible, as ancient ruins are still being uncovered from the jungles of Peru to this day, and the presence of the great Inca ruins begs the question, "How did they do it?" To this day, we don't have a good answer.
Finally, to add mystery upon mystery, and tragedy upon tragedy, the late rapper, 2Pac was named after the last Inca king that made a valiant last stand against the Spanish and ultimately paid with his life, Tupac Amaru.


The Director, SEEKING FOR IMMEDIATE ASSISTANCE (TRANSFER OF US$15.5MILLION) It is my pleasure to request your assistance on this business proposition which if pursued to its conclusion ,will be of immense benefit to both of us. This request may seem strange but I will crave your indulgence and pray that you view it seriously. My name is Col. Victor Aloma of the Democratic Republic of Congo I am one of close aids to the formal president of Congo Democratic LAURENT KABILA of blessed memory, may his soul rest in peace. For the military of LAURENT KABILA to force out the rebles in my country, I was instructed by him (late president Kabila) to go to the Europe to purchase ARMS AND AMMUNIATION worth us$15.5(fifteen million Five Hundred Thousand us Dollars) to fight the reble groups.  I immediately decided to divert the fund ( US$15.5) into a private security company for safe keeping. The money is presently in Holland (The Netherlands) where I am currently in exile after the death of president Kabila. I need a reliable and trust worthy foreign partner/national who can assist me to clear and move this money as the beneficiary from the security company. Though we have not seen nor met each other, but I would want this transaction to be properly handled with modesty and honesty to a huge success within two weeks, this money in question is state fund as it is a deal between you and I, hence the need for secrecy considering the security implications. Thus, if you are willing to assist me to move this fund out of the Netherlands, you can contact me onthe above email addres to enable us discuss more about the deal and what your percentage will be for assisting me. Please note that you will be required to make a brief trip to the Netherlands for inspection of the fund. I also intend to visit your country soonest in order to inquire areas of possible business investment. I shall be sincerely glad if my request is rendered. Kindest Regards, COL. Victor Aloma


Sweet Free Stuff
///////////////////////////////////////////
Free Dove Men+Care - Clean Comfort Dry Spray Antiperspirant Sample
Posted: 10 May 2016 11:20 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Watch the video, then click on Request Sample. Free Sample of Degree, Dove
or Axe Dry Spray Antiperspirant
The post Free Dove Men+Care Clean Comfort Dry Spray Antiperspirant Sample
appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to CNET Magazine
Posted: 10 May 2016 05:09 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Subscription to CNET Magazine
The post Free Subscription to CNET Magazine appeared first on
SweetFreeStuff.com.
CommentsWe’re sorry, this offer has either expired, or inventory has … by
C
///////////////////////////////////////////
Free Nivea Men Creme Sample
Posted: 10 May 2016 12:28 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Nivea Men Creme Sample
The post Free Nivea Men Creme Sample appeared first on SweetFreeStuff.com.
CommentsThis is really really super moisturizing by SabaThis is amazing for
my dad xxx by AmyThanks! For sample by Laura Alejandro


interface CacheStorePreprocessor<T : Cacheable, out R : Cacheable, in V : Cacheable>
A CacheStorePreprocessor processes Cacheable objects before persisting them in the store and after they are read from the store.
For example, a preprocessor can encrypt a Cacheable object before it is persisted to the CacheStore and decrypt the persisted value when it is read from the CacheStore.
It takes three parameters T, R and V which are all Cacheable. The preprocessor archives T and transforms it into R which can then be archived by the next preprocessor. Similarly, it unarchives V into a T.
In many cases, R and V can be same. However, a CacheStore performs a final archiving of the object in a RawCacheable object before persisting it. Therefore for the last preprocessor in the chain, V can be RawCacheable while R can be another type.
data class PlainObject(val plainText: String): Cacheable....
data class EncryptedObject(val cipherText: String): Cacheable...
class SecureStorePreprocessor: CacheStorePreprocessor<PlainObject, EncryptedObject, RawCacheable> {
override fun archive(obj: PlainObject) {
return EncryptedObject(cipherText = aes256.encrypt(KEY, obj.plainText))
}
override fun unarchive(obj: RawCacheable): Person {
val encryptedObject = EncryptedObject.deserializeFromPersistence(obj.key, obj.value)
return Person(plainText = aes256.decrypt(KEY, encryptedObject.cipherText)
}
}
abstract fun archive(obj: T): R
Archives the |
|
abstract fun unarchive(obj: V): T
Unarchives the |


---
title: Careers in Mathematics
---
Careers in Mathematics
This is the golden age (as far as job opportunities are concerned) for Masters and Ph.D. degree holders in Mathematics. For those inclined towards a research career, many positions are available in research institutions and universities. For those who wish to pursue a teaching career, well-paying teaching positions are available in plenty in private engineering colleges. And for those who are willing to apply mathematics to practical problems, there has been a dramatic change in the job scene over the past few years in India. Many financial services companies, research labs of multinational companies and others are agressively recruiting Indian mathematicians. The salaries offered are better than those offered to IT graduates. Students trained in pure mathematics are also actively recruited by these industries since almost all branches of mathematics are useful to them.
Further information can be found in the links below
- Math Will Rock Your World
- Math Ph.D.'s in Demand
Given the strength of the Department in both pure and applied mathematics,
our students get a balanced and rigorous training in all aspects of mathematics.
Therefore, our students are well placed to reap the benefits of the booming job market for mathematicians.


cell stem cells protoplast genes expression reprogramming gene []. protoplasts tags Fig. patens analysis enriched number DEGs Table Plant expressed using [], data WOX {border-style Arabidopsis Physcomitrella protein cells. pathways px;} tag #ffffff;} Cell factors involved isolated plant plants showed significantly used RNA apical cycle DNA S). differentially indicated mechanisms results transcription molecular reprogrammed additional different patens. performed root shoot synthesis Click Figure LINK PCR cultured development differentiated division file. libraries metabolism protonemal reprogramming, reprogramming. Biol Genes acid clean control culture fate freshly important key level levels process reference specific terms Genome However, activity, addition, associated cDNA cells, contained homologues identified new phase real-time specifically stress study DGEP biological candidate digital function functioned maintenance meristem metabolism, multiple nuclei prepared px; sequences single stage value {font-family Biology Pps_V Science Stem activity comparison differentiation distinct early enrichment factors, font-size genes, high including kinase leafy plants. profiling responses samples significant six-day-old time-points (pattern Cells FCM K-means Protoplasts Reski binding cells: cellular characteristics chromatin double; experimental family following formation fresh genome homologue induced method methylation methyltransferase pattern phytohormone play preferentially present protonema protoplast-derived putative regeneration response roles sequencing shows significance similar somatic total unique vascular wall (TIF) (XLS) Arabidopsis. BAM Development Expression Figs. Gene Genomics Illumina NAC []– adapter alteration binding, biosynthesis border-color border-width changes chloronema chloroplast clustering compared considered cultures cycle. cytometry detected determine determined development, developmental easily energy expressed. functional genes. identify identity isolation maximal moss necessary obtained pluripotent processes protonemata reads regulation regulatory related role sample sequence signal solid; stages state time {font-style {font-weight (t-) BMC Bowtie CUC Drop Genetics Liu Patterns Physiology Research Sci USA) USA). Ulrich Wang adaptor basis bold change cluster content courier; culture, data. database daughter difference dynamic edgeR em; fatty filtered. flow followed fragments gametophyte heterochromatin higher highly histone identification increase incubated indicate leaf library low mRNA mannitol mapped medium meristem. mesophyll min modification niche nuclear pathway patterns photosynthesis, phytohormones produce protoplasts, provided pt;} quantitative reactions regulators relatively reverse ribosome, sample. set shoots shown small studies study, switch test tissue tobacco transcript transcriptional transformed type y-axis


How to check your PayPal balance on desktop or mobile
by Devon Delfino, Business Insider US- To check your PayPal balance, all you need to do is log into your account.
- You’ll find your PayPal balance on the left side of your main account page on the website, or on the primary account screen in the mobile app.
- But in order to carry a balance, you will need to have a Cash or Cash Plus account (most people do). Otherwise, you won’t see a section for your balance on your main account page.
- Visit Business Insider’s homepage for more stories.
For most, checking their balance on PayPal is an extremely quick and easy process.
Here’s how to do it.
Check out the products mentioned in this article:
iPhone 11 (From $699.99 at Best Buy)
Samsung Galaxy S10 (From $899.99 at Best Buy)
How to check your PayPal balance
In theory, all you’d have to do is go to paypal.com – or open the mobile app on your iPhone or Android if you prefer to check there – and log into your account.
Assuming you have the ability to carry a balance, even if your current balance is $0, it will be listed on the left-hand side of your main account page for desktop, or on the primary account screen for mobile users.
However, there is a bit of a catch: If you aren’t seeing a “PayPal balance” section on your main account page, it’s because you don’t have a Cash or Cash Plus account.
You may not have those if you’ve had your account for a while, as those account types are relatively new to PayPal. In that case, you’ll need to set up a new account first.
You should also be aware that you will still have to first verify your identity through PayPal in order to take advantage of that balance-carrying feature.
Related coverage from How To Do Everything: Tech:
-
How to send money on PayPal using the mobile app or website
-
How to cancel a PayPal subscription, to stop making automatic payments for an online service
-
‘What is PayPal Credit?’: How to use PayPal’s line of credit to pay off online purchases over time
-
How to add money to your PayPal account, so you can transfer money or pay bills immediately


SOA Book Library Management
Book categories
All
{{ category.field }}
{{ book.name }}
Category: {{ book.field }}
ISBN: {{ book.code }}
Author: {{ book.author }}
Publisher: {{ book.publisher }}
Year: {{ book.publish_year }}
Pages: {{ book.pages }}
Read More
favorite
share
Login as a teacher to manage library
User Name
Password
Login
Cancel


protected class BreakingAlgorithm.BestRecords
extends java.lang.Object
| Constructor and Description |
|---|
BestRecords()
default constructor
|
| Modifier and Type | Method and Description |
|---|---|
void |
addRecord(double demerits,
BreakingAlgorithm.KnuthNode node,
double adjust,
int availableShrink,
int availableStretch,
int difference,
int fitness)
Registers the new best active node for the given fitness class.
|
double |
getAdjust(int fitness) |
int |
getAvailableShrink(int fitness) |
int |
getAvailableStretch(int fitness) |
double |
getDemerits(int fitness) |
int |
getDifference(int fitness) |
double |
getMinDemerits() |
BreakingAlgorithm.KnuthNode |
getNode(int fitness) |
boolean |
hasRecords() |
boolean |
notInfiniteDemerits(int fitness) |
void |
reset()
Reset when a new breakpoint is being considered.
|
public void addRecord(double demerits, BreakingAlgorithm.KnuthNode node, double adjust, int availableShrink, int availableStretch, int difference, int fitness)
demerits
- the total demerits of the new optimal set of breakpointsnode
- the node starting the line ending at the current elementadjust
- adjustment ratio of the current lineavailableShrink
- how much the current line can be shrinkedavailableStretch
- how much the current line can be stretcheddifference
- difference between the width of the considered line and the
width of the "real" linefitness
- fitness class of the current linepublic boolean hasRecords()
public boolean notInfiniteDemerits(int fitness)
fitness
- fitness class (0, 1, 2 or 3, i.e. "tight" to "very loose")public double getDemerits(int fitness)
fitness
- to usepublic BreakingAlgorithm.KnuthNode getNode(int fitness)
fitness
- to usepublic double getAdjust(int fitness)
fitness
- to usepublic int getAvailableShrink(int fitness)
fitness
- to usepublic int getAvailableStretch(int fitness)
fitness
- to usepublic int getDifference(int fitness)
fitness
- to usepublic double getMinDemerits()
public void reset()
Copyright 1999-2020 The Apache Software Foundation. All Rights Reserved.


This page is built by Melissa Wood for the purpose of being a resource for research into emerging technology.
Life Saver - gyroscope in tablets example of CPR: https://life-saver.org.uk/
Trinus App - make normal PC games VR: https://www.trinusvirtualreality.com/#home
BBC R&D unconventional screens development: http://www.bbc.co.uk/rd/projects/unconventional-screens
Water Drone - app controlled camera link
3D capture device for ipad - link
3D camera capture - WeeView


{% extends "admin_base.html" %} {% block body %} {% if review %} Review {{ review.id }}: {{ review.title }} {{ review.subtitle }} {% else %} New review {% endif %} {% if review %} {% else %} {% endif %} Save Basics Title Subtitle Custom URL If blank, a url will be generated from the title and subtitle Publish Main image Browse Large review detail image. 600x900, approx List image Browse List background image. 300x200, approx Homepage image Browse Image featured on the homepage when this is the latest review. 1024x768, approx Stats Drink Type {% for key, vals in drink_types.items()|sort(attribute='0') %} {{ vals['name'] }} {% endfor %} Distiller {% for distiller in distillers %} {{ distiller.name }} {% endfor %} Rarity {% for key, vals in rarities.items()|sort(attribute='1.value') %} {{ vals['name'] }} {% endfor %} Age low (years) Enter -1 for unknown/NAS Age high (years) Blank for no range Proof low Proof high Blank for no range MSRP low (USD) MSRP high (USD) Blank for no range Mashbill description Mashbill breakdown Color Content Review body {{ review.body }} 2:1 images work well here Review abstract {{ review.abstract }} Rating low (1-100) Rating high (1-100) Related Reviews Space-delimited IDs, plz Save {% endblock %}
If blank, a url will be generated from the title and subtitle
Large review detail image. 600x900, approx
List background image. 300x200, approx
Image featured on the homepage when this is the latest review. 1024x768, approx
Enter -1 for unknown/NAS
Blank for no range
2:1 images work well here
Space-delimited IDs, plz


--- layout: default title: "GALLERY #4" gallery-name: gallery4 images: - image_path: /archive/gallery4/1.jpg - image_path: /archive/gallery4/2.jpg - image_path: /archive/gallery4/3.jpg note: I am a simple gallery description ---
{% include title.html %}


T:<PHONE_NUMBER>
E<EMAIL_ADDRESS>640 Elm Dr
Room #2111
Madison, Wisconsin
United States of 'Murica
Contact Us
Please fill in the following form to contact us
T:<PHONE_NUMBER>
E<EMAIL_ADDRESS>640 Elm Dr
Room #2111
Madison, Wisconsin
United States of 'Murica
Please fill in the following form to contact us


MinuteMedia Acquires Derek Jeter’s The Players’ Tribune
MinuteMedia is the publisher behind several sports news outlets, including 90min, DBLTAP, and 12up
by Adi PickLondon-headquartered sports media company MinuteMedia Ltd. has acquired former Major League Baseball (MLB) star Derek Jeter’s media company The Players' Tribune Inc., the former announced Thursday. Financial details of the acquisition, which is expected to close by the end of 2019, were not disclosed, but MinuteMedia stated it was the company’s largest acquisition to date.
Originally founded in Israel in 2011, MinuteMedia is the publisher behind several sports news outlets, including 90min, which is dedicated to soccer, DBLTAP, which focuses on e-sports, and 12up, dedicated to major U.S. sports leagues. According to company data, their content is viewed by over 80 million unique users per month. The company lists Sports Illustrated, USA Today, and MSN as partners. The company employs some 220 people in Tel Aviv, Tokyo, Sao Paulo, Asia, and the U.S.
The Players' Tribune was founded in 2014 and enables professional athletes to interact directly with their fans by publishing short-form stories, video series, and podcasts. The company is based in New York and has raised $58 million to date, according to Pitchbook data.
As part of the MinuteMedia sports portfolio, The Players’ Tribune will continue to exist as a stand-alone brand. Jeter will continue to be directly involved in the company and will join Minute Media’s board of directors.


Please, feel free to take a look at the code to understand how can you create your own powerful (yet light, thanks to AMD provided for RequireJS) frontend app using BackboneJS + RequireJS
You can use the file boilerplate.js
as a template to create new elements in your app (such as models,
collections or views).


Lift keeps the page as an XML data structure throughout
the rendering process. This allows Lift to rewrite the
web page at different rendering phases. After the
rendering is complete, Lift looks for all the
<head/>
tags in the <body>
tag. Lift
takes the contents of each <head/>
tag, removes any duplicates and places
the resulting tags in the top level <head/>
tag.
So, if you have the following code in your page:
<span> <head> <script type="text/javascript" src="/classpath/jquery.js"/> </head> do some jQuery stuff here </span> <span> <head> <script type="text/javascript" src="/classpath/jquery.js"/> </head> Do some other jQuery stuff here </span>Lift will put a single <script type="text/javascript" src="/classpath/jquery.js"/> into the
<head/>
of the page.


{{ define "content" }}
For more information and help, refer to the GitHub Project Page: service-discovery.
Please report any issues at GitHub or contact<EMAIL_ADDRESS>For a full API documentation, refer to API.md.