--- layout: post authors: ["Greg Wilson"] title: "September 2014 Lab Meeting Report" date: 2014-09-26 time: "11:30:00" tags: ["Lab Meeting"] ---
After a two-month break for a sprint and some holidays, we held another monthly lab meeting this week. About 50 people showed up to talk about issues large and small; the key points are below.
As mentioned last week, we are asking specific people to take charge of particular topics in our core material. They will not be responsible for developing lessons themselves (though they may of course do so). Instead, their job will be to keep issues and pull requests moving by reviewing, managing discussion, merging into the master branch, and so on. Our initial maintainers are:
Related to this,
we are going to break up the bc
repository.
It currently holds both our lessons and the templates for creating workshop sites,
and has become too large and too complicated to manage.
Our plan is to have a one-to-one match between repositories and lessons
(e.g., the novice/python
lesson will be in a small repository of its own);
we're working out a detailed proposal,
and hope to have it up early next week.
Trevor King, Trevor Bekolay, Ré Emonet, and Erik Bray have volunteered to help
with the Git magic that will be needed to do this without losing history—more help
will be very welcome when the time comes,
particularly from people who aren't Git experts,
and can therefore tell us whether what we're doing is usable.
Greg Wilson's post on Building a Better Teacher and companion posts by Azalee Bostroem and Justin Kitzes have generated a lot of suggestions over the past three weeks about how we could share good teaching practices among our instructors. The specific suggestions made at this week's meeting were:
Match each new instructor with an experienced instructor as a mentor. Azalee Bostroem, Erik Bray, Abigail Cabunoc, Matt Davis, Gabriel Devenyi, Ivan Gonzalez, Adina Howe Karin Lagesen, Bill Mills, Tracy Teal, and Naupaka Zimmerman all volunteered to be mentors; we'll match them with people who finished instructor training this summer.
We'll set up a weekly or bi-weekly meeting in which people who have taught in the past couple of weeks can "hand off" what they've learned about the lessons to people who are going to teach in the coming couple of weeks. This will also be an opportunity for Greg Wilson to debrief recent instructors.
We will ask instructors to send us their checklists after each workshop so that we can see what they actually did (and trim the things they didn't).
We'll have "in-service days" a couple of times a year in which people who have been teaching for a while can find out what changes have been made to our lessons recently.
Before we break up the bc
repository,
we're going to simplify things by using gh-pages
as the main branch
(i.e., the starting point for new features)
instead of the master
branch.
We have been using master
as a staging area
(i.e., as a development branch, with gh-pages
as the release branch),
but this has been causing confusion.
We won't delete master
until outstanding pull requests are merged,
but we'll set up our new lesson repositories with gh-pages
as their default.
Naupaka Zimmerman, Chris Kees, and Karin Lagesen volunteered to help us revamp our pre-assessment survey based on feedback we've received in the last few months. In particular, they'll make it easier to customize for particular workshops, and try to come up with questions that will help us discriminate more accurately between different levels of novice learner.
Daniel Chen has received about 15 descriptions of what was actually taught in various workshops from those workshops' instructors. He, Fan Yang, and Marios Isaakidis will use these descriptions to revamp our post-workshop instructor survey to help us learn more about how our lessons are actually being used, and how well they're working.
We're going to start using the term "workshop" instead of the term "bootcamp", since the latter is harder to translate in some languages, and has paramilitary connotations to some people.
Many thanks to everyone who took part in these meetings—we have a lot of work in front of us, but a good crew to do it.
Round 1 Attendees (18:30-19:30 Eastern on Thursday, Sept 25)
Round 2 Attendees (11:00-12:00 Eastern time on Friday, Sept 26)


jQuery - Leak Suite
Red
Fancy stuff about red thingies.
Green
Green! Green! Green!
Blue
Cool kids are blue.


|
Files | |
| file | MICC-driver.h |
MicroInfinity CruizCore XG1300L driver. | |
Defines | |
| #define | MICC_I2C_ADDR 0x02 |
| #define | MICC_ACC_ANG 0x42 |
| #define | MICC_TURN_RATE 0x44 |
| #define | MICC_X_ACCEL 0x46 |
| #define | MICC_Y_ACCEL 0x48 |
| #define | MICC_Z_ACCEL 0x4A |
| #define | MICC_CMD_RESET 0x60 |
| #define | MICC_CMD_RANGE_2G 0x61 |
| #define | MICC_CMD_RANGE_4G 0x62 |
| #define | MICC_CMD_RANGE_8G 0x63 |
| #define | MICCsetRange2G(x) MICCsendCmd(x, MICC_CMD_RANGE_2G) |
| #define | MICCsetRange4G(x) MICCsendCmd(x, MICC_CMD_RANGE_4G) |
| #define | MICCsetRange8G(x) MICCsendCmd(x, MICC_CMD_RANGE_8G) |
| #define | MICCreset(x) MICCsendCmd(x, MICC_CMD_RESET) |
Functions | |
| int | MICCreadRelativeHeading (tSensors link) |
| int | MICCreadTurnRate (tSensors link) |
| bool | MICCreadAccel (tSensors link, int &x_accel, int &y_accel, int &z_accel) |
| bool | MICCsendCmd (tSensors link, ubyte command) |
Variables | |
| tByteArray | MICC_I2CRequest |
| tByteArray | MICC_I2CReply |
CruizCore XG1300L
| #define MICC_ACC_ANG 0x42 |
MICC Accumulated angle (2 bytes)
Definition at line 43 of file MICC-driver.h.
| #define MICC_CMD_RANGE_2G 0x61 |
MICC Acceleration up to 2G
Definition at line 52 of file MICC-driver.h.
| #define MICC_CMD_RANGE_4G 0x62 |
MICC Acceleration up to 4G
Definition at line 53 of file MICC-driver.h.
| #define MICC_CMD_RANGE_8G 0x63 |
MICC Acceleration up to 8G
Definition at line 54 of file MICC-driver.h.
| #define MICC_CMD_RESET 0x60 |
MICC Reset the device
Definition at line 51 of file MICC-driver.h.
| #define MICC_I2C_ADDR 0x02 |
MICC I2C device address
Definition at line 41 of file MICC-driver.h.
| #define MICC_TURN_RATE 0x44 |
MICC Rate of Turn (2 bytes)
Definition at line 45 of file MICC-driver.h.
| #define MICC_X_ACCEL 0x46 |
MICC X acceleration data (2 bytes)
Definition at line 47 of file MICC-driver.h.
| #define MICC_Y_ACCEL 0x48 |
MICC Y acceleration data (2 bytes)
Definition at line 48 of file MICC-driver.h.
| #define MICC_Z_ACCEL 0x4A |
MICC Z acceleration data (2 bytes)
Definition at line 49 of file MICC-driver.h.
| #define MICCreset | ( | x ) | MICCsendCmd(x, MICC_CMD_RESET) |
Macro for resetting sensor
Definition at line 64 of file MICC-driver.h.
| #define MICCsetRange2G | ( | x ) | MICCsendCmd(x, MICC_CMD_RANGE_2G) |
Macro for setting sensor to 2G range
Definition at line 61 of file MICC-driver.h.
| #define MICCsetRange4G | ( | x ) | MICCsendCmd(x, MICC_CMD_RANGE_4G) |
Macro for setting sensor to 4G range
Definition at line 62 of file MICC-driver.h.
| #define MICCsetRange8G | ( | x ) | MICCsendCmd(x, MICC_CMD_RANGE_8G) |
Macro for setting sensor to 8G range
Definition at line 63 of file MICC-driver.h.
| bool MICCreadAccel | ( | tSensors | link, |
| int & | x_accel, | ||
| int & | y_accel, | ||
| int & | z_accel | ||
| ) |
Read acceleration data from the sensor
| link | the sensor port number |
| x_accel | X acceleration data |
| y_accel | Y acceleration data |
| z_accel | Z acceleration data |
Definition at line 122 of file MICC-driver.h.
| int MICCreadRelativeHeading | ( | tSensors | link ) |
Return the current relative heading, value between -179 and 180 degrees.
Angle is measured in 100th degrees. So 12899 = 128.99 degrees.
Definition at line 75 of file MICC-driver.h.
| int MICCreadTurnRate | ( | tSensors | link ) |
Return the Rate of Turn in degrees per second
Definition at line 97 of file MICC-driver.h.
| bool MICCsendCmd | ( | tSensors | link, |
| ubyte | command | ||
| ) |
Send a command to the sensor
| link | the sensor port number |
| command | the command to be sent |
Definition at line 149 of file MICC-driver.h.
Array to hold I2C reply data
Definition at line 67 of file MICC-driver.h.
Array to hold I2C command data
Definition at line 66 of file MICC-driver.h.


{% extends 'sb-admin/base.html' %} {% block content %}
Add Domain
| Status | Domain Name | Disk Usage | Date Created | ||
|---|---|---|---|---|---|
| Enabled | example.com | 3.52M | 12-15-2013 | View Site | Open in Control Panel |
| Enabled | example.org | 5.23M | 12-14-2013 | View Site | Open in Control Panel |
| Disabled | example.net | 1.43M | 12-14-2013 | View Site | Open in Control Panel |
| Enabled | domain.com | 6.36M | 05-11-2013 | View Site | Open in Control Panel |
| Disabled | ohaiworld.com | 3.75M | 12-15-2013 | View Site | Open in Control Panel |
10 | 25 | 100 | All


This is not a real banking service. Use for testing purposes only. No money will be moved.
Login
Username
Password
Login


Hi {{user.name}}!
Welcome to Sprint {{sprint.$value}} planning
Please wait for a task to be chosen for estimation
Please enter your estimate (in hours) for {{task.$value}}
Thank you for your estimate for {{task.$value}}. Please wait for the next task.


A raspberry pi connected to an ardiuno controlling some motors, controlled by a django server running on top of an lnd node. All held together by a yellow helmet
Built for lnconf 2019, I thought it'd be cool if I built a demo showing how easy it would be to accept bitcoin over lightning network in germany, a country well known for it's piss poor connectivity. Heavily inspired by a tweet of a man who built something similar except the fans spun every time a github pr was merged. And also because I wanted to play with an arduino :)


Money Play. How should Red play 66?
pips Red=162 White=109
(CorrectAnswer= 0/0, ErrorScore= 0)
The key here is not to overplay your hand, especially as you own the cube. Over the board the blitz with 20/14*, 13/1, 7/1 was tried but that is way too big, the ammunition for the blitz just isn’t there.
20/14* and 14/8 are clear as is 13/7. The final six should be played 13/7 bringing more checkers to bear on the point that Red will want next, his own 3-pt. This is much better than 22/10, 20/14*/8 which leaves three blots and fails to lock up the bar-point. That play is a blunder. The blitz play was a double blunder.
20/14* and 14/8 are clear as is 13/7. The final six should be played 13/7 bringing more checkers to bear on the point that Red will want next, his own 3-pt. This is much better than 22/10, 20/14*/8 which leaves three blots and fails to lock up the bar-point. That play is a blunder. The blitz play was a double blunder.
1. Cubeful 2-ply 22/16 20/14*/8 13/7 Eq.: +0.368 0.569 0.189 0.012 - 0.431 0.187 0.004 2. Cubeful 2-ply 20/14*/8 13/7(2) Eq.: +0.289 (-0.079) 0.540 0.188 0.011 - 0.460 0.185 0.005 3. Cubeful 2-ply 22/10 20/14*/8 Eq.: +0.226 (-0.142) 0.529 0.193 0.014 - 0.471 0.244 0.009 4. Cubeful 0-ply 20/14*/8 16/10 13/7 Eq.: +0.203 (-0.165) 0.531 0.194 0.015 - 0.469 0.230 0.020 5. Cubeful 0-ply 20/14* 13/1 7/1 Eq.: +0.191 (-0.176) 0.510 0.242 0.015 - 0.490 0.242 0.016


<EMAIL_ADDRESS>+01 123 456 78
Account
HOME
HOME
HOME 2
About
services
PAGES
HOME
HOME 2
About
About 2
services
services 2
portfolio
portfolio single
Shop 1
Shop 2
Shop Detail
portfolio
Checkout
Your Cart
blog
404
contact
Shop
Shop Full Width
Shop Sidebar Left
Shop Detail
Checkout
Your Cart
PORTFOLIO
Blog
CONTACT
any help?
404 error
Sorry page not found
Subscribe to our newsletter
You can unsubscribe anytime you want
subscribe


Toggle navigation
Emotion Stats
hook team
Sign in
(current)
Sign up
{{person.name}}
Logout
Dashboard
My Mood
Employees


Hello,
I am trying to use a emonTx with a CT Clamp to send data to my Raspberry Pi running the image found at http://openenergymonitor.org/emon/node/10729 with a RFM12B chip on it.
My problem is that I have absolutely no idea how to achieve this. I have been looking at http://openenergymonitor.org/emon/buildingblocks/rfm12b2#appendix1 to try and figure out but I have no idea how or where to run the code snippets.
I also found https://github.com/openenergymonitor/RFM12B_Simple, but again - I have no idea in what context or how to run the code.
If anyone could give me a brief tutorial or point me to the direction of resources that can help me that would be awesome.
Best regards,
Anton
Re: Connecting emonTX to Raspberry Pi
Firstly, do not try to clamp a current transformer to the cable. If you have the one from the shop, the ferrite core is very brittle and will shatter if you apply any significant pressure on it. It should be loose on its cable.
Second, if you run your emonTx with the default sketch that should have been installed when you received it, it should work. If you've overwritten that sketch, you can find it on "Software Github" - it's called "emonTxV3_4_DiscreteSampling".
Re: Connecting emonTX to Raspberry Pi
It's admirable that you Brits like to preserve the English language, but this is the world-wide-web and a quick google search on "current clamp" suggests you've long ago lost control of that term.
Re: Connecting emonTX to Raspberry Pi
So I attach the current clamp to the emonTx and restart it as said in chapter 3 of http://openenergymonitor.org/emon/modules/emonTxV3, but what I get from emoncms is that all Rx Variables are "inactive". Why?
Re: Connecting emonTX to Raspberry Pi
And who invented the world-wide-web? (I didn't say "Internet".)
Re: Connecting emonTX to Raspberry Pi
Back on-topic. How are you powering the emonTx. If you're using the AC adapter, does the LED in the emonTx flash once every 10s? Are you getting any indication that the RFM12Pi receiver is working - does its LED flash in time with the one in the emonTx?
Re: Connecting emonTX to Raspberry Pi
I am powering the emonTx with AC and the light is flashing every 10 seconds. The RFM12Pi, however, is not giving any signs of life - no LED flashing.
What pins on the raspberry are the RFM12Pi supposed to be connected to?
Re: Connecting emonTX to Raspberry Pi
There is a photo here. It's the '69 radio module but the photo of yours doesn't show the pin alignment at all clearly. In words - right on the end. At the bottom of the RFM12Pi V2 page is a piece about debugging.
Re: Connecting emonTX to Raspberry Pi
Then it was already placed correctly. I guess I'll follow the debugging and see if anything comes up.
Re: Connecting emonTX to Raspberry Pi
When running minicom, I get some packages from node 10, like these:
10 0 0 0 0 0 0 0 0 238 95 0 0
10 0 0 0 0 0 0 0 0 210 95 0 0
10 0 0 0 0 0 0 0 0 194 95 0 0
10 0 0 0 0 0 0 0 0 201 95 0 0
10 0 0 0 0 0 0 0 0 220 95 0 0
10 0 0 0 0 0 0 0 0 218 95 0 0
Does this look correct? When looking at emoncms Node 10:emonTx is still set as inactive.
Re: Connecting emonTX to Raspberry Pi
That could well be correct, it would be difficult to say as you have not said anything about what emontx you have or what firmware its running, but that is a valid packet, possibly for either a late emontx v3.2 or an early emontx v3.4 running stock firmwares, or even a emontx shield.
I expect it is power1 power2 power3 power4 ACvoltage temperature, 12 bytes = 6 signed ints.
If you take a look at the emonhub.log you will probally see errors telling you that the "Node 10" packet doesn't fit the datacodes definition, that is defined in emonhub.conf and fir the image you have it will be pre-configured for a later emonTx firmware.
You will need to change the configuration to suit your device, something like this should get you going
[[10]]
[[[rx]]]
names = power1 power2 power3 power4 ACvoltage temperature
datacode = h
scales = 1, 1, 1, 1, 0.01, 0.1
Paul
Re: Connecting emonTX to Raspberry Pi
I tried to change the configuration according to the suggestions above, but it still says all nodes are inactive after a reboot. I am currently using a emonTx V3.
I cannot see any errors in the emonhub.log regarding the datacode definition, what I do see however is this:
2016-02-12 11:28:00,227 WARNING MainThread Device communication error - check settings
Again - the LED on the RFM12pi is not flashing.
I'd like to provide some more information as well. Where do I find what firmware version I am running?


14 criminal gangs busted in Haryana, says DGP
Special drive conducted in the State
The Haryana police busted 14 active criminal gangs operating in different parts of the State in October, Director General of Police Manoj Yadava said in a statement here on Sunday.
Besides, the police has also arrested 285 proclaimed offenders and 330 bail jumpers, many of whom were evading arrest for a very long time, Mr. Yadava said.
The gangs were involved in robbery, other criminal activities, the police chief said, adding that 55 cases were worked out and stolen property worth more than ₹59 lakh was seized following the crackdown.
Of the 14 gangs, two were of robbers, three of burglars, five of thieves and the remaining four were engaged in other crimes, he said.
The crackdown began on October 1 as part of a special drive conducted in the entire State, he added.
During this period, police also seized 3.9 kg opium, 4.3 kg charas, over 252 kg poppy husk, 107 illegal pistols, 2 revolvers and 169 cartridges from those arrested.
Mr. Yadava said that police had also arrested 483 people under the Narcotic Drugs and Psychotropic Substances Act during a special anti-narcotic drive conducted between August 20 and September 20 in the State.
A total of 1,204 kg of drugs were also seized during this period.
He said that the State police was constantly making efforts to check the crime rate as well as to trace and nab notorious criminals.
“We will continue to speed up our operations against the criminals in the State,” he said.


Below is a link to this months newsletter
Click the link to view it or right click the link and choose
save target as to download it to your computer
JUNE 2012 NEWSLETTER.
Questions or comments? Email them to<EMAIL_ADDRESS>BELOW IS THE NEWSLETTER ARCHIVE.
APRIL-MAY 2012 NEWSLETTER.
MARCH 2012 NEWSLETTER.
FEBRUARY 2012 NEWSLETTER.
JANUARY 2012 NEWSLETTER.
NOVEMBER-DECEMBER 2011 NEWSLETTER.
OCTOBER 2011 NEWSLETTER.
SEPTEMBER 2011 NEWSLETTER.
AUGUST 2011 NEWSLETTER.
JULY 2011 NEWSLETTER.
JUNE 2011 NEWSLETTER.
MAY 2011 NEWSLETTER.
APRIL 2011 NEWSLETTER.
MARCH 2011 NEWSLETTER.
FEBRUARY 2011 NEWSLETTER.
JANUARY 2011 NEWSLETTER.
NOVEMBER-DECEMBER 2010 NEWSLETTER.
SEPTEMBER-OCTOBER 2010 NEWSLETTER.
AUGUST 2010 NEWSLETTER.
JULY 2010 NEWSLETTER.
JUNE 2010 NEWSLETTER.
MAY 2010 NEWSLETTER.
APRIL 2010 NEWSLETTER.
MARCH 2010 NEWSLETTER.
FEBRUARY 2010 NEWSLETTER.
JANUARY 2010 NEWSLETTER.
DECEMBER 09 NEWSLETTER.
NOVEMBER 09 NEWSLETTER.
OCTOBER 09 NEWSLETTER.
SEPTEMBER 09 NEWSLETTER.
AUGUST 09 NEWSLETTER.
JULY 09 NEWSLETTER.
JUNE 09 NEWSLETTER.
MAY 09 NEWSLETTER.
APRIL 09 NEWSLETTER.
MARCH 09 NEWSLETTER.
FEBRUARY 09 NEWSLETTER.
JANUARY 09 NEWSLETTER.
DECEMBER 08 NEWSLETTER.
NOVEMBER 08 NEWSLETTER.
OCTOBER 08 NEWSLETTER.
SEPTEMBER 08 NEWSLETTER.
AUGUST 08 NEWSLETTER.
JULY 08 NEWSLETTER.
JUNE 08 NEWSLETTER.
MAY 08 NEWSLETTER.
APRIL 08 NEWSLETTER.
MARCH 08 NEWSLETTER.
FEBRUARY 08 NEWSLETTER.
JANUARY 08 NEWSLETTER.
OCTOBER 07 NEWSLETTER.
SEPTEMBER 07 NEWSLETTER.
AUGUST 07 NEWSLETTER.
JULY 07 NEWSLETTER.
JUNE 07 NEWSLETTER.
MAY 07 NEWSLETTER.
MARCH 07 NEWSLETTER.
FEBRUARY 07 NEWSLETTER.
JANUARY 07 NEWSLETTER.
NOVEMBER-DECEMBER 06 NEWSLETTER.
OCTOBER 06 NEWSLETTER.
SEPTEMBER 06 NEWSLETTER.
AUGUST 06 NEWSLETTER.
JULY 06 NEWSLETTER.
JUNE 06 NEWSLETTER.
MAY 06 NEWSLETTER.
APRIL 06 NEWSLETTER.
MARCH 06 NEWSLETTER.
|


That was an animated page transition effect to a page that we added with a data-transition
attribute on the link. This uses a different background theme swatch to see how that looks with the transitions.
Since it uses CSS animations, this should be hardware accelerated on many devices. To see transitions, 3D transform support is required so if you only saw a fade transition that's the reason.
Take me back


frustumPoints |
FrustumPoints
|
<optional>
|
|
Include this points into array of points with cloud. See FrustumPoints. |
tMin |
number
|
<optional>
|
0
|
start time. Uses for playing of the points.. |
name |
string
|
<optional>
|
""
|
Name of the points. Used for displaying of items of the Select drop down control of the Meshes folder of the dat.gui. |
shaderMaterial |
object
|
boolean
|
<optional>
|
|
creates the THREE.Points with THREE.ShaderMaterial material.
The size of the each point of the THREE.Points seems the same on canvas
because I reduce the size of the points closest to the camera and increase the size of the points farthest to the camera.
false - no shaderMaterial.
Properties
| Name |
Type |
Attributes |
Description |
point |
object
|
<optional>
|
Properties
| Name |
Type |
Attributes |
Description |
size |
number
|
<optional>
|
point size. |
|
|
position |
THREE.Vector3
|
<optional>
|
new THREE.Vector3( 0, 0, 0 )
|
position of the points.
Vector's x, y, z is position of the points.
Can be as:
float - position of the points.
[float] - array of positions of the points.
Function - position of the points is function of the t. Example:
new Function( 't', 'return 0.1 + t' )
Example:
new THREE.Vector3 ( new Function( 't', 'return t' ), 0, 0) |
scale |
THREE.Vector3
|
<optional>
|
new THREE.Vector3( 1, 1, 1 )
|
scale of the points.
Vector's x, y, z is scale of the points.
Can be as:
float - scale of the points.
[float] - array of scales of the points.
Function - scale of the points is function of the t. Example:
new Function( 't', 'return 1.1 + t' )
Example:
new THREE.Vector3 ( new Function( 't', 'return 1 + t' ), 1, 1) |
rotation |
THREE.Vector3
|
<optional>
|
new THREE.Vector3( 0, 0, 0 )
|
rotation of the points.
Vector's x, y, z is rotation of the points.
Can be as:
float - rotation of the points.
[float] - array of rotations of the points.
Function - rotation of the points is function of the t. Example:
new Function( 't', 'return Math.PI / 2 + t * Math.PI * 2' )
Example:
new THREE.Vector3 ( new Function( 't', 'return Math.PI / 2 + t * Math.PI * 2' ), 0, 0) |
opacity |
boolean
|
<optional>
|
|
if true then opacity of the point is depend from distance to all meshes points from the group with defined mesh.userData.cloud.
See optionsColor.opacity parameter of the Player.getColors(...)ions.getColors for details. |
onReady |
function
|
<optional>
|
|
Callback function that take as input the new THREE.Points.
Fires after creating of the points.
function( points )
points - Points
|
raycaster |
object
|
<optional>
|
|
Followed raycaster options is available.
Properties
| Name |
Type |
Attributes |
Description |
onIntersection |
function
|
<optional>
|
Callback function that take as input the intersectObject , and mouse position.
Fires after intersection of the mouse pointer with a point. |
onIntersectionOut |
function
|
<optional>
|
Callback function.
Fires if mouse pointer leaves of intersection with the point. |
onMouseDown |
function
|
<optional>
|
Callback function that take as input the intersectObject .
User has clicked over point. |
|
elements |
object
|
<optional>
|
|
Followed elements can display on the web page
Properties
| Name |
Type |
Attributes |
Description |
pointsName |
HTMLElement
|
string
|
<optional>
|
Display of the settings.pointsOptions.name on the web page.
HTMLElement - element for displaying.
string - id of the element.
|
|


Gecode::Gist Namespace Reference
The Gecode Interactive Search Tool. More...
Namespaces | |
| namespace | LayoutConfig |
Parameters for the tree layout. | |
Classes | |
| class | DrawingCursor |
| A cursor that draws a tree on a QWidget. More... | |
| class | Logos |
| Class holding Gecode and Gist logo icons. More... | |
| class | LayoutCursor |
| A cursor that computes a tree layout for VisualNodes. More... | |
| class | AboutGist |
| Display information about Gist. More... | |
| class | GistMainWindow |
| Main window for stand-alone Gist. More... | |
| class | NodeAllocatorBase |
| Node allocator. More... | |
| class | Node |
| Base class for nodes of the search tree. More... | |
| class | NodeCursor |
| A cursor that can be run over a tree. More... | |
| class | HideFailedCursor |
| A cursor that marks failed subtrees as hidden. More... | |
| class | UnhideAllCursor |
| A cursor that marks all nodes in the tree as not hidden. More... | |
| class | UnstopAllCursor |
| A cursor that marks all nodes in the tree as not stopping. More... | |
| class | NextSolCursor |
| A cursor that finds the next solution. More... | |
| class | StatCursor |
| A cursor that collects statistics. More... | |
| class | DisposeCursor |
| A cursor that frees all memory. More... | |
| class | NodeStatInspector |
| Display information about nodes. More... | |
| class | NodeVisitor |
| Base class for a visitor that runs a cursor over a tree. More... | |
| class | PostorderNodeVisitor |
| Run a cursor over a tree, processing nodes in post-order. More... | |
| class | PreorderNodeVisitor |
| Run a cursor over a tree, processing nodes in pre-order. More... | |
| class | NodeWidget |
| Small node drawings for the status bar. More... | |
| class | PreferencesDialog |
| Preferences dialog for Gist. More... | |
| class | Gist |
| Gecode Interactive Search Tool More... | |
| class | Branch |
| Representation of a branch in the search tree. More... | |
| class | Statistics |
| Statistics about the search tree More... | |
| class | BestNode |
| Static reference to the currently best space. More... | |
| class | SpaceNode |
| A node of a search tree of Gecode spaces. More... | |
| class | StopChoice |
| Choice for StopBrancher More... | |
| class | StopBrancher |
| Brancher that stops exploration in Gist More... | |
| class | GistOutputStream |
| An outputstream that prints on a QTextEdit. More... | |
| class | TextOutputI |
| Window with associated ostream, used for inspecting Gist nodes. More... | |
| class | SearchItem |
| A stack item for depth first search. More... | |
| class | SearcherThread |
| A thread that concurrently explores the tree. More... | |
| class | TreeCanvas |
| A canvas that displays the search tree. More... | |
| class | ShapeAllocator |
| Allocate shapes statically. More... | |
| class | Layouter |
| Helper functions for the layout algorithm. More... | |
| class | Layout |
| Layout parameters More... | |
| class | BoundingBox |
| Bounding box. More... | |
| class | Extent |
| Extent representing shape of a tree at one depth level More... | |
| class | Shape |
| The shape of a subtree. More... | |
| class | VisualNode |
| Node class that supports visual layout More... | |
| class | Inspector |
| Abstract base class for inspectors. More... | |
| class | Comparator |
| Abstract base class for comparators. More... | |
| class | TextOutput |
| An window for simple text output. More... | |
| class | |
| An inspector for printing simple text output. More... | |
| class | VarComparator |
| A simple comparator. More... | |
| class | Options |
| Options for Gist More... | |
Enumerations | |
| enum | NodeStatus { SOLVED, FAILED, BRANCH, UNDETERMINED, STOP, UNSTOP } |
Status of nodes in the search tree. More... | |
Functions | |
| int | explore (Space *root, bool bab, const Options &opt) |
| Create a new stand-alone Gist for root using bab. | |
| void | stopBranch (Space &home) |
| A branching that stops exploration. | |
| int | dfs (Space *root, const Gist::Options &opt=Gist::Options::def) |
| Create a new stand-alone Gist for root. | |
| int | bab (Space *root, const Gist::Options &opt=Gist::Options::def) |
| Create a new stand-alone Gist for branch-and-bound search of root. | |
Variables | |
| const double | nodeWidth = 20.0 |
| const double | halfNodeWidth = nodeWidth / 2.0 |
| const double | quarterNodeWidth = halfNodeWidth / 2.0 |
| const double | failedWidth = 14.0 |
| const double | halfFailedWidth = failedWidth / 2.0 |
| const double | quarterFailedWidthF = failedWidth / 4.0 |
| const double | shadowOffset = 3.0 |
| const double | hiddenDepth |
| ShapeAllocator | shapeAllocator |
| Allocate shapes statically. | |
| const unsigned char | zoomToFitIcon [] |
Detailed Description
The Gecode Interactive Search Tool.
The Gecode::Gist namespace contains the Gecode Interactive Search Tool, a Qt-based graphical search engine.
Enumeration Type Documentation
Status of nodes in the search tree.
- Enumerator:
SOLVED Node representing a solution.
FAILED Node representing failure.
BRANCH Node representing a branch.
UNDETERMINED Node that has not been explored yet.
STOP Node representing stop point.
UNSTOP Node representing ignored stop point.
Definition at line 48 of file spacenode.hh.
Function Documentation
| int Gecode::Gist::explore | ( | Space * | root, | |
| bool | bab, | |||
| const Options & | opt | |||
| ) |
Create a new stand-alone Gist for root using bab.
| void Gecode::Gist::stopBranch | ( | Space & | home | ) |
A branching that stops exploration.
Variable Documentation
| const double Gecode::Gist::nodeWidth = 20.0 |
Definition at line 59 of file drawingcursor.cpp.
| const double Gecode::Gist::halfNodeWidth = nodeWidth / 2.0 |
Definition at line 60 of file drawingcursor.cpp.
| const double Gecode::Gist::quarterNodeWidth = halfNodeWidth / 2.0 |
Definition at line 61 of file drawingcursor.cpp.
| const double Gecode::Gist::failedWidth = 14.0 |
Definition at line 62 of file drawingcursor.cpp.
| const double Gecode::Gist::halfFailedWidth = failedWidth / 2.0 |
Definition at line 63 of file drawingcursor.cpp.
| const double Gecode::Gist::quarterFailedWidthF = failedWidth / 4.0 |
Definition at line 64 of file drawingcursor.cpp.
| const double Gecode::Gist::shadowOffset = 3.0 |
Definition at line 65 of file drawingcursor.cpp.
| const double Gecode::Gist::hiddenDepth |
static_cast<double>(Layout::dist_y) + failedWidth
Definition at line 66 of file drawingcursor.cpp.
Allocate shapes statically.
Definition at line 68 of file visualnode.cpp.
| const unsigned char Gecode::Gist::zoomToFitIcon[] |
Definition at line 40 of file zoomToFitIcon.hpp.


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
IN THE HIGH COURT OF KERALA AT ERNAKULAM OP(Crl.).No. 1358 of 2011(Q) 1. PASTER K.C.JOHN, AGED 62 YEARS, ... Petitioner Vs 1. KERALA STATE POLLUTION CONTROL BOARD, ... Respondent 2. ENVIRONMENTAL ENGINEER, 3. REVENUE DIVISIONAL OFFICER AND 4. KOIPURAM GRAMA PANCHAYATH REPRESENTED 5. SHRI.VINU ABRAHAM SAKARIA, For Petitioner :SRI.P.HARIDAS For Respondent :SRI.P.B.SAHASRANAMAN The Hon'ble MR. Justice THOMAS P.JOSEPH Dated :11/04/2011 O R D E R THOMAS P. JOSEPH, J. -------------------------------------- O.P.(Crl.) No.1358 of 2011 -------------------------------------- Dated this the 11th day of April, 2011. JUDGMENT
Respondents 1 and 2 appear through Standing Counsel, Advocate Shri M.K.Chandramohan Das. Respondents 4 and 5 appear through counsel. Learned Public Prosecutor takes notice for respondent No.3.
2. Challenge in this proceeding is to Exts.P8 and P9, orders passed by the Sub Divisional Magistrate, Thiruvalla (respondent No.3) purporting to be under Sections 133 and 142 of the Code of Criminal Procedure (for short, "the Code"). The proceeding was initiated on the complaint of respondent No.5 which, in short is that petitioner is constructing a sewage and water treatment plant without permission from the appropriate authorities for treatment of sewage and waste water formed on account of a large assembly of people in the compound where the plant is being erected. The Sub Divisional Magistrate issued Ext.P8, order under Section 133 of the Code directing petitioner to remove the sewage tank 'constructed in an unscientific manner' and that if petitioner has any objection in doing so, he has to prefer his objection before the Sub Divisional Magistrate on 29.04.2011 at 3 p.m. The Sub Divisional Magistrate also issued Ext.P9, order dated 17.03.2011 restraining petitioner from continuing with construction of the sewage and water treatment plant 'in an unscientific manner'.
OP(Crl.)No.1358/2011 2
3. Petitioner contends that it is incorrect to say that construction is being done in any unscientific manner and at any rate, the Sub Divisional Magistrate is not competent to pass orders with respect to any possible, future nuisance, not to say about prevention of construction of the plant itself. Learned counsel for respondents would contend that it is without permission from respondent No.1 (for short, "the PCB") that petitioner is continuing with construction of the sewage and water treatment plant, the collection of sewage and waste water causes nuisance to the Public and in the circumstances the Sub Divisional Magistrate has passed the impugned orders. Learned counsel have invited my attention to the relevant documents. It is pointed out from Ext.P6, letter dated 26.02.2011 of the Environmental Engineer of PCB addressed to the petitioner that the present action of petitioner is illegal (obviously being in violation of the provisions of the Water (Prevention and Control of Pollution) Act, 1974 and the Environment (Protection) Act, 1986.
4. It is seen from Ext.P6 that the Environmental Engineer (respondent No.2) who, I am told is the appropriate authority to sanction establishment and operation of sewage and waste treatment plant has issued certain directions to the petitioner such as -
(1) Provide a sewage treatment plant of adequate capacity to treat the effluent generated from your premises within 45 days.
(2) Stop discharging the wash water from auditorium premises to public OP(Crl.)No.1358/2011 3 road with immediate effect.
(3) Clean the affected wells and provide drinking water supply to all affected residents until their wells are rejuvenated with fresh water.
(4) Apply and obtain consent of the Board to operate the establishment within 30 days.
(5) Report the action taken on the above directions within 7 days.
5. So far as Ext.P8, order is concerned, no interference is required since that order issued under Section 133 of the Code and though contains a direction to the petitioner to remove what respondent No.3 would describe as 'unscientific construction', it is followed by an option to the petitioner to prefer his objection if any in the matter before respondent No.3 on 29.04.2011. It is open to the petitioner to do so.
6. So far as Ext.P9, order of injunction is concerned, the operation and establishment of sewage and water treatment plant can only be in accordance with the provisions of the Act which I have referred above and approval by the Environmental Engineer (respondent No.2).
7. In the light of the controversy involved in the case what is required is to direct that Ext.P9, order of injunction will remain in force until respondent No.2, the Environmental Engineer has granted approval for establishment and operation of the sewage and water treatment plant. On getting approval for establishment of the plant it is open to the petitioner to proceed with the OP(Crl.)No.1358/2011 4 construction but its operation will commence only on getting approval of respondent No.2. Ext.P9, order of injunction passed by the Sub Divisional Magistrate is to be modified to that extent.
8. On the question whether notwithstanding the approval granted by respondent No.2, operation of the sewage and water treatment plant caused any nuisance is a matter which the Sub Divisional Magistrate has to decide in accordance with the provisions of Chapter X of the Code.
Resultantly this Original Petition (Criminal) is disposed of in the following lines:
i. So far as Ext.P8, order is concerned, it is made clear that it is open to the petitioner to raise his objection in the matter before the Sub Divisional Magistrate as provided in the Code and in case any such objection is preferred the Sub Divisional Magistrate shall proceed in the matter as provided under law.
ii. It is directed that petitioner shall establish and operate the sewage and water treatment plant only on getting approval from respondent No.2. On getting approval for establishment it is open to the petitioner to proceed with establishment of the plant. But, operation of the plant will again be on getting approval of respondent No.2.Ext.P9, order of injunction passed by the Sub Divisional Magistrate will stand modified to the above extent.
iii. Notwithstanding the approval granted by respondent No.2 as above stated, whether operation of the sewage and water treatment plant caused any OP(Crl.)No.1358/2011 5 nuisance as pleaded by respondent No.5 is a matter which the Sub Divisional Magistrate has to decide in accordance with Chapter X of the Code.
iv. Respondent Nos.2 and 3 shall expedite their proceedings in the matter. Parties can approach respondents 2 and 3 as the case may be, for early disposal of the representation/proceeding.
THOMAS P.JOSEPH, Judge.
cks


This table is suitable for comparing products on both a mobile device and a desktop. It is derived from the Amazon.com product comparison table.
| Brightness | high | high | medium | low | low |
|---|---|---|---|---|---|
| Popularity | high | high | high | low | medium |
| Meaning | Joy, Sunshine, Tropics | Love, Passion, Danger, War | Loyalty, Wisdom, Intelligence, Faith | Earth, Dirty, Natural, Recycling | Royalty, Stability, Nobility, Luxury |


SRTLogger
public class SRTLogger
An object for writing interpolated string messages to srt logging system.
-
Undocumented
Declaration
Swift
public static let shared: SRTLogger
-
Specifies the current logging level.
Declaration
Swift
public var level: SRTLogLevel { get set }
-
Specifies the current logging functional areas.
Declaration
Swift
public var functionalAreas: Set<SRTLogFunctionalArea> { get set }


Ensure the application automatically locks inactive user accounts. Verify that all instances of locking inactive accounts are logged.
Inactive user accounts increase the attack surface of the application and can be used by an attacker as a means of entry.
Follow these steps during the design phase to make sure your application has the capability to lock its inactive user accounts:
Verify your application stores the user's last login/inactivity information. Check if your application has the necessary procedures in place to store and retrieve last login and lockout information about its users.
Verify your application has a lockout policy. An account lockout policy is typically application specific. Review your application's requirements and design specifications. Check for the following functionality:
Verify the lockout policy is enforced by default. Make sure the functionality that enforces the lockout policy is enabled by default during deployment. Ensure that only users with administrative privileges can amend your application's lockout policy. Verify that all instances of modifying the lockout policy are logged. Check the following locations in the code to determine if the lockout policy is fully enforced:
Use the following steps when locking inactive user accounts:
Set a lockout policy. Create the application's lockout policy. Determine the necessary duration of inactivity before an account can be locked/disabled. This policy can vary depending on whether the account is of a normal user or an administrator. For example, disable normal accounts after 45 days of inactivity and administrative accounts after 30 days of inactivity.
Keep track of user inactivity. Establish a mechanism to keep track of the last successful authentication. Successful authentication can be tracked via logs or a timestamp, which resides in the user database.
 Establish a mechanism to verify the current period of inactivity and automatically set the disabled bit for inactive accounts. Using the application or database server's scheduler, activate such functionality to run during the hours with least user activity. Keep in mind that inactive accounts should be disabled, but not removed until it is confirmed that they should be completely removed.


{% extends "base_alert.html" %}
{% block message %}
{{ super() }}
{{ monitor_name }} is unable to poll as frequently as expected because the polling method is
taking {{ overrun_s }}s longer than the polling period ({{ poll_period_s }}s). Either optimize the
polling method to run more quickly or configure the monitor with a longer polling period.
{% endblock %}


{{ partial "head.html" . }} {{ partial "nav.html" . }} {{ with .Site.Params.title404 }}{{ . }}{{ else }}404 - Page not found{{ end }} {{ with .Site.Params.subtitle404 }}{{ . }}{{ else }}The content you're looking for doesn't seem to exist.{{ end }} {{ partial "footer.html" . }}
{{ with .Site.Params.subtitle404 }}{{ . }}{{ else }}The content you're looking for doesn't seem to exist.{{ end }}


The Innovation Group
R&D / Training / Education
- Open-Source Development
- Educational Resources
- Tools & Utilities
- Technology R&D
The Innovation Group performs in-house software R&D to produce educational materials based on open-source tools, and to provide high-value consulting to solve challenging business and technical problems.
We are comfortable with anything from small MVPs to large-scale datasets and production systems serving millions of people. We produce clean and simple designs along with ultra-fast and reliable system architecture and services, built on known best practices and state-of-the-art technology.
We are in the process of rebuilding our site from scratch and we will be adding new content every week, from useful tips and tricks for everyday business to information for developers, consultants, and creative professionals.
Check back for updates and thanks again for visiting our site!
Here are links to a few of the tools and technologies we use:
The Innovation Group brings together the best of classic and modern design methods to create solid user experiences backed by robust and well-defined system architecture.
Here are a few of the services we provide:
This section is under development - check back soon for resources such as articles, tools, downloads, and more.
Here are a few of our recent projects and articles:
Prezence is a simple open-source meditation app built with Dart, Flutter, PostgreSQL and Heroku.
website source codePaintbros is a simple raster paint program built with HTML5, CSS3, and TypeScript.
live demo source code tutorial on itnext.ioBytes is a version of the classic retro snake game built with HTML5, CSS3, and TypeScript.
live demo source code tutorial on itnext.ioAn introduction to controlling machines with the mind
article on itnext.ioCheck out the source code of this website here for a look into how we build things.
This website was built entirely from scratch using the latest features available in pure HTML5, CSS3, and JavaScript, with no additional framworks, libraries, or plugins.
Screen metrics are calculated on-the-fly by applying geometric math to the exact current height and width of the screen, resulting in components that fit perfectly in proportion to each other along known-good lines - completely eliminating the usual guesswork and bolt-on junk associated with responsive web design.
Contact us to find out how we can help you streamline your business processes, consolidate and manage large and cumbersome datasets, design and build high-value digital products and assets, and create strategies for upgrading and future-proofing the underlying IT infrastructure of your company and products or services. We are generally available for consultation Monday through Friday 7AM – 7PM PST and occasionally on Saturday by appointment.
Contact Shayla for general consultation, analytics, business intelligence, and matters dealing in finance or healthcare.
Contact Kenneth for information related to design, development, systems architecture, and other technical matters.


Cash Deposits
1,7M
| #Bed No | Avatar | Name | Disease Types | Status | Admit Date | Recovered |
|---|---|---|---|---|---|---|
| #{{patient.bedNo}} | {{patient.name}} | {{patient.diseaseTypes}} |
{{patient.status}}
|
{{patient.admitDate}} |
Yet another one, at 15:00 PM
Yet another one, at 15:00 PM
Yet another one, at 15:00 PM


small caps
Small caps are best used for acronyms or any time a capitalized word needs to sit along side normal lowercase words.
Small caps are best used for acronyms or any time a capitalized word needs to sit along side normal lowercase words.
This example makes use of IUCL'S, A.K.A inappropriately used capital letters
Common ligatures allow letters with above-average x-heights to flow into eachother like fish in water
This font, Playfair Display, supports discretionary ligatures.
The letter "s" often has a historical form alternative.
| ordinary | lining | tabular |
|---|---|---|
|<PHONE_NUMBER>5 |<PHONE_NUMBER>45 |<PHONE_NUMBER>7 |
Old style numerals have an irregular x-height: 123456789
Enabling fractions adds an extra 1/2 percent to awesomeness!
This feature allows us to style ordinal numbers, i.e. numbers that tell the position of something in a list: 1st, 2nd, 3rd, 4th etc.
For all those references.1, the superscript feature.2 comes highly recommended.3.
Subscripts are often used in chemistry to denote chemical compounds: Li2O, SO2, H3PMo12O40


The app is split into two parts - game designer and game client. They share core technologies such as the sails application framework and jQuery / jQueryUI for the UI, a Node.js server with MongoDB for the database.
This is a multi-user app for designing games. A game template is created, from which playable game instances can be cloned.
See Game Designer Overview for what it looks like and how to use it.
See Game Designer Development Guide for how it works and how to update it.


This game engine allows the development of turn based strategy games on a grid playing field. Simply author the game setting, click play and you have made your very own game!
Start off by naming your game, define your starting level, grid size and difficulty level
When the field is set, define your characters and objectives! To add a character, click on the characters on the right side of the GUI and then click the desired box on the grid.
Define the objective for the level by choosing them in the objectives box. If an additional level is desired, click the new level button and define your characters and objectives for the new level.
When you have authored to your hearts content, click play!
Click on an unit and their range of movement will be highlighted. Choose the action they should perform from the list on the right hand side and enjoy the game!
This game can be made into a single player game by selecting the AI option and choosing how smart the computer AI is.


{% extends "_layout.html" %} {% set active_page = "index" %} {% block title %}Index{% endblock %} {% block content %}
This site, created in 48 hours during GovHack 2014, aims to help you discover the artwork that's all around you.
A list of public art in Canberra is available from the ACT government, but many people don't know that it exists
By making it accessible via Twitter, we aim to raise awareness of the art in the region
Created with love (and caffeine) by the @makehackvoid team in Canberra, Australia


Base class containing the minimum amount of data for device models.
More...
#include <DeviceModel.h>
|
| static void | ParseFirmware (std::string &rawFW, int &mainVer, int &subVer) |
| |
Base class containing the minimum amount of data for device models.
◆ DeviceModel() [1/2]
| SGCore::DeviceModel::DeviceModel |
( |
| ) |
|
◆ DeviceModel() [2/2]
| SGCore::DeviceModel::DeviceModel |
( |
std::string |
id, |
|
|
std::string |
hwVer, |
|
|
int |
fwVer, |
|
|
int |
subFWver |
|
) |
| |
◆ ~DeviceModel()
| SGCore::DeviceModel::~DeviceModel |
( |
| ) |
|
|
inline |
◆ GetDeviceID()
| std::string SGCore::DeviceModel::GetDeviceID |
( |
| ) |
|
|
inline |
Retrieve the Unique identifier of this device.
◆ GetFirmwareVersion()
| int SGCore::DeviceModel::GetFirmwareVersion |
( |
| ) |
|
|
inline |
Firmware version running on the device's MicroController. (as v4.12, this is the 4)
◆ GetHardwareVersion()
| std::string SGCore::DeviceModel::GetHardwareVersion |
( |
| ) |
|
|
inline |
Retrieve the Hardware (sub) version of this Sense Glove Device.
◆ GetSubFirmwareVersion()
| int SGCore::DeviceModel::GetSubFirmwareVersion |
( |
| ) |
|
|
inline |
Sub firmware version runnning on the device's microcontroller (as v4.12, this is the .12)
- Returns
◆ ParseFirmware()
| void SGCore::DeviceModel::ParseFirmware |
( |
std::string & |
rawFW, |
|
|
int & |
mainVer, |
|
|
int & |
subVer |
|
) |
| |
|
static |
◆ ParseFunctions()
| std::vector< bool > SGCore::DeviceModel::ParseFunctions |
( |
int |
value, |
|
|
int |
size |
|
) |
| |
|
staticprotected |
◆ deviceID
| std::string SGCore::DeviceModel::deviceID |
|
protected |
Unique identifier of this device.
◆ firmwareVer
| int SGCore::DeviceModel::firmwareVer |
|
protected |
Firmware version running on the device's MicroController.
◆ hardwareVer
| std::string SGCore::DeviceModel::hardwareVer |
|
protected |
Hardware (sub) version of this Sense Glove Device.
◆ subFirmwareVer
| int SGCore::DeviceModel::subFirmwareVer |
|
protected |
Sub-Firmware version running on the device's MicroController.
summary> Parse a 32-bit integer value into a set of booleans (010010011) that indicate which (optional) functions this device has.
The documentation for this class was generated from the following files:
- C:/Gitlab-Runner/builds/yDcLA2Qt/0/senseglove/senseglove-backend/sgcorecpp/src/SGCoreCpp/DeviceModel.h
- C:/Gitlab-Runner/builds/yDcLA2Qt/0/senseglove/senseglove-backend/sgcorecpp/src/SGCoreCpp/DeviceModel.cpp


The following instances are not compliant with the Required Tagging standards.
Instances that are not tagged appropriately within a month of being detected as non-compliant will be shutdown automatically until tags have been added. To prevent this from happening have the owners of the instances to tag their assets correctly.
| Instance | Account | Region | Missing tags | Notes | Status |
|---|---|---|---|---|---|
| {{issue.instance.get_name_or_instance_id(True)}} | {{issue.instance.account.account_name}} | {{issue.instance.location}} | {{', '.join(issue.missing_tags)}} |
{% if issue.notes %}
{% for note in issue.notes %}
{{note}} {% endfor %} {% else %} No Notes {% endif %} |
{{issue.state_name()}} |


--- layout: post date: 2008-03-06 time: "09:00:00" authors: ["Greg Wilson"] title: LearnHub Launches with Software Carpentry Front and Center tags: ["LearnHub"] ---
Toronto-area startup LearnHub.com has launched their new e-learning site with part of the Software Carpentry course as their featured offering. I'm looking forward to meeting a whole new batch of students... ;-)


Day
Week
Month
MARCH
< KW12 >
Monday
16.03
2°
Be prepared
Tuesday
17.03
14°
90% Take an
Wednesday
18.03


Java HTTP
A Java utility library that makes HTTP requests easier to work with.
The Java-HTTP library simplifies the creation and execution of HTTP requests in Java. It allows you to quickly create a request, add parameters, set content types, headers and more, execute it and handle the response and its data, both synchronously and asynchronously. While standardizing some aspects of the HTTP lifecycle for improved usability, the library still allows for a variety of options to be customized. Java-HTTP also supports the transmission of binary data over HTTP.
The package requires Java 8+
Contents
Guide
Download and import
You can automatically import Java-HTTP in your project using Maven or Gradle:
Maven:
<dependency> <groupId>com.raylabz</groupId> <artifactId>java-http</artifactId> <version>2.0.1</version> </dependency>
Gradle:
implementation 'com.raylabz:java-http:2.0.1'
Alternatively, you can download Java-HTTP as a .jar library:
Download .jarMaking an HTTP GET request
Java-HTTP allows you to make a simple GET request using:
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) //Specify the URL and request method .build() //Build the request .sendAndWait(); //Send the request and wait for a response
Adding parameters
You can add parameters to your requests using the addParam() method, which supports various data types. This method expects the parameter name, and the value of the parameter.
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) .addParam("intParam", 1) //Add an integer parameter .addParam("doubleParam", 3.14) //Add a double parameter .addParam("floatParam", 3.14f) //Add a float parameter .addParam("stringParam", "hello") //Add a String parameter .addParam("charParam", 'c') //Add a character parameter .addParam("booleanParam", true) //Add a boolean parameter .addParam("longParam", System.currentTimeMillis()) //Add a long parameter .addParam("shortParam", (short) 123) //Add a short parameter .build() .sendAndWait();
Handling the response
You can specify what happens when the response is received using the onSuccess() method and a lambda expression. The response object gives us access to important response information, such as the status, content and headers of the response.
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) .onSuccess(response -> { System.out.println("Response received successfully"); //Print a message int status = response.getStatus(); //Get the status String body = response.getContent(); //Get the content List<String> keepAlive = response.getHeaderField("Keep-Alive"); //Get meta-data by name (headers) }) .build() .sendAndWait();
You can also specify what will happen when an error occurs during the execution of the request using the onFailure() method. This is different from the response status, as it indicates that an error has occurred on the client-side rather than on the server-side. Similar to onSuccess(), the onFailure() method can be defined using a lambda expression:
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) .onFailure(error -> { error.printStackTrace(); }) .build() .sendAndWait();
Making an HTTP POST request
You can create and send a POST request or any other type of HTTP request (i.e. DELETE, PUT etc.) by changing the request method when creating a BasicHTTPRequest:
//POST request: BasicHTTPRequest.create("http://google.com", RequestMethod.POST) .build() .sendAndWait();
//PUT request: BasicHTTPRequest.create("http://google.com", RequestMethod.PUT) .build() .sendAndWait();
Defining request headers
You can define a header in your request using the setRequestProperty() method:
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) .setRequestProperty("User-Agent", "Java") //Set the 'User-Agent' header .build() .sendAndWait();
Content type
You can define the content type for your request using the setContentType() method:
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) .setContentType(ContentType.CONTENT_TYPE_JSON) .build() .sendAndWait();
Alternatively, if you want to provide a custom content type, you can use the setContentType() method and provide a string-based representation of the type:
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) .setContentType("text/*") .build() .sendAndWait();
Timeouts
You can define the connection timeout and data read timeout limits (in milliseconds) using the setConnectTimeout() and setReadTimeout() methods:
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) .setConnectTimeout(20000) //Set the connection timeout .setReadTimeout(15000) //Set the read data timeout .build() .sendAndWait();
Response status checks
You can quickly check if the status is successful by using the isSuccess() method:
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) .onSuccess(response -> { if (response.isSuccess()) { //TODO - Success! } else { //TODO - Failed to connect :( } }) .build() .sendAndWait();
Asynchronous requests
An asynchronous request is a request which does not block the execution of the program, allowing other code to be executed concurrently with the request. Asynchronous requests can be made by using the send() method instead of sendAndWait().
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) .build() .send(); //Send the request and continue executing other code
Binary requests
Java-HTTP allows you to easily create and send HTTP requests involving binary data. Binary requests and responses are ideal for sending larger chunks of data such as multimedia or documents, and communicating more efficiently. Binary requests send binary data and will always return binary responses, in raw bytes. They can be created using the BinaryHTTPRequest class:
BinaryHTTPRequest.create("http://localhost:8080/binaryEndpoint") .build() .sendAndWait();
You can put data into the request body using the following methods, which accept primitive types:
BinaryHTTPRequest.create("http://localhost:8080/binaryEndpoint") .putInt(1) //Put an integer .putShort((short) 1) //Put a short .putLong(System.currentTimeMillis()) //Put a long .putFloat(1.3f) //Put a float .putDouble(3.14) //Put a double .putChar('c') //Put a character .putString("hello") //Put a string .putBoolean(true) //Put a boolean .putByte((byte) 112) //Put a byte .putBytes(new byte[10]) //Put an array of bytes .build() .sendAndWait();
You can also use the same properties and methods as in simple HTTP requests:
BinaryHTTPRequest.create("http://localhost:8080/binaryEndpoint") .onSuccess(response -> { if (response.isSuccess()) { //... } }) .onFailure(error -> { error.printStackTrace(); }) .setConnectTimeout(10000) .setReadTimeout(15000) .setRequestProperty("User-Agent", "Java") .build() .send();
Handling binary responses
Binary responses can be handled using the onSuccess() method. Their content is in raw bytes, but the following methods can allow you to read primitive data types:
BinaryHTTPRequest.create("http://localhost:8080/binaryEndpoint") .onSuccess(response -> { if (response.isSuccess()) { int i = response.readInt(); long l = response.readLong(); short s = response.readShort(); float f = response.readFloat(); double d = response.readDouble(); char c = response.readChar(); String str = response.readString(); boolean b = response.readBoolean(); byte b1 = response.readByte(); } }) .build() .sendAndWait();
It is also possible to get the entire body of the response using response.getContent().
BinaryHTTPRequest.create("http://localhost:8080/binaryEndpoint") .onSuccess(response -> { if (response.isSuccess()) { final byte[] data = response.getContent(); } }) .build() .sendAndWait();
Latency
It is also possible to get the latency of a request-response cycle using the response.getLatency() method, which returns the latency in milliseconds:
BasicHTTPRequest.create("http://google.com", RequestMethod.GET) .onSuccess(response -> { long latency = response.getLatency(); }) .build() .sendAndWait();
Documentation
Visit the documentation.
License
Java-HTTP is released under the Apache 2.0 license.
Source code
You can find the source code at the project's repository here.
Bug reporting
Please report bugs here.


Sedans
Choose a sedan for its affordability and excellent fuel economy. Ideal for cruising in the city or on your next road trip.
Suvs
Take an SUV for its spacious interior, power, and versatility. Perfect for your next family vacation and off-road adventures.
Luxury
Cruise in the best car brands without the bloated prices. Enjoy the enhanced comfort of a luxury rental and arrive in style.


Ask user's First name
Ask user's Last name
Ask user's age
Print full name in a sentence
Print out user's age in a sentence


Run date: 2018-12-19
Student User: heypoppins
Project: think-java
----------------------------------------------------------
[STUDENT INIT] heypoppins
[SETUP] Creating student dir: ./stuwork/heypoppins
[PRE-WARN]: Expected non-empty: ./stuwork/heypoppins/think-java-heypoppins
[GITWORK]
[Attempting DL:https://github.com/SwettSoquelHS/think-java-heypoppins.git]
Cloning into 'think-java-heypoppins'...
[GITWORK DONE]
[Assignment] >Think Java: Ch2-ch4<
[DESC] HW1, Ch2-Ch4
*[BEGIN chapter2]
[EXPECTING TARGETS] ['Date', 'Time']]
[SUMMARY]
['Date: MISSING (- 0.17)'
'Time: MISSING (- 0.17)']
[DONE chapter2]
*[BEGIN chapter3]
[EXPECTING TARGETS] ['Exercise3', 'Exercise4']]
[COMPILING] Exercise3.java
[SUCCESSFUL COMPILE] Exercise3.java
[RUNNING] Exercise3
-->
How many seconds?: 0 hours, 0 minutes, 13 seconds.
<--
[OUTPUT OK]
[COMPILING] Exercise4.java
[SUCCESSFUL COMPILE] Exercise4.java
[RUNNING] Exercise4
-->
What do you think my number is?: Your number was: 13
My number was: 53
You were off by: 40
<--
[OUTPUT OK]
[SUMMARY]
['Exercise3: PASSED - EXCELLENT!'
'Exercise4: PASSED - EXCELLENT!']
[DONE chapter3]
*[BEGIN chapter4]
[EXPECTING TARGETS] ['Multadd']]
[COMPILING] Multadd.java
[SUCCESSFUL COMPILE] Multadd.java
[RUNNING] Multadd
-->
multAdd test using 1.0, 2.0, 3.0: 5.0
Using multAdd: 1.0606601717798212
expSum: 1.2005440615054193
<--
[OUTPUT OK]
[SUMMARY]
['Multadd: PASSED - EXCELLENT!']
[DONE chapter4]
[ASSIGNMENT DONE] Think Java: Ch2-ch4
[SCORE] 0.67
[Assignment] >Think Java: Ch6<
[DESC] HW2, Ch 6
*[BEGIN chapter6]
[EXPECTING TARGETS] ['Exercise4', 'Exercise5']
[COMPILING] Exercise4.java
[SUCCESSFUL COMPILE] Exercise4.java
[TESTING WITH] Ch6Ex4
[COMPILING] Ch6Ex4.java
[ERROR] javac failed Ch6Ex4.java
----begin compile output-------
Ch6Ex4.java:56: error: cannot find symbol
boolean isIt = Exercise4.isAbecedarian(testStr);
^
symbol: method isAbecedarian(String)
location: class Exercise4
1 error
-----------END COMPILE-------
[SUMMARY]
['Exercise4: COMPILE ERROR (- 0.30)'
'Exercise5: MISSING (- 0.50)']
[DONE chapter6]
[ASSIGNMENT DONE] Think Java: Ch6
[SCORE] 0.20
[Assignment] >Swettercise1<
[DESC] HW3: Third HW Assignment, Swettercise. Assigned with Chapter6 work
*[BEGIN chapter6]
[EXPECTING TARGETS] ['Swettercise1']
[SUMMARY]
['Swettercise1: MISSING (- 0.50)']
[DONE chapter6]
[ASSIGNMENT DONE] Swettercise1
[SCORE] 0.50
[Assignment] > Think Java: Ch7 - pt1 <
[DESC] HW7: Fourth HW Assignment, Ch7 Ex3 & 4
*[BEGIN chapter7]
[EXPECTING TARGETS] ['Exercise3', 'Exercise4']
[SUMMARY]
['Exercise3: MISSING (- 0.50)'
'Exercise4: MISSING (- 0.50)']
[DONE chapter7]
[ASSIGNMENT DONE] Think Java: Ch7 - pt1
[SCORE] 0.00
[Assignment] > Think Java: Ch7 - pt2 <
[DESC] HW7: Fith HW Assignment, Ch7 Ex5, 6, 8
*[BEGIN chapter7]
[EXPECTING TARGETS] ['Exercise5', 'Exercise6', 'Exercise8']
[SUMMARY]
['Exercise5: MISSING (- 0.50)'
'Exercise6: MISSING (- 0.50)'
'Exercise8: MISSING (- 0.50)']
[DONE chapter7]
[ASSIGNMENT DONE] Think Java: Ch7 - pt2
[SCORE] 0.00
[Assignment] > Think Java: Ch11<
[DESC] HW11: HW Assignment, Ch11 Ex3
*[BEGIN chapter11]
[EXPECTING TARGETS] ['Tile']
[SUMMARY]
['Tile: MISSING (- 0.50)']
[DONE chapter11]
[ASSIGNMENT DONE] Think Java: Ch11
[SCORE] 0.50
[Assignment] > Think Java: Ch12<
[DESC] HW12: Poker Hand Test
*[BEGIN chapter12]
[EXPECTING TARGETS] ['CheckPokerHands']
[COMPILING] CheckPokerHands.java
[ERROR] javac failed CheckPokerHands.java CheckPokerHands.java:1: error: class, interface, or enum expected
int score;
^
CheckPokerHands.java:1: error: class, interface, or enum expected
int score;
^
2 errors
[SUMMARY]
['CheckPokerHands: COMPILE ERROR (- 0.30)']
[DONE chapter12]
[ASSIGNMENT DONE] Think Java: Ch12
[SCORE] 0.70


Utility struct for managing each finger of Shadow Hand. Contains all the information about the Finger instance, including joint limits, MoveGroup, MoveIt plan, and joint control publishers.
More...
#include "include/shadowlibs/shadow_finger.hpp"
|
| struct | BioTac |
| | Utility struct for managing the BioTac sensor attached to each finger. Holds the pressure and impedance data obtained from the sensor. More...
|
| |
Utility struct for managing each finger of Shadow Hand. Contains all the information about the Finger instance, including joint limits, MoveGroup, MoveIt plan, and joint control publishers.
| shadow_finger::Finger::Finger |
( |
std::string & |
finger_name, |
|
|
ros::NodeHandle & |
node_handle |
|
) |
| |
|
inline |
Constructor for each finger. Requires name of finger and a ROS node handle reference. Everything else is populated by constructor.
- Parameters
-
| finger_name | Name of the finger |
| node_handle | ROS node handle reference |
| std::string shadow_finger::Finger::getFingerName |
( |
| ) |
|
|
inline |
Getter function for finger name.
- Returns
- String with the finger name
| float shadow_finger::Finger::getFSRValue |
( |
| ) |
|
| std::tuple<float, float> shadow_finger::Finger::jointLimitsFromName |
( |
std::string & |
joint_name | ) |
|
|
inline |
Get joint limits from joint name, from vector of tuples populated by getFingerJointLimits()
- Parameters
-
| joint_name | Name of the joint whose limits are to be fetched |
- Returns
- tuple containing upper and lower limits of joint
| shadow_finger::Finger::_biotac_id |
The index of the BioTac sensor.
| shadow_finger::Finger::_finger_move_group |
MoveGroupInterface for this finger.
| shadow_finger::Finger::_finger_name |
The name of this finger instance.
| shadow_finger::Finger::_fsr_topic |
Subscriber topic for getting FSR data for finger.
| shadow_finger::Finger::_joint_controller_publishers |
Vector of ROS publishers, for sending control data for each joint in finger.
| shadow_finger::Finger::_joint_limits |
Vector of tuples of joint limits of each joint in finger.
| shadow_finger::Finger::_joint_names |
Vector of strings of all joints in this finger.
| shadow_finger::Finger::_node_handle |
| shadow_finger::Finger::_plan |
MoveIt plan generated for this finger.
The documentation for this struct was generated from the following files: