Class: Aws::ECRPublic::Types::RepositoryCatalogDataInput
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-ecrpublic/lib/aws-sdk-ecrpublic/types.rb |
Overview
An object that contains the catalog data for a repository. This data is publicly visible in the Amazon ECR Public Gallery.
Constant Summary
Instance Attribute Summary
-
#about_text ⇒ String
rw
A detailed description of the contents of the repository.
-
#architectures ⇒ Array<String>
rw
The system architecture that the images in the repository are compatible with.
-
#description ⇒ String
rw
A short description of the contents of the repository.
-
#logo_image_blob ⇒ String
rw
The base64-encoded repository logo payload.
-
#operating_systems ⇒ Array<String>
rw
The operating systems that the images in the repository are compatible with.
-
#usage_text ⇒ String
rw
Detailed information about how to use the contents of the repository.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Structure#to_h. |
Instance Attribute Details
#about_text ⇒ String
(rw)
A detailed description of the contents of the repository. It's publicly visible in the Amazon ECR Public Gallery. The text must be in markdown format.
# File 'gems/aws-sdk-ecrpublic/lib/aws-sdk-ecrpublic/types.rb', line 1668
class RepositoryCatalogDataInput < Struct.new( :description, :architectures, :, :logo_image_blob, :about_text, :usage_text) SENSITIVE = [] include Aws::Structure end
#architectures ⇒ Array
<String
> (rw)
The system architecture that the images in the repository are compatible with. On the Amazon ECR Public Gallery, the following supported architectures appear as badges on the repository and are used as search filters.
ARM
ARM 64
x86
x86-64
# File 'gems/aws-sdk-ecrpublic/lib/aws-sdk-ecrpublic/types.rb', line 1668
class RepositoryCatalogDataInput < Struct.new( :description, :architectures, :, :logo_image_blob, :about_text, :usage_text) SENSITIVE = [] include Aws::Structure end
#description ⇒ String
(rw)
A short description of the contents of the repository. This text appears in both the image details and also when searching for repositories on the Amazon ECR Public Gallery.
# File 'gems/aws-sdk-ecrpublic/lib/aws-sdk-ecrpublic/types.rb', line 1668
class RepositoryCatalogDataInput < Struct.new( :description, :architectures, :, :logo_image_blob, :about_text, :usage_text) SENSITIVE = [] include Aws::Structure end
#logo_image_blob ⇒ String
(rw)
The base64-encoded repository logo payload.
# File 'gems/aws-sdk-ecrpublic/lib/aws-sdk-ecrpublic/types.rb', line 1668
class RepositoryCatalogDataInput < Struct.new( :description, :architectures, :, :logo_image_blob, :about_text, :usage_text) SENSITIVE = [] include Aws::Structure end
#operating_systems ⇒ Array
<String
> (rw)
The operating systems that the images in the repository are compatible with. On the Amazon ECR Public Gallery, the following supported operating systems appear as badges on the repository and are used as search filters.
Linux
Windows
# File 'gems/aws-sdk-ecrpublic/lib/aws-sdk-ecrpublic/types.rb', line 1668
class RepositoryCatalogDataInput < Struct.new( :description, :architectures, :, :logo_image_blob, :about_text, :usage_text) SENSITIVE = [] include Aws::Structure end
#usage_text ⇒ String
(rw)
Detailed information about how to use the contents of the repository. It's publicly visible in the Amazon ECR Public Gallery. The usage text provides context, support information, and additional usage details for users of the repository. The text must be in markdown format.
# File 'gems/aws-sdk-ecrpublic/lib/aws-sdk-ecrpublic/types.rb', line 1668
class RepositoryCatalogDataInput < Struct.new( :description, :architectures, :, :logo_image_blob, :about_text, :usage_text) SENSITIVE = [] include Aws::Structure end


Solutions：
{$v}
{$v}
Category：
{$erji}
{$v.post_title}
{$v.post_excerpt|strip_tags|mb_substr=0,200,'utf-8'}...
Go Through
not find the solution
{$show}
Other Solutions
Weaving
Great explorer of the truth, master builder human happiness work one pleasure itself not know...
Read More
Twisting
Great explorer of the truth, master builder human happiness work one pleasure itself not know...
Read More
Dyeing&Finishing
Great explorer of the truth, master builder human happiness work one pleasure itself not know...
Read More
Spare Parts
Great explorer of the truth, master builder human happiness work one pleasure itself not know...
Read More
Chemical fibers
Great explorer of the truth, master builder human happiness work one pleasure itself not know...
Read More
Get a Quote
Get a free quote for your industrial or engineering business solutions, We are here 24/7.
Select Needed Service
Services One
Services Two
Send Now
Back to Home


Gublu and Tublu
We are Gublu and Tublu. We love each other. We love to eat fried rice and chilli chicken.


Deploying a standalone landing page site for Goodwill Dallas' annual fundraising event, THE LUNCH, with GoHugo.io
Case study / thelunch.info
Introduction
The Lunch, Goodwill Industries of Dallas' annual fundraising event, found wonderful success for its first two years – securing over $1.5m each year to, “... expand and enhance job training services.”
For 2017, I suggested a revamp of how to present the event and guest speaker information to visitors and donors that would match the high level of importance that Goodwill Dallas places on the event. Prior year information was housed in a subpage of goodwilldallas.org — but this year I wanted to do better.
My proposal was accepted and with that I got to work planning out a standalone landing page: thelunch.info. The following is my written case study recounting the various aspects of the project from ideation to deployment, along with detailed analysis of the major development roadblocks that came about and my solutions.
Objective
I wanted this site to be fast (like, really fast), compatible with IE10/11+, responsive with a mobile-first approach, and accessible with client editable content wrapped up in an SSL.
Project details
- Client
- Goodwill Industries of Dallas, Inc.
- Project
- Stand-alone site for Goodwill Dallas' annual fundraising event, THE LUNCH.
- Site name
- THE LUNCH 2017
- Site URL
- thelunch.info
- Repo URL
- https://github.com/milleradagency/GOOD-Lunch
- Standards
- HTML5
- CSS3
- JavaScript
- Libraries & third-party plugins
-
Click to expand
- Animate.css
- A cross-browser library of CSS animations. As easy to use as an easy thing.1
- Cloudflare
- Cloudflare, Inc. is a U.S. company that provides a content delivery network, Internet security services and distributed domain name server services, sitting between the visitor and the Cloudflare user's hosting provider, acting as a reverse proxy for websites.2
- FontAwesome
- Font Awesome gives you scalable vector icons that can instantly be customized — size, color, drop shadow, and anything that can be done with the power of CSS.3
- GitHub Pages
- Hosted directly from your GitHub repository. Just edit, push, and your changes are live.4
- Google Analytics
- Google Analytics lets you measure your advertising ROI as well as track your Flash, video, and social networking sites and applications.5
- Google Fonts
- Google Fonts ... is an interactive directory of free hosted application programming interfaces for web fonts.6
- Hugo
- Hugo is a static HTML and CSS website generator written in Go. It is optimized for speed, easy use and configurability. Hugo takes a directory with content and templates and renders them into a full HTML website.7
- jQuery
- Cross-platform JavaScript library designed to simplify the client-side scripting of HTML.8
- Modernizr
- Modernizr tells you what HTML, CSS and JavaScript features the user’s browser has to offer.9
- SCSS
- Sass is the most mature, stable, and powerful professional grade CSS extension language in the world.10
- Twitter Bootstrap
- Bootstrap is the world’s most popular framework for building responsive, mobile-first sites and applications. Inside you’ll find high quality HTML, CSS, and JavaScript to make starting any project easier than ever.11
- CodePen
- Detect Internet Explorer (IE) up to version 11 and Edge (12+)12
- Material Design Box Shadows13
- Sticky Slider Navigation14
- Tinted Hero15
Development
i. Development – Research
This project didn’t need a database, that was clear, so I opted for using a static-site generator. Going flat-file granted me the speed I desired and using an SSG, coupled with hosting via GitHub Pages, allowed me to quickly draft and deploy.
After some research on the top hotness platforms like Jekyll, Hugo, and whatnot – I decided to give Webhook a try; the platform proclaims to be, “the easiest way to build a custom CMS for your next website–” which would provide the client with an easy way to push updates.
I really love Webhook! It uses the SWIG templating language, has pretty good documentation, and was really easy to write in. Unfortunately, I encountered problems when trying to slap an SSL certificate on the site that was (at that time) hosted on Webhook’s own system. It can be done, by hosting the architecture on your own servers, but I was on a deadline that the client just cut in half — I, therefore, had to find a different path.
Having previous experience with Hugo, it seemed the next best thing for this project. Hugo, “a fast and modern static website generator,” is a wonderful system that, while still technically in beta (v0.20.7 as of this writing), performs and delivers exceptionally well! It’s written in Go, or Golang, and while the docs seem disjointed at times – the community proves enthusiastic, robust, and knowledgeable. Hugo, being completely static, lacked any sort of CMS or user-friendly front-end system, so I planned on implementing a third-party solution such as Forestry or Netlify.
So now I had a plan: build with Hugo, write content in Markdown, and configure a simple CMS solution with Forestry.io.
ii. Development – Planning
I started with some wireframe sketches; the conceptual layout of the landing page took on various aspects of lessons I’ve learned and read about — captivating hero image with a simple intro and engaging CTA, elongated explanation with some statistics, easy navigation, etc.
At this point, the client sent over some print materials they whipped up in-house; the pieces included key information for the page, as well as a branded visual identity to go with it.
iii. Development – Construction – DOM
Sections & partials
The initial DOM structure is pretty simple: header, meta, styles, index sections, footer, and scripts; nothing too fancy! Hugo provides a nice templating syntax for creating a dynamic-development that compiles to a static index file. The index.html
file for this landing page looks like:
{{ partial "header.html" . }}
{{ partial "main.html" . }}
Hah! Simple, right? Okay, but we both know that’s not the whole site — let’s look through the rest of the header.html
partial markup.
I won’t bore you with the rest of the partials – but if you’re crazy and want to look it over, click the accordion links below.
-
{{ partial "meta.html" . }}
-
{{ partial "chromeframe.html" . }}
<style> .chromeframe { text-align: center; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 999; background: white; height: 100%; width: 100%; padding: 35px; opacity: .85; font-size: 1.5rem; } </style>
-
{{ partial "nav.html" . }}
-
{{ partial "socialShare.html" . }}
And, if you’re really up for some fun (you masochist) you can look over the full index.html
file over on the repository.
iii. Development – Construction – SCSS
Even though many blogs say that CSS preprocessors are on their way out, due to CSS Grids rising up and coming to life, I still love SASS/SCSS.
I have a simple repo for my file structure which gives me an easy boilerplate when starting new projects via bower install pansky-sass --save
.
The primary organization for my SCSS is as follows:
// PARTIALS
// Mixins, definitions (colors, font-families),
// functions, selectors, etc.
@import 'partials/!module';
// VENDORS
// 3rd-party vendor styles (normalize,
// bootstrap), etc.
@import 'vendors/!module';
// BASE
// Global styles such as non-vendor resets,
// typography, etc.
@import 'base/!module';
// COMPONENTS
// Resuable / independant module components
// (buttons, sliders, etc.)
@import 'components/!module';
// LAYOUT
// Styling for larger layout components;
// e.g. nav, header, footer, etc.
@import 'layout/!module';
// PAGES
// Page-specific styling, such as homepage, if necessary.
@import 'pages/!module';
// THEMES
// Styles for different themes; such as holidays, events, etc.
@import 'themes/!module';
Sponsorship cards
I wanted the elements that housed the details and benefits for sponsoring the event to look pretty slick, professional, and appealing. Using a ‘pricing table’ aesthetic, I designed some responsive cards from Bootstrap’s base component.
Here’s a working example of two of the cards in action:
$250,000
Provides 44 adults with a disability 240 hours of paid, on-the-job training.
- Twenty invitations with highest priority seating
- Ten exclusive invitations to photo opportunity with guest speaker
- Prominent recognition in all press, event signage, and advertising
- Prominent logo placement on large screens during event
- Recognition on Goodwill Dallas website for one year
- VIP parking for all guests
$100,000
Supports 16 adults with a disability 240 hours of paid, on-the-job training.
- Ten invitations with highest priority seating
- Six exclusive invitations to photo opportunity with guest speaker
- Prominent recognition in all press, event signage, and advertising
- Recognition on Goodwill Dallas website for one year
- VIP parking for all guests
iii. Development – Construction – Javascript
I’m still learning my way through vanilla JS (shoosh, we all start somewhere), but this was a live client project and I used jQuery. I wrote small .animate()
scripts for fading in elements and early-version mobile controls, while turning to StackOverflow, as we all do, for resolutions on how to prevent automatic browser scroll on refresh, etc; all items are credited in the comments.
-
lunch2017.js
// Document [when website] loads $(document).ready(function() { $("main").animate({ opacity: 1, }, 500, function() { // Animation complete. }); $("nav").animate({ opacity: 1, }, 1000, function() { // Animation complete. }); $("#bbox-root").delay(2000).fadeIn("slow"); }); // #mobileNav controls $(function() { // open/close mobile nav $("#mobileNavBar").on("click", function() { if ($("#mobileNav").hasClass("showMeMore") == false) { $("#mobileNav").addClass('showMeMore'); $("body").addClass('noscroll'); $("#mobileNavBars i").toggleClass('fa-share-alt fa-times'); $("#navFade").toggleClass('hidden visible'); } else { $("#mobileNav").removeClass('showMeMore'); $("body").removeClass('noscroll'); $("#mobileNavBars i").toggleClass('fa-times fa-share-alt'); $("#navFade").toggleClass('visible hidden'); }; }); }); // Prevent automatic browser scroll on refresh // http://stackoverflow.com/a/18633915 $(window).on('beforeunload', function() { $(window).scrollTop(0); }); // Prevent a#SECTION from being added to URL on click // http://stackoverflow.com/a/20215413 $('.mainShow').click(function(event){ event.preventDefault(); }); $('.btn').click(function(event){ event.preventDefault(); }); // Detect IE and change if needed // https://codepen.io/gapcode/pen/vEJNZN function detectIE() { var ua = window.navigator.userAgent; // IE 10 // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)'; // IE 11 // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko'; var msie = ua.indexOf('MSIE '); if (msie > 0) { // IE 10 or older => change flex to block to avoid flex-wrap bug $(".card .card-block").css("display", "block"); } var trident = ua.indexOf('Trident/'); if (trident > 0) { // IE 11 => change flex to block to avoid flex-wrap bug $(".card .card-block").css("display", "block"); } } // Run if iOS ver = 9.x.x // http://stackoverflow.com/a/13280432 if(/(iPhone|iPad|iPod)\sOS\s9/.test(navigator.userAgent)) { var btn = $("#heroButtons"); var bar = $(".et-hero-tabs-container"); btn.remove(); bar.css("position", "fixed"); bar.css("top", "0"); bar.css("height", "50px"); bar.css("border-bottom", "1px solid #595959"); }; // Detect Android and run // https://davidwalsh.name/detect-android // http://stackoverflow.com/a/18764086 var ua = navigator.userAgent.toLowerCase(); var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); var navi = $(".et-hero-tabs-container--top"); if(isAndroid) { // Do something! navi.css("-webkit-transform", "translateZ(0)"); // window.location = 'http://android.davidwalsh.name'; }
iii. Development – Construction – Compiler
To compile my individual partials into a production-ready minified file, I use Gulp. Since it’s a simple, yet expandable, toolkit – Gulp provides me the power of hassle-free CSS through the following plugins:
var gulp = require('gulp');
var sass = require('gulp-sass');
var postcss = require('gulp-postcss');
var nano = require('gulp-cssnano');
var sourcemaps = require('gulp-sourcemaps');
var autoprefixer = require('autoprefixer');
gulp.task('default', function () {
return gulp.src('themes/2017/static/css/main.scss')
.pipe(sourcemaps.init())
.pipe(sass()) // using gulp-sass
.pipe(postcss([ autoprefixer() ]))
.pipe(nano())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('themes/2017/static/css'));
});
gulp.task('watch', function() {
gulp.watch('themes/2017/static/css/**/*.scss', ['default']);
});
iii. Development – Construction – Accessibility & Compatibility
Due to the nature of the event and it’s target market, I opted to make the base font size of the document 18px. I then expanded that when configuring the REM sizes for typographic elements; p (1rem), h1-h6, ul/ol, li, etc.
The site did encounter some hiccups when testing IE11, but that was expected. Additionally, I tested the page on iOS (current + back one version) using Xcode Simulator and live devices, Android (current version) using live devices, and several breakpoints using the Emmet Re:View plugin for Chrome (pictured below).
iii. Development – Construction – Issues & Solutions
There’s always issues, always. Tracked ‘em on on the repo; the following is a view of the bigger ones:
-
#11: win7 ie10/11 - Header, sticky, & sponOpps
The hero intro sections encountered bugs on Windows 7 IE10/11.
The issue was resolved through the following tweaks:
- Add [if ie11] hero row transform: scale(0.8);
- Add [if ie11] height: 100%; to nav.et-hero.tabs
- changed hero and sponOpps from to container style="width:100%";
View issue on GitHub
-
#13: win10 edge13.0 - Hero copy & sponOpps
The sponsor/donor tier-card sections encountered bugs on Windows 10 Edge v13.
The issue was resolved through the following tweaks:
- Added [if edge] hero row transform: scale(0.8);
- Added [if edge] hero row from height: 100%; to nav.et-hero.tabs
-
#38: iOS - Hero buttons broken
"Get table" & "learn more" buttons inactive; tested on iPhone 5, works on 6s. Oddly enough, the buttons work in Xcode Simulator. Coworker's have iPhone 6SE and iPhone 5 in the office - both running on 9.3.X- version of iOS; seems that is the culprit here.
Downloaded iOS 9.3 for Xcode Simulator and found the issue to be the syntax
let self = this;
in StickyNav.js line 8. Apparently,let
produces the error:SyntaxError: Unexpected use of reserved word 'let' in strict mode
due to lack of support forlet
.As a quick-fix (deadline approaching fast), I've implemented this bit of info to detect if the version of iOS = 9.x.x and run the following conditionals if so:
// run if iOS ver = 9.x.x if(/(iPhone|iPad|iPod)\sOS\s9/.test(navigator.userAgent)) { var btn = $("#heroButtons"); var bar = $(".et-hero-tabs-container"); btn.remove(); bar.css("position", "fixed"); bar.css("top", "0"); bar.css("height", "50px"); bar.css("border-bottom", "1px solid #595959"); };
Deployment
Ahh, going live… such a terrifying and exhilarating time! The project hit v1.0.0 and the Deployment milestone was completed. Although, I guess I forgot to actually close the milestone – hence the date of closure.
Post-release
As with any project, there were post-release updates. The site is at v1.1.7 as of this writing. Both further fixes/enchancements and client updates. To view the log, see the README.md on the repo.
This may also be the time where you’re wondering, “Wait, where’s the CMS integration?” Well, unfortunately due to time constraints, said feature never made it into the project. I continued to provide updates per client requests and wrote an extensive how-to document on how to edit the repo directly (while not breaking the site.) — which actually worked out well; site’s still runnin’!
Release v1.1.7 is, actually, just prior to the client’s editing access. You know… just in case.
Conclusion
This project was an absurd amount of fun crammed into a equally-speedy timeframe.
The first commits occurred on March 16th, while deployment was March 24th. May 16th was v1.1.7, and the client updates started June 13th.
That being said, I’m glad to have worked on it. Collaborating with Goodwill Dallas is always exciting and certainly feels like I have a sense of drive powering me when creating for them.
Sources
-
Click to view the list of sources
- Animate.css
- Cloudflare
- FontAwesome
- GitHub Pages
- Google Analytics
- Google Fonts
- Hugo
- jQuery
- Modernizr
- SCSS
- Twitter Bootstrap
- CodePen – Detect Internet Explorer (IE) up to version 11 and Edge (12+) by Mario
- CodePen – Material Design Box Shadows by Samuel Thornton
- CodePen – Sticky Slider Navigation (Responsive) by Ettrics
- CodePen – Tinted Hero by Luis Herrero
Demo
To view a demo of the site, click here.


Success! {{submitSuccessMessage}}, Go to login page.
Error! {{submitErrorMessage}}
Error!
Email Required!
Email Invalid!
Password Required!
Password Invalid!
re-Password Required!
re-Password Invalid!
Forename Required!
Forename Invalid!
Surname Required!
Surname Invalid!
Gender Required!
Gender Invalid!
Birthday Required!
Birthday Invalid!
Phone Required!
Phone Invalid!
Country Required!
State Invalid!
Address Required!
Address Invalid!


Clojuregex
Test Regexes in #"(Clojure)+(Script)?"
Regular Expression
Test String
Test Regex
Matches In Clojure
Matches In ClojureScript
by
Joshua Miller
|
@sendmehome
inspired by
Rubular
source
joshuamiller/clojuregex on github


This International Components for Unicode (ICU) analysis plugin adds support for ICU 58.2 to Elasticsearch.
ICU 58.2 supports Unicode 9.0 and CLDR 30.0.2.
It is a drop-in replacement for the mainline Elasticsearch ICU plugin and extends it by new features and options. There is no dependency on Lucene ICU, the functionality is included in this plugin as well.
ICU enables extensive support for Unicode. It provides text segmentation, normalization, character folding, collation, transliteration, and locale-aware number formatting.
1. Text segmentation
Text segmentation for Unicode is specified in Unicode Standard Annex 29 (UAX#29) at http://unicode.org/reports/tr29/
The specification determines default segmentation boundaries between certain significant text elements: grapheme clusters (“user-perceived characters”), words, and sentences.
The default (non-ICU) tokenization of Elasticearch follows UAX#29.
The ICU tokenzation, as implemented by icu_tokenizer
, adds some
features as described in http://userguide.icu-project.org/boundaryanalysis
-
implementation of line break detection UAX#14 http://www.unicode.org/reports/tr14/
-
dictionary support for word boundaries in Thai, Lao, Chinese, and Japanese
-
rule based break iterator (RBBI) for custom boundary detection
-
Myanmar and Khmer is broken into syllables based on custom rules
-
mapping of Han, Hiragana, and Katakana scripts to Japanese
1.1. Example for CJK
-
simple chinese "我购买了道具和服装。" is tokenized into "我", "购买", "了", "道具", "和", "服装"
-
simple japanese "それはまだ実験段階にあります" is tokenized into "それ", "は", "まだ", "実験", "段階", "に", "あり", "ます"
-
korean hangul "안녕하세요 한글입니다" is tokenized into "안녕하세요", "한글입니다"
PUT /test
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer" : "icu_tokenizer"
}
}
}
}
},
"mappings": {
"docs": {
"properties": {
"text": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
}
Simple chinese analysis
POST /test/_analyze { "analyzer" : "my_analyzer", "text" : "我购买了道具和服装。" }
Result
{ "tokens": [ { "token": "我", "start_offset": 0, "end_offset": 1, "type": "<IDEOGRAPHIC>", "position": 0 }, { "token": "购买", "start_offset": 1, "end_offset": 3, "type": "<IDEOGRAPHIC>", "position": 1 }, { "token": "了", "start_offset": 3, "end_offset": 4, "type": "<IDEOGRAPHIC>", "position": 2 }, { "token": "道具", "start_offset": 4, "end_offset": 6, "type": "<IDEOGRAPHIC>", "position": 3 }, { "token": "和", "start_offset": 6, "end_offset": 7, "type": "<IDEOGRAPHIC>", "position": 4 }, { "token": "服装", "start_offset": 7, "end_offset": 9, "type": "<IDEOGRAPHIC>", "position": 5 } ] }
Simple japanese analysis
POST /test/_analyze { "analyzer" : "my_analyzer", "text" : "それはまだ実験段階にあります" }
Result
{ "tokens": [ { "token": "それ", "start_offset": 0, "end_offset": 2, "type": "<IDEOGRAPHIC>", "position": 0 }, { "token": "は", "start_offset": 2, "end_offset": 3, "type": "<IDEOGRAPHIC>", "position": 1 }, { "token": "まだ", "start_offset": 3, "end_offset": 5, "type": "<IDEOGRAPHIC>", "position": 2 }, { "token": "実験", "start_offset": 5, "end_offset": 7, "type": "<IDEOGRAPHIC>", "position": 3 }, { "token": "段階", "start_offset": 7, "end_offset": 9, "type": "<IDEOGRAPHIC>", "position": 4 }, { "token": "に", "start_offset": 9, "end_offset": 10, "type": "<IDEOGRAPHIC>", "position": 5 }, { "token": "あり", "start_offset": 10, "end_offset": 12, "type": "<IDEOGRAPHIC>", "position": 6 }, { "token": "ます", "start_offset": 12, "end_offset": 14, "type": "<IDEOGRAPHIC>", "position": 7 } ] }
Korean hangul analysis
POST /test/_analyze { "analyzer" : "my_analyzer", "text" : "안녕하세요 한글입니다" }
Result
{ "tokens": [ { "token": "안녕하세요", "start_offset": 0, "end_offset": 5, "type": "<HANGUL>", "position": 0 }, { "token": "한글입니다", "start_offset": 6, "end_offset": 11, "type": "<HANGUL>", "position": 1 } ] }
1.2. Example for mixed script tokenization
In this example, the icu_tokenizer
shows how it is capable of tokenize mixed scripts of latin,
cryllic, and thai. Cyrillic/Thai should be keyword-tokenized.
PUT /test
{
"settings": {
"index": {
"analysis": {
"tokenizer": {
"my_tokenizer": {
"type": "icu_tokenizer",
"rulefiles": "Cyrl:icu/KeywordTokenizer.rbbi,Thai:icu/KeywordTokenizer.rbbi"
}
},
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "my_tokenizer"
}
}
}
}
},
"mappings": {
"docs": {
"properties": {
"text": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
}
POST /test/_analyze
{
"analyzer" : "my_analyzer",
"text" : "Some English. Немного русский. ข้อความภาษาไทยเล็ก ๆ น้อย ๆ More English."
}
Result
{ "tokens": [ { "token": "Some", "start_offset": 0, "end_offset": 4, "type": "<ALPHANUM>", "position": 0 }, { "token": "English", "start_offset": 5, "end_offset": 12, "type": "<ALPHANUM>", "position": 1 }, { "token": "Немного русский. ", "start_offset": 15, "end_offset": 33, "type": "<ALPHANUM>", "position": 2 }, { "token": "ข้อความภาษาไทยเล็ก ๆ น้อย ๆ ", "start_offset": 33, "end_offset": 62, "type": "<ALPHANUM>", "position": 3 }, { "token": "More", "start_offset": 62, "end_offset": 66, "type": "<ALPHANUM>", "position": 4 }, { "token": "English", "start_offset": 67, "end_offset": 74, "type": "<ALPHANUM>", "position": 5 } ] }
1.3. Example for Myanmar
This example shows how icu_tokenizer
is able to tokenize myanmar script into syllables instead of words.
"နည်" is tokenized into a single "နည်", it is one token.
"သက်ဝင်လှုပ်ရှားစေပြီး" is tokenized into "သက်", "ဝင်", "လှုပ်", "ရှား", "စေ", "ပြီး".
PUT /test
{
"settings": {
"index": {
"analysis": {
"tokenizer": {
"my_tokenizer": {
"type": "icu_tokenizer",
"myanmar_as_words": false
}
},
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "my_tokenizer"
}
}
}
}
},
"mappings": {
"docs": {
"properties": {
"text": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
}
POST /test/_analyze
{
"analyzer" : "my_analyzer",
"text" : "နည်"
}
POST /test/_analyze
{
"analyzer" : "my_analyzer",
"text" : "သက်ဝင်လှုပ်ရှားစေပြီး"
}
2. Normalization
Normalization allows for easier sorting and searching of text. Text can appear in different forms, and the question is how to canonicalize these forms so same texts can be recognized as being the same.
Texts with same appearance and meaning are known as being canonically equivalent. The other form of equivalence is compatibility, where texts look possibly different, but mean the same. Compatible sequences may be treated the same way in sorting and indexing.
Normalization is the process to convert text to such a unique, equivalent form.
The ICU normalizer char/token filter icu_normalizer
can normalize equivalent strings
to one particular sequence, such as normalizing composite character sequences into
pre-composed characters.
2.1. Example for normalization
PUT /test
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"char_filter" : "icu_normalizer",
"tokenizer" : "icu_tokenizer"
}
}
}
}
},
"mappings": {
"docs": {
"properties": {
"text": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
}
This example shows normalization of U+0075 U+0308 to U+00fc (ü).
POST /test/_analyze { "analyzer" : "my_analyzer", "text" : "\u0075\u0308" }
{ "tokens": [ { "token": "ü", "start_offset": 0, "end_offset": 1, "type": "<ALPHANUM>", "position": 0 } ] }
This example shows normalization of "Ruß" into "russ".
POST /test/_analyze { "analyzer" : "my_analyzer", "text" : "Ruß" }
{ "tokens": [ { "token": "russ", "start_offset": 0, "end_offset": 3, "type": "<ALPHANUM>", "position": 0 } ] }
This example shows compatibility normalization of the ﬀ ligature character (U+FB00).
POST /test/_analyze { "analyzer" : "my_analyzer", "text" : "ﬀ" }
{ "tokens": [ { "token": "ff", "start_offset": 0, "end_offset": 1, "type": "<ALPHANUM>", "position": 0 } ] }
3. Character Folding
Character folding operations are most often used to temporarily ignore certain distinctions between similar characters. For example, they are useful for "fuzzy" or "loose" searches.
Repeatedly applying the same folding does not change the result, a property called idempotency.
The Unicode draft report UTR-30 on character folding was withdrawn because of many edge cases where no good solution exist. See http://www.unicode.org/reports/tr30/tr30-4.html
Normalization and character folding are defined as separate and independent operations, but case folding often occurs together with other foldings in search term folding. NFC or NFD are not in the primary focus of case folding operations.
3.1. Implementation
The implemented char/token filter applies the following foldings from the report to unicode text:
-
Accent removal
-
Case folding
-
Canonical duplicates folding
-
Dashes folding
-
Diacritic removal (including stroke, hook, descender)
-
Greek letterforms folding
-
Han Radical folding
-
Hebrew Alternates folding
-
Jamo folding
-
Letterforms folding
-
Math symbol folding
-
Multigraph Expansions (All)
-
Native digit folding
-
No-break folding
-
Overline folding
-
Positional forms folding
-
Small forms folding
-
Space folding
-
Spacing Accents folding
-
Subscript folding
-
Superscript folding
-
Suzhou Numeral folding
-
Symbol folding
-
Underline folding
-
Vertical forms folding
-
Width folding
Additionally, Default Ignorables are removed, and text is normalized to NFKC. All foldings, case folding, and normalization mappings are applied recursively to ensure a fully folded and normalized result.
ICU uses binary encoded files prepared by the program gennorm2
to perform character foldings.
The input to gennorm2
is a list of txt
files specifying the foldings.
For the Elasticsearch ICU plugin, the files nfc.txt
, nfkc.txt
, and nfkc_cf.txt
are downloaded from
There is a download tool which is not exposed for API use,
see org.xbib.elasticsearch.index.analysis.icu.tools.UTR30DataFileGenerator
Together with the files BasicFoldings.txt
, DiacriticFolding.txt
, DingbatFolding.txt
,
HanRadicalFolding.txt
, and NativeDigitFolding.txt
they are used on Fedora Linux 25 as input for the program
gennorm2
as provided under http://download.icu-project.org/files/icu4c/58.2/icu4c-58_2-Fedora25-x64.tgz
The output file is named utr30.nrm
and included in this plugin, being configured as the default folding
for the Elasticsearch char/token filter icu_folding
.
As to this time, there is only this one folding as specified by utr30.nrm
configured in the plugin,
but it is possible to add other foldings as well in future versions.
3.2. Example for UTR#30 folding
PUT /test
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"char_filter" : "icu_folding",
"tokenizer" : "icu_tokenizer"
}
}
}
}
},
"mappings": {
"docs": {
"properties": {
"text": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
}
POST /test/_analyze { "analyzer" : "my_analyzer", "text" : "résumé" }
{ "tokens": [ { "token": "resume", "start_offset": 0, "end_offset": 6, "type": "<ALPHANUM>", "position": 0 } ] }
POST /test/_analyze { "analyzer" : "my_analyzer", "text" : "\u00fc" }
{ "tokens": [ { "token": "u", "start_offset": 0, "end_offset": 1, "type": "<ALPHANUM>", "position": 0 } ] }
POST /test/_analyze { "analyzer" : "my_analyzer", "text" : "\u0075\u0308" }
{ "tokens": [ { "token": "u", "start_offset": 0, "end_offset": 2, "type": "<ALPHANUM>", "position": 0 } ] }
4. Collation
Collation stands for the process of determining the sorting order of strings that are represented by characters. The collation process is a key function in computer systems; whenever a list of entries is presented to users, they are likely to want it in a sorted order so that they can easily and reliably find entries.
Unicode provides collation rules in the Unicode Collation Algorithm (UCA), see UTR#10 http://www.unicode.org/reports/tr10/ The standard collation order for Unicode is known as DUCET/CLDR.
ICU Collation is provided by two main categories of APIs:
-
String comparison. Most commonly used, the result of comparing two strings (greater than, equal or less than). This is used as a comparator when sorting lists, building tree maps, etc.
-
Sort key generation. Used when a very large set of strings are compared/sorted repeatedly. A zero-terminated array of bytes per string known as a sort key is returned. The keys can be compared directly using
strcmp
ormemcmp
standard library functions, saving repeated lookup and computation of each string’s collation properties. For example, database applications use index tables of sort keys to index strings quickly. Note, however, that this only improves performance for large numbers of strings because sorting via the comparison functions is very fast.
4.1. Strength levels
Following the Unicode Consortium’s specifications for the Unicode Collation Algorithm (UCA), there are five different levels of strength used in comparisons.
| primary |
Typically, this is used to denote differences between base characters (for example, "a" < "b"). It is the strongest difference. For example, dictionaries are divided into different sections by base character. |
| secondary |
Accents in the characters are considered secondary differences (for example, "as" < "às" < "at"). Other differences between letters can also be considered secondary differences, depending on the language. A secondary difference is ignored when there is a primary difference anywhere in the strings. |
| tertiary |
Upper and lower case differences in characters are distinguished at tertiary strength (for example, "ao" < "Ao" < "aò"). In addition, a variant of a letter differs from the base form on the tertiary strength (such as "A" and "Ⓐ"). Another example is the difference between large and small Kana. A tertiary difference is ignored when there is a primary or secondary difference anywhere in the strings. |
| quaternary |
When punctuation is ignored (see Ignoring Punctuations in the user guide) at primary to tertiary strength, an additional strength level can be used to distinguish words with and without punctuation (for example, "ab" < "a-b" < "aB"). This difference is ignored when there is a primary, secondary or tertiary difference. The quaternary strength should only be used if ignoring punctuation is required. |
| identical |
When all other strengths are equal, the identical strength is used as a tiebreaker. The Unicode code point values of the NFD form of each string are compared, just in case there is no difference. For example, Hebrew cantellation marks are only distinguished at this strength. This strength should be used sparingly, as only code point value differences between two strings is an extremely rare occurrence. Using this strength substantially decreases the performance for both comparison and collation key generation APIs. This strength also increases the size of the collation key. |
4.2. Case Ordering
The tertiary level is used to distinguish text by case.
Some applications prefer to emphasize case differences so that words starting with the same case sort together. Some Japanese applications require the difference between small and large Kana be emphasized over other tertiary differences.
The UCA does not provide means to separate out either case or Kana differences from the remaining tertiary differences. However, the ICU Collation Service has two options that help in customize case and/or Kana differences. Both options are turned off by default.
4.2.1. CaseFirst
The Case-first option makes case the most significant part of the tertiary level. Primary and secondary levels are unaffected. With this option, words starting with the same case sort together. The Case-first option can be set to make either lowercase sort before uppercase or uppercase sort before lowercase.
Note: The case-first option does not constitute a separate level; it is simply a reordering of the tertiary level.
ICU makes use of the following three case categories for sorting
-
uppercase: "ABC"
-
mixed case: "Abc", "aBc"
-
normal (lowercase or no case): "abc", "123"
Mixed case is always sorted between uppercase and normal case when the "case-first" option is set.
4.2.2. CaseLevel
The Case Level option makes a separate level for case differences. This is an extra level positioned between secondary and tertiary. The case level is used in Japanese to make the difference between small and large Kana more important than the other tertiary differences. It also can be used to ignore other tertiary differences, or even secondary differences. This is especially useful in matching. For example, if the strength is set to primary only (level-1) and the case level is turned on, the comparison ignores accents and tertiary differences except for case. The contents of the case level are affected by the case-first option.
The case level is independent from the strength of comparison. It is possible to have a collator set to primary strength with the case level turned on. This provides for comparison that takes into account the case differences, while at the same time ignoring accents and tertiary differences other than case. This may be used in searching.
4.3. Script Reordering
For ICU script codes, see http://icu-project.org/apiref/icu4j/com/ibm/icu/lang/UScript.html
Script reordering allows scripts and some other groups of characters to be moved relative to each other. This reordering is done on top of the DUCET/CLDR standard collation order. Reordering can specify groups to be placed at the start and/or the end of the collation order.
By default, reordering codes specified for the start of the order are placed in the order given after
several special non-script blocks. These special groups of characters are space
, punctuation
, symbol
,
currency
, and digit
. Script groups can be intermingled with these special non-script groups
if those special groups are explicitly specified in the reordering.
The special code others
stands for any script that is not explicitly mentioned in the list.
Anything that is after others will go at the very end of the list in the order given.
The special reorder code default
will reset the reordering for this collator to the default
for this collator. The default reordering may be the DUCET/CLDR order or may be a reordering
that was specified when this collator was created from resource data or from rules.
The default
code must be the sole code supplied when it is used.
If not, then an IllegalArgumentException
will be thrown.
The special reorder code none
will remove any reordering for this collator.
The result of setting no reordering will be to have the DUCET/CLDR ordering used.
The none
code must be the sole code supplied when it is used.
4.4. Implementation
Collation rules in Elasticsearch ICU are implemented by the analyzer icu_collate
.
The analyzer can be set up with
-
a system collator associated with a locale or a language ID
-
a tailored rule set (conforms to ISO 14651)
The following options are available for creating a system collator:
| locale |
a RFC 3066 locale ID |
| language |
an RFC 3066 language ID, if locale ID is not given |
| country |
an RFC 3066 country ID, if language ID is not specific enough |
| variant |
an RFC 3066 variant ID, if language and country ID is not specific enough |
| strength |
|
| decomposition |
|
The following options are available when creating a rule set based collator:
| rules |
the rules, or a list of names of UTF-8 text file containing rules
supported by |
| strength |
|
| decomposition |
|
Other, more advanced options are
| alternate |
|
| caseLevel |
|
| caseFirst |
|
| numeric |
|
| variableTop |
single character or contraction. Controls what the variable is for 'alternate'.
Default is |
| reorder |
a sequence of names of script codes as specified in
http://icu-project.org/apiref/icu4j/com/ibm/icu/lang/UScript.html
or
special codes [ |
4.5. Example for german phone book collation ordering
This example shows how the icu_collation
can be used to sort german family names in
the german phone book order.
PUT /test
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "icu_collation",
"locale": "de@collation=phonebook",
"strength": "primary"
}
}
}
}
},
"mappings": {
"docs": {
"properties": {
"text": {
"type": "text",
"fielddata" : true,
"analyzer": "my_analyzer"
}
}
}
}
}
PUT /test/docs/1
{
"text" : "Göbel"
}
PUT /test/docs/2
{
"text" : "Goethe"
}
PUT /test/docs/3
{
"text" : "Goldmann"
}
PUT /test/docs/4
{
"text" : "Göthe"
}
PUT /test/docs/5
{
"text" : "Götz"
}
POST /test/docs/_search
{
"query": {
"match_all": {
}
},
"sort" : {
"text" : { "order" : "asc" }
}
}
The sorted result is
{
"took": 57,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 5,
"max_score": null,
"hits": [
{
"_index": "test",
"_type": "docs",
"_id": "1",
"_score": null,
"_source": {
"text": "Göbel"
},
"sort": [
"5E1+1?\u0000"
]
},
{
"_index": "test",
"_type": "docs",
"_id": "2",
"_score": null,
"_source": {
"text": "Goethe"
},
"sort": [
"5E1O71\u0000"
]
},
{
"_index": "test",
"_type": "docs",
"_id": "4",
"_score": null,
"_source": {
"text": "Göthe"
},
"sort": [
"5E1O71\u0000"
]
},
{
"_index": "test",
"_type": "docs",
"_id": "5",
"_score": null,
"_source": {
"text": "Götz"
},
"sort": [
"5E1O[\u0000"
]
},
{
"_index": "test",
"_type": "docs",
"_id": "3",
"_score": null,
"_source": {
"text": "Goldmann"
},
"sort": [
"5E?/A)CC\u0000"
]
}
]
}
}
5. Transform
Transliteration is part of the ICU transforms feature. Transforms are used to process Unicode text in many different ways. They include case mapping, normalization, transliteration and bidirectional text handling.
Case mapping is used to handle mappings of upper- and lower-case characters from one language to another language, and writing systems that use letters of the same alphabet to handle title case mappings that are particular to some class. They provide for certain language-specific mappings as well.
Normalization is used to convert text to a unique, equivalent form. Systems can normalize Unicode-encoded text to one particular sequence, such as a normalizing composite character sequences into precomposed characters.
Transliteration provide a general-purpose package for processing Unicode text. They are a powerful and flexible mechanism for handling a variety of different tasks, including:
-
Uppercase, Lowercase, Titlecase, Full/Halfwidth conversions
-
Normalization
-
Hex and Character Name conversions
-
Script to Script conversion
The Bidirectional Algorithm was developed to specify the direction of text in a text flow.
The icu_transform
token filter can be configured as follows
PUT /test
{
"settings": {
"index": {
"analysis": {
"filter": {
"my_icu_transformer_ch": {
"type": "icu_transform",
"id": "Traditional-Simplified"
},
"my_icu_transformer_han": {
"type": "icu_transform",
"id": "Han-Latin"
},
"my_icu_transformer_katakana": {
"type": "icu_transform",
"id": "Katakana-Hiragana"
},
"my_icu_transformer_cyr": {
"type": "icu_transform",
"id": "Cyrillic-Latin"
},
"my_icu_transformer_any_latin": {
"type": "icu_transform",
"id": "Any-Latin"
},
"my_icu_transformer_nfd": {
"type": "icu_transform",
"id": "NFD; [:Nonspacing Mark:] Remove"
},
"my_icu_transformer_rules": {
"type": "icu_transform",
"id": "test",
"dir": "forward",
"rules": "a > b; b > c;"
}
},
"analyzer": {
"my_icu_ch": {
"type": "custom",
"tokenizer": "icu_tokenizer",
"filter": [
"my_icu_transformer_ch"
]
},
"my_icu_han": {
"type": "custom",
"tokenizer": "icu_tokenizer",
"filter": [
"my_icu_transformer_han"
]
},
"my_icu_katakana": {
"type": "custom",
"tokenizer": "icu_tokenizer",
"filter": [
"my_icu_transformer_katakana"
]
},
"my_icu_cyr": {
"type": "custom",
"tokenizer": "icu_tokenizer",
"filter": [
"my_icu_transformer_cyr"
]
},
"my_icu_any_latin": {
"type": "custom",
"tokenizer": "icu_tokenizer",
"filter": [
"my_icu_transformer_any_latin"
]
},
"my_icu_nfd": {
"type": "custom",
"tokenizer": "icu_tokenizer",
"filter": [
"my_icu_transformer_nfd"
]
},
"my_icu_rules": {
"type": "custom",
"tokenizer": "icu_tokenizer",
"filter": [
"my_icu_transformer_rules"
]
}
}
}
}
}
}
The analyzer my_icu_ch
can transform traditional to simplified chinese.
POST /test/_analyze { "analyzer" : "my_icu_ch", "text" : "簡化字" }
{ "tokens": [ { "token": "简化", "start_offset": 0, "end_offset": 2, "type": "<IDEOGRAPHIC>", "position": 0 }, { "token": "字", "start_offset": 2, "end_offset": 3, "type": "<IDEOGRAPHIC>", "position": 1 } ] }
The analyzer my_icu_han
can transform Han to latin script.
POST /test/_analyze { "analyzer" : "my_icu_han", "text" : "中国" }
{ "tokens": [ { "token": "zhōng guó", "start_offset": 0, "end_offset": 2, "type": "<IDEOGRAPHIC>", "position": 0 } ] }
The analyzer my_icu_katakana
can transform katakana to hiragana script.
POST /test/_analyze { "analyzer" : "my_icu_katakana", "text" : "ヒラガナ" }
{ "tokens": [ { "token": "ひらがな", "start_offset": 0, "end_offset": 4, "type": "<IDEOGRAPHIC>", "position": 0 } ] }
The analyzer my_icu_cyr
can transform cyrillic to latin script.
POST /test/_analyze { "analyzer" : "my_icu_cyr", "text" : "Российская Федерация" }
{ "tokens": [ { "token": "Rossijskaâ", "start_offset": 0, "end_offset": 10, "type": "<ALPHANUM>", "position": 0 }, { "token": "Federaciâ", "start_offset": 11, "end_offset": 20, "type": "<ALPHANUM>", "position": 1 } ] }
The analyzer my_icu_any_latin
can transform any script to latin script.
POST /test/_analyze { "analyzer" : "my_icu_any_latin", "text" : "Αλφαβητικός Κατάλογος" }
{ "tokens": [ { "token": "Alphabētikós", "start_offset": 0, "end_offset": 11, "type": "<ALPHANUM>", "position": 0 }, { "token": "Katálogos", "start_offset": 12, "end_offset": 21, "type": "<ALPHANUM>", "position": 1 } ] }
The analyzer my_icu_nfd
can transform a script to canonical decomposed form.
POST /test/_analyze { "analyzer" : "my_icu_nfd", "text" : "Alphabētikós Katálogos" }
{ "tokens": [ { "token": "Alphabetikos", "start_offset": 0, "end_offset": 12, "type": "<ALPHANUM>", "position": 0 }, { "token": "Katalogos", "start_offset": 13, "end_offset": 22, "type": "<ALPHANUM>", "position": 1 } ] }
The analyzer my_icu_rules
can transform Unicode text by rules.
POST /test/_analyze { "analyzer" : "my_icu_tokenizer_rules", "text" : "abacadaba" }
{ "tokens": [ { "token": "bcbcbdbcb", "start_offset": 0, "end_offset": 9, "type": "<ALPHANUM>", "position": 0 } ] }
6. Number formatting
Number formatting is part of message formatting. Messages are user-visible strings, often with variable elements like names, numbers and dates.
Number formatting is useful for indexing the textual information of numbers. It allows synonym search on numbers when it is not ensured that numbers are encoded as digits or text. Example: "A dollar is 100 cents" and "A dollar is onehundred cents".
The setting lenient
determines the effort the parser should undertake. If true, the parser can recognize
more numbers, but is extremely slow.
Here is an example of the spellout
number format feature. Both queries will match both documents.
PUT /test
{
"settings": {
"index": {
"analysis": {
"filter": {
"spellout_en": {
"type": "icu_numberformat",
"locale": "en_US",
"format": "spellout",
"lenient": true
}
},
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "icu_tokenizer",
"filter": "spellout_en"
}
}
}
}
},
"mappings": {
"docs": {
"properties": {
"text": {
"type": "text",
"fielddata": true,
"analyzer": "my_analyzer"
}
}
}
}
}
PUT /test/docs/1
{
"text" : "A dollar is 100 cents"
}
PUT /test/docs/2
{
"text" : "A dollar is onehundred cents"
}
POST /test/docs/_search
{
"query": {
"match": {
"text" : "100"
}
}
}
POST /test/docs/_search
{
"query": {
"match": {
"text" : "onehundred"
}
}
}
7. Javadoc
The Javadoc can be found here.
8. Gradle test report
The Gradle test report can be found here.
9. Credits
Many parts of this documentation are taken from
http://userguide.icu-project.org/ Copyright (c) 2000 - 2009 IBM and Others.
http://icu-project.org/apiref/icu4j/ Copyright (c) 2016 IBM Corporation and others.
Many examples are taken from
-
Elasticsearch ICU plugin https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-icu.html Copyright (c) 2016 Elastic
-
Lucene ICU analysis module https://github.com/apache/lucene-solr/tree/master/lucene/analysis/icu Copyight (c) Apache Software Foundation


[dscrd-chips] <Alright> his T9s are keeping the network unstuck
[dscrd-chips] <Alright>
[dscrd-chips] <ComputerGenie> if profit miner has more than 100TH, the difference between 21 and 35 TH as a network total is about the difference of a mouse pissing in the pacific ocean
[dscrd-chips] <Alright> difference is network being stuck for minutes as opposed to hours when the profit switcher leaves
[dscrd-chips] <ComputerGenie> now all you need to do is figure out how you're going to pay for the $800 per month that it costs in electric over the CHIPS earnings for me to do this
[dscrd-chips] <ComputerGenie> CRC error counter=603
fek me the amount of cards I have that are now at EOL sux
[dscrd-chips] <ComputerGenie> My fav batch 1 S9 is at : GH/S(avg) 7,038.562
[dscrd-chips] <ComputerGenie> 1/2 my shit is rekt and somehow I managed to jack the diff up by 50%
[dscrd-chips] <ComputerGenie> @SHossain the diff is now doubled, should I stop mining now?
[dscrd-chips] <SHossain> your coice. i'll leave my miners on just to keep the blocks going
[dscrd-chips] <ComputerGenie> jokes aside, with as much as is stuffed up, I'll probably go back over there and turn all off except 2 S9s(edited)
GatewayBOT31-Jul-18 01:04 PM
[dscrd-chips] <ComputerGenie> is setting up clean assetchains with only 10M bandwidth , so he might miss a few blocks and/or have a slew of late blocks
[dscrd-chips] <blackjok3r> Yeah, you will need at least 12 cores to sync them... then you can drop to 2 or 4.
[dscrd-chips] <ComputerGenie> well, I made a weak vm and ran ./assetchains
[dscrd-chips] <blackjok3r> hahah.... I tried to sync 1024 chains 500 - 1000 blocks long on a 12 thread intel server with 256GB of ram.... litteraly cant be done all at once.
[dscrd-chips] <blackjok3r> ended up rsyncing all the blocks from other servers.
GatewayBOT31-Jul-18 03:27 PM
[dscrd-chips] <xRobeSx> @ComputerGenie i tried doing ./assetchains on a low end server the other day and it was unresponsive for almost 24 hours
GatewayBOT31-Jul-18 03:45 PM
[dscrd-chips] <ComputerGenie> lol
[dscrd-chips] <ComputerGenie> well, it didn't help that it set 5 of them to gen
GatewayBOT31-Jul-18 04:05 PM
[dscrd-chips] <blackjok3r> you can do that, if you use cpulimit to 2% or something. lol
[dscrd-chips] <Alright> I'll consolidate them for a fee
[dscrd-chips] <Alright>
[dscrd-chips] <ComputerGenie> LOL
[dscrd-chips] <Alright> just send privkey here
[dscrd-chips] <ComputerGenie> consolidating them to 0 isn't what I have in mind
[dscrd-chips] <Alright> setup your payment processor
[dscrd-chips] <Alright> make it pay to a separate address every so often
[dscrd-chips] <ComputerGenie> I'm a solo miner, I don't have one of those
[dscrd-chips] <ComputerGenie>
[dscrd-chips] <Alright> >give solution
[dscrd-chips] <Alright> >oh I deleted that from my software
[dscrd-chips] <ComputerGenie> I had a script that bunches 660 UTXOs, but I can't seem to find it; I guess I'll have to remake it
[dscrd-chips] <ComputerGenie> because I had the consolidation script, I never had any need for "payments" from myself to myself for myself
[dscrd-chips] <Alright> did you remove payment processor from knomp?
[dscrd-chips] <Alright> that's pretty useful for asset chains
[dscrd-chips] <Alright> you can set it up to send .05 coin payments instead of dick loads of .0001s
[dscrd-chips] <ComputerGenie> no, the public release will have payments because it's expected for non-solo pools
GatewayBOT01-Aug-18 02:51 AM
[dscrd-chips] <blackjok3r> lol.... I just mine to a pubkey thats not imported anywhere...
[dscrd-chips] <blackjok3r> for AC that is..
[dscrd-chips] <blackjok3r> guess I need to sort out some way of recovering them too...
GatewayBOT03-Aug-18 12:27 AM
[dscrd-chips] <Alright> @Dealer
GatewayBOT03-Aug-18 08:59 AM
[dscrd-chips] <jl777c> sg777 made the game logic which can find it out the the player who got the highest card
https://github.com/sg777/bet
GitHub
sg777/bet
Contribute to bet development by creating an account on GitHub.
to run this in different terminals one needs to do run ./bet dcv ./bet bvv ./bet player and ./bet player in four diff terminals
to run with curl , I'm adding that documentation...
to write CC contract for these what are all the necessary parameters that you would require in the winning result, let me know, I'll add those..
The winner of the game is player :0, it got the card:4
{
method: "result"
playerid: winner_player_id
cardid: highest_Card_id
pubkeys: [public keys of all the players]
}
Contribute to bet development by creating an account on GitHub.
GatewayBOT03-Aug-18 09:19 AM
[dscrd-chips] <blackjok3r> cool I got held up testing this will start on it tomorrow now AWS has been sorted on scaletest
GatewayBOT03-Aug-18 09:17 PM
[dscrd-chips] <SHossain> @Alright my ASICs are down now. they burnt the socket board of the garden shed where i was operating them from. guess, that wasn't powerful enough. need to wait until my friend gets that fixed
Contribute to chips3 development by creating an account on GitHub.
GatewayBOT06-Aug-18 11:57 AM
[dscrd-chips] <kpprabhu> Can someone share me guide on wallets and how to move chips from coinexchange
[dscrd-chips] <ComputerGenie> @kpprabhu When you "have coins" on an exchange, it's just like having money in a bank: you are at their mercy if/when you ever get what is owed to you
[dscrd-chips] <ComputerGenie> you don't actually own any coins on any centralized exchange, you have a balance on a ledger sheet and a promise
[dscrd-chips] <Alright> ....and the network is stalling again because genie rage quit (edited)
[dscrd-chips] <Alright> @SHossain how's that wiring?
[dscrd-chips] <SHossain> couldn't focus on that yet
[dscrd-chips] <SHossain> Don't mess with Genie. we had a nice plan :abusedsmily:
GatewayBOT08-Aug-18 12:19 AM
[dscrd-chips] <blackjok3r> We need a plan about CHIPS, can we not switch its algo away from ASIC to stop that much hash being spammed at it?
[dscrd-chips] <blackjok3r> A CPU algo seems to be a good idea, although I have no idea how much work it would be to change that.
[dscrd-chips] <blackjok3r> I know this is not something james would have time to do either. I am not asking him to do it.
GatewayBOT08-Aug-18 07:48 AM
[dscrd-chips] <jl777c> maybe it can be changed to verushash
GatewayBOT08-Aug-18 08:04 AM
[dscrd-chips] <blackjok3r> How much work is that to do?
GatewayBOT08-Aug-18 08:57 AM
[dscrd-chips] <jl777c> not sure. havent dealt with mining algo code in the bitcoin codebase
[dscrd-chips] <jl777c> but it cant be that hard as that is the most common change forks make
GatewayBOT08-Aug-18 01:58 PM
[dscrd-chips] <SHossain> Verushash sounds like a good plan
GatewayBOT08-Aug-18 02:31 PM
[dscrd-chips] <blackjok3r> Do you want me to see if I can get a Dev for this? I might know someone.
GatewayBOT08-Aug-18 03:00 PM
[dscrd-chips] <blackjok3r> I have another suggestion. To change to dgw v3 difficulty algo. It will decrease difficulty even when no blocks are being mined, but also ramp up much much faster if somebody decides to "profit switch " it.
[dscrd-chips] <blackjok3r> I will look over next few days if there are any SHA256 coins using this, and see if we can copy paste it in.
[dscrd-chips] <daemonfox> Seconding Verushash
GatewayBOT08-Aug-18 03:27 PM
[dscrd-chips] <helios> where is the oradmap?
[dscrd-chips] <blackjok3r> It depends on how hard it is, I am def down for verushas even though i cant mine it with my main server. I do have a 2700X on the way next week.
[dscrd-chips] <blackjok3r> IMO as bounty manager, this is the most important thing to get sorted for CHIPS, if the chain is stalled it makes testing anything apart from BET pretty hard.
GatewayBOT08-Aug-18 05:15 PM
[dscrd-chips] <kpprabhu> Guys..is it safe to move chips now. Blocks are not that frequent. Can my transaction get stuck ?
GatewayBOT08-Aug-18 05:53 PM
[dscrd-chips] <jl777c> yes we should offer a bounty to change CHIPS to verushash
GatewayBOT08-Aug-18 10:07 PM
[dscrd-chips] <Alright> @Dealer
[dscrd-chips] <Alright> Can I get a mod role here?
[dscrd-chips] <Alright> ability to delete spam
[dscrd-chips] <SHossain> kicked!
[dscrd-chips] <SHossain> sorry, i can't assign role here. Ask @jorian or jl777
[dscrd-chips] <jl777c> it doesnt seem to let me
GatewayBOT09-Aug-18 12:45 AM
[dscrd-chips] <blackjok3r> OK so we want to change to VerusHash, I guess with that difficulty algo can stay much the same, we don't need to change yo dgw v3 which stops profit switchers stalling the chain?
[dscrd-chips] <ComputerGenie> thinks "we" is not the correct term in this case
GatewayBOT09-Aug-18 01:25 AM
[dscrd-chips] <blackjok3r> Do we need to vote on it? Lol I think your 30k chips is pretty in significant.


{% extends "_post.html" %}
{% hyde
title: "d"
snip: "Generate documentation and get on with your life."
created: 2012-01-23 20:00:01
exclude: False
%}
{% block article %}
[d](http://sjl.bitbucket.org/d/) generates documentation from Markdown files
and lets you get on with your life.
It's open source (MIT/X11 licensed) on [BitBucket][] and [GitHub][].
[BitBucket]: http://bitbucket.org/sjl/d/
[GitHub]: http://github.com/sjl/d/
{% endblock %}


Tourney Setup
This page shows you how to create a simple tourney and define the player list. It also discusses accessibility requirements for specific table numbers.
Creating a tourney
Decide on a name for your tourney and enter it into the "Tourney name" box. This name is used as the filename for the tourney's database file, and it may only contain letters, numbers, underscores and hyphens - no spaces. So cotrodmore2020 is okay, but Countdown In Trodmore 2020 is not. When you've entered the name, click Create Tourney. When that succeeds, click the "click here to continue" link and you will land on the Tourney Setup page.
The Tourney Setup page
The Tourney Setup page allows you to load the list of players and specify the rules of the tournament. To get back to this page at any time, you can click the Tourney Setup link in the sidebar.
First, enter the player names
A tourney isn't much of a tourney without players. The text area under the heading Player List is where your list of players goes. Put each player name on a separate line, starting with the highest-rated player and finishing with the lowest-rated player. If your tournament is split into divisions, put a hyphen (-) on a line by itself to indicate where the splits are.
Don't worry if the number of players isn't an exact multiple of your desired group size (usually 2 or 3). The fixture generators will automatically generate games against Prune if required. In earlier versions of Atropine the user had to add Prunes manually with a rating of 0, but as of 1.2.1 this is no longer required.
Here's an example list of players you can copy and paste into the player list box.
Cymbelina Spatchcock Lord Hoppleton Compton Pauncefoot Vampira Smithersby Tinned Peaches Infumbula Trousers Jacquard Hookflash Trilby Battenberg Blancmange McTaggart Sincerity Sandwich Salzburg Pound-Quedgeley
Then click Save Player List.
Now deal with the other stuff
The Tourney Setup stage is also where you can specify other attributes like how many rounds are expected (so it can automatically work out if someone's qualified for the final) and which tables are the designated Acccessible Tables, if any.
Accessible Tables
You may want to ensure that certain players are always assigned to a specific table number (or one of a set of numbers) if possible. Usually this is to take account of accessibility requirements for wheelchair users at the venue. Atropine provides a mechanism to help with this. The decisions made by fixture generators of who plays whom are not affected by these accessibility requirements - the only thing affected is which table number the player and their opponents are assigned to.
Tell Atropine which are the accessible tables
In the Accessibility section of the Tourney Setup page you can define which are the "accessible" tables by putting a list of table numbers in the box, separated by commas.
Tell Atropine which players require accessible tables
On the setup page for a player, you can tick a box to mark them as requiring an accessible table. You can reach this page using the Players... link in the sidebar under Tourney Setup. Click the name of the player, tick the Requires accessible table box, and Save Changes. You can also set a "preferred table number" for that player if necessary.
Players who require an accessible table will be placed on one if possible. Once again, accessibility requirements will not affect who plays whom, only the number of the table that player and their opponents play on.
If there are more players than accessible tables, the fixture generator page will warn you.
Next step
When you've entered the player list, the next step is to Generate Fixtures.


Apple confirms Mac Pro manufacturing begins in Texas as Trump visits
Tim Cook also tweets about a new Apple campus to double check Trump is listening
by Henry BurrellThe new Mac Pro is long overdue by Apple standards. It is to go on sale in December, six whole years after the ‘trash can’ Mac Pro that was woefully behind the expectations of Apple’s true professional audience.
Apple has already confirmed that the new Mac Pro would be made at a facility in Austin, Texas but the company has still seen fit to publish a press release with pictures of it actually happening.
Later, as seen in the above video, President Donald Trump visited the plant. He had campaigned for the presidency with the suggestion all Apple products should be made in the USA.
Apple CEO Tim Cook tweeted the announcement that also confirms the start of construction for a new Apple campus based in the city:
The factory down the road is already fully operational but the building of a new 133-acre campus for 5,000 employees is a clear sign Apple wants to keep Donald Trump on side by permanently stationing workers in the rare American cities where manufacturing of Apple products happens.
“Building the Mac Pro, Apple’s most powerful device ever, in Austin is both a point of pride and a testament to the enduring power of American ingenuity,” said Tim Cook. “With the construction of our new campus in Austin now underway, Apple is deepening our close bond with the city and the talented and diverse workforce that calls it home. Responsible for 2.4 million American jobs and counting, Apple is eager to write our next chapter here and to keep contributing to America’s innovation story.”
Apple said the new campus costs $1 billion and would eventually be able to house 15,000 employees. It will open in 2022.


{{ self.title() }}
Back to top
Created with Flask, Bootstrap, Bootply, Glyphicons, Bootstrap Glyphicons and a lot of cat hair.


Demonstrates:
Pinned columns.
Sub Headers under the main headers. They are locked to the top of the grid. Renamed from `headerRow` to `subHeaders`.
Use of `subHeaderRenderer` to draw subHeader cell contents.
-1 subHeader
+1 subHeader
Toggle subHeaders


NFL
Home
Stats
Injuries
News
Passing yard leaders (Top 5)
Philip Rivers: 1613
Andy Dalton: 1518
Matt Ryan: 1456
Eli Manning: 1417
Tom Brady: 1387


Blockchain and Cryptoasset Analytics
Aggregated data visualization, hybrid AI prediction and computer aided trading
Manifesto
Blockchain and Cryptoasset Analytics develops an intelligent data driven application to monitor blockchain projects and to analyze cryptoassets from both utility and speculation perspectives. We target blockchain entrepreneurs, investors and traders all along the life of projects: token generation, listing on secondary market, product delivery, product usage, and token valorization.
Beside real-time analytics service, few research and analysis will be delivered through blog which serves as our information service.
Aggregated data visualization
Hybrid AI prediction
Computer aided trading
About
Our team is comprised of enthusiastic scholars in optimization and machine learning, software engineers and marketting manager. We are advised by experienced institutional brokers / investors as well as high-profile university professors in data science / statistics.


Last night I watched Soledad O’Brien’s CNN Black in America: The New Promised Land - Silicon Valley special that offered a lesser known perspective on an industry I know well. The special followed black entrepreneurs who participated in the first annual NewMe startup accelerator. After the special aired, I watched Mario Armstrong’s Town Hall and heard plenty of great advice from accomplished panelists of different races and backgrounds. In just an hour and a half they covered a range of cultural problems and shared opinions on solutions.
The best thing about pieces like this is that they focus on a problem and hopefully, get us all riled up to fix it - but do we? One of the audience members stood up and reminded the room that the change wasn’t going to come down from the panelists, but come up from them - that they had to make the change for themselves.
Right here and right now, I’d like to do something to address this problem. We heard over and over again the importance of networks and of having the right conversation with the right people. Entrepreneurs were advised to “insert” themselves into social circles of Silicon Valley. I agree with panelist/engineer/founder Hank Williams that taking baby steps is the key to both programming and life, so here’s my step for today:
I’ll be hosting open video chats specifically to mentor people who aren’t already in my established social circles.
Here’s My Open Mentoring Availability, starting with
- Thursday, November 17 at 1:00pm, 1:15pm, and 1:30pm ET
- Wednesday, November 23 at 2:00pm, 2:15pm, and 2:30pm ET
My goal is to make it less uncomfortable for new people to get involved in tech and startup communities.
I hope to see other leaders of these communities offer their time and guidance as well. I’ve written some and talked a whole lot about personal scheduling and efficiency, so I want to be clear that this is a relatively small, effective commitment - I plan to give 45 minutes to conversations with up to three new people and to spend the remaining 15 minutes of my alotted hour following up or laying the groundwork to help those people. This will amount to roughly one hour a week. If you’d like to help, too, consider joining the Ohours mentoring topic.
If you or anyone you know aspires to be an entrepreneur, engineer, teacher, computer scientist, wielder of data, or perhaps is now a girl scout, military brat, data lover, amateur organizational psychologist, blonde - or maybe none of the above, but would like to talk with someone who is - please send them my way. My door is wide open.


---
sort_order: 13
tei_id: rdx_191dd.p.idp866128
annotation_count: 0
images:
small-thumbnail: https://readux.ecds.emory.edu/books/emory:191dd/pages/emory:rfcj0/mini-thumbnail/
json: https://readux.ecds.emory.edu/books/emory:191dd/pages/emory:rfcj0/info/
full: https://readux.ecds.emory.edu/books/emory:191dd/pages/emory:rfcj0/fs/
page: https://readux.ecds.emory.edu/books/emory:191dd/pages/emory:rfcj0/single-page/
thumbnail: https://readux.ecds.emory.edu/books/emory:191dd/pages/emory:rfcj0/thumbnail/
title: Page 13
number: 13
---
{% raw %}A PRACTICAL JOKE. 13{% endraw %}
{% raw %}=' Let me finish," said Squire. " We'll just step out long{% endraw %}
{% raw %}enough to give him time to come in and eat, and, when the{% endraw %}
{% raw %}fatal deed is done, we will reappear in time to assure him he{% endraw %}
{% raw %}has just eaten our wolf-bait, strychnine and all. Lord ! won't{% endraw %}
{% raw %}it be fun to see his roaring and kicking? for be wUl be{% endraw %}
{% raw %}frightened to death."{% endraw %}
{% raw %}" Good," cried Doc.{% endraw %}
{% raw %}"ExceUent," echoed Flag. "But we must hurry, for I{% endraw %}
{% raw %}hear his whistle already."{% endraw %}
{% raw %}" There goes the stuff on the table. Let's run now, boys."{% endraw %}
{% raw %}Doc quite forgot his back-ache, and was lively as a cricket,{% endraw %}
{% raw %}while the others were not behind.{% endraw %}
{% raw %}"Where are you going?" called Ed, who at that moment{% endraw %}
{% raw %}came within hail.{% endraw %}
{% raw %}" Going to see if old Newcome isn't staking his claim by{% endraw %}
{% raw %}moonlight," answered Squire, cheerfully; " be back again{% endraw %}
{% raw %}directly,"{% endraw %}
{% raw %}The three retired to a safe distance, and discussed the best{% endraw %}
{% raw %}manner of giving the alarm.{% endraw %}
{% raw %}The unsuspecting Ed lunched off the broken remains of the{% endraw %}
{% raw %}supper with the relish of a hungry man, and then betook{% endraw %}
{% raw %}himself to a newspaper fresh from the " States," whose date{% endraw %}
{% raw %}made it two weeks old.{% endraw %}
{% raw %}" You are late this evening, Ed," remarked Squire, as the{% endraw %}
{% raw %}conspirators returned; " got any news ?"{% endraw %}
{% raw %}" Not much ; some interesting letters here from the Crimea.{% endraw %}
{% raw %}That's pretty much all that's worth reading two weeks after{% endraw %}
{% raw %}printing. Confounded bore to be deprived of the daily news,{% endraw %}
{% raw %}isn't it ?"{% endraw %}
{% raw %}" 'Tis so; but then a fellow soon gets used to it. It's aU{% endraw %}
{% raw %}in habit."{% endraw %}
{% raw %}"Yes, like every thing else," rejoined Doc. "Had any{% endraw %}
{% raw %}supper, Ed ?"{% endraw %}
{% raw %}" WeU, I helped myself to the leavings; guess that'll do."{% endraw %}
{% raw %}The Doctor gave a start, and turned to survey the table.{% endraw %}
{% raw %}" Good heaven ! did you eat that stuff on the table ?"{% endraw %}
{% raw %}" I eat some meat and bread, to be sure I did. But what{% endraw %}
{% raw %}is the matter ?


{% extends "layout.html" %} {% block body %}
Example of cluster sampling.
Step 1. Identify clusters in the data by location.
Step 2. Randomly select 3 clusters to sample from:
Step 3. Randomly sample 8 cases from each selected cluster, collecting a total of 24 cases:


TooltipDirective that adds tooltip to any element.
Hover me
Close
Following mouse
With -80px offset
paTooltip
the text to display
paTooltipType
action
tooltip appears after 0.8s sec hover and is positioned relatively to targeted content, whereas
system
tooltip appears after 0.48s and follows the mouse.
(default: action)


Three fire crews tackle wood-burning stove fire in Lytham
Firefighters were called to a fire involving a wood-burning stove in Lytham today.
by Wes HolmesFire engines from Blackpool, St Annes and Penwortham were attended the fire on Park View Road at 12.35pm.
Firefighters used a ladder, a nimbus nozzle and thermal imaging camera to extinguish the fire. They remained at the scene for several hours.


Tutorial¶
This tutorial shows how to create an agent for an experiment as discussed in [REFERENCE TO CCR PAPER].
Agent specifications:
The agent is embedded in a survey flow, and is presented during the survey
The agent validates a participant id (to start the conversation) and provides a conversation code (at the end of the conversation)
The agent automatically assigns users to conditions - humanlike or machine - and interacts different with each participant depending on the condition
A sentiment analysis tool (Vader) is applied to each utterance by the participant, and the results are stored in the logs table in the database
Installation¶
The basic steps to set up an agent are explained in Installation and Setup Guide. After the basic setup is done, the agent should be up and running - i.e., providing responses - even if irrelevant - to inputs provided by the participant through the web chat (or other channels).
With the agent running, the researcher can then customize the agent for an experiment, as outlined in the following sections.
Configurations in the dialogue management tool¶
Four intents are created in DialogFlow:
Welcome: starts when the participant greets the agent, asks for the participant id, and - if the participant id is valid - ends with a token (
[PARTICIPANTID_VALID]
) for CART to know that the next intent (Experiment) needs to be connectedExperiment: starts when CART has received a token indicating that the participant id is valid (
[PARTICIPANTID_VALID]
) and has sent a start token ([START_EXPERIMENT]
) to DialogFlow. It ends when all the questions in the experimental setup are asked to the participant, providing a conversation code and telling the participant to continue with the survey.Invalid participant id: intent that is triggered by CART when the participant id provided by the participant in the Welcome intent is not valid.
Validate participant id: fallback intent, which provides instructions for the participant should she want to try to start over (and provide a new participant id).
A copy of the agent, including the full dialogue, is available in the folder [ANONYMIZED LINK TO THE TUTORIAL FOLDER ON GITHUB]
Configurations in CART¶
The full config.yaml
file (without the authentication credentials for the API services, which need to be filled out by each researcher) is also available at [ANONYMIZED LINK TO THE TUTORIAL FOLDER ON GITHUB]. The key configurations look as follows:
In the other
section, the conversationcode_suffix and the conversationcode_base are added to ensure that participants receive a conversation code at the end of the conversation, and that it always starts with a B, and counting from number 1500 (to prevent low numbers)::
other:
conversationcode_suffix: B
conversationcode_base: 1500
The experimental_design
section indicates that CART will assign participants to conditions using the random_balanced
option, and that there will be two conditions, one fr machine, and another for the humanlike agent.:
experimental_design:
assignment_manager: CART
assignment_method: random_balanced
conditions:
condition_1:
condition_name: machine
condition_2:
condition_name: humanlike
The rephrases
section has the specific text that varies per condition. The tokens (e.g., AGENTNAME) are included as placeholders in the DialogFlow configurations, so that CART can substitute them depending on the condition the participant is in.
rephrases:
condition_1:
AGENTNAME: NutriBot
ACKNOWLEDGEMENT1: OK. The system needs some information about you before it can make a recommendation.
ACKNOWLEDGEMENT2: OK.
ACKNOWLEDGEMENT3: OK, and
RECOMMENDATION: OK. Based on the your answers, the recommended breakfast is
CLOSURESTART: Thank you.
CLOSUREEND: Conversation ended.
condition_2:
AGENTNAME: Ben
ACKNOWLEDGEMENT1: Great! Let's get started then. I need to know a bit more about you before I can make a suggestion.
ACKNOWLEDGEMENT2: Gotcha!
ACKNOWLEDGEMENT3: Cool! And, just between the two of us
RECOMMENDATION: Thanks! Hey... so here's an idea for your breakfast...
CLOSURESTART: OK! Thanks a million for chatting with me!
CLOSUREEND: Have a great day!
The connect_intents
section is used to make the connection between the Welcome and Experiment intents in DialogFlow when the participant id is considered valid by CART.
connect_intents:
PARTICIPANTID_VALID: START_EXPERIMENT
The questionnaire_flow
section is configured to ensure that it is enabled and specify that the conversation with the agent takes place during the survey. As the Welcome intent asks for the participant id, this section further specifies that the parameter participantid in DialogFlow’s responses should be looked for and parsed to detect participant id’s. Only id’s starting with an A (and ending with a number) are accepted. Two tokens are defined to handle cases when the participant id is valid or invalid.
questionnaire_flow:
enabled: True
moment: during
config_during:
participantid_dialog_field: participantid
participantid_not_recognized: PARTICIPANTID_INVALID
participantid_recognized: PARTICIPANTID_VALID
participantid_valid_suffixes: A
Finally, as sentiment analysis will be applied, the special_functions
section is added with the name of the function, where to store the results in the database (and the type of field). As no override is configured, the funcion_action
is set to False.
special_functions:
function_1:
function_name: check_sentiment
store_output: logs
store_output_field: sentiment
store_output_field_type: float
function_action: False
For the sentiment analysis to run, two additional files need to be edited. First, the requirements.txt
is edited to include vaderSentiment
as a required Python module to be installed. Second, the special_functions.py
file (inside the helpers folder) is edited to include the function that processes the user_message:
## EXAMPLE - SENTIMENT ANALYSIS
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
def check_sentiment(user_message):
try:
sentiment = analyzer.polarity_scores(user_message)
sentiment = sentiment['compound']
return sentiment
except:
return None


GO-RUSH drivers say that since joining us as partners, they have seen their income increase and reached more customers through our app. They also have access to health and accident cover, financial services and insurance, as well as affordable automatic payments and many other benefits. We proudly tell everyone that we are an Indonesian startup with a social mission. We aim to improve social welfare by ensuring efficiency in the market. We strive to spread positive social impact through technology, increasing GO-RUSH drivers incomes and ensuring a better standard of living for themselves and their families.
Set your own schedule, You can drive with GO-RUSH anytime, day or night, 365 days a year. When you drive is always up to you, so it never interferes with the important things in your life. Earn more at every turn, Trip fares start with a base amount, then increase with time and distance. And when demand is higher than normal, drivers earn more. Let the app lead the way, Just tap and go. You will get turn-by-turn directions, tools to help you earn more, and 24/7 support. If you do not have a smartphone, we can connect you to one.


trtf: Transformation Trees and Forests
Recursive partytioning of transformation models with
corresponding random forest for conditional transformation models
as described in 'Transformation Forests' (Hothorn and Zeileis, 2017, <arXiv:1701.02110>)
and 'Top-Down Transformation Choice' (Hothorn, 2018, <doi:10.1177/1471082X17748081>).
| Version: |
0.3-3 |
| Depends: |
mlt (≥ 1.0-2), partykit (≥ 1.2-1) |
| Imports: |
Formula, sandwich, grid, stats, variables, libcoin, utils |
| Suggests: |
survival, TH.data, coin |
| Published: |
2018-09-18 |
| Author: |
Torsten Hothorn [aut, cre] |
| Maintainer: |
Torsten Hothorn <Torsten.Hothorn at R-project.org> |
| License: |
GPL-2 |
| NeedsCompilation: |
no |
| Materials: |
NEWS |
| In views: |
MachineLearning |
| CRAN checks: |
trtf results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=trtf
to link to this page.


I am a Computer Science and Math major who graduated from the New Jersey Institute of Technology in May 2018. I have a passion for creating things - whether it be apps or algorithms or designs.
Software development is my main competency. I love to code. I like the challenge of figuring out how to solve problems using as few resources as possible. See below for some of the skills I have and some projects I have created in my free time.
Trillium Trading is a high-stakes tradings company located in New York City. In the LABS section of Trillium, I collaborated with a team of interns to create a webapp which displays trading data in a visual and intuitive manner.
Forbes Media is located in Jersey City, New Jersey. As a part of the Forbes.com team, I analyzed Adblock development trends as well gained experience with Google Tag Manager V2 & Google Analytics.
As a CS100 assistant, I taught students Python and computer science related problem solving techniques. I also aided the professor with responsibilities such as grading homework.
GPA: 3.88 | Albert Dorman Honors College Scholar | NJIT Splash Founding Organizer, National Society for Leadership and Success, Honors Technology Observer Editor in Chief, Nucleus Yearbook Head Layouts Editor, Association for Computing Machinery
A semester in Seoul, South Korea where I studied Math and Software Engineering at one of Korea's top Universities. There I gained fluency in Korean and adapted to an unfamiliar environment and embraced cultural differences.
When I am not coding I like designing for my school yearbook and magazine, so I have spent a lot of my free time creating with indesign/photoshop/illustrator. I also enjoy playing songs on the ukulele, watching Korean dramas, and baking cookies with too much butter.


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 4
This lentil stew is so comforting – the warm spices are given a delicious lift by the mouth-watering, sweet caramelised onions.
This meal provides 471 kcal, 25g protein, 51g carbohydrate (of which 13.5g sugars), 19g fat (of which 10.5g saturates), 14g fibre and 1.5g salt per portion.
Cook the bacon or pancetta in a deep pan over a moderate heat to let the fat slowly ooze out . Roughly chop two of the onions and add them to the pan. Cut the carrots into chunks and add to the pan. Cover and let it steam for a few minutes. Add the paprika, cinnamon, then grate in ½ of the nutmeg. Add the lentils, stock and 500ml water, cover and leave for 30 minutes until the lentils have softened.
While that is slowly cooking, slice the remaining two onions and, in another pan, cook them very slowly in butter until golden brown. Finish with a grate of nutmeg.
The last thing to add to the lentils is a handful of chopped parsley. Serve with a dollop of crème fraiche and pile the caramelised onions on top.


8h I commend the participants of the Loya Jirga as they gather to consolidate national support for peace in Afghanistan. After 40 years of war, bloodshed, and destruction, the parties are ready to embark on a political process to reach a negotiated settlement. Secretary Pompeo · 9h US government account For decades @ASEAN has helped foster a more stable, prosperous, and peaceful region and today it sits at the heart of the U.S. vision for a free and open Indo-Pacific region. Grateful for this partnership and delighted to wish the ten ASEAN countries a happy 53rd #ASEANDay! Image Secretary Pompeo · 16h US government account Good call today with Philippine Secretary of Foreign Affairs @teddyboylocsin to discuss our shared interests in the South China Sea. The U.S.-Philippine Alliance is vital to a free and open Indo-Pacific. #FriendsPartnersAllies Secretary Pompeo · 17h US government account Great speaking with Indian Minister of External Affairs @DrSJaishankar about the U.S.-India relationship and our work to combat the COVID-19 pandemic. We remain united to advance peace in Afghanistan, and to a secure and sovereign Indo-Pacific in which all countries can prosper.
Media Likes Secretary Pompeo’s Tweets Secretary Pompeo · 9h US government account For decades @ASEAN has helped foster a more stable, prosperous, and peaceful region and today it sits at the heart of the U.S. vision for a free and open Indo-Pacific region. Grateful for this partnership and delighted to wish the ten ASEAN countries a happy 53rd #ASEANDay! Image Secretary Pompeo · 16h US government account Good call today with Philippine Secretary of Foreign Affairs @teddyboylocsin to discuss our shared interests in the South China Sea. The U.S.-Philippine Alliance is vital to a free and open Indo-Pacific. #FriendsPartnersAllies Secretary Pompeo · 17h US government account Great speaking with Indian Minister of External Affairs @DrSJaishankar about the U.S.-India relationship and our work to combat the COVID-19 pandemic. We remain united to advance peace in Afghanistan, and to a secure and sovereign Indo-Pacific in which all countries can prosper. Who to follow Secretary Pompeo and 2 others follow Vice President Mike Pence @VP US government account Vice President Mike Pence. Husband, father, & honored to serve as the 48th Vice President of the United States. Tweets may be archived: http://wh.gov/privacy GOP @GOP Text TWITTER to 80810 to receive exclusive updates from the Republican National Committee! Donald J. Trump follows Leader McConnell @senatemajldr U.S. Senate Majority Leader Mitch McConnell Follow @McConnellPress & @SRCC Show more Secretary Pompeo · 18h US government account I thank Special Representative Brian Hook for his 3+ years of service to the State Department and @realDonaldTrump as he moves on to the private sector. He has been a valued member of my leadership team. Secretary Pompeo · 19h US government account Excited to travel to the Czech Republic, Slovenia, Austria, and Poland to meet with counterparts on a range of important issues, including COVID-19 recovery, regional and global security, and to commemorate key historical events. Secretary Pompeo’s Travel to the Czech Republic, Slovenia, Austria, and Poland - United States... Secretary of State Michael R. Pompeo will travel to Prague and Pilsen, Czech Republic; Ljubljana, Slovenia; Vienna, Austria; and Warsaw, Poland August 11 to August 15. While in Pilsen, Secretary... state.gov Secretary Pompeo · 19h US government account Today, the U.S. imposed financial sanctions on a network of smugglers contributing to instability in Libya and depriving the Libyan people of economic resources. We will continue to take concrete actions in response to those who undermine Libya’s peace, security, or stability. Secretary Pompeo · 20h US government account Spoke today with Egyptian Foreign Minister Shoukry about our shared interests in regional peace and stability. We discussed developments in Libya and our desire to see stability and prosperity there. A lasting @UN -brokered ceasefire and de-escalation are critical to that vision.


Mother hacks two-month old baby, son to death in Imo
From Damian Duruiheoma, Owerri
Operatives of the Imo State Police command have arrested a house wive, Mrs. Ukamaka Ezike, for allegedly hacking two of her three little children to death in Awo Idemili community in Orsu council area of the state.
According to the Police Public Relations Officer (PPRO), Imo State Police Command, Orlando Ikeokwu, in a statement in Owerri, on behalf of the Commissioner of Police, Rabiu Ladodo, said the suspect’s husband, Christian Ezike, had reported to the command at the weekend that while he was away, his wife on November 15, allegedly beat their biological children, including a two- month old baby to a critical condition.
The police said that injuries the children received from the beating led to them being hospitalized, disclosing that the two -month old and the two- year old died while receiving treatment in the hospital.
Read Also: Police arrest three suspects for stealing female underwear
The suspect, the statement said, was later arrested, while investigation is on going.
The statement said: “On the 16/11/19,at about 9am,one Christian Ezike of Awo Idemili, in Orsu LGA, reported at the Divisional Police Headquarters, Orsu, that on the 15/11/19,while he was away his wife, Ukamaka Ezike, beat up this three children, Kosarachukwu Ezike four years -old, Chinwendu Ezike, two years -old, Chinecherem Ezike two -months old, they were rushed to the hospital,and Chinecherem and Chinwendu died while receiving treatment, suspect has been arrested and investigation has commenced accordingly.”


One-on-ones
Overview
One-on-ones are vital processes in every company. Managers need to spend some time with their employees to let them share ideas and concerns. That's also a great way to strengthen the relationships between them. Most importantly, it ensures that employees feel like they are working towards their goals.
OfficeLife provides a convenient way to do one-on-ones.
At its core, one on one is a process between the employee and his/her manager. In real life, they both have some kind of agenda that is discussed every time the two meet. OfficeLife is no different. It will give you an entry for each occurrence of the one on one process, and both participants can participe in creating the agenda or changing things the way they want.
OfficeLife won’t manage the recurrence of this meeting. It’s up to the manager or the direct report to create a new entry of this meeting, every time it needs to happen.
Creating a one-on-one
The feature of One-on-ones exists automatically if an employee is assigned to a manager. It will appear on
- the dashboard of the direct report,
- the Manager tab on the dashboard of the manager.
A one-on-one entry is composed of:
- talking points,
- action items,
- optional notes.
Each talking point and action item can be checked to make sure the point has been covered during the discussion. However, if there are action items that are not checked during the meeting, they will be carried over the next entry (as talking points) so it’s not forgotten. That lets you make follow ups and make sure nothing falls into the cracks.
Creating another one-on-one
Every one-on-one meeting needs its own agenda. This is why on every entry, there is a button that says Mark as happened
.
This button marks the current entry as completed, and creates a new entry.
Once an entry is completed, its content can’t be changed, ever.
Editing a one-on-one
One-on-ones can be modified by either the manager or the direct report, as long they have not been marked as completed. In this case, the entries can’t be modified and are in a read-only mode.
Viewing past entries
All previous entries (and of course, the current entry) can be consulted by either the manager or the direct report on the dashboard, as well as on the profile of both employees.
Employee’s profile page
On the employee's profile page, the 3 latest entries that the direct report had with his manager appear, as seen below.
When we click on one of these entries, you can see the details of the one on ones.
You also have access to a page listing all the one on ones that ever happened between the employee and his manager, or previous managers – even if the employee currently doesn't have any managers. This page indicates two useful statistics:
- how many occurences of one on ones the employee has had in the last 365 days,
- how many days on average are there between one on ones sessions.
This transparency might be very useful for both the employee and his manager, so they both know if they should meet more often.
No one, except the employee, the manager or someone with either the HR or administrator role, can view those one on ones.
On the dashboard for managers
When you are a manager, you need to have a quick way to see all one on ones with all your direct reports.
This is why all the one on ones are located inside the Manager tab on the dashboard, as seen below.
⏰ This document was last changed on Wednesday, 25-Nov-2020 02:59:35 UTC.
- If you spot an error or a need for improvement and would like to fix it yourself in a pull request, edit this page on Github.
- If you like to suggest an improvement to this doc, create an issue on the repository on Github.


#include <validate.h>
Inheritance diagram for TStringLookupValidator::
Public Methods | |
| TStringLookupValidator (TStringCollection *aStrings) | |
| ~TStringLookupValidator () | |
| virtual void | error () |
| virtual Boolean | lookup (const char *s) |
| void | newStringList (TStringCollection *aStrings) |
Static Public Methods | |
| TStreamable* | build () |
Static Public Attributes | |
| const char* const | name |
Protected Methods | |
| TStringLookupValidator (StreamableInit) | |
| virtual void | write (opstream &os) |
| virtual void* | read (ipstream &is) |
Protected Attributes | |
| TStringCollection* | strings |
Definition at line 835 of file validate.h.
|
|
Constructs a string lookup validator object by first calling the constructor inherited from TLookupValidator, then setting strings data member to `aStrings'. |
|
|
Disposes of the list of valid strings by calling newStringList(0), then disposes of the string lookup object by calling the destructor inherited from TLookupValidator.
|
|
|
Each streamable class needs a "builder" to allocate the correct memory for its objects together with the initialized virtual table pointers. This is achieved by calling this constructor with an argument of type StreamableInit. |
|
|
Called to create an object in certain stream-reading situations. Reimplemented from TLookupValidator. |
|
|
Displays a message box indicating that the typed string does not match an entry in the string list. Reimplemented from TValidator. |
|
|
Returns True if the string passed in `s' matches any of the strings in strings data member. Uses the strcmp() function to determine if `s' is present. Reimplemented from TLookupValidator. |
|
|
Sets the list of valid input strings for the string lookup validator. Disposes of any existing string list, then sets strings data member to `aStrings'. Passing 0 in `aStrings' disposes of the existing list without assigning a new one. |
|
|
Reads from the input stream `is'. Reimplemented from TValidator. |
|
|
Writes to the output stream `os'. Reimplemented from TValidator. |
|
|
Undocumented. Reimplemented from TLookupValidator. Definition at line 906 of file validate.h. |
|
|
Points to a string collection containing all the valid strings the user can type. If strings data member is 0, all input will be invalid. Definition at line 883 of file validate.h. |