Warwick Poole<EMAIL_ADDRESS>A simple cli tool for interacting with Co-op (coopapp.com) the group collaboration tool from Harvest (www.getharvest.com).
MIT bitches.
gem install coop_cli
First, set up your configuration file at ~/.coop_cli (set to chmod 600 on creation) to contain your username, password, group ID and optional (coopapp.com/api/statuses) Cobot Key
coop_cli -u<EMAIL_ADDRESS>-p happypants -g 1234 -k<PHONE_NUMBER>003030 initconfig
Alternatively you can specify/override these at runtime like a pirate.
Now to post to Co-op as your user:
coop_cli post "My horse is thirsty @bob"
Or, pirately:
coop_cli -u<EMAIL_ADDRESS>-p happypants -g 12345 post "Hey @tim, may I have this dance?"
Now to post to Co-op as Cobot
coop_cli post -c "Building on fire. Everyone panic. Thanks."
Or, pirately:
coop_cli -k<PHONE_NUMBER>9723387 post -c "Sharks have escaped. Self destruction in 5 minutes."
Generate this with
coop_cli rdoc
After you have described your command line interface


As the final chapter in this book, we'll take a look at some of the basics of packaging and publishing Node.js addons. While much of the workflow follows the same patterns as publishing normal Node.js modules (JavaScript), there are some particulars - relating to compiling C++ code - that we must be aware of. As a first step, let's review some of the important aspects of our build tool of choice - node-gyp
- and see how to publish these addons. We'll then take a look at how to ensure our addons compile and install on a wide variety of end-user machines. Finally, we'll take a look at some of the alternatives to node-gyp
.
The code above in this chapter is available in full in the nodecpp-demo
repository at https://github.com/freezer333/nodecpp-demo, under the "Packaging" section.
node-gyp
basicsThroughout this book we've built all our addons using node-gyp
, which is a Node.js program that wraps the gyp
build tool system created by Google. gyp
itself (Generate your own project) is geared towards allowing developers to setup projects/dependencies in a platform agnostic way - rather than maintaining project files for Visual Studio (projects) and Linux/OS X toolchains. The node
in node-gyp
is what builds in the support for setting up projects that output actual Node.js addons.
If you've made it this far, hopefully you've built a few (at least!) of the addons described in previous chapters - which means not only have you installed node-gyp
, but you've also installed the proper dependencies for your platform.
node-gyp
uses Python for part of it's build process, but it is not compatible with Python 3 - you must have a 2x version installed on your machine. They can be installed side-by-side, so if you want Python3 too - it's not a problem.make
and clang++
. On OS X, these are installed when you install XCode. On Windows, you need Visual Studio installed on your system.Once you have those setup (and on your path), you can install node-gyp
using npm
. Be sure to install it globally!
$ npm install node-gyp -g
All our addons have a binding.gyp
file, and we've already seen some rather complex ones. At it's core, the binding.gyp
file simply specifies a target name and a list of C++ source code files to build.
{
"targets": [
{
"target_name": "hello_addon",
"sources": [ "hello.cpp" ]
}
]
}
node-gyp
can be used to simply create project build files (for the given platform) by issuing node-gyp configure
. On Windows, this would create the necessary .vsprojx
file for Visual Studio to compile the addon - on OS X or Linux it will create a Makefile
. Issuing a node-gyp build
will run the compiler and generate the addon. You of course can do both at the same time.
$ node-gyp configure build
We've been through this before, but what if we want to distribute our addon? We'll start with a really simple addon - one using no C++ library dependencies, standard (pre C++11) C++, and no platform specific API calls.
#include <node.h>
using namespace v8;
void Method(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
Local<String> retval = String::NewFromUtf8(isolate, "hello");
args.GetReturnValue().Set(retval);
}
void init(Local<Object> exports) {
NODE_SET_METHOD(exports, "hello", Method);
}
NODE_MODULE(hello_addon, init)
Up until this point in the book, the next step has always been to immediately begin to create a JavaScript source file that started to use the addon. Let's take a step back however - addons should be reusable and distributable - right? So before writing JavaScript that calls the addon, let's package the addon up so we can treat it as a standalone module. To do that, we need a package.json
file of course!
Let's create a real simple one:
{
"name": "hello-world-nodecpp",
"version": "1.0.0",
"main": "./build/Release/hello_addon",
"gypfile": true,
"author": "Scott Frees<EMAIL_ADDRESS>(http://scottfrees.com/)",
"license": "ISC"
}
Notice the inclusion of gypfile
however - this is important - it tells anything consuming the package.json
file (such as npm
) that there is a build process that must be performed before using the module. Notice also the entry for main
, it is pointing npm
to the actual location where the addon will be created - which is where we've been hardcoding require
statements to throughout this book.
Currently there should be three files in a directory called hello
:
/hello
|
|--- hello.cpp
|--- binding.gyp
|--- package.json
This is all we need to have a standalone module. Let's now create a new directory (at the same level as /hello
called /demo
and create a Node.js program that specifies the hello-world-nodecpp
module we've created as a dependency. Instead of hardcoding filepaths in our JavaScript program, we'll utilize npm
's ability to use local module dependencies.
Let's create our directory and add an index.js
and another package.json
file for the demo program:
/hello
|
|--- hello.cpp
|--- binding.gyp
|--- package.json
/demo
|
|--- index.js
|--- package.json
Inside /demo/package.json
we will add a local dependency (supported by npm
versions 2+:
{
"name": "demo",
"version": "1.0.0",
"main": "index.js,
"author": "Scott Frees<EMAIL_ADDRESS>(http://scottfrees.com/)",
"license": "ISC",
"dependencies": {
"hello-world-nodecpp": "file:../hello"
}
}
Here's how we'd use the module in index.js
:
var say = require('hello-world-nodecpp');
console.log( say.hello() );
While within the demo
directory, let's do an npm install
. npm
will interrogate the package.json
file and see the local hello-world-nodecpp
dependency. npm
will then read /hello/package.json
and see that there is a gypfile
flag, and build the addon. Note, this process will actually put the addon binary within /demo/node_modules
directory. Now that the addon is built and copied into /node_modules
, we can run the program with node index.js
and we'll see our addon happily greets us.
$ node index.js
hello
$
The key takeaway from this segment is the creation of the package.json
file which directly points to the addon at it's entry point. When consuming (require
ing) programs declare the addon as a dependency, npm
takes care of the rest (executing node-gyp
). Our addon can now be required cleanly, without specifying file paths in our JavaScript code.
npm
While we used hello-world-nodecpp
as a local dependency above, there is nothing stopping us from publishing this addon now to the global npm
registry. Let's go ahead and pollute the registry with yet another hello world module!
# From within `/hello`
$ npm publish
+<EMAIL_ADDRESS>The npm publish
command requires some parameters from you, such as your account with npmjs.org
credentials. If youv'e never published anything to npm
, then you might have some configuration to do (see https://docs.npmjs.com/getting-started/publishing-npm-packages for help setting this up). You can head over to https://www.npmjs.com/package/hello-world-nodecpp to see the published result.
Now of course, we can change our demo/package.json
to link to the npm registry itself.
{
"name": "demo",
"version": "1.0.0",
"main": "index.js,
"author": "Scott Frees<EMAIL_ADDRESS>(http://scottfrees.com/)",
"license": "ISC",
"dependencies": {
"hello-world-nodecpp": "^1.0.0"
}
}
All the standard version conventions inherent to npm package management apply to addons - there is nothing new to learn. Now anytime anyone links to hello-world-nodecpp
the C++ source code will be downloaded to their machines, built with node-gyp
and their local C++ toolchain, and be usable as a native binary.
Most larger addons will likely make use of NAN to facilitate cross-node-version compatibility, which makes even more sense if you plan on distributing addons. Thankfully, declaring NAN as a dependency is fairly straightforward - we must indicate the dependency in two places - (1) our binding.gyp
file so the compiler can use NAN and (2) our package.json
file, which will instruct npm
to fetch the NAN library on install.
Here is the C++ addon - a slight variant on the previous hello world example:
#include <nan.h>
using namespace Nan;
using namespace v8;
NAN_METHOD(Method) {
info.GetReturnValue().Set(
New<String>("nan hello").ToLocalChecked());
}
NAN_MODULE_INIT(Init) {
Nan::Set(target,
New<String>("hello").ToLocalChecked(),
GetFunction(New<FunctionTemplate>(Method)).ToLocalChecked());
}
NODE_MODULE(hello_nan_addon, Init)
In Chapter 6 we saw how to include NAN in the binding.gyp
file - here it is again:
{
"targets": [
{
"target_name": "hello_nan_addon",
"sources": [ "hello_nan.cpp" ],
"include_dirs" : [
"<!(node -e \"require('nan')\")"
]
}
]
}
Finally, we add nan
to the module's package.json
file:
{
"name": "hello-world-nan-nodecpp",
"version": "1.0.0",
"main": "./build/Release/hello_nan_addon",
"gypfile": true,
"author": "Scott Frees<EMAIL_ADDRESS>(http://scottfrees.com/)",
"license": "ISC",
"dependencies": {
"nan": "^2.3.3"
}
}
Instead of further polluting the npm registry, let's just add a local dependency to our /demo
program and utilize this addon also.
{
"name": "demo",
"version": "1.0.0",
"main": "index.js",
"author": "Scott Frees<EMAIL_ADDRESS>(http://scottfrees.com/)",
"license": "ISC",
"dependencies": {
"hello-world-nodecpp": "^1.0.0",
"hello-world-nan-nodecpp": "file:../hellonan"
}
}
var say = require('hello-world-nodecpp');
var nansay = require('hello-world-nan-nodecpp');
console.log( say.hello() );
console.log( nansay.hello() );
From the /demo
directory, do another npm install
to build the addon, and you are all set:
# From within `/demo`
$ npm install
.... will build the new addon...
$ node index.js
hello
nan hello
So far we've used basic C++ in our addons, but at many points in this book we utilized some features of C++ that are part of the C++ 11 (or 14, 17..) standard. The C++11 standard (especially) is common place, however many compilers require special incantations to enable it - which makes configuring node-gyp
correctly for each platform pretty critical. Of course, the target machine where your add on is being installed must have a C++ toolchain that supports C++ 11 to make things work, but let's now look at what else we need to do. While there are undoubtedly many more possible configurations and options, I'll present the additions to binding.gyp
that I've found to cover the most common platform configurations.
Let's start by creating a needlessly complicated Add
function that utilizes a lambda
and auto
. I stress that this is a needlessly complicated way of adding two numbers - but it certainly requires C++11! I'll also continue to use NAN.
#include <nan.h>
using namespace Nan;
NAN_METHOD(Add) {
auto sum = [](int x, int y) { return x + y; };
int a = To<int>(info[0]).FromJust();
int b = To<int>(info[1]).FromJust();
Local<Number> retval = Nan::New(sum(a, b));
info.GetReturnValue().Set(retval);
}
NAN_MODULE_INIT(Init) {
Nan::Set(target, New<String>("add").ToLocalChecked(),
GetFunction(New<FunctionTemplate>(Add)).ToLocalChecked());
}
NODE_MODULE(cpp11, Init)
Assuming we also create a standard binding.gyp
and package.json
file for this addon, let's add this to /demo
and try to install. If you are compiling on OS X or Linux with the latest compilers, it's fairly likely that this code will indeed compile just fine. If you are using versions of Xcode or clang/g++ that are a bit old however, it's likely you will need to take some additional steps.
For backwards compatibility, most versions of g++ and clang++ require c++11 to be specifically targeted. Generally I simply add a general entry under cflags
in binding.gyp
to ensure the standard is used. You could elect to put this in a condition specifically targeting Linux, however since it doesn't do any harm on any other platforms, I recommend simply adding it directly
"cflags": ["-std=c++11"],
You of course can add any number of additional flags here as well, it is an array.
For users running OS X, you won't be able to count on them having the latest version of Xcode installed. For earlier versions of Xcode, C++ 11 and the standard library must be specifically included. gyp
allows us to add options specific for OS X as a conditional - simply include the following to allow a wide range of Xcode versions to successfully compiler your addon:
"conditions": [
[ 'OS=="mac"', {
"xcode_settings": {
'OTHER_CPLUSPLUSFLAGS' : ['-std=c++11','-stdlib=libc++'],
'OTHER_LDFLAGS': ['-stdlib=libc++'],
'MACOSX_DEPLOYMENT_TARGET': '10.7' }
}
]
]
Happily, there isn't much for us to do for Windows. While we can certainly pass Visual Studio compiler flags in through gyp
(msvs_settings
), each version of Visual Studio will automatically apply the latest C++ features that it supports. Of course, if the version of Visual Studio installed on the target machine does not support the specific C++ feature you are using in your addon, there is little that gyp
can do to help.
Rule of thumb: When developing addons, realize they will be compiled on the end-users' machine - needless use of advance language features might be fun, but it can haunt you!
Most of the addons in this book have been contained within one single C++ file. Many addons will be built from potentially dozens of C++ files, and this is fully supported by node-gyp
, however be warned - if you have a complex build/dependency setup you may find node-gyp
a bit uncooperative, it supports simple builds well, but can get tedious and difficult quickly. If you have a complex C++ build setup, you are likely using cmake
or similar, and might find node-gyp
frustrating - see the section below on cmake-js
for some refuge.
Let's create a simple addon that adds two numbers passed from Node.js, but does this by utilizing a sum
function that is contained in a separate C++ module (cpp file and header). Again - needlessly complicated, for demonstration purposes:
// contents of add.h
int sum(int, int);
// contents of add.cpp
#include "add.h"
int sum(int x, int y ) {
return x+y;
}
// contents of addlib.cpp - entry point for addon
#include <nan.h>
#include "add.h"
using namespace Nan;
using namespace v8;
NAN_METHOD(Add) {
int a = To<int>(info[0]).FromJust();
int b = To<int>(info[1]).FromJust();
Local<Number> retval = Nan::New(sum(a, b));
info.GetReturnValue().Set(retval);
}
NAN_MODULE_INIT(Init) {
Nan::Set(target, New<String>("add").ToLocalChecked(),
GetFunction(New<FunctionTemplate>(Add)).ToLocalChecked());
}
NODE_MODULE(cpp11, Init)
With additional source code file, we just need to add the files to the sources
array in the binding.gyp
file:
{
"targets": [
{
"target_name": "addlib",
"sources": [ "add.cpp", "addlib.cpp" ],
"include_dirs" : [
"<!(node -e \"require('nan')\")"
]
}
]
}
When publishing addons, all C++ source code that is needed to compile the addon must be published. In the example above, this happens automatically - however if your addon has dependencies outside the working directory you can run into trouble. It's wise to brush up on how npm
determines which files are part of the published package, which is described in npm
's documentation here: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package.
It's important to note that everything above is predicated on the fact that you intend to have your users "compile" the addon when they do an npm install
. In most cases, this makes sense - Node.js is usually used in programs that are not meant to directly run on end users machines - in most cases your addon will be run on a machine that you can assume a developer has access to and can install the prerequisite toolchain on. Node.js is expanding though, and especially with the advent of desktop applications being developed with NW and electron, you could very well end up seeing your addon being used on "grandma's" computer too - and it's unlikely grandma has a C++ toolchain installed!
If you want to publish addons in pre-built form you must consider usage on Windows, Linux, and OS X. While you can role your own solution to this, there exist some helpful tools to simplify the process. node-pre-gyp
is one such tool, which can be installed on the developer's machine and facilitates building and installing binary dependencies. While out of the scope of this book, it's worth taking a look at if you plan to create addons that may have non-technical users.
node-gyp
is built on Google's gyp
tool. It hasn't always been the method of choice when creating addons, in earlier (pre v0.8) versions of Node a program called node-waf
was used, and required different build files. While there is no reason to believe node-gyp
is going away soon (as of mid-2016), there are no guarantees in life. Furthermore, gyp
leaves a lot to be desired for complex C++ builds - not the least of which is documentation (gyp
has documentation, but it's nowhere near as comprehensive as other C++ build tools). For these reasons, seasoned C++ developers wishing to support complex build systems may prefer alternatives to node-gyp
.
The leading alternative is cmake-js
. As it's name suggests, it uses the immensely popular and ubiquitous CMake
build tool. The advantage of cmake-js
is that rather than using binding.gyp
, it uses CMake
configuration files and is likely compatible with existing C++ developer workflows. CMake
has it's own modules system, extremely comprehensive documentation, and is not dependent on Python. Perhaps the biggest advantage is that it makes including the Boost C++ library as a dependency to your addon fairly straightforward - something that is extremely difficult to pull off using node-gyp
.
CMake isn't the focus of this book, but if you are an experienced CMake user or C++ developer it is likely a really good idea to invest some time learning more about CMake and cmake-js
. It's a solid alternative to node-gyp
.
Information about the tools can be found at the following links:
cmake-js
on npm: https://www.npmjs.com/package/cmake-jscmake-js
's wiki: https://github.com/cmake-js/cmake-js/wiki Contains tutorials for building addons with a variety of dependencies and targets (NW.js, Qt Creator)boost-lib
on npm: https://www.npmjs.com/package/boost-lib Utility for adding Boost to your Node.js C++ addons.There are many more resources online as well. Be sure to check out Appendix A as well, were you'll see how to use node-gyp
to build a variety of different target types such as executables and shared libraries.


Spring-boot JPA CRUD API Application
This application demonstrates a Spring Boot Web-app that performs CRUD operations using Spring Data JPA, on an H2 (In-memory) Database.
This is an Eclipse Project.
Running the app: Options
- Execute the class from command-line - org.sameerean.springcrud.boot.Application
- From Eclipse, Run As Java Application
URL for end-points
- http://localhost:8080/user
- http://localhost:8080/user/u12234


400 SW 6TH AVENUE
PORTLAND, OREGON
There are no test results posted for this place yet.
Log in to add a test result
Edit placeinfo
Log in towatch place


{% extends "task.html" %} {% block styles %} {{ super() }} {% endblock %} {% block scripts %} {{ super() }} {% endblock %} {% block task %}
Instructions: Review the following text and copy edit it: improve its readability and accuracy and ensure that it has no errors (spelling, grammar, or style), omissions, inconsistencies, or repetition.
{% endblock %}


ScoreKeeper
Number of Players :
Save
* Change players names by clicking on the Player # text.
Created by
Rami GB
1
2
3
4
5
6
7
8
9
0
-
C


expr.js Test page
Data:
{"a":1,"b":{"c":2,"d":"test"}}
Output:
press enter to evaluate
You can use:
+, -, *, /, and, or, =, >, <, >=, <=


Alien: Resurrection (1997) Sigourney Weaver, Winona Ryder, Ron Perlman, Dominique Pinon, Michael Wincott, Dan Hedaya. Directed by Jean-Pierre Jeunet. ** and one half (out of ***** stars)
Review by Ed Johnson-Ott For more reviews, go to www.nuvo-online.com and click on "film."
Handed the reigns of the moribund "Alien" franchise, French director Jean- Pierre Jeunet ("City Of Lost Children") faced the daunting task of breathing life into a horror series that virtually died in its last installment. The pallid "Alien 3" climaxed with Ellen Ripleys swan dive into an ocean of fire, a sacrifice to protect humanity from the alien growing within her own body. With the heroine fried and most fans of the series either angered or bored, whats left to do? Raise the dead, of course, and thats just what Jeunet and writer Joss Whedon have done, with some intriguing side trips along the way.
"Alien: Resurrection" contains the requisite extended chase scenes, but thats the least interesting part of the movie. The appeal of the film lies in the fringes, as Jeunet employs grotesque visions and kinky sexual imagery to flirt with some intriguing notions, including what exactly constitutes the very nature of identity. While too cold and formulaic to fully satisfy, "Resurrection" has enough darkly rewarding moments to warrant a visit.
A little history for those who missed the first three films. The aliens are incredibly vicious predators with acid literally coursing through their veins. An alien grows by emerging from a pod and springing onto the face of an unwitting host, then shooting its seed down the gullet of the victim. After an incubation period, it bursts through the hosts chest and scurries off to finish the growth process. Rumor has it that telemarketers are bred the same way.
The film begins with the quasi-resurrection of Ellen Ripley (Sigourney Weaver), depicted in a series of stylish fade-ins. On a military spaceship 200 years after the last film, scientists clone Ripley in order to retrieve the alien queen from her body.  Following the surgical extraction of the queen, Ripley 8 (the first seven clone attempts were nightmarish failures) is kept alive for curiosity value alone. A disdainful officer spares her life, while declaring "As far as Im concerned, Number 8 is just a meat by-product."
Ripley 8 grows, and we learn that, due to the alien DNA used in the cloning process, she isnt entirely human. Thanks to the racial memory of the aliens, the clone retains the memories of the original Ripley, but her strange smile, reptilian movements and acidic blood make it clear that she is something very, very different.
Enter the Betty, a commercial freighter crewed by mercenaries. Theyve hijacked the cryogenically-frozen bodies of a group of miners, to sell them as hosts for the first batch of aliens. However, one of the mercenaries, junior mechanic Call (Winona Ryder,) has a decidedly different agenda.
"Resurrections" action sequences move along well enough, particularly an underwater chase scene, but the characters are too disposable to be engaging on an emotional level. The blue-collar crew of the Betty is an unpleasant lot, sketchy stereotypes mostly, and its hard to look at them as much more than Alien Chow.
Thankfully, Sigourney Weavers enigmatic Ripley 8 is a fascinating creation. She clearly remembers who she was, but what exactly is she now? Did Ripleys soul make the jump to this new body, or is Ripley 8 just a Xerox, an alien hybrid with stolen memories? Weaver and Jeunet work well together, examining the whole notion of individual identity through this unique creature. Weaver gets to deliver a number of deadpan one-liners as well, adding a welcome touch of humor while maintaining the cryptic nature of the character.
Throughout the film, Jeunet toys with the freaky sexuality that has always been an undercurrent of the series. A scientist holds his lips close to an aliens face, separated only by protective glass, in one of the more obvious moments of perverse sensuality. A shrink would have a field day with the whole notion of face-hugging alien breeders, and Jeunet knows the real horror story lies there. Unfortunately, instead of pursuing that truly disturbing line, he returns to the tired chase format and, despite the inventive set pieces and rich Gothic-industrial art direction, weve seen this stuff too many times before. The horror of "Alien: Resurrection" doesnt come from the idea of monsters chasing us. It comes from the exploration of why we want them to.
copyright 1997, Ed Johnson-Ott
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


A hostname is a label or nickname that is assigned to a computer connected to a network and that is used to identify the machine in various forms of electronic communication within an internal network. Hostnames are also important because they form part of a computer’s Fully Qualified Domain Name (FQDN). Assigning a FQDN to a computer makes it reachable via the public Domain Name System (DNS), i.e. the Internet.
Internet standards for protocols mandate that component local host names may contain, only:
a
through z
(in a case-insensitive manner);0
through 9
; and-
).No other symbols, punctuation characters, or white space are permitted.
Practice Tip: In addition to the above technical requirements, the only practical requirement of a server’s hostname, for your environment(s), is that it should be something unique to the other servers within a particular domain.
Hostnames are composed of series of labels concatenated with dots, as are all domain names. For example, let’s break mail.google.com
into its component parts:
mail
is the host or local hostname; andgoogle.com
is the domain or parent domain name.Each label must:
This article assumes that you are familiar with Step Seven — Log In To Your Droplet
of How To Create Your First DigitalOcean Droplet Virtual Server.
To check your hostname, open a terminal or shell session and execute:
hostname
The current hostname, if any, will be displayed. Then, to check the existing FQDN, if any, execute:
hostname -f
which should yield a result such as localhost
(which signifies that no FQDN is set) or pbx.yourdomain.tld
.
So long as the above parameters are complied with, one can use just about any name as a hostname. Many server admins. use planets, places or loosely-labeled abbreviations of a particular server’s basic purpose, e.g., pbx
, web1
, web2
, mail
, ns1
(for nameserver) and so on. Feel free to have fun with hostnames, if you’d like.
A particular computer’s hostname can be changed at any time. To set the initial hostname or subsequently change it, execute the following commands in a terminal or shell session (obviously, you can use whichever text editor you wish; but this guide assumes that you have installed the vim text editor):
sudo vim /etc/hostname
sudo vim /etc/sysconfig/network
i
key and use the arrow keys on your keyboard to navigate the text area;Esc
key, on your keyboard, followed by these keystrokes: :
, w
, q
, and, finally, Enter
.If it exists, edit the file
/etc/default/dhcpcd
and comment out theSET_HOSTNAME
directive, by executing:sudo vim /etc/default/dhcpcd
Then, insert the
#
symbol at the beginning of the line that begins withSET_HOSTNAME=
, as shown, below:#SET_HOSTNAME=‘yes’
Finally, execute:
sudo service hostname restart
You can verify that the hostname was properly set by, again, executing:
hostname
In a terminal or shell, execute:
sudo vim /etc/hosts
Then, tap on the i
key and use the arrow keys on your keyboard to navigate the text area. Modify your hosts
file so that it resembles the following (obviously, substituting the hostname
, yourdomain
, tld
, and YourIP
values with your own):
<IP_ADDRESS> localhost.localdomain localhost
<IP_ADDRESS> hostname.yourdomain.tld hostname
YourIP hostname.yourdomain.tld hostname
To save & exit, tap the Esc
key, on your keyboard, followed by these keystrokes: :
, w
, q
, and, finally, Enter
.
You can verify that the FQDN was properly set by, again, executing:
hostname -f
If you want your remote server to be reachable over the internet via its FQDN, then you need to create the relevant DNS records. See How To Set Up a Host Name with DigitalOcean.


This module is contained in the mod_setenvif.c file, and is compiled in by default. It provides for the ability to set environment variables based upon attributes of the request.
The mod_setenvif module allows you to set environment variables according to whether different aspects of the request match regular expressions you specify. These envariables can be used by other parts of the server to make decisions about actions to be taken.
The directives are considered in the order they appear in the
configuration files. So more complex sequences can be used, such
as this example, which sets netscape
if the browser
is mozilla but not MSIE.
BrowserMatch ^Mozilla netscape BrowserMatch MSIE !netscape
Syntax: BrowserMatch regex envar[=value] [...]
Default: none
Context: server config
Override: none
Status: Base
Module: mod_setenvif
Compatibility: Apache 1.2 and above (in Apache 1.2
this directive was found in the now-obsolete mod_browser module)
The BrowserMatch directive defines environment variables based on the User-Agent HTTP request header field. The first argument should be a POSIX.2 extended regular expression (similar to an egrep-style regex). The rest of the arguments give the names of variables to set, and optionally values to which they should be set. These take the form of
In the first form, the value will be set to "1". The second will remove the given variable if already defined, and the third will set the variable to the value given by value. If a User-Agent string matches more than one entry, they will be merged. Entries are processed in the order in which they appear, and later entries can override earlier ones.
For example:
BrowserMatch ^Mozilla forms jpeg=yes browser=netscape BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript BrowserMatch MSIE !javascript
Note that the regular expression string is case-sensitive. For cane-INsensitive matching, see the BrowserMatchNoCase directive.
The BrowserMatch and BrowserMatchNoCase directives are special cases of the SetEnvIf and SetEnvIfNoCase directives. The following two lines have the same effect:
BrowserMatchNoCase Robot is_a_robot SetEnvIfNoCase User-Agent Robot is_a_robot
Syntax: BrowserMatchNoCase regex envar[=value]
[...]
Default: none
Context: server config
Override: none
Status: Base
Module: mod_setenvif
Compatibility: Apache 1.2 and above (in Apache 1.2
this directive was found in the now-obsolete mod_browser module)
The BrowserMatchNoCase directive is semantically identical to the BrowserMatch directive. However, it provides for case-insensitive matching. For example:
BrowserMatchNoCase mac platform=macintosh BrowserMatchNoCase win platform=windows
The BrowserMatch and BrowserMatchNoCase directives are special cases of the SetEnvIf and SetEnvIfNoCase directives. The following two lines have the same effect:
BrowserMatchNoCase Robot is_a_robot SetEnvIfNoCase User-Agent Robot is_a_robot
Syntax: SetEnvIf attribute regex envar[=value]
[...]
Default: none
Context: server config
Override: none
Status: Base
Module: mod_setenvif
Compatibility: Apache 1.3 and above
The SetEnvIf directive defines environment variables based on attributes of the request. These attributes can be the values of various HTTP request header fields (see RFC2068 for more information about these), or of other aspects of the request, including the following:
Some of the more commonly used request header field names include Host, User-Agent, and Referer.
Example:
SetEnvIf Request_URI "\.(gif)|(jpg)|(xbm)$" object_is_image SetEnvIf Referer www\.mydomain\.com intra_site_referral
The first will set the envariable object_is_image if the request was for an image file, and the second sets intra_site_referral if the referring page was somewhere on the www.mydomain.com Web site.
Syntax: SetEnvIfNoCase
attribute regex envar[=value] [...]
Default: none
Context: server config
Override: none
Status: Base
Module: mod_setenvif
Compatibility: Apache 1.3 and above
The SetEnvIfNoCase is semantically identical to the SetEnvIf directive, and differs only in that the regular expression matching is performed in a case-insensitive manner. For example:
SetEnvIfNoCase Host Apache\.Org site=apache
This will cause the site envariable to be set to "apache" if the HTTP request header field Host: was included and contained Apache.Org, apache.org, or any other combination.


Steps to follow for contributing to this Sandbox Project:
[Scroll down and click on the steps given below to learn, how to perform them]Step 1: Install Git on your PC
Step 2: Fork and Commit Fork this repository
Step 3: Clone your forked repo on your own PC
Step 4: Change anything you want
Step 5: Push changes to your repo
Step 6: Create a pull request to main repo
Email to -


Fire breaks out aboard tanker in Singapore waters off Pedra Branca: MPA
SINGAPORE: A fire broke out aboard a Panama-flagged tanker in Singapore waters on Thursday (Nov 7), causing the crew members to be evacuated, said the Maritime and Port Authority of Singapore (MPA) in a statement.
MPA said it was informed at 1.10pm that a fire had broken out onboard the tanker HOYU around 9.7 nautical miles northeast from Pedra Branca.
The Singapore Civil Defence Force, Singapore Police Coast Guard and the Republic of Singapore Navy deployed vessels to assist the HOYU crew, the statement added.
All 18 crew members have been safely evacuated and the fire has been put out, it said.
There were no reports of injury or pollution and shipping traffic was unaffected.
MPA is investigating the incident, it added.
Refinitiv Eikon shipping data showed that the tanker was fully laden with an unspecified oil cargo and was bound for the Philippines, said Reuters.
Editor's note: Photographs of the incident provided by MPA have been removed from this article at their request.


?Ludwigia
octovalvis
(Jacq.)
Raven
Determined
by
T.P.
Ramamoorthy
1980
Missouri
Botanical
Garden
REVISION
OF
JUSSIAEA
J.
suffruticosa
L.
Philip
A.
Munz
,
1939
PLANTyC
UTOWAN>Ř.
PLANTS
COLLECTED
BY
CHAS.
F.
MILLSPAUGH,
M.
D.,
DURING
THE
WEST-INDIAN
CRUISE
OF
THE
AUXILIARY
S.
S.
YACHT
“UTOWANA"
DECEMBER
1898
TO
MARCH
1899.
ALLISON
V.
ARMOUR,
Esq.,
Owner
and
Master
port
antonio;
jan.
28-feb.
6.
JAMAICA.
NEW
YORK
BOTANICAL
GARDEN.
01447451
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Sponsors
Sponsors provided essential support to PyCon conference. If you and your company are willing to support the Python community exchanges, please contact PyCon organizers (e-mail: stingchen@topgeek.org). Your Company Logo and Profile will be shown on home page and the "Sponsors" page at our official website .
Google is a search service provided, to provide advertising services to business customers focus on the profitability of the company.Search Google for its rapid, accurate and easy to use, etc., is recognized as the world's best search engine.
Tudou (Tudou.com) is China's earliest and most influential video-sharing site, is a Chinese online video industry's leading brands, is the world's first on-line video sharing websites.Wang Wei is Tudou founder and CEO.
Tudou on April 15, 2005 formally launched, every day more than 25 million unique users, 200 million monthly users, with more than 80 million registered users.August 17, 2011, Tudou in the U.S. NASDAQ stock code: TUDO.
From the first day of the establishment of potatoes, we believe that is, " Everyone is living the director "We aim to make creative program makers to create and share the freedom to make their programs appear in front of the user, will also allow each user can see at any time they want to see any program.
Tudou on April 15, 2005 formally launched, every day more than 25 million unique users, 200 million monthly users, with more than 80 million registered users.August 17, 2011, Tudou in the U.S. NASDAQ stock code: TUDO.
From the first day of the establishment of potatoes, we believe that is, " Everyone is living the director "We aim to make creative program makers to create and share the freedom to make their programs appear in front of the user, will also allow each user can see at any time they want to see any program.
CCP is recognized for the creation of revolutionary gaming experiences designed with a unique combination of stunning artistry and advanced technology. Best known as the independent developer and publisher of EVE Online, the critically-acclaimed, space-based massively multiplayer online game (MMO) and PC Gamer's 2009 'MMO of the Year', two additional titles are now in production: World of Darkness, a dark, immersive MMO based on the legendary roleplaying franchise of the same name; and DUST 514, the groundbreaking massively multiplayer online persistent shooter (MMOPS) set in and linked to the EVE Online universe. Founded in Iceland in 1997, CCP is privately held and has offices in Atlanta, Newcastle, Reykjavik and Shanghai with a datacenter in London. More information can be found at www.ccpgames.com.
As a leading interactive entertainment media company, by Shanda Shanda, Shanda Literature, Shanda Online and other subjects and other businesses to provide customers with a wide range of interactive entertainment content and services.Other investment companies also offer a grand network video, family chess platform, e-sports platform, mobile interactive entertainment, online animation, online music, etc., suitable for different age groups of users of interactive entertainment products, the majority of users.
Kingsoft Network Technology Co., Ltd. was established in November 2010, is headquartered in Beijing, its predecessor is the security software Kingsoft Co., Ltd. and cattle.The two companies completed in October 2010, merger integration, the establishment of a new network Technology Co., Ltd. Jinshan.Kingsoft Internet Security Kingsoft Co., Ltd. has inherited a strong scientific and technological R & D capabilities and beef products on the Internet's keen ability to respond to millions of Internet users to a variety of Internet security as the core application services.Kingsoft Kingsoft Internet Security Laboratory and R & D centers set up in Zhuhai.
Douban was established in March 2005, now has 53 million registered users.Douban has been committed to helping urban populations found something useful in life, by the book video, group, station, city, watercress and said so many products and services related to mobile applications to different areas of city life.
Sina is a service in China and for global Chinese communities, online media and mobile value-added service providers.Sina has a number of localized web sites targeting Greater China and overseas Chinese mission, through its business lines: providing online news and content services, Sina (SINA.com), to provide micro-blog service microblogging (Weibo.com ) to provide mobile wireless value-added services Sina (SINA Mobile), and other business, the majority of users, including regional portals, mobile value-added services, microblogging, blog, audio and video streaming, photo album sharing, online games, e-mail, search, classified listings, fee-based services, e-commerce and enterprise e-solutions, including a range of services.
stroll treasure open source platform, not just free web hosting, we are committed to leading technology, to release all our dreams about python, next-generation technology allows incredible application types have today can be perfect show.Open platform also allows you to freely create, through the platform of the interface and source code, you can easily create websites on the platform and applications, and even change the platform itself.In addition, stroll treasure open operating policies allow you to operate on the platform of your product, through the platform of operational functions, for your users to create happiness at the same time, to achieve their own happiness.Loyal to the utility of the United States, or will be happy to early adopters of new, strange, cool, and create a new world is open-source platform stroll treasure.
S & P Information Technology Co., Ltd. Huzhou fast, is a software company dedicated to technology research and development, and solution providers.Has a leading ultra-high performance server technology, and high-performance intelligent database, game engine and other products.Involving artificial intelligence, e-commerce and other fields.
Turing's Posts & Telecom Press - standing on the shoulders of giants, to create the most professional IT book publishing (writing / translation) service platform and look forward to working with you!
Gensee as interactive exhibition is a joint venture by the world's leading venture capital investment in high-tech enterprises; committed to the operation activities of the world's leading network and virtual meeting platform; to break the traditional pattern of a virtual industry, first mixed transmission mode, the audio and video , PPT and interactive content simultaneously presented to the audience, better to restore the scene of the real atmosphere, a completely new experience.
Media Support
InfoQ.com (Information Queue) is a moment of change in the enterprise software development and innovation in the field of independent online community, the reader audience is mainly technical architect, technical team leader (senior developer), and project managers.Experts from the various technical fields through the latest news, technical articles, video interviews, video lectures and mini-books, InfoQ as Java,. NET, Ruby, SOA, agile, architecture, and the seven communities provide first-class operation and maintenance information.InfoQ station was officially launched worldwide on June 8, 2006, InfoQ Chinese station was officially launched on March 28, 2007, to the communities we serve to promote the progress of the primary mission.
CSDN was founded in 1999, is China's largest Chinese IT knowledge services group, focused on IT information dissemination, technology exchange, education and training, and professional and technical personnel services.Has more than 18 million registered members, 10,000 CTO, 50 million registered companies and partners, the world's Chinese website, ranking 27th.For a long time, CSDN technical perspective to the development of IT industry concern, to share the depth of growth promoting industrial technology, is committed to promoting technological innovation, promote sharing, openness and collaboration, to create high-quality Chinese IT technology platform.
PyCon.Org is an international community for the Python programming language holds several conferences each year.
in every major cities, including Beijing, Shanghai, Guangzhou, Hangzhou, Xi'an, Shenzhen, Nanyang and other places, volunteers have formed by the Google developer community GTUG (Google Technology User Group). GTUG all developing technologies and products for Google, the Internet technology, mobile technology, open source development technologies and application development and other interested member of the community.They often organize offline exchanges.We encourage you to take part in the GTUG community, to know more like-minded developers, mutual learning and exchange.
CPUG is a formally established China's first non-governmental organizations for Python users, the majority of Python fan driven promotion and development of Python for the set up. Now CPUG provides Python-related resources and services, are interested can join us and use our services.We accept all kinds of support and sponsorship, but also willing to work with you, working with Python development.
TopGeek organization is an advanced software and Internet technologies for staff organization, focused on some of the new software and Internet technology trends, development of ideas and experience.
individualist tradition in the present technology, the industry divided by language or community-based organizations circles of the state, we insist that the circle formed by the practice of technical schools can not meet the needs of senior technical staff.
We want to break the technology division, helping community members to explore new ideas, learn from each other, sharing of resources.Mature technology staff to resolve some common issues for further development, the formation of some good circle of friends.
individualist tradition in the present technology, the industry divided by language or community-based organizations circles of the state, we insist that the circle formed by the practice of technical schools can not meet the needs of senior technical staff.
We want to break the technology division, helping community members to explore new ideas, learn from each other, sharing of resources.Mature technology staff to resolve some common issues for further development, the formation of some good circle of friends.
Woodpecker.org.cn is an open collaborative organization, attention to the Python language and the development of a variety of applications.
Gensee as interactive exhibition is a joint venture by the world's leading venture capital investment in high-tech enterprises; committed to the operation activities of the world's leading network and virtual meeting platform; to break the traditional pattern of a virtual industry, first mixed transmission mode, the audio and video , PPT and interactive content simultaneously presented to the audience, better to restore the scene of the real atmosphere, a completely new experience.
Gensee is the webcast service provider for PyCon.
Gensee is the webcast service provider for PyCon.


We are in this business for one reason, to help you build a breakthrough company. We believe technology is fundamentally good, startups are inspiring, and there is joy in facilitating greatness. The future is not something that you discover, it’s something you design.


Image on the cover page.
Either upload a cover graphic and bundle it with the plug-in, or read the cover graphic file name from map
metadata field:
<data name="cover-image">
<image href="cover.svg"/>
</data>
Or use topic as cover topic:
<topicref href="cover.dita" outputclass="front-cover" toc="no"/>


abstract fun notaryIdentities(): List<Party>
Returns network's notary identities, assuming this will not change while the node is running.
Note that the identities are sorted based on legal name, and the ordering might change once new notaries are introduced.


Power analysis for AB testing. The calculations are based on the Welch's unequal variances t-test, which is generally preferred over the Student's t-test when sample sizes and variances of the two groups are unequal, which is frequently the case in AB testing. In such situations, the Student's t-test will give biased results due to using the pooled standard deviation, unlike the Welch's t-test.
| Version: | 0.1.0 |
| Depends: | R (≥ 3.3.1) |
| Imports: | stats |
| Suggests: | testthat |
| Published: | 2017-06-06 |
| Author: | William Cha [aut, cre] |
| Maintainer: | William Cha <william.minseuk.cha at gmail.com> |
| BugReports: | http://github.com/williamcha/pwrAB/issues |
| License: | GPL (≥ 3) |
| URL: | http://github.com/williamcha/pwrAB |
| NeedsCompilation: | no |
| Materials: | README |
| CRAN checks: | pwrAB results |
| Reference manual: | pwrAB.pdf |
| Package source: | pwrAB_0.1.0.tar.gz |
| Windows binaries: | r-devel: pwrAB_0.1.0.zip, r-release: pwrAB_0.1.0.zip, r-oldrel: pwrAB_0.1.0.zip |
| OS X binaries: | r-release: pwrAB_0.1.0.tgz, r-oldrel: pwrAB_0.1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=pwrAB to link to this page.


Nolo on reaching top 4 in 'Idols SA': 'It was a miracle for me'
Cape Town – Nolo Seodisha reached the end of his Idols SA journey in the latest episode of the reality show.
The 26-year-old who hails from Soshanguve started the competition with his brother - who didn't make it to the top 17.
Nolo was a firm favourite from the beginning sailing through round after round.
We chatted to him about his Idols experience and found out what's next for the crooner.
You were one of two guys in the top 10. Did you think you would make it this far in the competition?
When I entered Idols, my main aim was to make it to the top 10. As soon as I got into the top 10, I was like 'This is actually what I wanted.' As every week passed, and I made it through to eventually four, it was all a miracle for me every week. I enjoyed it so much, and I learned a lot.
Do you feel as though you lost momentum as the competition continued because you set the bar so high for yourself in the beginning?
Some weeks the song choices were off, but I gave it my all every week. As for setting the bar too high, you have to have a good start; I think I came in nice, went out lovely. Everything happened as it was supposed to happen. It was a great experience.
Is there anything you would have changed about your final performances?
No, I enjoyed the two songs from last week, Let's Groove and the Lazy Song. For the second performance I got to wear sporty clothes, and chill – and I got good comments from the judges. I appreciated those performances because I think I redeemed myself.
It's been a tough competition with lots of twists and turns. Who do you think stands a good chance at winning?
This is a tough question! It is the top three, and everyone is just bringing their A-game. I am just as curious as you are to see who is going to win. I really don't know. Everyone is bringing fire. I can't wait for the finale.
What's next for you?
For now, I am sharpening my craft in terms of recording. The recording side of the music industry is completely different from the performance side. To continue this career, I need to put out some recorded material. I'll be working on that until I perfect it and I feel that it is good enough for the people to consume.
Tune in to Idols SA Sundays at 17:00 on Mzansi Magic (DStv 161).
Compiled by Leandra Engelbrecht.
(Photos: Mzansi Magic)