Connect an EmonTx v3 to RaspberryPI via serial
The standard OEM system setup is to use a RaspberryPI base station next to your internet router connected via Ethernet, and an emonTx near your meter cabinet with a wireless link between them. In some instances it may make sense to connect the emonTx directly to the RaspberryPI via a serial link.
Both the RaspberryPI and emonTx v3 run at 3.3V, so the serial RX and TX lines can be connected without issue. The RaspberryPI can power the emonTx as well.
In the picture below, the RaspberryPI's 5V supply is connected via the red wire to the emontx 5V input, which is then regulated by the emonTx to 3.3V. The ground connection is the black wire, and the data going from the emonTx to the RaspberryPI is the green wire. An additional wire could be connected to allow the RaspberryPI to send data to the emonTx, but in this example, it's not needed.
Note: connecting the emonTx via serial to the RaspberryPI is not part of the standard configuration, so this documentation may go out of date as changes are made to the emonTx and RaspberryPI over time, and may be a bit more involved than the wireless rfm12/69 approach.
Useful hardware pin-out reference documentation
Reference design for the RaspberryPI adapter board which connects via serial to the RaspberryPI
http://wiki.openenergymonitor.org/index.php?title=RFM12Pi_V2#Design_File...
RaspberryPi GPIO pinout:
http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/turing-machine/tw...
EmonTx v3.2 schematic
http://openenergymonitor.org/emon/sites/default/files/emonTxV3.2_sch.png
EmonTx v3.4 schematic
https://github.com/openenergymonitor/Hardware/blob/master/emonTxV3/emonT...
Note: The FTDI connector Tx and Rx pins are reversed on the EmonTx v3.4 PCB legend and on the Schematic. Data is received by the emonTx on the Tx pin and transmitted by the emonTx on the Rx pin.
EmonTx Firmware
A simple, direct serial output Arduino sketch/firmware for the emonTx v3 can be found here:
This prints power values and mains voltage to the serial port as space separated values:
100 100 200 240
105 100 200 242
...
Where the values are: CT1 Power, CT2 Power, CT3 Power, CT4 Power, Mains Voltage
The direct serial output Arduino sketch/firmware for the emonTx v3 can be uploaded with a USB-to- serial adapter. Once uploaded, use the Arduino IDE serial monitor - set to 9600 bps - to verify the emonTx is printing values to the serial port.
RaspberryPI to emoncms link
If you just want to forward the emonTx data to a remote emoncms, thiat can be done with emonHub on the RaspberryPi
To install emonHub on the RaspberryPi run:
git clone https://github.com/emonhub/dev-emonhub.git ~/dev-emonhub && ~/dev-emonhub/install
See the emonHub Github page if the above does not work.
The next part involves setting up emonHub in a manner similar to the way emonHub is used in the HomeEnergyMonitor documentation here: https://github.com/openenergymonitor/documentation/blob/master/Applicati...
If you have an pre-built OpenEnergyMonitor sd card, you will find the emonHub configuration file on the boot partition. To edit it, enter:
sudo nano /boot/emonhub.conf
If you installed emonHub yourself on a generic raspbian install, the emonhub.conf file can be found in the /etc/emonhub directory.
sudo nano /etc/emonhub/emonhub.conf
Add the serial config to the emonhub.conf interfacers section:
[[Serial]] type = EmonHubSerialInterfacer [[[init_settings]]] com_port = /dev/ttyAMA0 com_baud = 9600 [[[runtimesettings]]]
Next, add the location and apikey of the emoncms server you're posting to in the reporters section.
[[emonCMS]] type = EmonHubEmoncmsReporter [[[init_settings]]] [[[runtimesettings]]] url = http://localhost/emoncms apikey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
It's worth noting the standard emonTx firmware which has all the rfm12b radio packet sending code, also prints a space separated string to its serial port which should work the same as the cut down serial only example above, although you'll still be transmitting radio packets.
Here's a picture of both units in their cases, connected, a tidy system!
Pi case: http://shop.pimoroni.com/products/blackberry-case-for-raspberry-pi


| DOSE: |
10 mg |
smoked |
5-MeO-DMT |
(powder / crystals) |
* Onset (2-3 minutes)
The setting for my first DMT experience was a soft blue room lit by a string of christmas lights draped around the perimeter of the ceiling. My mindset was relaxed and high from a few bowls of Cannabis sativa earlier that evening. The music was 'Shine on You Crazy Diamond', and the two DMT-experienced individuals in the room carefully instructed me on the gentle process of smoking DMT:
1. Don't let the lighter flame touch the crystals.
2. Hold the lighter on the substance for a good 30 seconds.
3. Hold in your hit for as long as you possibly can.
My cosmic companion of entheogen-experiences was sitting across the room staring at me with psychadelic anticipation and warm support. As I inhaled the vaporizing DMT crystals I began to hear a high-pitch ringing in my ears that reminded of a N2O trip. The feelings that followed, however, were nothing like nitrous. I felt as though my entire being was concentrated within my eyes, and I was quite displaced from my somatic self. I was not only admiring the most admonishing beauty in the universe, but also I was completely aware that I was an integral part of the complexifying function of this insanely beautiful existence called life.
* Peak (10-12 minutes).
'Oh my God', my words sounded strange like they did not really belong to me as my essence began to renter the room. 'Here dude, let me take the pipe from you', a friend offered. As I was forewarned I was not getting any real visual hallucinations, but instead overwhelming waves of the purest emotions combined with an intensely over-stimulated brain. During the previous few minutes I was completely unaware of my present surroundings including 'Wish You Were Here' which I was just now deciphering as a familiar album. The pulsating frequency continued to resonate through my eyes for the next ten minutes as my jaw dropped in astonishment at the way I felt.
Falling like a gentle leaf down, I began to talk more about the things that I was still experiencing as I began to feel completely relaxed within a new defintion of contentness. It was difficult at first to remember what had just happened as the waves of emotion broke the the walls of my concentration.
The whole experience lasted approximately 20-25 minutes. It was different than the common psychadelic experience of psilocybin and lsd-25 in that I never recieved an impression of the presence of a higher mind, or what Terence McKenna calls the Transcendent Other. I did feel like a slightly aware citizen of the collective consciousness along with complete connectedness with the most loving and sentimental part of this universe. The relaxed high of the later portion slowly slithered away from my brain and left me feeling more sober and stable than when I started.
I have smoked 5-MEO-DMT a total of four times, including this first experience, and everytime I seem to absorb the feeling of breath-taking beauty on a deeper and deeper level within my most cherished parts of my psyche.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


---
layout: post
title: http://cf-learn.info/ goes live
permalink: /httpcf-learninfo-goes-live
date: 2011-12-15 01:52:00.000000000 -06:00
comments: true
categories:
- announcements
published: true
---
I'm happy to announce http://cf-learn.info/, the accompanying website for my book Learning CFEngine 3, currently in Early Release from O'Reilly.
In this website you will find:
- General information about the book.
- A discussion forum for any type of questions, feedback or suggestions about the book.
- Downloadable code examples from the book, plus (over time) many other new examples.
- List of Errata, and access to the Errata system at O'Reilly.
- A blog devoted to the book and to CFEngine.
The site is mostly empty at the moment (the blog, the forum and the errata page are live, I encourage you to participate, particularly if you have purchased the Early Release version of the book and want to provide any sort of feedback), but content will grow over time.
Thank you for visiting, and please let me know what you think!
Best regards,
--Diego


Tomorrow I officially begin my apprenticeship with Bloc. I’m pretty excited.
So what is Bloc? It’s an intensive course for learning the skills to be a professional web developer. Its part of a movement of companies designed to give people the professional skills to find employment in the tech industry via short but intensive study in immediately marketable skills, rather than the traditional multi-year degree-based educational model. Typically these programming “bootcamps” involve dropping $12,000 for three months of studying 40 to 50 hours a week in a classroom in a major urban tech hub like San Francisco or New York. It sounds kind of crazy on the surface of it, but it seems to be working. There’s a huge demand for people with the skills these bootcamps are offering in a field where degrees matter less than ability and experience.
Meanwhile ever since the aborted start of my career in economic development I’ve been trying to forge a new career path studying online. I first fell in love with programming with a coursera course I took called Introduction to Interactive Programming in Python and the rest is history. But after a year of studying on my own, I finally decided that I’d like to do something more intensive and get a little more guidance.
Enter Bloc. Bloc takes this idea of intensive professional courses and moves them to the web. Instead of sitting in a classroom for 8 hours a day, the instruction takes place on an online platform. The human element takes place through the use of mentors–professional developers who dedicate time each week to meeting one-on-one with each of their students and providing some guidance for the process. The advantage of this setup is that I can do it right where I am now, from Lima Peru. This means a much lower cost both in terms of the cost of the program and in the costs of quitting my job and moving to an (expensive) North American city.
I also suspect the mentor format might just be better than the traditional classroom format. Learning, particularly learning development, takes place by doing. Compared to university education, thie teacher role in this setting seems less like a college lecturer and more like your thesis advisor–you meet periodically to go over your work and receive feedback and then you go back to your desk and work on your own. Being more independent and less structured is definitely challenging, but when I think back upon my experience in writing my senior thesis, I remember it as one of the times where I learned the most in all my time in college and was the most useful when applying for jobs. So I’m optimistic.
Education and learning generally are areas that interest me a great deal. I’m very excited to see the ways that technology can transform education, so I expect I’ll have quite a bit to comment on as I go through Bloc. Stay tuned.


Running a Scorebot
Set Broadcast Format
In the Game -> Options... -> Broadcast Format panel, adjust the format string to your liking. You can adjust this format at any time, even during broadcast.
Connect to IRC
Click IRC -> Connect... and fill in the values.
Configure Scorebot
First, select or enter a server in the server input area and click IRC->Broadcast->Configure... The selected server will appear in the scorebot dialog. To change the server, select a different server from the server input and reopen the scorebot dialog. Input desired values for the event title and broadcast interval (don't set this too low!), and select a channel from the drop down list. Click the button next to the list to join or part channels.
You can also select and configure a custom scorebot implemented in Python from this dialog. A custom scorebot may add format specifiers to the broadcast format, change the output style, and other things. If the custom scorebot has any user configurable options, they will appear in the Extended Options list. Double click an item to set its value. You may input any text for an extended option; however, the custom scorebot may display an error if the text entered is not in the expected format. Read the scorebot's documentation or source code to learn what values it accepts.
Click OK when you're done. You can revisit the configuration dialog at any time, even after the bot has started broadcasting. However, loading the dialog during broadcast disables the selection of custom scorebots; the current bot in use may only be configured.
Start broadcasting
Click IRC->Broadcast->Start to start broadcasting using the configured interval, and IRC->Broadcast->Stop to stop. After broadcasting has started you may not change the game server you configured earlier until the bot is stopped again. The IRC->Broadcast menu also has some other functions, such as Pulse, which instructs the scorebot to broadcast once, and Print Players, which instructs the bot to print a list of players on each team.


Over 60 People Reportedly Rescued From Distressed Boat Off Philippine Cebu Island - Photos
MOSCOW (Sputnik) - According to the Manila Bulletin newspaper, there were 53 passengers and 10 crew members on board. The vessel was bound for the city of Cebu from the town of Loon in Bohol province.
The Philippine Coast Guard (PCG) rescued over 60 passengers and crew members of the distressed MV Siargao Princess vessel off the coastal town of Sibonga in the central Philippines, media reported on Thursday.
"All accounted now. Sixty-three survivors out of 53 pax and 10 crew onboard for total of 63. Fifty-nine of them are now onboard MRRV 4406 en route to Cebu Port, while four are already at the shoreline of Carcar safely," commander of Coast Guard Central Visayas Ronie Gavan said, as quoted by the media.
A medical team was dispatched to the site, and the PCG will conduct an investigation.


THE FUGITIVE A film review by Jon A. Webb Copyright 1993 Jon A. Webb
This is based on the TV series of the same name, with Harrison Ford playing the on-the-run doctor, and Tommy Lee Jones as his pursuer. Briefly, Ford's character is accused and convicted of the brutal murder of his wife, and escapes while on his way to Death Row to hunt down the one-armed man who he knows is the real criminal.
Academy Award nominations all around: for Best Picture, Best Director, Best Actor, and Best Supporting Actor (there are no significant women's parts).
The first half of the movie is a thrilling chase, with great special effects that really put me on the edge of my seat (in particular, the train crash beats anything from the Indiana Jones series). But it is Ford's bewildered intensity and Tommy Lee Jones's no-nonsence confidence that make this a great film, coupled with the direction. I loved that moment when Jones catches up with Ford early on, and you know what Ford's going to do (at least if you've seen the preview), and he knows it too, and he can't quite believe he's going to do it but does it anyway. Or later, when Jones has Ford in his sights and you just know it's over, but it isn't and at first you (and Ford) can't believe it, and then it makes so much sense. This is truly great cinema, what American films are all about.
The movie drags towards the end, when a poorly-written script catches up with the director and forces him to spend time explaining why the one-armed man did what he did, and to show us two middle-aged men fighting. I mean, who cares? At that point, everything that matters has been resolved; it would have been better if there had been one more near encounter earlier on or something, if the movie had to last a certain length.
-- J
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


To quickly wrap a code block in useful constructs, select it in the editor, press &shortcut:SurroundWith; (Code | Surround With) and choose the desired code block, e.g. if.
The list of available options ("wrappers") is context-sensitive and depends on the language that you are currently using. For example, you can surround html blocks with tags, etc.


20K
Members
12
Countries
2K
Hotels
48
Partners
Wisata Populer
Something that you never try
before in this world
Our Networks
Companies are trusted us
more than just a trip
They Are Loving Us
Moments were giving them
the best experience
Paula Hergovizia
"It was glorious and i could not stop to say Wowww for every single moment. Thank you!"
Trip to Bali
Putri Andini
"Never could I have imagined the wonderful experiences that awaited me/us/before we began our trip."
Trip to Aceh
Jennifer Leonardo
"I had an absolutely FABULOUS time in Lombok. Everything you arranged went smooth as silk. And Axara? Simply terrific. What a nice guy."
Trip to Lombok


Rajesh Kannan KC2KBY/VU2OW
Older Images Apr19 - May 18) Click here
Older Images (July - December 2017) Click here
| Try RinginMorse ringtone software for Android
Devices Click here for more details. Available in Google Play Store https://play.google.com/store/apps/details?id=com.vu3rgk.RinginMorse |


Nyzo version 531 (commit on GitHub) eliminates blacklisting for blocks received from unexpected verifiers.
This version only involves code running on the verifier. Though the changes affect how sentinels are treated, updating a sentinel to this version will not have any effect.
This change involves a single line of logic. In Message, a condition has been added to avoid blacklisting for new-block messages.
This change is necessary to allow the sentinel to broadcast blocks for new verifiers. This will help to avoid manipulation of the entry process with denial-of-service attacks. While sentinels can calculate which verifier should be voted into the cycle next, they are unable to know with certainty when the new-verifier votes have been cast throughout the cycle. This change reduces the possibility of a sentinel being temporarily blacklisted due to a timing issue in block transmission.
In a later version, changes will be made to the sentinel to allow it to broadcast blocks for new verifiers in appropriate circumstances. That change will be released after a sufficient proportion of the cycle has updated to version 531 or later.
When the version adding sentinel support for new-verifier blocks is released, multiple bounties will be awarded for the reports that led to these changes.


Ping Servers is a mobile application that periodically "pings" servers to determine whether they are reachable by your device. Whenever a ping fails, you will be notified instantly on your device so you can act upon the situation as you see fit! Forget worrying about whether your site is online, just set up a ping on Ping Server and let your Android device do your worrying for you.
Choose between a variety of settings to use for pinging your servers. Using Android's built in scheduler, Ping Servers can automatically query your servers whenever the device wakes up after the provided ping interval. If your device is on a later version of Android (6.0+), you can tell Ping Servers to "use strict alarms", which will turn off battery optimazion for the applciation and force the device to wake up and check your servers at the frequency of your choosing. You can also disable Ping Servers at certains times of the day, so you can prevent your phone from blaring at work or while you're sleeping.
We have implemented 2 differents methods of making sure your servers are up and running: URL.openConnection() and InetAddress.getByName(). Ping Servers requires both of these functions to succeed, or the ping will fail. If a ping fails, the service will automatically retry the ping after a given interval. By default, the service will run 3 retries at intervals of 1 second. If the app if unable to ping any of your servers after the given number of retires, you will instantly get a notification.
Every one of Omega's features/elements is completely optional and can be modified to your liking, here is what you can do to each element individually
Please send me an email at<EMAIL_ADDRESS>if you experience any issues, I think we'd both be happier to solve a problem with the application than have a negative review :)


The Language of Composition: Reading,...
Collections Close Reader: Grade 10
Collections Close Reader: Grade 11
Collections Close Reader: Grade 8
Holt McDougal Literature: Grade 10...
Collections Close Reader: Grade 9
myPerspectives: English Language Arts, California...
Collections Close Reader: Grade 12
myPerspectives: American Literature, California (Volume
SpringBoard English Language Arts: Grade
Collections Close Reader: Grade 7
myPerspectives: Grade 10, California (Volume
myPerspectives: American Literature, California (Volume
SpringBoard English Language Arts: Grade
Holt McDougal Literature: American Literature...
Florida Collections: Grade 11
SpringBoard English Language Arts: Grade


C:/Users/New/Documents/Games_Technology/Year4_Semester1/ICT397/~My Work/Assignment2/ICT397Carre/CarreGameEngine/Dependencies/BulletPhysicsEngine/include/BulletCollision/Gimpact/btGImpactMassUtil.h File Reference
#include "LinearMath/btTransform.h"
Go to the source code of this file.
Detailed Description
- Author:
- Francisco Leon Najera
Definition in file btGImpactMassUtil.h.


Chevy Chase, MD
Interests: Quad-copters, aqua-ponicsWants to be an app developer because it's both creative and detail-oriented. Wants to better himself.
Edmonton, AB
Interests: My spawn, literary dramas, motorcycles.Wants to be an app developer because it's fascinating and comes with a huge market in Silicon Valley.
Paired programming is when two coders work together on a single project simultaneously. One "drives" (with the keyboard) and the other "navigates" (tells the driver what to do). Two brains; one project.
DBC emphasizes paired programming to help us develop empathy, catch errors, pick up other people's styles and strategies, get to know people, stay focussed, and because it's popular in the industry - so we should be exposed to it.
 We each found being the driver easier than being the navigator -- perhaps there is just more pressure in that role, at least until we get to know each other better! Interestingly, both of us perceived that parts of it went slowly, and yet we were both impressed with what we were able to accomplish together during the short pairing session.


I am a guy from Cincinnati. I love doing web development. I am hoping to learn Ruby on Rails.
If you Google me, you mostly find some other guy. But my stuff is in there. Here is my Twitter page.
Kittens are cute.


3D Realms’ Quake Engine-powered WRATH: Aeon of Ruin is now available on Steam Early Access
by John Papadopoulos3D Realms and 1C Entertainment have announced that their dark fantasy horror FPS which is using the original Quake engine, WRATH: Aeon of Ruin, is now available on Steam Early Access. In order to celebrate this announcement, 1C Entertainment released a new trailer that you can find below.
WRATH launches in Early Access with the first of three non-linear Hub worlds and two unlocked levels. Annihilate the horrors lurking within the ruins of the Old World with an arsenal of devastating weaponry and mystical artifacts. Early Access will continue to receive content updates that add even more levels, enemies, weapons and artifacts. Furthermore, the game will receive music by Quake Champions composer Andrew Hulshult.
Frederik Schreiber, Vice President of 3D Realms and Producer on WRATH, said:
“At 3D Realms we want to evoke nostalgia from the golden era of gaming using classic FPS engines, but with a modern twist. With the incredible Quake engine as our vessel and developer Jeremiah ‘KillPixel’ Fox at the helm, shooter fans are in for a twisted ride.”
3D Realms aims to fully release the game in Summer 2020.
Enjoy!


Leicester City eye January move for Germany centre-back Robin Koch?
Leicester City are reportedly eyeing up a January move for Germany and Freiburg centre-back Robin Koch.
by Andrew SinclairThe 23-year-old has been one of the German club's most impressive performers this season and Brendan Rodgers is thought to view him as a long-term successor to Harry Maguire with the Foxes.
According to The Sun, the former Celtic boss sent scouts to watch Koch in action for Germany during the recent international break ahead of a potential £15m move in the new year.
Koch has scored four goals in 66 appearances for Freiburg since moving from Kaiserslautern in August 2017.
Leicester will face competition for his signature, however, as fellow Premier League sides Wolverhampton Wanderers and Norwich City are also thought to be interested in his services.
body check tags ::


Huddly SDK works with the following NodeJS releases: (Needs to support NAPI v3 )
We recommend using nvm as your node version manager https://github.com/creationix/nvm.
After you've setup nvm run
nvm install 16
nvm use 16
With the node environment setup and ready, go ahead and install our sdk as part of your project dependencies:
npm install @huddly/sdk@latest
You also need to install some other Huddly npm dependencies from which the SDK relies on for device discovery and communication. Depending on which product (camera) you will be working with, the corresponding device api packages must be accompanied with the SDK:
npm install @huddly/device-api-usb # For interacting with our USB cameras
npm install @huddly/device-api-ip # For interacting with our Ethernet/IP comeras
It is also possible to install both of them and configure the SDK which one to use for discovery and/or communication.
The example below illustrates how to setup the SDK instance to communicate with a Huddly camera connected to the host machine. Start by creating the sdk and the transport apis:
const HuddlyDeviceAPIUSB = require('@huddly/device-api-usb').default;
const HuddlyDeviceApiIP = require('@huddly/device-api-ip').default;
const HuddlySdk = require('@huddly/sdk').default;
// Create instances of device-apis you want to use. These APIs also take configuration parameters which can be consulted by the IDeviceApiOpts interface.
const usbApi = new HuddlyDeviceAPIUSB();
const ipApi = new HuddlyDeviceApiIP();
/*
Creating the SDK instance requires you to provide the following:
- DeviceAPI instance (or a lis of different DeviceApi instances) responsible for doing discovery (1st constructor argumet)
- An optional list of DeviceApi instances that can be used for communication (if ommitted the discovery device api will also be used for communication).
*/
// To setup an sdk instance that works with USB devices only, you'd do:
const sdk = new HuddlySdk(usbApi);
// To setup an sdk instance that works with IP devices only, you'd do:
const sdk = new HuddlySdk(ipApi);
// **BETA Feature** To setup an sdk that work with discovering both usb and ip cameras, you'd do:
const sdk = new HuddlySdk([usbApi, ipApi], [usbApi, ipApi]);
The SDK instance will fire ATTACH
events if it finds a camera connected on the host or if a camera is connected at a later stage. The code below listens to attach events from the SDK and initilizes a camera manager instance:
// Create a instance that will represent the `IDeviceManager` interface
let cameraManager;
sdk.on('ATTACH', (newDevice) => {
cameraManager = newDevice;
});
Now since the attach event listener has been set up, we can initilize the SDK and allow it to start the device discovery process:
sdk.init();
That's it on the SDK initialization process. All the actions on the cameraManager instance are done after the attach event. For example, to get the camera information, call getInfo
when the camera is attached:
sdk.on('ATTACH', (newDevice) => {
cameraManager = newDevice;
cameraManager.getInfo().then(console.log);
});
To always get the latest release of the SDK and the corresponding transport libraries (@huddly/device-api-*
) you can add some extra steps to your build pipeline to do just that. Npm facilitates this for you by simply running an update command as below:
npm update @huddly/sdk
The command above will make sure that your project is using the latest release of @huddly/sdk
. Keep in mind that the command above will make changes to your package.json
and package-lock.json
files to compensate for the new changes (if any).
In case you always want the latest patch updates on the library you can use the tilde ~
prefix in front of the version on the package.json file:
"@huddly/sdk": "~0.6.5"
The above version scheme will use releases from 0.6.5
to <0.7.0
. Another alternative is to use caret ^
symbol in front of the version string which tells npm to use all future minor/patch versions without incrementing the major version. For example:
"@huddly/sdk": "^0.6.5"
will use releases from 0.6.5
to <1.0.0
. Major updates will have to be updated manually due to the potential of breaking changes involved with the new update.
If you have a question or found a bug please open an issue. Thank you
npm install fails on M1 mac because of missing GRPC dependency.
For more details on the rest of the functionality to the sdk check out developer.huddly.com for the different classes, interfaces, enums and more which some of them having example code as well.
All code samples and usage demos can be found on the official Huddly SDK sample repository.
Check out the sdk code on github (https://github.com/Huddly/sdk)
Version 0.7.0 of the SDK comes with some breaking changes for the Huddly IP/Network cameras. The breaking change lies on the product id (PID) used to identify the L1 cameras. Before version 0.7.0, all L1 cameras reported the following pid 0x3E9
(1001
in decimal), whereas with version 0.7.0 the new reported pid is 0x4d3f64b
(81000011
in decimal). This was a necessary change to comply with the actual product ID values that the cameras report when broadcasting their presence on the network. For those of you who are dependent on product ids for filtering/identifying the different Huddly cameras, you can import the following enum class which contains the PID hex values for all the Huddly cameras:
const HuddlyHex = require('@huddly/sdk-interfaces/lib/enums/HuddlyHex').default;
// To import L1 product id, use the following enum value
const l1Pid = HuddlyHex.L1_PID;
// To import IQ product id, use the following enum value:
const iqPid = HuddlyHex.BOXFISH_PID;
// And so on... Open "HuddlyHex" enum implementation to see the rest of the available PIDs
Internally the camera always sees full field of view, the coordinates are relative to full field of view by default. If you want the coordinates to be be absolute to the current framing, you can specify this when you get the detector.
cameraManager.getDetector({ convertDetections: 'FRAMING' });
This makes it easy to draw these bbox directly on top of the main stream.
Another available detector configuration is the shouldAutoFrame
option which when set to false, it allows you to configure Genius Framing to send detection data without autoframing.
cameraManager.getDetector({ shouldAutoFrame: false });
By default, the detector is configured to run autoframing and generate detection information.
If you want to get detection data only when the camera is streaming on the host machine, you need to configure the detector class with the DOWS
option.
cameraManager.getDetector({ DOWS: true });
This option makes it possible to configure the detector so that you only get detection data when you are streaming on host machine. By default, this option set to false
so that you don't have to stream to get detection data.
After v0.4.0, SDK comes with a new feature ragarding the way you get detection data from the camera. On this version (and onward) the default behavior of detector is starting an internal stream (controlled by the camera only) to give you detection information. As a result the LED light is turned ON. Proper tearing down of the detector instance will stop the internal stream on the camera and with it the LED light.
Make sure that no other application such as the Huddly app or another sdk instance is running and using the camera.
No. To make sure that camera is compatible with the sdk the documented api gets thoroughly tested. We do not guarantee that undocumented functionality will not break/change from sdk version to sdk version, or camera sw to camera sw.
The current implementation of the SDK does not support having two usb cameras connected to the host at the same time. However, having one Huddly usb camera (IQ, Canvas, GO) and one Huddly IP camera (L1) is supported.


IntroductionCredit: Aaron Watters, Software Consultant There are three kinds of people in this world: those who can count and those who can't. However, there are only two kinds of computer programs: toy programs and programs that interact with some kind of persistent databases. That is to say, most real computer programs must retrieve stored information and record information for future use. These days, this description applies to almost every computer game, which can typically save and restore the state of the game at any time. So when I refer to toy programs, I mean programs written as exercises, or for the fun of programming. Nearly all real programs (such as programs that people get paid to write) have some persistent database storage/retrieval component. When I was a Fortran programmer in the 1980s, I noticed that although almost every program had to retrieve and store information, they almost always did it using home-grown methods. Furthermore, since the storage and retrieval parts of the program were the least interesting components from the programmer's point of view, these parts of the program were frequently implemented very sloppily and were hideous sources of intractable bugs. This repeated observation convinced me that the study and implementation of database systems sat at the core of programming pragmatics, and that the state of the art as I saw it then required much improvement. Later, in graduate school, I was delighted to find an impressive and sophisticated body of work relating to the implementation of database systems. The literature of database systems covered issues of concurrency, fault tolerance, distribution, query optimization, database design, and transaction semantics, among others. In typical academic fashion, many of the concepts had been elaborated to the point of absurdity (such as the silly notion of conditional multivalued dependencies), but much of the work was directly related to the practical implementation of reliable and efficient storage and retrieval systems. The starting point for much of this work was E.F. Codd's seminal paper, "A Relational Model of Data for Large Shared Data Banks."[1]
Among my fellow graduate students, and even among most of the faculty, the same body of knowledge was either disregarded or regarded with some scorn. Everyone recognized that knowledge of conventional relational technology could be lucrative, but they generally considered such knowledge to be on the same level as knowing how to write (or more importantly, maintain) COBOL programs. This situation was not helped by the fact that the emerging database interface standard, SQL (which is now very well established), looked like an extension of COBOL and bore little obvious relationship to any modern programming language. More than a decade later, there is little indication that anything will soon overtake SQL-based relational technology for the majority of data-based applications. In fact, relational-database technology seems more pervasive than ever. The largest software vendorsIBM, Microsoft, and Oracleall provide various relational-database implementations as crucial components of their core offerings. Other large software firms, such as SAP and PeopleSoft, essentially provide layers of software built on top of a relational-database core. Generally, relational databases have been augmented rather than replaced. Enterprise software-engineering dogma frequently espouses three-tier systems, in which the bottom tier is a carefully designed relational database, the middle tier defines a view of the database as business objects, and the top tier consists of applications or transactions that manipulate the business objects, with effects that ultimately translate to changes in the underlying relational tables. Microsoft's Open Database Connectivity (ODBC) standard provides a common programming API for SQL-based relational databases that permits programs to interact with many different database engines with no or few changes. For example, a Python program could be first implemented using Microsoft Jet[2] as a backend database for testing and debugging purposes. Once the program is stable, it can be put into production use, remotely accessing, say, a backend DB2 database on an IBM mainframe residing on another continent, by changing (at most) one line of code.
Relational databases are not appropriate for all applications. In particular, a computer game or engineering design tool that must save and restore sessions should probably use a more direct method of persisting the logical objects of the program than the flat tabular representation encouraged in relational-database design. However, even in domains such as engineering or scientific information, a hybrid approach that uses some relational methods is often advisable. For example, I have seen a complex relational-database schema for archiving genetic-sequencing informationin which the sequences show up as binary large objects (BLOBs)but a tremendous amount of important ancillary information can fit nicely into relational tables. But as the reader has probably surmised, I fear, I speak as a relational zealot. Within the Python world there are many ways of providing persistence and database functionality. My personal favorite is Gadfly, http://gadfly.sourceforge.net/, a simple and minimal SQL implementation that works primarily with in-memory databases. It is my favorite for no other reason than because it is mine, and its biggest advantage is that, if it becomes unworkable for you, it is easy to switch over to another, industrial-strength SQL engine. Many Gadfly users have started an application with Gadfly (because it was easy to use) and switched later (because they needed more). However, many people may prefer to start by using other SQL implementations such as MySQL, Microsoft Access, Oracle, Sybase, Microsoft SQL Server, SQLite, or others that provide the advantages of an ODBC interface (which Gadfly does not do). Python provides a standard interface for accessing relational databases: the Python DB Application Programming Interface (Py-DBAPI), originally designed by Greg Stein. Each underlying database API requires a wrapper implementation of the Py-DBAPI, and implementations are available for just about all underlying database interfaces, notably Oracle and ODBC. When the relational approach is overkill, Python provides built-in facilities for storing and retrieving data. At the most basic level, the programmer can manipulate files directly, as covered in Chapter 2. A step up from files, the marshal module allows programs to serialize data structures constructed from simple Python types (not including, e.g., classes or class instances). marshal has the advantage of being able to retrieve large data structures with blinding speed. The pickle and cPickle modules allow general storage of objects, including classes, class instances, and circular structures. cPickle is so named because it is implemented in C and is consequently quite fast, but it remains slower than marshal. For access to structured data in a somewhat human-readable form, it is also worth considering storing and retrieving data in XML format (taking advantage of Python's several XML parsing and generation modules), covered in Chapter 12but this option works best for write once, read many-type applications. Serialized data or XML representations may be stored in SQL databases to create a hybrid approach as well. While marshal and pickle provide basic serialization and deserialization of structures, the application programmer will frequently desire more functionality, such as transaction support and concurrency control. When the relational model doesn't fit the application, a direct object database implementation such as the Z-Object Database (ZODB) might be appropriatesee http://zope.org/Products/ZODB3.2. I must conclude with a plea to those who are dismissive of relational-database technology. Remember that it is successful for good reasons, and it might be worth considering. To paraphrase Churchill: text = """ Indeed, it has been said that democracy is the worst form of government, except for all those others that have been tried from time to time. """ import string for a, b in [("democracy", "SQL"), ("government", "database")]: text = string.replace(text, a, b) print text |


Test purpose:
- Note: the sample need network support.
- Check that Fetch API is supported or not.
Test steps:
- Open the url "https://googlechrome.github.io/samples/fetch-api/fetch-json.html", check the output message
- Open the url "https://googlechrome.github.io/samples/fetch-api/fetch-html.html", check the output message
- Open the url "https://googlechrome.github.io/samples/fetch-api/fetch-reddit.html", choose different items
- Open the url "https://googlechrome.github.io/samples/fetch-api/fetch-post.html", cilck button "Create new GitHub Gist"
- Open the url "https://googlechrome.github.io/samples/fetch-api/fetch-response-metadata.html"
- Open the url "https://googlechrome.github.io/samples/fetch-api/fetch-success-error-handlers.html"
Expected result:
- The output message should be "Parsed JSON from the response: Paul,Matt,Peter,Kenji,Jeff"
- The output message should be as following:

Users!

Paul

Matt

Jason

Kenji

- Get different resource list with different items
- Create Gist successfully, the output message seems like:
Posting request to GitHub API...
Created Gist: https://gist.github.com/37d6f6c44969e70d452d
- The output message should be as following:
200
OK
basic
http://googlechrome.github.io/samples/fetch-api/users.json
Content-Type: application/json
Date: Wed, 18 Mar 2015 05:49:51 GMT
- The output message should be "Request failedError: Not Found
Request succeeded with JSON responsePaul,Matt,Peter,Kenji,Jeff"


referenced
by Kate Lynch at 2021-01-13 19:58:20.merged
by Kate Lynch at 2021-01-13 19:58:20.closed
by Kate Lynch at 2021-01-13 19:58:20.closed
by Kate Lynch at 2021-01-13 19:58:20.I'm not certain that supporting Vagrant is realistic, as I have worked exclusively on the Docker environment in past commits. I will retain the branch should this be worth reconsidering in the future.
closed
by James R. Griffin III at 2021-01-13 15:10:33.The following Items were successfully imported into DataSpace:
etdadmin_upload_755383 108820
etdadmin_upload_771144 108821
etdadmin_upload_771255 108822
etdadmin_upload_771378 108823
etdadmin_upload_771442 108824
etdadmin_upload_771577 108825
etdadmin_upload_771715 108826
etdadmin_upload_771969 108827
etdadmin_upload_772046 108828
etdadmin_upload_772119 108829
etdadmin_upload_772404 108830
etdadmin_upload_772427 108831
etdadmin_upload_772445 108832
etdadmin_upload_772456 108833
etdadmin_upload_772492 108834
etdadmin_upload_772697 108835
etdadmin_upload_772742 108836
etdadmin_upload_773112 108837
etdadmin_upload_773460 108838
etdadmin_upload_773520 108839
etdadmin_upload_773603 108840
etdadmin_upload_773877 108841
etdadmin_upload_773988 108842
etdadmin_upload_773990 108843
etdadmin_upload_774031 108844
etdadmin_upload_774217 108845
etdadmin_upload_774220 108846
etdadmin_upload_774224 108847
etdadmin_upload_774593 108848
etdadmin_upload_774792 108849
etdadmin_upload_775323 108850
etdadmin_upload_775922 108851
etdadmin_upload_776280 108852
etdadmin_upload_776869 108853
etdadmin_upload_776980 108854
etdadmin_upload_777177 108855
etdadmin_upload_777327 108856
etdadmin_upload_777428 108857
etdadmin_upload_777565 108858
etdadmin_upload_777579 108859
etdadmin_upload_778305 108860
etdadmin_upload_778317 108861
etdadmin_upload_778341 108862
labeled
by James R. Griffin III at 2021-01-13 15:13:30.labeled
by James R. Griffin III at 2021-01-13 15:13:30.assigned
by James R. Griffin III at 2021-01-13 15:13:31.renamed
by James R. Griffin III at 2021-01-13 16:34:06.assigned
by James R. Griffin III at 2021-01-13 16:34:14.closed
by James R. Griffin III at 2021-01-13 16:39:53.These were not in the original PUDL. Some of these have proper bib records; some do not.
unlabeled
by Cliff Wulfman at 2021-01-12 22:41:21.referenced
by None at 2021-01-13 14:11:10.merged
by None at 2021-01-13 14:11:10.closed
by None at 2021-01-13 14:11:10.head_ref_deleted
by None at 2021-01-13 14:11:12.https://catalog.princeton.edu/catalog/10076487; is this the same as https://dpul.princeton.edu/catalog?f%5Breadonly_collections_ssim%5D%5B%5D=The+Ukraine+[…]ftermath%3A+Print+Ephemera&q=Ukrainian&search_field=subject and https://figgy.princeton.edu/catalog/1e722b00-8876-4a94-9092-ece7007e9894
assigned
by Kim Leaman at 2021-01-12 23:00:55.closed
by Cliff Wulfman at 2021-01-13 14:20:24.closed
by None at 2021-01-13 14:56:46.closed
by None at 2021-01-13 14:56:46.referenced
by None at 2021-01-13 14:56:47.referenced
by None at 2021-01-13 14:56:45.merged
by None at 2021-01-13 14:56:46.closed
by None at 2021-01-13 14:56:46.head_ref_deleted
by None at 2021-01-13 14:56:47.https://docs.google.com/spreadsheets/d/1UFrvkj_B9IhlFX9SS9H_lKYzN2SawAC2OfAEIkrUZ7A/edit?usp=sharing contains separate SIPs for each section of the GNIB, derived from the METS and, through them, the MODS. These should be used to re-ingest the GNIB collection using rake ingest_ephemera
assigned
by Cliff Wulfman at 2021-01-13 17:01:48.What do we do with volumes/issues 42, 43, 44, @escowles and @cwulfman ? looking at documentation above, it would still fall under 2045531, but wanted to confirm (also looking at cat records)
@kelea99 They should go in 2045531 with 19-41 — looks like Joyce actually said "19-49" so all the ones we have should go there.
assigned
by Kim Leaman at 2021-01-13 14:52:30.mentioned
by Esmé Cowles at 2021-01-13 15:00:52.subscribed
by Esmé Cowles at 2021-01-13 15:00:52.mentioned
by Cliff Wulfman at 2021-01-13 15:00:52.subscribed
by Cliff Wulfman at 2021-01-13 15:00:52.mentioned
by Kim Leaman at 2021-01-13 17:53:55.subscribed
by Kim Leaman at 2021-01-13 17:53:55.Ingested and linked to finding aid: https://findingaids.princeton.edu/collections/C0183/c0280
closed
by Cliff Wulfman at 2021-01-13 17:54:04.@roelmoon can we ingest these?
mentioned
by Roel Munoz at 2021-01-13 18:00:35.subscribed
by Roel Munoz at 2021-01-13 18:00:35.unlabeled
by Cliff Wulfman at 2021-01-13 18:01:54.Done https://figgy.princeton.edu/catalog/1e2ae9ae-1381-4f5e-9453-25cc2ec5c1be
closed
by Cliff Wulfman at 2021-01-13 18:03:33.unlabeled
by Cliff Wulfman at 2021-01-13 18:07:49.assigned
by Cliff Wulfman at 2021-01-13 18:16:47.assigned
by Kim Leaman at 2021-01-13 18:17:06.unlabeled
by Cliff Wulfman at 2021-01-13 18:18:42.unlabeled
by Cliff Wulfman at 2021-01-13 18:20:38.closed
by Cliff Wulfman at 2021-01-13 18:20:56.unlabeled
by Cliff Wulfman at 2021-01-13 18:27:20.https://figgy.princeton.edu/catalog/4f951479-915d-481a-b157-33250e73ba3d is sufficient; the deep zoom reproduces the PUDL behavior adequately.
closed
by Cliff Wulfman at 2021-01-13 18:30:12.referenced
by Trey Pendragon at 2021-01-13 18:34:14.merged
by Trey Pendragon at 2021-01-13 18:34:14.closed
by Trey Pendragon at 2021-01-13 18:34:14.head_ref_deleted
by Trey Pendragon at 2021-01-13 18:34:15.closed
by Cliff Wulfman at 2021-01-13 18:30:35.reopened
by Cliff Wulfman at 2021-01-13 18:31:18.closed
by Cliff Wulfman at 2021-01-13 18:39:26.These are two books digitized for NYU's Digital Library Project. They should be ingested as regular scanned resources
assigned
by Kim Leaman at 2021-01-13 20:30:36.Graham Burnett approached Ben Primer in the summer of 2009 with a request for digital photos of the opening pages of PN6245.C65, Common place book / formed generally upon the principles recommended and practised by John Locke.
Ingest as regular ScannedResource
assigned
by Kim Leaman at 2021-01-13 20:37:30.A very early project to digitize the content of the Woodrow Wilson Additional Papers (MC215), held within the Public Policy Papers at Mudd Manuscript Library in order to make these materials available to the public via the web and to explore how best to digitize archival materials and archival collections.
Already migrated: https://figgy.princeton.edu/catalog/454e0459-8808-43fd-a6f6-9c046390cda0
closed
by Cliff Wulfman at 2021-01-13 20:41:23.Coverage increased (+0.07%) to 78.245% when pulling<PHONE_NUMBER>cc6fc4945cb8fc376ddefb4a60c8da on itemfrombarcode_scsb into 8b110934ad1eea1d02d4b920f9bf100c22af2ed0 on alma.
referenced
by None at 2021-01-13 15:10:01.merged
by None at 2021-01-13 15:10:01.closed
by None at 2021-01-13 15:10:02.head_ref_deleted
by None at 2021-01-13 15:10:03.labeled
by Christina Chortaria at 2021-01-13 15:13:48.renamed
by Christina Chortaria at 2021-01-13 15:15:19.renamed
by Christina Chortaria at 2021-01-13 15:23:36.Coverage decreased (-4.3%) to 78.245% when pulling 3c437c6f084184cebf969a8dd4f44145c27d74ea on alma into b3ecd66028801434ad5f7d9b56a01f41cbf5e2bd on main.
Sequence diagram created at https://lucid.app/publicSegments/view/c63d2bcd-c5ba-4d92-aacc-56710638c065/image.pdf
closed
by None at 2021-01-13 16:43:30.closed
by Eliot Jordan at 2021-01-13 18:22:44.referenced
by Trey Pendragon at 2021-01-12 23:25:49.labeled
by None at 2021-01-13 20:19:16.labeled
by Christina Chortaria at 2021-01-13 22:33:26.assigned
by Eliot Jordan at 2021-01-13 22:46:29.With the production data I can get a record by barcode but I didn't have any success by netid.
You can't get an API response at all if there are no active barcodes. We're not sure why some people have barcodes that aren't active. But we aren't going to worry about this.
There's a user identifier type table in alma if you search for "user identifier types"
Outstanding data needs (@pmgreen will pursue these): * Need netids in the records * Need an entry in the user identifier types table tied to netids.
In the meantime we can work on this issue by obtaining fixtures using user_id_type=BARCODE
with a barcode and/or user_id_type=all_unique
with an institution id, then mocking them as responses to a request with user_id_type=NET_ID
.
assigned
by None at 2021-01-13 20:21:43.mentioned
by Peter Green at 2021-01-13 22:10:48.subscribed
by Peter Green at 2021-01-13 22:10:48.Coverage increased (+0.3%) to 78.523% when pulling 5c911ae469ee3d23e133afb14674db5979d2bb3c on scsbrecordenrichment into 3c437c6f084184cebf969a8dd4f44145c27d74ea on alma.
head_ref_force_pushed
by Trey Pendragon at 2021-01-13 20:33:50.renamed
by Trey Pendragon at 2021-01-14 00:20:47.ready_for_review
by Trey Pendragon at 2021-01-14 00:21:44.Coverage remained the same at 78.245% when pulling 9c93b24bf0be739a1c097f6beb73f8bb3cbcda78 on 947-call-number-browse into 3c437c6f084184cebf969a8dd4f44145c27d74ea on alma.
head_ref_force_pushed
by Christina Chortaria at 2021-01-13 22:31:37.review_requested
by Christina Chortaria at 2021-01-14 01:14:23.labeled
by Christina Chortaria at 2021-01-13 22:54:54.labeled
by Christina Chortaria at 2021-01-13 22:54:54.unlabeled
by Christina Chortaria at 2021-01-13 22:55:23.ready_for_review
by Trey Pendragon at 2021-01-13 01:23:42.referenced
by Trey Pendragon at 2021-01-13 01:24:03.merged
by Trey Pendragon at 2021-01-13 01:24:03.closed
by Trey Pendragon at 2021-01-13 01:24:03.head_ref_deleted
by Trey Pendragon at 2021-01-13 01:24:04.review_requested
by None at 2021-01-13 02:35:04.referenced
by Francis Kayiwa at 2021-01-13 13:47:08.merged
by Francis Kayiwa at 2021-01-13 13:47:08.closed
by Francis Kayiwa at 2021-01-13 13:47:08.head_ref_deleted
by Francis Kayiwa at 2021-01-13 13:47:09.referenced
by None at 2021-01-13 14:29:07.merged
by None at 2021-01-13 14:29:07.closed
by None at 2021-01-13 14:29:07.head_ref_deleted
by None at 2021-01-13 14:29:08.head_ref_force_pushed
by None at 2021-01-13 14:28:58.head_ref_force_pushed
by None at 2021-01-13 14:29:41.referenced
by None at 2021-01-13 16:08:55.merged
by None at 2021-01-13 16:08:55.closed
by None at 2021-01-13 16:08:55.head_ref_deleted
by None at 2021-01-13 16:08:56.ready_for_review
by None at 2021-01-13 16:32:18.head_ref_force_pushed
by None at 2021-01-13 16:55:37.head_ref_force_pushed
by None at 2021-01-13 19:35:08.pudl0044/823463 is http://pudl.princeton.edu/objects/cc08hg91z and it is C0101/c000668
ready_for_review
by Trey Pendragon at 2021-01-13 01:23:23.referenced
by Eliot Jordan at 2021-01-13 02:17:28.merged
by Eliot Jordan at 2021-01-13 02:17:29.closed
by Eliot Jordan at 2021-01-13 02:17:29.head_ref_deleted
by Eliot Jordan at 2021-01-13 02:17:34.@tpendragon would you review again? I have made a few changes. It's ready to merge if 👍🏻
head_ref_force_pushed
by None at 2021-01-13 14:23:24.renamed
by None at 2021-01-13 14:23:58.deployed
by Trey Pendragon at 2021-01-13 14:33:01.deployed
by Trey Pendragon at 2021-01-13 14:33:04.mentioned
by Trey Pendragon at 2021-01-13 14:39:01.subscribed
by Trey Pendragon at 2021-01-13 14:39:01.referenced
by Trey Pendragon at 2021-01-13 16:44:29.merged
by Trey Pendragon at 2021-01-13 16:44:29.closed
by Trey Pendragon at 2021-01-13 16:44:30.backups are running
referenced
by None at 2021-01-13 14:23:24.referenced
by None at 2021-01-13 14:23:24.referenced
by None at 2021-01-13 14:23:24.closed
by None at 2021-01-13 18:32:38.moved_columns_in_project
by None at 2021-01-13 18:32:38.milestoned
by None at 2021-01-13 20:35:15.renamed
by None at 2021-01-13 20:35:32.milestoned
by None at 2021-01-13 20:53:25.Resolved: Confluence is back up in 7d1401c
.
labeled
by Francis Kayiwa at 2021-01-13 02:56:15.labeled
by Francis Kayiwa at 2021-01-13 02:56:15.locked
by Francis Kayiwa at 2021-01-13 02:56:16.closed
by Francis Kayiwa at 2021-01-13 04:21:39.


[1]
if you are really picky about sharp crystal clear pictures , do not get this camera .
[2]
this is the same camera as d70 .


Computer Programming Electrical Design and more
Master of Computer Science
Master of Electrical Engineering
Master of Computer Engineering


Changelog
- fix(ntlm authentication): fixed bug preventing proxying with ntlm authentication. (#132) (Thanks: EladBezalel, oshri551)
- fix(onError): improve default proxy error handling. http status codes (504, 502 and 500). (#132) (graingert)
- feat(logging): improve error message & add link to Node errors page. (#106) (cloudmu)
- feat(pathRewrite): path can be empty string. (#110) (sunnylqm)
- bug(websocket): memory leak when option ‘ws:true’ is used. (#114) (julbra)
- chore(package.json): reduce package size. (#109)
- fix(Express sub Router): 404 on non-proxy routes (#94)
- fix(context matching): Use RFC 3986 path in context matching. (excludes query parameters)
- deprecated(proxyTable): renamed
proxyTable
to router
.
- feat(router): support for custom
router
function.
- fix(websocket): fixes websocket upgrade.
- feat(pathRewrite): expose
req
object to pathRewrite function.
- fix(websocket): fixes websocket upgrade when both config.ws and external .upgrade() are used.
- feat(pathRewrite): support for custom pathRewrite function.
- feat(proxy): support proxy creation without context.
- fix(connect mounting): use connect’s
path
configuration to mount proxy.
- feat(context): custom context matcher; when simple
path
matching is not sufficient.
- add option
onProxyReqWs
(subscribe to http-proxy proxyReqWs
event)
- add option
onOpen
(subscribe to http-proxy open
event)
- add option
onClose
(subscribe to http-proxy close
event)
- feat(proxyTable) - added proxyTable support for WebSockets.
- fixed(proxyTable) - ensure original path (not rewritten path) is being used when
proxyTable
is used in conjunction with pathRewrite
.
- fix server crash when socket error not handled correctly.
- support subscribing to http-proxy
proxyReq
event (trbngr)
- add
logLevel
and logProvider
support
- fix pathRewrite when
agent
is configured
- support external websocket upgrade
- fix websocket shorthand
- support shorthand syntax
- fix express/connect mounting
- support subscribing to http-proxy
error
event
- support subscribing to http-proxy
proxyRes
event
- support path rewrite
- deprecate proxyHost option


Individual Appointment - Personal Information
This appointment and scheduling system allocates slots on a first come, first served basis. Limited slots are available per site and there is no guarantee that a slot will always be available for a user's first choice for an appointment schedule.
Users accept the responsibility for supplying, checking, and verifying the accuracy and correctness of the information they provide on this system in connection with their application, and consent to the collection and use of their personal information and biometric data for Government to conduct checks and validation against existing records and previous passport applications.
Deliberate, multiple attempts to circumvent the system to secure a schedule for the purpose of blocking several dates in advance is detrimental to public service. Users who are found to have abused the system will be blocked from securing an appointment.
Copyright © 2019. Crafted with ❤ and lots of .
Challege at freeCodeCamp.


Company profile - Canadian Company Capabilities
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Karen Fischer & Rudy Fischer
Legal Name:
Karen Fischer & Rudy Fischer
Operating Name:
RK Fischer & Associates
Mailing Address:
75 South Balsam StUXBRIDGE, Ontario
L9P 1G6
Location Address:
204-101 Dundas St WWHITBY, Ontario
L1N 2M1
Tel.:<PHONE_NUMBER>
Tel.:<PHONE_NUMBER>
Fax:<PHONE_NUMBER>
Logo
Company Profile
We are small business consultants, business coaches, and business advisors who provide small business help to owners in order to generate growth and profitability. We offer business consulting and business coaching to assist you so you can focus working "on your business". We are located in Durham Region, but we service clients throughout the Toronto GTA and across Ontario.
As business advisors, we only focus on businesses under 100 employees, so we understand exactly what business challenges you face. Our 2 partners have significant experience in complex businesses such as manufacturing, hi-technology, and financial services, and we also have worked with clients in many other industries such as retail, construction, transportation, recreation, and professional services. We work directly with the business owner to understand their specific business, goals and challenges in order to implement the right solutions ensuring you have continued long term success.
Full profile
Full profile
Contact information
Company description
611430 - Professional and Management Development Training
Product / Service / Licensing
We do not just provide consulting and sell services for only one area of your business. Our partners have experience in all areas of a business and have been past executives of start-ups and small businesses. We look at your business as a whole to help determine what is needed to help your particular grow or become and remain profitable and sustainable. We will work hand and hand with other professionals that you have in your business such as bookkeepers, accountants, and lawyers. If you require other professional help, we can recommend and bring in that expertise or refer you to that professional for tactical services that you might need that we do not provide.
We provide fixed priced defined engagements as well as customized to meet your small business and requirements and budget.
Small business coaching can be purchased in blocks of hours and can be scheduled based on your requirements. Many times a block of hours is purchased to work through a problem in a business or many times after a consulting engagement in support of the business owner taking on the ongoing support.
Many business coaching engagements are focused on helping a business owner learn what they need to do to work "on" their business instead of "in" their business. Many times they want to learn what their financials mean and how what is going on within their business which is affecting their financials. It is like going to business school while you are working. In a sense your business is your homework.
Interim management engagements can be for a a particular time period or can be to provide periodic help as required for the small business. We can tailor the engagement to meet your business requirements.
RK Fischer can provide interim management in the following areas:
General Management
Finance
Product Marketing / Management
Financial Services and Accounting
Marketing
Channel Marketing
Sales
Channel Sales
Market profile
Alliances:
- Sales/Marketing
Strategic alliances:
We partner with other small business and start-up service providers to provide one-stop-shopping for start-ups and small businesses. We are always looking for other alliances.Industry sector market interests:
- Construction
- Consumer Products
- Information Technology and Telecommunications
- Manufacturing
- Service Industry
- Transportation
- Wholesale/Retail
- Electrical Equipment
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Contacts
Contact information
Description
Company description
611430 - Professional and Management Development Training
Products, services and licensing
Product / Service / Licensing
We do not just provide consulting and sell services for only one area of your business. Our partners have experience in all areas of a business and have been past executives of start-ups and small businesses. We look at your business as a whole to help determine what is needed to help your particular grow or become and remain profitable and sustainable. We will work hand and hand with other professionals that you have in your business such as bookkeepers, accountants, and lawyers. If you require other professional help, we can recommend and bring in that expertise or refer you to that professional for tactical services that you might need that we do not provide.
We provide fixed priced defined engagements as well as customized to meet your small business and requirements and budget.
Small business coaching can be purchased in blocks of hours and can be scheduled based on your requirements. Many times a block of hours is purchased to work through a problem in a business or many times after a consulting engagement in support of the business owner taking on the ongoing support.
Many business coaching engagements are focused on helping a business owner learn what they need to do to work "on" their business instead of "in" their business. Many times they want to learn what their financials mean and how what is going on within their business which is affecting their financials. It is like going to business school while you are working. In a sense your business is your homework.
Interim management engagements can be for a a particular time period or can be to provide periodic help as required for the small business. We can tailor the engagement to meet your business requirements.
RK Fischer can provide interim management in the following areas:
General Management
Finance
Product Marketing / Management
Financial Services and Accounting
Marketing
Channel Marketing
Sales
Channel Sales
Market
Market profile
Alliances:
- Sales/Marketing
Strategic alliances:
We partner with other small business and start-up service providers to provide one-stop-shopping for start-ups and small businesses. We are always looking for other alliances.Industry sector market interests:
- Construction
- Consumer Products
- Information Technology and Telecommunications
- Manufacturing
- Service Industry
- Transportation
- Wholesale/Retail
- Electrical Equipment


M_units(3fm) - [M_units::INTRO] convert between various physical units (LICENSE:MIT)
Synopsis
Constants Synopsis
Description
Procedures
Constants
Notes
Examples
procedure definitions:
elemental real function c2f(celsius) elemental real function f2c(fahrenheit)elemental real|double function r2d(radians) elemental real|double function d2r(degrees)
elemental real function feet_to_meters(feet) elemental real function meters_to_feet(meters)
elemental real function sind(angle_in_degrees) elemental real function cosd(angle_in_degrees) elemental real function tand(angle_in_degrees) elemental real function asind(x) elemental real function acosd(x) elemental real function atand(x) elemental real function atan2d(x,y)
elemental double function norm_angle_rad(radians) elemental real|double function norm_angle_deg(radians)
subroutine cartesian_to_spherical(x,y,z,radius,inclination,azimuth) subroutine spherical_to_cartesian(radius,inclination,azimuth,x,y,z) subroutine cartesian_to_polar(x,y,radius,inclination) subroutine polar_to_cartesian(radius,inclination,x,y)
function nan() function inf() function is_nan() function is_even()
Simple constants:
e,gamma,euler,golden_ratio,pi deg_per_rad, rad_per_deg c__m_per_sec, c__ft_per_sec
M_units(3fm) is a Fortran module that collects together basic procedures that are used to convert between various physical units and common named constants.
The input values may be any standard scalar value supported by the anyscalar_to_real(3f) function (real,integer,doubleprecision) within the range allowed by the function.
Angular Units
o d2r: Convert degrees to radians o r2d: Convert radians to degrees Temperature
o c2f: Convert Celsius to Fahrenheit o f2c: Convert Fahrenheit to Celsius Distance
o feet_to_meters: Convert feet to meters o meters_to_feet: Convert meters to feet REAL trig functions where input is in angular degrees instead of radians
o elemental real function sind(angle_in_degrees) o elemental real function cosd(angle_in_degrees) o elemental real function tand(angle_in_degrees) o elemental real function asind(x) o elemental real function acosd(x) o elemental real function atand(x) o elemental real function atan2d(x,y) Normalize angles into specific ranges
o elemental double function norm_angle_rad(angle_in_radians) o elemental real|double function norm_angle_deg(angle_in_degrees) Coordinates
o cartesian_to_spherical: Convert cartesian coordinates to spherical o spherical: Convert spherical coordinates to cartesian o cartesian_to_polar: Convert cartesian coordinates to polar o polar: Convert polar coordinates to cartesian
Note that your compiler is less likely to inline small procedures in a
module than it would statement functions or CONTAINED functions.
CONSTANTS
c__m_per_sec Speed of light in a vacuum c__ft_per_sec Speed of light in a vacuum "deg_per_rad" "rad_per_deg" e The base of the natural logarithm system. "e" was named in honor of Euler, but is known as Napiers constant. "euler" gamma The Euler-Mascheroni constant is often denoted by a lower-case Gamma. "golden_ratio" pi The ratio of the circumference of a circle to the diameter of the circle
Gamma is defined as
Gamma = limit ( M -> Infinity ) ( Sum ( 1 <= N <= M ) 1 / N ) - Log ( M )
Simple usage example:
program demo_M_units use M_units, only : r2d, d2r use M_units, only : f2c, c2f use M_units, only : sind, cosd, tand use M_units, only : asind, acosd, atand, atan2d !! use M_units, only : pi8=>pi use M_units, only : e,euler,golden_ratio,deg_per_rad,rad_per_deg use M_units, only : c__m_per_sec, c__ft_per_sec !! implicit none real pi pi=pi8 write(*,*)r2d([0.0,PI/4.0,PI/2.0,3.0*PI/2.0,PI]) write(*,*)d2r([0.0,45.0,90.0,135.0,180.0]) write(*,*)f2c([-40.0,32.0,212.0]) write(*,*)c2f([-40.0,0.0,100.0]) write(*,*)PI write(*,*)E !! write(*,101) "Napiers constant (e) is about ",e write(*,101) "The Euler-Mascheroni constant (euler or gamma) is about ",euler write(*,101) "pi (pi) is about ",pi8 write(*,101) "The Golden Ratio (golden_ratio) is about ",golden_ratio write(*,101) "Deg_Per_Rad is about ",Deg_Per_Rad write(*,101) "Rad_Per_Deg is about ",Rad_Per_Deg !! write(*,101) "Speed of light in a vacuum (m/sec) ", c__m_per_sec write(*,101) "Speed of light in a vacuum (ft/sec) ", c__ft_per_sec !! 101 format(a,t57,g0) !! end program demo_M_unitsResults:
> 0.00000000 45.0000000 90.0000000 270.000000 180.000000 > 0.00000000 0.785398185 1.57079637 2.35619450 3.14159274 > -40.0000000 0.00000000 100.000000 > -40.0000000 32.0000000 212.000000 > 3.14159274 > 2.7182818284590451 >Napiers constant (e) is about 2.7182818284590451 >The Euler-Mascheroni constant (euler or gamma) is about 0.57721566490153287 >pi (pi) is about 3.1415926535897931 >The Golden Ratio (golden_ratio) is about 1.6180339887498949 >Deg_Per_Rad is about 57.295779513082323 >Rad_Per_Deg is about 0.17453292519943295E-001 >Speed of light in a vacuum (m/sec) 299792458.00000000 >Speed of light in a vacuum (ft/sec) 983571056.00000000
| Nemo Release 3.1 | M_units (3) | July 22, 2023 |


Operators use torque tools to build a car with nuts and bolts, but what happens when the tools themselves have problems? In this presentation Dave will examine a case study of how preventative maintenance and quality inspection can be improved by using machine learning to model the failures observed on the assembly line. Learn how Bayesian prediction (frequently used in email spam filters) can be applied to predict and identify these failures before they occur.
Presentation download: [ machinelearningdefects PDF ]


Lorem ipsum dolor sit amet, consectetuer adipiscing elit
Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar.


SpeedStudy Docs
All the code for this project is available at github.com/bentranter/course-notes
Introduction
About
SpeedStudy can be summed up as, "the way to get straight A's studying for three minutes a day". SpeedStudy aims to enable students to be able to spend around three minutes/day studying, while retaining around 95% of the content in their notes. SpeedStudy combines two modern approaches to speeding up learning: speed reading and spaced repetition. We'll see more about how these approaches can help students learn and study much faster shortly.
From a technical perspective, SpeedStudy aims to be an extremely lean service. That means, blazingly fast load times, as-small-as-possible codebase, modular design pattterns, simple architecture, and small data footprint. Since we're essentially a service that stores text via a REST API, we can create an architecture that is extremely efficient, both in terms of cost and bandwidth.
Getting Started
WARNING: Only run this on Windows if you are very brave! While this will run on Windows, it is designed to run on Mac OS X or Linux.
Before installing and running this application, you'll need to have a few things installed:
- Python (v2.7 recommended, v3.x.x not supported, comes installed by default on Mac OS X and Linux)
- A C++ compiler (both Clang and GCC will work)
- Node.js v10.28 (you can install that here)
- Git (version control software, install here)
- NPM (this will come installed by default when you install Node.js)
- RethinkDB (you can install that here)
Installation Instructions
Once you've downloaded everything listed above, you'll need to run a few commands from your command prompt or terminal. Open a window, and run:
$ rethinkdb
That will start RethinkDB. You can view the RethinkDB admin panel by going to <IP_ADDRESS>:8080
in your browser.
Once RethinkDB is running, open a second window in your command prompt or terminal, and run the following commands:
$ git clone https://github.com/bentranter/course-notes.git
$ cd course-notes && cd web
$ npm install
$ npm start
This will clone the project's source code from GitHub, install all the project's dependencies, and start the server. If you get errors, make sure RethinkDB is running on your computer somewhere. If you see an error originating from a process called "Node-Gyp", make sure that Python 2.7 is installed on your computer and in your $PATH. If everything is working, you should be able to point your browser to <IP_ADDRESS>:3000
and see the web UI up and running.
To run the tests, open a third window in your command prompt or terminal, and navigate to the tests
directory. Once you're in there, run the command $ jasmine-node .
. That will run all the tests automatically, and inform you of any failures. Note: The test coverage is around 30% right, and doesn't cover every possible case. We're working on improving the coverage.
Architecture
Overview
SpeedStudy is multiple client-server application. That means that different clients can connect to the same server. This works by communicating over HTTP via our REST API. As you know, HTTP stands for Hypertext Transfer Protocol. Our application sticks to the four main HTTP verbs: GET, POST, PUT and DELETE
. As you probably also know, REST stands for Representational State Transfer. It is a stateless, client-server, cacheable communication protocol - perfect for a client-server app with multiple clients.
Our server runs on Node.js, and uses the Express framework as middleware. We use a NoSQL database called RethinkDB to store our data. The web client uses Backbone.js as a framework (update: the web client has been moved to Exoskeleton.js, a lighter-weight implementation of the Backbone framework). There are two mobile clients: one for iOS, and one for Android. The iOS client is in development, but so far id written in Swift. The Android app is written in Java, and relies on the Android SDK and OKHttp by Square for handling HTTP requests.
Security
For password security, we use a one-way hashing algorithm called bcrypt. We also salt each hash. Bcrypt is a nice algorithm, because it takes around two seconds to execute, so it is very strong against brute force and collision attacks.
We use UUIDs for each database entries' id to enforce uniqueness, no matter what dataset it might be in (the odds of creating two identical UUIDs is approximately one in 17 trillion, given sufficient entropy).
We use JSON web tokens, and force all communication with the server to be over HTTPS using SSL (to encrypt all traffic). When a user signs up or logs in, they're given a JSON web token that is valid for seven days. They then must send their token with every request to our API. JSON web tokens are 150-character longs strings that are signed and encrypted using a secret that only the server is aware of, so they cannot be decrypted and tampered with by a client.
Each user's username resides within their token, and the server requests a user's username from the token, to ensure that a user can only see their own notes.
Anytime an operation that is considered to be a security risk occurs (deleting large amounts of notes, changing a password, etc), and email is sent to that user informing them of that action, so that if it was not done by them, they are at least made aware of the particular action.
API Endpoints
There are two types of API Endpoints: secure and insecure.
A secure endpoint is one that is protected by our authorization middleware (that is, that endpoint requires a valid token to be sent with the request). An insecure endpoint is one that doesn't require a token to be sent with the request.
Insecure Endpoints
/api/signup
- HTTP method:POST
. Allows a user to enter their desired username and password to signup for our service. Returns a valid JSON web token for that username./api/login
- HTTP method:POST
. Allows a user to enter their username and password to login to our service. Returns a valid JSON web token for that username.
Secure Endpoints
/api/notes
- HTTP method:GET
Allows a user to retrieve all their notes./api/notes
- HTTP method:POST
Allows a user to create a new note. Returns the note created./api/notes/:id
- HTTP method:GET
Allows a user to retrieve a single note by id./api/notes/:id
- HTTP method:PUT
Allows a user to update or change a single note by id./api/notes/:id
- HTTP method:DELETE
Allows a user to delete a single note by id.
Making a Request
A sample POST request would look something like this:
POST /api/signup HTTP/1.1
Host: studyfast.com
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
username=YourUserName&password=YourPassword
You must specify that the content-type is application/x-www-form-urlencoded when you make a POST or PUT request, otherwise the request will fail.
As we mentioned above, when you make a request to a secure endpoint, you must include your token. A token can be send in three different ways:
- As an
X-Access-Token
in the request header. - As an
accessToken
in the request body. - As an
accessToken
in the URL parameters, for example:/api/notes?accessToken=yoursupercrazylongtoken
.
Data Models
As of right now, our data models are simple:
User
- username: String
- password: String
Notes
- title: String
- subtitle: String
- content: String
- folder: String
- dateCreated: Date
- dateUpdated: Date
- timesReviewed: Number
Android Architecture
Purpose
The mobile application stores files from the server onto the mobile device. It requires the server to respond with a JSON Object token when a login is requested. It also requires the server to respond with a JSON Object containing all of the users documents stored on the server when a request containing the token is sent to the server. The mobile application must be able to form the POST and GET requests sent to the server, as well as deal with the response from the server or any error that occurs. It must have the ability to access all of the files that have been taken from the server and stored locally.
General Priorities
The main priority of the application is that it be easy to use for the user. This includes having the application respond in a way that the user would expect when the user interacts with it. The user should be able to easily navigate their way through the application. This also includes not giving a user the opportunity to break the application. The application is also designed to be easily expanded as well as to be easily maintained, handling changes on the server side. The classes for updating and logging in should be designed in a way that allows the application to do more tasks with the information it receives from the server.
Major Architecture Issues
One design issue was in what way to deal with the information coming in from the server, and how to store both the content from each document as well as the data related to each document such as its id, date last modified, etc. One solution was to store the incoming data as a String, then parse through the String and create a bunch of ArrayLists containing all the information. One issue with this was that the characters used to separate the information could also be part of the information, which left a possibility of errors in the parsing. One possible solution to this problem was using regular expressions and lexically parsing through, but a much simpler solution was to just store the information from the server as an array of JSON objects, and create new JSON objects to store locally containing the information that needed to be stored.
Another design issue was setting up menus and changing menus depending on if the user logs in, or if an update fails, etc. This was an issue because networking tasks must be run asynchronously from the UI thread, and retrieving a response was less then intuitive. The solution was to create a singleton of global variables, then on any activity that could modify the menu bar, set a variable telling the application to wait and see if the menu needs to be change, and have the networking tasks set a variable indicating if the menu needs to be changed or not, and to stop waiting.
Details of the Architecture
The application uses a REST API to make requests to the server. The requests are formed by an OkHttpClient, open source software by Squareup. The response is a JSON object. Doing a POST request with a valid username and password to the server login will return a token, token expiration date and the username. These, along with the password sent in the request, are saved in the applications key-value storage. Sending an GET request to the servers notes endpoint along with a valid token will reply with all of the users documents on the server.
Once the client has received all the documents from the server, it compares their lastModified date with the lastModified date of the documents saved locally. For each file from the server that has been updated more recently, the local version of the document will be rewritten with the content of the document from the server. The file containing information about the documents its then updated to reflect these changes.
Design
Server
The server has an extremely simple design. Essentially, it is two files: one with some startup code for the server that handles the database connection, which port to serve on, the API endpoint names, and whether to enable development mode or production mode, and the other handles the server's application logic.
The application consists of the model schemas, the authentication middleware, and the request/response handling for the API endpoints. There are two schemas: one for the user and one for the notes.
The primary key for the user is the username. The primary key for the notes is the id. A user has a one-to-many relationship with the notes (relations in a NoSQL database? Weird, I know, but it speeds up our queries massively).
The authentication middleware is two functions.
The first is one that executes before theWeb Client
Our web client is currently under development and is at best, a huge mess. We use an MVC approach, and complete documentation will be added once more progress is made on the web client.
Android Client
Each Activity (screen / task of the application) is defined as a class. When something on the screen is tapped, such as a button or dragging a bar, a method in the class will be called.
SpeedStudy launches into the class AppLaunch, where it will check to see if the users username and password are stored. If they are not, it will launch the login screen. If the username and password are found, it will check to see if the token used to authenticate with the server needs to be updated. This includes checking if the token exists, and if the token is not expired. If it fails one of these checks, then the MainActivity will get launched with the instruction to attempt login with the stored credentials. If the token makes it through the checks, the MainActivity will launch with the instruction to update the locally stored files, using the stored token.
The LoginScreen has 2 buttons: "Login" and "Continue without Login" which correspond to the methods "login" and "skipLogin" in the LoginScreen class. Tapping one of these button will call the corresponding method, and either launch MainActivity with the instruction to not login, or to attempt login with the entered username and password.
The MainActivity makes calls to Login and Update. These methods will either do their job with no notification, or prompt an error if one occurs. When the user selects an action that could cause the menu to be updated, the activity will wait for a global variable to change that indicates if a change in the menu should occur. When the user selects Login the application launches the LoginScreen activity. If Logout is selected, the application will delete the stored username, password, token and tokenExpiration and launch the LoginScreen activity. Tapping on the "Open Local Files Browser" button will call the method openLocalFileBrowser, which launches the LocalFilesBrowser Activity.
The LocalFilesBrowser finds all the folders and documents in the root of the application storage and sorts them, with folders dislaying before documents, then sorted alphabetically. Selecting a folder will launch another instance of LocalFilesBrowser, displaying the folders and documents inside the selected folder. Selecing a Document will launch DocumentLoader, passing it the data from the document as a string.
The DocumentLoader will create 2 tabs, one responsible for displaying the entire content of the document, and one responsible for displaying the speed reader activity. Selecting a tab launches a new instance of the activity corresponding to the tab. When the activity being displayed is DisplayDocument, it will display the full data as plaintext. If the data extends below the screen, the user can slide their finger up the screen to make it scroll down.
On the SpeedReader Activity, the buttons on the screen call the methods moveBar, slowDown, SpeedUp, startPauseOrResume depending on the button tapped. These control how the text is rotated through on the screen.
The Login and Updates Classes are called asynchronously by MainActivity. Both of them Set global variables as well as store information that is used by the application. They make use of the Error class to store errors received from the attempting communication with the server. This Error is used in determining if the MainActivity should be prompted with an Error such as "invalid login information".
Global variables are passed around by the Singleton GlobalApp.
Functionality Implemented to Date
- Application automatically loads to either the login screen, or the main activity depending on if login information has been saved.
- 'Continue without Login' on the login page will bring the application to the main activity correctly.
- 'Login' on the login page will launch main activity telling it to login using the entered information.
- The correct menu loads on Main Activity, and correctly changes after login and logout.
- Selecing 'Login' menu in main activity correctly brings up the login activity.
- Selecing 'Login' menu in main activity correctly brings up the login activity.
- After 'Login' has been selected on the login activity, the application will attempt to login to the server with the credentials the user entered, then saving the token, token expiration date and login credentials locally if successful.
- Selecing 'Update' from the menu attempts to retrieve user information from the server using the stored token, then compare against locally stored files and update required files. Will prompt if an error occurs.
- Selecting 'Open Local File Browser' will launch the activity to browse through files stored on the device.
- Selecting a folder on the device will open a file browsing activity to browse within the folder.
- Selecting a document will open an activity to view the contents of the document, with tabs allowing the user to switch between displaying the entire contents on the speed reader.
- Selecing the speed reader tab will display the speed reader activity, which will display part of the document text, buttons for speed up, slow down and start/pause, as well as a slider bar to set the speed.
- Tapping start will make the displayed text rotate through chunks of the document, showing at max 10 characters at a time, at the speed designated by the user. This will stop on the last line of the document.
- Tapping the pause button will stop the text from changing until the pause (resume) button is pressed again.
- Dragging the slide bar will change the speed that the text changes.
- Tapping the + and - buttons will increase and decrease the speed respectively, stopping at max and min speeds.
iOS Client
The iOS client is nothing more than a few blank views at the moment, but complete documentation will be created as development progresses.
Code
Android
The Android code docs were generated with Doxygen, and appear here.
Server
app.js
This is the main entry point of the server.
var moduleName = require('module-name');
This is how modules are imported in Node.js.
app.set('settingName', options);
This handles Express's settings.
app.use('middlewareName', options);
This handles what middleware we use with Express.
app.get('route', authFunctionName, functionName);
This defines a route at an endpoint, and allows you to write a function that defines how to handle it. It also let's you specify an HTTP verb, in this case, it's "GET".
app.post('route', authFunctionName, functionName);
This defines a route at an endpoint, and allows you to write a function that defines how to handle it. It also let's you specify an HTTP verb, in this case, it's "POST".
app.put('route', authFunctionName, functionName);
This defines a route at an endpoint, and allows you to write a function that defines how to handle it. It also let's you specify an HTTP verb, in this case, it's "PUT".
app.delete('route', authFunctionName, functionName);
This defines a route at an endpoint, and allows you to write a function that defines how to handle it. It also let's you specify an HTTP verb, in this case, it's "DELETE".
routes/api.js
This is where all the functionality of the API comes from.
var Model = thinky.createModel('modelName', options);
Creates a model and allows you to specify the options. This is covered in full in Thinky's docs.
Model.ensureIndex('indexName');
Let's you specify a model's index.
Model.pre('actionName', callback);
Let's you specify an action to do before another action is called. Useful for calling functions before actions like "save", or "update".
login(request, response);
Get's a login token based on your username. Returns a JSON web token as a string. API: private, HTTP: GET.
authorizeToken(request, response, next);
Handles the token based auth. Get's a token from the request, decodes it with the secret, checks if it's valid, and handles possible errors. API: private.
signUp(request, response);
Creates a new user in the database. Returns a JSON web token as a string. API: public, HTTP: GET.
listNotes(request, response);
Lists a user's notes. Returns an array of objects containing their notes. API: public, HTTP: GET.
getNote(request, response);
Get's a user's note by id. Returns an object containing the requested note. API: public, HTTP: GET.
addNote(request, response);
Creates a new note. Returns an object containing the note created. API: public, HTTP: POST.
updateNote(request, response);
Updates a note. Returns an object containing the updated note. API: public, HTTP: PUT.
deleteNote(request, response);
Deletes a note. Returns a success message as an object. API: public, HTTP: DELETE.
Web and iOS
The web client and iOS client don't have enough code written yet that isn't spaghetti code to warrant documenting it at this stage, but documentation will be added as code is written and refactored.


An experiment on creating volumetric 3d-like clouds with CSS3 3D Transforms and a bit of Javascript.
Move the mouse to rotate around and mouse wheel to zoom in and out. Hit space to generate a new cloud. Works on Firefox (faster if Nightly), Chrome and Safari.
Select one or more textures to create clouds. The more the merrier! Click Generate to update.
Coded by Jaume Sánchez (@thespite)
Code available in
GitHub
Inspired on Mr.doob's
WebGL clouds
and
Mark J. Harris'
Real-Time Cloud Rendering for Games.
Fonts Open Sans and Lato are from
Google Web Fonts.
Textures are property of their respective owners.


AirPrice
About
Login
Sign Up
Project Lead
Matt Mastin
React Developer
Vincent Sanders
Backend Developer
Xuhui Zhu
React Developer
Richard Wang
React Developer
Edwin Chajon
Data Engineer
Erik Cowley
Machine Learning Engineer
Zoltan Gaspar
Data Engineer
Patrick Wolf
Data Engineer
Daanish Rasheed
Web UI Developer
Rudy Goldhaber


Getting Started With Mongrel2
This is the fastest way to get started with Mongrel2. Nothing is really explained, just all the stuff you need is setup and you get to run a few commands. If you want very good explanations for all of this, go read The Mongrel2 Manual a complete manual covering everything from getting started, to writing your first handlers.
This getting started assumes you know what you're doing and can run commands in Unix.
Building The Dependencies
Here's how I might do it on ArchLinux:
# install ZeroMQ wget http://download.zeromq.org/zeromq-2.1.7.tar.gz tar -xzvf zeromq-2.1.7.tar.gz cd zeromq-2.1.7/ ./configure make sudo make install # install sqlite3 sudo pacman -S sqlite3
Getting The Source
Quickest way to do that is to grab the tarball
wget https://github.com/zedshaw/mongrel2/releases/download/v1.9.0/mongrel2-v1.9.0.tar.gz
Building Mongrel2
Now you need to build mongrel2:
tar -xzvf mongrel2-v1.9.0.tar.gz cd mongrel2-v1.9.0/ make clean all && sudo make install
The version number for your directory might be different since we update it frequently.
Configuring The First Time
Now you can try out the simplest config example and get it running:
cp examples/configs/sample.conf mysite.conf m2sh load -config mysite.conf ls config.sqlite
NOTE: There's also other examples in examples/*.conf.
Running Mongrel2
Now you can run this and try it. Make sure you're still in the mongrel2 source directory:
mkdir run logs tmp m2sh start -host localhost
From another window do:
curl http://localhost:6767/tests/sample.html hi there
Shutting Down
Just do CTRL-C and it'll exit. m2sh has many other commands and some of them shut things down or restart. Run m2sh help to find out more.
Learn More From The Manual
That is the fastest crash course you can get in running Mongrel2. You should now go read The Mongrel2 Manual (HTML) which we took much more time writing and making very nice for you.


--- layout: main title: "Page Not Found" permalink: /404.html ---
404, page not found.
Sorry, but the page you were trying to view does not exist. Go back to the homepage.


{% load static %}
Create tours.
Start with one of our pre defined routes.
Type something in the input field to search the table for first names, last names or emails:


flask.exceptions
~~~~~~~~~~~~
Flask specific additions to :class:`~werkzeug.exceptions.HTTPException`
:copyright: (c) 2011 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
from werkzeug.exceptions import HTTPException, BadRequest
from . import json
A base class for HTTP exceptions with ``Content-Type:
class JSONHTTPException(HTTPException):
application/json``.
The description
attribute of this class must set to a string (not an
HTML string) which describes the error.
Overrides :meth:werkzeug.exceptions.HTTPException.get_body
to
def get_body(self, environ):
return the description of this error in JSON format instead of HTML.
return json.dumps(dict(description=self.get_description(environ)))
Returns a list of headers including ``Content-Type:
def get_headers(self, environ):
application/json``.
return [('Content-Type', 'application/json')]
Represents an HTTP 400 Bad Request
error whose body contains an
class JSONBadRequest(JSONHTTPException, BadRequest):
error message in JSON format instead of HTML format (as in the superclass).
: The description of the error which occurred as a string.
description = (
'The browser (or proxy) sent a request that this server could not '
'understand.'
)