Setting up OSSEC security notifications, Security, Monitoring
Difficulty: 2
Time: 45 Minutes
This article explains installation and configuration of OSSEC security notifications on Arch Linux
Note: You will need access to sudo privileges to complete all steps.
For sending mail from a local SMTP server, you will need to install Postfix.
Update the server using following command
Now install the packages
sudo pacman -Sy base-devel sudo pacman -Sy inotify-tools
You will need to download Ossec tarball and a file with its cryptographic checksum to verify you are installing a valid software. We will generate MD5 and SHA1 checksum and compare with those in checksum file.
Download ossec with following command
And for checksum file use following command
Now verify the checksum with cat command
You will get
MD5(ossec-hids-2.8.1.tar.gz)= c2ffd25180f760e366ab16eeb82ae382
SHA1(ossec-hids-2.8.1.tar.gz)= 0ecf1df09558dc8bb4b6f65e1fb2ca7a7df9817c
Generate the MD5sum of tarball
You will get
This should match with the MD5 checksum in file. Same will go for SHA1 as shown
It should give output as
If you get an error for tar command type "yum install tar".
now change the directory to the expanded one
Initiate the installation with
It will prompt you to answer a few questions.First question will be to choose a language you may choose your language as you want but use default press Enter
You will see this
OSSEC HIDS v2.8 Installation Script - http://www.ossec.net You are about to start the installation process of the OSSEC HIDS. You must have a C compiler pre-installed in your system. If you have any questions or comments, please send an e-mail to<EMAIL_ADDRESS>(or daniel.cid@gmail.com). - System: Linux ubuntu 3.13.0-55-generic - User: root - Host: ubuntu -- Press ENTER to continue or Ctrl-C to abort. -
Next it will ask you for the kind of installation so type "local" and press enter. Now you will get
Accept default and press "Enter". Now it will ask
Press enter; it will ask your email address where you want to receive notifications
Type your email address it will show
We found your SMTP server as: advaiya-com.mail.protection.outlook.com. - Do you want to use it? (y/n) [y]:
Press enter unless you want to use some specific SMTP.
Now it will ask you about what checks should. Press enter to select default for any prompt.Press enter for integrity check daemon
Do you want to run the integrity check daemon? (y/n) [y]: - Running syscheck (integrity check daemon).
To detect rootkit, press enter
Do you want to run the rootkit detection engine? (y/n) [y]: - Running rootcheck (rootkit detection).
For Active response, press enter
Active response allows you to execute a specific command based on the events received. Do you want to enable active response? (y/n) [y]:
Press enter for default fierwall drop response
Do you want to enable the firewall-drop response? (y/n) [y]: - firewall-drop enabled (local) for levels >= 6
In next prompt it will ask you for more IP addresses but that's not necessary Now it will show default list files to be monitored. You can add more files after installation, so press enter. Now it may take a few minutes to install.
On successful installation you will get
Unknown system. No init script added. - Configuration finished properly. - To start OSSEC HIDS: /var/ossec/bin/ossec-control start - To stop OSSEC HIDS: /var/ossec/bin/ossec-control stop - The configuration can be viewed or modified at /var/ossec/etc/ossec.conf Thanks for using the OSSEC HIDS. If you have any question, suggestion or if you find any bug, contact us at<EMAIL_ADDRESS>or using our public maillist at<EMAIL_ADDRESS>( http://www.ossec.net/main/support/ ). More information can be found at http://www.ossec.net --- Press ENTER to finish (maybe more information below). ---
Now we will start the ossec
OSSEC is configured to start at boot but first time you will need to initiate it manually
Current status can be checked with
You will get
ossec-monitord not running... ossec-logcollector not running... ossec-syscheckd not running... ossec-analysisd not running... ossec-maild not running... ossec-execd not running...
Now to start the OSSEC, type
You should see the following
Starting OSSEC HIDS v2.8 (by Trend Micro Inc.)... Started ossec-maild... Started ossec-execd... Started ossec-analysisd... Started ossec-logcollector... Started ossec-syscheckd... Started ossec-monitord... Completed.
Right after starting the ossec you will get a mail as shown
OSSEC HIDS Notification. 2015 Aug 17 02:16:34 Received From: ubuntu->ossec-monitord Rule: 502 fired (level 3) -> "Ossec server started." Portion of the log(s): ossec: Ossec started.
You will get such emails whenever something it's configured to monitor happens
Now you will see how to change settings for OSSEC and its directory structure
Its root directory (/var/ossec) can only be accessed with root privileges.
The main configuration file is located at /var/ossec/etc/ossec.conf. Open it in any editor ,make sure you have sudo privileges . First configuration option you will get is the email configuration you specified while installing. You can change if required at this place
<global> <email_notification>yes</email_notification><EMAIL_ADDRESS><smtp_server>mail.example.com.</smtp_server> <email_from>ossecm@ossec_server</email_from> </global>
To change the number of email per hour you can add here the following line
"N" is the number of emails. Make sure you <email_from> address contains a valid domain part as some third-party email provider may drop otherwise.
If you are not getting emails as expected you can check logs here /var/ossec/logs/ossec.log
<syscheck> <!-- Frequency that syscheck is executed - default to every 22 hours --> <frequency>79200</frequency>
So by default sytem check is run inevery 22 hours. You can change it.To enable alerts for new file creation, add the below mentioned line
So it should read
<syscheck> <!-- Frequency that syscheck is executed - default to every 22 hours --> <frequency>79200</frequency> <alert_new_files>yes</alert_new_files>
Right after that there is a list of system directory that it monitors as shown
<!-- Directories to check (perform all possible verifications) --> <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories check_all="yes">/bin,/sbin</directories>
Add report_changes="yes" realtime="yes" to each line to enable real time monitoring
<!-- Directories to check (perform all possible verifications) --> <directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories>
You can add more directories to monitor here.to add /home/user_name and /var/www/ add following line here
Restrict setting tells only to monitor specified formats
Local rules are located in /var/ossec/rules/local_rules.xml. Next configure the at /var/ossec/rules directory. Only two files local_rules.xml and ossec_rules.xml is of our use. The former file is used to add local rules and latter for default rules definitions.
When a file is added to monitored directory the rule 554 is fired. By default it doesn't send alert on fire so you'll need to change the settings. Rule 554 looks like.
<rule id="554" level="0"> <category>ossec</category> <decoded_as>syscheck_new_entry</decoded_as> <description>File added to the system.</description> <group>syscheck,</group> </rule>
When level is set to "0" no alert will be sent. We will raise the alert level. Copy the rule to local_rules.xml and modify it.
Open the file /var/ossec/rules/local_rules.xml in any editor and add the new rule at the end within the group tag
<rule id="554" level="7" overwrite="yes"> <category>ossec</category> <decoded_as>syscheck_new_entry</decoded_as> <description>File added to the system.</description> <group>syscheck,</group> </rule>
Save and close the file.Now restart the OSSEC
You will get a mail when it is restarted.
When you add any file in directory to be monitored by OSSEC or you update or delete a file you should be getting alters. It doesn't send real time notification for adding a file but only for modification or deletion. Alerts of file addition go after full system check which is handled by frequency check time in ossec.conf.
This article gives you the overview of basic settings more advance setups and configuration are possible.


Defining environment variables used by the scripts
Open the Utilities\Scripts folder and double-click on the file COPY_fds_smv_env.bat.
This copies fds-smv_env.bat to your home directory.
to update the fds_smv_env.bat configuration file.
(Define your FDS/Smokeview repository location.)
Compiling software
Install Intel Fortran.
Install Intel C/C++ (only required if you wish to build Smokeview)
Communicating with other Computers
Install putty.
Set up ssh keys. (optional - to avoid typing passwords)
run puttygen
click on the SSH-2 RSA radio button
click on the Generate button. Pick a pass-phrase.
Save the private key on your local computer.
Save the public key and copy it to the Linux cluster. Put the key at the end of the file authorized_key2 which
is located in the .ssh directory in your home directory.
Add putty location to system PATH variable
Creating Bundles
Install Winzip
Install Winzip command line tool
Install Winzip self extractor.
Add Winzip and Winzip self extractor locations to system PATH variable
Testing the Setup
to verify that software tools
needed by the FDS-Smokeview web scripts are installed.


<%= message %>
<%= details %>
This is a problem we didn't anticipate. Please let us know that this happened.


---
index: 1
title: "Centipede Experiment"
description: Students have the opportunity to conduct research by sampling their classmates' behavior in a simple game. What is rational behavior in the game of Centipede? Do players make rational decisions? Students analyze specific questions in a 1500-word response.
---
Students have the opportunity to conduct research by sampling their classmates' behavior in a simple game. What is rational behavior in the game of Centipede? Do players make rational decisions? Students analyze specific questions in a 1500-word response.
# Resources for The Centipede Experiment
* [Thursday Night presentation on Game Theory and Rationality](http://www.cogsci.rpi.edu/public_html/heuveb/Teaching/M&M/Talks/Rationality.pptx)
* [Centipede Game Instructions](http://www.cogsci.rpi.edu/public_html/heuveb/Teaching/M&M/Centipede/CENT.pdf)
* [Questionnaire](http://www.cogsci.rpi.edu/public_html/heuveb/Teaching/M&M/Centipede/Questionnaire.pdf)
* [Results](http://www.cogsci.rpi.edu/public_html/heuveb/Teaching/M&M/Centipede/CENT_RESULTS.xlsx)
* [Instructions for Write Up](http://www.cogsci.rpi.edu/public_html/heuveb/Teaching/M&M/Centipede/Centipede%20Assignment.docx)


| FACILITY | CONTACT |
|---|---|
| KADENGE HEALTH CENTRE | |
| BORO DISPENSARY | |
| KAROUTH DISPENSARY | |
| NYADHI DISPENSARY | |
| SEGERE DISPENSARY | |
| FACILITY | CONTACT |
|---|---|
| KALUO HEALTH CENTRE | |
| NYATHONGO DISPENSARY | |
| UMALA DISPENSARY |
| FACILITY | CONTACT |
|---|---|
| MULAHA DISPENSARY | |
| SIAYA COUNTY REFERAL HOSPITAL |
| FACILITY | CONTACT |
|---|---|
| BAR AGULU DISPENSARY | |
| BAR ALEGO DISPENSARY | |
| BARDING DISPENSARY | |
| KOGELO DISPENSARY | |
| MUR MALANG'A DISPENSARY | |
| RANDANGO DISPENSARY | |
| NDURU DISPENSARY | |
| TINGUANGI DISPENSARY |
| FACILITY | CONTACT |
|---|---|
| BENGA DISPENSARY | |
| RWAMBA HOSPITAL | |
| SUMBU DISPENSARY |
| FACILITY | CONTACT |
|---|---|
| HAVINGA HEALTH CENTRE | |
| KABURA DISPENSARY | |
| MUER DISPENSARY | |
| RABAR HEALTH CENTRE |


(function()
{
A freeboard plugin is simply a javascript file that is loaded into a web page after the main freeboard.js file is loaded.
Let's get started with an example of a datasource plugin and a widget plugin.
Best to encapsulate your plugin in a closure, although not required.
(function()
{
freeboard.loadDatasourcePlugin(definition) tells freeboard that we are giving it a datasource plugin. It expects an object with the following:
freeboard.loadDatasourcePlugin({
type_name (required) : A unique name for this plugin. This name should be as unique as possible to avoid collisions with other plugins, and should follow naming conventions for javascript variable and function declarations.
"type_name" : "my_datasource_plugin",
display_name : The pretty name that will be used for display purposes for this plugin. If the name is not defined, type_name will be used instead.
"display_name": "Datasource Plugin Example",
description : A description of the plugin. This description will be displayed when the plugin is selected or within search results (in the future). The description may contain HTML if needed.
"description" : "Some sort of description with optional html!",
external_scripts : Any external scripts that should be loaded before the plugin instance is created.
"external_scripts" : [
"http://mydomain.com/myscript1.js",
"http://mydomain.com/myscript2.js"
],
settings : An array of settings that will be displayed for this plugin when the user adds it.
"settings" : [
{
name (required) : The name of the setting. This value will be used in your code to retrieve the value specified by the user. This should follow naming conventions for javascript variable and function declarations.
"name" : "first_name",
display_name : The pretty name that will be shown to the user when they adjust this setting.
"display_name" : "First Name",
type (required) : The type of input expected for this setting. "text" will display a single text box input. Examples of other types will follow in this documentation.
"type" : "text",
default_value : A default value for this setting.
"default_value": "John",
description : Text that will be displayed below the setting to give the user any extra information.
"description" : "This is pretty self explanatory..."
},
{
"name" : "last_name",
"display_name": "Last Name",
type "calculated" : This is a special text input box that may contain javascript formulas and references to datasources in the freeboard.
"type" : "calculated"
},
{
"name" : "is_human",
"display_name": "I am human",
type "boolean" : Will display a checkbox indicating a true/false setting.
"type" : "boolean"
},
{
"name" : "age",
"display_name": "Your age",
type "option" : Will display a dropdown box with a list of choices.
"type" : "option",
options (required) : An array of options to be populated in the dropdown.
"options" : [
{
name (required) : The text to be displayed in the dropdown.
"name" : "0-50",
value : The value of the option. If not specified, the name parameter will be used.
"value": "young"
},
{
"name" : "51-100",
"value": "old"
}
]
},
{
"name" : "other",
"display_name": "Other attributes",
type "array" : Will allow a user to enter in rows of data.
"type" : "array",
settings (required) : An array of columns of the text to be entered by the user.
"settings" : [
{
"name" : "name",
"display_name": "Name",
"type" : "text"
},
{
"name" : "value",
"display_name": "Value",
"type" : "text"
}
]
},
{
"name" : "refresh_time",
"display_name" : "Refresh Time",
"type" : "text",
"description" : "In milliseconds",
"default_value": 5000
}
],
newInstance(settings, newInstanceCallback, updateCallback) (required) : A function that will be called when a new instance of this plugin is requested.
newInstance : function(settings, newInstanceCallback, updateCallback)
{
myDatasourcePlugin is defined below.
newInstanceCallback(new myDatasourcePlugin(settings, updateCallback));
}
});
Here we implement the actual datasource plugin. We pass in the settings and updateCallback.
var myDatasourcePlugin = function(settings, updateCallback)
{
Always a good idea...
var self = this;
Good idea to create a variable to hold on to our settings, because they might change in the future. See below.
var currentSettings = settings;
/* This is some function where I'll get my data from somewhere */
function getData()
{
var newData = { hello : "world! it's " + new Date().toLocaleTimeString() }; // Just putting some sample data in for fun.
/* Get my data from somewhere and populate newData with it... Probably a JSON API or something. */
/* ... */
I'm calling updateCallback to tell it I've got new data for it to munch on.
updateCallback(newData);
}
You'll probably want to implement some sort of timer to refresh your data every so often.
var refreshTimer;
function createRefreshTimer(interval)
{
if(refreshTimer)
{
clearInterval(refreshTimer);
}
refreshTimer = setInterval(function()
{
Here we call our getData function to update freeboard with new data.
getData();
}, interval);
}
onSettingsChanged(newSettings) (required) : A public function we must implement that will be called when a user makes a change to the settings.
self.onSettingsChanged = function(newSettings)
{
Here we update our current settings with the variable that is passed in.
currentSettings = newSettings;
}
updateNow() (required) : A public function we must implement that will be called when the user wants to manually refresh the datasource
self.updateNow = function()
{
Most likely I'll just call getData() here.
getData();
}
onDispose() (required) : A public function we must implement that will be called when this instance of this plugin is no longer needed. Do anything you need to cleanup after yourself here.
self.onDispose = function()
{
Probably a good idea to get rid of our timer.
clearInterval(refreshTimer);
refreshTimer = undefined;
}
Here we call createRefreshTimer with our current settings, to kick things off, initially. Notice how we make use of one of the user defined settings that we setup earlier.
createRefreshTimer(currentSettings.refresh_time);
}
freeboard.loadWidgetPlugin(definition) tells freeboard that we are giving it a widget plugin. It expects an object with the following:
freeboard.loadWidgetPlugin({
Same stuff here as with datasource plugin.
"type_name" : "my_widget_plugin",
"display_name": "Widget Plugin Example",
"description" : "Some sort of description with optional html!",
external_scripts : Any external scripts that should be loaded before the plugin instance is created.
"external_scripts": [
"http://mydomain.com/myscript1.js", "http://mydomain.com/myscript2.js"
],
fill_size : If this is set to true, the widget will fill be allowed to fill the entire space given it, otherwise it will contain an automatic padding of around 10 pixels around it.
"fill_size" : false,
"settings" : [
{
"name" : "the_text",
"display_name": "Some Text",
We'll use a calculated setting because we want what's displayed in this widget to be dynamic based on something changing (like a datasource).
"type" : "calculated"
},
{
"name" : "size",
"display_name": "Size",
"type" : "option",
"options" : [
{
"name" : "Regular",
"value": "regular"
},
{
"name" : "Big",
"value": "big"
}
]
}
],
Same as with datasource plugin, but there is no updateCallback parameter in this case.
newInstance : function(settings, newInstanceCallback)
{
newInstanceCallback(new myWidgetPlugin(settings));
}
});
Here we implement the actual widget plugin. We pass in the settings;
var myWidgetPlugin = function(settings)
{
var self = this;
var currentSettings = settings;
Here we create an element to hold the text we're going to display. We're going to set the value displayed in it below.
var myTextElement = $("");
render(containerElement) (required) : A public function we must implement that will be called when freeboard wants us to render the contents of our widget. The container element is the DIV that will surround the widget.
self.render = function(containerElement)
{
Here we append our text element to the widget container element.
$(containerElement).append(myTextElement);
}
getHeight() (required) : A public function we must implement that will be called when freeboard wants to know how big we expect to be when we render, and returns a height. This function will be called any time a user updates their settings (including the first time they create the widget).
Note here that the height is not in pixels, but in blocks. A block in freeboard is currently defined as a rectangle that is fixed at 300 pixels wide and around 45 pixels multiplied by the value you return here.
Blocks of different sizes may be supported in the future.
self.getHeight = function()
{
if(currentSettings.size == "big")
{
return 2;
}
else
{
return 1;
}
}
onSettingsChanged(newSettings) (required) : A public function we must implement that will be called when a user makes a change to the settings.
self.onSettingsChanged = function(newSettings)
{
Normally we'd update our text element with the value we defined in the user settings above (the_text), but there is a special case for settings that are of type "calculated" -- see below.
currentSettings = newSettings;
}
onCalculatedValueChanged(settingName, newValue) (required) : A public function we must implement that will be called when a calculated value changes. Since calculated values can change at any time (like when a datasource is updated) we handle them in a special callback function here.
self.onCalculatedValueChanged = function(settingName, newValue)
{
Remember we defined "the_text" up above in our settings.
if(settingName == "the_text")
{
Here we do the actual update of the value that's displayed in on the screen.
$(myTextElement).html(newValue);
}
}
onDispose() (required) : Same as with datasource plugins.
self.onDispose = function()
{
}
}
}());


- Login to post new content in the forum.
| Topic | Replies | Created | Last reply | |
|---|---|---|---|---|
| Can I see other people's energy usage / dashboards on emoncms.org? | 0 | 3 years 44 weeks ago by Guest |
n/a | |
| PI + Emoncms + RFM12Pi + emonTx | 6 | 3 years 44 weeks ago by Ughy |
3 years 44 weeks ago by Paul Reed |
|
| where to get print_to_serial.ino | 5 | 3 years 44 weeks ago by boelle |
3 years 44 weeks ago by Jérôme |
|
| Multigraph in v5 | 4 | 3 years 44 weeks ago by Paul Reed |
3 years 44 weeks ago by Paul Reed |
|
| getting started with emoncms | 39 | 3 years 47 weeks ago by Guest |
3 years 44 weeks ago by Guest |
|
| Mk2 PV controller commissing problem | 30 | 3 years 45 weeks ago by Guest |
3 years 45 weeks ago by dBC |
|
| Probs getting started with "interface script is not running" and "file_get_contents" | 25 | 3 years 46 weeks ago by tango |
3 years 45 weeks ago by tango |
|
| How do I export data from latest emoncms to debug water monitor issue | 15 | 4 years 11 weeks ago by EnergyRnR |
3 years 45 weeks ago by EnergyRnR |
|
| Emoncms host computers | 0 | 3 years 45 weeks ago by Guest |
n/a | |
| using PIC microcontroller for energy monitor | 5 | 4 years 29 weeks ago by Guest |
3 years 46 weeks ago by Robert Wall |
|
| "EmonLib.h" - reading SCT on mega 2560 | 3 | 3 years 46 weeks ago by Guest |
3 years 46 weeks ago by Robert Wall |
|
| Help with forwarding to remote server | 11 | 3 years 47 weeks ago by roblog |
3 years 46 weeks ago by Guest |
|
| What is the command in 'fill' for Raw data graph in Emoncms? | 3 | 3 years 49 weeks ago by bakerA01 |
3 years 46 weeks ago by Jérôme |
|
| Not getting "OK received" back from emoncms | 0 | 3 years 46 weeks ago by bakerA01 |
n/a | |
| Setting up emoncms on remote server alongside existing drupal installation with shared domain | 2 | 3 years 47 weeks ago by roblog |
3 years 46 weeks ago by roblog |
|
| Emoncms on iPhone | 3 | 3 years 48 weeks ago by Paul Reed |
3 years 46 weeks ago by Paul Reed |
|
| Suitable cable to make a 5M DS18B20 | 3 | 3 years 46 weeks ago by rjcollingham |
3 years 46 weeks ago by rjcollingham |
|
| Emonbase has stopped working | 1 | 3 years 47 weeks ago by Series530 |
3 years 46 weeks ago by Robert Wall |
|
| Google Chrome crashing | 4 | 3 years 47 weeks ago by Paul Reed |
3 years 47 weeks ago by Paul Reed |
|
| Dasboard graph zoom to one day | 0 | 3 years 47 weeks ago by Guest |
n/a | |
| Nuelectronics libraries | 2 | 3 years 47 weeks ago by Guest |
3 years 47 weeks ago by Guest |
|
| Help a newbie - something not right!! | 3 | 3 years 48 weeks ago by roblog |
3 years 47 weeks ago by roblog |
|
| Emoncms.org Dashboard Formatting | 2 | 3 years 48 weeks ago by StuntMonkeh |
3 years 48 weeks ago by StuntMonkeh |
|
| Emoncms password incorrect | 1 | 3 years 48 weeks ago by ababak |
3 years 48 weeks ago by Paul Reed |
|
| [SOLVED] Only getting 1 reading every minute when over 4.5kW | 5 | 3 years 49 weeks ago by jonbev |
3 years 48 weeks ago by Robert Wall |
|
| Monitoring 3 home appliances (including stove) | 4 | 3 years 49 weeks ago by Guest |
3 years 48 weeks ago by Guest |
|
| Noobie Programmer Question | 4 | 3 years 49 weeks ago by v8hybrid |
3 years 48 weeks ago by Robert Wall |
|
| CT positioning on 3phase mains | 6 | 3 years 50 weeks ago by tomtobback |
3 years 49 weeks ago by Robert Wall |
|
| Emoncms security | 2 | 3 years 49 weeks ago by Paul Reed |
3 years 49 weeks ago by Paul Reed |
|
| Bits & Bobs... | 7 | 3 years 50 weeks ago by Bob Smith |
3 years 49 weeks ago by Bob Smith |
|
| Rasp Pi configuration - Answered | 1 | 3 years 49 weeks ago by Paul Reed |
3 years 49 weeks ago by Jérôme |
|
| Trouble with CT Sensors | 17 | 3 years 49 weeks ago by Guest |
3 years 49 weeks ago by Robert Wall |
|
| I've given up! | 3 | 3 years 50 weeks ago by v8hybrid |
3 years 49 weeks ago by v8hybrid |
|
| Trouble configuring Nanode Rf for posting to emoncms.org (SOLVED) | 0 | 3 years 50 weeks ago by jagerp |
n/a | |
| Catchup - Local Serer writing to emoncms.org? | 1 | 4 years 3 days ago by 3chooks |
3 years 51 weeks ago by Jérôme |
|
| rfm12b eagle library | 1 | 4 years 1 day ago by boelle |
4 years 1 day ago by boelle |
|
| 3-phase monitoring and voltage | 2 | 4 years 1 week ago by Tomis |
4 years 1 week ago by Tomis |
|
| Power 3 phase | 1 | 4 years 1 week ago by Guest |
4 years 1 week ago by Robert Wall |
|
| RPi local server sync with remote enomcms | 3 | 4 years 2 weeks ago by Tomis |
4 years 1 week ago by Tomis |
|
| Forward data to remote emoncms server | 5 | 4 years 2 weeks ago by Jérôme |
4 years 2 weeks ago by Jérôme |
|
| trouble with rfm12b | 3 | 4 years 3 weeks ago by Guest |
4 years 3 weeks ago by TrystanLea |
|
| raspberrypi&RFM12Pi | 7 | 4 years 5 weeks ago by Tomis |
4 years 3 weeks ago by Guest |
|
| Gas m3 to kWh | 0 | 4 years 3 weeks ago by StuntMonkeh |
n/a | |
| Finding the 3.5mm jack socket. | 5 | 4 years 27 weeks ago by Guest |
4 years 4 weeks ago by Guest |
|
| Message RS232 between RFM2PI and Raspberry | 0 | 4 years 4 weeks ago by Guest |
n/a | |
| AC Monitoring and Powering at same time | 1 | 4 years 4 weeks ago by Guest |
4 years 4 weeks ago by Robert Wall |
|
| Emoncms and local server LINUX | 0 | 4 years 4 weeks ago by Guest |
n/a | |
| Troubles with emoncms.org | 0 | 4 years 4 weeks ago by StuntMonkeh |
n/a | |
| Minicom not working | 18 | 4 years 9 weeks ago by Guest |
4 years 4 weeks ago by Guest |
|
| Open Kontrol Gateway | 6 | 4 years 5 weeks ago by PaulOckenden |
4 years 4 weeks ago by Robert Wall |


Search through the various artists here and book one.


This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information. Learn more
Home address: Kabul, Afghanistan
Marital status: Married to Zainab Sultani
Lives in: UN compound, Green Zone, Baghdad, Iraq
Works with: UNHCR since Jan 2013, Baghdad, Iraq
Job title: Associate IMO, CCCM Cluster
Phone Number: +964-7809207278 in Iraq
Phone Number: +93-793056076 in Afghanistan
Graduated from: University of Pune, Pune, India
Studied: Computer Science at UoP, Pune, India
Official email address<EMAIL_ADDRESS>Personal email address<EMAIL_ADDRESS>Exercise frequency: Going to gym 5/7 days
Languages: Farsi, English, Arabic, Urdu
Countries travelled: France, Italy, Turkey, UAE, Jordan, Iraq, India & Pakistan
CV: Please click here to download my CV.
“
Don't believe anything that you read on the internet, it may be fake.
Abraham Lincoln
896 ❤
“
Don't believe anything that you read on the internet, it may be fake.
Abraham Lincoln
896 ❤
© 2017 - All rights reserved


|
MoveToCode
|
Static Public Member Functions | |
| static bool | TryGetHandRayEndPoint (Handedness handedness, out Vector3 endPoint) |
| Tries to get the end point of a hand ray. More... | |
| static bool | TryGetMotionControllerEndPoint (Handedness handedness, out Vector3 endPoint) |
| Tries to get the end point of a motion controller. More... | |
| static bool | TryGetPointerEndpoint< T > (Handedness handedness, InputSourceType inputType, out Vector3 endPoint) |
| Tries to get the end point of a pointer by source type and handedness. More... | |
| static bool | TryGetPointerEndpoint< T > (Handedness handedness, out Vector3 endPoint) |
| Tries to get the end point of a pointer of a pointer type and handedness. More... | |
| static T | GetPointer< T > (Handedness handedness) |
| Find the first detected pointer of the given type with matching handedness. More... | |
| static IEnumerable< T > | GetPointers< T > (Handedness handedness=Handedness.Any) |
| Returns iterator over all pointers of specific type, with specific handedness. More... | |
| static IEnumerable< T > | GetPointers< T > (Handedness handedness, InputSourceType sourceType) |
| Returns all pointers with given handedness and input type. More... | |
| static IEnumerable< IMixedRealityPointer > | GetPointers () |
| Iterate over all pointers in the input system. More... | |
| static PointerBehavior | GetPointerBehavior< T > (Handedness handedness, InputSourceType inputSourceType) |
| Queries input system for the behavior of a given pointer type. More... | |
| static void | SetHandRayPointerBehavior (PointerBehavior pointerBehavior, Handedness handedness=Handedness.Any) |
| Sets the behavior for the hand ray with given handedness More... | |
| static void | SetMotionControllerRayPointerBehavior (PointerBehavior pointerBehavior, Handedness handedness=Handedness.Any) |
| Sets the behavior for the motion controller ray with given handedness More... | |
| static void | SetHandGrabPointerBehavior (PointerBehavior pointerBehavior, Handedness handedness=Handedness.Any) |
| Sets the behavior for the grab pointer with given handedness. More... | |
| static void | SetHandPokePointerBehavior (PointerBehavior pointerBehavior, Handedness handedness=Handedness.Any) |
| Sets the behavior for the poke pointer with given handedness. More... | |
| static void | SetGazePointerBehavior (PointerBehavior pointerBehavior) |
| Sets the behavior for the gaze pointer. More... | |
| static void | SetPointerBehavior< T > (PointerBehavior pointerBehavior, Handedness handedness=Handedness.Any) |
| Sets the pointer behavior for pointer of type T, for all input types. More... | |
| static void | SetPointerBehavior< T > (PointerBehavior pointerBehavior, InputSourceType sourceType, Handedness handedness=Handedness.Any) |
| Sets the behavior for the given pointer type and input type. More... | |
|
static |
Find the first detected pointer of the given type with matching handedness.
| T | : | class | |
| T | : | IMixedRealityPointer |
|
static |
Queries input system for the behavior of a given pointer type.
See
.
| T | Type of pointer to query |
| handedness | Handedness to query |
| T | : | class | |
| T | : | IMixedRealityPointer |
|
static |
Iterate over all pointers in the input system.
May contain duplicates.
|
static |
Returns all pointers with given handedness and input type.
| handedness | Handedness of pointer |
| sourceType | Only return pointers of this input source type |
| T | : | IMixedRealityPointer |
|
static |
Returns iterator over all pointers of specific type, with specific handedness.
| T | Return only pointers with this input type |
| handedness | Handedness of pointer |
| T | : | IMixedRealityPointer |
|
static |
Sets the behavior for the gaze pointer.
| pointerBehavior | Desired . |
|
static |
Sets the behavior for the grab pointer with given handedness.
| pointerBehavior | Desired . |
| handedness | Specify handedness to restrict to only right, left. |
|
static |
Sets the behavior for the poke pointer with given handedness.
| pointerBehavior | Desired . |
| handedness | Specify handedness to restrict to only right, left. |
|
static |
Sets the behavior for the hand ray with given handedness
| pointerBehavior | Desired . |
| handedness | Specify handedness to restrict to only right, left hands. |
|
static |
Sets the behavior for the motion controller ray with given handedness
| pointerBehavior | Desired . |
| handedness | Specify handedness to restrict to only right, left. |
|
static |
Sets the pointer behavior for pointer of type T, for all input types.
| T | All pointer types that equal or derive from this type will be set. |
| pointerBehavior | Desired . |
| handedness | Specify handedness to restrict to only right, left. |
| T | : | class | |
| T | : | IMixedRealityPointer |
|
static |
Sets the behavior for the given pointer type and input type.
| T | All pointer types that equal or derive from this type will be set. |
| pointerBehavior | Desired . |
| sourceType | Allows setting different behaviors for different input types (hands, controllers, etc.) |
| handedness | Specify handedness to restrict to only right, left. |
| T | : | class | |
| T | : | IMixedRealityPointer |
|
static |
Tries to get the end point of a hand ray.
If no hand ray of given handedness is found, returns false and sets result to zero.
| handedness | Handedness of ray |
| endPoint | The output position |
|
static |
Tries to get the end point of a motion controller.
If no pointer of given handedness is found, returns false and sets result to zero.
| handedness | Handedness of ray |
| endPoint | The output position |
|
static |
Tries to get the end point of a pointer by source type and handedness.
If no pointer of given handedness is found, returns false and sets result to zero.
| T | Type of pointer to query |
| handedness | Handedness of pointer |
| inputType | Input type of pointer |
| endPoint | Output point position |
| T | : | IMixedRealityPointer |
|
static |
Tries to get the end point of a pointer of a pointer type and handedness.
If no pointer of given handedness is found, returns false and sets result to zero.
| T | Type of pointer to query |
| handedness | Handedness of pointer |
| endPoint | The output point position |
| T | : | class | |
| T | : | IMixedRealityPointer |


the sea explorer
medium 7-day tour
Exploring the jaw-dropping US east coast by foot and by boat
miami,USA
June 2021
4 stops
15 people
THE FOREST HIKER
EASY 5-DAY TOUR
Breathtaking hike through the Canadian Banff National Park
Banff, CAN
April 2021
3 stops
25 people
THE PARK CAMPER
MEDIUM 10-DAY TOUR
Breathing in Nature in America's most spectacular National Parks
Las Vegas, USA
August 2021
4 stops
15 people
THE CITY WANDERER
EASY 9-DAY TOUR
Living the life of Wanderlust in the US' most beatiful cities
NYC, USA
March 2021
3 stops
20 people
THE SNOW ADVENTURER
DIFFICULT 4-DAY TOUR
Exciting adventure in the snow with snowboarding and skiing
Aspen, USA
January 2022
2 stops
10 people
THE SPORTS LOVER
DIFFICULT 14-DAY TOUR
Surfing, skating, parajumping, rock climbing and more, all in one
tour
California, USA
July 2021
5 stops
8 people
THE STAR GAZER
MEDIUM 9-DAY TOUR
The most remote and stunningly beautiful places for seeing the
night sky
Utah, USA
March 2021
3 stops
8 people
THE WINE TASTER
EASY 5-DAY TOUR
Exquisite wines, scenic views, exclusive barrel tastings, and much
more
California, USA
February 2021
3 stops
8 people
THE NORTHERN LIGHTS
EASY 3-DAY TOUR
Enjoy the Northern Lights in one of the best places in the world
Yellowknife, CAN
December 2021
1 stops
12 people
THE MOUNTAIN BIKER
MEDIUM 5-DAY TOUR
Exploring the jaw-dropping US east coast by foot and by boat
Miami, USA
June 2021
4 stops
10 people


apache_beam.io.gcp.datastore.v1 package¶
Submodules¶
apache_beam.io.gcp.datastore.v1.datastoreio module¶
A connector for reading from and writing to Google Cloud Datastore
-
class
apache_beam.io.gcp.datastore.v1.datastoreio.
ReadFromDatastore
(project, query, namespace=None, num_splits=0)[source]¶ Bases:
apache_beam.transforms.ptransform.PTransform
A
PTransform
for reading from Google Cloud Datastore.To read a
PCollection[Entity]
from a Cloud DatastoreQuery
, useReadFromDatastore
transform by providing a project id and a query to read from. You can optionally provide a namespace and/or specify how many splits you want for the query through num_splits option.Note: Normally, a runner will read from Cloud Datastore in parallel across many workers. However, when the query is configured with a limit or if the query contains inequality filters like GREATER_THAN, LESS_THAN etc., then all the returned results will be read by a single worker in order to ensure correct data. Since data is read from a single worker, this could have significant impact on the performance of the job.
- The semantics for the query splitting is defined below:
1. If num_splits is equal to 0, then the number of splits will be chosen dynamically at runtime based on the query data size.
2. Any value of num_splits greater than ReadFromDatastore._NUM_QUERY_SPLITS_MAX will be capped at that value.
3. If the query has a user limit set, or contains inequality filters, then num_splits will be ignored and no split will be performed.
4. Under certain cases Cloud Datastore is unable to split query to the requested number of splits. In such cases we just use whatever the Cloud Datastore returns.
See https://developers.google.com/datastore/ for more details on Google Cloud Datastore.
-
class
ReadFn
(project, namespace=None)[source]¶ Bases:
apache_beam.transforms.core.DoFn
A DoFn that reads entities from Cloud Datastore, for a given query.
-
class
ReadFromDatastore.
SplitQueryFn
(project, query, namespace, num_splits)[source]¶ Bases:
apache_beam.transforms.core.DoFn
A DoFn that splits a given query into multiple sub-queries.
-
static
ReadFromDatastore.
get_estimated_num_splits
(project, namespace, query, datastore)[source]¶ Computes the number of splits to be performed on the given query.
-
static
ReadFromDatastore.
get_estimated_size_bytes
(project, namespace, query, datastore)[source]¶ Get the estimated size of the data returned by the given query.
Cloud Datastore provides no way to get a good estimate of how large the result of a query is going to be. Hence we use the __Stat_Kind__ system table to get size of the entire kind as an approximate estimate, assuming exactly 1 kind is specified in the query. See https://cloud.google.com/datastore/docs/concepts/stats.
-
static
ReadFromDatastore.
query_latest_statistics_timestamp
(project, namespace, datastore)[source]¶ Fetches the latest timestamp of statistics from Cloud Datastore.
Cloud Datastore system tables with statistics are periodically updated. This method fethes the latest timestamp (in microseconds) of statistics update using the __Stat_Total__ table.
apache_beam.io.gcp.datastore.v1.datastoreio_test module¶
-
class
apache_beam.io.gcp.datastore.v1.datastoreio_test.
DatastoreioTest
(methodName='runTest')[source]¶ Bases:
unittest.case.TestCase
-
check_estimated_size_bytes
(entity_bytes, timestamp, namespace=None)[source]¶ A helper method to test get_estimated_size_bytes
-
test_SplitQueryFn_with_exception
()[source]¶ A test that verifies that no split is performed when failures occur.
-
apache_beam.io.gcp.datastore.v1.fake_datastore module¶
Fake datastore used for unit testing.
-
apache_beam.io.gcp.datastore.v1.fake_datastore.
create_commit
(mutations)[source]¶ A fake Datastore commit method that writes the mutations to a list.
Parameters: mutations – A list to write mutations to. Returns: A fake Datastore commit method
-
apache_beam.io.gcp.datastore.v1.fake_datastore.
create_entities
(count)[source]¶ Creates a list of entities with random keys.
-
apache_beam.io.gcp.datastore.v1.fake_datastore.
create_response
(entities, end_cursor, finish)[source]¶ Creates a query response for a given batch of scatter entities.
-
apache_beam.io.gcp.datastore.v1.fake_datastore.
create_run_query
(entities, batch_size)[source]¶ A fake datastore run_query method that returns entities in batches.
Note: the outer method is needed to make the entities and batch_size available in the scope of fake_run_query method.
Parameters: - entities – list of entities supposed to be contained in the datastore.
- batch_size – the number of entities that run_query method returns in one request.
apache_beam.io.gcp.datastore.v1.helper module¶
Cloud Datastore helper functions.
-
class
apache_beam.io.gcp.datastore.v1.helper.
QueryIterator
(project, namespace, query, datastore)[source]¶ Bases:
object
A iterator class for entities of a given query.
Entities are read in batches. Retries on failures.
-
apache_beam.io.gcp.datastore.v1.helper.
compare_path
(p1, p2)[source]¶ A comparator for key path.
A path has either an id or a name field defined. The comparison works with the following rules:
1. If one path has id defined while the other doesn’t, then the one with id defined is considered smaller. 2. If both paths have id defined, then their ids are compared. 3. If no id is defined for both paths, then their names are compared.
-
apache_beam.io.gcp.datastore.v1.helper.
fetch_entities
(project, namespace, query, datastore)[source]¶ A helper method to fetch entities from Cloud Datastore.
Parameters: - project – Project ID
- namespace – Cloud Datastore namespace
- query – Query to be read from
- datastore – Cloud Datastore Client
Returns: An iterator of entities.
-
apache_beam.io.gcp.datastore.v1.helper.
get_datastore
(project)[source]¶ Returns a Cloud Datastore client.
-
apache_beam.io.gcp.datastore.v1.helper.
is_key_valid
(key)[source]¶ Returns True if a Cloud Datastore key is complete.

Comparison is only valid for keys in the same partition. The comparison here is between the list of paths for each key.
-
apache_beam.io.gcp.datastore.v1.helper.
make_kind_stats_query
(namespace, kind, latest_timestamp)[source]¶ Make a Query to fetch the latest kind statistics.
-
apache_beam.io.gcp.datastore.v1.helper.
make_latest_timestamp_query
(namespace)[source]¶ Make a Query to fetch the latest timestamp statistics.
-
apache_beam.io.gcp.datastore.v1.helper.
make_partition
(project, namespace)[source]¶ Make a PartitionId for the given project and namespace.
-
apache_beam.io.gcp.datastore.v1.helper.
make_request
(project, namespace, query)[source]¶ Make a Cloud Datastore request for the given query.
-
apache_beam.io.gcp.datastore.v1.helper.
retry_on_rpc_error
(exception)[source]¶ A retry filter for Cloud Datastore RPCErrors.
-
apache_beam.io.gcp.datastore.v1.helper.
write_mutations
(datastore, project, mutations)[source]¶ A helper function to write a batch of mutations to Cloud Datastore.
If a commit fails, it will be retried upto 5 times. All mutations in the batch will be committed again, even if the commit was partially successful. If the retry limit is exceeded, the last exception from Cloud Datastore will be raised.
apache_beam.io.gcp.datastore.v1.helper_test module¶
Tests for datastore helper.
-
class
apache_beam.io.gcp.datastore.v1.helper_test.
HelperTest
(methodName='runTest')[source]¶ Bases:
unittest.case.TestCase
apache_beam.io.gcp.datastore.v1.query_splitter module¶
Implements a Cloud Datastore query splitter.
-
apache_beam.io.gcp.datastore.v1.query_splitter.
get_splits
(datastore, query, num_splits, partition=None)[source]¶ Returns a list of sharded queries for the given Cloud Datastore query.
This will create up to the desired number of splits, however it may return less splits if the desired number of splits is unavailable. This will happen if the number of split points provided by the underlying Datastore is less than the desired number, which will occur if the number of results for the query is too small.
This implementation of the QuerySplitter uses the __scatter__ property to gather random split points for a query.
Note: This implementation is derived from the java query splitter in https://github.com/GoogleCloudPlatform/google-cloud-datastore/blob/master/java/datastore/src/main/java/com/google/datastore/v1/client/QuerySplitterImpl.java
Parameters: - datastore – the datastore client.
- query – the query to split.
- num_splits – the desired number of splits.
- partition – the partition the query is running in.
Returns: A list of split queries, of a max length of num_splits
apache_beam.io.gcp.datastore.v1.query_splitter_test module¶
Cloud Datastore query splitter test.
-
class
apache_beam.io.gcp.datastore.v1.query_splitter_test.
QuerySplitterTest
(methodName='runTest')[source]¶ Bases:
unittest.case.TestCase
-
check_get_splits
(query, num_splits, num_entities, batch_size)[source]¶ A helper method to test the query_splitter get_splits method.
Parameters: - query – the query to be split
- num_splits – number of splits
- num_entities – number of scatter entities contained in the fake datastore.
- batch_size – the number of entities returned by fake datastore in one req.
-
static
create_scatter_requests
(query, num_splits, batch_size, num_entities)[source]¶ Creates a list of expected scatter requests from the query splitter.
This list of requests returned is used to verify that the query splitter made the same number of requests in the same order to datastore.
-
test_get_splits_with_batch_size_exact_multiple
()[source]¶ Test get_splits when num scatter keys is a multiple of batch size.
-


| FILTER_ACCEPT |
Accept the node. Navigation methods defined for
NodeIterator or TreeWalker will return this node. |
|
FILTER_REJECT |
Reject the node. Navigation methods defined for
NodeIterator or TreeWalker will not return this
node. For TreeWalker, the children of this node will
also be rejected. Iterators treat this as a synonym
for FILTER_SKIP. |
| FILTER_SKIP |
Reject the node. Navigation methods defined for
NodeIterator or TreeWalker will not return this
node. For both NodeIterator and Treewalker, the
children of this node will still be considered. |


Places that have been updated recently
{% if err_days %}
That is a awkward number of days to look for recently updated places. Please specify a number between {{ min_days | number_format | e}} and {{max_days | number_format|e }} days, okay?
{% else %}
{% if pagination.total == 1 %}
{% if days == 1 %}
There is one place that has been updated in the last day
{% else %}
There is one place that has been updated in the last {{ days | number_format|e }} days
{% endif %}
{% elif pagination.total > 1 %}
{% if days == 1 %}
There are {{ pagination.total |number_format|e }} places that have been updated in the last day
{% else %}
There are {{ pagination.total |number_format|e }} places that have been updated in the last {{ days | number_format|e }} days
{% endif %}
{% if pagination.pages > 1 %}
{% if pagination.cursor %}
and this is one page of many
{% else %}
and this is page {{ pagination.page |number_format|e }} of {{ pagination.pages |number_format|e }}
{% endif %}
{% endif %}
{% else %}{% endif %}
{% if error and error.type=="search_context_missing_exception" %}
{% set query = 'places that have been updated recently' %}
{% include "inc_pagination_expired.html" %}
{% else %}
{% if pagination.total == 0 %}
{% if days == 1 %}
There aren't any places that have been updated in the last day
{% else %}
There aren't any places that have been updated in the last {{ days | number_format|e }} days
{% endif %}
{% else %}
{% include "inc_docs.html" %}
{% endif %}
{% endif %}
{% endif %}


Over the summer
What is changing?
In response to Staff and Student requests, Learning Space will undergo some changes. Most noticeably this will offer:
- Consistent approach in the online learning experience
- Improved user experience through a more streamlined interface
- Better support for mobile devices
- Easier resource management
What are your choices?
The following options are available to all Modules, please note Option A will greatly benefit our Students:
Option A -Fresh Start
ET will help you get the best out of the new Learning Space by offering:
- Consultation
- Best Practice guidance
- Providing a USB Stick with pre-existing Content
- Providing a clean Module ready to go
- Training to suit your needs
- Continued one 2 one sessions as usual
Option B – Bring your old module structure
We will try to make it fit by offering:
- Best Practice guidance
- You will inherit all your old files (including unwanted data)
- Training to suit your needs
- Continued one 2 one sessions
Whilst we will endeavour to find you and help you through this change, please make contact with Damien to schedule the best time to suit you and your team.
<EMAIL_ADDRESS>Sessions
These presentation sessions will provide you with key information relating to the move and include Q&A. It is recommended that all staff attend a session between 6th-12th June.
Find a session


Work together as a team to solve puzzles. Escape the room before time runs out.
{{title}}
{{text}}
Ready, Set, Go...


Here are true facts about the Tarzier. If you had a staring contest with the Tarzier it probably wouldn't understand a word you were saying. But it would stare back at you, and you would think that was apropos. The Tarzier would not understand a word you said, and would probably just make a pee-pee.


{% extends "base.html" %} {% block content %}
Registering email: {{ email }}
Add this email to an existing poster: Select a poster name... {% for poster in posters %} {{ poster.name }} {% endfor %}
Create a new poster with this email and name:


Introduced by 丁戍
13307130299
Google is a company with its own culture and work style.
Working at Google can be really comfortable.
Let me show you some pictures.
Google allows employees taking 20% of their time
to work on their own interests.
So Googlers created many cool projects.
Google Earth & Street View
A satellite photo of Fudan University from Google Earth
360° street-level views of Baker St.
You can look and walk around just like in a computer game.
3D models of city buildings and topographic.
Google Glass & Self-Driving Car
Google Glass: "the future of smart device"
Google builds self-driving car to improve their map services.
Thank you.


Through the user interviews I was able to really gain insight into the perspective of potential employers, friends, fellow prospects, etc. I hadn’t considered many things I had found through the user interviews. For example, the aesthetics of a website and personalization really mattered to those I interviewed. However I also should focus on content just as much.
Another important thing I learned from the user interviews is actually, how not to do them. I realize I asked many not relevant questions during the interviews that weren’t beneficial to the problem at hand. Overall, I learned to ask more specific questions, and always ask questions in between the interview process as well.
A competitor analysis allows me to identify those competitors in the same field as me with portfolios as well. I evaluated their strategies and how certain things worked for them or didn’t. Because I didn’t have much experience building websites I also used this to help me get a grasp of how to design my own website.
I analyzed 3 different competitors.
|
The feature value matrix helps rank features of the website on varying qualities, so that all stakeholders can understand the product needs and possibilities.
|
I prioritized the features based on the level of technical effort due to the fact that I was new to html/CSS. I started with what I knew and went on as I learned. Thus the lower technical effort features were prioritized.
User stories allowed me to think in the perspective of different users. I was able to think the varying ways that people who visit my website are going to be thinking. I incorporated what I learned already about my users into these stories to assess what I know what the user wants and for what reasons. I tried to include the most important users, such as the hiring manager, recruiting company, and interviewer.
A cognitive walkthrough is a one of many usability evaluation methods. It allows one to visually see exactly how a user goes through a series of tasks all while asking them why they choose to do certain things. Overall it is to gain insight into the perspective of the user. While conducting these interviews the challenges I faced was first if all scheduling these walkthroughs. One of mine was cancelled time, therefore this was my first challenge.
Before the walkthrough I also had difficulty designing the question and tasks for it. I wasn’t aware what I wanted to ask the user. However, during the cognitive walkthrough, I was able to come up with questions on the spot to support my testing. I had no difficulties during the walkthrough and those went smoothly. The only concern I had was that I wasn’t documenting enough information down as the users performed tasks.
The user tests I found to be the most helpful and intriguing. I conducted two types of tests; one was the click test and then the question tests. I choose them because I wanted to make sure that my navigation bar was working correctly and that the user can accurately identify the where certain information is. I had complications with my navigation bar so learned from the test to change it. I choose the question tests because I wanted to hear a broad answer from users. I wanted to ask general question about the main page because I felt uncertain about its structure, content, and general formatting. My test results for the question test revealed that I needed to add headings, which I am still working on implementing to the whole site.
I was able to learn a lot from every part of user research and testing. I believe the research was really important. I had originally underestimated it, and not prepared well enough. I realized if I don’t prepare well with user research then user testing will be tougher. My research was lacking seeing as I don’t believe my user interview questions were as useful as they should’ve been.
From the user interviews and the competitor analysis, I learned how to first of identify my user as well as incorporate that into the rest of the process. I really had to start considering how those I am competing with think. I had always known there are many other people also attempting to get the same jobs as me however I never realized the extent of it. I really researched many other portfolios to see how others incorporated a bit of themselves and personalized their websites.
As a stakeholder to my own website the feature value matrix really allowed me to weigh the pros and cons of each individual feature I had wanted to incorporate. I realized some things I wanted to include just couldn’t or shouldn’t be included because the development effort would be too much for the scope of time I had.
Overall I constantly learned to keep updating the website to suit the needs of my users, which ultimately benefit me.
From my findings, I decided to change a lot of things; many of which I did not get a chance to change. First of all, my original navigation bar glitches at times; there was complications with my old navigation bar; it would not center correctly and was working well in the mobile version therefore I replaced it with a simpler implementation of a navigation with bootstrap. Thus, I did make another one however I plan to modify it to fit in with the rest of the website. One user also suggested I create labels throughout to help them identify exactly what section of the website they are at. I have included it in most pages but working on having it everywhere. Another minor thing is the color scheme I am using, It was said in my cognitive walkthroughs that it was too bright, thus I will most likely be changing it to blue, which will portray more professionalism according to articles I have read.
Next, some users expected the pictures to be clickable or have more detail, so I plan to either make them clickable or add a small description. For example, I will add a caption to the interests’ pictures to help distinguish what each picture means. Another thing I realized needs fixing is the placement of the technical skills. I plan to move them to the projects section and place them to what project I used or learned them at accordingly.
It was suggested to me to include more projects as well to my projects page because it seemed empty, so I included a project I am currently working on and plan to add more past projects soon. Another change will be made in the contact page. I plan to drastically change that page, because it is very different from the rest of the website. It was said that it was out of place. From the in-class presentations I learned that I can also have the contact information constantly appear at the bottom as a footer, which is something I plan to do. I believe that will help keep my website consistent. Overall through my interviews, cognitive walkthrough etc. I realize my content is lacking, so I will be slowly adding more as I gain more experience. As well as I will continue to modify my content by providing more details with what I have now.


T
- The type of the class associated with this query.public class ParseQuery<T extends ParseObject>
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
class |
ParseQuery.RelationConstraint
This class defines a relation constraint that is used when specifying
many-to-many relations.
|
| Modifier and Type | Method and Description |
|---|---|
ParseQuery<T> |
addAscendingOrder(java.lang.String key)
Also sorts the results in ascending order by the given key.
|
ParseQuery<T> |
addDescendingOrder(java.lang.String key)
Also sorts the results in descending order by the given key.
|
int |
count()
Counts the number of objects that match this query.
|
ca.weblite.codename1.json.JSONObject |
encode()
Encodes this query as a JSON object.
|
java.util.List<T> |
find()
Retrieves a list of ParseObjects that satisfy this query.
|
T |
get(java.lang.String objectId)
Constructs a ParseObject whose id is already known by fetching data from
the source.
|
java.lang.String |
getClassName()
Accessor for the class name.
|
java.util.List<java.lang.String> |
getIncludes()
Accessor for the included nested ParseObjects.
|
int |
getLimit()
Accessor for the limit.
|
static <T extends ParseObject> |
getOrQuery(java.util.Collection<ParseQuery> queries)
Create a ParseQuery whose where-clause is the disjunction of the
where-clauses of the provided
queries . |
static <T extends ParseObject> |
getQuery(java.lang.Class<T> subclass)
Creates a ParseQuery for the specified sub-class.
|
static <T extends ParseObject> |
getQuery(java.lang.String className)
Creates a ParseQuery for the ParseObject sub-class with the specified
name..
|
int |
getSkip()
Accessor for the setSkip.
|
ParseQuery<T> |
include(java.lang.String key)
Include nested ParseObjects for the provided key.
|
ParseQuery<T> |
orderByAscending(java.lang.String key)
Sorts the results in ascending order by the given key.
|
ParseQuery<T> |
orderByDescending(java.lang.String key)
Sorts the results in descending order by the given key.
|
static java.lang.String |
quote(java.lang.String s)
Returns a literal pattern String for the specified String.
|
ParseQuery<T> |
selectKeys(java.util.Collection<java.lang.String> keys)
Restrict the fields of returned ParseObjects to only include the provided
keys.
|
ParseQuery<T> |
setCaseSensitive(boolean caseSensitive)
Determines whether string constraints should be case-sensitive (default)
or case-insensitive.
|
ParseQuery<T> |
setLimit(int newLimit)
Controls the maximum number of results that are returned.
|
ParseQuery<T> |
setSkip(int newSkip)
Controls the number of results to setSkip before returning any results.
|
ParseQuery<T> |
whereContainedIn(java.lang.String key,
java.util.Collection<? extends java.lang.Object> values)
Add a constraint to the query that requires a particular key's value to
be contained in the provided list of values.
|
ParseQuery<T> |
whereContains(java.lang.String key,
java.lang.String substring)
Add a constraint for finding string values that contain a provided
string.
|
ParseQuery<T> |
whereContainsAll(java.lang.String key,
java.util.Collection<?> values)
Add a constraint to the query that requires a particular key's value to
contain every one of the provided list of values.
|
ParseQuery<T> |
whereDoesNotExist(java.lang.String key)
Add a constraint for finding objects that do not contain a given key.
|
ParseQuery<T> |
whereDoesNotMatchKeyInQuery(java.lang.String key,
java.lang.String keyInQuery,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value does
not match any value for a key in the results of another ParseQuery.
|
ParseQuery<T> |
whereDoesNotMatchQuery(java.lang.String key,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value does
not match another ParseQuery.
|
ParseQuery<T> |
whereEndsWith(java.lang.String key,
java.lang.String suffix)
Add a constraint for finding string values that end with a provided
string.
|
ParseQuery<T> |
whereEqualTo(java.lang.String key,
java.lang.Object value)
Add a constraint to the query that requires a particular key's value to
be equal to the provided value.
|
ParseQuery<T> |
whereExists(java.lang.String key)
Add a constraint for finding objects that contain the given key.
|
ParseQuery<T> |
whereGreaterThan(java.lang.String key,
java.lang.Object value)
Add a constraint to the query that requires a particular key's value to
be greater than the provided value.
|
ParseQuery<T> |
whereGreaterThanOrEqualTo(java.lang.String key,
java.lang.Object value)
Add a constraint to the query that requires a particular key's value to
be greater than or equal to the provided value.
|
ParseQuery<T> |
whereLessThan(java.lang.String key,
java.lang.Object value)
Add a constraint to the query that requires a particular key's value to
be less than the provided value.
|
ParseQuery<T> |
whereLessThanOrEqualTo(java.lang.String key,
java.lang.Object value)
Add a constraint to the query that requires a particular key's value to
be less than or equal to the provided value.
|
ParseQuery<T> |
whereMatches(java.lang.String key,
java.lang.String regex)
Add a regular expression constraint for finding string values that match
the provided regular expression.
|
ParseQuery<T> |
whereMatches(java.lang.String key,
java.lang.String regex,
java.lang.String modifiers)
Add a regular expression constraint for finding string values that match
the provided regular expression.
|
ParseQuery<T> |
whereMatchesKeyInQuery(java.lang.String key,
java.lang.String keyInQuery,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value
matches a value for a key in the results of another ParseQuery.
|
ParseQuery<T> |
whereMatchesQuery(java.lang.String key,
ParseQuery<?> query)
Add a constraint to the query that requires a particular key's value
match another ParseQuery.
|
ParseQuery<T> |
whereNear(java.lang.String key,
ParseGeoPoint point)
Add a proximity based constraint for finding objects with key point
values near the point given.
|
ParseQuery<T> |
whereNotContainedIn(java.lang.String key,
java.util.Collection<? extends java.lang.Object> values)
Add a constraint to the query that requires a particular key's value not
to be contained in the provided list of values.
|
ParseQuery<T> |
whereNotEqualTo(java.lang.String key,
java.lang.Object value)
Add a constraint to the query that requires a particular key's value to
be not equal to the provided value.
|
ParseQuery<T> |
whereRelatedTo(ParseObject parent,
java.lang.String key)
Add a constraint for finding objects that are related to
parent
by the given key . |
ParseQuery<T> |
whereStartsWith(java.lang.String key,
java.lang.String prefix)
Add a constraint for finding string values that start with a provided
string.
|
ParseQuery<T> |
whereWithinGeoBox(java.lang.String key,
ParseGeoPoint southwest,
ParseGeoPoint northeast)
Add a constraint to the query that requires a particular key's
coordinates be contained within a given rectangular geographic bounding
box.
|
ParseQuery<T> |
whereWithinKilometers(java.lang.String key,
ParseGeoPoint point,
double maxDistance)
Add a proximity-based constraint for finding objects with key point
values near the point given and within the maximum distance given.
|
ParseQuery<T> |
whereWithinMiles(java.lang.String key,
ParseGeoPoint point,
double maxDistance)
Add a proximity-based constraint for finding objects with key point
values near the point given and within the maximum distance given.
|
ParseQuery<T> |
whereWithinRadians(java.lang.String key,
ParseGeoPoint point,
double maxDistance)
Add a proximity based constraint for finding objects with key point
values near the point given and within the maximum distance given.
|
public static <T extends ParseObject> ParseQuery<T> getQuery(java.lang.Class<T> subclass)
subclass
needs to have been registered via
ParseRegistry.registerSubclass(java.lang.Class, java.lang.String)
.T
- The type of the class to be associated with the newly created
query.subclass
- The ParseObject subclass type.public static <T extends ParseObject> ParseQuery<T> getQuery(java.lang.String className)
T
- The type of the class to be associated with the newly created
query.className
- The ParseObject subclass name.public static <T extends ParseObject> ParseQuery<T> getOrQuery(java.util.Collection<ParseQuery> queries) throws ParseException
queries
.T
- The type of the class to be associated with the newly created
query.queries
- A collection of at least two queries to be combined. Each
of these queries must have a non-empty 'where' clause and have the same class.ParseException
- if the queries
are not at least two, any
of them is missing a where-clause, or the target class is different.public ParseQuery<T> whereEqualTo(java.lang.String key, java.lang.Object value)
key
- The key to check.value
- The value that the ParseObject must contain.this
object so that calls can be chained.public ParseQuery<T> whereLessThan(java.lang.String key, java.lang.Object value)
key
- The key to check.value
- The value that provides an upper bound.this
object so that calls can be chained.public ParseQuery<T> whereNotEqualTo(java.lang.String key, java.lang.Object value)
key
- The key to check.value
- The value that must not be equalled.this
object so that calls can be chained.public ParseQuery<T> whereGreaterThan(java.lang.String key, java.lang.Object value)
key
- The key to check.value
- The value that provides a lower bound.this
object so that calls can be chained.public ParseQuery<T> whereLessThanOrEqualTo(java.lang.String key, java.lang.Object value)
key
- The key to check.value
- The value that provides an upper bound.this
object so that calls can be chained.public ParseQuery<T> whereGreaterThanOrEqualTo(java.lang.String key, java.lang.Object value)
key
- The key to check.value
- The value that provides a lower bound.this
object so that calls can be chained.public ParseQuery<T> whereContainedIn(java.lang.String key, java.util.Collection<? extends java.lang.Object> values)
key
- The key to check.values
- The values that will match.this
object so that calls can be chained.public ParseQuery<T> whereNotContainedIn(java.lang.String key, java.util.Collection<? extends java.lang.Object> values)
key
- The key to check.values
- The values that will not match.this
object so that calls can be chained.public ParseQuery<T> whereContainsAll(java.lang.String key, java.util.Collection<?> values)
This only works on keys whose values are of array type.
key
- The key to check. This key's value must be an array.values
- The values that will match.this
object so that calls can be chained.public ParseQuery<T> whereMatchesQuery(java.lang.String key, ParseQuery<?> query)
This only works on keys whose values are ParseObjects or lists of ParseObjects.
key
- The key to check.query
- The query that the value should match.this
object so that calls can be chained.public ParseQuery<T> whereDoesNotMatchQuery(java.lang.String key, ParseQuery<?> query)
This only works on keys whose values are ParseObjects or lists of ParseObjects.
key
- The key to check.query
- The query that the value should not matchthis
object so that calls can be chained.public ParseQuery<T> whereMatchesKeyInQuery(java.lang.String key, java.lang.String keyInQuery, ParseQuery<?> query) throws ParseException
key
- The key whose value is being checked.keyInQuery
- The key in the objects from the sub query to look in.query
- The nested query to run.this
object so that calls can be chained.ParseException
- if something goes wrong with creating the
constraint.public ParseQuery<T> whereDoesNotMatchKeyInQuery(java.lang.String key, java.lang.String keyInQuery, ParseQuery<?> query) throws ParseException
key
- The key whose value is being checked and excluded.keyInQuery
- The key in the objects from the sub query to look in.query
- The nested query to run.this
object so that calls can be chained.ParseException
- if something goes wrong with creating the
constraint.public ParseQuery<T> whereNear(java.lang.String key, ParseGeoPoint point)
key
- The key that the ParseGeoPoint is stored in.point
- The reference ParseGeoPoint that is used.this
object so that calls can be chained.public ParseQuery<T> whereWithinMiles(java.lang.String key, ParseGeoPoint point, double maxDistance)
Radius of earth used is 3958.8 miles.
key
- The key that the ParseGeoPoint is stored in.point
- The reference ParseGeoPoint that is used.maxDistance
- Maximum distance (in miles) of results to return.this
object so that calls can be chained.public ParseQuery<T> whereWithinKilometers(java.lang.String key, ParseGeoPoint point, double maxDistance)
Radius of earth used is 6371.0 kilometers.
key
- The key that the ParseGeoPoint is stored in.point
- The reference ParseGeoPoint that is used.maxDistance
- Maximum distance (in kilometers) of results to return.this
object so that calls can be chained.public ParseQuery<T> whereWithinRadians(java.lang.String key, ParseGeoPoint point, double maxDistance)
key
- The key that the ParseGeoPoint is stored in.point
- The reference ParseGeoPoint that is used.maxDistance
- Maximum distance (in radians) of results to return.this
object so that calls can be chained.public ParseQuery<T> whereWithinGeoBox(java.lang.String key, ParseGeoPoint southwest, ParseGeoPoint northeast)
key
- The key to be constrained.southwest
- The lower-left inclusive corner of the box.northeast
- The upper-right inclusive corner of the box.this
object so that calls can be chained.public ParseQuery<T> whereMatches(java.lang.String key, java.lang.String regex)
This may be slow for large datasets.
key
- The key that the string to match is stored in.regex
- The regular expression pattern to match.this
object so that calls can be chained.public ParseQuery<T> whereMatches(java.lang.String key, java.lang.String regex, java.lang.String modifiers)
This may be slow for large datasets.
key
- The key that the string to match is stored in.regex
- The regular expression pattern to match.modifiers
- Any of the following supported PCRE modifiers:
this
object so that calls can be chained.public ParseQuery<T> whereContains(java.lang.String key, java.lang.String substring)
setCaseSensitive(boolean)
to change that before calling this
method.
This will be slow for large datasets.
key
- The key that the string to match is stored in.substring
- The substring that the value must contain.this
object so that calls can be chained.public ParseQuery<T> whereStartsWith(java.lang.String key, java.lang.String prefix)
setCaseSensitive(boolean)
to change that before calling this
method.
This query will use the backend index, so it will be fast even for large datasets.
key
- The key that the string to match is stored in.prefix
- The substring that the value must start with.this
object so that calls can be chained.public ParseQuery<T> whereEndsWith(java.lang.String key, java.lang.String suffix)
setCaseSensitive(boolean)
to change that before calling this
method.
This will be slow for large datasets.
key
- The key that the string to match is stored in.suffix
- The substring that the value must end with.this
object so that calls can be chained.public ParseQuery<T> whereExists(java.lang.String key)
key
- The key that should exist.this
object so that calls can be chained.public ParseQuery<T> whereDoesNotExist(java.lang.String key)
key
- The key that should not exist.this
object so that calls can be chained.public ParseQuery<T> whereRelatedTo(ParseObject parent, java.lang.String key)
parent
by the given key
.parent
- The ParseObject to be used in the relation.key
- The key that should be used in the relation.this
object so that calls can be chained.public ParseQuery<T> include(java.lang.String key)
Use dot notation to specify which fields in the included object that are also fetched.
key
- The key that should be included.this
object so that calls can be chained.public ParseQuery<T> orderByAscending(java.lang.String key)
Note: key
overrides any previous ordering criteria!
Use addAscendingOrder(java.lang.String)
or
addDescendingOrder(java.lang.String)
to concatenate ordering criteria.
key
- The key to order by.this
object so that calls can be chained.public ParseQuery<T> addAscendingOrder(java.lang.String key)
The previous sort keys have precedence over this key.
key
- The key to order by.this
object so that calls can be chained.public ParseQuery<T> orderByDescending(java.lang.String key)
Note: key
overrides any previous ordering criteria!
Use addAscendingOrder(java.lang.String)
or
addDescendingOrder(java.lang.String)
to concatenate ordering criteria.
key
- The key to order by.this
object so that calls can be chained.public ParseQuery<T> addDescendingOrder(java.lang.String key)
The previous sort keys have precedence over this key.
key
- The key to order by.this
object so that calls can be chained.public ParseQuery<T> setLimit(int newLimit)
Setting a negative limit denotes retrieval without a limit. The default limit is 100, with a maximum of 1000 results being returned at a time.
newLimit
- The new limit.this
object so that calls can be chained.public ParseQuery<T> setCaseSensitive(boolean caseSensitive)
caseSensitive
- The new case sensitivity.this
object so that calls can be chained.public int getLimit()
public ParseQuery<T> setSkip(int newSkip)
This is useful for pagination. Default is to setSkip zero results.
newSkip
- The new setSkip.this
object so that calls can be chained.public int getSkip()
public java.lang.String getClassName()
public java.util.List<java.lang.String> getIncludes()
public ParseQuery<T> selectKeys(java.util.Collection<java.lang.String> keys)
If this is called multiple times, then all of the keys specified in each of the calls will be included.
keys
- The set of keys to include in the result.this
object so that calls can be chained.public T get(java.lang.String objectId) throws ParseException
Note: This mutates the ParseQuery.
objectId
- Object id of the ParseObject to fetch.objectId
or
null
if none is found. Note that this deviates from the
corresponding Parse Android API method where an exception is thrown when
there is no such object.ParseException
- if anything goes wrong.public java.util.List<T> find() throws ParseException
ParseException
- if anything goes wrong.public ca.weblite.codename1.json.JSONObject encode() throws ParseException
ParseException
- if anything goes wrong with the conversion to
JSON.public int count() throws ParseException
ParseException
- if anything goes wrong.public static java.lang.String quote(java.lang.String s)
This method produces a String that can be used to getQuery a Pattern that would match the string s as if it were a literal pattern.
Metacharacters or escape sequences in the input sequence will be given no special meaning.
Note: CN1 does not support java.util.regex
and the
substitute CN1 regex class does not have this
method. Hence this replacement from openjdk.
s
- The string to be literalized.


As an organization we give proper importance to education. Because for us education is
one of the most agent of development in society. Our target group is educationally
deprived section of society who are away to taste the fruit of development as they are
lack of education. Our core thinking is to enable an individual to stand on its own for
earning suitable livelihood.
For us education is a medium to transform society, hence our Acharyas
/Teachers serve with a social commitment
Our academic activities are operational in 30 provinces of the country
70555 girls and boys are receiving education in our plenary schools.
Banswara,Bewar of Rajsthan and Tripura are the locations where maximum
schools of our organization are functioning.
To create quality citizens children are imparted training on both
development of knowledge, intelligence and character.
Banswada project under its “Bal gokulam scheme’’ has adopted 135 children
from tribal families. The project takes care of food, clothing, education, accommodation
of the adopted children.
Hostels for needy students are running by organization in states like
Rajsthan, Gujarat, Odisha, Maharastra, Tripura, Mizoram etc.
Computer training centres are dedicated for developing the capability of
students for both educational and professional requirements.
To summarize the work in figure:


David Clark
Web Developer Seattle, WA
I am a Full Stack Web Developer in Seattle, WA. I live my life with an unquenchable thirst for knowledge and improvement, which is what drew me to working with software in the first place. I thrive in environments that match my values – communication, collaboration, omni-directional support.
When I'm AFK, I can usually be found hanging out with my family, our dogs, playing chess with my kiddo, brewing and sharing coffee, or diving headlong into research on some random topic I happened upon. I'm notorious for self-depricating humor and dad jokes, so if you think your team could use more of that (and who doesn't?!), then let's meet up!
Be sure to ask me, "What do you call a litter of Corgi puppies?"
unbound collective
A single-page responsive web app for users to create photo challenges or to submit photos to challenges. Utilizes JWT authorization, the Cloudinary image hosting platform API, and MongoDB.
veghead
User is able to discover nearby vegan restaurants and find resources for further research into vegan diet and lifestyle. Utilizes the Google Maps API, Places Library, and Geocoding Service.
Teo Hannum | Teacher of the Alexander Technique
The client requested a website that was modern and refreshing, but not too far removed from their previous website. The main concerns were accessibility of location and a contact form.


public class CGAlgorithms
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
static int |
CLOCKWISE
A value that indicates an orientation of clockwise, or a right turn.
|
static int |
COLLINEAR
A value that indicates an orientation of collinear, or no turn (straight).
|
static int |
COUNTERCLOCKWISE
A value that indicates an orientation of counterclockwise, or a left turn.
|
static int |
LEFT
A value that indicates an orientation of counterclockwise, or a left turn.
|
static int |
RIGHT
A value that indicates an orientation of clockwise, or a right turn.
|
static int |
STRAIGHT
A value that indicates an orientation of collinear, or no turn (straight).
|
| Constructor and Description |
|---|
CGAlgorithms() |
| Modifier and Type | Method and Description |
|---|---|
static int |
computeOrientation(Coordinate p1,
Coordinate p2,
Coordinate q)
Computes the orientation of a point q to the directed line segment p1-p2.
|
static double |
distanceLineLine(Coordinate A,
Coordinate B,
Coordinate C,
Coordinate D)
Computes the distance from a line segment AB to a line segment CD
Note: NON-ROBUST!
|
static double |
distancePointLine(Coordinate p,
Coordinate[] line)
Computes the distance from a point to a sequence of line segments.
|
static double |
distancePointLine(Coordinate p,
Coordinate A,
Coordinate B)
Computes the distance from a point p to a line segment AB
Note: NON-ROBUST!
|
static double |
distancePointLinePerpendicular(Coordinate p,
Coordinate A,
Coordinate B)
Computes the perpendicular distance from a point p to the (infinite) line
containing the points AB
|
static boolean |
isCCW(Coordinate[] ring)
Computes whether a ring defined by an array of
Coordinate s is
oriented counter-clockwise. |
static boolean |
isOnLine(Coordinate p,
Coordinate[] pt)
Tests whether a point lies on the line segments defined by a list of
coordinates.
|
static boolean |
isPointInRing(Coordinate p,
Coordinate[] ring)
Tests whether a point lies inside or on a ring.
|
static double |
length(CoordinateSequence pts)
Computes the length of a linestring specified by a sequence of points.
|
static int |
locatePointInRing(Coordinate p,
Coordinate[] ring)
Determines whether a point lies in the interior, on the boundary, or in the
exterior of a ring.
|
static int |
orientationIndex(Coordinate p1,
Coordinate p2,
Coordinate q)
Returns the index of the direction of the point
q relative to
a vector specified by p1-p2 . |
static double |
signedArea(Coordinate[] ring)
Computes the signed area for a ring.
|
static double |
signedArea(CoordinateSequence ring)
Computes the signed area for a ring.
|
public static final int CLOCKWISE
public static final int RIGHT
public static final int COUNTERCLOCKWISE
public static final int LEFT
public static final int COLLINEAR
public static final int STRAIGHT
public static int orientationIndex(Coordinate p1, Coordinate p2, Coordinate q)
q
relative to
a vector specified by p1-p2
.p1
- the origin point of the vectorp2
- the final point of the vectorq
- the point to compute the direction topublic static boolean isPointInRing(Coordinate p, Coordinate[] ring)
This method does not first check the point against the envelope of the ring.
p
- point to check for ring inclusionring
- an array of coordinates representing the ring (which must have
first point identical to last point)locatePointInRing
public static int locatePointInRing(Coordinate p, Coordinate[] ring)
This method does not first check the point against the envelope of the ring.
p
- point to check for ring inclusionring
- an array of coordinates representing the ring (which must have
first point identical to last point)Location
of p relative to the ringpublic static boolean isOnLine(Coordinate p, Coordinate[] pt)
public static boolean isCCW(Coordinate[] ring)
Coordinate
s is
oriented counter-clockwise.
ring
- an array of Coordinates forming a ringjava.lang.IllegalArgumentException
- if there are too few points to determine orientation (< 4)public static int computeOrientation(Coordinate p1, Coordinate p2, Coordinate q)
p1
- the first vertex of the line segmentp2
- the second vertex of the line segmentq
- the point to compute the relative orientation ofpublic static double distancePointLine(Coordinate p, Coordinate A, Coordinate B)
p
- the point to compute the distance forA
- one point of the lineB
- another point of the line (must be different to A)public static double distancePointLinePerpendicular(Coordinate p, Coordinate A, Coordinate B)
p
- the point to compute the distance forA
- one point of the lineB
- another point of the line (must be different to A)public static double distancePointLine(Coordinate p, Coordinate[] line)
p
- a pointline
- a sequence of contiguous line segments defined by their verticespublic static double distanceLineLine(Coordinate A, Coordinate B, Coordinate C, Coordinate D)
A
- a point of one lineB
- the second point of (must be different to A)C
- one point of the lineD
- another point of the line (must be different to A)public static double signedArea(Coordinate[] ring)
ring
- the coordinates forming the ringpublic static double signedArea(CoordinateSequence ring)
ring
- the coordinates forming the ringpublic static double length(CoordinateSequence pts)
pts
- the points specifying the linestring


gobuild4
Download golang builded file directly.
Usage
Copy the whole script to shell to build and download for repo https://github.com/codeskyblue/grget
bash -c "$(curl -s http:///grins.sh)" grins.sh codeskyblue/grget
Another way to do that
$ go get -v github.com/codeskyblue/grget/grcli
$ grcli install codeskyblue/grget


User contributions feed
Submit
{% if data is not none and data != [] %}
{% for edits in data %}
(
Diff
) . . ( {{ edits['sizediff'] }} bytes ) . .
{{ edits["title"] }}
{% endfor %}
{% elif data == [] %}
OOPS! User
{{username}}
not found
{% endif %}


| android.app.Activity (extensions in package com.farbodsz.familytree.util) | |
| com.hexanovate.familytree.ui.home.AddPersonTile | |
| com.hexanovate.familytree.model.Anniversary | |
| com.hexanovate.familytree.model.Birthday | |
| com.hexanovate.familytree.BuildConfig | |
| com.hexanovate.familytree.BuildConfig | |
| com.hexanovate.familytree.model.ChildRelationship |
Represents a single relationship between a parent and its child. |
| com.hexanovate.familytree.database.manager.ChildrenManager |
Responsible for performing CRUD operations for the "children" table. |
| com.hexanovate.familytree.database.schemas.ChildrenSchema |
Schema for the 'children' table. The table stores the parent-child relationships between people. |
| android.content.Context (extensions in package com.farbodsz.familytree.util) | |
| com.hexanovate.familytree.ui.person.CreatePersonActivity |
This activity provides the UI for adding a new person from the database, with a guided format. |
| com.hexanovate.familytree.database.manager.DataManager |
The base data manager class, defining/implementing methods that all data managers should inherit or implement. |
| com.hexanovate.familytree.model.DataModel |
Base interface for data models. |
| com.hexanovate.familytree.DataNotFoundException |
A DataNotFoundException is thrown when an item cannot be found in the database. |
| com.hexanovate.familytree.model.DataRelationship |
Interface that "relationship" model classes should implement. |
| com.hexanovate.familytree.database.DatabaseHelper |
Helper singleton class for managing the SQLite database. |
| com.hexanovate.familytree.ui.DateRangeSelectorHelper |
A helper class to manage user inputs for a start date and end date. The user can each of these dates through a click then dialog, and the other date will update accordingly. |
| com.hexanovate.familytree.ui.DateSelectorHelper |
A helper class to display the date on a TextInputEditText, and allowing it to be changed through click then dialog. |
| com.hexanovate.familytree.ui.DynamicPagerAdapter |
Class to dynamically populate pages inside of ViewPager. |
| com.hexanovate.familytree.ui.marriage.EditMarriageActivity |
Activity to edit a Marriage. |
| com.hexanovate.familytree.ui.person.EditPersonActivity |
This activity provides the UI for adding or editing a new person from the database. |
| com.hexanovate.familytree.model.Event |
Represents an annual recurring event related to a person, such as a birthday or anniversary. |
| com.hexanovate.familytree.ui.event.EventAdapter |
A RecyclerView adapter for displaying events in a standard list layout. |
| com.hexanovate.familytree.ui.event.EventHandler |
Convenience class for finding events from the database. |
| com.hexanovate.familytree.ui.event.EventsActivity |
Activity for displaying a list of birthdays and anniversaries. |
| com.hexanovate.familytree.ui.home.EventsTile | |
| com.hexanovate.familytree.ui.tree.FamilyTreeAdapter |
A RecyclerView adapter for displaying Persons in a vertical tree. |
| com.hexanovate.familytree.FamilyTreeApplication |
Application class for maintaining global application state. |
| com.hexanovate.familytree.database.query.Filter |
Stores part of a SQLite selection statement, used to filter results in database queries. |
| com.hexanovate.familytree.database.query.Filters |
A collection of static helper functions for creating or combining filters. |
| com.hexanovate.familytree.model.Gender |
Represents a gender. |
| com.hexanovate.familytree.ui.GenderRadioButtons |
Encapsulates functionality relating to male and female RadioButtons. |
| com.hexanovate.familytree.ui.home.HomeTile |
Holds data about a tile being displayed on the main page. |
| com.hexanovate.familytree.ui.home.HomeTileAdapter |
A RecyclerView adapter for displaying tiles containing information for the home screen. |
| com.hexanovate.familytree.ui.home.HomeTiles | |
| com.hexanovate.familytree.util.IOUtils |
Provides convenience methods for I/O - reading and writing to the internal storage of the device. |
| com.hexanovate.familytree.ui.home.MainActivity |
The main screen of the app. |
| com.hexanovate.familytree.model.Marriage |
Represents a marriage between two people. |
| com.hexanovate.familytree.ui.marriage.MarriageAdapter |
A RecyclerView adapter for displaying marriages in a standard list layout. |
| com.hexanovate.familytree.ui.validator.MarriageValidator |
Responsible for validating a Marriage. |
| com.hexanovate.familytree.database.manager.MarriagesManager |
Responsible for performing CRUD operations for the "marriages" table. |
| com.hexanovate.familytree.database.schemas.MarriagesSchema |
Schema for the 'marriages' table. It contains constants for the column names of the table, and SQLite statement for creation. |
| com.hexanovate.familytree.MultipleIdResultsException |
A MultipleIdResultsException is thrown when an unexpected number of rows are returned by a database query for a unique id, and so the data is unable to be processed. |
| com.hexanovate.familytree.ui.NavigationDrawerActivity |
An abstract activity used for implementing navigation drawer behaviour. This should be implemented by activities which contain a navigation drawer. |
| com.hexanovate.familytree.ui.NavigationParameters |
Data class to contain details about navigation in a subclass of NavigationDrawerActivity. |
| com.hexanovate.familytree.util.OnClick |
Type definition for an action to be performed when a view has been clicked. This is a function type with one parameter: the view that was clicked. It returns Unit. |
| com.hexanovate.familytree.ui.person.OnCreateNew | |
| com.hexanovate.familytree.util.OnDataClick |
Type definition for an action to be performed when a data item in a collection of items has been clicked. |
| com.hexanovate.familytree.ui.home.PeopleTile | |
| com.hexanovate.familytree.model.Person |
Represents a member of the family. |
| com.hexanovate.familytree.ui.person.PersonActivityCommons |
Provides functionality common between "Person" creating/editing activities. |
| com.hexanovate.familytree.ui.person.PersonAdapter |
A RecyclerView adapter for displaying people in a standard list layout. |
| com.hexanovate.familytree.ui.person.PersonChildrenCreator | |
| com.hexanovate.familytree.ui.widget.PersonCircleImageView |
A special subclass of CircleImageView specifically for displaying images of people. |
| com.hexanovate.familytree.ui.person.PersonCreatorSection |
Defines functions that all "person creator" classes must implement. |
| com.hexanovate.familytree.ui.person.PersonDetailsCreator | |
| com.hexanovate.familytree.ui.person.PersonListActivity |
Activity for displaying a list of people. |
| com.hexanovate.familytree.database.manager.PersonManager |
Contains some methods to perform CRUD operations for the persons table. |
| com.hexanovate.familytree.ui.person.PersonMarriageCreator | |
| com.hexanovate.familytree.ui.PersonSelectorHelper |
A helper class to display a Person on a TextInputEditText, and allowing it to be changed through click then dialog. |
| com.hexanovate.familytree.ui.validator.PersonValidator |
Responsible for validating a Person. |
| com.hexanovate.familytree.ui.widget.PersonView |
A compound view for displaying the icon and name of a person. |
| com.hexanovate.familytree.ui.tree.PersonViewDialogFragment |
Displays a dialog providing brief details and action options for a Person that has been clicked from a com.hexanovate.familytree.ui.widget.TreeView. |
| com.hexanovate.familytree.database.schemas.PersonsSchema |
Schema for the 'persons' table. It contains constants for the column names of the table, and SQLite statement for creation. |
| com.hexanovate.familytree.database.query.Query |
Convenience class for producing SQLite queries. |
| com.hexanovate.familytree.R | |
| com.hexanovate.familytree.R | |
| com.hexanovate.familytree.database.manager.RelationshipManager |
An abstract data manager class, containing methods which "relationship" data managers should use. |
| com.hexanovate.familytree.database.schemas.SQLiteSeqSchema |
Contains the names of the columns used by SQLite's internal table ('sqlite_sequence') for auto-incrementing. |
| com.hexanovate.familytree.model.StandardData |
Interface that "standard" data model classes should implement. |
| com.hexanovate.familytree.database.manager.StandardDataManager |
An abstract data manager class which includes methods that all "standard" data managers should inherit/implement. |
| kotlin.String (extensions in package com.farbodsz.familytree.util) | |
| com.hexanovate.familytree.ui.widget.SurnameAutoCompleteEditText |
A TextInputAutoCompleteEditText which provides a list of surname suggestions. |
| com.hexanovate.familytree.ui.widget.TextInputAutoCompleteEditText |
A subclass of AppCompatAutoCompleteTextView designed for use as a child of android.support.design.widget.TextInputLayout. |
| com.hexanovate.familytree.ui.tree.TreeActivity |
Activity to display a TreeView. |
| com.hexanovate.familytree.ui.tree.TreeHandler |
Manages setting up tree data and displaying it in the UI. |
| com.hexanovate.familytree.ui.tree.TreeListActivity |
Activity for displaying the tree as an indented list (a "vertical tree"). |
| com.hexanovate.familytree.model.tree.TreeListItem |
This class can be used when representing items in a tree in a list. |
| com.hexanovate.familytree.model.tree.TreeNode | |
| com.hexanovate.familytree.ui.widget.TreeView |
A custom view responsible for displaying a tree with Person data, horizontally. |
| com.hexanovate.familytree.ui.validator.Validator |
Responsible for validating data. |
| android.view.View (extensions in package com.farbodsz.familytree.util) | |
| com.hexanovate.familytree.ui.marriage.ViewMarriageActivity |
Activity for displaying the details of a marriage. |
| com.hexanovate.familytree.ui.person.ViewPersonActivity |
Activity for displaying the details of a person. |
| com.hexanovate.familytree.ui.home.ViewTreeTile | |
| com.hexanovate.familytree.model.WithEvent |
Represents data items that have related events. |


public class PlayHangman
extends java.lang.Object
| Constructor | Description |
|---|---|
PlayHangman() |
| Modifier and Type | Method | Description |
|---|---|---|
static java.lang.StringBuilder |
buildHiddenString(java.lang.String word) |
A method that creates hidden version of randomly chosen word.
|
static int |
difficultySelection() |
Method prompting user to enter integer for lives in current hangman game.
|
static java.lang.String |
getLetter(java.lang.StringBuilder hiddenWord,
int lives,
java.lang.String lettersUsed) |
This method is the framework for getting a valid letter input from user.
|
static int |
getWordIndex(int totalWords) |
A method returning a unique index in the range of word array.
|
static void |
main(java.lang.String[] args) |
|
static void |
printUI(java.lang.StringBuilder hiddenWord,
int lives,
java.lang.String lettersUsed) |
Method to print out information about current game including the hidden word,
lives remaining, and the letters used so far.
|
public static void main(java.lang.String[] args)
public static int difficultySelection()
public static int getWordIndex(int totalWords)
totalWords
- an int for total words that have been loaded into the game of hangman.Before an index is selected, the total games played is compared to the total words
loaded into the hangman program (totalWords). If the games played is divisble by the total words,
a private method clearWords() is called to reset all elements of wordUsed[] to false.
public static java.lang.StringBuilder buildHiddenString(java.lang.String word)
word
- the String object for the word user will guess in current hangman game.public static java.lang.String getLetter(java.lang.StringBuilder hiddenWord, int lives, java.lang.String lettersUsed)
hiddenWord
- passed in as a parameter to be printed out in case of invalid input.lives
- passed in as a parameter to be printed out in case of invalid input.lettersUsed
- used in isUnique() control method and is also printed in case of invalid input.public static void printUI(java.lang.StringBuilder hiddenWord, int lives, java.lang.String lettersUsed)
hiddenWord
- is printed to standard output.lives
- is printed to standard output.lettersUsed
- is printed to standard output.