Pmw.MenuBar() - manager megawidget for menu buttons and menus
A menu bar is a container megawidget which manages a number of menu buttons and dropdown menus. There are methods to add menu buttons and menus to the menu bar and for adding menu items to the menus. Menu buttons may be added to the left or right of the megawidget. Each menu button and menu item may have help text to be displayed by a Pmw.Balloon. Each menu and cascaded menu (sub-menu) is referenced by name which is supplied on creation.
To select a menu, simultaneously press the <Alt> key and the accelerator character indicated on a menu button. The arrows keys can then be used to select other menus and menu items. To invoke a menu item, press <Return> or press the accelerator character indicated on the menu item.
Each accelerator character will be assigned automatically unless
traverseSpec is supplied to the addmenu()
, addmenuitem()
or
addcascademenu()
methods. The automatically selected
accelerator character for a menu button (or menu item) is the
first character in the label text that has not already been used
as an accelerator for a menu button (or in the menu containing the
menu item).
If traverseSpec is given, it must be either an integer or a character. If an integer, it specifies the index of the character in the label text to use as the accelerator character. If a character, it specifies the character to use as the accelerator character. The default is 1.
Menu button components are created dynamically by the
addmenu()
method. By default, these are of type
Tkinter.Menubutton and are created with a component group of
Button.
Menu components are created dynamically by the addmenu()
and
addcascademenu()
methods. By default, these are of type
Tkinter.Menu and are created with a component group of Menu.
addmenu()
or addcascademenu()
methods.
A menu item in the parent menu is created (with the
add_cascade()
method of the parent menu) using all keyword
arguments except tearoff.
If the label keyword argument is not given, the label option of the menu item defaults to menuName. If the underline keyword argument is not given (and the hotkeys megawidget option is true) the underline option is determined as described under hotkeys and is used to specify the keyboard accelerator.
The statusHelp argument is used as the help string for the menu
item. This is displayed using the showstatus()
method of the
balloon.
The tearoff keyword argument, if present, is passed to the constructor of the menu. The menu is created as a component named menuName-menu.
addmenu()
or addcascademenu()
methods.
Any keyword arguments present (except tearoff) will be passed to the constructor of the menu button. If the text keyword argument is not given, the text option of the menu button defaults to menuName. If the underline keyword argument is not given (and the hotkeys megawidget option is true) the underline option is determined as described under hotkeys and is used to specify the keyboard accelerator. Each menu button is packed into the menu bar using the given side, which should be either left or right. The menu button is created as a component named menuName-button.
If the balloon option has been defined, balloonHelp and
statusHelp are passed to the balloon as the help strings for the
menu button. See the bind()
method of Pmw.Balloon for how these
strings may be displayed.
The tearoff keyword argument, if present, is passed to the constructor of the menu. The menu is created as a component named menuName-menu.
addcascademenu()
method). Any
keyword arguments present will be passed to the menu when creating
the menu item. See Tkinter.Menu for the valid options for each
item type. In addition, a keyboard accelerator may be
automatically given to the item, as described under hotkeys.
When the mouse is moved over the menu item, the helpString will be displayed by the balloon's statuscommand.
class Demo: def __init__(self, parent): # Create the Balloon. self.balloon = Pmw.Balloon(parent) # Create and pack the MenuBar. menuBar = Pmw.MenuBar(parent, hull_relief = 'raised', hull_borderwidth = 1, balloon = self.balloon) menuBar.pack(fill = 'x') self.menuBar = menuBar # Add some buttons to the MenuBar. menuBar.addmenu('File', 'Close this window or exit') menuBar.addmenuitem('File', 'command', 'Close this window', command = PrintOne('Action: close'), label = 'Close') menuBar.addmenuitem('File', 'separator') menuBar.addmenuitem('File', 'command', 'Exit the application', command = PrintOne('Action: exit'), label = 'Exit') menuBar.addmenu('Edit', 'Cut, copy or paste') menuBar.addmenuitem('Edit', 'command', 'Delete the current selection', command = PrintOne('Action: delete'), label = 'Delete') menuBar.addmenu('Options', 'Set user preferences') menuBar.addmenuitem('Options', 'command', 'Set general preferences', command = PrintOne('Action: general options'), label = 'General...') # Create a checkbutton menu item. self.toggleVar = Tkinter.IntVar() # Initialise the checkbutton to 1: self.toggleVar.set(1) menuBar.addmenuitem('Options', 'checkbutton', 'Toggle me on/off', label = 'Toggle', command = self._toggleMe, variable = self.toggleVar) self._toggleMe() menuBar.addcascademenu('Options', 'Size', 'Set some other preferences', traverseSpec = 'z', tearoff = 1) for size in ('tiny', 'small', 'average', 'big', 'huge'): menuBar.addmenuitem('Size', 'command', 'Set size to ' + size, command = PrintOne('Action: size ' + size), label = size) menuBar.addmenu('Help', 'User manuals', side = 'right') menuBar.addmenuitem('Help', 'command', 'About this application', command = PrintOne('Action: about'), label = 'About...') # Create and pack the main part of the window. self.mainPart = Tkinter.Label(parent, text = 'This is the\nmain part of\nthe window', background = 'black', foreground = 'white', padx = 30, pady = 30) self.mainPart.pack(fill = 'both', expand = 1) # Create and pack the MessageBar. self.messageBar = Pmw.MessageBar(parent, entry_width = 40, entry_relief='groove', labelpos = 'w', label_text = 'Status:') self.messageBar.pack(fill = 'x', padx = 10, pady = 10) self.messageBar.message('state', 'OK') buttonBox = Pmw.ButtonBox(parent) buttonBox.pack(fill = 'x') buttonBox.add('Disable\nall', command = menuBar.disableall) buttonBox.add('Enable\nall', command = menuBar.enableall) buttonBox.add('Create\nmenu', command = self.add) buttonBox.add('Delete\nmenu', command = self.delete) buttonBox.add('Create\nitem', command = self.additem) buttonBox.add('Delete\nitem', command = self.deleteitem) # Configure the balloon to displays its status messages in the # message bar. self.balloon.configure(statuscommand = self.messageBar.helpmessage) self.testMenuList = [] def _toggleMe(self): print 'Toggle value:', self.toggleVar.get() def add(self): if len(self.testMenuList) == 0: num = 0 else: num = self.testMenuList[-1] num = num + 1 name = 'Menu%d' % num self.testMenuList.append(num) self.menuBar.addmenu(name, 'This is ' + name) def delete(self): if len(self.testMenuList) == 0: self.menuBar.bell() else: num = self.testMenuList[0] name = 'Menu%d' % num del self.testMenuList[0] self.menuBar.deletemenu(name) def additem(self): if len(self.testMenuList) == 0: self.menuBar.bell() else: num = self.testMenuList[-1] menuName = 'Menu%d' % num menu = self.menuBar.component(menuName + '-menu') if menu.index('end') is None: label = 'item X' else: label = menu.entrycget('end', 'label') + 'X' self.menuBar.addmenuitem(menuName, 'command', 'Help for ' + label, command = PrintOne('Action: ' + menuName + ': ' + label), label = label) def deleteitem(self): if len(self.testMenuList) == 0: self.menuBar.bell() else: num = self.testMenuList[-1] menuName = 'Menu%d' % num menu = self.menuBar.component(menuName + '-menu') if menu.index('end') is None: self.menuBar.bell() else: self.menuBar.deletemenuitems(menuName, 0) class PrintOne: def __init__(self, text): self.text = text def __call__(self): print self.text
Pmw 1.2 -
5 Aug 2003
- Home
Manual page last reviewed: 22 April 2000


The bolg post adoped from bcc/docs/ mainly. You just glance it.
lesson 1
from bcc import BPF
import signal
import sys
def bpf():
BPF(text='''
int kprobe__sys_sync(void *ctx)
{ bpf_trace_printk("Hello, yubo\\n");
return 0;}'''
).trace_print()
def signal_handler(signal, frame):
print('You pressed Ctrl+c!')
bpf()
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
print('press Ctrl+c')
signal.pause()
lesson 2
from bcc import BPF
prog = """
int hello(void *ctx)
{
/* bpf_trace_printk will call it:
* /sys/kernel/debug/tracing/trace_pipe
*/
bpf_trace_printk("Hello, yubo\\n");
return 0;
}
"""
# load BPF program
b = BPF(text=prog)
b.attach_kprobe(event="sys_clone", fn_name="hello")
print("%-18s %-16s %-6s %s" % ("TIME(S)", "COMM", "PID", "MESSAGE"))
while 1:
try:
(task, pid, cpu, flags, ts, msg) = b.trace_fields()
except ValueError:
continue
print("%-18.9f %-16s %-6d %s" % (ts, task, pid, msg))
Here, this time we declare the C program as a variable : prog
.
-
hello()
On a probe to execute a C program defined here.Maybe you need add_always_inline
function attribute to it. -
b.attach_kprobe()
: creates a kprobe for the sys_clone() kernel function, which will execute our definedhello
C program. -
b.trace_fields()
Returns a fixed set of fields from trace_pipe,which similar to trace_print() .We should switch to BPF_PERF_OUTPUT()
lesson 4
from bcc import BPF
b = BPF(text="""
#include <uapi/linux/ptrace.h>
#include <linux/blkdev.h>
BPF_HASH(last);
int do_trace(struct pt_regs *ctx){
u64 ts, *tsp, delta, key = 0;
/* attempt to read stored timestamp */
tsp = last.lookup(&key);
if (tsp != 0) {
delta = bpf_ktime_get_ns() - *tsp;
if (delta <<PHONE_NUMBER>) {
bpf_trace_printk("%d\\n", delta / 1000000);
}
last.delete(&key);
}
/* update stored timestamp */
ts = bpf_ktime_get_ns();
last.update(&key, &ts);
return 0;
}
""")
b.attach_kprobe(event="sys_sync", fn_name="do_trace")
print("Tracing for quick sync's ... Ctrl -c to end ")
# format output
start = 0
while 1:
(task, pid, cpu, flags, ts, ms) = b.trace_fields()
if start == 0:
start = ts
ts = ts - start
print("At time %.2f s: multiple syncs detected, last %s ms ago " % (ts,ms))
Here, we introduce some new usage.BPF_HASH(last)
creates a BPF map object that is a hash called “last”.It is defaults key and value types of u64
last.lookup(&key)
: Lookup the key from the hash.last.delete(&key)
Delete the key from the hash.last.update(&key, &ts)
Associate the valuein the 2nd argument to the key.
Please note: the b.trace_fields
is a kernel debug trace pipe and return a tuple of the fields(task, pid, cpu,flags, timestamp, msg).This is trace debug.


Details
- class: golden-column
- settings: @golden-column-gap
- defaults: none
composable · layout
Examples
Normal golden column
Only golden on mobile
Only golden on tablet and above
Only golden on desktop and above
Reverse
The golden column supports the .reverse class, to switch which column represents which part of the ratio.


--- layout: default title: Stanford Christian Students ---
We hold the faith which is common to all believers (Titus 1:4, Jude 3).
The Bible is the complete divine revelation inspired word-by-word by God through the Holy Spirit.
God is uniquely one, yet triune - the Father, the Son, and the Spirit.
The Son of God, even God Himself, was incarnated to be a man by the name of Jesus Christ.
Christ died on the cross for our sins, shedding His blood for our redemption.
Christ resurrected from among the dead on the third day.
Christ ascended to the right hand of God to be Lord of all.
Whenever any person repents to God and believes in the Lord Jesus Christ, he or she is regenerated (born again) and becomes a living member of the one Body of Christ.
Acts 20:21, John 3:3, Ephesians 1:22, Ephesians 1:23, Romans 12:5
Christ is coming again to receive His believers to Himself.


The Lingo Club at Eastmont Computing Center
Main Menu
Mission 1: Changing Sprite Properties.
Mission 2: If-then Decisions.
Mission 3: Creating Animation Cycles.
Mission 4: More If-Then Combinations.
--
©2000 John Henry Thompson.


Alexa Smith
Nulla metus metus ullamcorper vel tincidunt sed euismod nibh Quisque volutpat condimentum velit class aptent taciti sociosqu ad litora torquent per conubia nostra.
Ski & Snowboard School
The countdown to ski season has begun! So, it is high
time to i
Skiing and snowboarding still rank among the undisputed winter sport highlights for all ages and ability
levels.
The perfectly groomed ski slopes makes a real heaven for skiers and riders. Our professional ski and
snowboard
instructors can show you all the little details while improving your skiing techniques and riding
skills.
New to skiing?
Need a crew?
Wanna more?
Instructor
Instructor
Instructor
Instructor
We’re not saying Snow Mountain has special powers, but a lot of magical things do happen here. The slopes on Bald and Dollar mountains enjoy a nearly lift line–free existence all winter long, not to mention a nearly cloud-free one.
To those who wish to experience the best holiday time ever, we are excited to offer unlimited fun on the slopes, homey cosiness, wonderful views and snow activities. All this selection is presented in a great variety for any taste, age and skill. We are looking forward to seeing you in Snow Mountain ski resort at new season!
Nulla metus metus ullamcorper vel tincidunt sed euismod nibh Quisque volutpat condimentum velit class aptent taciti sociosqu ad litora torquent per conubia nostra.


Isar735.github.io
Because You’re Worthless: The Dark Side Of Indie. Here's my full essay for the 'positive or negative development' question that we've been looking at over the last few weeks. In some countries How to buy a car process essay, ap us history essay. Quality blog brings quality monitoring and changes mind of intelects.A small donation you may be interested.Visit Retrofuturism: The Car Designs of J Mays Brooke Hodge, C. Edson Armi on Amazon.com. FREE shipping on qualifying offers. The concept originator behind A planet of suburbs The Economist. A look at the process one undergoes when purchasing a car. This process includes determining what kind of car you want and can afford, which. IELTS Writing Task 2: 'positive or negative' essay - ielts. How to buy a car process essay - commit your task to us and we will do our best for you Instead of concerning about essay writing find the needed assistance. News Tribune Central MO Breaking.
Buy stuff Monster Hunter Nation. How to buy a car process essay. How to Make Wealth - Paul Graham. ASTRUD GILBERTO. HOME AG STORE BIOGRAPHY DISCOGRAPHY ESSAY INTERVIEW SCRAP BOOK ART MASCOTS. Animals, they need our help!!! SPECIAL NOTICE. On April 18, 2011 Astrud. Quotes, quotations, and sayings on materialism from living life fully. Retrofuturism: The Car Designs of J Mays: Brooke Hodge Your source for local news, sports, high school sports and weather in and around Jefferson City, Columbia, Fulton and the Lake of the Ozarks. All of Mid-Missouri. DEF CON® Hacking Conference - Speaker's Corner.
Buy essay online at professional essay writing service. Order custom research academic papers from the best trusted company. Just find a great help for students The best place to buy custom essays online, and how to order your own for colleges and universities. May 2004 When people care enough about something to do it well, those who do it best tend to be far better than everyone else. There's a huge gap between Leonardo. Buying A Safer Car Many people buy their automobiles based on their outward appearance rather than their inward. However, it is a business. IELTS Writing Task 2 Sample Answer
The Third Transportation Revolution – John Zimmer – Medium.
Here's the full essay that I wrote with my students for the question below. Some people think that strict punishments for driving offences Iron and the Soul - By Henry Rollins - RossTraining.com.
The Third Transportation Revolution Lyft’s Vision for the Next Ten Years and Beyond Introduction: A Country Built for Cars. I remember when I first. It's been many years since Henry Rollins had his essay Iron and the Soul published in Details magazine, but the message remains as clear The brief essay on this page, "Accounting for Taste," was written by James Gleick, former editor for the New York Times, lecturer at Princeton, and author of three. How To Buy A Car Process Essay. How to buy a car process essay Umbrella Brewing. The Death of the Moth, and Other Essays. IELTS Writing Task 2: 'road safety' essay - ielts-simon.com. May 2004 (This essay was originally published in Hackers Painters.) If you wanted to get rich, how would you do it? I think your best bet would be to start
Norges ledende nettavis med alltid oppdaterte nyheter innenfor innenriks, utenriks, sport og kultur. The Death of the Moth, and Other Essays, by Virginia Woolf, free ebook. Essay About Buying a Car - UK Essays UKEssays. The Purdue University Online Writing Lab serves writers from around the world and the Purdue University Writing Lab helps writers on Purdue's campus.
Turnitin provides instructors with the tools to prevent plagiarism, engage students in the writing process, and provide personalized feedback. FREE How to Buy A Car Essay - ExampleEssays. Buy custom essays online for all purposes. Montana's longest running web based business news portal, promoting Montana Business Montana Lifestyle since 2005. Utilize hashtags #mtbiz, #mttalent, #mtbenefits.
About a year and a half ago I found myself in the market for a car. I had moved from Baltimore to Austin car less. In Texas, I found it to be extremely. Research new and used cars including car prices, compare vehicles, get car buying advice and reviews at Automobiles.com. Buy essays that perfectly suit your requirements. Professional writers and lowest prices on the web! Constant discounts and guaranteed quality.
Articulations.—The triangular articulates with three bones: the lunate laterally, the pisiform in front, the hamate distally; and with the triangular. Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking. Please start selling action figures. Accounting for Taste - CommNet. Buying a car consists of a great deal of searching, researching and decision-making. Car hunting can be simple if the shopper is knowledgeable about.
Photo: Moissanite (left) vs. Diamond (right) during a brilliance/fire laboratory test. We employ our writers on conditions of delivering custom written papers. Your source for local news, sports, high school sports and weather in and around Jefferson City, Columbia, Fulton and the Lake of the Ozarks. The Economist offers. How to buy a car essay - How to buy a car process essay. Lost Highway Article - Premiere Sept. 96 - LynchNet.
Buy Essay Online Professional Academic Writers. II. Osteology. 6b. The Hand. 1. The Carpus. Gray, Henry. The Economist offers authoritative insight and opinion on international news, politics, business, finance, science, technology and the connections between. Essay about Steps For Buying A Car -- Process Essays. New Cars, Used Cars, Car Reviews, Pricing Automobiles.com. Process Essay On How To Buy a Car Free Essays.
IN WHICH NOVELIST David Foster Wallace VISITS THE SET OF DAVID LYNCH'S NEW MOVIE AND FINDS THE DIRECTOR BOTH grandly admirable Quotes and an essay on materialism--an obstacle to living.
Essays - largest database of quality sample essays and research papers on Process Essay Dissertation philosophie terminale s libert How To Buy A Car Process Essay cheap custom essays online money cant buy happiness thesis statement. How to buy a car process essay, essay of civil service. Preparing the CFP process each year is invigorating. It is a time for potential speakers to showcase their hard work, and it signifies that DEF CON is quickly. The IELTS writing task 2 sample answer below has examiner comments and is band score 9. The topic of social media is common and this IELTS essay question. Well, I suppose I should feel happy that I can say with certainty that the only time I ever contacted the developer was because their game was broken to some degree. Astrud Gilberto - Official Homepage.


WITNESS LIST Criminal Justice (Interim) Committee March 31, 1998-9:30A Interim Charge 2 On: Art Mosley (TDCJ), Huntsville Betty Davis (15:12 Foundation), Throckmorton David Smith (TX Tech), Lubbock Dee Kifowit (TCOMI), Austin Ellen Gallegos (TX Inamte Family Assc.), Houston Faith Knowlton (None), None Geneva King (None), Athens Genevieve Hearon (Capacity for Justice), Austin Hassan Adlaparvas (None), Houston James Laible (TX Tech), Lubbock Jason Calhoun (UTMB), Galveston Jim Lynaugh (Corr. Man. Health Care), Huntsville Jim Riley (Corr. Man. Health Care), Huntsville Joe Lovelace (TX All. for Mentally Il), Austin Linda Reeves (TX Inmate Family Assc.), Austin Lois Robison (TX CURE), Burleson Lynette Linthicum (TDCJ), Huntsville Mrs. J.C. Killingsworth (TX CURE), Crowley Patsy Cheyney (Capacity for Justice), Austin Rev. G.David Atkins (15:12 Foundation), Throckmorton Sandra Cook (None), Athens Vera Brabham (TX INmate Family Assc.), Houston Registering, but not testifying: On: Brad Livingston (TDCJ), Austin James Arens (UTMB), Galveston Jerry Sandlin (Michael Sandlin), Garland Mike Pugh (TDCJ), Huntsville Rochelle McKinney (TDCJ), Huntsville


Choose an equilibrium distribution function F0(x,vx) of the following form:
|
| (133) |
where ne0 is a constant which is chosen so that ne0 = nion. It is obvious that this initial condition corresponds to an equilibrium state. It is well-known that when vb > vt, this equilibrium is unstable to an instability called the two-stream instability, which destroys the equilibrium state. In practice, the numerical noise associated with the PIC method is usually large enough to provide the initial perturbation to make this instability grow up. Thus, to see the instability, we usually do not need to manually impose any perturbation to the equilibrium. Figure 11 plots the distribution of the electron makers in the phase space (x,v) at t = 0 and t = 17.5 in a full-f simulation. Every particle marker appears as a black dot on Figure 11. Note that, since this is a full-f simulation and the markers are loaded according to the initial distribution function, statistical weights of all the marker are equal to each other and remain constant during the time evolution. Therefore more markers means more real particles. And since every particle marker appears as a black dot on Figure 11, region with denser markers appears blacker. Thus the graphics in Figure 11 can be considered as contour plots of the distribution function with the brightness indicating the value (blacker meaning higher value).
to be continued.
My Fortran code solving the two-stream instability problem is in the directory /home/yj/project_new/pic_full-f/ of my computer.


Upscale Peruvian tapas & entrees, plus regional cocktails, presented in a warm, bustling room.
Phone:<PHONE_NUMBER> Address: 1314 NW Glisan St, Portland, OR 97209 Webpage: andinarestaurant.com


Are you interested in Music Production? If so, you are in the right place. This site is designed to prepare you on your musical journey. If you would like more info, please see About.
Go to top


{% load static %}
The Game Script Corpus
Full Scripts
Search
How To Use
About
{% block content %}{% endblock %}


| Author | Matthew Schinkel - borntechi.com, copyright © 2009, all rights reserved. |
| Adapted-by | |
| Compiler | >=2.4l |
This is library for creating an array that take up more then 256 bytes memory. Tested on 18F devices only.
Supports byte array with up to 2048 entries Supports word array with up to 1024 entries Supports dword array with up to 512 entries Creates an array named large_array_1 Use "alias new_array_name is large_array_1" to rename the array Small sample of how this lib was created at bottom of lib.
No dependency found
| 18f452 | 18f452_large_array.jal |
| 18f4525 | 18f4525_large_array.jal |
| 18f4550 | 18f4550_large_array.jal |
| 18f4620 | 18f4620_large_array.jal |
| 18f67j50 | 18f67j50_large_array.jal |


{% load static %}
|
Character Sheet
|
{% include "charsheet/sheet_parts/description.html" %} |
|
{% include "charsheet/sheet_parts/speed.html" %} {% include "charsheet/sheet_parts/skills.html" %} {% include "charsheet/sheet_parts/languages.html" %} |
{% include "charsheet/sheet_parts/AC_items.html" %}
|
{% include "charsheet/sheet_parts/spells.html" %} {% include "charsheet/sheet_parts/spells_known.html" %} |


A huge body of literature has been devoted to the analysis of the one-dimenional CGLE (See Aranson and Kramer, 2002 and references therein). Hence, this tutorial is confined to reviewing the most elementary behaviours. We begin with an analysis of plane wave solutions to the CGLE, where long-wave stability results are derived. These results are subsequently complemented by the graphical results of numerical simulations, illustrating the instability behaviour. Finally, a range of other behaviours observed in the one-dimensional CGLE are elucidated.


History
The company started May 25, 2015 with the four owners naming
Nida, Alex, Zando and Jeremy.
Four competitive students from the University of the Cordilleras. The big four have the same goals and
inception to engage in the field of business and have a similar perception that they will mold the future of technology in automotive. The company was successfully launched on March 19, 2015 the B.E.E.R.
Our road map starts with our mission which is enduring, it declares our purpose as a a company and serves as the standard against which we weigh our actions and decisions. We bring safety to automotive industry.
Our vision is to provide highest quality service to our customers in the sale and safety of their motor vehicles. We will operate professionally managed dealerships committed to be the leader in the market areas they serve. Additionaly, we will provide all our employees with the opportunity to receive above average compensation and opportunities for advancement within our organization. limited only be their ability and performance. In all instances, the highest level of integrity is to be maintained with customers, automobile manufacturers, and employees.


class BrandToggleVisibilityEvent extends BrandEvent
Class BrandToggleVisibilityEvent
Methods
|
__construct(Brand $brand = null)
|
from BrandEvent | |
| BrandEvent |
setBrand(Brand $brand)
|
from BrandEvent |
| Brand |
getBrand()
|
from BrandEvent |
| bool |
hasBrand()
check if brand exists |
from BrandEvent |
Details
in BrandEvent at line 30
public
__construct(Brand $brand = null)
in BrandEvent at line 39
public BrandEvent
setBrand(Brand $brand)
in BrandEvent at line 49
public Brand
getBrand()
in BrandEvent at line 59
public bool
hasBrand()
check if brand exists


Instructions for Presenters
These instructions are for presenters at the 10th IEEE Non-Volatile Memory Systems and Applications Symposium.
Presentations: Authors are required to record videos of their presentations and prepare their slide decks prior to the conference event. Videos and slide decks are due on Sunday, August 15, 2021 23:59 (AoE) and must be submitted via EasyChair.
- Authors must prepare a video of 20-25 minutes in length: This video will be played live for you by the NVMSA staff during the event at your designated talk time slot of the program and will be followed by a Q&A session that authors will answer live.
- Video Specifications: Please follow the below guidelines for preparing a video presentation of your accepted papers.
- MP4 file format with 1080p preferred
- 16:9 aspect ratio preferred
- 100MB max file size (Note: If the file size of your video is larger than 100MB, please contact us.)
- Clear audio (headphones and headsets are permitted)
- Fullscreen slides with a speaker’s webcam view as follows:
Note: Please ensure that the speaker’s webcam view must not cover/overlay any appropriate information on your slides. The webcam view can be placed on top right or bottom right of the slide.
- Slides Specifications
- Please upload the talk slides from the same video presentation that will be played during the event.
- Introduction slide at the beginning of your presentation that clearly lists the name of your paper and the authors.
- Closing slide to thank your audience and/or collaborators and list your contact information should you wish to receive follow-up questions from attendees.
- Please make sure to send a PDF format for your slide decks.
Submitting via EasyChair
When you are ready, please submit your presentation video and slide decks via easychair.

- In the page of My Submissions for NVMSA 2021, click on the magnifier icon to view your accepted submission.
- Select Add or update files on the right top corner.
- Select and upload your Video and Slides.
General Recording Tips
- Please ensure that the webcam inset of your own face does not obstruct any part of your slides. For example, if you place it at the top right, ensure that it doesn’t cover any part of any title on any slide.
- Ensure your surroundings are quiet, no background noise.
- Turn off any alerts on your computer, phone, etc. (e.g., use airplane mode).
- Avoid using a noisy keyboard, especially if the space-bar makes a distinct clicking sound. If you can’t use a quieter keyboard, use keys other than the space-bar (e.g., right or down arrow key); or advance your slides using the mouse.
- Finally, you and your co-authors should watch your own videos to ensure they look and sound good.
Recording Your Talk with Zoom
Authors may use any video conferencing software that is able to record a picture-in-picture screen-shared presentation. For example, here are the instructions for recording your presentation in the preferred NVMSA format using Zoom:
- Open the Zoom desktop application and select New Meeting.
- Select Join with computer audio if prompted. Please use headphones or a headset equipped with a microphone for high quality audio. Be sure you are unmuted.
- Open your presentation on your computer and maximize it so that it is in full screen mode.
- Click on the green Share Screen button on the bottom toolbar of Zoom.
- Select the screen containing your presentation. Leave "Share computer sound" and "Optimize Screen Share for Video Clip" unchecked. Click Share.
- Your video will automatically place itself in the top or bottom right-hand corner. We ask that you please click through your presentation slides with your video window in the top or bottom right corner to ensure that your webcam footage does not cover or obstruct any important information on your slides. If so, we ask that you please edit your slides with the top/bottom right-hand video footage view in mind.
- Hover your mouse over the "You are screen sharing" green bar so that the menu bar above appears. Select More.
- When you are ready to record your presentation, select Record from the dropdown menu.You may be given the choice to "Record on this computer" or "Record to the Cloud," please choose what fits best for you.
- When you have finished recording, hover your mouse over the "You are screen sharing" green bar so the menu appears again. Select More.
- From the drop-down menu, select Stop recording. You may also Pause recording if you are not finished and resume when you are ready.
- Your video will export once your meeting has ended. Select Stop Share to end your screen share.
- Select End>End Meeting for All in the bottom right corner of your Zoom meeting.
- Your video will now automatically convert and your computer may prompt you for access to the Documents folder to save your video. Click OK.
- Your video is now saved to your computer in the Documents folder. Be sure to review the footage of your presentation for any technical issues such as lapses in audio or lost webcam or slide footage. Please title your mp4 file as nvmsa2021_video_[lastname].mp4.
Zoom Tutorials
How to record locally on Zoom
How to screen share on Zoom
Video Conference Etiquette
Other Software Options
If you choose not to record your presentation using Zoom, presenters of the accepted papers can freely use any other video recording software but please ensure that your video uses:
- 16:9 aspect ratio
- the NVMSA preferred picture-in-picture format detailed above
- MP4 file format (.mp4)


Breaking: Jose Mourinho's Tottenham backroom staff confirmed
The Portuguese has added two names to his backroom team at Tottenham Hotspur
by Lee WilmotJose Mourinho has arrived at Tottenham to replace Mauricio Pochettino.
But one of the next questions has been who will join him and make up his backroom staff at Tottenham Hotspur Stadium.
And that has been confirmed, or at least two members have, by French club Lille.
Joao Sacramento and Nuno Santos, both members of Lille's technical staff, have joined Mourinho in N17 following talks between the two clubs.
Sacramento will become Mourinho's assistant head coach.
Sacramento is a Portuguese coach who has been assistant manager to Lille boss Christophe Galtier for almost three years. In his previous role, he served as a technical assistant to Leonardo Jardim and Claudio Ranieri at Monaco, where he became the manager of opposition analysis for the first team.
Before those two jobs in professional first team football, Sacramento spent time in Wales.
He worked in the scouting department and as an Under-15s assistant coach for Cardiff City, as well as an assistant coach at the University of Glamorgan and as a performance analyst for the Football Association of Wales, working under Gary Speed and Chris Coleman.
The other new recruits at Spurs will be fitness trainer Carlos Lalin, Giovanni Cerra who will join the analysis team and scout Ricardo Formoshino.


Home
Projects
Learn
About Me
Resume
Contact
William Brinkert's Blog Index
Devloper/Designer In Training
Blog Archive
Getting Started with Git and Github
Margins, Borders, and Padding
Arrays and Hashes
Diversity in Tech
An Enumerable Method
Intro to Class
Loops in Ruby and JavaScript
Intro to RegEx in Ruby


COPYCAT A film review by Christopher Null Copyright 1995 Christopher Null
Hot on the heels of SEVEN, another very unconventional thriller has arrived in theaters: COPYCAT, an equally creepy film with the thematic premise that there really are an awful lot of sick people out there.
Judging from COPYCAT, there's more of them than we're giving credit to. COPYCAT is the story of a serial killer apparently chasing psychologist Helen Hudson (Sigourney Weaver). The only problem is, some thirteen months earlier, another killer (Harry Connick, Jr.) almost got her, and the experience was enough for her to lock herself into her snazzy apartment for good. When killer #2 comes around, two detectives, M.J. (Holly Hunter) and Ruben (Dermot Mulroney) try to solve the mystery. This is a much more disturbing and difficult task than it first seems, entangling everyone in an intensely engaging plot full of surprises and "rule-breaking" twists.
The acting in COPYCAT is top-notch. Even the normally blas Mulroney seems to be remarkably cognizant of his surroundings and manages to bring his character to life. Weaver is typically good, nearly reprising her fabulous role in DEATH AND THE MAIDEN, but Hunter frequently steals the show from everyone. Connick is immensely disturbing in his small part, with which he obviously had a lot of fun; you won't hear his crooning the same again. Jon Amiel's direction is similarly good.
Unfortunately, much like SEVEN, COPYCAT has a number of *long* periods of expository drama at its beginning, plainly attempting to replicate the cool interaction among the characters in THE SILENCE OF THE LAMBS. This is where SEVEN and COPYCAT both failed: it's simply impossible to figure out why the killer is that interested in the heroes, or to become that enthralled with them ourselves. Luckily, by the time we hit 45 minutes, the almost painful suspense has far overtaken the sappy melodrama.
And that suspense is worth it. COPYCAT is well-paced and inevitably reaches a nail-biting conclusion that I wouldn't dare reveal. Not to mention, the film actually has the first really worthwhile denouement I've seen in years. Be sure to stick around until you see the credits roll.
RATING: ***1/2
\-------------------------------\ |* Unquestionably awful | |** Sub-par on many levels | |*** Average, hits and misses | |**** Good, memorable film | |***** Perfection | \-------------------------------\
-Christopher Null /<EMAIL_ADDRESS>-Movie Emporium (archives) / http://www.notes.tpoint.net/emporium/ -Contributing Editor, FEEDBACK / http://www.eden.com/~feedback -E-mail requests to join the movie review mailing list
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


Part 1: Putting the Database in the Cloud
This is the first part of a tutorial for installing the DevExpress MainDemo.Web to Amazon Web Services, but the same principles apply to any ASP.NET web application.
This part covers creating an Amazon RDS instance running SQL Server Express and connecting a (locally running) MainDemo to it.
At the time of writing the DevExpress version is 12.1.7.
Amazon Web Services
If you have not already done so, you will need to sign up with Amazon Web Services. There are costs associated with AWS, but the tutorial only uses very small cheap instances which cost as little as 2 cents per hour to run. Also, new customers get a load of hours for free as part of the AWS Free Usage Tier. See the AWS pricing for more information. Don’t forget to terminate your instances when you have finished.
AWS Toolkit
Amazon have made it all easy by providing a Visual Studio add-in.
Install the AWS Toolkit for Microsoft Visual Studio. If you haven’t used it before, then when you start a wizard it will ask you for your AWS fcredentials.
The Display Name is the a name you give to the AWS account you are using. I set mine to zerosharp. This is helpful when you have multiple AWS accounts. The Access Key and the Secret Key are both available on the security credentials page - you will have to click Show in order to display the secret key. You can leave the account number blank.
The database
Now let’s provision a new SQL Server Express database.
In Visual Studio, open the AWS Explorer (Ctrl+K,A
or in the View menu). You probably want to select a region near your physical location. I chose EU West (Ireland). Right-click on ‘Amazon RDS’ and select ‘Launch Instance’.
At the following screen, select SQL Server Express. Note that we could just as easily provision the Standard or Enterprise editions as well as a host of other database options.
Configure the settings for the connection. Choose an instance class of Micro which is fine for our needs. Note the Master User Name and the Master User Password will be needed when we modify the MainDemo’s connection string.
In this screen we configure settings for the port and security. In order to connect from our local MainDemo, you need to add the permission for the your CIDR route which will let you connect to the database from your local machine. It’s easy to add it to the default group later (via DB Security Groups).
Set the backup options to ‘No backups’. Nice to have the option though.
Review the options and click ‘Launch’.
The database instance will be available after a few minutes. You have to be patient here - there is not much feedback, just the yellow creating status. You can press ‘Refresh’ once in a while, but it’s likely to take up to 15 minutes. Eventually you should see a green created status.
Modify the MainDemo connection string
Open the MainDemo in Visual Studio. Open the web.config file and set the connection string to point to your Amazon RDS instance.
The ‘User ID’ and ‘Password’ should be the same as the ones you entered above. The address is available from the Visual Studio Properties window as ‘Endpoint’ when you select the DB Instance in the AWS Explorer.
My connection string looks like this:
<add name="ConnectionString" connectionString="User ID=zerosharp;Password=password;Pooling=false;Data Source=maindemo.c5uchpz3rigs.eu-west-1.rds.amazonaws.com;Initial Catalog=MainDemo_v12.1"/>
Run the MainDemo locally
Now run the MainDemo locally. When you get to the login page, login as Sam (no password). At this point, the MainDemo will connect to the Amazon RDS instance using the connection string we specified above and create the database (which takes at least 30 seconds on my machine). Afterwards the MainDemo will function as normal.
Next up
In the next post I explain how to publish the MainDemo application itself to an EC2 instance in the Amazon cloud.


Reports from the course
S01
Did you before know about the techniques Git, GitHub, Markdown and/or GitHub Pages?
I had worked in Github before, but mainly in the desktop version of it. So Git bash and all the commands were a bit new for me. Markdown and Github pages had I never worked with before. We have had a couple of courses where we used Git, and I have always found it a bit tricky and hard to manage. So hopefully this time it will be a different experience for me, considering I am using Git Bash.
Have you ever created websites before?
I have worked a bit with client and server in the course network applications so I know a bit about setting up a server. But i have never tried making a website or worked with websites before. So this will probably be a fun challenge working with some new languages.
Briefly explain your experience and knowledge of web application development.
As written above, I had some experience of web application development in a previous course. But other than that, this is pretty new for me. I know some stuff about it like Websockets and Restful APIs, but I have never worked with Visual Studio Code or anything like that before.
What is your TIL for this course section?
My TIL for this course section is mainly some new commands in Git Bash. I learned about the Github Pages aswell as some new commands in Git Bash such as tags. I also learned how to manage this program I am writing this in, Visual Studio Code. Other than that, I also learned about how to use links in the index.html to get to other html files.
S02
Have you any previous experience of HTML, CSS and/or JavaScript?
No I do not have any previous experience of any of these 3 languages. So hopefully I will master all of them during this course.
Explain the role of HTML, CSS and JavaScript in web development.
I can try to explain with an example: HTML: Human body comprising bones, it is the skeleton and flesh. CSS: This is the accessories like clothes, make-up and glasses. Things that makes you look extra good. JavaScript: Everything involving your movement, how you laugh and run for example. So basically you will need all of these three to work properly as a human being. And it works the same in web development. For example if you dont have JavaScript, you will have clothes and a body but you cannot do anything. And if you dont have CSS, you will not have any clothes or accessories, that is kind of wierd. And if you dont have HTML, your clothes and accessories are useless because you dont have a body to put them on.
Give a brief explanation of how the browser, the HTTP protocol and the web server interacts.
A browser communicates with the web server trough HTTP protocol. If a browser wants to return something to the web server, a picture for example, it makes a HTTP request to a web server. And then the server returns the request.
What is your TIL for this course section?
My TIL for this course section is: I learned how to work with pictures in visual studio code. I learned how change background color for my different pages on my web site. I also learned how to change fonts in my web site.
S03
Do you have any previous experience of client side Javascript?
I have never worked with javascript before, so therefore my experience with it is very minor. But I have worked with client and server side applications before, so therefore I know a bit about how to handle the client side.
Can you compare and relate the Javascript language to any other language you know?
Yes, I have almost only worked with Java before. And after working with JavaScript now it feels like the 2 languages are very similar. I understand most of the code and variables in JavaScript, so it seems like a good language to start working with after working in Java.
Describe how you worked with the coding exercise, what grade do you aim for and how did your code turn out to be?
I actually started this coding exercise with creating the duck. I coded a duck that move to the right when you click on it. I decided to start with this because I felt I needed more knowledge about the fetch-part before i could start working with it. When I had gathered some information regarding the fetch, I started by doing a table in my js-file. I had some struggles with the fetch part, but I looked at the code in examples and got some help from there. Because I hade some struggles with the fetch I only did the requirements for grade 3, but if I get some more time with it I will try to expand it.
What is your TIL for this course section?
First of all i learned how to make a movable object in javascript, using an eventlistener. I learned about the fetch command, which i had some issues with. And in the fetch-part I also learned how to create a HTML-table and style it. I also learned more about how json works.
S04
Tell me about your previous experience on node/npm or any equal programming tools.
I have very little experience in node and npm. I have never worked with it before so therefore I had some troubles understanding it at first.
How do you feel about working with JavaScript, Node and Express?
So far I have learned a lot in this course and it has been very nice working with JavaScript. Node and Express have I only worked with a little bit now in this section, but so far it has been pleaseant. And hopefully it will continue to run smooth in future sections.
Explain how you did take on the coding assignment, did you have a plan and did it work?
I started with doing the tasks before the actual coding exercise, installed Node and npm and got familiar with it. Then I completed the Express application with help from the example folder. Then it was time to make the lottery-game. I searched after some insipiration online and found some good tips and tricks before I started coding myself. This assignment went well and without any big issues.
What grade did you aim for and was it a difficult level?
I only did the requirements for grade 3. I started trying with the grade 4 requirements but decided not to proceed with it because it got to difficult for me. I felt that grade 3 was a pretty easy level considering you hade most of the code for it.
What is your TIL for this course section?
Considering I never worked with node and npm before thats one thing i learned. I also learned how to work with Express.
S05
How do you feel about PHP as a programming language?
It seems like a useful language to learn. Struggled a bit with it at first but now I am starting to understand it a bit more.
Can you compare PHP to other languages you know?
It is a bit similar to Java.
Describe how you took on the coding exercise, what grade did you aim for and are you satisfied with the result?
I started by looking at some of examples in the folders. I then customized the code in functions.php, config.php, and search.php to make it fit my agenda. I then went onto phpMyAdmin where I created my database. I then created a table person, where i inserted some different persons with ids, names and age. Then I created a auto incremented integer as primary key. Since I am not the best at databases, I settled for grade 3 in this section.
What is your TIL for this course section?
My TIL for this course section is the php language. I also learned to work in phpMyAdmin.
S06
What is your own opinion on popularity of programming languages and what are your thoughts of future popularity among programming languages?
What i believe is that the most popular programming languages are often the ones that have been around for a while. It is hard to create a new language and make it a popular programming language right away. For that to happen the language has to offer something incredible and new. So I believe that in the future the popular languages like C or Java will probably grow even more and be as popular as ever. And hopefully som new language with some new techniques has established as a very popular language.
What will be your own choice for selecting future programming languages?
That is a hard question to answer because I have not worked that much with different languages. So I will have to wait until I can know the answer to this for sure. I will adapt to whatever language my workplace uses the most. And I will probably work more with the front-end part of programming. So HTTP could be my choice for the future.
Do your own investigation on https://trends.google.com (Links to an external site.) to customize your own comparison on programming languages (or frameworks) and elaborate on the results.
I decided to compare PHP with JavaScript, and it turned out that these 2 languages has been pretty stable for the last 5 years. With JavaScript being the most popular of the 2 during these 5 years. And it looks like it will continue in that way, with JavaScript having a slightly positive curve, and PHP having a pretty neutral curve.
If you were to recommend a language/framework/technology to your potential employer and your next large project, what would it be and how would you “sell it”?
I would probably recommend JavaScript due to the fact that it is a popular and great language. So finding competent people for it would not be hard.
What is your TIL for this course section?
I had never used Google trend before so I learned that.
S07
Try to explain the platform .NET (C#, ASP.NET) to a skilled programmer, but newbie to this Microsoft technology.
It is basically a platform where you can build many different types of applications. You can use 3 different languages, C#, F# and Visual basic. You can create many different types of applications, for example for the web, mobile and desktop.
Elaborate by comparing .NET technologies with the other technologies we learned during the course.
Compared to php I feel like .net is more compatible with C#. It seems easier to learn and get going with .net then with php.
Describe how you took on the coding exercise, what grade did you aim for and are you satisfied with the result?
I aimed for grade 3 as usual. I started with downloading dotnet so I could get familiar with that. Then I used your lecture on youtube as an guide to get going with the assignment. And after that I got some assistant from other youtube videos aswell.
What is your TIL for this course section?
Dotnet is my TIL for this course section.
S08
Group members: Ville Torstensson, Felix Karlsson, Martin Rubin. Websites chosen: Aftonbladet, Expressen, Kristianstadbladet.
We chose these websites because they are very similiar in their content. So it will be interesting to compare them.
Findings and elaboration
The best of our three websites was definitely Expressen, it loaded the fastest, and performed best on almost every aspect. Aftonbladet was not very far behind, as it also was a quick and good website. Kristianstadbladet on the other hand, was not very close to the other two websites. It was a slow website compared to them. We used pagespeed to see the biggest problems of the websites and how to solve them. Aftonbladet had a quick site and could not improve that much. The biggest time-saver they could do is to eliminate render-blocking resources, and thereby save 1.07 seconds. They could also improve some image-problems. But overall they have a very quick site. Expressens website is excellent, their only time-saver would be to defer offscreen images. But other than that, their website runs very quick. Kristianstadbladet has some very bad statistics compared to Aftonbladet and Expressen. Their website runs significally slower and could save a lot of time on some issues. They could save 11.25 seconds on serving images in next-gen formats. And 10.92 seconds on defering offscreen images.
What is your TIL for this course section?
I learned how to compare and analyse different websites.
S09
Elaborate on a few (3-5) different security issues or concerns, from your own experience, related to web application security and relate them to the OWASP top ten.
When it comes to security issues the one thing im most concerned about is all the data websites are collecting about you these days. When you create a new account somewhere they store all of your information you entered by using cookies and other tools. If a database is hacked all of your personal information can be accessed. Another security issue is passwords. Nowadays people are signed up to a lot of different platforms, and most of us are probably using the same password for each platform. You need to make sure that your password contains a lot of different characters, otherwise hackers got algorithms that can breach your password in just a couple of hours. I change my password once in a while just to make sure I am not using the same password for too long. Another security risk could be if you are visiting some old site and they are not up to date with security protocols.
Summarize by providing your own guidelines to a new web programmer on the topic “The essential guidelines to follow to create secure web applications”.
Learn the OWASP top 10 and have them in mind while programming. Always be aware that security issues could be everywhere, you are never completely safe of them. When implementing code, try to always think about the security concerns.
What is your TIL for this course section?
I learned about what the biggest security issues are in web programming.
S10
Write a general paragraph about how the project was implemented. Problems / solutions / simple / difficult / fast / long time, etc. Was the project easy or difficult? Did it take a long time? What was difficult and what went easy? Was this a good and reasonable project for this course? How was it to work in a team?
The project was implemented using Visual Studio 2019. Our plan was to use .NET for this project, but after struggling with it for almost half of the project-time, we decided to switch to running it with node instead. Our main problem with .NET was connecting MySQL to it. And when we finally managed to connect it, we got null returns so we could not print out what we fetched. Then we decided to switch to a more familiar workplace, node.js, considering we hadn't worked that much with .NET. I worked mainly with the design of the website during the project. I had some difficulties with keeping everything centered and in the right proportions, but for the most time it went smooth. Considering this is our first project using HTML, JavaScript and css, it takes some time to get things the way you want to. I would say this project was of a good difficulty. As I said, this is our first project using these languages. So therefore you needed some time to figure out variables and different commands while you coded. But the project wasn't a huge one, so you still had the time you needed. And now when the project is finished, I feel like I learned a lot during the implementation and got more familiar with the languages. It worked out good working in a team, we split up the work right away, so that we all had some tasks to do. If one of us finished our tasks, we could help someone else having troubles.
Finish with a final paragraph with your thoughts on the course and what you think about the material and the guide (about 5-10 sentences). Provide feedback to teachers and suggest any improvement suggestions for upcoming course opportunities. Are you satisfied / dissatisfied? Will you recommend the course to your friends / colleagues? On a scale of 1-10, what grade do you give the course?
I think this course was overall a very good one. I learned a lot about web programming and had some fun during the way. I feel like the course almost covered to many things. We had both the assignments, project and an exam. I feel like it would have been enough to only have the assignments/project or the assignments/exam. So my feedback and suggestion for the teacher is to try to make the course a bit smaller. Either take away the project/exam completely, or make the assignments a bit smaller and easier or something. Other than that, I am satisfied with the course and the teacher and I would definitely recommend it. On a scale of 1-10, I give the course a 8.
What is your final TIL for this course?
My final TIL for this course is how to use flexbox in css.


INTRODUCTION
============
This is an nginx webserver for simple loadbalancer testing. It works well
for me but it might not have some of the features you want. If you would
like, please extend the code and send me the patch. The servers runs
nginx compiled with ngx_lua; its configration lies at
/usr/local/nginx/conf/nginx.conf. Ways to start it:
* kubectl create -f kube-contrib/nginx-app.yaml
* docker run -it -p 8082:80 bprashanth/nginxtest:1.0
ENDPOINTS
=========
hostname: An endpoint to query the hostname.
stress: An endpoint to stress the host.
fs: A file system for static content.
PROFILING
=========
You can stress this container via apache bench:
docker run jordi/ab ab -kc 10000 -n 10000 http://foo/images/nginx.jpg
This should produce results:
Concurrency Level: 1000
Time taken for tests: 30.131674 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Requests per second: 331.88 [#/sec] (mean)
Time per request: 3013.167 [ms] (mean)
Time per request: 3.013 [ms] (mean, across all concurrent requests)
One would typically replace foo/images/nginx.jpg with the stress endpoint
to simulate noisy neighbors. Eg:
docker run jordi/ab ab -kc 10000 -n 10000 http://foo/stress?cpu=1&w=3&bytes=100M&timeout=2
This will stress a single core with 3 workers each spinning on malloc
free of 100M for 2s. You should be able to observe this in the profile.
Note that the "size" arg may be suffixed with B,K,M,G (bytes), and you
almost always want to, because a stress test in bytes isn't much of a
stress test. However the timeout parameter is always in seconds. Do
not specify 1s, the trailing "s" will flip the profiling tool into
strictly secure mode.
FILESYSTEM
==========
Nginx will serve static content places anywhere under the /siteroot/fs
heirarchy. A cron job runs every minute generating index.html files for
subdirectories, so you can just place files and have them served via
http endpoints. This feature has only been lightly tested and is meant
to be used in conjunction with the profiling utilities to measure qps.
HOSTNAME
========
Writes the results of `hostname` into the http response. Obviously in
the case of a container/pod this will be a cryptic hash, not the node's
hostname. Meant for use in testing loadbalancing algorithms.
LIMITATIONS
===========
There's some fishy business going on with the TERM env var that sometimes
prevents top from working properly, so the profiling during a stress run
might not always work.


MetaCoin — Example Truffle Dapp
You have
loading...
META
Send MetaCoin
Amount:
To address:
Send MetaCoin
Hint:
open the browser developer console to view any errors and warnings.


Personal Ability Test
80% Completed
80% Completed
Q9. What is the correct syntax for referring to an external script called "xxx.js"?
<script src="xxx.js">
<script href="xxx.js">
<script name="xxx.js">


This is an experimental feature at this point. Please consult Rest.li team before using it.
Rest.li is the high performance platform on which web services operate at LinkedIn. As our company moved closer to the formal adoption of large unstructured blobs of data, such as media, we needed a highly performant way to move all this data around. Therefore it became apparent that we needed to perform an overhaul of our existing service-to-service architecture.
The goals of Rest.li attachment streaming therefore are the following:
Rest.li attachment streaming is inspired by the Reactive Streaming Manifesto
Therefore attachment streaming in Rest.li, from the bottom (R2) to the top, is based on the following:
In order to support attachment streaming, Rest.li leverages a different wire format then what traditional Rest.li traffic uses. This is for a number of reasons:
In order to satisfy these requirements, Rest.li makes use of
multipart/mime
as the streaming wire format. Therefore
Rest.li attachment streaming’s implementation is build upon the formal
adoption of the RFC.
Within multipart/mime
there are several mime
subtypes that can be chosen. Rest.li attachment streaming uses
multipart/related
as the value for the
Content-Type
header since the JSON/PSON payload will be the
first part in the mime envelope. A more detailed explanation as to the
justification of multipart/related
is explained
here.
For reference, here are examples of sample regular Rest.li payloads.
POST /widgets?action=purge HTTP/1.1
Content-Type: application/json
{
"reason": "spam",
"purgedByAdminId": 1
}
POST /widgets?ids=List(1,2) HTTP/1.1
Content-Type: application/json
X-RestLi-Method: BATCH_PARTIAL_UPDATE
{
"entities": {
"1": {"patch": { "$set": { "name":"Sam"}}},
"2": {"patch": { "$delete": ["name"]}}
}
}
Note that the current wire format described above will still be supported as there are no backward incompatible changes being made.
However for clients sending requests with attachments present or for servers responding with attachments, the wire protocol will change.
If attachments are present in either a request or a response, the
content type becomes multipart/related
. If a client can
handle attachments back from a server, then an accept type of
multipart/related
is also added to the Accept
header.
For example:
PUT /widgets?ids=List(1,2,3)
HTTP/1.1 X-RestLi-Method: BATCH_UPDATE
Content-Type: multipart/related; boundary=--km6cltxBQgkYRIwT8lAgFGfNV0AmQFwDB
Accept: multipart/related; application/json
--km6cltxBQgkYRIwT8lAgFGfNV0AmQFwDB
Content-Type: application/json
{
"entities": {
"1": {
"widgetName": "Trebuchet",
"myVideo": "cid:725c0319-b1f1-4b9c-b618-7ee9468870f0"
},
"2": {
"widgetName": "Gear",
"myVideo": "cid:a4d4133b-0546-4f7b-8104-ffdd644168c6"
}
"3": {
"widgetName": "Slider",
"myVideo": "cid:725c0319-b1f1-4b9c-b618-7ee9468870f0"
}
}
}
--km6cltxBQgkYRIwT8lAgFGfNV0AmQFwDB
Content-ID: <725c0319-b1f1-4b9c-b618-7ee9468870f0>
binary data…..
--km6cltxBQgkYRIwT8lAgFGfNV0AmQFwDB
Content-ID: <a4d4133b-0546-4f7b-8104-ffdd644168c6>
binary data…..
--km6cltxBQgkYRIwT8lAgFGfNV0AmQFwDB--
Note that the regular Rest.li payload becomes the first part in a
multipart/related
envelope. Each attachment then becomes
its own subsequent part separated by the multipart boundary. Since each
part in a multipart envelope can have its own headers, the
Content-Type
header from the regular payload now appears as
a header in the first part. Both JSON and PSON are supported as valid
Content-Types
for the first part.
Each part after the regular Rest.li payload represents a blob of data
attached to the request or response. Each attachment part has a
Content-ID
header which uniquely identifies that attachment
in the payload. References to this unique identifier should then be
placed as fields in the JSON (RecordTemplate backing) payload as
pointers to the blobs in the attachments. In this particular example we
have two attachments. Trebuchet
and Slider
both point to the same attachment while Gear
points to the
other attachment.
PDSC modeling is no different for streaming, with the exception of the following recommendation. This recommendation is simply to serve as a visual cue and does not impact the generated RecordTemplates or the processing of a streaming request or response.
Our recommendation is that anytime you have a field in a PDSC
referencing an attachment, that a key value pair of
"attachment":true
is present. This should further be
expanded to include documentation mentioning that this field represents
a pointer to an attachment. Once again it is important to note that the
purpose of these fields is simply to convey that an attachment could be
present.
{
"type" : "record",
"name" : "Greeting",
"namespace" : "com.linkedin.greetings.api",
"doc" : "A greeting",
"fields" : [
{
"name" : "id",
"type" : "long"
},
{
"name" : "content",
"type" : "string",
"attachment" : true,
"doc" : "Type 1 UUID representing a video attachment"
}
]
}
In terms of the actual data supplied at runtime we suggest using Type 1 UUIDs.
Technical Details on Type 1 UUIDs
The reason for suggesting Type 1 UUIDs is because it provides the best guarantee of producing a globally unique identifier. This is important since, as shown further below, attachments can be coalesced from different machines/services which may lead to an identifier collision.
In order to create an attachment, developers must implement the following interface(s):
/**
* Represents a custom data source that can serve as an attachment.
*/
public interface RestLiAttachmentDataSourceWriter extends Writer
{
/**
* Denotes a unique identifier for this attachment. It is recommended to choose
* identifiers with a high degree of uniqueness, such as Type 1 UUIDs.
* For most use cases there should be a corresponding String field in a PDSC
* to indicate affiliation.
*
* @return the {@link java.lang.String} representing this attachment.
*/
public String getAttachmentID();
}
You’ll notice this extends Writer
which is defined as the
following:
/**
* Writer is the producer of data for an EntityStream.
*/
public interface Writer
{
/**
* This is called when a Reader is set for the EntityStream.
*
* @param wh the handle to write data to the EntityStream.
*/
void onInit(final WriteHandle wh);
/**
* Invoked when it it possible to write data.
*
* This method will be invoked the first time as soon as data can be written to the WriteHandle.
* Subsequent invocations will only occur if a call to {@link WriteHandle#remaining()} has returned 0
* and it has since become possible to write data.
*/
void onWritePossible();
/**
* Invoked when the entity stream is aborted.
* Usually writer could do clean up to release any resource it has acquired.
*
* @param e the throwable that caused the entity stream to abort
*/
void onAbort(Throwable e);
}
The Writer
class leverages an interface called
WriteHandle
which is defined as follows:
/**
* This is the handle to write data to an EntityStream.
*/
public interface WriteHandle
{
/**
* This writes data into the EntityStream. This call may have no effect if the stream has been aborted
* @param data the data chunk to be written
* @throws java.lang.IllegalStateException if remaining capacity is 0, or done() or error() has been called
* @throws java.lang.IllegalStateException if called after done() or error() has been called
*/
void write(final ByteString data);
/**
* Signals that Writer has finished writing.
* This call has no effect if the stream has been aborted or done() or error() has been called
*/
void done();
/**
* Signals that the Writer has encountered an error.
* This call has no effect if the stream has been aborted or done() or error() has been called
* @param throwable the cause of the error.
*/
void error(final Throwable throwable);
/**
* Returns the remaining capacity in number of data chunks. Always returns 0 if the stream is aborted or
* finished with done() or error()
*
* @return the remaining capacity in number of data chunks
*/
int remaining();
}
These are the essential interfaces to keep in mind when defining an attachment as they represent how your custom data source will be asked to produce both the metadata as well as the raw bytes for your attachment.
When it is time for a RestLiAttachmentDataSourceWriter
to
produce data, it will first be invoked on
RestLiAttachmentDataSourceWriter\#getAttachmentID()
.
Implementations should return a unique identifier that should be the
same identifier placed in the strongly typed RecordTemplate
payload as described earlier.
Next, the attachment will be invoked on
onInit(WriteHandle)
. The provided WriteHandle
is the object that will be used to perform the actual writing of bytes
later, so implementations should save a reference to it.
Subsequently, at some point in time in the future, the attachment will
be invoked on Writer\#onWritePossible()
. It is at this
point that implementations should write raw bytes on
WriteHandle\#write(ByteString)
. The amount of times that
the writer may write will be based on what is returned from
WriteHandle\#remaining()
. Once the number of writes
remaining has been honored, then again at some time in the future, the
attachment will be invoked again on
Writer\#onWritePossible()
. Then the attachment simply
repeats the logic above. The Javadoc is clear about this behavior for
developers to follow.
The size of the chunk written is up to the developer but keep in mind
that the larger the chunks written, the more memory that may be used by
the application at any given time. Furthermore, in order to minimize
copies, developers should use
ByteString\#unsafeWrap(byte\[\])
to wrap byte arrays that
need to be written out.
Reading attachments is a multi-step callback driven process which allows
developers to asynchronously walk through each attachment. It begins
with a top level RestLiAttachmentReader
and a
SingleRestLiAttachmentReader
for each individual attachment
encountered. This applies whether a client is reading a server’s
response attachments or a server reading a client’s incoming request
attachments.
There are two callbacks involved, one for the
RestLiAttachmentReader
and one for the
SingleRestLiAttachmentReader
. The relevant interfaces are
as follows:
/**
* Used to register with {@link com.linkedin.restli.common.attachments.RestLiAttachmentReader} to asynchronously
* drive through the reading of multiple attachments.
*/
public interface RestLiAttachmentReaderCallback
{
/**
* Invoked (at some time in the future) upon a registration with a {@link RestLiAttachmentReader}.
* Also invoked when previous attachments are finished and new attachments are available.
*
* @param singleRestLiAttachmentReader the {@link RestLiAttachmentReader.SingleRestLiAttachmentReader}
* which can be used to walk through this attachment.
*/
public void onNewAttachment(RestLiAttachmentReader.SingleRestLiAttachmentReader singleRestLiAttachmentReader);
/**
* Invoked when this reader is finished which means all attachments have been consumed.
*/
public void onFinished();
/**
* Invoked as a result of calling {@link RestLiAttachmentReader#drainAllAttachments()}.
* This will be invoked at some time in the future when all the attachments in this reader have been drained.
*/
public void onDrainComplete();
/**
* Invoked when there was an error reading attachments.
*
* @param throwable the Throwable that caused this to happen.
*/
public void onStreamError(Throwable throwable);
}
/**
* Used to register with {@link com.linkedin.restli.common.attachments.RestLiAttachmentReader.SingleRestLiAttachmentReader}
* to asynchronously drive through the reading of a single attachment.
*/
public interface SingleRestLiAttachmentReaderCallback
{
/**
* Invoked when data is available to be read on the attachment.
*
* @param attachmentData the {@link com.linkedin.data.ByteString} representing the current window of attachment data.
*/
public void onAttachmentDataAvailable(ByteString attachmentData);
/**
* Invoked when the current attachment is finished being read.
*/
public void onFinished();
/**
* Invoked when the current attachment is finished being drained.
*/
public void onDrainComplete();
/**
* Invoked when there was an error reading the attachments.
*
* @param throwable the Throwable that caused this to happen.
*/
public void onAttachmentError(Throwable throwable);
}
The process begins by registering a callback of type
RestLiAttachmentReaderCallback
as shown above with the
provided RestLiAttachmentReader
. At some point in time in
the future, the RestLiAttachmentReaderCallback
will be
invoked on
RestLiAttachmentReaderCallback\#onNewAttachment(SingleRestLiAttachmentReader)
.
This SingleRestLiAttachmentReader
is what is used to
traverse through each individual attachment.
The process then continues for each attachment as developers must
register a SingleRestLiAttachmentReaderCallback
with the
provided SingleRestLiAttachmentReader
. Once registered, the
SingleRestLiAttachmentReader
can then be told to produce
attachment data via
SingleRestLiAttachmentReader\#requestAttachmentData()
. Once
this is invoked, at some point in time in the future, the
SingleRestLiAttachmentReaderCallback
will be invoked on
SingleRestLiAttachmentReaderCallback\#onAttachmentDataAvailable(ByteString)
representing the data for the reader to consume. Once the attachment
data is consumed, another call may be made to
SingleRestLiAttachmentReader\#requestAttachmentData()
thereby driving through all the data in that attachment.
Refer to the Javadocs provided for each class to obtain technical details as to how to use each API. Additional features, such as attachment draining and exception handling, are also described.
Rest.li streaming supports the ability to proxy attachments meaning that:
Here is an outline of what it may look like across multiple services:
Note how these big blobs of data move seamlessly between multiple services without any one service holding the entire blob in memory at once.
The APIs listed below in the client and server API sections highlight how to perform attachment chaining across multiple services.
The generated request builders have been augmented to allow developers to append attachments to outgoing requests. These APIs are:
1.
appendSingleAttachment(RestLiAttachmentDataSourceWriter)
to
append a single attachment or to proxy an incoming
SingleRestLiAttachmentReader
further downstream.
2. appendMultipleAttachments(RestLiDataSourceIterator)
to
append multiple attachments (as defined by the
RestLiDataSourceIterator
interface) or to proxy an incoming
RestLiAttachmentReader
further downstream.
Here is sample code on the client side on what attachment creation would look like when constructing a request:
...
final byte[] clientSuppliedBytes = "ClientSupplied".getBytes();
final GreetingWriter greetingAttachment = new GreetingWriter(ByteString.copy(clientSuppliedBytes));
final StreamingGreetingsCreateBuilder createBuilder = new StreamingGreetingsBuilders().create();
createBuilder.appendSingleAttachment(greetingAttachment);
final Greeting greeting = new Greeting().setMessage("A greeting with an attachment");
final Request<EmptyRecord> createRequest = createBuilder.input(greeting).build();
try
{
final Response<EmptyRecord> createResponse = getClient().sendRequest(createRequest).getResponse();
Assert.assertEquals(createResponse.getStatus(), 201);
}
catch (final RestLiResponseException responseException)
{
Assert.fail("We should not reach here!", responseException);
}
...
The implementation of GreetingWriter
has not been provided
but it is a trivial implementation of
RestLiAttachmentDataSourceWriter
.
By default the server will not send response attachments back unless a
client specifies it can handle them. To explicitly allow response
attachments to come back, developers will need to use
RestLiRequestOptions
as follows when constructing the
request builders:
...
final RestliRequestOptions defaultOptions =
new RestliRequestOptionsBuilder().setProtocolVersionOption(ProtocolVersionOption.USE_LATEST_IF_AVAILABLE)
.setAcceptResponseAttachments(true)
.build();
final StreamingGreetingsBuilders builders = new StreamingGreetingsBuilders(defaultOptions);
...
Without specifying this explicitly, a server will not be able to send
any attachments back. This is because by default the
Accept-Type
header will not include
multipart/related
as a valid accept type for the client to
handle.
Subsequently, in order for the client to access any response attachments
from the server, the Response
object has been augmented
with two new APIs, Response\#hasAttachments()
and
Response\#getAttachmentReader()
.
Clients should first see if the response has any attachments, and if so,
call getAttachmentReader()
to return the
RestLiAttachmentReader
to walk through all the attachment
data.
Even before assigning response attachments, the resource method should first check to see if the client can handle any response attachments. This is done via:
if (getContext().responseAttachmentsSupported())
{
//Client can handle response attachments
}
Since the server does not have response builders or any opposite
equivalent of the client side, resource methods must assign response
attachments using an instance of RestLiResponseAttachments
.
The APIs exposed by RestLiResponseAttachments
are very
similar to the client side request builders:
...
/**
* Append a {@link com.linkedin.restli.common.attachments.RestLiAttachmentDataSourceWriter} to be placed as an attachment.
*
* @param dataSource the data source to be added.
* @return the builder to continue building.
*/
public Builder appendSingleAttachment(final RestLiAttachmentDataSourceWriter dataSource)
{
AttachmentUtils.appendSingleAttachmentToBuilder(_responseAttachmentsBuilder, dataSource);
return this;
}
/**
* Append a {@link com.linkedin.restli.common.attachments.RestLiDataSourceIterator} to be used as a data source
* within the newly constructed attachment list. All the individual attachments produced from the
* {@link com.linkedin.restli.common.attachments.RestLiDataSourceIterator} will be chained and placed as attachments in the new
* attachment list.
*
* @param dataSourceIterator
* @return the builder to continue building.
*/
public Builder appendMultipleAttachments(final RestLiDataSourceIterator dataSourceIterator)
{
AttachmentUtils.appendMultipleAttachmentsToBuilder(_responseAttachmentsBuilder, dataSourceIterator);
return this;
}
...
Once this is created, the RestLiResponseAttachments
can be
assigned to the response via
ResourceContext\#setResponseAttachments
.
Here is a complete example on how a server might respond with attachments:
if (getContext().responseAttachmentsSupported())
{
final GreetingWriter greetingWriter = new GreetingWriter(ByteString.copy(greetingBytes));
final RestLiResponseAttachments streamingAttachments =
new RestLiResponseAttachments.Builder().appendSingleAttachment(greetingWriter).build();
getContext().setResponseAttachments(streamingAttachments);
callback.onSuccess(new Greeting().setMessage("Your greeting has an attachment since you were kind and "
+ "decided you wanted to read it!").setId(key));
}
Once again, the implementation of GreetingWriter
has not
been provided but it is a trivial implementation of
RestLiAttachmentDataSourceWriter
.
A resource method expresses that it can accept request attachments by
declaring RestLiAttachmentReader
as a parameter in it’s
method signature. This parameter must be accompanied by the presence of
a new annotation: RestLiAttachmentsParam
. Note that only
one parameter of this type can be declared and the
RestLiAttachmentsParam
cannot be used with any other
parameter type.
Here is an example of what a method signature may look like:
public void create(Greeting greeting, @CallbackParam Callback<CreateResponse> callback,
@RestLiAttachmentsParam RestLiAttachmentReader attachmentReader)
If the provided RestLiAttachmentReader
is not null, the
resource method may walk through it absorbing attachment data as
described earlier above.
It is important to note that attachments cannot be sent to the server
for that endpoint if the resource method does explicitly allow for them
via the parameter declaration shown above. Therefore:
1. If resource method asks for them and client sends them, then there
is no problem and this is completely normal.
2. If resource method asks for them and client does not send them, the
resource method will see null for the
RestLiAttachmentReader
.
3. If resource method does not ask for them and client sends them, a
bad request is sent back and the attachments are drained by the Rest.li
framework.
4. If resource method does not ask for them and client does not send
them, then there is no problem and this is completely normal.
Given that attachment streaming will be a new experience for Rest.li developers, we encourage all engineers to consider the following when writing their services:
InputStream
wrapper available that can
allow a user specified Java InputStream
to function as
a data source for a RestLiAttachmentDataSourceWriter
.
Although its use is discouraged since it is an async wrapper around
a synchronous library.Rest.li attachment streaming is built atop of a general purpose multipart/mime layer. This layer allows application developers to:
Please see source, tests and examples in the multipart-mime
module for more details.
LinkedIn will continue to improve and enhance the Rest.li streaming experience. We have plans for:
RestLiAttachmentReader
parameter on the server side to
the IDL and providing a request builder specifically targeted for
this parameter. This would require the compat checker to detect any
backward incompatible changes as well.


Hi all
Recently my emontx V2 stopped transmiting. After i connect it with the laptop, i've noticed that the problem is with the millis() function and the settled boolean variable.
The variable in the begining comes false, but in this line 'if (!settled && millis() > FILTERSETTLETIME) settled = true;' it becomes true.
The problem is that millis is always inferior to 5000 which is the value of FILTERSETTLETIME and so the settled is never true and so it never enters the code to send data to the base.
I've debuged the values of the censors and they come up with very strange values.
So, Can anyone tell me what is going on?
Thanks
Re: EmonTX , millis function and settled variable
The real problem is millis() is an unsigned long and it should go to 2^32 - 1, and then roll over to zero. So my first suspicion is your sketch is restarting before 5 s have elapsed. If your serial monitor prints
emonTX CT123 Voltage example
OpenEnergyMonitor.org
every time it transmits the data, then this is certainly what is happening, and that is wrong.
If you recompile with the latest emonLib, which uses a different (low pass) filter that is initialised to very near to its quiescent state, the requirement to wait for the filters to settle before transmitting the first results vanishes, and you can remove the variable "settled" and the conditional around the code that transmits the data.
e.g.
Re: EmonTX , millis function and settled variable
I'll give it a try
Re: EmonTX , millis function and settled variable
Well, it's not working. I've put the library .h file in the arduino folder and made the changes. Do i need to change the file emontx_lib.ino as well?
Why is it restarting? it's inside a loop..
The output is this
emonTX CT123 Voltage example
OpenEnergyMonitor.org
Node: 10 Freq: 433Mhz Network: 210
ap1: 5 rp1: 0 pf1:
I'm writing a series of Serial.print but it only prints the first 3....
Re: EmonTX , millis function and settled variable
Has this been running ok and then just stopped or is it a fresh/revised install?
Which sketch are you using, is it "stock" or had you made changes?
What power supply are you using? if battery are they ok? could the power be dipping on an attempted send causing a reset hence millis() is always <5000?
Which IDE and Libs are you using, there have been significant changes to the arduino IDE and a lot of bugfixes implemented in later versions so early (in frequently used and tested) sketches may need tinkering with to keep them current.
Is it using a rfm12 or rfm68?
Paul
Re: EmonTX , millis function and settled variable
It just stopped working. It was working fine.
I've made changes based on the emonTx_CT123 sketch.
The IDE is 1.0.5 r2. I've only changed the emonLib library and that was today.
I'm using a rfm12.
The strange thing is that i haven't changed anything but it looks like it's always resetting.
It's operating continuously for the past weeks. So i shouldn't be the software or the IDE. Or even the base. So it must be hardware?? maybe the ac-ac went puff??
I've attached the sketch i'm using.
The led on the board stays on and then blinks after about 10 seconds...
Thanks
Re: EmonTX , millis function and settled variable
I forgot to mention that i'm using a 5v transformer to power it.
And now, i've disconnected the ac-ac and the 5v transformer. It's powered by the laptop and the result is the same
Re: EmonTX , millis function and settled variable
Maybe some problem with the memory on board, if it has any...
Any reset switch on the board?
Re: EmonTX , millis function and settled variable
I see there is a watchdog in the setup but I cannot see a "wdt_reset();" in the loop so it will only run for 8secs max before being reset by the watchdog.
Paul
Re: EmonTX , millis function and settled variable
In the original sketch there isn't one either although there is a wdt_enable.
So should i put the wdt_reset or should i remove wdt_enable? and where should i put it?
Re: EmonTX , millis function and settled variable
In the emontx_lix sketch there is this code:
void emontx_sleep(int seconds) {
// if (emontx.battery > 3300) {
for (int i=0; i<seconds; i++) {
delay(1000);
if (UNO) wdt_reset();
}
// } else Sleepy::loseSomeTime(seconds*1000);
}
and the sleep function is called inside the if at the end of the code
Re: EmonTX , millis function and settled variable
The watchdog reset is hidden inside emontx_sleep()
Re: EmonTX , millis function and settled variable
Is the sketch definitely restarting every 8 s? Your answer was not clear. You said it prints 3 values, but you did not say what happens after that.
Re: EmonTX , millis function and settled variable
It is restarting after 8 seconds.
I've put some println around the code and now it doesn't print everything. It should print
Serial.begin(9600);
Serial.println("emonTX CT123 Voltage example");
Serial.println("OpenEnergyMonitor.org");
Serial.print("Node: ");
Serial.print(nodeID);
Serial.print(" Freq: ");
But now it only prints what is on the attach. It seems i can't do a copy from the serial monitor...
Re: EmonTX , millis function and settled variable
I can't see a major problem with your sketch. It runs for me without restarting, with or without an ac voltage input.
What I have done to tidy up the print statements - because the characters were corrupted - is add a delay after each pair, e.g:
Serial.print(" ap1: ");Serial.print(emontx.ap1);delay(10);
This is the result:
emonTX CT123 Voltage example
OpenEnergyMonitor.org
Node: 10 Freq: 433Mhz Network: 210
ap1: 2759 rp1: -2772 pf1: -100 ap2: -8092 rp2: -8092 pf2: -104 ap3: 2869 rp3: -2868 pf3: -99 Vrms: 22629
ap1: 2758 rp1: -2771 pf1: -100 ap2: -8104 rp2: -8104 pf2: -105 ap3: 2859 rp3: -2865 pf3: -100 Vrms: 22622
ap1: 2769 rp1: -2782 pf1: -100 ap2: -8126 rp2: -8126 pf2: -105 ap3: 2863 rp3: -2872 pf3: -100 Vrms: 22662
ap1: 2753 rp1: -2766 pf1: -100 ap2: -8084 rp2: -8084 pf2: -105 ap3: 2858 rp3: -2867 pf3: -100 Vrms: 22614
ap1: 2760 rp1: -2774 pf1: -100 ap2: -8103 rp2: -8103 pf2: -105 ap3: 2860 rp3: -2869 pf3: -100 Vrms: 22639
ap1: 2767 rp1: -2781 pf1: -100 ap2: -8118 rp2: -8118 pf2: -105 ap3: 2868 rp3: -2877 pf3: -100 Vrms: 22662
ap1: 2778 rp1: -2791 pf1: -100 ap2: -8125 rp2: -8125 pf2: -105 ap3: 2872 rp3: -2882 pf3: -100 Vrms: 22713
ap1: 2752 rp1: -2766 pf1: -100 ap2: -8088 rp2: -8088 pf2: -105 ap3: 2853 rp3: -2863 pf3: -100 Vrms: 22600
ap1: 2757 rp1: -2770 pf1: -100 ap2: -8087 rp2: -8087 pf2: -105 ap3: 2862 rp3: -2872 pf3: -100 Vrms: 22624
ap1: 2761 rp1: -2775 pf1: -100 ap2: -8109 rp2: -8109 pf2: -105 ap3: 2865 rp3: -2875 pf3: -100 Vrms: 22645
ap1: 2765 rp1: -2779 pf1: -100 ap2: -8117 rp2: -8117 pf2: -105 ap3: 2866 rp3: -2876 pf3: -100 Vrms: 22663
So I think there is something wrong with your hardware.
Re: EmonTX , millis function and settled variable
The 5v supply and the ac-ac should be ok, since i'm running from my laptop.
I'm going to check all the connections and see if something got loose.
Are there any specific checks i can make with a multimeter? Besides what's in the setup and build guide?
Re: EmonTX , millis function and settled variable
The first suspect is the power supply. Check the 5 V and 3.3 V supplies. Your V2 is nearing the age where a dry joint might have corroded enough to become intermittent, so (using a hand lens if needs be) carefully look at all the soldered connections. It could also be the electrolytic capacitor, but I think that's less likely. Also take a careful look at the processor's reset line, because the purpose of that is to cause a reset.
Re: EmonTX , millis function and settled variable
After some days working ok, i got the same problem. I've reconnected it to my pc and did some more tweaking. One thing i've put is a condition to check if the the variable CT1 is 1 or zero before defining the values for the calibration, etc.
Now it works ok, but i'm betting that in a few days it will revert to it's ill state.
I've changed the 5v usb transformer but it's the same thing.
Maybe the sensors get static electricity, or something else and it does a feedback to the board? It has happened that i remove the 5v power and put it back again and it goes ok.
What does work better, is to resend the code, sometimes with some changes.
Actually i have the board on my side and it has been ok. All of a sudden the led lights up and then starts blinking normal again. Looks like something did a reset on the board.
The 5v power is from a charger of a smartphone. Can it be the problem? Or maybe the board is heating up?
Re: EmonTX , millis function and settled variable
The first suspect is indeed the 5 V charger. Read this and you'll see why I suggest that as the first thing to check. You'll find very, very many posts if you search for "noise".
This "What does work better, is to resend the code, sometimes with some changes." doesn't make sense if it's worked for some time before you saw the fault. How long had your V2 worked before the problem appeared?
It could be static, what sensors do you have connected?
Re: EmonTX , millis function and settled variable
I assembled the V2 this year.
I have 3 sensors connected. One is the "normal" blue one. The other 2 are mini versions of that sensor.
Re: EmonTX , millis function and settled variable
"I assembled the V2 this year."
For how many weeks/months did it work correctly?
What are the sensors, current transformers, temperature, ac adapter for voltage? Can you list everything you have connected? Where are they all located in your house?
Re: EmonTX , millis function and settled variable
I can list, yes. It will take a little time though.
The board is fisicaly near the Panel along with the sensors.
Does that Java program/arduino sketch to analyse the 5v works with the emontx V2?
Re: EmonTX , millis function and settled variable
"Does that Java program/arduino sketch to analyse the 5v works with the emontx V2?"
Sorry, I don't know that. I have never needed to use it.
Re: EmonTX , millis function and settled variable
I've comented the line rf12_sendWait in emontx_lib and the problem seems to go away. If i enable it, it restarts after a few seconds.
This means the transmitter is at fault?
Thanks
Re: EmonTX , millis function and settled variable
That's weird. The purpose of that is to allow time for the transmitter to finish sending, putting the processor into low-power mode while it does so. It would need a very careful trawl through the JeeLib code to see exactly what is happening there. Is the message being transmitted - you seem to imply that it is.
Re: EmonTX , millis function and settled variable
something is sent but the base can't read them. It gives unreadable content
Re: EmonTX , millis function and settled variable
If it just stopped working, the sketch hangs waiting for the transmission to complete, and the base can't read the content (presumably because the transmission didn't complete) but it used to, and it's not bad soldering, then it is looking like your RFM12B has died.
What you can do about that is a whole new problem. Do you have access to, or know anyone who has a professional rework station? Because unsoldering and lifting that module without damaging the main PCB is almost impossible. If you search the web, I have seen a suggestion to make a soldering iron bit out of thick copper wire, bent so that you can melt all 16 joints at the same time. I can't say that I think it would be easy to do.
Re: EmonTX , millis function and settled variable
I wonder if this could be the same as meso's problem (http://openenergymonitor.org/emon/node/11977) only this time with the wdog enabled?
rjsc2000, does yours come good after a power-cycle (which seems to be the only way currently available to reset the RF module) or is it permanently stuck in the 8 second wdog reset even after you're power-cycled it?
Re: EmonTX , millis function and settled variable
Well, There were times when powering the board off and then on again would make everything normal, but after a few days or hours, it would return to the same problem. And there were times when it would stay the same.
This all started when i noticed nothing was being sent because the of the millis function (see first post). After that i've removed the if statement.
Re: EmonTX , millis function and settled variable
dBC:
This is a V2, but meso and today's http://openenergymonitor.org/emon/node/12089 are both V3 (and presumably RFM69s).
Re: EmonTX , millis function and settled variable
Hi again
I've checked the voltage in the RFM12B board while working and blinking as it should, and they looked fine. After a day or so running, it locked again. Every 8 seconds or so, the board would reset and start over. I think watchdog detected the lock up and reseted as it should be.
I tested the voltages on the rfm12b again and the voltage was lower than 3.3 and sometimes zero.
But the board itself was on top of a table without moving and without being touched.
Anyway i've desoldered it and will try to connect it in another board....
I guess i'll have to buy another one and see if it works....
Re: EmonTX , millis function and settled variable
In the shop there's the 868 version. Isn't there the 433 version?
Re: EmonTX , millis function and settled variable
By special request in the notes on the order...
Re: EmonTX , millis function and settled variable
I just saw that RFM69CW they sell in the store is compatible with RFM12B.
If i want to switch will there be any major problems/modifications ?
Thanks
Re: EmonTX , millis function and settled variable
You'll need to remove the RFM12B module, which could be tricky. Are you talking about your emonTx V2? It's surface-mounted and if you don't have the proper equipment to remove it, you could very easily destroy your main pcb. Then it's a matter of setting the appropriate compiler directive ("#define RF69_COMPAT 1") so that JeeLib includes the correct code, recompile and reload the sketch.
So the major problem is likely to be physically getting the RFM12B off the pcb.


--- layout: default ---
ABOUT
Hello there,
I'm Trevin Wong, and I'm a 3rd year Computer Science student currently attending UBC. I enjoy making and playing video games!
Unlike a lot of programmers, I never got into programming too much as a kid. I always thought "why program games when you can play them?"
However, ever since starting school, it's funny how I've slowly found myself on the other side. Instead of playing games, I mostly spend my time creating them. I think it's because as a gamer, having played a lot, I've always thought "what if something like this existed that I could play?"
And now that I have the ability to create those kinds of games, it's been really rewarding and addicting to do so. I hope you enjoy playing my games too.
If you'd like to check out my resume, you can click here to download it.


{{ with .Data.Authors }} {{ end }} {{ .Data.Hole.Name }}
Language
Compiled from
AT&T syntax to x86-64 Linux. Use
syscalls to write output.
{{ if eq .Data.Hole.ID "quine" }}
Implicit output is disabled for this hole.
Implicit output is disabled for this hole. Code must end with a newline.
Implicit output is disabled for this hole. Use Out-Host or
Write-Host for output.
{{ end }}
{{ range .Data.Langs }}{{ if .Experiment }}
{{ .Name }} is an experimental language, no solutions will be saved.
Please leave feedback on the
GitHub issue.
{{ end }}{{ end }}
{{ svg "default-layout" }} Default Layout
{{ svg "arrow-with-stroke-left-right" }} Wide
{{ svg "arrow-with-stroke-right-left" }} Narrow
{{ svg "downwards-arrow-to-bar" }} Add row


{% set page_title = tutorial.title %} {% extends "base.html" %} {% block content %}
| Speaker | Slides |
|---|---|
| Danqi Chen | Introduction & problem definition |
| Scott Yih | A history of open-domain (textual) QA |
| Scott Yih | Datasets & evaluation |
| Danqi Chen | Two-stage retriever-reader approaches |
| Danqi Chen | Dense retriever and end-to-end training |
| Danqi Chen | Retrieval-free approaches |
| Scott Yih | Open-domain QA using KBs and text |
| Scott Yih | Open problems and future directions |


§463-14 Contingent fee. Compensation for services of detectives or guards shall not be based upon promissory notes or property other than that allegedly stolen which have been obtained from suspects or others in their behalf as restitution. [L 1961, c 77, pt of §1; Supp, §165A-14; HRS §463-14]