It's your degree. 100% online
With this new program from Columbus State University (CSU), you can now earn your bachelor’s degree in just three years. All online. Affordably priced. And from a real university – an accredited state institution that was recently ranked among the top 50 regional public universities in the South by U.S. News & World Report.
In partnership with the University System of Georgia, CSU’s Bachelor of Arts in Communication with a Civic Leadership Focus is designed for low-income students, the young adult military population, and those whom higher education has not traditionally served well in terms of race and ethnicity.


An Introduction to Vue.js
Josh Thomas / @jthoms1
What is Vuejs?
Vue is a progressive framework for building user
interfaces. Unlike other monolithic frameworks, Vue is designed from the ground
up to be incrementally adoptable. The core library is focused on the view layer
only.
About the Project
- Began in 2013, Open sourced in Feb 2014
- Initially inspired by AngularJS
- Created by Evan You Full Time!
- Excellent trajectory
- Huge in China
- Less opinionated, more options and tools
Interesting Fact
- Vue.js 1.0 was named Evangelion
- Vue.js 2.0 was named Ghost in the Shell
How does it compare to X?
- Component Composition
- Utilizes VDOM but without JSX unless you want it
- Custom Directives, Form Bindings
- Scoped CSS out of the box
- Has a CLI / Heavy reliance on Webpack
- Server side rendering
Single File Components
CSS + Template + JS in one file (.vue)
{{ greeting }} World!
Templating and Reactivity
Batteries included
- Vuex - Redux for Vue.js Apps
- Vue Router
My Experience
- Documentation and Examples are TOP NOTCH
- Most productive day 1 experience I have ever had
- Really well designed
Adopting Vue.js
- Use all of Vue or Just the view layer
- If you don't like the template syntax write JSX
- Single File Components not your jam. Don't use them
- Starting an Angular project? Maybe try Vue.js its any easy sell.


| m.app |
Module to simplify the use of several of the engine listeners. |
| m.bezier |
Create bezier curves |
| m.broadcast |
Module to simplify sending of a message to multiple receivers |
| m.dynamic |
Utility functions for working with dynamic collision objects |
| m.file |
File manipulation utilities |
| m.flow |
The flow module simplifies asynchronous flows of execution where your
code needs to wait for one asynchronous operation to finish before
starting with the next one. |
| m.gesture |
Gesture detection module that can be used to detect gestures such as tap, double tap,
long press and swipe |
| m.input |
Module to simplify input handling. |
| m.kinematic |
Utility functions for working with kinematic collision objects |
| m.listener |
Listener implementation where listeners are added as either urls or functions
and notified when any or specific messages are received |
| m.logger |
Simple Lua logger |
| m.platformer |
Wrapper for the physics and behaviour involved in creating a platformer
game |
| m.savefile |
Wrapper module for io.open and io.write
Files will be saved in a path created from a call to sys.get_save_file() with
application id equal to the game.project config project.title with spaces
replaced with underscores. |
| m.savetable |
Wrapper module for sys.load() and sys.save()
Files will be saved in a path created from a call to sys.get_save_file() with
application id equal to the game.project config project.title with spaces
replaced with underscores. |
| m.settings |
Module to save user settings to disk |
| m.signal |
Module to create a signal system where named signals can be created, listened
to and triggered |
| m.simple_input |
Convenience function to acquire input focus |
| m.util |
Utility functions |


We're sorry but onlineschool doesn't work properly without JavaScript enabled. Please enable it to continue.


London, United Kingdom
Found!
Found!
Found!
Found!
Where's NIKE
You have successfully explored all of the cities!
Visit NIKE


Battery:
-
Altitude:
-
ToF:
-
Roll:
-
Pitch:
-
Yaw:
-
Units:
IN
CM
Connect
Takeoff
Land
Stream On
Stream Off
Take Photo
Start Recording
▲
◀
▶
▼
Yaw angle:
90
°
▲
◀
▶
▼
Distance:
50
in
Flip Forward
Flip Backward
Flip Left
Flip Right
Pause Mission


| Pitch | Price(Kshs./hour) |
|---|---|
| {{ pitch.pitchName }} | {{ pitch.cost}} |
| SOCCER PITCH | {% for hour in hours %}{{hour}} | {% endfor %}|
|---|---|---|
| {{ pitchoccu.pitchName }} | {% for hour in pitchoccu.pitchhours %} {% if hour %}X | {% else %}O | {% endif %} {% endfor %}
{% extends "layout.html" %} {% block content %}
| Pitch | Price(Kshs./hour) |
|---|---|
| {{ pitch.pitchName }} | {{ pitch.cost}} |
| SOCCER PITCH | {% for hour in hours %}{{hour}} | {% endfor %}|
|---|---|---|
| {{ pitchoccu.pitchName }} | {% for hour in pitchoccu.pitchhours %} {% if hour %}X | {% else %}O | {% endif %} {% endfor %}


Salmon Cookies
Home
Sales
Contact us
+ Add Store
+ Add New Store
Location:
Minimum Customers:
Maximum Customers:
Average No. of Cookies:


Note on the Analysis of Ordered Categorical Data
Write your post here.
Write your post here.
This freecodecamp article has some references to python stuff the author likes. Not all of it is of interest to me, but some of it is, so this is just my dump of the links I like.
geopy allows you to use python to find out geographic information for locations. It provides a common front end for different services like Google Maps, Bing, etc.
inspect is a python built-in that helps you take advantage of python's introspection features. Besides looking at other people's code, it shows you how well (or not) you are providing information for other coders using your code.
I haven't actually used newspaper but it looks interesting.
sh is a subprocess replacement. I've always been kind of leery about using python to run shell commands, but this at least makes it look nicer.
Although wikipedia is one of the classic web-scraping examples, there's actually a python library to pull articles more directly.
One of the problems of relying on search engines is that the more obscure the subject you are interested in, the greater the chance that what you'll get will be either unlocatable or outdated. These are my notes on setting up the ubertooth on an ubuntu system in September of 2018, which turned out to be a slightly different experience from what I went through earlier in this year so I thought I should try and make a record of it somewhere.
The current release for the Ubertooth firmware and code is 2018-08-R1. Download the ubertooth-2018-08-R1.tar.xz file from that page and untar it. You will also want the matching libbtb code.
For some reason the instructions on the home page assume you already have the code built and installed, but there's actually some previous steps you need to do.
sudo apt install cmake libusb-1.0-0-dev make gcc g++ libbluetooth-dev \ pkg-config libpcap-dev python-numpy python-pyside python-qt4
The python-<packages>
can be downloaded from pip, and you really don't need the pyside
and qt4
libraries unless you want to run the spectral scanner, which is kind of their hello-world, which is nice, but the pyside code is actually depracated because qt5 is the current version and it won't work with python 3.6 (the current ubuntu default) so I personally would skip it. numpy
is always a good idea no matter what you end up doing.
libbtb
is the Bluetooth Baseband Library which you need for ubertooth to decode bluetooth packets. Change into the folder you downloaded earlier and build and install it.
mkdir build cd build cmake .. make sudo make install
[ 88%] Built target btbb [ 88%] Built target btaptap [100%] Built target pcapdump Install the project... -- Install configuration: "" -- Installing: /usr/local/lib/pkgconfig/libbtbb.pc -- Installing: /usr/local/lib/libbtbb.so.1.0 -- Installing: /usr/local/lib/libbtbb.so.1 -- Installing: /usr/local/lib/libbtbb.so -- Installing: /usr/local/include/btbb.h running build running build_py running install running install_lib creating //usr/local/lib/python2.7/site-packages/pcapdump copying /home/dogen/Downloads/libbtbb-2018-08-R1/build/python/pcaptools/build/lib.linux-x86_64-2.7/pcapdump/pcapdump.py -> //usr/local/lib/python2.7/site-packages/pcapdump copying /home/dogen/Downloads/libbtbb-2018-08-R1/build/python/pcaptools/build/lib.linux-x86_64-2.7/pcapdump/__init__.py -> //usr/local/lib/python2.7/site-packages/pcapdump byte-compiling //usr/local/lib/python2.7/site-packages/pcapdump/pcapdump.py to pcapdump.pyc byte-compiling //usr/local/lib/python2.7/site-packages/pcapdump/__init__.py to __init__.pyc running install_egg_info Writing //usr/local/lib/python2.7/site-packages/pcapdump-0.0.0-py2.7.egg-info -- Installing: /usr/local/bin/btaptap
Now run ldconfig.
sudo ldconfig
Do the same thing to build the tools. First untar the file you downloaded, change into the host
folder (ubertooth-2018-08-R1/host
) and build and install the code.
mkdir build cd build/ cmake .. make sudo make install sudo ldconfig
You should now have some command-line tools that start with ubertooth-
(e.g. ubertooth-rx
).
You can use setcap
to make it so that you don't need to run things as root. This is how to make it so you can run ubertooth-scan
.
sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' (which ubertooth-scan)
One of the commands installed in the previous step was ubertooth-dfu
which is the Do Firmware Update command that we need to update the firmware. First insert the ubertooth USB dongle, then change into the ubertooth-2018-08-R1/ubertooth-one-firmware-bin
folder and run the update command.
Warning: According to the documentation you need to make sure to have an antenna on the ubertooth before inserting it. Also, it too a couple of attempts inserting, removing, and re-inserting the ubertooth before it worked for some reason (you can tell it's ready when there are two green LEDs and one red LED lit up).
ubertooth-dfu -d bluetooth_rxtx.dfu -r
As I mentioned before, the GUI for the spectral analysis is out of date and didn't install in my setup, but you can check that the ubertooth is working by just running the spectral analysis without a GUI.
ubertooth-specan
This should send a timestamp, frequency, RSSI CSV to stdout as the ubertooth sweeps the channels and shows the amount of electromagnetic radiation it sees on each.
Since we can't run the python spectrum analyzer, we should turn to a better alternative, spectools. This was a project to mostly re-create the metageek wi-spy GUI but it supports the ubertooth. It actually looks like a dead project (the last News item on their site was from 2012), but it works for now. Luckily ubuntu has this in the repositories so you should be able to just install it with apt.
sudo apt install spectools
Once you install it you can either run spectool_curses
which will run at the command line but only has one view, or spectool_gtk
which will run in an X-windows environment and show three views of the 2.4 GHz spectrum.
Now we come to the interesting installation. At this point you probably have all the command-line utilities you need, but kismet provides a convenient interface to start capturing packets. Unfortunately it is going through a major upgrade which makes it incompatible with the ubertooth plugin for it (maybe, there's two plugins and one of them might work, but they don't seem to document it (or much else, for that matter)).
I came home the other day to find some things from my garage outside on the driveway. The garage door was closed but the bolt wasn't in place, so I guess I forgot to secure it and someone went in while I was at work. I have two Arlo security cameras, one pointing at my front lawn and one at my back (I just took the ones I had set up to catch intruders and pointed them outside so they aren't really set up correctly) and they are supposed to send me notifications when motion is detected, but I didn't recall seeing any, but then I looked at my phone and I had missed one earlier in the day, and when I looked at it there was a video showing someone standing outside my back door, but that was all, but I have a Continuous Video Recording (CVR) subscription so I decided to poke around, that's when I found out how horrible Arlo's CVR really is.
The first problem with the Arlo's CVR system is that it's not always reliable. I've had cameras randomly stop recording videos on the server and the only "fix" that the help desk was able to give me was to deauthorize and reauthorize them (and in some cases completely remove them from the base-station and re-add them). This seems to work, but whenever you deauthorize a camera the server dumps all your recordings, so if you think you want to save something you'll have to do that first or it won't be there when the camera gets re-authorized. But then if you try to save something you'll find that the Arlo doesn't provide a way to download the video. The work-around you'll find on the forums is to do a screen capture while it plays - a horrible system, especially since the flash interface is pretty flaky and doesn't always work on my PC.
Then there's a secondary problem in that it's recording twenty-four hours a day - and they don't have a fast-forward button. They do have a timeline that you can click on to jump around, not only does this mean you might be jumping past events you want, but they don't really have a 'streaming' interface in the sense that Netflix or some other streaming service does where they're downloading small chunks so you don't have to wait a long time for the play to resume, instead the Arlo seems to be downloading one minute at a time so you have these really long waits, and the precision of the timeline isn't very good so you'll probably have to search a little bit just to find what you want.
There's also another problem, which is that the user-interface's timeline isn't accurate, so even if you know the time of an event, you can't use the time in the interface to find it. In my case the bit that was captured on my phone showing the trespasser gave me a time, and there was a little blue dot on the timeline showing that there was an event at that time, but there was nothing in the video. It turned out that the video for the camera I had out back was shifted fifty-five minutes into the future, which was even more confusing because the time for the camera I had in front wasn't shifted (that I know of) so when I looked at the video for the front around that time I was able to see the prowler arriving.
But even once I found the places in the CVR that showed the prowler (I didn't have it pointing at my garage so I didn't see him actually doing anything other than probing (knocking and then trying to open the doors)) I still had the problem of how to get the video before Netgear decided to break again and I lost it all. This is where python came in.
It turns out that even though netgear hasn't published an official API for the Arlo, some people (like this guy) have reverse-engineered the API and there are several python-based libraries on github that help you talk to the arlo. This one, by jeffreydwalter was the one that I saw that helped with downloading the CVR videos so it's the one that I went with. It's on pypi, but the commit that added CVR support was made a month ago and I wasn't sure when the pypi code was uploaded so I decided to install it from the master branch, since I was going to use the example code to start my code anyway - by this I mean I had to pull the repository anyway, so I used the setup.py
file to install it (in developer mode in case it changes).
The following code is basically what you can find in the example that comes with the repository called arlo-cvrdownload.py re-written to have a command-line interface and match my coding style more.
<<python-imports>>
<<pypi-imports>>
<<credentials>>
<<credentials-dotenv>>
<<credentials-end>>
<<paths>>
<<downloader>>
<<call>>
<<main>>
<<cli>>
# python standard library
from pathlib import Path
import argparse
import datetime
import os
import re
import sys
# from pypi
import dateparser
import requests
from Arlo import Arlo
from dotenv import load_dotenv
In order to use the API you need to have a Netgear account and you have to pass it to the server. To prevent putting the credentials in the code, I'll use python-dotenv. In order to use it I created a file named config.arlo
with the information so I can load it.
class Configuration:
"""Loads the credentials and other info for the Arlo
Args:
config_path (str): path to the configuration for the arlo
verbose (bool): emit more messages
"""
def __init__(self, config_path="~/.config/arlo/config.arlo",
verbose=False):
self.verbose = verbose
self._config_path = None
self.config_path = config_path
self._username = None
self._password = None
self._front_camera = None
self._back_camera = None
self._kitchen_camra = None
return
@property
def config_path(self):
"""the path to the configuration"""
return self._config_path
dotenv
works by adding the values in the configuration file into the environment dictionary. Most of the convenience of it comes if you create a .env
file at the base of your repository, in which case it will automatically find it for you, but even though I'm not doing that it still saves me from parsing the file myself, so I'll use it. Since the other properties (username
and password
) rely on the values already being in the dictionary I'm calling load_dotenv
in the config_path
setter so that it's there before they get used.
@config_path.setter
def config_path(self, path):
"""Path to the credentials file
Side-Effect:
loads the configuration into the environment
Args:
path(str): path to the file
"""
self._config_path = Path(path).expanduser()
load_dotenv(dotenv_path=self.config_path)
if self.verbose:
print("Loaded config from {}".format(self._config_path))
return
This is the rest of the methods for the Credentials
class. Org-mode pushes it flush-left on export so it looks like it is missing whitespace, but it's there in the code.
@property
def username(self):
"""The netgear login username
Raises:
Exception: no username found
"""
if self._username is None:
self._username = os.getenv("username")
if not self._username:
raise Exception("Username not found")
return self._username
@property
def password(self):
"""The netgear login password
Raises:
Exception: no password found
"""
if self._password is None:
self._password = os.getenv("password")
if not self._password:
raise Exception("Password not found")
return self._password
@property
def front_camera(self):
"""The index for the front camera
Returns:
index (int): the index for the front camera in the camera list
Raises:
Exception: something bad happened
"""
if self._front_camera is None:
try:
self._front_camera = int(os.getenv("front_camera"))
except (TypeError, ValueError) as error:
raise Exception("Invalid front camera")
return self._front_camera
@property
def back_camera(self):
"""the index for the back camera"""
if self._back_camera is None:
try:
self._back_camera = int(os.getenv("back_camera"))
except Exception:
print("invalid back camera")
raise
return self._back_camera
@property
def kitchen_camera(self):
"""index for the kitchen"""
if self._kitchen_camera is None:
try:
self._kitchen_camera = int(os.getenv("kitchen_camera"))
except Exception:
print("invalid kitchen camera")
raise
return self._kitchen_camera
Python 3.4 added a Path class to create an object-oriented version of what os.path does (along with some other stuff). You don't need it but I like it. My command-line interface actually doesn't support the sub-folder so it mostly just makes sure the folder is there. The Paths
class here is to help set up the directories for the video output files.
class Paths:
"""Paths for the output
Args:
root (str): path to the folder
verbose (bool): whether to emit more messages
"""
def __init__(self, root=".", verbose=False):
# warning: the 'root' setter uses self.verbose
# so set it before setting self.root
self.verbose = verbose
self._root = None
self.root = root
return
@property
def root(self):
"""path to the folder"""
return self._root
@root.setter
def root(self, path):
"""path to put the files in"""
if self._root is None:
self._root = Path(path)
self._root.mkdir(parents=True, exist_ok=True)
if self.verbose:
print("Root Video Path: {}".format(self._root))
return self._root
def add_subfolder(self, sub):
"""adds the root to the sub
creates the sub-folder if it doesn't exist
Args:
sub(str): subfolder name
Returns:
path: path object for the sub-directory
"""
path = self.root.joinpath(sub)
path.mkdir(parents=True, exist_ok=True)
if self.verbose:
print("subfolder: {}".format(path))
return path
This is the class to actually do the downloading. It essentially does what the example does but I like it to be both smaller and more verbose so this matches my style more.
class Downloader:
"""Downloads the videos
Args:
camera (int): index of the camera to grab the files for
start (str): date and time for the start of the videos
end (str): date and time for the end of the videos
path: object with the path for folders to store
configuration: object with configuration information about the arlo
output_timestamp(str): how to timestamp the files saved
verbose (bool): emit more messages
"""
date_format = "%Y%m%d"
video_url = re.compile("^http.+(?P<camera>[A-Z0-9]{13})"
"_[0-9]{13}_"
"(?P<timestamp>[0-9]{13})")
def __init__(self, camera, start, end, path,
configuration,
output_timestamp="%Y-%m-%d_%H_%M_%S",
verbose=False,
):
self.camera = camera
self.start = start
self.end = end
self.path = path
self.output_timestamp = output_timestamp
self.verbose = verbose
self.configuration = configuration
self._start_time = None
self._end_time = None
self._start_date = None
self._end_date = None
self._arlo = None
self._basestations = None
self._cameras = None
self._playlist = None
return
@property
def start_time(self):
"""Starting time for the videos
Returns:
time (datetime.datetime): the starting time of videos to pull
"""
if self._start_time is None:
self._start_time = dateparser.parse(self.start)
if self.verbose:
print("Start Time: {}".format(self._start_time))
return self._start_time
@property
def end_time(self):
"""ending time for the videos
Returns:
time (datetime.datetime): ending time of videos to pull
"""
if self._end_time is None:
self._end_time = dateparser.parse(self.end)
if self.verbose:
print("End Time: {}".format(self._end_time))
return self._end_time
@property
def start_date(self):
"""The start date for the playlist
Returns:
start-date (`string`): starting date for the recordings
"""
if self._start_date is None:
self._start_date = self.start_time.strftime(self.date_format)
if self.verbose:
print("Start Date: {}".format(self._start_date))
return self._start_date
@property
def end_date(self):
"""end-date for the playlist
Returns:
end-date (`str`): end-date for the recordings
"""
if self._end_date is None:
self._end_date = self.end_time.strftime(self.date_format)
if self.verbose:
print("End Date: {}".format(self._end_date))
return self._end_date
@property
def arlo(self):
"""The Arlo object
Instantiating the Arlo object automatically calls Login(), which
returns an oAuth token that gets cached. Subsequent successful calls
to login will update the oAuth token
Returns:
Arlo: thing to talk to the arlo
"""
if self._arlo is None:
self._arlo = Arlo(self.configuration.username,
self.configuration.password)
if self.verbose:
print("Arlo created")
return self._arlo
@property
def basestations(self):
"""This next part was in the original code but not used
I'm leaving it in on the chance that it might be needed for the
side-effects
Gets the list of devices and filter on device type to only get
the basestation.
This will return an array which includes all of the basestation's
associated metadata.
Returns:
list: list of basestations
"""
if self._basestations is None:
self._basestations = self.arlo.GetDevices('basestation')
if self.verbose:
print("Base Stations retrieved")
return self._basestations
@property
def cameras(self):
"""Get the camera.
Returns:
array: the camera's metadata
"""
if self._cameras is None:
self._cameras = self.arlo.GetDevices('camera')
if self.verbose:
print("Cameras retrieved")
return self._cameras
@property
def playlist(self):
"""the recordings within our date-range
Raises:
SystemExit: no playlist for the dates was found
"""
if self._playlist is None:
if self.verbose:
print("Getting Playlist")
self._playlist = self.arlo.GetCvrPlaylist(
self.cameras[self.camera],
self.start_date,
self.end_date)
self._playlist = self._playlist["playlist"]
if not self._playlist:
sys.exit(
("No playlist found for camera"
" {} from {} through {}").format(
self.camera,
self.start_date,
self.end_date,
))
return self._playlist
This does the actual downloading. It downloads some m3u8
files and then pulls the files that they refer to. m3u8 (MP3 URL with UTF-8 encoding) is a format to list URLs or paths that point to media and is said to be popular (by Wikipedia) in Dynamic Adaptive Streaming over HTTP (although I don't think the arlo uses DASH).
def __call__(self):
"""Downloads the videos"""
print("Downloading CVR videos from {} to {}".format(
self.start, self.end))
try:
# the playlist values is a list of lists
for playlist in self.playlist.values():
# each 'playlist' is a list of dictionaries
for recordings in playlist:
m3u8 = requests.get(recordings["url"]).text.split("\n")
for location in m3u8:
match = self.video_url.match(location)
if match:
camera_id = match.group("camera")
video_time = datetime.datetime.fromtimestamp(
int(match.group("timestamp")) // 1000)
if self.verbose:
print("Video Time: {}".format(video_time))
if self.start_time < video_time < self.end_time:
filename = (
camera_id
+ '-'
+ video_time.strftime(
self.output_timestamp)
+ '.mp4')
file_path = self.path.joinpath(filename)
if file_path.is_file():
print(
("Video {} already exists, "
"not downloading.").format(filename))
else:
print('Downloading {}'.format(filename))
with file_path.open('wb') as writer:
# Get video as a chunked stream.
# StreamRecording returns a generator.
for chunk in self.arlo.StreamRecording(
location):
writer.write(chunk)
elif self.verbose:
print("didn't match")
self.arlo.Logout()
print('Logged out')
except Exception as e:
print(e)
self.arlo.Logout()
print('Logged out')
return
def main():
parser = argparse.ArgumentParser()
parser.add_argument("camera", help="location of the camera to use",
choices=["front", "back", "kitchen"])
parser.add_argument("start", help="Time of earliest video to grab")
parser.add_argument("end", help="Time of latest video to grab")
parser.add_argument("--sub-folder", help="sub-folder to put the videos in",
default=".")
parser.add_argument("--verbose", action="store_true",
help="Emit more messages")
arguments = parser.parse_args()
path = Paths(root=arguments.sub_folder, verbose=arguments.verbose)
configuration = Configuration(verbose=arguments.verbose)
camera = getattr(configuration, "{}_camera".format(arguments.camera))
download = Downloader(camera=camera,
start=arguments.start,
end=arguments.end,
configuration=configuration,
path=path.root,
verbose=arguments.verbose)
download()
return
if __name__ == "__main__":
main()
For a consumer product this seems like a lot of work to download videos, but I'm glad someone went to the trouble to build this to make up for Netgear's horrible user interface. The Arlo seems like some decent (although probably overpriced) hardware matched to some pretty bad software and nearly non-existent customer support or documentation and a not particularly robust web-service. I don't know that I would recommend it to anyone who wants more than a web-camera.
If you use underscores in org-mode it will treat them almost the way latex does, changing the text that immediately follows the underscore as a sub-string.
This:
before-the-underscore_aftertheunderscore
Is rendered as this:
before-the-underscoreaftertheunderscore
But sometimes you just want an underscore (especially if you are writing about python code).
I found the answer on Stack Overflow (of course) - you can add an #+OPTIONS
directive to the file to disable this behavior. I originally went with the accepted answer which was to add #+OPTIONS: ^:nil
, and it works in most cases, but then I couldn't figure out how to write this post, since the underscores stopped working and I didn't want to have to use MathJax to show what I meant (although maybe that wouldn't be so bad), so now I think the better answer is the one given by danielpoe in the comments - use #+OPTIONS: ^:{}
instead. This disables the sub-scripting behavior of the underscore in most cases but allows you to add sub-scripting by putting the text following the underscore in curly-braces.
I wrote the example above, for instance, like this:
before-the-underscore_{aftertheunderscore}
This solution doesn't replicate the original org-mode behavior completely when you use the curly-braces. Without the directive if you have multiple underscores org-mode puts everything after the first underscore in the sub-string and removes all subsequent underscores, smashing the words together.
When I wrote this:
before-the-underscore_after_the_under_score
It came out as this:
before-the-underscoreaftertheunderscore
But the curly-braces keeps them:
before-the-underscoreafter_the_under_score
Which seems like an improvement anyway.
The only problem now is that I keep forgetting what to type in every time I want to use an underscore, which is why I'm making this post.
radvd (the router advertisement daemon) sends IPv6 advertisements and responds to node IPv6 requests. Here's the description from the man page.
radvd is the router advertisement daemon for IPv6. It listens to router solicitations and sends router advertisements as described in "Neighbor Discovery for IP Version 6 (IPv6)" (RFC 4861). With these advertisements hosts can automatically configure their addresses and some other parameters. They also can choose a default router based on these advertisements.
Setting radvd is suspiciously easy compared to other linux services. First you install it.
sudo apt install radvd
Installing it will also start the service so we can use systemctl
to check how it's doing.
systemctl status radvd
systemctl status radvd ● radvd.service - LSB: Router Advertising Daemon Loaded: loaded (/etc/init.d/radvd; bad; vendor preset: enabled) Active: active (exited) since Fri 2018-07-20 12:39:19 PDT; 36s ago Docs: man:systemd-sysv-generator(8) Jul 20 12:39:18 asgaard systemd[1]: Starting LSB: Router Advertising Daemon... Jul 20 12:39:19 asgaard radvd[8532]: Starting radvd: Jul 20 12:39:19 asgaard radvd[8532]: * /etc/radvd.conf does not exist or is empty. Jul 20 12:39:19 asgaard radvd[8532]: * See /usr/share/doc/radvd/README.Debian Jul 20 12:39:19 asgaard radvd[8532]: * radvd will *not* be started. Jul 20 12:39:19 asgaard systemd[1]: Started LSB: Router Advertising Daemon.
You can see in the output that there's a line with /etc/radvd.conf does not exist or is empty.
. To fix this we're going to create the configuration file.
Now create a configuration file (named radvd.conf
). Here's an example.
interface eth0 { MinRtrAdvInterval 3; MaxRtrAdvInterval 4; AdvSendAdvert on; AdvManagedFlag on; prefix 2001:db7::/64 { AdvValidLifetime 14300; AdvPreferredLifetime 14200; } ; };
Note that the interface name depends on your system. Most linux systems don't use the eth0
convention anymore. On my desktop the ethernet inteface is called enp1s0
and on my raspberry pi it's enxb827eb6c9129
so make sure you check what your interface name is using ifconfig
.
Now move (or copy) the config file into /etc/
sudo mv radvd.conf /etc/
And then restart radvd
and check its state.
sudo service radvd restart systemctl status radvd
● radvd.service - LSB: Router Advertising Daemon Loaded: loaded (/etc/init.d/radvd; bad; vendor preset: enabled) Active: active (exited) since Fri 2018-07-20 12:41:36 PDT; 2s ago Docs: man:systemd-sysv-generator(8) Process: 10008 ExecStop=/etc/init.d/radvd stop (code=exited, status=0/SUCCESS) Process: 10017 ExecStart=/etc/init.d/radvd start (code=exited, status=0/SUCCESS) Jul 20 12:41:36 asgaard systemd[1]: Starting LSB: Router Advertising Daemon... Jul 20 12:41:36 asgaard radvd[10017]: Starting radvd: Jul 20 12:41:36 asgaard radvd[10017]: * IPv6 forwarding seems to be disabled. Jul 20 12:41:36 asgaard radvd[10017]: * See /usr/share/doc/radvd/README.Debian Jul 20 12:41:36 asgaard radvd[10017]: * radvd will *not* be started. Jul 20 12:41:36 asgaard systemd[1]: Started LSB: Router Advertising Daemon.
So the warning about the configuration file went away, now we have to fix the IPv6 forwarding seems to be disabled.
error.
For now you can enable it at the command line.
sudo sysctl -w net.ipv6.conf.all.forwarding=1
And restart and check radvd
again.
sudo service radvd restart systemctl status radvd
● radvd.service - LSB: Router Advertising Daemon Loaded: loaded (/etc/init.d/radvd; bad; vendor preset: enabled) Active: active (running) since Fri 2018-07-20 12:45:02 PDT; 20s ago Docs: man:systemd-sysv-generator(8) Process: 12255 ExecStop=/etc/init.d/radvd stop (code=exited, status=0/SUCCESS) Process: 12264 ExecStart=/etc/init.d/radvd start (code=exited, status=0/SUCCESS) CGroup: /system.slice/radvd.service ├─12275 /usr/sbin/radvd -u radvd -p /var/run/radvd/radvd.pid └─12276 /usr/sbin/radvd -u radvd -p /var/run/radvd/radvd.pid Jul 20 12:45:01 asgaard systemd[1]: Starting LSB: Router Advertising Daemon... Jul 20 12:45:02 asgaard radvd[12274]: version 2.11 started Jul 20 12:45:02 asgaard radvd[12264]: Starting radvd: radvd. Jul 20 12:45:02 asgaard systemd[1]: Started LSB: Router Advertising Daemon.
So it looks like our daemon is working. If you restart the server, though, the IPv6 port forwarding won't be enabled so open up /etc/sysctl.conf
and un-comment out the following line.
net.ipv6.conf.all.forwarding=1
Now the next time you power on the computer it should be enabled.
To check if it's working you can put another device on the LAN and check ifconfig
. In our radvd.conf
file we defined the prefix for the address:
prefix 2001:db7::/64
So in the ifconfig
output we should see an entry for an IPv6 address that starts with 2001:db7::
. In fact I ended up with two.
inet6 2001:db7::b8b4:6adf:6267:5571 prefixlen 64 scopeid 0x0<global> inet6 2001:db7::a80c:1a05:eaac:c1e8 prefixlen 64 scopeid 0x0<global>
I'm connecting to a remote network using OpenVPN served by an ASUS access point. I originally did it at the command line.
sudo openvpn --config client.ovpn
It turns out that this doesn't allow me to access anything outside of the network that I was connecting to. From what I can tell it's a DNS problem, but nothing I found about fixing DNS problems with OpenVPN from the command line worked. Luckily the Network Settings GUI works, but even then, it didn't work out of the box.
First, not everything you need is installed. Besides the openvpn client itself (which I had installed before trying to run it at the command line) you need some things for the network settings as well.
apt install openvpn network-manager-openvpn network-manager-openvpn-gnome
Now open the network settings.
In the window that pops up click on the + sign to add a connection.
In the window that then pops up click on Import from file...
(I'm assuming you are using a config file).
Navigate to the config file, and double-click on it. In the dialog that pops up enter whatever extra information you need. In my case it was the username and password.
Click on the green 'Add' button and you should now have an entry for your VPN connection in the network settings. Click on the on switch (initially labeled 'Off') and if you're lucky it will connect.
After you click on the switch it will look like this, but read on just in case it didn't.
Unfortunately for me it didn't connect. In /var/log/syslog
I could see entries like this:
gnome-shell[2805]: Invalid VPN service type (cannot find authentication binary)
I don't know if the message is directly telling you this (it doesn't seem to), but it turns out that for some reason the Network Settings doesn't save your password. Look in /etc/NetworkManager/system-connections/
for a file that matches the name you gave your vpn in the settings. In my case it was just called 'client'. Open it as root in an editor.
sudo emacs /etc/NetworkManager/system-connections/client
Then change this line in the [vpn]
section:
password-flags=1
to
password-flags=0
Then add this section.
[vpn-secrets] password="your-password"
Where "your-password"
is your vpn password. The quotation marks around your password are required.
First restart the network manager.
sudo service network-manager restart
Now re-open the network settings and click on the switch again. With any luck this time it will stay on and you can check by going to one of the devices on your VPN network.
I'm using tcpdump to store packets and thought that it might be a good idea to put it on an external drive. It turned out to be a little more complicated than I thought it would be so here are my notes.
The first thing I wanted to do was format the drive. First I needed to get the name.
sudo lshw -C disk
Gave me this
*-disk description: SCSI Disk product: Elements 25A1 vendor: WD physical id: 0.0.0 bus info: scsi@1:0.0.0 logical name: /dev/sda version: 1014 serial: WX71D186F83C size: 3725GiB (4TB) capabilities: gpt-1.00 partitioned partitioned:gpt configuration: ansiversion=6 guid=7ff8067e-6905-4746-a8ec-f3a1f90f99d0 logicalsectorsize=512 sectorsize=4096
So it's named /dev/sda
. Now let's see if it's mounted.
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT sda └─sda1 ntfs Elements A4F2DF7DF2DF5262 mmcblk0 ├─mmcblk0p1 vfat PI_BOOT EAD0-90DA /boot └─mmcblk0p2 ext4 PI_ROOT 9d97a4df-a4eb-4b09-92b6-bb1ccfade0ee /
So you can see that there is a partition named sda1
and it's formatted using ntfs
and it isn't mounted. Since I'm running it with linux I'll reformant the drive using ext4
. I'm also going to give it the label westerndigital
.
sudo mkfs -t ext4 -L westerndigital /dev/sda1
mke2fs 1.42.13 (17-May-2015) /dev/sda1 contains a ntfs file system labelled 'Elements' Proceed anyway? (y,n) y
Apparently Western Digital named the partition Elements
. I entered y
and continued.
Creating filesystem with 976745728 4k blocks and 244187136 inodes Filesystem UUID: 00fb2543-edc3-4f84-874b-fc36c485f362 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544
So checking it again.
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT sda └─sda1 ext4 westerndigital cd10dc9f-7420-4b85-87ff-b8dfbf57f031 mmcblk0 ├─mmcblk0p1 vfat PI_BOOT EAD0-90DA /boot └─mmcblk0p2 ext4 PI_ROOT 9d97a4df-a4eb-4b09-92b6-bb1ccfade0ee /
Shows that it's now ext4
and it has the label westerndigital
. According to this page the Hardware Abstraction Layer (HAL) will auto-mount drives that have labels, although I haven't tested this yet.
First make a directory for it.
sudo mkdir /media/westerndigital
Then mount it.
sudo mount /dev/sda1 /media/westerndigital/
Now we can check on it.
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 3.7T 0 disk └─sda1 8:1 0 3.7T 0 part /media/westerndigital mmcblk0 179:0 0 29.8G 0 disk ├─mmcblk0p1 179:1 0 63M 0 part /boot └─mmcblk0p2 179:2 0 29.8G 0 part /
So we can see that it's mounted at /media/westerndigital/
.
First I needed to put the wireless interface into monitor mode.
iwconfig wlx00c0ca967afb mode monitor
Then I ran tcpdump.
sudo tcpdump -n -w /media/westerndigital//channel_6.pcap -C 1000 -W 10 --snapshot-length 0 --interface wlx00c0ca967afb -z gzip --relinquish-privileges erysichthon
Which gave me this.
tcpdump: /media/westerndigital//channel_6.pcap0: Permission denied
On my desktop the solution was in the comments of this StackOverflow post.
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.tcpdump
But on my raspberry pi this raised an error.
Cache read/write disabled: interface file missing. (Kernel needs AppArmor 2.4 compatibility patch.) Warning: unable to find a suitable fs in /proc/mounts, is it mounted? Use --subdomainfs to override.
The solution was in the same post. I just made the permissions wide open.
sudo chmod 777 /media/westerndigital
This is probably a security risk, but it works.
Success comes from knowing what you're best at and being aligned with your context. Even insanity can be helpful given the right context.
I recently started revisiting some vue.js code that I was working on at work and when I ran the unit-tests all of them failed with pretty much the same error.
actual.should.equal is not a function. (In 'actual.should.equal(expected)', 'actual.should.equal' is an instance of ProxyObject)
I'm using the chai BDD 'should' style of testing, so this should have worked (because it was working before). To debug it I ran it with FireFox and when I did, all the tests mysteriously started working. It turns out I was using PhantomJS, which has been abandoned, and somewhere along the line something in chai stopped working with it, so I decided to set up Firefox headless as my browser instead. This is how I did it.
I already had this installed for debugging, but I'll mention it anyway, for completeness.
npm install karma-firefox-launcher --save-dev
I'm running the tests using karma and I had hoped that I would just have to change the name of the browser in the configuration, but it turns out to need a little setup in the karma.conf.js
file. First get rid of the PhantomJS
reference. Delete this:
browsers: ['PhantomJS'],
and replace it with this.
browsers: ['FirefoxHeadless'],
The FirefoxHeadless
browser isn't actually defined, so you have to add it (I put it right after the browsers
declaration).
customLaunchers: { 'FirefoxHeadless': { base: 'Firefox', flags: [ '-headless', ], } },
This tells karma to run firefox
and pass in the -headless
flag, as shown in the Mozilla documentation about firefox's headless mode. I found out how to do it from a question on Stack Overflow.
PhantomJS
breaks the Chai's BDD style of testing, but since both Firefox and Chrome have headless modes, using them instead makes it work without actually needing to have the GUI launch.


Atmospheric impacts of Antarctic sea-ice loss. a Precipitation anomalies. b 500 hPa geopotential distribution changes. c Stream function changes. Shown are the ensemble mean differences (“low Arctic ice” minus control) for December–February (DJF) season. Stippling indicates anomalies that are statistically significant at the 90% confidence level


{{ partial "head.html" . }} {{- $options := (dict "targetPath" "/newsroom/css/main.css" "outputStyle" "expanded" "enableSourceMap" "true") -}} {{- $styles := resources.Get "/newsroom/scss/main.scss" | resources.ExecuteAsTemplate "/newsroom/scss/main.scss" . | resources.ToCSS $options | resources.Fingerprint "sha512" }}
{{ partial "nav-bar.html" . }}


Harry Redknapp makes Premier League top four prediction
Harry Redknapp thinks the Premier League’s top four is already set, with Manchester United, Arsenal and Tottenham all set to miss out on a Champions League spot this season.
The top four of Liverpool, Leicester, Chelsea and Manchester City have already made a notable breakaway from the rest of the division.
City, currently in fourth, are eight points clear of surprise package Sheffield United who are in fifth, level on points with Arsenal and one ahead of Manchester United.
Spurs, who have managed a top four finish in each of the last four seasons, are 14th in the table after just three wins from 12 games so far this season and 11 points off the Champions League places.
However, Redknapp is more optimistic about Tottenham’s chances of a recovery than either United’s or Arsenal’s given their recent performances.
Advertisement Advertisement
‘Tottenham have it all on now to get in the top four this year,’ Redknapp wrote for the Sun.
‘The only thing now in their favour is that Arsenal look so poor. Chelsea are doing great, they’re going to be challenging. Leicester are going to be bang in there.
‘But you’re looking at Arsenal, and Manchester United, and wondering if they are going to make it this year.
‘I can see both of those two not making the top four unless there is a big improvement.
‘It’s been a disappointing season so far for Spurs, I really thought they would be close to Manchester City and Liverpool and challenging.
‘It’s difficult. The players haven’t hit the form they did last year. I’m a big fan of the manager and hopefully they can turn it around.’
With Manchester City hosting Chelsea on Saturday, the chasing pack will see this weekend as a chance to gain ground on the current top four.
Spurs go to West Ham in the early kick-off on Saturday, while Arsenal host Southampton that afternoon and Manchester United go to Sheffield United on Sunday in a big to overtake the Blades.
The bookmakers agree with Redknapp’s assessment that the current top four are likely to remain in the Champions League spots, with Chelsea and Leicester both odds-on with Betfair for a top four finish.
Advertisement Advertisement
Arsenal and Tottenham are btoh 4/1 to crash the party, with Man Utd just behind at 5/1, while Sheffield United’s chances have been dismissed at 200/1.


Reports man shot in north Dublin prompt Garda investigation
Initial investigations focused on address at Clonshaugh Avenue, Clonshaugh
by Conor LallyGardaí are investigating reports of a shooting in north Dublin during which a man was wounded.
The initial investigations are focused on an address at Clonshaugh Avenue, Clonshaugh, Dublin 17, where the shooting was reported at about 5.15pm.
More to come.


Get A Digital Copy Of Samurai Shodown! 2 When You Pre-Order The New Game On Switch
Due out in the first quarter of 2020
by Liam DoolanSNK's Samurai Shodown reboot arrived earlier this year on Xbox One and PlayStation 4. It's due out in Japan on the Switch this December, so when will Nintendo fans in the west be able to play the latest entry in this long-running fighting series?
According to a release window announcement trailer published by Nintendo, it'll be at some point during the first quarter of 2020. That's any time between January and March next year.
Just like Japan, if you pre-order the game from the Switch eShop, you'll receive a free digital copy of the 1999 Neo Geo Pocket Color game, Samurai Shodown! 2. It's the game's very first port since its original release and can be played in docked handheld and tabletop mode.
Take a look at the announcement trailer above and tell us if you'll be adding this one to your collection.


The Outdoor Girls in Florida
by Laura Lee Hope
Chapter XXV: "Will Ford"
Additional Information
- Year Published: 1913
- Language: English
- Country of Origin: United States of America
- Source: Hope, L. L. (1913) The Outdoor Girls in Florida. New York: Grosset & Dunlap.
-
Readability:
- Flesch–Kincaid Level: 2.2
- Word Count: 1,878
- Genre: Adventure
- Keywords: florida stories, the outdoor girls in florida
- ✎ Cite This
Downloads
"Slow up a little, Betty. Now ahead to starboard! Reverse! I have it!"
Thus cried Mollie, who stood at the bow of the Gem with a boathook in her grasp, while the motor craft approached the rude raft on which lay the body of an unconscious youth. Mollie had caught the hook in the edge of the boards and the motor boat was now beside it.
"What—what are we going to do with him?" asked Amy.
"Get him aboard, of course," said Betty, shortly. She was busy making fast a line to a projection on the raft. The Gem was now drifting with the craft containing the young man.
"We never can!" cried Grace. "Oh, perhaps he's—"
She did not say what she thought.
"We've just got to get him up here, and take him to a doctor," declared Betty, fiercely. "He looks half-starved."
There was a moment of hesitation among the girls—a natural hesitation—and then Betty and Mollie with an understanding look at each other climbed from the boat to the raft. It was big and strong enough to support much more weight; for, though it was rudely made, it was substantial, being composed of tree trunks, and boards, bound together with withes, forest vines, and bits of rope.
"He—he's breathing—anyhow," said Mollie, softly.
"Yes, we—we must lift him up," spoke Betty. "Come on."
They exposed the pale and drawn face of the youth on the raft.
"It's Will!" she screamed, half-hysterically. "It's my brother Will!"
Betty and Mollie started back, and nearly let the limp body slip off the raft.
"What—what!" cried Betty, for the figure of the youth bore no resemblance to Will; nor did the features. But the eyes of a sister were not to be deceived.
"It is Will!" she cried. "I have been hoping and praying all the while that it might be he—and it is. It's Will!"
She would have gotten down to the raft had not Amy restrained her.
"I believe it is Will," said Mollie, taking a closer look. "We have found him."
"Then let's get him aboard at once, and help him," said practical Betty. "Amy, start that coffee. Grace, you help us! And Harry, too!"
Thus the Little Captain issued her orders.
How they got Will Ford aboard the boat the girls could not tell afterward. But they did, with The Loon's aid, and soon he was being given hot coffee. Slowly his senses came back, and when some warm broth had been slowly fed to him he opened his eyes, looked wonderingly about him, and asked hoarsely:
"Is it real—or am I dreaming again?"
"It's real, Will dear," said Grace, putting her arms about him, as he lay in one of the bunks. "Oh, to think that we have found you again! Where have you been, and what happened to you?"
"Where haven't I been?" he asked, smiling a little. "And what hasn't happened to me?"
"But you're all right now," said Grace, comfortingly.
"But what in the world are you girls doing down here?" Will asked, wonderingly. "It's like a dream. How did you come here?"
"To rescue you," replied Mollie, with a laugh.
"Really?"
"Well, almost really."
Will grew better every minute and wanted to tell his story, but the girls insisted on waiting, except for the most important details, until he had reached the orange grove. To satisfy him, however, they told how they came to be in Florida.
As for The Loon, no sooner had he a sight of Will's face than he danced about like a child, and cried:
"That's him! That's the one! He's the one I went to get help for!"
"That's right, my boy," said Will, weakly.
"I—I lost the money and note," faltered poor Harry. "But I thought you had fooled me."
"But, after all, he was the means of saving Tom, and, in a way, you, also," said Grace.
"Who's Tom?" asked Will.
And they told him.
That there was surprise at Orangeade when the outdoor girls arrived with Will Ford can easily be imagined. The first thing done was to send a telegram to Mr. Ford, apprising him that his son was found.
Then Will told his story.
The first part the girls were already familiar with—how, tiring of life in Uncle Isaac's mill, he had determined to strike out for himself.
"Then I fell in with a plausible talker," explained Will, "and he persuaded me he had a great scheme for making money. Well, before I knew it I had signed some papers—foolishly. At first I was given decent clerical work to do, and then the scheme failed, I was transferred to another part of the State, and to another company, and in some way, by a juggling of contracts, not knowing what I was doing, it seems that I signed an agreement to work in a timber camp. Say, it was worse than being in prison, and some of the fellows were prisoners, I heard. There were one or two others like myself; but we couldn't get away.
"Then I wrote that letter to dad and threw it out of the car window. From then on I've lived a dog's life. I've been a regular slave. Many a time I'd have given anything to be back, even with Uncle Isaac. This has been a lesson to me."
Will went on to tell how he had been taken from place to place with the others until he finally was held in the Everglade swamp, and made to get out timber from the forest.
"I thought it was all up with me then," he said. "Before that I had met this chap," and he nodded toward The Loon. "I thought he could help me, and he promised to. I managed to speak to him on the quiet, and gave him what money I had managed to hide away from those slave-drivers. He went off, promising to bring help."
"And he tried, too," said Grace. "He helped us first, though." And she told of getting the motor boat away from the manatee.
"Just to think!" cried Will. "There he was, talking to you girls all the while, and me only a few miles away, though I was moved later."
"I—I'm sorry," spoke The Loon.
"Oh, you couldn't help it, Harry," voiced Betty, softly. "After all, it came out all right, and you helped a lot."
"Indeed he did," agreed Tom Osborne. "Only for him Will and I might still be prisoners."
Will related how he had broken from the shack shortly before the rescuers reached the Everglade camp, and how, after much suffering, having previously cut his foot, which made him lame, and wandering about in the woods, he had made the raft and floated down the river. What little food he had gave out, and he had fainted from weakness and exposure just as the girls' boat came in sight.
"But we have you back again," declared Grace.
"Yes, and you can make up your minds I'm not going to be so foolish again," spoke her brother. "This has been a lesson to me—one I won't forget in a hurry."
"Well, now you can stay with us and have a good time," said his sister. "I guess you need it."
"I sure do," said Will, fervently.
On hearing Will's story Mr. Hammond and Mr. Stonington went to the authorities again, to proceed against the unscrupulous men who had so mistreated him.
But they had left that part of the State, and could not be traced. One reason, Will thought, why they held him a prisoner, was because they had violated the law in regard to the treatment of the working-prisoners, and did not want to be reported. And the reason The Loon's description of Will gave no clue to the girls was because of Grace's brother's temporary lameness, and his change due to poor living and ragged clothes.
Then came happy days. Mr. and Mrs. Ford, rejoicing over the news of their son being found, sent word for him to stay with the girls, and they would join him in Florida. As for the girls—Mollie, Amy and Betty shared with Grace the fun of showing Will about the lovely place where they had spent the winter.
The Loon found a comfortable home with one of Mr. Hammond's workers, and made himself very useful about the orange grove. He could not do enough for the girls, or for Will and Tom, the latter two becoming fast chums, as they had been companions in misery.
"And to think that soon we will have to leave this lovely place," said Grace one day, when they had come back from a long trip on the river in the Gem. "It is perfect here."
"It is," agreed Mollie, "but do you know I am rather lonesome for the sight of a snowball, or an icicle."
"Mollie Billette!" cried Amy.
"Well, I am! Too much loveliness palls on one after a bit. Of course it's lovely here, Amy, but we are Northern girls, and one winter in the South can't change us."
"Well, we have certainly had some strange adventures here," remarked Betty, as she swung her boat up to the dock.
"And with all the orange blossoms, none of us has worn any yet," remarked Grace, laughing.
"Oh, I don't know," said Mollie, with a mischievous look at Betty. "I think some of us have a chance. I saw Tom Osborne out in the moonlight with you last night, Grace."
"You did not!"
"Yes, I did, and he—"
"Have a chocolate!" capitulated Grace.
And now the time has come to take leave of the outdoor girls—at least for a time. Perhaps we may meet them again, under other circumstances. For they are destined to have other adventures, fully as absorbing as those I have already set down.
THE END


Add 1
The button above has been clicked {{ counter }} times.
Greet
Say hi
Say what
Submit
click.stop
submit.prevent
click.stop.prevent
click.capture
click.self
Do something


{% block content %} {% load core_template_filters %}
Select Index Mapping
When new records are created in Combine, through Harvest, Transform, Merging, or Publishing, they are also indexed in ElasticSearch for search and analysis. Using the dropdown below, select a pre-configured scenario for mapping your metadata records to ElasticSearch fields.


---
active_crumb: SQL Model ex
layout: documentation
id: sql_model
fa_icon: fa-cube
---
This example demonstrates a relatively complete implementation of natural language interface to a SQL database. This is a non-trivial example, spanning over a thousand lines of code, and it can act as a basis for production-ready implementation.
Note that a significant part of the implementation is not directly related to NLPCraft but rather deals with SQL statement construction. We specifically decided not to use any 3rd party libraries for it to show what can be done "from scratch".
Complexity:
Source code: GitHub
Review: All Examples at GitHub
Many of modern existing natural language-to-SQL implementations use variations of deep learning approach where you first train the neural network on a pre-created training set and then get to use the trained network to provide (infer) probabilistic answers for the new input sentences. Although the latest natural language-to-SQL attempts to implement this approach are getting into 90% percentile of accuracy - they remain largely unusable for the vast swath of enterprise applications where non-deterministic nature of such systems renders them practically useless. The apparent problem with non-deterministic systems like that is that the user never knows whether a given answer is correct or incorrect. In these use cases users can't tolerate the fact that in 5-10% of the cases the answer will be invalid. Try that for your HR or revenue reporting system, prescriptive analytics systems, and so on...
It's important to note, however, that for many non-mission-critical systems such non-determinism does not pose a significant problem. We happily accept such imprecision when asking for direction on our mobile devices, unlock our phones using face or fingerprint recognition, when performing sentiment analysis or trying to detect faces of our friends across thousands of photographs. Cost of retries, as well as the cost of initial errors, is insignificant in these cases. The same cost, however, in many business applications can be too significant to tolerate.
As you may have learned by now, NLPCraft uses a fully deterministic approach in an attempt to match the user input against a defined set of intents. If it finds the matching intent - it guarantees that match for a given intent. If no matching intent can be found - it returns the negative result without any ambiguity. In other words, if the answer is given, it is deterministically guaranteed to be correct. Another positive side-effect of this approach is the fact that such matching logic is traceable, i.e. the user can see why given user input was matched against a certain intent (and not any other). Such traceability of the comprehension logic (or explainability vs "black box" approach from deep learning techniques) is often critical for many real-life business applications.
On the flip side, one of the downsides of such an approach in general is the need to have a detailed, domain-specific model for each SQL database (when dealing with SQL databases). Building such a model can be a non-trivial and time consuming experience. That is where NLPCraft brings a lot of built-in tooling to simplify this task dramatically.
Due to size of this example the entire source code for it can be found on GitHub.
We are going to be building natural language interface against slightly modified "Northwind" sample database from Microsoft SQL Server:
You can find SQL script creating this database and populating it with the sample data at
db/northwind.sql
file in the root of the example.
In our example we are using H2 database instance. For convenience, example provides a command line application
db/SqlServer.scala
that automatically starts local H2 database instance with default configuration (localhost on port 9092) and initializes it
using db/northwind.sql
script.
Creating data model manually for the existing SQL schema can be a daunting task. NLPCraft provides the tool that can scan SQL schema and create working stub of such model automatically. All you have to do then is to add any necessary modifications to it.
SQL Model Generation is a Java-based utility that takes JDBC configuration, reads database schema using it and creates initial JSON or YAML stub for the data model. This stub then can be used as is or be extended further.
Examples specifically comes with two pre-generated files:
sql_model_init.yaml
- the initial file that was generated straight out of
SQL Model Generator (see above for the instructions).
Implementation mainly consists of these files:
SqlModel.scala
- the code behind the data model that loads YAML-defined model and
defines all intents.
db/SqlBuilder.scala
- the main utility that takes object model provided by
SQL Model Generation
and builds a SQL query to execute. Note that we elected to build this functionality
from scratch to illustrate how it can be done. You are free, of course, to use many
of the existing libraries to help achieve this goal.
Assuming that project is located in ~/SqlModel
folder - let's go to into this directory and
run the Maven build:
$ cd ~/SqlModel $ mvn clean package
At this stage we have our project built and we are ready to start testing.
Run the following command to start local REST server, if it hasn't been started already, from the NLPCraft installation directory:
NOTES:
bin/nlpcraft.sh help --cmd=start-server
to get a full help on this command.
nlpcraft.sh
for
and nlpcraft.cmd
for .
Part of the test framework, the auto-validator class NCTestAutoModelValidator takes one or more model IDs (or class names) and performs validation. Validation consists of starting an embedded probe with a given model, scanning for @NCIntentSample and @NCIntentSampleRef annotations and their corresponding callback methods, submitting each sample input sentences from these annotations and checking that resulting intent matches the intent the sample was attached to. Note that auto-testing does not require any additional code to be written - the class gathers all required information from the model itself.
As always, you can launch model auto-validator as any other Java class but we'll use NLPCraft CLI to do it more conveniently:
$ bin/nlpcraft.sh test-model --cp=~/sql/target/classes --mdls=demo.SqlModel
NOTES:
bin/nlpcraft.sh help --cmd=test-model
to get a full help on this command.
retest-model
command in REPL mode to re-run the last model test
avoiding the retyping of all required parameters.
nlpcraft.sh
for
and nlpcraft.cmd
for .
Typical development cycle consists of:
All of these operations can be performed from NLPCraft CLI in REPL mode or from any IDE.
NOTE: you don't need to restart REST server every time - it only needs to be started once.
You've created SQL model, started the REST server and tested this model using the built-in test framework.


Dashboard
Alerts
About
Contact
Api
Add emails on which you want to receive warnings and notifications from your SMAQ.
Username *
Email *
Existing Users


[]. respiratory influenza virus infection measles severe Infect coronavirus syndrome viral acute smallpox East Influenza days Measles disease {border-style viruses SARS cases px;} #ffffff;} MERS include Middle contact patients Health transmission Control Disease healthcare tract MERS-CoV RNA [â€"]. estimated global rash risk complications illness including infections Engl Smallpox cause cells early individuals polymerase Accessed Apr associated case death following genome onset protein proteins reported â€"Â (Fig. Med./NEJMoa avian clinical followed health host humans lipid novel outbreak period px; recommended resulting seasonal {font-family .Centers Prevention. World airborne, droplets envelope failure font-size high highly host-derived infected influenza: lower occurs pneumonia precautions shedding single-stranded subtypes systematic testing typically vaccination vaccine years DNA Dis./eid. Med Prevention Rev SARS-CoV Saudi age approximately average confirmed control deaths double; dromedary fever form incubation known large lesions membrane million nosocomial outbreaks primarily treatment use vaccines year zoonotic â€" (%), Clinical Confirmatory Global Respiratory Treatment United VARV bacterial border-color border-width children coated coinfection common data development evaluation exposure factors infectious integrated mild nucleoprotein occurred pathogenesis pathogenic potential receptors regions replication respectively review segments solid; standard, suspected transmitted {font-style {font-weight > (M) .World Acad Biology Complications Dis Illness Infection Mechanisms Morb Mortal National Organization. Region, Standard, Testing Transmission Wkly administered airborne airway alveolar assist bold bound core courier; days, diagnosis em; envelope. enzyme epidemiological epithelial family febrile glycoproteins however, human immune kidney longer macular nonstructural number occur outside prevent pt;} public receptor required reservoir secondary settings, small smallpox: specimen spread state structural surface surveillance symptom transmission. types underlies upper vaccinated variola virion virus, vitamin weeks


Approve Activity: Paper Presentation
| No. | Student Name | Year | Division | Roll No. | |
|---|---|---|---|---|---|
| 1 | Neha Desai | TE | A | 68 | |
| 2 | Neha Desai | TE | A | 68 | |
| 3 | Neha Desai | TE | A | 68 | |
| 4 | Neha Desai | TE | A | 68 |


With Dropwit, you can run and grow your business while we take care of your delivery.
We offer a same day delivery and next day delivery, so customers gets the product they want sooner than expected.
We look after your products with great care and ensure it is delivered safely and in good condition.
You can monitor your delivery status in real-time and check where your item is so you can realistically expect when it will arrive at your doorstep.


London has approximately 366 thousand people living in it, with the average age being 40.5 years old.
London's education is mainly governed by 4 school boards, most notably the Thames Valley District School Board
London has a steady healthcare with good health insurance


Execute this code:
var name = 'John',
obj = {
name: 'James'
},
Animal,
mammal;
Animal = function(){};
Animal.prototype.name = 'animal';
mammal = new Animal();
mammal.name = 'mammal';
delete name;
console.log('#1: ' + name);
delete obj.name;
console.log('#2: ' + obj.name);
delete obj.toString;
console.log('#3: ' + obj.toString);
delete mammal.name;
console.log('#4: ' + mammal.name);
The execution of this code logs:
#1: John
#2: undefined
#3: function toString() { [native code] }
#4: animal
Why #1: John is logged?
Why #2: undefined is logged?
Why #3: function toString() { [native code] } is logged?
Why #4: animal is logged?


#include <TimeCurve.h>
Inheritance diagram for TimeCurve:
Definition at line 21 of file TimeCurve.h.
Public Member Functions | |
| virtual double | transform (double raw)=NULL |
| virtual double | untransform (double transformed)=NULL |
| virtual | ~TimeCurve () |
|
|
|
|
|
Reimplemented in AccelerationTimeCurve, LinearTimeCurve, and PolynomialTimeCurve. |
|
|
Reimplemented in AccelerationTimeCurve, LinearTimeCurve, and PolynomialTimeCurve. |


- save(Connection) - Method in class ligueBaseball.entities.DatabaseEntity
-
Save the current entity
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.CannotFindTeamWithNameException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.CreatePlayerParametersMissingException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.FailedToConnectToDatabaseException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.FailedToDeleteEntityException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.FailedToRetrieveNextKeyFromSequenceException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.FailedToRetrievePlayersOfTeamException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.FailedToSaveEntityException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.MatchAlreadyHaveTheMaximumNumberOfOfficialsException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.MatchDoesntExistsException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.MissingCommandParameterException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.MissingProgramParameterException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.NegativeScore
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.OfficialDoesntExistsException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.PlayerAlreadyExistsException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.TeamCantPlayAgainstItselfException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.TeamDoesntExistException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.TeamIsNotEmptyException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.TeamNameAlreadyTakenException
-
- serialVersionUID - Static variable in exception ligueBaseball.exceptions.UnknownCommandException
-
- setAddress(String) - Method in class ligueBaseball.entities.Field
-
Set the address of the field.
- setDatabaseName(String) - Method in class ligueBaseball.ApplicationParameters
-
- setDate(Date) - Method in class ligueBaseball.entities.Match
-
Set the date of the match.
- setDate(Date) - Method in class ligueBaseball.entities.Player
-
Set the beginning date.
- setEntryFile(String) - Method in class ligueBaseball.ApplicationParameters
-
- setField(Field) - Method in class ligueBaseball.entities.Match
-
Set the field for this match.
- setField(Connection, Field) - Method in class ligueBaseball.entities.Team
-
Set the field related to this team.
- setFirstName(String) - Method in class ligueBaseball.entities.Official
-
- setFirstName(String) - Method in class ligueBaseball.entities.Player
-
Set the first name of the player.
- setLastName(String) - Method in class ligueBaseball.entities.Official
-
- setLastName(String) - Method in class ligueBaseball.entities.Player
-
Set the last name of the player.
- setLocalTeam(Team) - Method in class ligueBaseball.entities.Match
-
Set the local team for this match.
- setLocalTeamScore(int) - Method in class ligueBaseball.entities.Match
-
Set the local team score.
- setName(String) - Method in class ligueBaseball.entities.Field
-
Set the name of the field.
- setName(String) - Method in class ligueBaseball.entities.Team
-
Set the name of the team.
- setNumber(int) - Method in class ligueBaseball.entities.Player
-
Set the shirt number.
- setPassword(String) - Method in class ligueBaseball.ApplicationParameters
-
- setTeam(Connection, Team) - Method in class ligueBaseball.entities.Player
-
Set the team this player will play for.
- setTime(Time) - Method in class ligueBaseball.entities.Match
-
Set the time of the match.
- setUsername(String) - Method in class ligueBaseball.ApplicationParameters
-
- setVisitorTeam(Team) - Method in class ligueBaseball.entities.Match
-
Set the visitor team for this match.
- setVisitorTeamScore(int) - Method in class ligueBaseball.entities.Match
-
Set the visitor team score.
- showAllPlayersForTeam(Team) - Method in class ligueBaseball.Application
-
Show all the players that plays for the team given in parameters.
- showAvailableActions() - Method in class ligueBaseball.Application
-
Show all the available actions to the user.


In summary, in Hartford between April 2014 and September 2016, it seems as though Black drivers were not stopped disproportionately. Stopped Black drivers were searched or frisked at a slightly higher rate than stopped white drivers, and contraband was found on a slightly higher percentage of searched or frisked white drivers than searched or frisked Black drivers. While we cannot make any definitive conclusions based on our analysis, it seems as though there was a small anti-Black bias in vehicular stops and searches, but there did not seem to be large-scale, widespread racial disparities. You should edit the blocks of code above and see what conclusions you can make for the Philadelphia data.
in-context


Offers an async require.resolve function. It’s highly configurable.
### Install
sh
# npm
npm install enhanced-resolve
# or Yarn
yarn add enhanced-resolve
The easiest way to create a resolver is to use the createResolver
function on ResolveFactory
, along with one of the supplied File System implementations.
```js
const {
NodeJsInputFileSystem,
CachedInputFileSystem,
ResolverFactory
} = require(‘enhanced-resolve’);
// create a resolver
const myResolver = ResolverFactory.createResolver({
// Typical usage will consume the NodeJsInputFileSystem
+ CachedInputFileSystem
, which wraps the Node.js fs
wrapper to add resilience + caching.
fileSystem: new CachedInputFileSystem(new NodeJsInputFileSystem(), 4000),
extensions: [‘.js’, ‘.json’]
/* any other resolver options here. Options/defaults can be seen below */
});
// resolve a file with the new resolver const context = {}; const lookupStartPath = ‘/Users/webpack/some/root/dir’; const request = ‘./path/to-look-up.js’; myResolver.resolve({}, lookupStartPath, request, (err/Error/, filepath/string/) => { // Do something with the path }); ```
For more examples creating different types resolvers (sync/async, context, etc) see lib/node.js
.
#### Resolver Options
| Field | Default | Description |
| ———————— | ————————— | ———————————————————————————- |
| modules | [“node_modules”] | A list of directories to resolve modules from, can be absolute path or folder name |
| descriptionFiles | [“package.json”] | A list of description files to read from |
| plugins | [] | A list of additional resolve plugins which should be applied |
| mainFields | [“main”] | A list of main fields in description files |
| aliasFields | [] | A list of alias fields in description files |
| mainFiles | [“index”] | A list of main files in directories |
| extensions | [“.js”, “.json”, “.node”] | A list of extensions which should be tried for files |
| enforceExtension | false | Enforce that a extension from extensions must be used |
| moduleExtensions | [] | A list of module extensions which should be tried for modules |
| enforceModuleExtension | false | Enforce that a extension from moduleExtensions must be used |
| alias | [] | A list of module alias configurations or an object which maps key to value |
| resolveToContext | false | Resolve to a context instead of a file |
| unsafeCache | false | Use this cache object to unsafely cache the successful requests |
| cacheWithContext | true | If unsafe cache is enabled, includes request.context
in the cache key |
| cachePredicate | function() { return true }; | A function which decides whether a request should be cached or not. An object is passed to the function with path
and request
properties. |
| fileSystem | | The file system which should be used |
| resolver | undefined | A prepared Resolver to which the plugins are attached |
Similar to webpack
, the core of enhanced-resolve
functionality is implemented as individual plugins that are executed using Tapable
. These plugins can extend the functionality of the library, adding other ways for files/contexts to be resolved.
A plugin should be a class
(or its ES5 equivalent) with an apply
method. The apply
method will receive a resolver
instance, that can be used to hook in to the event system.
```js class MyResolverPlugin { constructor(source, target) { this.source = source; this.target = target; }
apply(resolver) {
resolver.plugin(this.source, (request, callback) => {
// Any logic you need to create a new request
can go here
resolver.doResolve(this.target, request, null, callback);
});
}
}
```
Plugins are executed in a pipeline, and register which event they should be executed before/after. In the example above, source
is the name of the event that starts the pipeline, and target
is what event this plugin should fire, which is what continues the execution of the pipeline. For an example of how these different plugin events create a chain, see lib/ResolverFactory.js
, in the //// pipeline ////
section.
javascript
npm test
If you are using webpack
, and you want to pass custom options to enhanced-resolve
, the options are passed from the resolve
key of your webpack configuration e.g.:
resolve: {
extensions: ['', '.js', '.jsx'],
modules: ['src', 'node_modules'],
plugins: [new DirectoryNamedWebpackPlugin()]
...
},
Copyright (c) 2012-2016 Tobias Koppers
MIT (http://www.opensource.org/licenses/mit-license.php)


She was abjectly struggling to cope with the bone-chilling cold of the Antarctic, knowing that no amount of preparation could have made her ready for the extreme climate. [G|D]
The ancient abacus, long considered an essential tool for calculations, was made even more indispensable by its capacity to accommodate the abundant complexity of mathematical equations. [G|D]
Her elderly biddy was bedridden, so she had to coddle her with constant care and affection, making sure her every need was met. [G|D]
Sarah was feeling the relentless boredom of her circadian routine, and intensely longed for a baddie to swoop in and stir up some excitement in her otherwise mundane life. [G|D]


and the {background dengue margin {border-style Saudi control are for px;} #ffffff;} arboviral vector health mosquito threat risk diseases other with Aedes against approaches biological community integrated public Arabia Zika communication disease effective monitoring programs px; sustainable which {font-family Health The change community-based crucial data development emerging font-size from local management virus Aedes-linked Gulf awareness double; environment implementation including preparedness research that viral ./s--- This analysis approach behavioral border-color border-width dengue, early education epidemics innovative needed resilience response social solid; strategies surveillance use used vector-borne warning {font-style {font-weight Dis Med Public Strengthening behavior biocontrol bold cases concern countries courier; em; evidence-based global improve improving laboratory mobilization mosquitoes need new potential prevention preventive pt;} quality reduce should threats vectors


| 022:037 Khan | : |
It is neither their meat nor their blood that reaches Allah, but it is piety from you that reaches Him. Thus have We made them subject to you that you may magnify Allah for His Guidance to you. And give glad tidings (O Muhammad SAW) to the Muhsinun (doers of good). |
| 022:037 Maulana | : |
Not their flesh, nor their blood, reaches Allah, but to Him is acceptable observance of duty on your part. Thus has He made them subservient to you, that you may magnify Allah for guiding you aright. And give good news to those who do good (to others). |
| 022:037 Pickthal | : |
Their flesh and their food reach not Allah, but the devotion from you reacheth Him. Thus have We made them subject unto you that ye may magnify Allah that He hath guided you. And give good tidings (O Muhammad) to the good. |
| 022:037 Rashad | : |
Neither their meat, nor their blood reaches GOD. What reaches Him is your righteousness. He has subdued them for you, that you may show your appreciation by glorifying GOD for guiding you. Give good news to the charitable. |
| 022:037 Sarwar | : |
It is not the flesh and blood of your sacrifice that pleases God. What pleases God is your piety. God has made subservient to you the sacrificial animals so that perhaps you will glorify Him; He is guiding you. (Muhammad), give the glad news (of God's mercy) to the righteous people. |
| 022:037 Shakir | : |
There does not reach Allah their flesh nor their blood, but to Him is acceptable the guarding (against evil) on your part; thus has He made them subservient to you, that you may magnify Allah because He has guided you aright; and give good news to those who do good (to others). |
| 022:037 Sherali | : |
Their flesh reaches not ALLAH, nor does their blood, but it is your righteousness that reaches HIM. Thus HE has subjected them to you, that you may glorify ALLAH for HIS guiding you. And give glad tidings to those who do good. |
| 022:037 Yusufali | : |
It is not their meat nor their blood, that reaches Allah: it is your piety that reaches Him: He has thus made them subject to you, that ye may glorify Allah for His Guidance to you and proclaim the good news to all who do right. |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > حمد الله تعالى وتسبيحه والثناء عليه Pillars of Islam> Islamic> Oneness of Allah> Praise be to Him أركان الإسلام > الحج والعمرة > فرضية الحج وآدابه Pillars of Islam> Hajj and Umrah> Duty of Hajj and its Morals أركان الإسلام > الحج والعمرة > النحر Pillars of Islam> Hajj and Umrah> Slaughtering the Sacrificial Animals العمل > العمل الصالح > الإحسان Action(Work)> The Good Deeds> Charity الإنسان والعلاقات الأخلاقية > الأخلاق الحميدة > الإحسان Man and The Moral Relations> Good Morals>Charity
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


DBPlotter¶
-
class
Data_Reduction.GAVRT.plotter.
DBPlotter
¶ Bases:
Data_Reduction.GAVRT.DSS28db
Database class with plotting capability.
- Attributes::
logger - logging.Logger object
- Attributes inherited from DSS28db
receiver - receivers which provide data sessions - dict of sessions obtained with ‘get_session’
Methods Summary
get_session_plotter
(year, doy)get IDs for an observing session
Methods Documentation
-
get_session_plotter
(year, doy)¶ get IDs for an observing session


public class LocalHistory
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
protected class |
LocalHistory.RadioListener
To listen to the radio buttons.
|
| Modifier and Type | Field and Description |
|---|---|
protected java.awt.event.ActionListener |
actionListener
The action listener.
|
protected static int |
BACK_PENDING_STATE |
protected int |
currentURI
The index of the current URI.
|
protected static int |
FORWARD_PENDING_STATE |
protected javax.swing.ButtonGroup |
group
The button group for the menu items.
|
protected int |
index
The index of the first history item in this menu.
|
protected javax.swing.JMenu |
menu
The menu which contains the history.
|
protected static int |
RELOAD_PENDING_STATE |
protected static int |
STABLE_STATE |
protected int |
state
The current state.
|
protected JSVGViewerFrame |
svgFrame
The frame to manage.
|
protected java.util.List |
visitedURIs
The visited URIs.
|
| Constructor and Description |
|---|
LocalHistory(javax.swing.JMenuBar mb,
JSVGViewerFrame svgFrame)
Creates a new local history.
|
| Modifier and Type | Method and Description |
|---|---|
void |
back()
Goes back of one position in the history.
|
boolean |
canGoBack()
Whether it is possible to go back.
|
boolean |
canGoForward()
Whether it is possible to go forward.
|
void |
forward()
Goes forward of one position in the history.
|
void |
reload()
Reloads the current document.
|
protected void |
update()
Updates the state of this history.
|
void |
update(java.lang.String uri)
Updates the history.
|
protected JSVGViewerFrame svgFrame
protected javax.swing.JMenu menu
protected int index
protected java.util.List visitedURIs
protected int currentURI
protected javax.swing.ButtonGroup group
protected java.awt.event.ActionListener actionListener
protected int state
protected static final int STABLE_STATE
protected static final int BACK_PENDING_STATE
protected static final int FORWARD_PENDING_STATE
protected static final int RELOAD_PENDING_STATE
public LocalHistory(javax.swing.JMenuBar mb, JSVGViewerFrame svgFrame)
mb
- The menubar used to display the history. It must
contain one '@@@' item used as marker to place the
history items.svgFrame
- The frame to manage.public void back()
canGoBack()
is true.public boolean canGoBack()
public void forward()
canGoForward()
is true.public boolean canGoForward()
public void reload()
public void update(java.lang.String uri)
uri
- The URI of the document just loaded.protected void update()
Copyright © 2022 Apache Software Foundation. All Rights Reserved.


Your access token (Authorization Bearer) is:
None yet, press the button
Your refresh token is:
None yet, press the button
User Information from access token
Press to get access and refresh tokens
No Protected resource yet, press the button
Get Protected EndPoint Data


B.C. police watchdog looking into death of shoplifting suspect in Penticton
by Steve ArstadA man recently arrested by Penticton RCMP for shoplifting has died in custody and now the province's police watchdog has begun an investigation.
The Independent Investigations Office of B.C. announced today, Nov. 18, it is investigating after a suspected shoplifter died in hospital.
The man was arrested by Penticton RCMP on the morning of Nov. 8 following a theft from a store in Penticton, according to an Independent Investigations Office media release. The unidentified man resisted arrest, sustaining a minor head injury and was taken to hospital. The suspect later left the hospital and had to be returned later by police.
The man was admitted to hospital again where his condition deteriorated. He died six days later on Nov. 14.
The B.C. Coroners Service is also investigating to determine "how, where, when and by what means he came to his death," the investigations office says.
The IIO investigation will determine what role, if any, the officers' actions or inactions may have played in the man's death.
The IIO looks into officer-related incidents that result in serious harm or death.


We are organizing a workshop on February 19th and 20th, 1996 to discuss the the formation of a form for parallel and sparse BLAS. This will be a follow on to the discussions that took place On November 13th and 14th, 52 people attended a Workshop on Parallel BLAS and Related Interfaces at the Univertsity of Tennessee and the birds of a feather session that took place at the Supercomputer 95 meting in San Diego in December.
The existing BLAS have proven to be very effective in assisting portable, efficient software for sequential and some of the current class of high-performance computers. We would like to investigate the possibility of extending these standards to provide greater coverage of sparse matrices and provide additional facilities for parallel computing.
The purpose of this meeting is to review the findings of the Workshop in November and the BOF at the Supercomputer 95 confernece and to begin a forum to develop calling sequences for a set of low-level computational kernels for the parallel and sequential settings, as well as standards for basic matrix data structures, both dense and sparse.
| Monday February 19 | |
|---|---|
| Embassy Suites Airport Nashville | |
| 12:00 noon | Registration |
| 1:00 pm | Introduction |
| Why we are here | |
| Decide on subgroups | |
| 2:00 pm | Subgroups meet |
| 3:30 pm | Break |
| 4:00 pm | Subgroups meet |
| 6:00 pm | Dinner |
| Tuesday February 20 | |
| Embassy Suites Airport Nashville | |
| 9:00 am | Subgroups meet |
| 10:30 am | Break |
| 11:00 am | Subgroups meet |
| 12:00 pm | Lunch |
| 1:00 pm | Discussion of subgroups |
| 2:30 pm | Break |
| 3:00 pm | Summary and Wrap-up |
| 4:00 pm | End of meeting |
If you would like to handout reports or documents during the workshop, please bring the material with you. We will not be able to reproduce large volumes of material.
We estimate an attendance of 40 persons at the maximum.
We have made arrangements with the Embassy Suites (Airport).
When making arrangements tell the hotel you are associated with the PBLAS Workshop. The rooms will cost $94/night for a suite. Included in the rate is complimentary cooked to order breakfast and a 2 hour beverage break in the evening.
There will be a $75.00 registration fee, payable at the meeting, to cover the meeting room, reception, and refreshments during the breaks. Included in the registration fee will be dinner on Monday and lunch on Tuesday.
Please let me know if you are planning to attend.
For background information see: background
For a preliminary set of forum rules for discussion see: rules