Serverless setup with AWS
Setting up a completely automated serverless setup on AWS can be a very hefty task. It will require a lot of efforts, configuring various services, keeping a note of what to link where, IAM roles etc. This not only requires a lot of research but consumes a lot of time as well.
Serverless solves all the problem of configurations, linking and creating roles and permissions, letting you focus on business logic and getting things done in few keystrokes.
In this tutorial, I will be creating a sample “hello world” program in Lambda (NodeJS), using API Gateway which will output the results on browser. In the next tutorial, I will help setting up dynamodb so you can have a datastore. We can also use RDS.
Prerequisites
- An AWS account
- Any local machine (I use linux)
Setting up AWS
Setting up AWS is the easy part. You just have to goto console.aws.amazon.com and signup for an account. You have to link a credit card for verification. Its free for an year so you won’t be charged and test out things for sake of this tutorial.
Once account setup is done, go to IAM section and create a new user, making the access type programmatic
(NOTE: it is going to provide you with access key id and secret which will be used later on).
Next screen will take you to add permission to this user, where you can create a new group or choose from any existing one. Click Create Group to begin, which will bring a popup asking for name and roles. Since you are new, create a new group with any name of your choice. Select Administrator access as role for this user since it will be easiest route to go. Hit Create Group button.
Move on to next step Review where you can tally if user have the administrator access and programmatic authentication type. Finally, hit Create User which will suffice and complete the process.
You will be presented with the accesskey and secret which you should copy down somewhere safe. There is also a download option to download them in csv.
ETA: 5 mins
Setting up Serverless
We are going to need following AWS entities to get things rolling:
- Lambda (for processing)
- API Gateway (for API)
- CloudWatch (for logging)
- IAM roles (for permissions)
This will be enough to get a presentable state of our demo up and running in minutes. Lets get things going.
All serverless need is a config files which will determine how to configure things on AWS. To do so, First, it needs to know AWS account and region so it can use it to deploy applications.
1. Setting up local aws credentials
Manual Way
- Create a directory .aws in your home directory (~/.aws on *nix, C:\Users\USER_NAME\.aws).
- Create config file in .aws with following contents
[default] output = json region = us-west-2
- Create credentials file in .aws with following contents
[default] aws_access_key_id = <your-access-key-id> aws_secret_access_key = <your-secret-access-key>
Read More: https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
** Automated Way**
- Download and set AWS CLI on your machine. Instructions here
- run
aws configure
and answer the prompt questions.
Creating Serverless configuration file
- Create a project directory and enter it
- Create a file called
serverless.yml
- Enter following content:
service: serverless-helloworld
frameworkVersion: ">=1.1.0 <2.0.0"
provider:
name: aws
runtime: nodejs8.10
environment:
SERVICE_NAME: ${self:service}
WORLD: 'world'
functions:
helloworld:
handler: hello/index.hello
events:
- http:
path: hello
method: get
cors: true
Although, pretty much self explanatory, let me summarize this for you.
provider
key tells serverless what aws providers are we going to use and which versions of them, such as lambda runner, dynamodb etc. This is kind of versioning aspect of the
This is a good place to set environment variables too. For instance, we are setting up SERVICE_NAME, WORLD as variables, which can be accessed inside our lambda node functions as process.env.SERVICE_NAME
, process.env.WORLD
.
Serverless supports event per function kinda configuration. Hence, we write the lambda handlers and the events on which it is going to respond. Various types of events are supported such as API Gateway, S3, SQS, CloudWatch etc. Since we are going to process as soon as we get an API request, we will be using API gateway event.
We can respond to same kind of process in response to various kind of events. For ex- You may want to write logs if file is uploaded to s3, but also when certain API request is being made, same lambda handler can be used to handle both the events. For now, we will only respond to API event(HTTP).
Hence, the basic configuration may look like:
...
functions:
<custom-name>:
handler: <file-location-without-js-suffix>.<method-name>
events:
- <event-name>:
<event-configurations>
- <another-event-name>:
<event-configurations>
Serverless configures events
- http:
path: hello
method: get
cors: true
This tells the event type will be http and values provides the configurations, such as for which path the event should be triggered etc. You got this gist.
ETA: 10-15 mins
Writing actual code
Lets again look at the configuration, specifically this part:
helloworld:
handler: hello/index.hello
events:
- http:
path: hello
method: get
cors: true
This can be translated to:
Create a file in the
hello
directory (relative to config file), calledindex.js
which will have the functionhello
to handle the request and will provide the response.
Lets write some code.
NOTE: Since we are using node 8.9.0 (check config again), we can use ES6 features.
// index.js
module.exports = (event, context, callback) => {
// Getting query string parameters. It looks something like {a: 'b', c: 1}
const params = event.queryStringParameters ? event.queryStringParameters : {}
const body = 'Hello ' + process.env.WORLD
const responseType = {success: 200, client_error: 400, server_error: 500};
// Success response
callback(null, {
statusCode: responseType.success,
body: JSON.stringify({body, params})
});
// Or Error response like
/*
//let error = new TypeError('some error')
callback(error, {
statusCode: responseType.client_error,
body: JSON.stringify({ error: 'Any error message' }),
});
*/
}
Thats it.  Just execute the following command and hit Enter
key to deploy.
$ serverless deploy
# or
$ sls deploy
Before making ourselves much happier and comfortable, lets first see what are we getting as input in our lambda handler and what and how are we outputting.
Starting with the first line:
module.exports = (event, context, callback) => {
// shorthand for:
// module.exports = function (event, context, callback) {
// ...
We get three parameters to lambda handler (for nodejs):
- event: Provides event sources and variables attached to any of AWS Event Sources
- context: This provides lambda context so that you can extract out any piece of information related to this function such as configurations, runtime operations etc. Read more
- callback: An optional parameter, which will be called after event loop becomes empty. In layman terms, this is the place which will be called “finally” and this is where your response should be.
Lets dive straightaway into the code now.
Getting query parameters of an Gateway request is quite easy. You can get them using event.queryStringParameters
. event
also provides other necessary info related to requests such as headers. Here is how a sample event object looks like:
{
"path": "/test/hello",
"headers": {
"Accept": "application/json;q=0.9,image/webp,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, lzma, sdch, br",
"Accept-Language": "en-US,en;q=0.8",
...
},
"pathParameters": {
"proxy": "hello"
},
"requestContext": {
"accountId": "123456789012",
"resourceId": "us4z18",
"stage": "dev",
"requestId": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9",
"identity": {
...
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48",
"user": ""
},
"resourcePath": "/{proxy+}",
"httpMethod": "GET",
"apiId": "xxxx"
},
"resource": "/{proxy+}",
"httpMethod": "GET",
"queryStringParameters": {
"a": "b"
}
...
}
Setting response body is also quite easy. You just have to pass it as second parameter of callback
function. This is because the First parameter is reserved for Error
and should be null
if you want to indicate a success response.
I think its very straighforward. Moving on…
Deploying services
Like I’ve said, deployment is easy. Just execute serverless deploy
or sls deploy
command and serverless will create the necessary cloudformation stack, upload the package to s3 and cloudformation will take care of creating the necessary architecture. You can sit and relax and have a coffee instead.
It hardly took 1 hour to get things up and running and having a response, which might’ve took you more if you’re planning to go manual way.
Hope you’ve liked my efforts. Will keep posting new articles and more on architectures and orchestration. Comment below if you need any help.


Form
Cards
Job Functions:
Campaign Management
CRM Administration
Email Deployment
Partner
Employee
Submit
×


MailCore is a Cocoa framework designed to ease the pain of dealing with e-mail protocols by adding a nice Objective-C/Cocoa interface to the C library Libetpan!. MailCore makes the process of sending e-mail easy by hiding the nasty details like MIME composition from you. Instead, there is a nice interface for composing messages and then there is a single method required to send the message. Checking e-mail on an IMAP server is a more complex beast, but MailCore makes the job much simpler but presenting everything as a set of abstract objects like Messages, Folders and Accounts. Note, however, that MailCore is not multithreaded so any calls made will potentially block and not every IMAP detail is abstracted away. Also, MailCore stores everything in memory so if you want to save state to disk it has to be done by hand.
Sending e-mail with MailCore is very easy, it takes care of all the details like MIME encoding, and the SMTP protocol. First, start by creating a CTCoreMessage instance. Then set the subject, body, from, and atleast one to, bcc, or cc recipient. One detail to note is that the to, cc, bcc attributes take an NSSet of CTCoreAddress recipients.
CTCoreMessage *testMsg = [[CTCoreMessage alloc] init];
[testMsg setTo:[NSSet setWithObject:[CTCoreAddress addressWithName:@"Monkey" email<EMAIL_ADDRESS>[testMsg setFrom:[NSSet setWithObject:[CTCoreAddress addressWithName:@"Someone" email<EMAIL_ADDRESS>[testMsg setBody:@"This is a test message!"];
[testMsg setSubject:@"This is a subject"];
Once the message attributes have been set, all that is left is sending the message using CTSMTPConnection:
[CTSMTPConnection sendMessage:testMsg<EMAIL_ADDRESS>username:@"test" password:@"test" port:25 useTLS:YES shouldAuth:YES];
[testMsg release];
That's all, let me know if you have any problems/suggestions/recommendations
Working with IMAP through MailCore is quite easy. First you need to instantiate a CTCoreAccount object and establish a connection like so:
CTCoreAccount *account = [[CTCoreAccount alloc] init];
[account<EMAIL_ADDRESS>port:143 connectionType:CONNECTION_TYPE_PLAIN authType:IMAP_AUTH_TYPE_PLAIN login:@"test" password:@"none"];
If by any chance it fails to make a connection an exception will be thrown. Now that we have a connection to the server we can go ahead and get a list of folders. Note: I use the term folder in place of mailbox; the IMAP spec uses the term mailbox but I get that confused with account.
NSSet *subFolders = [account subscribedFolders];
If we take a look at the resulting NSSet, we see that what is returned is a set of NSStrings with folder path's.
<NSCFSet: 0x309d60> (INBOX.Test.Test22, INBOX, INBOX.TheArchive, INBOX.Test, INBOX.Trash)
We can use one of those strings to create a CTCoreFolder object or we can just pass in a path, for example this sets up a connection to the INBOX on the server.
CTCoreFolder *inbox = [account folderWithPath:@"INBOX"];
Now that we have a connection to a folder we can start to do more interesting things, like we can get a set of the messages in the particular folder, or we can delete the folder, or remove the folder from the subscribed list, check the CTCoreFolder for more information. For this particular example I am going to get a list of the messages in the INBOX (0 as the end index indicates that the entire inbox should be loaded).
NSSet *messageList = [inbox messageListFromIndex:1 toIndex:0];
Like the with folders, what is returned is a set of NSString's containing unique message identifiers (UID).
<NSCFSet: 0x309d60><PHONE_NUMBER>-5,<PHONE_NUMBER>-6,<PHONE_NUMBER>-7,<PHONE_NUMBER>-8,<PHONE_NUMBER>-10,<PHONE_NUMBER>-1,<PHONE_NUMBER>-9,<PHONE_NUMBER>-2,<PHONE_NUMBER>-11,<PHONE_NUMBER>-3,<PHONE_NUMBER>-4)
You might be wondering about the parameter to messageListFromIndex: now, it's exists because of a limitation of IMAP. IMAP was designed to be a protocol where you would always be connected to the server, it wasn't until later that people got the idea using IMAP as an offline protocol. Therefore, IMAP generally returns the entire list of message UID's, but this can be very time consuming for very large folders, and by a large folder I'm talking over 5000 messages. To download only new messages and not every message each time, you can save the last message UID you received. Since you have the last message UID you know the next UID has to be one after it. For example, if you receive the UID<PHONE_NUMBER>-4 then you know the next UID has to be<PHONE_NUMBER>-5. So if you pass<PHONE_NUMBER>-4 into messageListFromIndex: it will only retrieve message with a higher UID.
While UID's are not supposed to change, a folder can change the message UID's on rare occasions. It's important to make sure that the cached UID"s are still valid by using the isUIDValid method. If a bad UID was used there is potential for data loss, since the former UID might not reference the message you intend on deleting. If you save a UID, you should make sure that the server is still using the same UID, otherwise start over by passing nil into messageListFromIndex.
Now back to working with messages, to retrieve with a particular message you need to use the method messageWithUID inside of CTCoreFolder. The resulting object will be of type CTCoreMessage, from there you can retrieve the subject, body and other things by using the message object.


Box ID:
LED Command
Led 1
Led 2
Led 3
Led 4
Led 5
Led 6
Led 7
Led 8
Led 9
Led 10
Led 11
Led 12
Led 13
Led 14
Led 15
Led 16
Led 17
Led 18
Led 19
Led 20
Led 21
Led 22
Led 23
Led 24


1
These are the folks that will get you out of a jam.
2
It doesn’t matter if you need a walk from the library or a bar wingman.
3
You choose whether or not to help out someone in need.
4
Earn points as you travel to save a friend and trade them in on goodies at participating places around town.


WITNESS LIST Health & Human Services Committee May 3, 2001 - 8:30A HB 102 FOR: Bower, Bruce P. Attorney (Mary Wilson of Fort Worth and Texas Welfare Reform Organization), Austin, TX Hagert, Celia Senior Policy Analyst (Center for Public Policy Priorities), Austin, TX ON: Phillips, Tom Deputy Commissioner (Texas Department of Human Services), Austin, TX Registering, but not testifying: For: Bresette, Patrick Associate Director (Center for Public Policy Priorities), Austin, TX Brewer, Sister Helen Advocacy Consultant (Seton Healthcare Network), Austin, TX Camacho, Jose E. Executive Director (Texas Association of Community Health Centers), Austin, TX Chapman, Randall (Self), Austin, TX Corrigan, Jennifer Public Policy Specialist (Texas Council on Family Violence), Austin, TX Cuccia, Natalie (Texas Homeless Network), Austin, TX Daly, Richard Executive Director (Texas Catholic Conference), Austin, TX Donovan, Jim CEO (AMERICAID Community Care), Dallas, TX Dunkelberg, Anne Senior Policy Analyst (Center for Public Policy Priorities), Austin, TX Flynn, Charlotte State Coordinator (Gray Panthers of Texas), Austin, TX Friedholm, DeAnn Consultant (AMERICAID Community Care - Texas), Austin, TX Hernandez, Leslie Director, Government Affairs (National Association of Social Workers of Texas), Austin, TX Higgins, Carlos (Self), Austin, TX Horton, Colleen (Texas Advocates Supporting Kids with Disabilities), Austin, TX Kelemen, George Advocacy Specialist (AARP), Austin, TX McGiffert, Lisa Senior Policy Analyst (Consumers Union), Austin, TX Smith, Ronald R. President and CEO (Biometric Access Corp.), Round Rock, TX Sperry, Bryan President (Children's Hospital Association of Texas), Austin, TX On: Duran, George Inspector General (Texas Department of Human Services), Austin, TX HB 342 Registering, but not testifying: For: Clark, Michael G. Legislative Chair (Texas Academy of Physician Assistants), Fort Worth, TX Gonzalez, David Director, Governmental Affairs (Texas Pharmacy Association), Austin, TX Posey, Dan Director, Government Affairs (Scott and White Hospital and Clinic), Temple, TX Samuels, Marc (Texas Academy of Internal Medicine), Austin, TX Sprinkle, G.K. Public Policy Advocate (Texas Chapter - American Lung Association), Austin, TX On: Salinas, Mario Research Analyst (Comptroller's Office), Austin, TX HB 663 Registering, but not testifying: For: Banning, Tom Lobbyist (Texas Medical Association), Austin, TX Headrick, Kelly Associate Vice President (American Cancer Society), Austin, TX Herzog, Greg (Texas Academy of Family Physicians), Austin, TX Phipps, Candie (Texas Pediatric Society), Austin, TX Vane, Mark Attorney (Indoor Tanning Association), Austin, TX On: Tennyson, Susan Bureau Chief (Bureau of Food and Drug Safety - Texas Department of Health), Austin, TX HB 1094 FOR: McGiffert, Lisa Senior Policy Analyst (Consumers Union), Austin, TX Registering, but not testifying: For: Clark, Michael Legislative Chair (Texas Academy of Physician Assistants), Ft. Worth, TX Dunkelberg, Anne (Center for Public Policy Priorities), Austin, TX Flynn, Charlotte Coordinator (Gray Panthers of Austin), Austin, TX Gonzales, David Director, Government Affairs (Texas Pharmacy Association), Austin, TX Hillier, King Director, Legislative Relations (Texas Association of Public and Non-Profit Hospitals), Austin, TX On: Harriss, Bob Vendor Drug (Texas Department of Health), Austin, TX HB 1516 Registering, but not testifying: For: McGiffert, Lisa Senior Policy Analyst (Consumers Union), Austin, TX On: Koops, Beverly Medical Director (Texas Department of Health), Austin, TX Salinas, Mario Research Analyst (Comptroller's Office), Austin, TX HB 2446 FOR: Haussecker, Ron President (Emergency Medical Services Association of Texas), Brenham, TX Van Doren, Michael Program Director (Texas Peer Assistance Program for Nurses), Austin, TX Registering, but not testifying: For: Sprinkle, G.K. Public Policy Advocate (Emergency Medical Services Association of Texas), Austin, TX On: Perkins, Kathryn C. Bureau Chief - EMS (Texas Department of Health), Austin, TX HB 2463 Registering, but not testifying: On: Coats, Max E. Deputy Executive Director (Texas Animal Health Commission), Austin, TX Tennyson, Susan E. Bureau Chief (Bureau of Food and Drug Safety - Texas Department of Health), Austin, TX HB 3365 FOR: Hernandez, Leslie Director, Government Affairs (National Association of Social Workers), Austin, TX Registering, but not testifying: For: Camacho, Jose E. Executive Director (Texas Association of Community Health Centers), Austin, TX Hagert, Celia Senior Policy Analyst (Center for Public Policy Priorities), Austin, TX Hillier, King Director, Legislative Relations (Texas Association of Public and Non-Profit Hospitals), Austin, TX McGiffert, Lisa Senior Policy Analyst (Consumers Union), Austin, TX Providing written testimony: For: Dunkelberg, Anne Senior Policy Analyst (Center for Public Policy Priorities), Austin, TX HB 3421 Registering, but not testifying: For: Branson, Richard Physician Assistant (Texas Academy of Physician Assistants), Schertz, TX Clark, Michael Legislative Chair (Texas Academy of Physician Assistants), Ft. Worth, TX On: Langley, F.M. Executive Director (Board of Physician Assistant Examiners/Board of Medical Examiners), Austin, TX HCR 84 Registering, but not testifying: For: Camacho, Jose E. Executive Director (Texas Association of Community Health Centers, Inc.), Austin, TX Dunkelberg, Anne Senior Policy Analyst (Center for Public Policy Priorities), Austin, TX Hillier, King Director, Legislation Relations (Texas Association of Public and Non-Profit Hospitals), Austin, TX McGiffert, Lisa Senior Policy Analyst (Consumers Union), Austin, TX On: Gibson, Linda Analyst (Texas Comptroller's Office), Austin, TX SB 1237 FOR: Price, Dr. Cliff Board Member (Texans Care for Children), Austin, TX Shelton, Mark M. Director, Infectious Diseases (Cook Children's Health Care System), Ft. Worth, TX Sperry, Bryan President (Children's Hospital Association of Texas), Austin, TX Whitworth, Suzanne Pediatric Infectious Disease Specialist (Cook Children's Physician's Network), Fort Worth, TX AGAINST: Carrington, Tammy (Self), Diboll, TX Clark, Jane M. (Self), Dallas, TX Clark, Meghan M. (Self), Dallas, TX Daviscourt, Pamela (Self), Driftwood, TX Del Signore, Leah (Self), Houston, TX Edwards, Melvin (Self), Austin, TX Headrick, Isabelle (Self), Austin, TX Hueffner, John M. Christian Science Committee,Publication (Christian Scientist in Texas), Dallas, TX King, James Brent (Self), Austin, TX Marchbanks, Paul (Self), Ennis, TX Marchbanks, Stephanie (Self), Ennis, TX Michaelis, Wendy (Self), Austin, TX Myers, Jackelyn Legislative Liaison (Texas Eagle Forum), Frisco, TX Ochoa, Paul (Self), Houston, TX Rex, Rebecca (Self), Houston, TX Richardson, Dawn (Parents Requesting Open Vaccine Education), Cedar Park, TX Robinson, Michelle (Self), Sugar Land, TX Sanders, Tom Attorney (Home School Legal Defense Association), Sugar Land, TX Sprayberry, Cynthia (Self), Austin, TX Tompkins, Iris (Self), Houston, TX ON: Stanley, Sharilyn Associate Commissioner (Texas Department of Health), Austin, TX Registering, but not testifying: For: Avila, Kimberly Cruzita Pediatric Resident (Texas Children's Hospital/Baylor College of Medicine), Houston, TX Banning, Tom Lobbyist (Texas Medical Association), Austin, TX Callas, Gail J. (Self), Arlington, TX Clark, Michael G. Legislative Chair (Texas Academy of Physician Assistants), Ft. Worth, TX Craueh, Susan Executive Director (Texans Care for Children), Austin, TX Cunningham, James C. Medical Director (Cook Children's Medical Center), Fort Worth, TX Dorman-O'Donnell, Margie Member, Government Affairs Cmte. (Texas Nurses Association), North Richland Hills, TX Feather, Robert K. Senior Vice President (Cook Children's Health Care System), Fort Worth, TX Floyd, Gary W. Pediatrician (Tarrant County Medical Society), Fort Worth, TX Garretson, Melissa Jane Doctor (Pediatrician), Fort Worth, TX Greer, Barbara Ann Past President (Texas Perinatal Association), Benbrook, TX Hayes, Aaryce (Advocacy, Inc.), Austin, TX Hernandez, Leslie Director of Government (National Association of Social Workers), Austin, TX Herzog, Greg (Texas Academy of Family Physicians), Austin, TX Hickman, Ginny Board Member (Immunizations Collaboration of Tarrant County), Fort Worth, TX Hillier, King Director, Legislative Relations (Texas Association of Public and Non-Profit Hospitals), Austin, TX Jamison, Mazie M. Director (Children's Medical Center of Dallas), Dallas, TX Jones, Marsha Vice President, Government Relations (Texas Hospital Association), Austin, TX Laney, Mark Vice Chair (Cook Children's Health Care System Board), Ft. Worth, TX LaMere, Richard Guy (Primary Care Physician), Ft. Worth, TX McStay, Rosie Valadez Government Relations Liaison (Texas Children's Hospital), Houston, TX Mercer, Bradley Stephen President (Fort Worth Pediatric Society), Ft. Worth, TX Paniagua, Joe Assistant to City Manager (City of Fort Worth), Fort Worth, TX Perkins, Vicki S. Director, Public Policy (Christus Santa Rosa Children's Hospital), San Antonio, TX Samuels, Marc (Texas Academy of Internal Medicine), Austin, TX Strong, Gary B. President, Professional Staff (Cook Children's Medical Center), Fort Worth, TX Tounget, Craig Director, Government Relations (Texas Parent Teacher Association), Austin, TX Against: Gerstenschlager, Merry Lynn (Self), Weatherford, TX Gonzalez, Peter (Self), Austin, TX Mapes, Jessica (Self), Sugar Land, TX Richardson, Scott (Self), Austin, TX Yaklin, Sandra Snelson (Self), Elgin, TX Zook, Nathan (Self), Austin, TX On: Bruch, Margaret Program Specialist, Case Management (Texas Department of Health), Austin, TX Linville, Linda Chief, Immunizations (Texas Department of Health), Austin, TX Providing written testimony: For: Friedholm, DeAnn Government Affairs (Texas Chapter - March of Dimes), Austin, TX Phipps, Candie (Texas Pediatric Society), Austin, TX


COSMIC IPSUM
A lorem ipsum from outer space
Paragraphs
The number of paragraphs you want.
Repeat?
Start with Cosmic ipsum..
Generate
or
Copy to clipboard
Get the jQuery Plugin
Search on Wikipedia: Glossary of astronomy
Click any word for its wikipedia shortcut.


PLEASE WAIT!
WEBPAGE PAGE IS STILL LOADING
We had build some best of UX based Platform Independent Desktop Application.
We had build some Best of UX based Platform Independent Desktop Application.
TEAM! Founded in 2015, we strive to be the best at what we do. This is made possible by our amazing team of Professionals.
Drop us a message and we will see you soon.


Hi there, i have an arduino uno with a rfm12b connected and an arduino pro mini with a ftdi module attached. On 2 breadboards i attached 6 sensors(3 on each breadboard) and i want to transmit the data of this sensors wireless, but idk how.Arduino pro mini need to be tx and arduino uno rx. I will attach here some photos and the code from sensors, separately this code work, i can get the data. i found here examples with rfm12b, but still can't transmit. Can help me anyone?
p.s. sorry for bad english, i'm not native :d
Re: Transmit data from sensors
I cannot see your sketches. You should attach the files to your post here, use "File attachments".
For the transmitters, look at the sketch for the emonTx Shield on GitHub: https://github.com/openenergymonitor/emonTxFirmware/tree/master/emonTxSh...
This might help you, but you must change the I/O pins to match your sensors and your breadboard.
For the receiver, look at the sketch for the emonGLCD on GitHub: https://github.com/openenergymonitor/EmonGLCD/tree/master/HomeEnergyMonitor but ONLY look at the part of the sketch where the message is received and decoded.
Also read the pages in Building Blocks about the RFM12B.
Re: Transmit data from sensors
Thanks, it helps a lot. I just put here the schetches made in fritzing, that's how my modules looks like and also i use rfm12b exemples
Re: Transmit data from sensors
We use the JeeLabs JeeLib library to handle the RFM12B radio modules. You will see from our sketches that in setup( ) you need to initialise the module, then in loop( ), for the transmitter you pack the data into a STRUCT and pass that into JeeLib to send the message, in the receiver you poll JeeLib each time around the loop and if there is a message, you then get it into an identical STRUCT and extract the data.
You will probably need to have the same data struct for both inside and outside sensors, with a flag to tell you which values are being used. Then decoding in the receiver is very simple.
e.g.
typedef struct { boolean inOut, float light, temperatureIn, temperatureOut, humidity, relPressure, absPressure; boolean pressureError } PayloadTX;
PayloadTX emontx;
If inOut is true, you only use the next two values, if inOut is false, you ignore the next two values and use the remainder.


Time stamped indices use your selected time range to create a list of
indices that match a specified timestamp pattern. This can be very
efficient for some data sets (eg, logs) For example, to match the
default logstash index pattern you might use
[logstash-]YYYY.MM.DD
. The [] in "[logstash-]" are
important as they instruct Kibana not to treat those letters as a
pattern.
See http://momentjs.com/docs/#/displaying/format/ for documentation on date formatting.


| Documentation Contents |
- Create jar file
jar c[v0Mmfe] [
manifest] [
jarfile] [
entrypoint] [-C
dir]
inputfiles[-J
option]
- Update jar file
jar u[v0Mmfe] [
manifest] [
jarfile] [
entrypoint] [-C
dir]
inputfiles[-J
option]
- Extract jar file
jar x[vf] [
jarfile] [
inputfiles] [-J
option]
- List table of contents of jar file
jar t[vf] [
jarfile] [
inputfiles] [-J
option]
- Add index to jar file
jar i
jarfile[-J
option]
where:
cuxtiv0Mmfe
- Options that control the
jar
command.- jarfile
- Jar file to be created (
c
), updated (u
), extracted (x
), or have its table of contents viewed (t
). The -f option and filename jarfile are a pair -- if either is present, they must both appear. Note that omittingf
and jarfile accepts a "jar file" from standard input (for x and t) or sends the "jar file" to standard output (for c and u).- inputfiles
- Files or directories, separated by spaces, to be combined into jarfile (for c and u), or to be extracted (for x) or listed (for t) from jarfile. All directories are processed recursively. The files are compressed unless option 0 (zero) is used.
- manifest
- Pre-existing manifest file whose name
:
value pairs are to be included in MANIFEST.MF in the jar file. The -m option and filename manifest are a pair -- if either is present, they must both appear. The letters m, f and e must appear in the same order that manifest, jarfile, entrypoint appear.- entrypoint
- The name of the class that set as the application entry point for stand-alone applications bundled into executable jar file. The -e option and entrypoint are a pair -- if either is present, they must both appear. The letters m, f and e must appear in the same order that manifest, jarfile, entrypoint appear.
-C
dir- Temporarily changes directories to dir while processing the following inputfiles argument. Multiple
-C
dir inputfiles sets are allowed.-J
option- Option to be passed into the Java runtime environment. (There must be no space between -J and option).
The jar tool combines multiple files into a single JAR archive file. jar is a general-purpose archiving and compression tool, based on ZIP and the ZLIB compression format. However, jar was designed mainly package java applets or applications into a single archive. When the components of an applet or application (files, images and sounds) are combined into a single archive, they can be downloaded by a java agent (like a browser) in a single HTTP transaction, rather than requiring a new connection for each piece. This dramatically improves download times. jar also compresses files and so further improves download time. In addition, it allows individual entries in a file to be signed by the applet author so that their origin can be authenticated. The syntax for the jar tool is almost identical to the syntax for the tar command. A jar archive can be used as a class path entry, whether or not it is compressed.Typical usage to combine files into a jar file is:
In this example, all the class files in the current directory are placed into the file named myFile.jar. The jar tool automatically generates a manifest file entry named% jar cf myFile.jar *.classMETA-INF/MANIFEST.MF
. It is always the first entry in the jar file. The manifest file declares meta-information about the archive, and stores that data as name : value pairs. Refer to the JAR file specification for details explaining how the jar tool stores meta-information in the manifest file.If a jar file should include name : value pairs contained in an existing manifest file, specify that file using the -m option:
An existing manifest file must end with a new line character. jar does not parse the last line of a manifest file if it does not end with a new line character.% jar cmf myManifestFile myFile.jar *.class
Note: A jar command that specifies cfm on the command line instead of cmf (the order of the m and -f options are reversed), the jar command line must specify the name of the jar archive first, followed by the name of the manifest file:The manifest is in a text format inspired by RFC822 ASCII format, so it is easy to view and process manifest-file contents.% jar cfm myFile.jar myManifestFile *.classTo extract the files from a jar file, use
x
:% jar xf myFile.jarTo extract individual files from a jar file, supply their filenames:
% jar xf myFile.jar foo barBeginning with version 1.3 of the Java 2 SDK, the jar utility supports JarIndex, which allows application class loaders to load classes more efficiently from jar files. If an application or applet is bundled into multiple jar files, only the necessary jar files will be downloaded and opened to load classes. This performance optimization is enabled by running jar with the -ioption. It will generate package location information for the specified main jar file and all the jar files it depends on, which need to be specified in the Class-Path attribute of the main jar file's manifest.
% jar i main.jarIn this example, an
INDEX.LIST
file is inserted into theMETA-INF
directory ofmain.jar
.
The application class loader uses the information stored in this file for efficient class loading. For details about how location information is stored in the index file, refer to the JarIndex specification.
To copy directories, first compress files indir1
tostdout
, then extract fromstdin
todir2
(omitting the -f option from bothjar
commands):% (cd dir1; jar c .) | (cd dir2; jar x)To review command samples which use
jar
to opeate on jar files and jar file manifests, see Examples, below. Also refer to the jar trail of the Java Tutorial.
- c
- Creates a new archive file named jarfile (if
f
is specified) or to standard output (iff
and jarfile are omitted). Add to it the files and directories specified by inputfiles.- u
- Updates an existing file jarfile (when
f
is specified) by adding to it files and directories specified by inputfiles. For example:would add the file foo.class to the existing jar file foo.jar. The -u option can also update the manifest entry, as given by this example:jar uf foo.jar foo.classupdates the foo.jar manifest with the name : value pairs in manifest.jar umf manifest foo.jar- x
- Extracts files and directories from jarfile (if
f
is specified) or standard input (iff
and jarfile are omitted). If inputfiles is specified, only those specified files and directories are extracted. Otherwise, all files and directories are extracted. The time and date of the extracted files are those given in the archive.- t
- Lists the table of contents from jarfile (if
f
is specified) or standard input (iff
and jarfile are omitted). If inputfiles is specified, only those specified files and directories are listed. Otherwise, all files and directories are listed.- i
- Generate index information for the specified jarfile and its dependent jar files. For example:
jar i foo.jarwould generate an INDEX.LIST file in foo.jar which contains location information for each package in foo.jar and all the jar files specified in the Class-Path attribute of foo.jar. See the index example.
- f
- Specifies the file jarfile to be created (
c
), updated (u
), extracted (x
), indexed (i
), or viewed (t
). The -f option and filename jarfile are a pair -- if present, they must both appear. Omittingf
and jarfile accepts a jar file name fromstdin
(for x and t) or sends jar file tostdout
(for c and u).- v
- Generates verbose output to standard output. Examples shown below.
- 0
- (zero) Store without using ZIP compression.
- M
- Do not create a manifest file entry (for c and u), or delete a manifest file entry if one exists (for u).
- m
- Includes name : value attribute pairs from the specified manifest file manifest in the file at META-INF/MANIFEST.MF.
jar
adds a name : value pair unless an entry already exists with the same name, in which casejar
updates its value.On the command line, the letters m and f must appear in the same order that manifest and jarfile appear. Example use:
You can add special-purpose name : value attribute pairs to the manifest that aren't contained in the default manifest. For example, you can add attributes specifying vendor information, version information, package sealing, or to make JAR-bundled applications executable. See the JAR Files trail in the Java Tutorial for examples of using the -m option.jar cmf myManifestFile myFile.jar *.class- e
- Sets entrypoint as the application entry point for stand-alone applications bundled into executable jar file. The use of this option creates or overrides the Main-Class attribute value in the manifest file. This option can be used during creation of jar file or while updating the jar file. This option specifies the application entry point without editing or creating the manifest file.
For example, this command createsMain.jar
where the Main-Class attribute value in the manifest is set toMain
:jar cfe Main.jar Main Main.classThe java runtime can directly invoke this application by running the following command:
If the entrypoint class name is in a package it may use either a dot (".") or slash ("/") character as the delimiter. For example, ifjava -jar Main.jarMain.class
is in a package calledfoo
the entry point can be specified in the following ways:orjar -cfe Main.jar foo/Main foo/Main.classNote: specifying bothjar -cfe Main.jar foo.Main foo/Main.class-m
and -e options together when the given manifest also contains the Main-Class attribute results in an ambigousMain.class
specification, leading to an error and the jar creation or update operation is aborted.- -C dir
- Temporarily changes directories (
cd
dir) during execution of the jar command while processing the following inputfiles argument. Its operation is intended to be similar to the -C option of the UNIX tar utility.
For example, this command changes to the classes directory and adds the bar.class from that directory to foo.jar:This command changes to the classes directory and adds to foo.jar all files within the classes directory (without creating a classes directory in the jar file), then changes back to the original directory before changing to the bin directory to add xyz.class to foo.jar.jar uf foo.jar -C classes bar.classIfjar uf foo.jar -C classes . -C bin xyz.classclasses
holds filesbar1
andbar2
, then here's what the jar file will contain usingjar tf foo.jar
:META-INF/ META-INF/MANIFEST.MF bar1 bar2 xyz.class- -Joption
- Pass option to the Java runtime environment, where option is one of the options described on the reference page for the java application launcher. For example,
-J-Xmx48M
sets the maximum memory to 48 megabytes. It is a common convention for -J to pass options to the underlying runtime environment.
To shorten or simplify the jar command line, you can specify one or more files that themselves contain arguments to thejar
command (except-J
options). This enables you to create jar commands of any length, overcoming command line limits imposed by the operating system.An argument file can include options and filenames. The arguments within a file can be spaceseparated or newline-separated. Filenames within an argument file are relative to the current directory, not relative to the location of the argument file. Wildcards (*) that might otherwise be expanded by the operating system shell are not expanded. Use of the @ character to recursively interpret files is not supported. The -J options are not supported because they are passed to the launcher, which does not support argument files.
When executing
jar
, pass in the path and name of each argument file with the @ leading character. Whenjar
encounters an argument beginning with the character @, it expands the contents of that file into the argument list.
The example below,classes.list
holds the names of files output by afind
command:% find . -name '*.class' -print > classes.listYou can then execute the
jar
command onClasses.list
by passing it tojar
using argfile syntax:An argument file can specify a path, but any filenames inside the argument file that have relative paths are relative to the current working directory, not to the path passed in. Here is an example:% jar cf my.jar @classes.list% jar @path1/classes.list
To add all the files in a particular directory to an archive (overwriting contents if the archive already exists). Enumerating verbosely (with the -v option) will tell you more information about the files in the archive, such as their size and last modified date.If you already have separate subdirectories for images, audio files and classes, you can combine them into a single jar file:% ls 1.au Animator.class monkey.jpg 2.au Wave.class spacemusic.au 3.au at_work.gif % jar cvf bundle.jar * added manifest adding: 1.au(in = 2324) (out= 67)(deflated 97%) adding: 2.au(in = 6970) (out= 90)(deflated 98%) adding: 3.au(in = 11616) (out= 108)(deflated 99%) adding: Animator.class(in = 2266) (out= 66)(deflated 97%) adding: Wave.class(in = 3778) (out= 81)(deflated 97%) adding: at_work.gif(in = 6621) (out= 89)(deflated 98%) adding: monkey.jpg(in = 7667) (out= 91)(deflated 98%) adding: spacemusic.au(in = 3079) (out= 73)(deflated 97%)To see the entry names in the jarfile, use the t option:% ls -F audio/ classes/ images/ % jar cvf bundle.jar audio classes images added manifest adding: audio/(in = 0) (out= 0)(stored 0%) adding: audio/1.au(in = 2324) (out= 67)(deflated 97%) adding: audio/2.au(in = 6970) (out= 90)(deflated 98%) adding: audio/3.au(in = 11616) (out= 108)(deflated 99%) adding: audio/spacemusic.au(in = 3079) (out= 73)(deflated 97%) adding: classes/(in = 0) (out= 0)(stored 0%) adding: classes/Animator.class(in = 2266) (out= 66)(deflated 97%) adding: classes/Wave.class(in = 3778) (out= 81)(deflated 97%) adding: images/(in = 0) (out= 0)(stored 0%) adding: images/monkey.jpg(in = 7667) (out= 91)(deflated 98%) adding: images/at_work.gif(in = 6621) (out= 89)(deflated 98%) % ls -F audio/ bundle.jar classes/ images/% jar tf bundle.jar META-INF/ META-INF/MANIFEST.MF audio/1.au audio/2.au audio/3.au audio/spacemusic.au classes/Animator.class classes/Wave.class images/monkey.jpg images/at_work.gifTo add an index file to the jar file for speeding up class loading, use the i option.
Example:
If you split the inter-dependent classes for a stock trade application into three jar files: main.jar, buy.jar, and sell.jar.
If you specify the Class-path attribute in the main.jar manifest as:Class-Path: buy.jar sell.jarthen you can use the -i option to speed up the class loading time for your application:% jar i main.jarAnINDEX.LIST
file is inserted to theMETA-INF
directory. This enables the application class loader to download the specified jar files when it is searching for classes or resources.
The Jar Overview
The Jar File Specification
The JarIndex Spec
Jar Tutorial on the Java Software web site.
pack200 Reference Page
Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved. Please send comments using this Feedback page. |
Java Technology |


RadFa Privacy Policy
This privacy policy has been compiled to better serve those who are concerned with how their 'Personally Identifiable Information' (PII) is being used online. PII, as described in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.
What personal information do we collect from the people that visit our blog, website or app?
When ordering or registering on our site, as appropriate, you may be asked to enter your facebook account or other details to help you with your experience.
When do we collect information?
We collect information from you when you register on our site or enter information on our site.
How do we use your information?
We may use the information we collect from you when you register and use the website, in order to provide you with our service.
How do we protect your information?
We do not use vulnerability scanning and/or scanning to PCI standards. We only provide articles and information. We never ask for credit card numbers. We do not use Malware Scanning.
Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.
We implement a variety of security measures when a user enters, submits, or accesses their information to maintain the safety of your personal information.
Do we use 'cookies'?
We do not use cookies for tracking purposes
You can choose to have your computer warn you each time a cookie is being sent, or you can choose to turn off all cookies. You do this through your browser settings. Since browser is a little different, look at your browser's Help Menu to learn the correct way to modify your cookies.
Third-party disclosure
We do not sell, trade, or otherwise transfer to outside parties your Personally Identifiable Information.
Third-party links
In order to provide you with our service we include Facebook products and services on our website. Facebook has separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of Facebook.
Google
We have not enabled Google AdSense on our site but we may do so in the future.
California Online Privacy Protection Act
CalOPPA is the first state law in the nation to require commercial websites and online services to post a privacy policy. The law's reach stretches well beyond California to require any person or company in the United States (and conceivably the world) that operates websites collecting Personally Identifiable Information from California consumers to post a conspicuous privacy policy on its website stating exactly the information being collected and those individuals or companies with whom it is being shared. - See more at: http://consumercal.org/california-online-privacy-protection-act-caloppa/#sthash.0FdRbT51.dpuf
According to CalOPPA, we agree to the following: Users can visit our site anonymously. Once this privacy policy is created, we will add a link to it on our home page or as a minimum, on the first significant page after entering our website. Our Privacy Policy link includes the word 'Privacy' and can easily be found on the page specified above.
You will be notified of any Privacy Policy changes on our Privacy Policy Page.
You can change your personal information by logging in to your account
How does our site handle Do Not Track signals? We honor Do Not Track signals and Do Not Track, plant cookies, or use advertising when a Do Not Track (DNT) browser mechanism is in place.
Does our site allow third-party behavioral tracking? It's also important to note that we do not allow third-party behavioral tracking
COPPA (Children Online Privacy Protection Act)
When it comes to the collection of personal information from children under the age of 13 years old, the Children's Online Privacy Protection Act (COPPA) puts parents in control. The Federal Trade Commission, United States' consumer protection agency, enforces the COPPA Rule, which spells out what operators of websites and online services must do to protect children's privacy and safety online.
We do not specifically market to children under the age of 13 years old.
Fair Information Practices
The Fair Information Practices Principles form the backbone of privacy law in the United States and the concepts they include have played a significant role in the development of data protection laws around the globe. Understanding the Fair Information Practice Principles and how they should be implemented is critical to comply with the various privacy laws that protect personal information.
In order to be in line with Fair Information Practices we will take the following responsive action, should a data breach occur: We will notify the users via in-site notification within 1 business day
We also agree to the Individual Redress Principle which requires that individuals have the right to legally pursue enforceable rights against data collectors and processors who fail to adhere to the law. This principle requires not only that individuals have enforceable rights against data users, but also that individuals have recourse to courts or government agencies to investigate and/or prosecute non-compliance by data processors.
CAN SPAM Act
The CAN-SPAM Act is a law that sets the rules for commercial email, establishes requirements for commercial messages, gives recipients the right to have emails stopped from being sent to them, and spells out tough penalties for violations.
We do not collect your email address.
Contacting Us
If there are any questions regarding this privacy policy, you may contact us using the information below.
RadFa
Last Edited on 2016-12-07
This privacy policy has been compiled to better serve those who are concerned with how their 'Personally Identifiable Information' (PII) is being used online. PII, as described in US privacy law and information security, is information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context. Please read our privacy policy carefully to get a clear understanding of how we collect, use, protect or otherwise handle your Personally Identifiable Information in accordance with our website.
What personal information do we collect from the people that visit our blog, website or app?
When ordering or registering on our site, as appropriate, you may be asked to enter your facebook account or other details to help you with your experience.
When do we collect information?
We collect information from you when you register on our site or enter information on our site.
How do we use your information?
We may use the information we collect from you when you register and use the website, in order to provide you with our service.
How do we protect your information?
We do not use vulnerability scanning and/or scanning to PCI standards. We only provide articles and information. We never ask for credit card numbers. We do not use Malware Scanning.
Your personal information is contained behind secured networks and is only accessible by a limited number of persons who have special access rights to such systems, and are required to keep the information confidential. In addition, all sensitive/credit information you supply is encrypted via Secure Socket Layer (SSL) technology.
We implement a variety of security measures when a user enters, submits, or accesses their information to maintain the safety of your personal information.
Do we use 'cookies'?
We do not use cookies for tracking purposes
You can choose to have your computer warn you each time a cookie is being sent, or you can choose to turn off all cookies. You do this through your browser settings. Since browser is a little different, look at your browser's Help Menu to learn the correct way to modify your cookies.
Third-party disclosure
We do not sell, trade, or otherwise transfer to outside parties your Personally Identifiable Information.
Third-party links
In order to provide you with our service we include Facebook products and services on our website. Facebook has separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of Facebook.
We have not enabled Google AdSense on our site but we may do so in the future.
California Online Privacy Protection Act
CalOPPA is the first state law in the nation to require commercial websites and online services to post a privacy policy. The law's reach stretches well beyond California to require any person or company in the United States (and conceivably the world) that operates websites collecting Personally Identifiable Information from California consumers to post a conspicuous privacy policy on its website stating exactly the information being collected and those individuals or companies with whom it is being shared. - See more at: http://consumercal.org/california-online-privacy-protection-act-caloppa/#sthash.0FdRbT51.dpuf
According to CalOPPA, we agree to the following: Users can visit our site anonymously. Once this privacy policy is created, we will add a link to it on our home page or as a minimum, on the first significant page after entering our website. Our Privacy Policy link includes the word 'Privacy' and can easily be found on the page specified above.
You will be notified of any Privacy Policy changes on our Privacy Policy Page.
You can change your personal information by logging in to your account
How does our site handle Do Not Track signals? We honor Do Not Track signals and Do Not Track, plant cookies, or use advertising when a Do Not Track (DNT) browser mechanism is in place.
Does our site allow third-party behavioral tracking? It's also important to note that we do not allow third-party behavioral tracking
COPPA (Children Online Privacy Protection Act)
When it comes to the collection of personal information from children under the age of 13 years old, the Children's Online Privacy Protection Act (COPPA) puts parents in control. The Federal Trade Commission, United States' consumer protection agency, enforces the COPPA Rule, which spells out what operators of websites and online services must do to protect children's privacy and safety online.
We do not specifically market to children under the age of 13 years old.
Fair Information Practices
The Fair Information Practices Principles form the backbone of privacy law in the United States and the concepts they include have played a significant role in the development of data protection laws around the globe. Understanding the Fair Information Practice Principles and how they should be implemented is critical to comply with the various privacy laws that protect personal information.
In order to be in line with Fair Information Practices we will take the following responsive action, should a data breach occur: We will notify the users via in-site notification within 1 business day
We also agree to the Individual Redress Principle which requires that individuals have the right to legally pursue enforceable rights against data collectors and processors who fail to adhere to the law. This principle requires not only that individuals have enforceable rights against data users, but also that individuals have recourse to courts or government agencies to investigate and/or prosecute non-compliance by data processors.
CAN SPAM Act
The CAN-SPAM Act is a law that sets the rules for commercial email, establishes requirements for commercial messages, gives recipients the right to have emails stopped from being sent to them, and spells out tough penalties for violations.
We do not collect your email address.
Contacting Us
If there are any questions regarding this privacy policy, you may contact us using the information below.
RadFa
Last Edited on 2016-12-07


John Petrucci is a guitarist, lyricist, and producer, best known for being a founding
member for progressive metal juggernauts Dream Theater. Get to know him and his award-winning
career on this page dedicated to celebrating his illustrious career.
Born July 12, 1967...
...in Kings Park, New York, John Petrucci began playing guitar at the young age of 12. Kings Park was just a small suburb hidden within
Long Island, but Petrucci discovered a wide world through the play of the many progressive and metal powerhouses that came to prominence
in the late 70's and 80's. Influenced by artists such as Steve Morse, Randy Rhoads, Steve Vai, and Alex Lifeson, he took his musical studies
very seriously. When he graduated high school, this dedication would prove fruitful; along with close friend and bassist John Myung, he would
accept enrollment at the infamous Berklee College of Music in Boston. It was there at Berklee that they would meet drummer Mike Portnoy
and form the core of what would soon become Dream Theater. Though Berklee is well known as a challenging institution that demands the
utmost of its students, Petrucci did not care to study, and instead wanted to focus purely on practice and recording music. He would soon leave
Berklee along with his classmates to begin their progressive metal journey.
In 1989, Petrucci would meet a woman known as Rena Sands. The two would begin a romance, which culminated in
their marriage in September of 1993. Rena is cut from the same cloth as John; she also can boast of a strong affinity
with the guitar, as she is the guitarist and founding member of the metal band Meanstreak.
Currently, she enjoys touring with the all-female tribute band Judas Priestess throughout
North America.
Musical Career
John Petrucci continues to produce one of the most successful careers in progressive metal history. His career already extends
an astounding thirty years, and he continues to forge ahead with fresh, innovative music. His career
with Dream Theater is particularly outstanding; not only have they produced the critically acclaimed
Images And Words, which has sold upwards of 12 million copies worldwide, the band has garnered many
Billboard 200 Top 10 chart debuts and 2 Grammy nomations as well.


During this thesis work we extend CBMC to handle features of DSP-C, provided a model to verify contract programming and based on hardware model of Ericsson multicore DSP processor, proposed solutions to detect issues in parallel code.
In following sections we briefly discuss results of model checking performed on Ericsson's software. To begin with we used extended CBMC to check logical correctness of the code. In second step we performed contract verification. At last with collective knowledge of Ericsson's platform architecture and model checking on software, we proposed techniques to verify some more properties of the software.


This plot shows a 2d histogram of movies regarding the movie length and the rating (occurences in time/rating space). Each plot is for a different popularity category. (left: low amount of votes, middle: medium amount of votes, right: mucho votes)
This plot shows all genres that appear in the IMDB Data set. The better the average rating of a genre, the bigger the font.


From this demo you can learn how to use Zapatec.Form events.
First checkbox triggers function to toggle "Personal information" block visiblity. This is same as conditional fields functionality. It uses booleanValueChanged event which invokes when checkbox changes its value.
Second one uses valueChanged event - it is invoked after some field changes its value.
Third block shows complex work with some of internal Zapatec.Form functions. It uses valueChanged event. Note that it is added using eventListeners config option.
Last block shows how to implement simple wizard functionality - it is not allowed to click next step until some conditions are not met.
Other functions listen to all form events and display log in the floating window to the right.


Markdown Addons and Extensions
UML Diagrams
Most developers opt to use some form of graphical editor to create their diagrams. This is usually a good option if they work for a large company with a subscription, but this is usually a less optimal solution for open source. The chart can be saved as an image but is most likely under a developers login and if they leave the project, or if another developer wishes to modify it the there are many barriers to getting access. By diagraming simple workflows in Markdown we ensure that everyone is always able to edit the charts.
Flow Chart
flowchart.js documentation and live editor
```flow
st=>start: Start
op=>operation: Your Operation
cond=>condition: Yes or No?
e=>end
st->op->cond
cond(yes)->e
cond(no)->op
```
st=>start: Start
op=>operation: Your Operation
cond=>condition: Yes or No?
e=>end
st->op->cond
cond(yes)->e
cond(no)->op
Sequence Diagram
js-sequence-diagrams documentation and live editor
```sequence
Title: Here is a title
A->B: Normal line
B-->C: Dashed line
C->>D: Open arrow
D-->>A: Dashed open arrow
```
Title: Here is a title
A->B: Normal line
B-->C: Dashed line
C->>D: Open arrow
D-->>A: Dashed open arrow
Progress Bar
```
[=0% "0%"]
[=5% "5%"]
[=25% "25%"]
[=45% "45%"]
[=65% "65%"]
[=85% "85%"]
[=100% "100%"]
```
Task List
```
To Do
- [X] Pycon Proposal
* [X] Come up with topic
* [ ] Write proposal
STUFF!
+ [x] stuffs
+ [ ] stuffz
+ [x] stuffd
* [X] Laundry
- [ ] Make dinner
- [ ] Laundry
```
To Do
- Pycon Proposal
- Come up with topic
- Write proposal
STUFF!
- stuffs
- stuffz
- stuffd
- Laundry
- Make dinner
- Laundry
Details Panes
```
??? optional-class "Summary"
Here's some content.
???+ note "Open styled details"
??? danger "Nested details!"
And more content again.
```
Summary
Here's some content.
Open styled details
Nested details!
And more content again.
Emoji
Emojis from https://emojicopy.com
Code Highlighting
To have the code highlight for a certain language, simply put the language after the three ` that start your codeblock. ex: ```python
""" Flask Hello World """
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
Keys
This looks different depending on the mkdocs theme. Doesn't look great in the Read the Docs theme.
```
++ctrl+alt+delete++
++ctrl+alt+"Custom Key"++
++cmd+alt+"Ü"++
```
Ctrl+Alt+Del
Ctrl+Alt+Custom Key
Cmd+Alt+Ü
MagicLink
Just paste links directly in the document like this: https://google.com.
Or even an email address<EMAIL_ADDRESS>Users
You can reference different users from github or other social media platforms.
```
@zelgius
@twitter:masonegger
```
Issues
Reference issues via https://facelessuser.github.io/pymdown-extensions/extensions/magiclink/#options
Issue #1
Issue backrefs#1
Issue Python-Markdown/markdown#1
Issue pycqa/flake8#385
Pull request !13
Pull request backrefs!4
Pull request Python-Markdown/markdown!598
Pull request pycqa/flake8!213
Comparisons
You can have links to git comparisons. Simply put the first commit hash, then ... then the second commit hash.
```
e2ed7e0b3973f3f9eb7a26b8ef7ae514eebfe0d2...90b6fb8711e75732f987982cc024e9bb0111beac
<EMAIL_ADDRESS><EMAIL_ADDRESS>```
e2ed7e0b3973f3f9eb7a26b8ef7ae514eebfe0d2...90b6fb8711e75732f987982cc024e9bb0111beac
<EMAIL_ADDRESS><EMAIL_ADDRESS>SmartSymbols
```
(tm)
(c)
(r)
c/o
+/-
-->
<--
=/=
1/4, etc.
1st 2nd etc.
```
™
©
®
℅
±
→
←
≠
¼, etc.
1st 2nd etc.


Monitors
Controller
Performance Counters
| Min | Avg | Max | Med | Avg-90% | Std Dev | |
|---|---|---|---|---|---|---|
| Controller/User Load | 0 | 177.4 | 228 | 180 | 180.9 | 43.2 |
| Controller/Throughput | 0 | 24.3 | 85.3 | 22.2 | 23.6 | 15 |
| Controller/Alerts | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Critical Alerts | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Warning Alerts | 0 | 0 | 0 | 0 | 0 | - |
| Controller/CPU Load | 0 | 11.2 | 43 | 10 | 10.81 | 3.91 |
| Controller/Memory Used | 0 | 21.6 | 36 | 22 | 21.7 | 7.92 |
| Controller/Thread Count | 0 | 253.9 | 270 | 254 | 253.7 | 8.55 |
| Controller/Network/Segments sent/sec. | 0 | 182.2 | 2,034 | 139.6 | 156.8 | 177.5 |
| Controller/Network/Segments retransmitted/sec. | 0 | 0.946 | 53.5 | 0 | 0.07 | 4.4 |
| Controller/Network/net7 (Microsoft Virtual WiFi Miniport Adapter)/Megabits received/sec. | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Network/net7 (Microsoft Virtual WiFi Miniport Adapter)/Megabits sent/sec. | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Network/eth20 (PdaNet Broadband Adapter)/Megabits received/sec. | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Network/eth20 (PdaNet Broadband Adapter)/Megabits sent/sec. | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Network/eth4 (Périphérique Bluetooth (réseau personnel))/Megabits received/sec. | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Network/eth4 (Périphérique Bluetooth (réseau personnel))/Megabits sent/sec. | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Network/net5 (Intel(R) Centrino(R) Advanced-N 6205)/Megabits received/sec. | 0 | 0 | 0.038 | 0 | 0 | 0.001 |
| Controller/Network/net5 (Intel(R) Centrino(R) Advanced-N 6205)/Megabits sent/sec. | 0 | 0 | 0.06 | 0 | 0 | 0.002 |
| Controller/Network/net8 (Microsoft Virtual WiFi Miniport Adapter #2)/Megabits received/sec. | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Network/net8 (Microsoft Virtual WiFi Miniport Adapter #2)/Megabits sent/sec. | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Network/eth3 (Intel(R) 82579LM Gigabit Network Connection)/Megabits received/sec. | 0.009 | 0.775 | 19.5 | 0.583 | 0.646 | 1.26 |
| Controller/Network/eth3 (Intel(R) 82579LM Gigabit Network Connection)/Megabits sent/sec. | 0.012 | 0.149 | 19.7 | 0.042 | 0.048 | 1.25 |
| Controller/Default zone/User Load | 0 | 0 | 0 | 0 | 0 | - |
| Controller/Europe France (Strasbourg)/User Load | 0 | 21.7 | 28 | 22 | 22.1 | 5.34 |
| Controller/Europe France (Paris)/User Load | 0 | 22.7 | 29 | 23 | 23.1 | 5.46 |
| Controller/Europe Germany (Frankfurt 1)/User Load | 0 | 22.7 | 29 | 23 | 23.1 | 5.46 |
| Controller/Europe Italy (Milan)/User Load | 0 | 21.7 | 28 | 22 | 22.1 | 5.34 |
| Controller/Europe Ireland (Dublin 1)/User Load | 0 | 21.7 | 28 | 22 | 22.1 | 5.34 |
| Controller/Europe United Kingdom (London 1)/User Load | 0 | 22.7 | 29 | 23 | 23.1 | 5.46 |
| Controller/Europe Netherlands (Amsterdam 2)/User Load | 0 | 22.7 | 29 | 23 | 23.1 | 5.46 |
| Controller/Europe Belgium/User Load | 0 | 21.7 | 28 | 22 | 22.1 | 5.34 |
SampleServerNode01/http-apache monitored from localhost
Performance Counters
| Min | Avg | Max | Med | Avg-90% | Std Dev | |
|---|---|---|---|---|---|---|
| SampleServerNode01/http-apache/All/Total Accesses | 95,070 | 136,648 | 189,687 | 134,098 | 135,862 | 28,294 |
| SampleServerNode01/http-apache/All/Total kBytes | 1,549,506 | 2,233,259 | 3,090,749 | 2,192,428 | 2,220,860 | 458,854 |
| SampleServerNode01/http-apache/All/Uptime | 228,939 | 229,416 | 229,894 | 229,416 | 229,414 | 277.9 |
| SampleServerNode01/http-apache/All/ReqPerSec | 0.415 | 0.595 | 0.825 | 0.585 | 0.592 | 0.123 |
| SampleServerNode01/http-apache/All/BytesPerSec | 6,931 | 9,966 | 13,767 | 9,786 | 9,911 | 2,036 |
| SampleServerNode01/http-apache/All/BytesPerReq | 16,685 | 16,741 | 16,798 | 16,741 | 16,741 | 29.1 |
| SampleServerNode01/http-apache/All/BusyWorkers | 1 | 2.27 | 9 | 2 | 2.11 | 1.47 |
| SampleServerNode01/http-apache/All/%BusyWorkers | 10 | 27.9 | 100 | 25 | 26 | 17.8 |
| SampleServerNode01/http-apache/All/IdleWorkers | 0 | 5.99 | 9 | 6 | 6.05 | 1.8 |
SampleServerNode02/http-apache monitored from localhost
Performance Counters
| Min | Avg | Max | Med | Avg-90% | Std Dev | |
|---|---|---|---|---|---|---|
| SampleServerNode02/http-apache/All/Total Accesses | 95,263 | 136,791 | 189,704 | 134,268 | 136,007 | 28,259 |
| SampleServerNode02/http-apache/All/Total kBytes | 1,553,461 | 2,236,380 | 3,093,010 | 2,195,692 | 2,224,036 | 458,091 |
| SampleServerNode02/http-apache/All/Uptime | 228,924 | 229,402 | 229,880 | 229,402 | 229,400 | 277.9 |
| SampleServerNode02/http-apache/All/ReqPerSec | 0.416 | 0.596 | 0.825 | 0.585 | 0.593 | 0.122 |
| SampleServerNode02/http-apache/All/BytesPerSec | 6,949 | 9,980 | 13,778 | 9,801 | 9,926 | 2,032 |
| SampleServerNode02/http-apache/All/BytesPerReq | 16,688 | 16,747 | 16,812 | 16,745 | 16,747 | 32.1 |
| SampleServerNode02/http-apache/All/BusyWorkers | 1 | 2.25 | 9 | 2 | 2.05 | 1.55 |
| SampleServerNode02/http-apache/All/%BusyWorkers | 10 | 27.4 | 100 | 22.2 | 24.8 | 19.5 |
| SampleServerNode02/http-apache/All/IdleWorkers | 0 | 6.06 | 9 | 6 | 6.18 | 1.88 |
LG <IP_ADDRESS>
Performance Counters
| Min | Avg | Max | Med | Avg-90% | Std Dev | |
|---|---|---|---|---|---|---|
| LG <IP_ADDRESS>/Controller Connection/Ping Duration (ms) | 24 | 25.6 | 40 | 24 | 24.9 | 3.88 |
| LG <IP_ADDRESS>/Network/Segments sent/sec. | 4.26 | 8.24 | 38 | 5.01 | 7.41 | 5.5 |
| LG <IP_ADDRESS>/Network/Segments retransmitted/sec. | 0 | 1.58 | 8 | 1 | 1.49 | 1.31 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits received/sec. | 0.001 | 0.003 | 0.055 | 0.002 | 0.002 | 0.007 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits sent/sec. | 0 | 0.018 | 0.102 | 0.015 | 0.018 | 0.011 |
LG <IP_ADDRESS>
Performance Counters
| Min | Avg | Max | Med | Avg-90% | Std Dev | |
|---|---|---|---|---|---|---|
| LG <IP_ADDRESS>/CPU Load | 0 | 2 | 56 | 1 | 1.49 | 3.91 |
| LG <IP_ADDRESS>/Memory Used | 5 | 7.97 | 15 | 7 | 7.81 | 2.42 |
| LG <IP_ADDRESS>/Throughput | 0 | 3.42 | 34.9 | 0.519 | 2.81 | 4.94 |
| LG <IP_ADDRESS>/User Load | 0 | 22.7 | 29 | 23 | 23.1 | 5.46 |
| LG <IP_ADDRESS>/Controller Connection/Ping Duration (ms) | 21 | 22.9 | 35 | 22 | 22.4 | 3.31 |
| LG <IP_ADDRESS>/Network/Segments sent/sec. | 5 | 355.3 | 2,700 | 177.9 | 314.2 | 378.7 |
| LG <IP_ADDRESS>/Network/Segments retransmitted/sec. | 0 | 0.226 | 2.07 | 0 | 0.151 | 0.505 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits received/sec. | 0 | 0 | 0.002 | 0 | 0 | 0 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits sent/sec. | 0 | 0 | 0.002 | 0 | 0 | 0 |
| LG <IP_ADDRESS>/Network/eth1 (eth1)/Megabits received/sec. | 0.001 | 3.62 | 36.8 | 0.57 | 2.98 | 5.19 |
| LG <IP_ADDRESS>/Network/eth1 (eth1)/Megabits sent/sec. | 0.014 | 0.362 | 2.29 | 0.285 | 0.337 | 0.289 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/User Load | 0 | 12.4 | 13 | 13 | 12.8 | 2.12 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/MyiPhoneUser_Create_report/User Load | 0 | 5.73 | 6 | 6 | 5.93 | 0.97 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/BrowserUser_Create_report/User Load | 0 | 6.67 | 7 | 7 | 6.91 | 1.16 |
| LG <IP_ADDRESS>/MyPopulationBigCities/User Load | 0 | 10.25 | 16 | 10 | 10.27 | 4.26 |
| LG <IP_ADDRESS>/MyPopulationBigCities/MyiPhoneUser_Create_report/User Load | 0 | 6.12 | 9 | 6 | 6.16 | 2.5 |
| LG <IP_ADDRESS>/MyPopulationBigCities/BrowserUser_Create_report/User Load | 0 | 4.13 | 7 | 4 | 4.11 | 1.76 |
LG <IP_ADDRESS>
Performance Counters
| Min | Avg | Max | Med | Avg-90% | Std Dev | |
|---|---|---|---|---|---|---|
| LG <IP_ADDRESS>/CPU Load | 0 | 2.15 | 51 | 1 | 1.7 | 3.56 |
| LG <IP_ADDRESS>/Memory Used | 5 | 13.7 | 26 | 13 | 13.6 | 4.94 |
| LG <IP_ADDRESS>/Throughput | 0 | 3.28 | 35.2 | 0.46 | 2.7 | 4.9 |
| LG <IP_ADDRESS>/User Load | 0 | 21.7 | 28 | 22 | 22.1 | 5.34 |
| LG <IP_ADDRESS>/Controller Connection/Ping Duration (ms) | 20 | 21.7 | 40 | 20 | 20.8 | 4.88 |
| LG <IP_ADDRESS>/Network/Segments sent/sec. | 5 | 300.7 | 2,261 | 160.9 | 269.5 | 304.3 |
| LG <IP_ADDRESS>/Network/Segments retransmitted/sec. | 0 | 0.33 | 9.64 | 0 | 0.219 | 0.827 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits received/sec. | 0.002 | 3.39 | 36 | 0.504 | 2.79 | 5.01 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits sent/sec. | 0 | 0.327 | 2.25 | 0.262 | 0.305 | 0.261 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/User Load | 0 | 11.5 | 12 | 12 | 11.9 | 1.95 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/MyiPhoneUser_Create_report/User Load | 0 | 5.73 | 6 | 6 | 5.93 | 0.97 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/BrowserUser_Create_report/User Load | 0 | 5.73 | 6 | 6 | 5.93 | 0.979 |
| LG <IP_ADDRESS>/MyPopulationBigCities/User Load | 0 | 10.25 | 16 | 10 | 10.27 | 4.26 |
| LG <IP_ADDRESS>/MyPopulationBigCities/MyiPhoneUser_Create_report/User Load | 0 | 6.18 | 10 | 6 | 6.17 | 2.58 |
| LG <IP_ADDRESS>/MyPopulationBigCities/BrowserUser_Create_report/User Load | 0 | 4.07 | 6 | 4 | 4.09 | 1.68 |
LG <IP_ADDRESS>
Performance Counters
| Min | Avg | Max | Med | Avg-90% | Std Dev | |
|---|---|---|---|---|---|---|
| LG <IP_ADDRESS>/CPU Load | 0 | 1.87 | 65 | 1 | 1.35 | 3.86 |
| LG <IP_ADDRESS>/Memory Used | 5 | 14.5 | 28 | 14 | 14.3 | 5.74 |
| LG <IP_ADDRESS>/Throughput | 0 | 3.59 | 26.6 | 0.528 | 3.02 | 4.95 |
| LG <IP_ADDRESS>/User Load | 0 | 22.7 | 29 | 23 | 23.1 | 5.46 |
| LG <IP_ADDRESS>/Controller Connection/Ping Duration (ms) | 35 | 40 | 44 | 40 | 40.1 | 1.74 |
| LG <IP_ADDRESS>/Network/Segments sent/sec. | 5 | 312.6 | 1,717 | 175.8 | 284.7 | 293.6 |
| LG <IP_ADDRESS>/Network/Segments retransmitted/sec. | 0 | 0.167 | 5.01 | 0 | 0.114 | 0.426 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits received/sec. | 0.001 | 3.75 | 27.7 | 0.575 | 3.17 | 5.14 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits sent/sec. | 0.013 | 0.341 | 1.31 | 0.286 | 0.324 | 0.248 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/User Load | 0 | 12.4 | 13 | 13 | 12.8 | 2.12 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/MyiPhoneUser_Create_report/User Load | 0 | 5.73 | 6 | 6 | 5.93 | 0.97 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/BrowserUser_Create_report/User Load | 0 | 6.67 | 7 | 7 | 6.91 | 1.16 |
| LG <IP_ADDRESS>/MyPopulationBigCities/User Load | 0 | 10.25 | 16 | 10 | 10.27 | 4.26 |
| LG <IP_ADDRESS>/MyPopulationBigCities/MyiPhoneUser_Create_report/User Load | 0 | 6.18 | 10 | 6 | 6.17 | 2.58 |
| LG <IP_ADDRESS>/MyPopulationBigCities/BrowserUser_Create_report/User Load | 0 | 4.07 | 6 | 4 | 4.09 | 1.68 |
LG <IP_ADDRESS>
Performance Counters
| Min | Avg | Max | Med | Avg-90% | Std Dev | |
|---|---|---|---|---|---|---|
| LG <IP_ADDRESS>/CPU Load | 0 | 1.83 | 74 | 1 | 1.23 | 4.3 |
| LG <IP_ADDRESS>/Memory Used | 5 | 14.9 | 30 | 14 | 14.7 | 5.93 |
| LG <IP_ADDRESS>/Throughput | 0 | 3.25 | 34 | 0.427 | 2.61 | 5.07 |
| LG <IP_ADDRESS>/User Load | 0 | 21.7 | 28 | 22 | 22.1 | 5.34 |
| LG <IP_ADDRESS>/Controller Connection/Ping Duration (ms) | 35 | 35.8 | 37 | 36 | 35.8 | 0.564 |
| LG <IP_ADDRESS>/Network/Segments sent/sec. | 5 | 234.3 | 1,620 | 146 | 212.5 | 221.8 |
| LG <IP_ADDRESS>/Network/Segments retransmitted/sec. | 0 | 0.183 | 9.68 | 0 | 0.107 | 0.707 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits received/sec. | 0.001 | 3.42 | 35.7 | 0.467 | 2.75 | 5.29 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits sent/sec. | 0.013 | 0.295 | 2.41 | 0.238 | 0.272 | 0.244 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/User Load | 0 | 11.5 | 12 | 12 | 11.9 | 1.95 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/MyiPhoneUser_Create_report/User Load | 0 | 5.73 | 6 | 6 | 5.93 | 0.97 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/BrowserUser_Create_report/User Load | 0 | 5.73 | 6 | 6 | 5.93 | 0.979 |
| LG <IP_ADDRESS>/MyPopulationBigCities/User Load | 0 | 10.25 | 16 | 10 | 10.27 | 4.26 |
| LG <IP_ADDRESS>/MyPopulationBigCities/MyiPhoneUser_Create_report/User Load | 0 | 6.18 | 10 | 6 | 6.17 | 2.58 |
| LG <IP_ADDRESS>/MyPopulationBigCities/BrowserUser_Create_report/User Load | 0 | 4.07 | 6 | 4 | 4.09 | 1.68 |
LG <IP_ADDRESS>
Performance Counters
| Min | Avg | Max | Med | Avg-90% | Std Dev | |
|---|---|---|---|---|---|---|
| LG <IP_ADDRESS>/CPU Load | 0 | 2.4 | 100 | 1 | 1.6 | 6.17 |
| LG <IP_ADDRESS>/Memory Used | 5 | 7.39 | 13 | 7 | 7.27 | 1.86 |
| LG <IP_ADDRESS>/Throughput | 0 | 3.04 | 31.3 | 0.451 | 2.45 | 4.65 |
| LG <IP_ADDRESS>/User Load | 0 | 21.7 | 28 | 22 | 22.1 | 5.34 |
| LG <IP_ADDRESS>/Controller Connection/Ping Duration (ms) | 44 | 138.1 | 1,183 | 49 | 84.9 | 283.4 |
| LG <IP_ADDRESS>/Network/Segments sent/sec. | 4.99 | 310.8 | 2,780 | 161.2 | 275.3 | 336.8 |
| LG <IP_ADDRESS>/Network/Segments retransmitted/sec. | 0 | 0.275 | 3 | 0 | 0.19 | 0.562 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits received/sec. | 0 | 0 | 0.002 | 0 | 0 | 0 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits sent/sec. | 0 | 0 | 0.002 | 0 | 0 | 0 |
| LG <IP_ADDRESS>/Network/eth1 (eth1)/Megabits received/sec. | 0.001 | 3.2 | 34 | 0.502 | 2.59 | 4.87 |
| LG <IP_ADDRESS>/Network/eth1 (eth1)/Megabits sent/sec. | 0.014 | 0.322 | 1.89 | 0.245 | 0.3 | 0.26 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/User Load | 0 | 11.5 | 12 | 12 | 11.9 | 1.94 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/MyiPhoneUser_Create_report/User Load | 0 | 6.68 | 7 | 7 | 6.91 | 1.15 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/BrowserUser_Create_report/User Load | 0 | 4.78 | 5 | 5 | 4.94 | 0.794 |
| LG <IP_ADDRESS>/MyPopulationBigCities/User Load | 0 | 10.25 | 16 | 10 | 10.27 | 4.26 |
| LG <IP_ADDRESS>/MyPopulationBigCities/MyiPhoneUser_Create_report/User Load | 0 | 5.2 | 9 | 5 | 5.17 | 2.56 |
| LG <IP_ADDRESS>/MyPopulationBigCities/BrowserUser_Create_report/User Load | 0 | 5.05 | 7 | 5 | 5.09 | 1.71 |
LG <IP_ADDRESS>
Performance Counters
| Min | Avg | Max | Med | Avg-90% | Std Dev | |
|---|---|---|---|---|---|---|
| LG <IP_ADDRESS>/CPU Load | 0 | 2.88 | 56 | 1 | 2.09 | 5.24 |
| LG <IP_ADDRESS>/Memory Used | 6 | 10.66 | 19 | 10 | 10.53 | 3.35 |
| LG <IP_ADDRESS>/Throughput | 0 | 3.81 | 28.9 | 0.556 | 3.13 | 5.54 |
| LG <IP_ADDRESS>/User Load | 0 | 22.7 | 29 | 23 | 23.1 | 5.46 |
| LG <IP_ADDRESS>/Controller Connection/Ping Duration (ms) | 86 | 108.2 | 180 | 97 | 105.4 | 25.8 |
| LG <IP_ADDRESS>/Network/Segments sent/sec. | 4.95 | 382.2 | 2,642 | 193.6 | 337.5 | 405.1 |
| LG <IP_ADDRESS>/Network/Segments retransmitted/sec. | 0 | 0.508 | 20.9 | 0 | 0.264 | 1.63 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits received/sec. | 0.002 | 4.04 | 30.4 | 0.63 | 3.32 | 5.83 |
| LG <IP_ADDRESS>/Network/eth0 (eth0)/Megabits sent/sec. | 0.014 | 0.386 | 1.98 | 0.29 | 0.36 | 0.314 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/User Load | 0 | 12.4 | 13 | 13 | 12.8 | 2.12 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/MyiPhoneUser_Create_report/User Load | 0 | 5.73 | 6 | 6 | 5.93 | 0.97 |
| LG <IP_ADDRESS>/MyPopulationSmallCities/BrowserUser_Create_report/User Load | 0 | 6.67 | 7 | 7 | 6.91 | 1.16 |
| LG <IP_ADDRESS>/MyPopulationBigCities/User Load | 0 | 10.25 | 16 | 10 | 10.27 | 4.26 |
| LG <IP_ADDRESS>/MyPopulationBigCities/MyiPhoneUser_Create_report/User Load | 0 | 5.1 | 7 | 5 | 5.13 | 1.69 |
| LG <IP_ADDRESS>/MyPopulationBigCities/BrowserUser_Create_report/User Load | 0 | 5.15 | 9 | 5 | 5.14 | 2.58 |


Web designer and devloper
Student at IIIT Ranchi 🇮🇳
I'm a passionate learner who's always willing to learn and work across technologies and domains. I love to explore new technologies and leverage. Apart from that I also love to guide and mentor newbies. I'm currently into Web Development and working on my MERN Website.


--- layout: hu-HU/default title: Telepítés · A Rust programozási nyelv ---
To install Rust, if you are running Unix,
run the following
in your terminal, then follow the onscreen instructions.
curl https://sh.rustup.rs -sSf | sh
If you are running Windows,
download and run
rustup‑init.exe
then follow the onscreen instructions.
rustup
Rust is installed and managed by the
rustup
tool. Rust has a 6-week
rapid release process
and supports a
great number of platforms
, so there are many builds of Rust available at any time.
rustup
manages these builds in a consistent way on every
platform that Rust supports, enabling installation of Rust from the
beta and nightly release channels as well as support for additional
cross-compilation targets
For more information see the
rustup
documentation.
PATH
environment variable
In the Rust development environment, all tools are installed to the
~/.cargo/bin
directory,
and this is where you will find the Rust toolchain, including
rustc
, cargo
, and rustup
.
Accordingly, it is customary for Rust developers to include this
directory in their
PATH
environment variable. During installation, rustup
,
will attempt to configure
PATH
, but because of differences between platforms,
command shells, and bugs in rustup
, the modifications
to PATH
may not take effect until the console is
restarted, or the user logged out, or may not succeed at all.
If, after installation, running rustc --version
in the
console fails, this is the most likely reason.
On Windows, Rust additionally requires the C++ build tools for Visual Studio 2013 or later. The easiest way to acquire the build tools is by installing Microsoft Visual C++ Build Tools 2015 which provides just the Visual C++ build tools. Alternately, you can install Visual Studio 2015 or Visual Studio 2013 and during install select the "C++ tools".
For further information about configuring Rust on Windows see the
Windows-specific rustup
documentation.
The installation described above, via
rustup
, is the preferred way to install Rust for most developers,
but Rust can be
installed via other methods
as well.


Tusk
Refined Evernote desktop app
Tusk is an unofficial, open source, third-party, community driven, free Evernote app with a handful of useful features.
Download
Fork Source
Dark Theme
Silky & relaxing.
Black Theme
Deep focus materialized.
Focus Mode
Immerse yourself in a distraction-free note-taking mode.
Compact Mode
Keep your productivity to the maximum no matter the screen size.
Note Navigation
Navigate seamlessly without taking your hands away from the keyboard


| Test Case | PERF-0020 |
| Title | The garage door controller takes less than 1 minute to power up |
| Objective | This test case is intended to verify the following implied or specified requirements:
This test case is intended to demonstrate that in situations where the Raspberry PI controller has to reboot (e.g. loss of power), it takes less than a minute to get to a state where it can accept a new bluetooth open/close command. |
| Setup |
|
| Actions |
|
| Expected | After a reboot, the Android app can send a door command that is successfully processed within 60 seconds. |
| Results | FAILED |
| Cleanup |
|
| Requirements | GDO-PERF-020 |


AP Top Business News at 4:58 a.m. EST
by EndPlayChina says Beijing, US to lift tariff hikes as talks advance
Toyota 2Q profit up 1% on healthy global sales
Acting UAW head says he'll clean up corruption found by feds
French company sees some charges quashed over Syria case
California discloses Facebook probe, sues for documents
Global stocks turn higher as China says tariff war may ease
New Zealand passes law aimed at combating climate change
Amazon's spending in Seattle Council races doesn't deliver
Grounded Boeing jet hits another pothole in path to return
Colorado voters narrowly approve legalized sports betting


Who's standing in Suffolk in 2019 General Election? How you can take part
by Paul GeaterCandidates' nominations have been confirmed for next month's 2019 General Election - with few surprises among the Suffolk names seeking to return to parliament.
And we will be inviting all those set to contest the Ipswich seat to a special hustings we are running at the University of Suffolk on the town's Waterfront.
All those from Suffolk who were MPs in the last Parliament are seeking to return and there are Labour and Green candidates standing in every seat on December 12.
The Liberal Democrats are standing everywhere except Bury St Edmunds where they have withdrawn to give Green candidate Helen Geake a clear run.
The Greens have stood aside in the Liberal Democrat target seat of Chelmsford in return.
The only Brexit Party candidate left in the running is Nicola Thomas who is contesting the highly marginal Ipswich seat where Labour's Sandy Martin is defending a majority of 831 over the Conservatives.
She could yet have a significant impact on a seat which is one of the Tories main targets in the south of England.
There have been attempts by Conservative officials to persuade Brexit Party leader Nigel Farage to pull candidates from Tory/Labour marginals to avoid splitting the pro-Brexit vote - but when nominations came in it was confirmed that Ms Thomas was standing in Ipswich.
Both Mr Martin and Conservative candidate Tom Hunt say publicly that they do not think the presence of a Brexit Party candidate will affect the election result - but election experts are not so sure.
Most say that polling evidence suggests that in most places, Brexit Party votes damage Conservative candidates more than Labour - but in Ipswich in 2017 the vote was so concentrated on the two main parties that any damage may not be that great.
The former Brexit Party candidate in Suffolk Coastal, Tony Love, is standing as an Independent in the seat on a pro-Brexit platform.
We are running a hustings at the University of Suffolk's Waterfront building from 6pm to 7.30pm on Monday, December 2.
All the candidates for Ipswich will be invited and readers will be invited to join students for the event.
Entry will be free, but it will be by ticket only - and if you have a question you want to ask the candidates please indicate what it is and it may be called on the evening. Please apply by midnight next Sunday, November 24.
Please sent applications to<EMAIL_ADDRESS>using the subject line Archant Hustings 2019. Please include a telephone number we can call you on - and each application is for a maximum of two tickets.
Alternatively please write to Paul Geater, Archant, Portman House, 120 Princes Street, Ipswich, IP1 1RS - but that has to arrive by Friday, November 22. Alternatively hand in an application to our reception by 5pm on November 22.
Anyone driving to the hustings should use the nearby public car park at Duke Street - there is no parking on university premises.
Four parties are contesting every Essex seat after the withdrawal this week of Brexit Party candidates from seats held by the Conservatives two years ago.
In both Clacton and the Harwich and North Essex seats there are also a number of independents and other candidates - Clacton has an Official Monster Raving Loony Party candidate.
All the seats are currently held by the Conservatives - although Colchester was held by the Liberal Democrats until 2015 and Clacton was held briefly by UKIP between 2014 and 2017. That party is not contesting any seats in the area this time.
Candidates nominated to fight election:
Bury St Edmunds:
Jo Churchill (C)*, Cliff Waterman (L), Helen Geake (G), Paul Hopfensperger (Ind)
Central Suffolk and North Ipswich:
Dr Dan Poulter (C)*, Emma Bonner-Morgan(L), James Sandbach (LD), Dan Pratt (G).
Ipswich:
Sandy Martin (L)*, Tom Hunt (C), Adrian Hyyrylainen-Trett (LD), Barry Broom (G), Nicola Thomas (B).
South Suffolk:
James Cartlidge (C)*, Elizabeth Hughes (L), David Beavan (LD), Robert Lindsay (G).
Suffolk Coastal:
Dr Therese Coffey (C)*, Cameron Matthews (L), Jules Ewart (LD), Rachel Smith-Lyte (G), Tony Love (Ind).
Waveney:
Peter Aldous (C)*, Sonia Barker (L), Helen Korfanty (LD), Elfrede Brambley-Crawshaw (G), David Brennan (CPA).
West Suffolk:
Matt Hancock (C)*, Claire Unwin (L), Elfreda Tealby-Watson (LD), Donald Allwright (G).
Clacton:
Giles Watling (C)*, Kevin Bonavia (L), Callum Robertson (LD), Chris Southall (G), Colin Bennett (Ind), Just-John Sexton (Official Monster Raving Loony Party), Andy Morgan (No Description).
Colchester:
Will Quince (C)*, Tina McKay (L), Martin Goss (LD), Mark Goacher (G).
Harwich and North Essex:
Sir Bernard Jenkin (C)*, Stephen Rice (L), Mike Beckett (LD), Peter Banks (G), Tony Francis (Ind), Richard Browning-Smith (Ind).
C: Conservative, L: Labour, LD: Liberal Democrat, G: Green, B: Brexit, Ind: Independent, CPA: Christian People's Alliance


NEWS.md
decode_webp
in image.write_kafka
in kafka.This release contains contributions from many people:
Bryan Cutler, Jongwook Choi, Sergii Khomenko, Stephan Uphoff, Yong Tang, Yuan (Terry) Tang
We are also grateful to all who filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.
Initial release of TensorFlow I/O.
tensorflow_io.ignite
: Data source for Apache Ignite and File System (IGFS).tensorflow_io.kafka
: Apache Kafka stream-processing support.tensorflow_io.kinesis
: Amazon Kinesis data streams support.tensorflow_io.hadoop
: Hadoop SequenceFile format support.This release contains contributions from many people:
Anjali Sridhar, Anton Dmitriev, Artem Malykh, Brennan Saeta, Derek Murray, Gunhan Gulsoy, Jacques Pienaar, Jianwei Xie, Jiri Simsa, knight, Loo Rong Jie, Martin Wicke, Michael Case, Sergei Lebedev, Sourabh Bajaj, Yifei Feng, Yong Tang, Yuan (Terry) Tang, Yun Peng
We are also grateful to all who filed issues or helped resolve them, asked and answered questions, and were part of inspiring discussions.


Plugging expression (94) into Eq. (82), we obtain
|
| (95) |
where Lg is given by Eq. (73), i.e.,
Expand δG as
| δG = δG0 + δG1 + …, |
where δGi ∼ O(λi+1)Fg0, and note that the right-hand side of Eq. (95) is of O(λ2), then, the balance on order O(λ1) requires
|
| (97) |
i.e., δG0 is gyro-phase independent.
The balance on order O(λ2) requires (for the special case of E0 = 0):
Deﬁne the gyro-average operator ⟨…⟩α by
|
| (99) |
where h = h(X,α,𝜀,μ) is an arbitrary function of guiding-center variables. The gyro-averaging is an integration in the velocity space. [For a ﬁeld quantity, which is independent of the velocity in particle coordinates, i.e., h = h(x), it is ready to see that the above averaging is a spatial averaging over a gyro-ring.]
Gyro-averaging Eq. (98), we obtain
where use has been made of ⟨(v⊥⋅∇X)δA⟩α ≈ 0, where the error is of order higher than O(λ2). Note that v∥ = ±. Since B0 is approximately independent of α, so does v∥. Using this, the ﬁrst gyro-averaging on the left-hand side of the above equation is written|
| (101) |
The second gyro-averaging on the left-hand side of Eq. (100) can be written as
|
| (102) |
where VD is the magnetic curvature and gradient drift (Eq. (102) is derived in Appendix xx, to do later). Then Eq. (100) is written
Next, we try to simplify the nonlinear term ⟨δRδFg⟩α appearing in Eq. (103), which is written as
|
| (106) |
Accurate to O(λ2),the ﬁrst term on the right-hand side of the above is zero. [Proof:
|
| (108) |
Using the expression of δR given by Eq. (37), the above expression is written as
where use has been made of ∂δG0∕∂α = 0. Using Eq. (92), we obtain|
| (110) |
The other two terms in Eq. (109) can be proved to be zero. [Proof:
|
| (113) |
Using this in Eq. (108), we obtain
|
| (114) |
which is of O(λ2).
Using the above results, the gyro-averaged kinetic equation for δG0 is ﬁnally written as
where VD is the equilibrium guiding-center drift velocity, ⟨…⟩α is the gyro-phase averaging operator, δL = δΦ− v ⋅δA, and δG0 = δG0(X,𝜀,μ,t) is gyro-angle independent and is related to the perturbed distribution function δFg by|
| (116) |
where the ﬁrst term is called “adiabatic term”, which depends on the gyro-phase α via δΦ. Equation (115) is the special case (∂Fg0∕∂μ|𝜀 = 0) of the Frieman-Chen nonlinear gyrokinetic equation given in Ref. [3]. Note that the nonlinear terms only appear on the left-hand side of Eq. (115) and all the terms on the right-hand side are linear. The term
|
| (117) |
consists of the perturbed E × B drift and magnetic ﬂuttering term (refer to Sec. E.3).


THE GLIMMER MAN 1996 A film review by Timothy Voon Copyright 1997 Timothy Voon
Cast: Steven Seagal, Keenan Ivory Wayans, Bob Gunton, Brian Cox, Michelle Johnson, John Jackson, Stephen Tobolowsky Director: John Gray Screenplay: Kevin Brodbin
101 Dalai Lama brownie points, and full marks for donating some of the proceeds of this movie to the Tibetan cause - earning Segal the title of 'Tulku' (reincarnated lama); but all that glitters is not gold, and the only glimmer in this movie is sadly a fish out of water.
He has chosen the oriental look, dresses like a monk with a pony tail, has put on a bit of weight, but beneath all his exterior show of Buddhism is Steven Segal. It was hard to picture him as the same man who had played the knife wielding chef of 'Under Siege.'
The plot is even more difficult to comprehend. What is the possibility that an ex-mercenary, turned cop, now becomes involved with a serial killer who crucifies his victims including Segal's ex-wife; but in truth there are two killers, also a wealthy business man trying to murder his step son, and a partner (Wayans) who cries every time he sees 'Casablanca' and eats 'deer penis' for his allergies.
Comment: Very odd.
Timothy Voon e-mail<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


International Institute of Multiscale Materials Modeling
Quasicontinuum Method
Back to Multiscale Methods
Introduction
Everthing about the QC method can be found on their website, please see the Further Reading section.
History
Features
Applications
Downloads
The QC code can be downloaded here.
References
Further Reading
- The QC method website


[gecode-users] Segfault when assigning NaryUnion
Jean-Noël Monette
jean-noel.monette at it.uu.se
Thu Mar 22 13:55:06 CET 2012
Hello,
While writing some propagator using range iterators and testing it, I
fell upon a segfault. Tracking it down, it appears to happen when I use
the assignment operator on NaryUnion. Here is a (almost) minimal example
reproducing the problem:
#include "gecode/driver.hh"
#include "gecode/iter.hh"
using namespace Gecode;
class MySpace:public Space {
public:
virtual Space* copy(bool share){return this;}
};
int main(int argc, char* argv[]){
MySpace home;
Iter::Ranges::Empty empty;
Region region(home);
Iter::Ranges::NaryUnion var1(region,empty);
Iter::Ranges::NaryUnion var2;
std::cout << "pass?" << std::endl;
var2 = var1;
std::cout << "passed" << std::endl;
return 0;
}
The second print statement is never reached. What am I doing wrong?
I'm using Gecode 3.7.1 (I haven't upgraded to 3.7.2 yet but according to
the changelog, this problem seems unrelated to the changes between the
two versions), on Linux Ubuntu 11.04, and compiling with GCC 4.5.2.
Thank you for your answers,
Jean-Noël Monette
More information about the users
mailing list


Generator for function with multiple peaks following the multiple peaks model 2.
makeMPM2Function(n.peaks, dimensions, topology, seed, rotated = TRUE, peak.shape = "ellipse")
| n.peaks | [ |
|---|---|
| dimensions | [ |
| topology | [ |
| seed | [ |
| rotated | [ |
| peak.shape | [ |
[smoof_single_objective_function
]
See the technical report of multiple peaks model 2 for an in-depth description of the underlying algorithm.
not_run({ fn = makeMPM2Function(n.peaks = 10L, dimensions = 2L, topology = "funnel", seed = 123, rotated = TRUE, peak.shape = "ellipse") if (require(plot3D)) { plot3D(fn) } }) not_run({ fn = makeMPM2Function(n.peaks = 5L, dimensions = 2L, topology = "random", seed = 134, rotated = FALSE) plot(fn, render.levels = TRUE) })


Eagles RB Sproles (hip flexor) out for season
by ReutersPhiladelphia Eagles running back Darren Sproles is out for the rest of the season as he recovers from a torn right hip flexor the team announced on Friday.
Sproles, 36, originally suffered the injury in a 31-6 win over the New York Jets on Oct. 6.
He missed the next three games, but returned and had three offensive touches in a 22-14 win over the Chicago Bears on Nov. 3. Sproles didn’t report any problems after that game and returned to practice the following week, but reported the injury after Wednesday’s session.
Sproles finishes the season with 17 carries for 66 yards and six receptions for 24 yards in six games this season.
Playing in his 15th season, Sproles is now fifth all-time in career all-purpose yards with 19,696.
–Field Level Media


SSL_get_certificate, SSL_get_privatekey - retrieve TLS/SSL certificate and private key
#include <openssl/ssl.h>
X509 *SSL_get_certificate(const SSL *s);
EVP_PKEY *SSL_get_privatekey(const SSL *s);
SSL_get_certificate() returns a pointer to an X509 object representing a certificate used as the local peer's identity.
Multiple certificates can be configured; for example, a server might have both RSA and ECDSA certificates. The certificate which is returned by SSL_get_certificate() is determined as follows:
If it is called before certificate selection has occurred, it returns the most recently added certificate, or NULL if no certificate has been added.
After certificate selection has occurred, it returns the certificate which was selected during the handshake, or NULL if no certificate was selected (for example, on a client where no client certificate is in use).
Certificate selection occurs during the handshake; therefore, the value returned by SSL_get_certificate() during any callback made during the handshake process will depend on whether that callback is made before or after certificate selection occurs.
A specific use for SSL_get_certificate() is inside a callback set via a call to SSL_CTX_set_tlsext_status_cb(3). This callback occurs after certificate selection, where it can be used to examine a server's chosen certificate, for example for the purpose of identifying a certificate's OCSP responder URL so that an OCSP response can be obtained.
SSL_get_privatekey() returns a pointer to the EVP_PKEY object corresponding to the certificate returned by SSL_get_certificate(), if any.
These functions return pointers to their respective objects, or NULL if no such object is available. Returned objects are owned by the SSL object and should not be freed by users of these functions.
ssl(7), SSL_CTX_set_tlsext_status_cb(3)
Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.


Let's talk Local
This is the paragraph where you can write more details about your product. Keep you user engaged by providing meaningful information. Remember that by this time, the user is curious, otherwise he wouldn't scroll to get here. Add a button if you want the user to see more.
Beautiful Gallery
Spend your time generating new ideas. You don't have to think of implementing.
New Ideas
Larger, yet dramatically thinner. More powerful, but remarkably power efficient.
Statistics
Choose from a veriety of many colors resembling sugar paper pastels.
Delightful design
Find unique and handmade delightful designs related items directly from our sellers.
What's New
Fun Run
It was a good event
This is the paragraph where you can write more details about your product. Keep you user engaged by providing meaningful information. Remember that by this time, the user is curious, otherwise he wouldn't scroll to get here. Add a button if you want the user to see more.
Fun Run
This is the paragraph where you can write more details about your product. Keep you user engaged by providing meaningful information. Remember that by this time, the user is curious, otherwise he wouldn't scroll to get here. Add a button if you want the user to see more.
Blue Bell
This is the paragraph where you can write more details about your product. Keep you user engaged by providing meaningful information. Remember that by this time, the user is curious, otherwise he wouldn't scroll to get here. Add a button if you want the user to see more.
Maifest
This is the paragraph where you can write more details about your product. Keep you user engaged by providing meaningful information. Remember that by this time, the user is curious, otherwise he wouldn't scroll to get here. Add a button if you want the user to see more.