| AQI |
Air Pollution Level |
Health Implications |
Cautionary Statement (for PM2.5) |
| 0-50 |
Good |
Air quality is considered satisfactory, and air pollution poses little or no risk |
None |
| 51-100 |
Moderate |
Air quality is acceptable; however, for some pollutants there may be a moderate health concern for a
very small number of people who are unusually sensitive to air pollution.
|
Active children and adults, and people with respiratory disease, such as asthma, should limit
prolonged outdoor exertion.
|
| 101-150 |
Unhealthy for Sensitive Groups |
Members of sensitive groups may experience health effects. The general public is not likely to be
affected.
|
Active children and adults, and people with respiratory disease, such as asthma, should limit
prolonged outdoor exertion.
|
| 151-200 |
Unhealthy |
Everyone may begin to experience health effects; members of sensitive groups may experience more
serious health effects.
|
Active children and adults, and people with respiratory disease, such as asthma, should avoid
prolonged outdoor exertion; everyone else, especially children, should limit prolonged outdoor
exertion.
|
| 201-300 |
Very Unhealthy |
Health warnings of emergency conditions. The entire population is more likely to be affected. |
Active children and adults, and people with respiratory disease, such as asthma, should avoid
prolonged outdoor exertion; everyone else, especially children, should limit prolonged outdoor
exertion.
|
| 300+ |
Hazardous |
Health alert: everyone may experience more serious health effects. |
Everyone should avoid all outdoor exertion. |


HIV-1 LTR activity in human CD40-activated B lymphocytes is dependent on NF-kappaB.
Abstract
CD40-stimulated human B lymphocytes are highly permissive to a productive infection by the human immunodeficiency virus type 1. In these cells, nuclear factors involved in activation of the HIV-1 LTR, which contains the transcriptional control elements of the virus, are unknown. Transient expression assays with plasmids containing deleted parts of the LTR region linked to a reporter gene showed that the NF-kappaB binding site was essential for HIV-1 LTR activity in CD40-stimulated B lymphocytes. In addition, electrophoretic mobility shift and supershift assays revealed that important NF-kappaB binding activity composed of at least p50, p65, and c-Rel NF-kappaB subunits was present in nuclei of CD40-stimulated B cells. These results confirm at a molecular level the ability of HIV-1 to replicate in B cells and that this activity is strongly associated with NF-kappaB.


At the age of 24, Florence told to her parents that she wanted to become a nurse. For the rich ladies of that time, something like that was unthinkable, which was understandable considering unsanitary conditions in hospitals of that time (operations were even performed without the use of anaesthetics!). Moreover, nurses were considered to be the women of questionable morals. Despite her parents’ objections, she visited several hospitals and health institutions. Finally, she managed to obtain her parents’ permission to enrole at a German nursing school for women in Kaiserwerth.
In the early 1850s Florence returned to London where she started a job in the hospital for Sick Gentlewomen in Distressed Circumstances. Shortly her outstanding performance draw the attention of her employer and Nightingale was promoted to superintendant, which was a very challenging position, but at the same time it provided her with the opportunity to implement her own ideas in running the institution.
The Crimean War
Nightingale’s most prominent contribution during her life was certainly in the Crimean war, which broke out in October 1853.
The hospitals at the Crimea were in appalling and unsanitary conditions at the time of the war. Having no stationary female nurses made the whole situation worse, resulting in inadequate medical care for the wounded/sick soldiers and horrible sanitary conditions.
One year after the war started, in October 1854, Florence gathered 38 women volunteer nurses that she personally trained and sailed with them to the Crimea, to help thousands of soldiers who were fighting for their lives. When Nightingale arrived at Scutari, the British base hospital in Constantinople, the image she saw was horrifying - more soldiers were dying from infectious diseases that were the result of inappropriate sanitation than from actual injures obtained in the battlefield.
Besides all the hard work she took on the improving the sanitary conditions of the hospital, she put all her efforts in improving the quality of patients’ stay in the hospital as well. She established a laundry service so that patients could have clean sheets all the time, and she made sure that patients with special dietary requirements would get appropriate food. Moreover, she considered entertainment and intellectual activities equally important for well being of patients, so she introduced classrooms and a library at the hospital.
While she was checking up on patients during the night, she used to walk down the long hallways of the hospital carrying the lamp in her hand, and would approach every single patient to make sure everyone is doing well. That’s how she obtained her nickname The Lady With the Lamp.
Since she obtained an excellent formal education in mathematics, Nightingale calculated the incidence of deaths in the military which could be prevented by improving sanitary conditions. During her work at Scutari hospital, she developed the Polar-Area Diagram to present her results, which later evolved to the pie chart extensively used nowadays. This remarkable approach at the time was actually a pioneer work in the area of measuring particular social phenomena and subjecting it to mathematical analysis.
According to the official statistics, during her year and a half long stay at Scutari, the hospital’s death rate was reduced by two-thirds.
Later achievements
After she returned to England, Nightingale was rewarded by queen Victoria with $250,000 for her amazing contributions and with special engraved brooch which became known as the “Nightingale Jewel”. She used the money to establish St. Thomas’ Hospital, and the Nightingale Training School for Nurses. She was the first woman to be awarded with the Order of Merit in 1907. She died in August 1910, in London, England.
Nightingale’s most prominent contributions by which she is remembered are certainly for being a pioneer of nursing and for introducing reforms in hospital sanitation methods. With her outstanding work, the perception of nursing profession has changed, which started to gain more respect and appreciation.
References
http://www.notablebiographies.com/Mo-Ni/Nightingale-Florence.html https://www.agnesscott.edu/lriddle/women/nitegale.htm https://www.history.com/topics/womens-history/florence-nightingale https://www.biography.com/people/florence-nightingale-9423539 https://en.wikipedia.org/wiki/Florence_Nightingale https://www.agnesscott.edu/lriddle/women/nightpiechart.htm
This page is synchronized from the post: SteemSTEM & Utopian.io Meetup in Italy - a window on Florence Nightingale, aka the Lady with the Lamp


{% extends 'pools/base.html' %} {% load crispy_forms_tags %} {% load pools_tags %} {% load lanes_tags %} {% block sidebar_content %} {% lanes_list pool %} {% endblock %} {% block content %}
Find lanes with periods in which these lanes can be reserved for the given number of minutes. For example, you may wish to reserve a lane for 60 minutes on the weekend.
{% crispy form %}


{% include team.html
avatar="burung.png"
name="Burung Hantu"
role="Founder"
bio="I founded PrivacyTools in 2015 to share resources and tools, allowing users to avoid international mass-surveillance programs."
<EMAIL_ADDRESS>keys="https://keybase.io/privacytools"
mastodon="https://social.privacytools.io/@BurungHantu"
twitter="privacytoolsIO"
%}
{% include team.html
avatar="jonah.png"
name="Jonah Aragon"
nick="Jonah"
role="Administrator"
bio="I run the website and services for PrivacyTools. My goal is to spread the word about data privacy as widely as possible."
<EMAIL_ADDRESS>website="https://www.jonaharagon.com"
keys="https://keybase.io/jonaharagon"
mastodon="https://social.privacytools.io/@jonah"
twitter="JonahAragon"
blog="jonah"
%}
{% include team.html
avatar="blacklight447.png"
name="Niek de Wilde"
bio="I research new privacy recommendations and moderate our communities. My expertise is endpoint security and networking."
role="Editor-in-chief"
<EMAIL_ADDRESS>mastodon="https://social.privacytools.io/@blacklight447"
blog="blacklight447"
%}
{% include team.html
avatar="danarel.png"
name="Dan Arel"
role="Blogging & Education"
bio="I'm an author, columnist, and privacy advocate whose work has appeared in Time, Huff Post, OpenSource, and more."
website="https://danarel.com"
<EMAIL_ADDRESS>keys="https://www.danarel.com/keys/"
twitter="danarel"
mastodon="https://mastodon.technology/@danarel"
blog="danarel"
%}
{% include team.html
avatar="dawid.svg"
name="Dawid Potocki"
role="Developer"
bio="I'm a student interested in software development. I help improve PrivacyTools and promote using free libre software."
website="https://dawidpotocki.com"
email="https://dawidpotocki.com/accounts/#email"
keys="https://dawidpotocki.com/accounts/#pgp"
mastodon="https://social.privacytools.io/@dawidpotocki"
blog="dawidpotocki"
%}
{% include team.html
avatar="dngray.png"
name="dngray"
nick="Daniel Gray"
bio="I liaise with and research privacy-focused services to refine our recommendations. My background is infosec and network security."
website="https://dngray.netlify.com"
email="https://dngray.netlify.com/email"
keys="https://keybase.io/dngray"
mastodon="https://social.privacytools.io/@dngray"
%}
{% include team.html
avatar="nitrohorse.png"
name="Andreas Basurto"
nick="nitrohorse"
role="Developer"
bio="I'm a privacy advocate and software developer. I write web extensions, help research, and make updates to the site."
website="https://nitrohorse.com/"
<EMAIL_ADDRESS>keys="https://nitrohorse.com/keys"
mastodon="https://nitro.horse/@andreas"
blog="nitrohorse"
%}
{% include team.html
avatar="trai_dep.png"
name="trai_dep"
role="Subreddit Mod"
bio="I'm the moderator at r/Privacy and r/privacytoolsIO. Day to day, I am also – irony alert – an (ethical) digital marketer."
<EMAIL_ADDRESS>website="https://www.reddit.com/user/trai_dep"
%}
Of course, we couldn't do any of this without our very generous financial contributors, website contributors, and the countless community members that help share new ideas and spread the word! Thank you.
{% include team.html
name="Mikaela Suomalainen"
website="https://mikaela.info/"
keys="https://gitea.blesmrt.net/mikaela/shell-things/src/branch/master/.mikaela/keys"
emeritus=true
%}
Contact Us
It's very important to us to stay up-to-date on the latest changes in the privacy space. If you have a software recommendation for us, or want to request a change on this website, please don't hesitate to reach out in one of the following ways.
For complete transparency, software and providers will only be considered for this website after discussions take place on our GitHub issue tracker. We of course don't make any changes in secret.
Join our Matrix room at #general:privacytools.io or join the privacytools_io Keybase team to chat with us and other members about this site and privacy in general! If you need a Matrix account, you can sign up with our own homeserver (https://chat.privacytools.io) using Riot.


There's nothing really particular interesting about me.
I am a hobbyist coder and I also design for projects that I found interesting or for my own. I usually do most of the Open Source work on my free time.
Currently, I'm working on some projects, some of them are listed below, however, I'm keeping some things under wraps, which involves streaming, and the like. Stay tuned for that!
ayane@duck.com


Alex Sanford's ePortfolio
University of Pittsburgh MLIS Program
Home
Resume
Thoreau Chapter
Trollope Chapter
First Version
Second Version
Writing Samples
Digital Humanities Briefing Paper (LIS 2771)
Information Literacy Reflection Paper (LIS 2000)
Metadata for Images in XML Standard (LIS 2407)
Metadata Final (LIS 2407)


Home
Profile
Messages
Home page
Welcome to the website!
Learn more
Profile page
Profile information
Messages
Some messages


Why do they fit so well into the Post-Fordist narrative
We have witnessed a significant shift to the service sector in the Post-Fordist economy. Maybe some of these services were offered in Industrial or Barter economy too, but not monetized. One such service is that of social media influencers. We’ve had such influencers in the past/offline - barbers telling us about a new shampoo, discussions on politics with auto-wallah. People have been influencing the choices we make, whether we like it or not. Today, influencers target the social media space. Let’s explore how this service fits into Post-Fordist conditions.
Decentralized.  They could be working for more than one company, which could be from any part of the world. They are not aware of the inner proceedings of the company - they just have contact with the PR department. This shows the globalized nature of such jobs. It is also evident that this job is at the periphery of the company and very unstable. Hence, influencers tend to have other sources of income.
Variety. You can either post a text or a visual, or simply send a personal message to users. The job is very flexible. The pay depends on the number of followers you have or other metrics of influence (say, clout score). A person with 1 lakh followers might demand Rs.5000 per tweet, while a meager Rs.100 would fetch you bulk tweets from 500 odd follower accounts. The job can either be to endorse something (product, politician, agenda), or it can be to hurl bulk abuses at other users. There is just so much variability in the job - the essence of the Post-Fordist economy.
Surveillance. The PR team of a company keeps a check on your activity, and whether you have met the deadlines. It is very easy to catch a mistake - you’ll be penalized if the tweet count is not met, or if the tweets did not receive enough engagement. Statistics of how the influencer has worked are easily available and can be used to recruit better people or improve current engagement levels.
Quality Circles. We often get influenced when we see someone getting influenced. This can be understood via the cascading behavior of humans. To leverage this, companies have started to promote conservations between influencers in social media space, wherein one of them pretends to get influenced by the other. A set of influencers assigned to a particular agenda would form a quality circle, thereby ensuring various hashtags are equally propelled forward.
Thus, social media is not just about likes, shares, and comments. You can make money too - all you need is a keyboard and some (dim)wit!
The article was prepared using the Distill Template
I wrote this article as a part of the course SOC473: New Media Theory by Prof. Jillet Sarah Sam
If you see mistakes or want to suggest changes, please contact me


The National Science Foundation & Rochester Institute of Technology
Research Experience for Undergraduates in
Computational Sensing
Frequently Asked Questions
Can I apply to the program if I hold a "green card"?
Yes, the program is open to U.S. citizens and permanent residents. On the application form, you will be required to submit your alien registration number.
Can I apply to the program if I am a high school student?
High school graduates who have been accepted at an undergraduate institution but who have not yet started their undergraduate study are eligible to participate.
Can I apply to the program if I am a graduate student?
No, Computational Sensing is a research opportunity for undergraduates, and we accept applications from current first-years through seniors.
How will my references be contacted?
When you enter your reference email addresses in the application, your reference writers will be contacted by email about how to submit your reference letter.
Can Rochester Institute of Technology students apply?
Yes, the REU computational sensing program is open to students from RIT, too.
Is this a paid position?
Yes, the participants will receive a $5,000 stipend as well as coverage of the costs for travel to Rochester, New York, and a housing allowance.
Whom can I contact with questions?
Please email Cecilia Ovesdotter Alm or Reynold Bailey if you have any other questions.


Добро пожаловать на DragonProject
Сейчас играет 0 на mc.dragonproject.tk:25565
Присоединяйся к серверу и будь первым!
Сейчас играет 0 на mc.dragonproject.tk:25565
Присоединяйся к серверу и будь первым!
MyServer has been around for over 2 years now. What started off as a small community minecraft server has developed into something we couldn't even imagine.
The MyServer staff team are friendly, dedicated, and always online to help everything run smoothly. Have any questions? Make sure to do /staff ingame to reach out!
We have Factions, KitPvP, and SkyBlock on our network, all with fully custom builds and useful perks and features. Join today at play.myserver.com!
Skyblock is a gamemode where you start on a floating island with minimal resources. Compete with others or join them and jump to the top of the leaderboards!  It takes perseverance, dedication, and effort to get to the top!
Factions is a popular team-based, pvp orientated gamemode where you claim land, build a base with your friends, and raid other factions. We have several awesome features such as custom enchantments and a handy shop GUI. Compete with other factions and strive to become the top faction, winning a free store coupon, today!
KitPvP is a competitive, fast-paced gamemode packed with players! Chose your kit and join the race to the top of the leaderboard. Explore our custom map and test your skills on parkour in secret rooms. Whether you are an archer, gladiator or tactician there is a kit for you. Join the fight today on MyServer!
We just released MyServer 2.0!
And it went extremely well. We couldn't be more proud to run MyServer. We hit over 800 players, a new record for the server, and the staff worked in overdrive to catch hackers, doing an amazing job. In fact, just on that Saturday, 36 hackers were permanently banned from our network.
New maps, new staff members, new plugins; the server has been reinvented. With this new update, SkyBlock especially has a new (fully custom) PvP map which can hold about 500 players. As well as that, we added...
Read More


WARNING: GSF has its own Classpath copy of the Java one, slightly renamed and in a different package. However, in NetBeans 6.5, the Java Classpath module has been moved from the java cluster into the IDE cluster and should be generic. I plan to retrofit GSF to use the standard Classpath package as soon as possible.
NOTE 2: The class path and project integration aspects of GSF are really half baked at this point. It works, but it's not pretty, and this is an area that I know will need to change and I plan to do something about it.
The GSF classpath API sits in its own module and its own package: gsfpath.api
.
It's a pretty small API. All it boils down to this this: For each project type
(Ruby Project, Web Project for JavaScript, Groovy project for Groovy, etc.) you have
to tell GSF where your sources are. The way you do this is to register a
"project open hook", a callback provided by the project system which will call custom
code after the project is opened. In the project open hook, you register a series
of directories with GSF. That's really the gist of it.
Unfortunately, it's not the 3 lines it sounds like. What you actually have to register are "Classpath" objects, one for each source root, and one for each library. A classpath has both a directory/url, as well as a "type", such as "SOURCE" or "BOOT". A "SOURCE" classpath is exactly what you expect - it's a root directory for sources in your project. "BOOT" on the other hand designates a library. As explained in the indexing document, these can be treated differently by the code. Some features may only want to search local project sources, and so on.
What you end up doing is something like the following (I will use the Rails project as an example):
open
hook, register your class path
with the global path registry, like this:
ClassPathProviderImpl cpProvider = getLookup().lookup(ClassPathProviderImpl.class); GlobalPathRegistry.getDefault().register(ClassPath.BOOT, cpProvider.getProjectClassPaths(ClassPath.BOOT)); GlobalPathRegistry.getDefault().register(ClassPath.SOURCE, cpProvider.getProjectClassPaths(ClassPath.SOURCE));
close
hook, unregister the paths:
ClassPathProviderImpl cpProvider = getLookup().lookup(ClassPathProviderImpl.class); GlobalPathRegistry.getDefault().unregister(ClassPath.BOOT, cpProvider.getProjectClassPaths(ClassPath.BOOT)); GlobalPathRegistry.getDefault().unregister(ClassPath.SOURCE, cpProvider.getProjectClassPaths(ClassPath.SOURCE));
ClasspathProvider
.
Take a look at the one in the Rails project, or the Web project (web.project
), etc.
It's not rocket science. You just have to do whatever it takes for the specific project type
to look up the source roots, decide whether all of these are relevant for your file type
(for example, in Web projects, I only register the web folder for JavaScript, not the src folder
which just contains Java code) and then produce classpath implementation objects for these.
There are utility methods to help.
As I warned in the red box above, this will probably change soon.


| Place | Team | Average Score | Average Beacons | Average Resources |
|---|---|---|---|---|
| 1 | Passive Flag Collector 3 ships | 16.8 | 20.0 | 19221.0 |
| 2 | Passive Flag Collector 2 ships | 13.8 | 11.0 | 7738.0 |
| 3 | Aggressive Flag Collector 3 ships | 11.266666666666667 | 17.0 | 11772.0 |
| 4 | Aggressive Flag Collector 2 ships | 5.2 | 6.0 | 342.0 |
| 5 | Random Client | 0.0 | 1.0 | 79.0 |


PHP-CS-Fixer
Automatic coding style fixer for PHP.
More information: home page
- Execute code style fixing in the current directory:
php-cs-fixer fix
- Execute code style fixing for a specific directory:
php-cs-fixer fix path/to/directory
- Execute code style linting without applying changes:
php-cs-fixer fix --dry-run
- Execute code style fixes using specific rules:
php-cs-fixer fix --rules=rules
- Display the rules that have been applied:
php-cs-fixer fix --verbose
- Output the results in a different format:
php-cs-fixer fix --format=txt|json|xml|checkstyle|junit|gitlab
- Display files that require fixing:
php-cs-fixer list-files
- Describe a rule or ruleset:
php-cs-fixer describe rule


Stuff
Student, Hacker, Certified Dumbass.
Learn more
Jello!
I am qualk, I'm a linux enthusiast.
Don't ask why I have a website.
Stuff


Plato on Github
Report Home
src\ng\directive\ngEventDirs.js
Maintainability
80.59
Lines of code
77
Difficulty
11.74
Estimated Errors
0.21
Function weight
By Complexity
By SLOC
'use strict'; /** * @ngdoc directive * @name ngClick * * @description * The ngClick directive allows you to specify custom behavior when * an element is clicked. * * @element ANY * @priority 0 * @param {expression} ngClick {@link guide/expression Expression} to evaluate upon * click. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example> <file name="index.html"> <button ng-click="count = count + 1" ng-init="count=0"> Increment </button>  count: {{count}}  </file> <file name="protractor.js" type="protractor"> it('should check ng-click', function() { expect(element(by.binding('count')).getText()).toMatch('0'); element(by.css('button')).click(); expect(element(by.binding('count')).getText()).toMatch('1'); }); </file> </example> */ /* * A collection of directives that allows creation of custom event handlers that are defined as * angular expressions and are compiled and executed within the current scope. */ var ngEventDirectives = {}; // For events that might fire synchronously during DOM manipulation // we need to execute their event handlers asynchronously using $evalAsync, // so that they are not executed in an inconsistent state. var forceAsyncEvents = { 'blur': true, 'focus': true }; forEach( 'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '), function(eventName) { var directiveName = directiveNormalize('ng-' + eventName); ngEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) { return { restrict: 'A', compile: function($element, attr) { // We expose the powerful $event object on the scope that provides access to the Window, // etc. that isn't protected by the fast paths in $parse. We explicitly request better // checks at the cost of speed since event handler expressions are not executed as // frequently as regular change detection. var fn = $parse(attr[directiveName], /* interceptorFn */ null, /* expensiveChecks */ true); return function ngEventHandler(scope, element) { element.on(eventName, function(event) { var callback = function() { fn(scope, {$event:event}); }; if (forceAsyncEvents[eventName] && $rootScope.$$phase) { scope.$evalAsync(callback); } else { scope.$apply(callback); } }); }; } }; }]; } ); /** * @ngdoc directive * @name ngDblclick * * @description * The `ngDblclick` directive allows you to specify custom behavior on a dblclick event. * * @element ANY * @priority 0 * @param {expression} ngDblclick {@link guide/expression Expression} to evaluate upon * a dblclick. (The Event object is available as `$event`) * * @example <example> <file name="index.html"> <button ng-dblclick="count = count + 1" ng-init="count=0"> Increment (on double click) </button> count: {{count}} </file> </example> */ /** * @ngdoc directive * @name ngMousedown * * @description * The ngMousedown directive allows you to specify custom behavior on mousedown event. * * @element ANY * @priority 0 * @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon * mousedown. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example> <file name="index.html"> <button ng-mousedown="count = count + 1" ng-init="count=0"> Increment (on mouse down) </button> count: {{count}} </file> </example> */ /** * @ngdoc directive * @name ngMouseup * * @description * Specify custom behavior on mouseup event. * * @element ANY * @priority 0 * @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon * mouseup. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example> <file name="index.html"> <button ng-mouseup="count = count + 1" ng-init="count=0"> Increment (on mouse up) </button> count: {{count}} </file> </example> */ /** * @ngdoc directive * @name ngMouseover * * @description * Specify custom behavior on mouseover event. * * @element ANY * @priority 0 * @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon * mouseover. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example> <file name="index.html"> <button ng-mouseover="count = count + 1" ng-init="count=0"> Increment (when mouse is over) </button> count: {{count}} </file> </example> */ /** * @ngdoc directive * @name ngMouseenter * * @description * Specify custom behavior on mouseenter event. * * @element ANY * @priority 0 * @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon * mouseenter. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example> <file name="index.html"> <button ng-mouseenter="count = count + 1" ng-init="count=0"> Increment (when mouse enters) </button> count: {{count}} </file> </example> */ /** * @ngdoc directive * @name ngMouseleave * * @description * Specify custom behavior on mouseleave event. * * @element ANY * @priority 0 * @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon * mouseleave. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example> <file name="index.html"> <button ng-mouseleave="count = count + 1" ng-init="count=0"> Increment (when mouse leaves) </button> count: {{count}} </file> </example> */ /** * @ngdoc directive * @name ngMousemove * * @description * Specify custom behavior on mousemove event. * * @element ANY * @priority 0 * @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon * mousemove. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example> <file name="index.html"> <button ng-mousemove="count = count + 1" ng-init="count=0"> Increment (when mouse moves) </button> count: {{count}} </file> </example> */ /** * @ngdoc directive * @name ngKeydown * * @description * Specify custom behavior on keydown event. * * @element ANY * @priority 0 * @param {expression} ngKeydown {@link guide/expression Expression} to evaluate upon * keydown. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.) * * @example <example> <file name="index.html"> <input ng-keydown="count = count + 1" ng-init="count=0"> key down count: {{count}} </file> </example> */ /** * @ngdoc directive * @name ngKeyup * * @description * Specify custom behavior on keyup event. * * @element ANY * @priority 0 * @param {expression} ngKeyup {@link guide/expression Expression} to evaluate upon * keyup. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.) * * @example <example> <file name="index.html">
Typing in the input box below updates the key count
 <input ng-keyup="count = count + 1" ng-init="count=0"> key up count: {{count}}
Typing in the input box below updates the keycode
 <input ng-keyup="event=$event">
event keyCode: {{ event.keyCode }}

event altKey: {{ event.altKey }}
 </file> </example> */ /** * @ngdoc directive * @name ngKeypress * * @description * Specify custom behavior on keypress event. * * @element ANY * @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon * keypress. ({@link guide/expression#-event- Event object is available as `$event`} * and can be interrogated for keyCode, altKey, etc.) * * @example <example> <file name="index.html"> <input ng-keypress="count = count + 1" ng-init="count=0"> key press count: {{count}} </file> </example> */ /** * @ngdoc directive * @name ngSubmit * * @description * Enables binding angular expressions to onsubmit events. * * Additionally it prevents the default action (which for form means sending the request to the * server and reloading the current page), but only if the form does not contain `action`, * `data-action`, or `x-action` attributes. * *
 * **Warning:** Be careful not to cause "double-submission" by using both the `ngClick` and * `ngSubmit` handlers together. See the * {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation} * for a detailed discussion of when `ngSubmit` may be triggered. *
 * * @element form * @priority 0 * @param {expression} ngSubmit {@link guide/expression Expression} to eval. * ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example module="submitExample"> <file name="index.html">  <form ng-submit="submit()" ng-controller="ExampleController"> Enter text and hit enter: <input type="text" ng-model="text" name="text" /> <input type="submit" id="submit" value="Submit" />
list={{list}}
 </form> </file> <file name="protractor.js" type="protractor"> it('should check ng-submit', function() { expect(element(by.binding('list')).getText()).toBe('list=[]'); element(by.css('#submit')).click(); expect(element(by.binding('list')).getText()).toContain('hello'); expect(element(by.model('text')).getAttribute('value')).toBe(''); }); it('should ignore empty strings', function() { expect(element(by.binding('list')).getText()).toBe('list=[]'); element(by.css('#submit')).click(); element(by.css('#submit')).click(); expect(element(by.binding('list')).getText()).toContain('hello'); }); </file> </example> */ /** * @ngdoc directive * @name ngFocus * * @description * Specify custom behavior on focus event. * * Note: As the `focus` event is executed synchronously when calling `input.focus()` * AngularJS executes the expression using `scope.$evalAsync` if the event is fired * during an `$apply` to ensure a consistent state. * * @element window, input, select, textarea, a * @priority 0 * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon * focus. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example * See {@link ng.directive:ngClick ngClick} */ /** * @ngdoc directive * @name ngBlur * * @description * Specify custom behavior on blur event. * * A [blur event](https://developer.mozilla.org/en-US/docs/Web/Events/blur) fires when * an element has lost focus. * * Note: As the `blur` event is executed synchronously also during DOM manipulations * (e.g. removing a focussed input), * AngularJS executes the expression using `scope.$evalAsync` if the event is fired * during an `$apply` to ensure a consistent state. * * @element window, input, select, textarea, a * @priority 0 * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon * blur. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example * See {@link ng.directive:ngClick ngClick} */ /** * @ngdoc directive * @name ngCopy * * @description * Specify custom behavior on copy event. * * @element window, input, select, textarea, a * @priority 0 * @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon * copy. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example> <file name="index.html"> <input ng-copy="copied=true" ng-init="copied=false; value='copy me'" ng-model="value"> copied: {{copied}} </file> </example> */ /** * @ngdoc directive * @name ngCut * * @description * Specify custom behavior on cut event. * * @element window, input, select, textarea, a * @priority 0 * @param {expression} ngCut {@link guide/expression Expression} to evaluate upon * cut. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example> <file name="index.html"> <input ng-cut="cut=true" ng-init="cut=false; value='cut me'" ng-model="value"> cut: {{cut}} </file> </example> */ /** * @ngdoc directive * @name ngPaste * * @description * Specify custom behavior on paste event. * * @element window, input, select, textarea, a * @priority 0 * @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon * paste. ({@link guide/expression#-event- Event object is available as `$event`}) * * @example <example> <file name="index.html"> <input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'> pasted: {{paste}} </file> </example> */


The Akan people of Ghana frequently name their children after the day of the week they
were born and the order in
which they were born. These "day names" have further meanings concerning the soul and character of the
person.
Middle names have considerably more variety and can refer to their birth order, twin status, or an
ancestor's
middle name
akan names~wikipedia
This is a web application that takes a user's birthday and calculates the day of the week they
were born and then depending on their gender outputs their Akan Name.
input your gender and date of birth in the form below to know your Akan Name!


Average Time To Load Home Page
Average Time To Load Used This Service Before Page
Average Time To Load Login Page
Average Time To Load Your Accounts Page
Average Time To Load Sainsbury Page
Average Time To Load Finance Page
Average Time To Load Transfers Page
Average Time To Load Start Transfers Page
Average Time To Load Add Apprenticeships Page
Average Time To Load Estimate Costs Page
Average Time To Load Edit Apprenticeships Page


self.backend = self.client.protocol
self.project = None
self.group = None
self.objective = self.options.get("objective")
self.lies = dict()
assert self.objective is not None, "An objective should be defined!"
def _get_project(self, name):
Forward declaration because of a weird factory bug where Track is not found
def __init__(self, uri):
assert False, "This should not be called"
HAS_TRACK = False
REASON = None


ContactComponent
public class ContactComponent : Component
It is a representation of info card in wingu portal. It may look like this:
It is possible to store all information in iOS default Contacts
app, however there is need to add NSContactsUsageDescription
in Info.plist
file.
Note: iOS 11+ will raise any helpful flag and simply app will crash in case of missing key in
Info.plist
file mentioned above.
By default all links will be https
ready from wingu portal if not specified otherwise.
-
Additional information don’t feed in any other field. Since iOS nativly not support Google+ in Contact app, whenever there is Google+ filled and stored in Contacts app extra information in the end will be populated with Google+ link also.
Declaration
Swift
public var extraInfo: String?
-
Email address
Declaration
Swift
public var email: String?
-
Mobile phone number. Not validated.
Declaration
Swift
public var mobile: String?
-
Company name
Declaration
Swift
public var companyName: String?
-
Personal title (ex Mr.,Mrs.)
Declaration
Swift
public var personalTitle: String?
-
First Name
Declaration
Swift
public var firstName: String?
-
Last Name
Declaration
Swift
public var lastName: String?
-
Phone number different than
mobile
. Not validatedDeclaration
Swift
public var phone: String?
-
Website plain url, by default it will always be with SSL if website does not support
https
links it’s need to be added in wingu portal that way.Declaration
Swift
public var website: String?
-
Opening hours. No validation.
Declaration
Swift
public var openingHours: String?
-
Address, diffrent that
Address
! It contain more separate fields, to help locate the place using Maps app.Declaration
Swift
public var address: ContactComponentAddress?
-
External social media links.
Declaration
Swift
public var socialMedia: ContactSocialMedia?


--- layout: post title: "China completes lunar sample collection ahead of schedule" subtitle: "China's Chang'e-5 lunar vehicle on the way to make China the third country to have retrieved lunar samples after the United States and the Soviet Union" date: 2020-12-03 15:00:13 +0530 background: '/img/posts/06.jpg' published: true categories: [ Science ] tags: [ technology, space, china, lunar, moon, isro, nasa, robotics ] ---
China's Chang'e-5 lunar vehicle has finished collecting samples of lunar rocks and soil ahead of schedule. China launched a robotic spacecraft on November 24 to bring back rocks from the moon in the first bid by any country to retrieve samples since 1976.
The robotic vehicle has stored the samples and will now dock with the orbiting Chang'e-5 for the return journey to Earth, the country's space agency said on Thursday.
The sample collection was completed after 19 hours, the space agency said in its statement, without disclosing the total weight of the samples collected. Late on Tuesday, the Chang'e-5 spacecraft successfully deployed a pair of landing and ascending vehicles onto the moon's surface. The plan was to collect 2 kg (4.4 pounds) of samples. China had planned to collect the samples over a period of about two days, with the entire mission taking around 23 days.
The ascending vehicle would lift off from the lunar surface with the samples, and dock with a module currently orbiting around the moon. The samples would then be transferred to a return capsule onboard the orbiting module for delivery back to Earth.
If successful, the mission will make China only the third country to have retrieved lunar samples after the United States and the Soviet Union.


This is a thread where I will dump some stuff the devs may or may not find handy; These are things I do on my own pi appliance image that I built for a radio related project, I hope you find somthing usefull here guys.
Kicking this off with my version of fstab, has some extra locations mounted to tmpfs you that might interest you guys.
Re: Tips n Tricks from my own Pi appliance...
Free up some RAM, for free....
Append "gpu_mem=16" to /boot/config.txt, this caps the RAM available to the GPU (since eMonPi is running headless the GPU should not be in use) and gives the OS some RAM back for free :)
Before:
After:
Re: Tips n Tricks from my own Pi appliance...
Firewalls, we all love to hate them, one way or another; but wouldn't it be great if you wanted to be able to reach your eMonPi while on the move, of course it would but that means setting up dynamic DNS and them poking about with your firewall, what fun.
Well here's some tricks to solve 1/2 of that; upnp for your pi...
There are a couple of components to making this a real sucsess, a binary that actually communicates to the router via uPNP, an init script to call the process with the arguments, and a cron entry to keep calling it every few mins.
Init script / cron details attached, the binaries can be installed with "apt-get install miniupnpc"
Happy uPNPing....
Re: Tips n Tricks from my own Pi appliance...
All in one update script;
Short and sweet, says it all really...
**EDIT: removed the rpi-firmware update since this relyably killed my pi image, I'll dig deeper to work out why...
**EDIT2: after spending a little time on this, I can see that the "commit=" argument used for mounting the data partition on the SD card is actually the issue, removing that makes it possible to upgrade the firmware to 4.4
I'll be modifying the update script to account for that and posting a new version in a short while.
**EDIT3: New script worked up, it works but needs some real world testing - ALL I check for is that the system upgrades, so maybe release an RC3 on the new firmware before a full release?
As part of one of the PHP updates you are asked if you want to keep the local version of some config - yes do that, dont replace it; Also I dont currently force acceptance of the kernel upgrade, so you will be prompted for that. I may be able to clean up / automate both of these if you want the update script used here to be included on production builds, but at the moment I'm only aiming to give you the building blocks to intigrate into the web based update method.
The problem with the new firmware appears to be syntax related; "commit=120" on the line for the data volume in /etc/fstab is the issue. Reading from here: http://www.softpanorama.org/Internals/Unix_filesystems/linux_ext2_ext3.shtml it looks like you are trying to use an EXT3 feature on an EXT2 filesystem, so removing the argument from /etc/fstab should have 0 effect (other than allowing the new 4.4 kernel to boot fully).
SSHD gets broken as part of the update too (specifically on Pi3 using on board wifi only) so you will need to append this to the bottom of your /etc/ssh/sshd_config:
See here for more information (long thread): https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=138631
**update script now does this for you...**
Final side note - updating the rpi-firmware will leave behind additional folders in /lib/modules, you will need to clean up the old ones (after a rebboot) to save sdcard space.
Re: Tips n Tricks from my own Pi appliance...
One caveat. UPnP has some security risks associated with it.
Here's an article that explains some of them.
More info:
www.howtogeek.com/122487/htg-explains-is-upnp-a-security-risk/ and
www.root6.com/support-2/tips/upnp-it-was-always-a-bad-idea/
Excerpt from this article:
it turns out that some routers have UPnP enabled on their Internet-facing port!
That’s right; you send the correctly formed UDP-discovery packet at the Internet side of the router and along with being able to open ports you can query the router for lots of details about itself, allowing you to better tailor your attack for other known vulnerabilities of that specific model. HD Moore (of Metasploit fame) has had a cluster of machines probing the public Internet to see how many public-facing IP addresses had UPnP enabled and it turns out around 2% of hosts respond to WAN-borne UDP discovery packets. He repeated his scan weekly for six months and those eighty-one million routers remained reasonably constant.
In case your wondering if your router is vulnerable you can find a list of affected models here, and you’d be surprised how many big-name manufacturers are there.
Here's a quick test to check your if your router is vulnerable to UPnP exploits:
https://www.grc.com/x/ne.dll?bh0bkyd2
Re: Tips n Tricks from my own Pi appliance...
Bill,
I totally agree, it does have some security concerns, as does opening up access directly to your pi from the internet, but if the options were not here, nobody would have the choice.
Re: Tips n Tricks from my own Pi appliance...
but if the options were not here, nobody would have the choice.
True. I just wanted to point out the security issues for those who might not be aware of them.
Re: Tips n Tricks from my own Pi appliance...
Hi Andy,
I built the current emonPi image.
Thanks for sharing your modifications.
Memory Tweaks
Setting gpu_mem=16 sounds like a good idea, are there any other side effects to this that you know of other then GUI performance which is obviously not an issue for us. I think I might have read somewhere about stability issues.
Upnp
Nice trick, although I think I'll leave this out from the stock emonPi image to avoid any potential security issues.
Firmware Update Issue
I would very much like to make the standard emonPi image compatible with the latest ras-pi firmware. Please could you give some more details on the changes you made to make this possible. After these changes to the way partitions are mounted would the new changes be backward compatible e.g. users running older firmware
Log rotate and tmpfs /var/log
This is an issue I wonder if you could help shed some light on: Even though logrotate seems to be working I've noticed that /var/log which is mounted as a tmpfs in the RAM fills up after a month or two of operation. Have you noticed this? This is one issue we need to fix before we launch the new image (currently in RC2)
Re: Tips n Tricks from my own Pi appliance...
Glyn,
Memory Tweak - not had any issues with this on my own system, mine runs a radio repeater for weeks / months at a time, stability hasn't been an issue here, it does not run a GUI of any kind so the extra ram is handy; I've run like that on Pi A (the original one), B, B+, 2B and now the 3 - 3 is brand new of course so no real feedback on that.
uPNP - You might consider adding that but disabled by default - installing the demon is perfectly safe form a security point of view - the security concerns are more about how resilient your Apache server setup is and how secure the users router is. As has been pointed out - it does need to come with a health warning.
Firmware update - found / fixed - I'll be posting about that shortly, its a simple fix and my update script should take care of it. (more to follow on that). EDIT: See above, update script updated and information added, firmware update works but breaks SSH over wifi - fix now included in the update script.
LogRotate - I'll take a look at your setup, my eMonPi is all of a day old at this point - so I'd obviously not run into that.
Other advice - delete the ssh keys from the base image before you prep it for download - so every eMonPi RC2 download has the same keys in it at the moment, not a hot idea. EDIT: Still working on this because the base image doesnt re-create the keys when they are missing - not a big deal, I'll write an init script to take care of it.
Andy
Re: Tips n Tricks from my own Pi appliance...
Syslog / LogRotate
So one early issue, the syslog is filling up with garbage, due to a bug in the base raspbian system;
Edit the /etc/rsyslog.conf and comment out the last 4 lines that use xconsole, the log balooning should get taken care of (see below). There is a little more work / testing to be done on logrotate to see what it is / isnt doing, but that will take a couple of days for me to check it out.
Re: Tips n Tricks from my own Pi appliance...
LogRotation;
Once you fix the syslog issue (above) that should reduce the crap being logged to /var/log/messages, it was probably that file / var/log/messages that has been filling up the /var/log tmpfs volume; moving on...
/etc/cron.daily/logrotate was found to be empty, it should look like the one attahced.
/etc/logrotate.conf - small changes here to capture ALL logs in the /var/log/ directory (including the ever expanding messages output) and to make sure the rotation happens daily - change daily if you want weekly / monthly etc. (again see attached).
/etc/fstab required an extra line for the filesystem where logrotate wants to keep its status, since logs are non-persistent, this can live on tempfs too.
Re: Tips n Tricks from my own Pi appliance...
There is a Pi3 unique breakage introduced when you fully update the firmware and base OS, just what you really want in your life.
SSHD gets broken, but ONLY when using the on board WiFi adapter and NO ethernet, this was a bear to find, but still here is the fix;
Edit your /etc/ssh/sshd_config and append the following to the end of the config;
Restart SSHD (or reboot the eMonPi) and SSH is now forever cured.
0 side effects to any other process, and will have no apparent effects on other pi models / wifi cards etc.
EDIT: Update script (re-attached above) now fixes this as part of the update.
Re: Tips n Tricks from my own Pi appliance...
Memory Tweak - not had any issues with this on my own system
Same here. I run all of my Pis (4 of them) with this same tweak and have noticed no ill effects. I've seen uptimes of over 270 days. (reboot caused by mains power loss)
No worries about this one, Glyn.
Re: Tips n Tricks from my own Pi appliance...
SSH Keys - Auto Generation (the idea here is that we form a service that always starts to create the keys if they are missing. That way the new images can be built and setup for download without any keys in them, and each new install will have new SSH keys.
1. install the files attached in the locations that I hope are obvious form their names
2. chmod them to 500 (read / execute by root)
3. systemctl daemon-reload (tell the system the files have changed)
4. systemctl enable emonpi-sshkeygen.service (enable the service)
Now you can remove the SSH keys and they will be re-created at boot time.
Re: Tips n Tricks from my own Pi appliance...
Glyn,
I'd mentioned this a few months ago, but at that time you decided to go with the stock log rotation.
Ramlog writes the log files to ram, saves them to disk at shutdown and can be configured to save the logs at a user selectable interval. It's a bash script, and is free. (as in beer) Sounds like it might be able to solve your tmpfs memory issues.
Fom the author's web page:
Ramlog act as a system daemon. On startup it creates ramdisk, it copies files from /var/log into ramdisk and mounts ramdisk as /var/log. All logs after that will be updated on ramdisk. Logs on harddrive are kept in folder /var/log.hdd which is updated when ramlog is restarted or stopped. On shutdown it saves log files back to harddisk so logs are consistent. Ramlog 2.x is using tmpfs by default, ramfs and kernel ramdisk are suppored as well. Program rsync is used for log synchronization.
Ramlog is intended to be used on netbooks or notebooks with SSD or HDD drives.
In case ramlog is restarted (by default it is one time per day), directory /var/log.hdd is synchronized with /var/log using rsync. Frequency of the automatic log saves can be controller via cron, by default, the ramlog file is placed into /etc/cron.daily
www.tremende.com/ramlog/
Re: Tips n Tricks from my own Pi appliance...
Hi Andy,
Thanks so much for you help. Yes, it was the /var/log/messages that was filling up the partition. I think log rotate was working to rotate the emonpi log files (at least on my version of the image) e.g. emonhub.conf etc. However /var/log/messages was not being rotated and this caused this issue.
I have made the change you suggested to logroate and it now seems to be working well and inclusing all logs. Obviously it will take a couple of months to be able to tell for sure.
I have added regenerating SSH keys to the emonpi factory reset script
https://github.com/openenergymonitor/emonpi/commit/f5ea0de800e9c463905c6...
I will include the fstab, SSHD fix and memory tweak in the next image. I will have the image up for download tomorrow.
You suggested changing logrotate from:
to
What's wrong with doing as I was previously doing: moving logrotate.status and logrotate.log to /var/log to ensure it would work on a RO FS. Would doing this negate the need to mount /var/lib/logrotate as tmpfs
Re: Tips n Tricks from my own Pi appliance...
What's wrong with doing as I was previously doing: moving logrotate.status and logrotate.log to /var/log to ensure it would work on a RO FS. Would doing this negate the need to mount /var/lib/logrotate as tmpfs
Nothing - I hadnt realised that was what you were doing, you can trim the changes for logrotate to the very bottom of the logrotate.conf file - change the bottom line to remove the .log parts of the catch all, this is why it didnt rotate "messages".
Re: Tips n Tricks from my own Pi appliance...
For anyone following this thread using full wildcard is a bad idea:
The manpage for logrotate says
Please use wildcards with caution. If you specify *, logrotate
will rotate all files,
including previously rotated ones. A way around this is to use the
olddir directive or a more exact wildcard (such as *.log).
I found this post which explains things well:
http://hudolejev.blogspot.co.uk/2012/06/wildcards-in-logrotate-configura...
The current logrotate.conf symlinked on latest emonpi image has been changed to
/var/log/*.log /var/log/*/*.log /var/log/syslog /var/log/messages {}


Savegame Editor
for Hyrule Warriors
by
Marc Robledo
See on GitHub
Donate
Close file
Save changes
Materials
Rupees
Discover all materials
Characters
Damage
Level
Experience
Maps
Map
Weapons
Weapon slot
Approximate power:
Weapon type
Weapon ID
Base Power
Stars


Unforgettable Summer Internship
I recently wrapped up my fourth co-op term at Axon. As I’m typing up this blog post, I’m on my 19th and final flight of the summer.
What I did
I was a product manager intern working on the new Records Management System team, which is Axon’s next big product investment. I worked on delivering a solution to support workflows for agencies to customize data fields and reports, as well as the initial design of new report types. I also gathered market and user research for the main incident report that police officers enter data into.
I worked closely with other PMs, designers, engineers, and directors to move the product components forward. There was also a great process to gather feedback from several law enforcement agencies. I had the opportunity to attend 10+ onsite meetings, as well as 10+ WebEx calls with real clients! Overall, I was treated like a full-time product manager. In fact, many team members didn’t realize I was an intern!
I was unofficially a part of the Axon President’s party planning committee. I founded and organized the first ever ‘Software Skip Day’, where Seattle techies skip work and enjoy a beautiful summer afternoon at Gas Works Park. The event was a huge success, as hundreds of people showed up! Thanks to Luke and Axon for sponsoring the event! In addition, along with the other Axon interns, I helped spearhead the ‘Axon Challenge’. Over 100+ interns at other Seattle companies attended and had a great time.
Fun events
Axon organized many events for the interns and company in general. Some notable ones included:
- Grand Canyon Trip.
- Din Tai Fung dinners. So gooood!
- GameWorks (think Dave & Busters)
- CityPass for Seattle tourist attractions
- Corporate suite for Seattle Sounders soccer games
- Team sailing events
- Fine dining experience at AQUA by El Guacho
- Bubble soccer
- Lots of ping pong
Notable Accomplishments and Learnings
- I watched the entire first season of One Tree Hill in a weekend.
- Similar to airlines, hotels also overbook rooms. I checked in late for a hotel in SF, and got relocated to another hotel, all expenses paid. There was even a treadmill in my room!
- Don’t forget to treat yourself from time to time.
- An 11 inch frying pan is not big enough.
- Goldfish (the snack) is a great social lubricant at parties. Bring a bag of Goldfish and people will form circles around you.
- Bias towards over communication.
- T-Mobile provides 1 hour of free Wifi on US flights.
- Exit row seats on flights are quite spacious.
- Don’t play blackjack in Cambodia (learned from another co-worker’s experience)
- B & H Photo Video is an awesome electronics store. (Need to check it out in person next time I’m in New York)
- After long trips, I prefer taking a taxi home over an Uber. I enjoy sitting in the back, and not have to converse with the driver.
- Product designers all seem to be awesome people.
- Since Seattle is very walking friendly city, I’ve been on the airplane more times than on a bus.
Recap
This internship surpassed my expectations in pretty much every category. The work was impactful and interesting, the people were awesome, and the culture was wonderful. There were always events to attend, or people to hang out with. I also fulfilled my goal of travelling a lot and exploring, highlighted by the amazing barbeque in Austin, Texas. Lastly, the summer weather in Seattle was perfect - not too hot and rarely rains.
What’s next for me? I’m going to take the next week off to decompress and just chill. Then, I’m headed back to Waterloo for school during the Fall term. And after that? I’ll figure it out eventually. 😛


{% from "security/macros.html" import render_field_with_errors, render_field %}
Toggle navigation
PMG-CMS
Home
Guest user
Login
Register
Forgot password
Resend confirmation instructions
{% include "security/_messages.html" %} {% block body %} {% endblock %}


CLE - Complex Loop Expressions
Avoid using complex expressions as repeat conditions within loops.
Wrong
for (int i = 0; i < vector.size(); i++) {
// do something
}
int size = vector.size();
for (int i = 0; i < size; i++) {
// do something
}
}
Tip: Assign the expression to a variable before the loop and use that variable instead.
Right
int size = vector.size();
for (int i = 0; i < size; i++) {
// do something
}
int size = vector.size();
for (int i = 0; i < size; i++) {
// do something
}
}
Another Tip - Iterate Through Loops in Reverse Order.
Avoid using complex expressions as repeat conditions within loops.
Wrong
for (int i = 0; i < list.length(); i++) {
list.get(i).process();
}
}
Tip: You may have access to elements of collection in reverse order, if this way don't break logic of your application.
Right
for (int i = list.length(); i >= 0; i--) {
list.get(i).process();
}
}


| 1 | /* | |
| 2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
| 3 | * contributor license agreements. See the NOTICE file distributed with | |
| 4 | * this work for additional information regarding copyright ownership. | |
| 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| 6 | * (the "License"); you may not use this file except in compliance with | |
| 7 | * the License. You may obtain a copy of the License at | |
| 8 | * | |
| 9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
| 10 | * | |
| 11 | * Unless required by applicable law or agreed to in writing, software | |
| 12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
| 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 14 | * See the License for the specific language governing permissions and | |
| 15 | * limitations under the License. | |
| 16 | */ | |
| 17 | package org.apache.commons.math3.ode; | |
| 18 | ||
| 19 | import java.lang.reflect.Array; | |
| 20 | import java.util.ArrayList; | |
| 21 | import java.util.Arrays; | |
| 22 | import java.util.List; | |
| 23 | ||
| 24 | import org.apache.commons.math3.exception.DimensionMismatchException; | |
| 25 | import org.apache.commons.math3.exception.MathIllegalArgumentException; | |
| 26 | import org.apache.commons.math3.exception.MaxCountExceededException; | |
| 27 | import org.apache.commons.math3.exception.util.LocalizedFormats; | |
| 28 | ||
| 29 | /** | |
| 30 | * This class defines a set of {@link SecondaryEquations secondary equations} to | |
| 31 | * compute the Jacobian matrices with respect to the initial state vector and, if | |
| 32 | * any, to some parameters of the primary ODE set. | |
| 33 | *
 | |
| 34 | * It is intended to be packed into an {@link ExpandableStatefulODE} | |
| 35 | * in conjunction with a primary set of ODE, which may be: | |
| 36 | *
 | |
| 37 | *
a {@link FirstOrderDifferentialEquations}
 | |
| 38 | *
a {@link MainStateJacobianProvider}
 | |
| 39 | *
 | |
| 40 | * In order to compute Jacobian matrices with respect to some parameters of the | |
| 41 | * primary ODE set, the following parameter Jacobian providers may be set: | |
| 42 | *
 | |
| 43 | *
a {@link ParameterJacobianProvider}
 | |
| 44 | *
a {@link ParameterizedODE}
 | |
| 45 | *
 | |
| 46 | *
 | |
| 47 | * | |
| 48 | * @see ExpandableStatefulODE | |
| 49 | * @see FirstOrderDifferentialEquations | |
| 50 | * @see MainStateJacobianProvider | |
| 51 | * @see ParameterJacobianProvider | |
| 52 | * @see ParameterizedODE | |
| 53 | * | |
| 54 | * @version $Id$ | |
| 55 | * @since 3.0 | |
| 56 | */ | |
| 57 | public class JacobianMatrices { | |
| 58 | ||
| 59 | /** Expandable first order differential equation. */ | |
| 60 | private ExpandableStatefulODE efode; | |
| 61 | ||
| 62 | /** Index of the instance in the expandable set. */ | |
| 63 | private int index; | |
| 64 | ||
| 65 | /** FODE with exact primary Jacobian computation skill. */ | |
| 66 | private MainStateJacobianProvider jode; | |
| 67 | ||
| 68 | /** FODE without exact parameter Jacobian computation skill. */ | |
| 69 | private ParameterizedODE pode; | |
| 70 | ||
| 71 | /** Main state vector dimension. */ | |
| 72 | private int stateDim; | |
| 73 | ||
| 74 | /** Selected parameters for parameter Jacobian computation. */ | |
| 75 | private ParameterConfiguration[] selectedParameters; | |
| 76 | ||
| 77 | /** FODE with exact parameter Jacobian computation skill. */ | |
| 78 | private List<ParameterJacobianProvider> jacobianProviders; | |
| 79 | ||
| 80 | /** Parameters dimension. */ | |
| 81 | private int paramDim; | |
| 82 | ||
| 83 | /** Boolean for selected parameters consistency. */ | |
| 84 | private boolean dirtyParameter; | |
| 85 | ||
| 86 | /** State and parameters Jacobian matrices in a row. */ | |
| 87 | private double[] matricesData; | |
| 88 | ||
| 89 | /** Simple constructor for a secondary equations set computing Jacobian matrices. | |
| 90 | *
 | |
| 91 | * Parameters must belong to the supported ones given by {@link | |
| 92 | * Parameterizable#getParametersNames()}, so the primary set of differential | |
| 93 | * equations must be {@link Parameterizable}. | |
| 94 | *
 | |
| 95 | *
Note that each selection clears the previous selected parameters.
 | |
| 96 | * | |
| 97 | * @param fode the primary first order differential equations set to extend | |
| 98 | * @param hY step used for finite difference computation with respect to state vector | |
| 99 | * @param parameters parameters to consider for Jacobian matrices processing | |
| 100 | * (may be null if parameters Jacobians is not desired) | |
| 101 | * @exception DimensionMismatchException if there is a dimension mismatch between | |
| 102 | * the steps array {@code hY} and the equation dimension | |
| 103 | */ | |
| 104 | public JacobianMatrices(final FirstOrderDifferentialEquations fode, final double[] hY, | |
| 105 | final String... parameters) | |
| 106 | throws DimensionMismatchException { | |
| 107 | this(new MainStateJacobianWrapper(fode, hY), parameters); | |
| 108 | } | |
| 109 | ||
| 110 | /** Simple constructor for a secondary equations set computing Jacobian matrices. | |
| 111 | *
 | |
| 112 | * Parameters must belong to the supported ones given by {@link | |
| 113 | * Parameterizable#getParametersNames()}, so the primary set of differential | |
| 114 | * equations must be {@link Parameterizable}. | |
| 115 | *
 | |
| 116 | *
Note that each selection clears the previous selected parameters.
 | |
| 117 | * | |
| 118 | * @param jode the primary first order differential equations set to extend | |
| 119 | * @param parameters parameters to consider for Jacobian matrices processing | |
| 120 | * (may be null if parameters Jacobians is not desired) | |
| 121 | */ | |
| 122 | public JacobianMatrices(final MainStateJacobianProvider jode, | |
| 123 | final String... parameters) { | |
| 124 | ||
| 125 | this.efode = null; | |
| 126 | this.index = -1; | |
| 127 | ||
| 128 | this.jode = jode; | |
| 129 | this.pode = null; | |
| 130 | ||
| 131 | this.stateDim = jode.getDimension(); | |
| 132 | ||
| 133 |
1
1. |
if (parameters == null) { |
| 134 | selectedParameters = null; | |
| 135 | paramDim = 0; | |
| 136 | } else { | |
| 137 | this.selectedParameters = new ParameterConfiguration[parameters.length]; | |
| 138 |
2
1. 2. |
for (int i = 0; i < parameters.length; ++i) { |
| 139 | selectedParameters[i] = new ParameterConfiguration(parameters[i], Double.NaN); | |
| 140 | } | |
| 141 | paramDim = parameters.length; | |
| 142 | } | |
| 143 | this.dirtyParameter = false; | |
| 144 | ||
| 145 | this.jacobianProviders = new ArrayList<ParameterJacobianProvider>(); | |
| 146 | ||
| 147 | // set the default initial state Jacobian to the identity | |
| 148 | // and the default initial parameters Jacobian to the null matrix | |
| 149 |
2
1. 2. |
matricesData = new double[(stateDim + paramDim) * stateDim]; |
| 150 |
3
1. 2. 3. |
for (int i = 0; i < stateDim; ++i) { |
| 151 |
2
1. 2. |
matricesData[i * (stateDim + 1)] = 1.0; |
| 152 | } | |
| 153 | ||
| 154 | } | |
| 155 | ||
| 156 | /** Register the variational equations for the Jacobians matrices to the expandable set. | |
| 157 | * @param expandable expandable set into which variational equations should be registered | |
| 158 | * @throws DimensionMismatchException if the dimension of the partial state does not | |
| 159 | * match the selected equations set dimension | |
| 160 | * @exception MismatchedEquations if the primary set of the expandable set does | |
| 161 | * not match the one used to build the instance | |
| 162 | * @see ExpandableStatefulODE#addSecondaryEquations(SecondaryEquations) | |
| 163 | */ | |
| 164 | public void registerVariationalEquations(final ExpandableStatefulODE expandable) | |
| 165 | throws DimensionMismatchException, MismatchedEquations { | |
| 166 | ||
| 167 | // safety checks | |
| 168 |
1
1. registerVariationalEquations : negated conditional → KILLED |
final FirstOrderDifferentialEquations ode = (jode instanceof MainStateJacobianWrapper) ? |
| 169 | ((MainStateJacobianWrapper) jode).ode : | |
| 170 | jode; | |
| 171 |
1
1. registerVariationalEquations : negated conditional → KILLED |
if (expandable.getPrimary() != ode) { |
| 172 | throw new MismatchedEquations(); | |
| 173 | } | |
| 174 | ||
| 175 | efode = expandable; | |
| 176 | index = efode.addSecondaryEquations(new JacobiansSecondaryEquations()); | |
| 177 |
1
1. registerVariationalEquations : removed call to org/apache/commons/math3/ode/ExpandableStatefulODE::setSecondaryState → KILLED |
efode.setSecondaryState(index, matricesData); |
| 178 | ||
| 179 | } | |
| 180 | ||
| 181 | /** Add a parameter Jacobian provider. | |
| 182 | * @param provider the parameter Jacobian provider to compute exactly the parameter Jacobian matrix | |
| 183 | */ | |
| 184 | public void addParameterJacobianProvider(final ParameterJacobianProvider provider) { | |
| 185 | jacobianProviders.add(provider); | |
| 186 | } | |
| 187 | ||
| 188 | /** Set a parameter Jacobian provider. | |
| 189 | * @param parameterizedOde the parameterized ODE to compute the parameter Jacobian matrix using finite differences | |
| 190 | */ | |
| 191 | public void setParameterizedODE(final ParameterizedODE parameterizedOde) { | |
| 192 | this.pode = parameterizedOde; | |
| 193 | dirtyParameter = true; | |
| 194 | } | |
| 195 | ||
| 196 | /** Set the step associated to a parameter in order to compute by finite | |
| 197 | * difference the Jacobian matrix. | |
| 198 | *
 | |
| 199 | * Needed if and only if the primary ODE set is a {@link ParameterizedODE}. | |
| 200 | *
 | |
| 201 | *
 | |
| 202 | * Given a non zero parameter value pval for the parameter, a reasonable value | |
| 203 | * for such a step is {@code pval * FastMath.sqrt(Precision.EPSILON)}. | |
| 204 | *
 | |
| 205 | *
 | |
| 206 | * A zero value for such a step doesn't enable to compute the parameter Jacobian matrix. | |
| 207 | *
 | |
| 208 | * @param parameter parameter to consider for Jacobian processing | |
| 209 | * @param hP step for Jacobian finite difference computation w.r.t. the specified parameter | |
| 210 | * @see ParameterizedODE | |
| 211 | * @exception UnknownParameterException if the parameter is not supported | |
| 212 | */ | |
| 213 | public void setParameterStep(final String parameter, final double hP) | |
| 214 | throws UnknownParameterException { | |
| 215 | ||
| 216 |
3
1. setParameterStep : changed conditional boundary → SURVIVED 2. setParameterStep : Changed increment from 1 to -1 → KILLED 3. setParameterStep : negated conditional → KILLED |
for (ParameterConfiguration param: selectedParameters) { |
| 217 |
1
1. setParameterStep : negated conditional → KILLED |
if (parameter.equals(param.getParameterName())) { |
| 218 |
1
1. setParameterStep : removed call to org/apache/commons/math3/ode/ParameterConfiguration::setHP → KILLED |
param.setHP(hP); |
| 219 | dirtyParameter = true; | |
| 220 | return; | |
| 221 | } | |
| 222 | } | |
| 223 | ||
| 224 | throw new UnknownParameterException(parameter); | |
| 225 | ||
| 226 | } | |
| 227 | ||
| 228 | /** Set the initial value of the Jacobian matrix with respect to state. | |
| 229 | *
 | |
| 230 | * If this method is not called, the initial value of the Jacobian | |
| 231 | * matrix with respect to state is set to identity. | |
| 232 | *
 | |
| 233 | * @param dYdY0 initial Jacobian matrix w.r.t. state | |
| 234 | * @exception DimensionMismatchException if matrix dimensions are incorrect | |
| 235 | */ | |
| 236 | public void setInitialMainStateJacobian(final double[][] dYdY0) | |
| 237 | throws DimensionMismatchException { | |
| 238 | ||
| 239 | // Check dimensions | |
| 240 |
1
1. setInitialMainStateJacobian : removed call to org/apache/commons/math3/ode/JacobianMatrices::checkDimension → SURVIVED |
checkDimension(stateDim, dYdY0); |
| 241 |
1
1. setInitialMainStateJacobian : removed call to org/apache/commons/math3/ode/JacobianMatrices::checkDimension → SURVIVED |
checkDimension(stateDim, dYdY0[0]); |
| 242 | ||
| 243 | // store the matrix in row major order as a single dimension array | |
| 244 | int i = 0; | |
| 245 |
3
1. setInitialMainStateJacobian : negated conditional → SURVIVED 2. setInitialMainStateJacobian : changed conditional boundary → KILLED 3. setInitialMainStateJacobian : Changed increment from 1 to -1 → KILLED |
for (final double[] row : dYdY0) { |
| 246 |
1
1. setInitialMainStateJacobian : removed call to java/lang/System::arraycopy → SURVIVED |
System.arraycopy(row, 0, matricesData, i, stateDim); |
| 247 |
1
1. setInitialMainStateJacobian : Replaced integer addition with subtraction → KILLED |
i += stateDim; |
| 248 | } | |
| 249 | ||
| 250 |
1
1. setInitialMainStateJacobian : negated conditional → KILLED |
if (efode != null) { |
| 251 |
1
1. setInitialMainStateJacobian : removed call to org/apache/commons/math3/ode/ExpandableStatefulODE::setSecondaryState → NO_COVERAGE |
efode.setSecondaryState(index, matricesData); |
| 252 | } | |
| 253 | ||
| 254 | } | |
| 255 | ||
| 256 | /** Set the initial value of a column of the Jacobian matrix with respect to one parameter. | |
| 257 | *
 | |
| 258 | * If this method is not called for some parameter, the initial value of | |
| 259 | * the column of the Jacobian matrix with respect to this parameter is set to zero. | |
| 260 | *
 | |
| 261 | * @param pName parameter name | |
| 262 | * @param dYdP initial Jacobian column vector with respect to the parameter | |
| 263 | * @exception UnknownParameterException if a parameter is not supported | |
| 264 | * @throws DimensionMismatchException if the column vector does not match state dimension | |
| 265 | */ | |
| 266 | public void setInitialParameterJacobian(final String pName, final double[] dYdP) | |
| 267 | throws UnknownParameterException, DimensionMismatchException { | |
| 268 | ||
| 269 | // Check dimensions | |
| 270 |
1
1. setInitialParameterJacobian : removed call to org/apache/commons/math3/ode/JacobianMatrices::checkDimension → SURVIVED |
checkDimension(stateDim, dYdP); |
| 271 | ||
| 272 | // store the column in a global single dimension array | |
| 273 |
1
1. setInitialParameterJacobian : Replaced integer multiplication with division → KILLED |
int i = stateDim * stateDim; |
| 274 |
3
1. setInitialParameterJacobian : changed conditional boundary → SURVIVED 2. setInitialParameterJacobian : Changed increment from 1 to -1 → KILLED 3. setInitialParameterJacobian : negated conditional → KILLED |
for (ParameterConfiguration param: selectedParameters) { |
| 275 |
1
1. setInitialParameterJacobian : negated conditional → KILLED |
if (pName.equals(param.getParameterName())) { |
| 276 |
1
1. setInitialParameterJacobian : removed call to java/lang/System::arraycopy → KILLED |
System.arraycopy(dYdP, 0, matricesData, i, stateDim); |
| 277 |
1
1. setInitialParameterJacobian : negated conditional → KILLED |
if (efode != null) { |
| 278 |
1
1. setInitialParameterJacobian : removed call to org/apache/commons/math3/ode/ExpandableStatefulODE::setSecondaryState → NO_COVERAGE |
efode.setSecondaryState(index, matricesData); |
| 279 | } | |
| 280 | return; | |
| 281 | } | |
| 282 |
1
1. setInitialParameterJacobian : Replaced integer addition with subtraction → KILLED |
i += stateDim; |
| 283 | } | |
| 284 | ||
| 285 | throw new UnknownParameterException(pName); | |
| 286 | ||
| 287 | } | |
| 288 | ||
| 289 | /** Get the current value of the Jacobian matrix with respect to state. | |
| 290 | * @param dYdY0 current Jacobian matrix with respect to state. | |
| 291 | */ | |
| 292 | public void getCurrentMainSetJacobian(final double[][] dYdY0) { | |
| 293 | ||
| 294 | // get current state for this set of equations from the expandable fode | |
| 295 | double[] p = efode.getSecondaryState(index); | |
| 296 | ||
| 297 | int j = 0; | |
| 298 |
3
1. getCurrentMainSetJacobian : changed conditional boundary → KILLED 2. getCurrentMainSetJacobian : Changed increment from 1 to -1 → KILLED 3. getCurrentMainSetJacobian : negated conditional → KILLED |
for (int i = 0; i < stateDim; i++) { |
| 299 |
1
1. getCurrentMainSetJacobian : removed call to java/lang/System::arraycopy → KILLED |
System.arraycopy(p, j, dYdY0[i], 0, stateDim); |
| 300 |
1
1. getCurrentMainSetJacobian : Replaced integer addition with subtraction → KILLED |
j += stateDim; |
| 301 | } | |
| 302 | ||
| 303 | } | |
| 304 | ||
| 305 | /** Get the current value of the Jacobian matrix with respect to one parameter. | |
| 306 | * @param pName name of the parameter for the computed Jacobian matrix | |
| 307 | * @param dYdP current Jacobian matrix with respect to the named parameter | |
| 308 | */ | |
| 309 | public void getCurrentParameterJacobian(String pName, final double[] dYdP) { | |
| 310 | ||
| 311 | // get current state for this set of equations from the expandable fode | |
| 312 | double[] p = efode.getSecondaryState(index); | |
| 313 | ||
| 314 |
1
1. getCurrentParameterJacobian : Replaced integer multiplication with division → KILLED |
int i = stateDim * stateDim; |
| 315 |
3
1. getCurrentParameterJacobian : changed conditional boundary → SURVIVED 2. getCurrentParameterJacobian : Changed increment from 1 to -1 → KILLED 3. getCurrentParameterJacobian : negated conditional → KILLED |
for (ParameterConfiguration param: selectedParameters) { |
| 316 |
1
1. getCurrentParameterJacobian : negated conditional → KILLED |
if (param.getParameterName().equals(pName)) { |
| 317 |
1
1. getCurrentParameterJacobian : removed call to java/lang/System::arraycopy → KILLED |
System.arraycopy(p, i, dYdP, 0, stateDim); |
| 318 | return; | |
| 319 | } | |
| 320 |
1
1. getCurrentParameterJacobian : Replaced integer addition with subtraction → KILLED |
i += stateDim; |
| 321 | } | |
| 322 | ||
| 323 | } | |
| 324 | ||
| 325 | /** Check array dimensions. | |
| 326 | * @param expected expected dimension | |
| 327 | * @param array (may be null if expected is 0) | |
| 328 | * @throws DimensionMismatchException if the array dimension does not match the expected one | |
| 329 | */ | |
| 330 | private void checkDimension(final int expected, final Object array) | |
| 331 | throws DimensionMismatchException { | |
| 332 |
1
1. checkDimension : negated conditional → KILLED |
int arrayDimension = (array == null) ? 0 : Array.getLength(array); |
| 333 |
1
1. checkDimension : negated conditional → KILLED |
if (arrayDimension != expected) { |
| 334 | throw new DimensionMismatchException(arrayDimension, expected); | |
| 335 | } | |
| 336 | } | |
| 337 | ||
| 338 | /** Local implementation of secondary equations. | |
| 339 | *
 | |
| 340 | * This class is an inner class to ensure proper scheduling of calls | |
| 341 | * by forcing the use of {@link JacobianMatrices#registerVariationalEquations(ExpandableStatefulODE)}. | |
| 342 | *
 | |
| 343 | */ | |
| 344 | private class JacobiansSecondaryEquations implements SecondaryEquations { | |
| 345 | ||
| 346 | /** {@inheritDoc} */ | |
| 347 | public int getDimension() { | |
| 348 |
3
1. getDimension : Replaced integer addition with subtraction → KILLED 2. getDimension : Replaced integer multiplication with division → KILLED 3. getDimension : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return stateDim * (stateDim + paramDim); |
| 349 | } | |
| 350 | ||
| 351 | /** {@inheritDoc} */ | |
| 352 | public void computeDerivatives(final double t, final double[] y, final double[] yDot, | |
| 353 | final double[] z, final double[] zDot) | |
| 354 | throws MaxCountExceededException, DimensionMismatchException { | |
| 355 | ||
| 356 | // Lazy initialization | |
| 357 |
2
1. computeDerivatives : negated conditional → KILLED 2. computeDerivatives : negated conditional → KILLED |
if (dirtyParameter && (paramDim != 0)) { |
| 358 | jacobianProviders.add(new ParameterJacobianWrapper(jode, pode, selectedParameters)); | |
| 359 | dirtyParameter = false; | |
| 360 | } | |
| 361 | ||
| 362 | // variational equations: | |
| 363 | // from d[dy/dt]/dy0 and d[dy/dt]/dp to d[dy/dy0]/dt and d[dy/dp]/dt | |
| 364 | ||
| 365 | // compute Jacobian matrix with respect to primary state | |
| 366 | double[][] dFdY = new double[stateDim][stateDim]; | |
| 367 |
1
1. computeDerivatives : removed call to org/apache/commons/math3/ode/MainStateJacobianProvider::computeMainStateJacobian → KILLED |
jode.computeMainStateJacobian(t, y, yDot, dFdY); |
| 368 | ||
| 369 | // Dispatch Jacobian matrix in the compound secondary state vector | |
| 370 |
3
1. computeDerivatives : changed conditional boundary → KILLED 2. computeDerivatives : Changed increment from 1 to -1 → KILLED 3. computeDerivatives : negated conditional → KILLED |
for (int i = 0; i < stateDim; ++i) { |
| 371 | final double[] dFdYi = dFdY[i]; | |
| 372 |
3
1. computeDerivatives : changed conditional boundary → SURVIVED 2. computeDerivatives : Changed increment from 1 to -1 → KILLED 3. computeDerivatives : negated conditional → KILLED |
for (int j = 0; j < stateDim; ++j) { |
| 373 | double s = 0; | |
| 374 | final int startIndex = j; | |
| 375 | int zIndex = startIndex; | |
| 376 |
3
1. computeDerivatives : changed conditional boundary → KILLED 2. computeDerivatives : Changed increment from 1 to -1 → KILLED 3. computeDerivatives : negated conditional → KILLED |
for (int l = 0; l < stateDim; ++l) { |
| 377 |
2
1. computeDerivatives : Replaced double multiplication with division → KILLED 2. computeDerivatives : Replaced double addition with subtraction → KILLED |
s += dFdYi[l] * z[zIndex]; |
| 378 |
1
1. computeDerivatives : Replaced integer addition with subtraction → KILLED |
zIndex += stateDim; |
| 379 | } | |
| 380 |
2
1. computeDerivatives : Replaced integer multiplication with division → KILLED 2. computeDerivatives : Replaced integer addition with subtraction → KILLED |
zDot[startIndex + i * stateDim] = s; |
| 381 | } | |
| 382 | } | |
| 383 | ||
| 384 |
1
1. computeDerivatives : negated conditional → KILLED |
if (paramDim != 0) { |
| 385 | // compute Jacobian matrices with respect to parameters | |
| 386 | double[] dFdP = new double[stateDim]; | |
| 387 |
1
1. computeDerivatives : Replaced integer multiplication with division → KILLED |
int startIndex = stateDim * stateDim; |
| 388 |
3
1. computeDerivatives : changed conditional boundary → KILLED 2. computeDerivatives : Changed increment from 1 to -1 → KILLED 3. computeDerivatives : negated conditional → KILLED |
for (ParameterConfiguration param: selectedParameters) { |
| 389 | boolean found = false; | |
| 390 |
4
1. computeDerivatives : changed conditional boundary → SURVIVED 2. computeDerivatives : Changed increment from 1 to -1 → SURVIVED 3. computeDerivatives : negated conditional → KILLED 4. computeDerivatives : negated conditional → KILLED |
for (int k = 0 ; (!found) && (k < jacobianProviders.size()); ++k) { |
| 391 | final ParameterJacobianProvider provider = jacobianProviders.get(k); | |
| 392 |
1
1. computeDerivatives : negated conditional → KILLED |
if (provider.isSupported(param.getParameterName())) { |
| 393 |
1
1. computeDerivatives : removed call to org/apache/commons/math3/ode/ParameterJacobianProvider::computeParameterJacobian → KILLED |
provider.computeParameterJacobian(t, y, yDot, |
| 394 | param.getParameterName(), dFdP); | |
| 395 |
3
1. computeDerivatives : changed conditional boundary → KILLED 2. computeDerivatives : Changed increment from 1 to -1 → KILLED 3. computeDerivatives : negated conditional → KILLED |
for (int i = 0; i < stateDim; ++i) { |
| 396 | final double[] dFdYi = dFdY[i]; | |
| 397 | int zIndex = startIndex; | |
| 398 | double s = dFdP[i]; | |
| 399 |
2
1. computeDerivatives : changed conditional boundary → KILLED 2. computeDerivatives : negated conditional → KILLED |
for (int l = 0; l < stateDim; ++l) { |
| 400 |
2
1. computeDerivatives : Replaced double multiplication with division → KILLED 2. computeDerivatives : Replaced double addition with subtraction → KILLED |
s += dFdYi[l] * z[zIndex]; |
| 401 |
1
1. computeDerivatives : Changed increment from 1 to -1 → KILLED |
zIndex++; |
| 402 | } | |
| 403 |
1
1. computeDerivatives : Replaced integer addition with subtraction → KILLED |
zDot[startIndex + i] = s; |
| 404 | } | |
| 405 | found = true; | |
| 406 | } | |
| 407 | } | |
| 408 |
1
1. computeDerivatives : negated conditional → KILLED |
if (! found) { |
| 409 |
2
1. computeDerivatives : Replaced integer addition with subtraction → NO_COVERAGE 2. computeDerivatives : removed call to java/util/Arrays::fill → NO_COVERAGE |
Arrays.fill(zDot, startIndex, startIndex + stateDim, 0.0); |
| 410 | } | |
| 411 |
1
1. computeDerivatives : Replaced integer addition with subtraction → KILLED |
startIndex += stateDim; |
| 412 | } | |
| 413 | } | |
| 414 | ||
| 415 | } | |
| 416 | } | |
| 417 | ||
| 418 | /** Wrapper class to compute jacobian matrices by finite differences for ODE | |
| 419 | * which do not compute them by themselves. | |
| 420 | */ | |
| 421 | private static class MainStateJacobianWrapper implements MainStateJacobianProvider { | |
| 422 | ||
| 423 | /** Raw ODE without jacobians computation skill to be wrapped into a MainStateJacobianProvider. */ | |
| 424 | private final FirstOrderDifferentialEquations ode; | |
| 425 | ||
| 426 | /** Steps for finite difference computation of the jacobian df/dy w.r.t. state. */ | |
| 427 | private final double[] hY; | |
| 428 | ||
| 429 | /** Wrap a {@link FirstOrderDifferentialEquations} into a {@link MainStateJacobianProvider}. | |
| 430 | * @param ode original ODE problem, without jacobians computation skill | |
| 431 | * @param hY step sizes to compute the jacobian df/dy | |
| 432 | * @see JacobianMatrices#setMainStateSteps(double[]) | |
| 433 | * @exception DimensionMismatchException if there is a dimension mismatch between | |
| 434 | * the steps array {@code hY} and the equation dimension | |
| 435 | */ | |
| 436 | public MainStateJacobianWrapper(final FirstOrderDifferentialEquations ode, | |
| 437 | final double[] hY) | |
| 438 | throws DimensionMismatchException { | |
| 439 | this.ode = ode; | |
| 440 | this.hY = hY.clone(); | |
| 441 |
1
1. |
if (hY.length != ode.getDimension()) { |
| 442 | throw new DimensionMismatchException(ode.getDimension(), hY.length); | |
| 443 | } | |
| 444 | } | |
| 445 | ||
| 446 | /** {@inheritDoc} */ | |
| 447 | public int getDimension() { | |
| 448 |
1
1. getDimension : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return ode.getDimension(); |
| 449 | } | |
| 450 | ||
| 451 | /** {@inheritDoc} */ | |
| 452 | public void computeDerivatives(double t, double[] y, double[] yDot) | |
| 453 | throws MaxCountExceededException, DimensionMismatchException { | |
| 454 |
1
1. computeDerivatives : removed call to org/apache/commons/math3/ode/FirstOrderDifferentialEquations::computeDerivatives → KILLED |
ode.computeDerivatives(t, y, yDot); |
| 455 | } | |
| 456 | ||
| 457 | /** {@inheritDoc} */ | |
| 458 | public void computeMainStateJacobian(double t, double[] y, double[] yDot, double[][] dFdY) | |
| 459 | throws MaxCountExceededException, DimensionMismatchException { | |
| 460 | ||
| 461 | final int n = ode.getDimension(); | |
| 462 | final double[] tmpDot = new double[n]; | |
| 463 | ||
| 464 |
3
1. computeMainStateJacobian : changed conditional boundary → KILLED 2. computeMainStateJacobian : Changed increment from 1 to -1 → KILLED 3. computeMainStateJacobian : negated conditional → KILLED |
for (int j = 0; j < n; ++j) { |
| 465 | final double savedYj = y[j]; | |
| 466 |
1
1. computeMainStateJacobian : Replaced double addition with subtraction → KILLED |
y[j] += hY[j]; |
| 467 |
1
1. computeMainStateJacobian : removed call to org/apache/commons/math3/ode/FirstOrderDifferentialEquations::computeDerivatives → KILLED |
ode.computeDerivatives(t, y, tmpDot); |
| 468 |
3
1. computeMainStateJacobian : changed conditional boundary → KILLED 2. computeMainStateJacobian : Changed increment from 1 to -1 → KILLED 3. computeMainStateJacobian : negated conditional → KILLED |
for (int i = 0; i < n; ++i) { |
| 469 |
2
1. computeMainStateJacobian : Replaced double subtraction with addition → KILLED 2. computeMainStateJacobian : Replaced double division with multiplication → KILLED |
dFdY[i][j] = (tmpDot[i] - yDot[i]) / hY[j]; |
| 470 | } | |
| 471 | y[j] = savedYj; | |
| 472 | } | |
| 473 | } | |
| 474 | ||
| 475 | } | |
| 476 | ||
| 477 | /** | |
| 478 | * Special exception for equations mismatch. | |
| 479 | * @since 3.1 | |
| 480 | */ | |
| 481 | public static class MismatchedEquations extends MathIllegalArgumentException { | |
| 482 | ||
| 483 | /** Serializable UID. */ | |
| 484 | private static final long serialVersionUID = 20120902L; | |
| 485 | ||
| 486 | /** Simple constructor. */ | |
| 487 | public MismatchedEquations() { | |
| 488 | super(LocalizedFormats.UNMATCHED_ODE_IN_EXPANDED_SET); | |
| 489 | } | |
| 490 | ||
| 491 | } | |
| 492 | ||
| 493 | } | |
| 494 | ||
Mutations | ||
| 133 |
1.1 |
|
| 138 |
1.1 2.2 |
|
| 149 |
1.1 2.2 |
|
| 150 |
1.1 2.2 3.3 |
|
| 151 |
1.1 2.2 |
|
| 168 |
1.1 |
|
| 171 |
1.1 |
|
| 177 |
1.1 |
|
| 216 |
1.1 2.2 3.3 |
|
| 217 |
1.1 |
|
| 218 |
1.1 |
|
| 240 |
1.1 |
|
| 241 |
1.1 |
|
| 245 |
1.1 2.2 3.3 |
|
| 246 |
1.1 |
|
| 247 |
1.1 |
|
| 250 |
1.1 |
|
| 251 |
1.1 |
|
| 270 |
1.1 |
|
| 273 |
1.1 |
|
| 274 |
1.1 2.2 3.3 |
|
| 275 |
1.1 |
|
| 276 |
1.1 |
|
| 277 |
1.1 |
|
| 278 |
1.1 |
|
| 282 |
1.1 |
|
| 298 |
1.1 2.2 3.3 |
|
| 299 |
1.1 |
|
| 300 |
1.1 |
|
| 314 |
1.1 |
|
| 315 |
1.1 2.2 3.3 |
|
| 316 |
1.1 |
|
| 317 |
1.1 |
|
| 320 |
1.1 |
|
| 332 |
1.1 |
|
| 333 |
1.1 |
|
| 348 |
1.1 2.2 3.3 |
|
| 357 |
1.1 2.2 |
|
| 367 |
1.1 |
|
| 370 |
1.1 2.2 3.3 |
|
| 372 |
1.1 2.2 3.3 |
|
| 376 |
1.1 2.2 3.3 |
|
| 377 |
1.1 2.2 |
|
| 378 |
1.1 |
|
| 380 |
1.1 2.2 |
|
| 384 |
1.1 |
|
| 387 |
1.1 |
|
| 388 |
1.1 2.2 3.3 |
|
| 390 |
1.1 2.2 3.3 4.4 |
|
| 392 |
1.1 |
|
| 393 |
1.1 |
|
| 395 |
1.1 2.2 3.3 |
|
| 399 |
1.1 2.2 |
|
| 400 |
1.1 2.2 |
|
| 401 |
1.1 |
|
| 403 |
1.1 |
|
| 408 |
1.1 |
|
| 409 |
1.1 2.2 |
|
| 411 |
1.1 |
|
| 441 |
1.1 |
|
| 448 |
1.1 |
|
| 454 |
1.1 |
|
| 464 |
1.1 2.2 3.3 |
|
| 466 |
1.1 |
|
| 467 |
1.1 |
|
| 468 |
1.1 2.2 3.3 |
|
| 469 |
1.1 2.2 |


Duck editor
Objects
Drawing
Enter drawing mode
Clear
Mode:
Pencil
Circle
Spray
Pattern
hline
vline
square
diamond
texture
Line width:
8
Line color:
Shadow color:
Shadow width:
16
Shadow offset:
0
Save duck


?Ciudadanos
del
Karso
C,Vv
owav\\W)$
a/jt
v
U\
Jf
loio)
.
i
c*
^-----------------5WftA
THE
NEW
YORK
BOTANICAL
GARDEN
EXPLORATION
OF
CUBA
Pinelands
(about
680
Meters
Altitude)
near
base
of
Loma
Mensura,
Oriente
NEW
YORK
BOTANICAL
GARDEN
February
I
01497509
6
7
8
9
10
copyright
reserved
The
New
York
Botanical
Garden
\
01497509
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Array of sort objects (submitted to data source for record sorting).
Array, default = []
If user clicks on the column (or holds shift key and clicks several columns) and if the column is sortable, the grid will
generate sort objects and submit it to the data source to apply sorting.
As a developer you can define initial sorting during object creation.
You can also change sorting form JavaScript during run-time by changing this array. Do not forget to call
.refresh method to refresh them on the screen. If you data source is local the grid will
sort the records using this .sortData array. If the data source is remote, the gird
will submit .sortData array to the server for sorting.
The structure of the sort object is:
If user clicks the same column second time the sort direction will be reversed. If you want to make a column unsortable,
set .sortable property of the column object to false.


Home Theater System Solution Implementation
Please slect your axes for design comparison and then click
"Graph It!"
(Hover over a point on the graph to show the system deisgn)
X-Axis Variable
Cost
Performance
Reliability
Y-Axis Variable
Cost
Performance
Reliability
Graph It!
Design Name
Television
Speaker
Amplifier
Cost
Performance
Reliability


Our basic paper supply comes from the top origami paper producers. Most of it comes directly from Japan, but we also work with the best European producers of special paper.
Each fold is carefully and precisely made and each componet is flawlessly placed in the final ensemble. Each final decoration is unique and placed inside a glass container that adds elegance and protects it against dust.
Our decorations are beautiful but fragile. Because of that we protect them during the delivery process by wrapping them in custom made packages. As a result each decoration will reach its destination undamaged.
Lorem ipsum dolor amet mustache artisan synth stumptown gastropub cornhole celiac swag.
Lorem ipsum dolor amet mustache artisan synth stumptown gastropub cornhole celiac swag.
Lorem ipsum dolor amet mustache artisan synth stumptown gastropub cornhole celiac swag.


This is a simple kinematic loop consisting of 6 revolute joints, 1 prismatic joint and 4 bars that is often used as basic constructing unit in mechanisms. This example demonstrates that usually no particular knowledge of the user is needed to handle kinematic loops. Just connect the joints and bodies together according to the real system. In particular no cut-joints or a spanning tree has to be determined. In this case, the initial condition of the angular velocity of revolute joint j1 is set to 300 deg/s in order to drive this loop.


Left-Indent Style: One of the most distinguishing features of this species is the bold dark-bars draped across the dorsal surface. Additional dark spots are found along the lateral surfaces of the species. In adult specimens, the pectoral fins are broadly triangular.
This image is set to 50% of the text width:
2 + 223 - xni= 6
Left McGross & Mieke Strand are great people who love to eat super-duper-wooper all day.
Right McGross & Mieke Strand are great people who love to eat super-duper-wooper all day.
Center McGross & Mieke Strand are great people who love to eat super-duper-wooper all day.
This text is not surrounded by <p>The caudal fin is elongate, and lacks a lower lobe altogether. This species is an active, strong swimming shark, often observed moving with an undulating motion. They are known to form large schools, occasionally aggregating with gray or brown smooth-hound sharks (Mustelus californicus and M. henlei) and piked dogfish (Squalus acanthias).
Updates:
Unordered List:
Ordered List:


Two Columns
Three Columns
Four Columns
1 of 4
1 of 4
1 of 4
1 of 4
Five Columns
1 of 5
1 of 5
1 of 5
1 of 5
1 of 5
Six Columns
1 of 6
1 of 6
1 of 6
1 of 6
1 of 6
1 of 6
Seven Columns
1 of 7
1 of 7
1 of 7
1 of 7
1 of 7
1 of 7
1 of 7
Eight Columns
1 of 8
1 of 8
1 of 8
1 of 8
1 of 8
1 of 8
1 of 8
1 of 8
Nine Columns
1 of 9
1 of 9
1 of 9
1 of 9
1 of 9
1 of 9
1 of 9
1 of 9
1 of 9
Ten Columns
1 of 10
1 of 10
1 of 10
1 of 10
1 of 10
1 of 10
1 of 10
1 of 10
1 of 10
1 of 10
Eleven Columns
1 of 11
1 of 11
1 of 11
1 of 11
1 of 11
1 of 11
1 of 11
1 of 11
1 of 11
1 of 11
1 of 11
Twelve Columns
1 of 12
1 of 12
1 of 12
1 of 12
1 of 12
1 of 12
1 of 12
1 of 12
1 of 12
1 of 12
1 of 12
1 of 12


Sign up
username cannot be empty
email cannot be empty
password cannot be empty
confirm password cannot be empty
already a member?
login
Or sign-in with


Work Preference: Teamwork
(Ex. I prefer to work with teams)
Work Preference: Individual
(Ex. I like to work by myself)
Website Development
(Ex. Creating websites)
Vulnerability Analysis
(Ex. Identifying, quantifying and ranking possible vulnerabilities to threats in a system)
Troubleshooting
(Ex. A way to identify and solve technical issues)
Risk Assessment
(Ex. Identifying potential risks that can cause harm)
Puzzle Cracking
(Ex. Encoding and decoding messages or solving logic puzzles)
Network Security
(Ex. Protecting networks against unwanted intruders)
Mitigation Strategies
(Ex. Taking steps to reduce negative impact – like disaster recovery)
Malware
(Ex. Viruses, Spyware, Worms, etc)
IT Infrastructure
(Ex. All the technology pieces needed for a business to deliver services or operate/run)
Human-Centered Design
(Ex. Designing for people by involving them in the process)
Ethical Hacking
(Ex. Legally identifying weaknesses in information systems to safeguard against cyber criminals)
Digital Crime Solving
(Ex. Investigation of criminal activities in digital devices)
Data Visualization
(Ex. Displaying data in charts, graphs, etc.)
Data Privacy
(Ex. How data is collected, shared and used)
Database Management
(Ex. Organizing and maintaining data)
Data Analysis
(Ex. Reviewing and modeling data to find useful information)
Cryptology
(Ex. Encryption, Ciphers, RSA, Knapsack)
Cyber Threat Analysis
(Ex. Identify online vulnerabilities where a cyber-attack could occur)
Coding
Cloud Computing
(Ex. A storage like computing services that holds data and other resources available over the internet)
Business & Tech Applications
(Ex. Technology software used by business)
Big Data
(Ex. Extremely large data sets that can be analyzed to identify trends)
Artificial Intelligence (A.I)
(Ex. Creation of intelligent machines that work and react like humans)
Applied Mathematics
(Ex. Application of math by different fields such as science, business, and industry)
Application Development
(Ex. Mobile applications are developed)
Analytical Thinking
(Ex. Thinking logically to solve problems)


YAAWS test file 'index.html'
This file is used if no filename is specified. It can also be loaded directly.
Analog Pin Values. Sample page for DynamicHTML.ino
Gate Controller Passwords. Sample page for FormData.ino
More Gate Controller Passwords. Sample page for PostData.ino


Programming is the process of taking an algorithm and encoding it into a notation, a programming language, so that it can be executed by a computer. Although many programming languages and many different types of computers exist, the important first step is the need to have the solution. Without an algorithm there can be no program. Computer science is not the study of programming. Programming, however, is an important part of what a computer scientist does. Programming is often the way that we create a representation for our solutions. Therefore, this language representation and the process of creating it becomes a fundamental part of the discipline.
Steve Jobs once said, "Everybody in this country should learn how to program a computer... because it teaches you how to think."
Forget the country, follow the rest.
Computer programming is an enormously flexible tool that you can use to do amazing things that are otherwise either manual and laborsome or are just impossible. If you're using a smartphone, a chat app or if you're unlocking your car with the push of a button, then you must know that all these things are using some kind of programming. You're already immersed in the programs of different types. In fact, software is running your life. What if you learn and start running these programs according to your will?
For example, you can write a program that can automatically respond to every new text message on your phone. To a message like "Hi" or "Hey," the program can read through the message to detect some pre-defined keywords like "Hi" and "Hey," and send an automatic response, which could be anything like, "Hi! What's up?" without you needing to see that message. You can even program it for specific people in your contact list. It can be made as exciting as you can ever imagine it to be.
By learning how to program doesn't mean that you have a responsibility of creating the next Facebook or the next Dropbox. No!
Rewind a little and see what made these big websites like Facebook, Dropbox, YouTube and others come into being. There was a need - someone suffered from the lack of something. And then, he dared to address that need because he could. He knew there was a way to solve that problem and make things easier for himself and probably others. You don't have to learn computer programming to solve the problems of the world, but you can very well solve yours.