The Week in Review program for Week 2 brings together many of the skills you've acquired over the past fortnight and produces a powerful program.
This demonstration of linked lists utilizes virtual functions, pure virtual functions, function overriding, polymorphism, public inheritance, function overloading, forever loops, pointers, references, and more.
The goal of this program is to create a linked list. The nodes on the list are designed to hold parts, as might be used in a factory. While this is not the final form of this program, it does make a good demonstration of a fairly advanced data structure. The code list is 311 lines. Try to analyze the code on your own before reading the analysis that follows the output.
Listing R2.1. Week 2 in Review listing.
145:        // needs copy constructor and operator equals!
Analysis: The Week 2 in Review listing provides a linked list implementation for Part objects. A linked list is a dynamic data structure; that is, it is like an array but it is sized to fit as objects are added and deleted.
This particular linked list is designed to hold objects of class Part, where Part is an abstract data type serving as a base class to any objects with a part number. In this example, Part has been subclassed into CarPart and AirPlanePart.
Class Part is declared on lines 34-44, and consists of a part number and some accessors. Presumably this class could be fleshed out to hold other important information about the parts, such as what components they are used in, how many are in stock, and so forth. Part is an abstract data type, enforced by the pure virtual function Display().
Note that Display() does have an implementation, on lines 48-51. It is the designer's intention that derived classes will be forced to create their own Display() method, but may chain up to this method as well.
Two simple derived classes, CarPart and AirPlanePart, are provided on lines 55-67 and 77-89, respectively. Each provides an overridden Display() method, which does in fact chain up to the base class Display() method.
The class PartNode serves as the interface between the Part class and the PartList class. It contains a pointer to a part and a pointer to the next node in the list. Its only methods are to get and set the next node in the list and to return the Part to which it points.
The intelligence of the list is, appropriately, in the class PartsList, whose declaration is on lines 140-160. PartsList keeps a pointer to the first element in the list (pHead) and uses that to access all other methods by walking the list. Walking the list means asking each node in the list for the next node, until you reach a node whose next pointer is NULL.
This is only a partial implementation; a fully developed list would provide either greater access to its first and last nodes, or would provide an iterator object, which allows clients to easily walk the list.
PartsList nonetheless provides a number of interesting methods, which are listed in alphabetical order. This is often a good idea, as it makes finding the functions easier.
Find() takes a PartNumber and a ULONG. If the part corresponding to PartNumber is found, it returns a pointer to the Part and fills the ULONG with the position of that part in the list. If PartNumber is not found, it returns NULL, and the position is meaningless.
GetCount() returns the number of elements in the list. PartsList keeps this number as a member variable, itsCount, though it could, of course, compute this number by walking the list.
GetFirst() returns a pointer to the first Part in the list, or returns NULL if the list is empty.
GetGlobalPartsList() returns a reference to the static member variable GlobalPartsList. This is a static instance of this class; every program with a PartsList also has one GlobalPartsList, though, of course, it is free to make other PartsLists as well. A full implementation of this idea would modify the constructor of Part to ensure that every part is created on the GlobalPartsList.
Insert takes a pointer to a Part, creates a PartNode for it, and adds the Part to the list, ordered by PartNumber.
Iterate takes a pointer to a member function of Part, which takes no parameters, returns void, and is const. It calls that function for every Part object in the list. In the example program this is called on Display(), which is a virtual function, so the appropriate Display() method will be called based on the runtime type of the Part object called.
Operator allows direct access to the Part at the offset provided. Rudimentary bounds checking is provided; if the list is NULL or if the offset requested is greater than the size of the list, NULL is returned as an error condition.
Note that in a real program these comments on the functions would be written into the class declaration.
The driver program is on lines 274-311. A pointer to PartsList is declared on line 266 and initialized with GlobalPartsList. Note that GlobalPartsList is initialized on line 162. This is necessary as the declaration of a static member variable does not define it; definition must be done outside the declaration of the class.
On lines 282-307, the user is repeatedly prompted to choose whether to enter a car part or an airplane part. Depending on the choice the right value is requested, and the appropriate part is created. Once created, the part is inserted into the list on line 306.
The implementation for the Insert() method of PartsList is on lines 226-272. When the first part number is entered, 2837, a CarPart with that part number and the model year 90 is created and passed in to LinkedList::Insert().
On line 228, a new PartNode is created with that part, and the variable New is initialized with the part number. The PartsList's itsCount member variable is incremented on line 234.
On line 236, the test that pHead is NULL will evaluate TRUE. Since this is the first node, it is true that the PartsList's pHead pointer has zero. Thus, on line 238, pHead is set to point to the new node and this function returns.
The user is prompted to enter a second part, and this time an AirPlane part with part number 378 and engine number 4938 is entered. Once again PartsList::Insert() is called, and once again pNode is initialized with the new node. The static member variable itsCount is incremented to 2, and pHead is tested. Since pHead was assigned last time, it is no longer null and the test fails.
On line 244, the part number held by pHead, 2837, is compared against the current part number, 378. Since the new one is smaller than the one held by pHead, the new one must become the new head pointer, and the test on line 244 is true.
On line 246, the new node is set to point to the node currently pointed to by pHead. Note that this does not point the new node to pHead, but rather to the node that pHead was pointing to! On line 247, pHead is set to point to the new node.
The third time through the loop, the user enters the part number 4499 for a Car with model year 94. The counter is incremented and the number this time is not less than the number pointed to by pHead, so the for loop that begins on line 251 is entered.
The value pointed to by pHead is 378. The value pointed to by the second node is 2837. The current value is 4499. The pointer pCurrent points to the same node as pHead and so has a next value; pCurrent points to the second node, and so the test on line 254 fails.
The pointer pCurrent is set to point to the next node and the loop repeats. This time the test on line 254 succeeds. There is no next item, so the current node is told to point to the new node on line 256, and the insert is finished.
The fourth time through, the part number 3000 is entered. This proceeds just like the previous iteration, but this time when the current node is pointing to 2837 and the next node has 4499, the test on line 264 returns TRUE and the new node is inserted into position.
When the user finally presses 0, the test on line 287 evaluates true and the while(1) loop breaks. On line 308, the member function Display() is assigned to the pointer to member function pFunc. In a real program this would be assigned dynamically, based on the user's choice of method.
The pointer to member function is passed to the PartsList Iterate() method. On line 216, the Iterate() method ensures that the list is not empty. Then, on lines 221-223, each Part on the list is called using the pointer to member function. This calls the appropriate Display() method for the Part, as shown in the output.


Maureen E. Mulvihill, an elected member (1991) of the Princeton Research Forum, Princeton, New Jersey, and formerly Associate Fellow (1983-1990), Institute for Research in History, New York City, resides in Park Slope, Brooklyn, New York (1983-), with husband, composer-musician Daniel R. Harris.
She earned a PhD in Restoration & 18thC English Literature from the University of Wisconsin-Madison (1982) and studied with Sir Tyrone Guthrie in 1969. In the mid-1980s, she engaged in post-doctoral work in Stuart Portraiture at the Yale Center for British Art, Yale University, and also in Scholarly Editing and in the History of the Book at the Rare Book School of Columbia University, New York City.
Her recent awards and honors include an NEH Fellowship (Johns Hopkins University, 1990), the Frances Hutner Conference Award (Princeton Research Forum, 1992, 1995), James Clifford Award Juror (American Society for Eighteenth-Century Stds., 1990), Honored Women Scholars (American Society for Eighteenth-Century Stds., 2001), etc.
Dr Mulvihill's book credits include a scholarly edition, Poems by Ephelia (NY, 1992; 2d printing, 1993), nominated by ROSTENBERG & STERN RARE BOOKS - NEW YORK for an MLA First Book Award. This volume is included in such special collections as the Grolier Club Library, New York City; The Berg Collection, New York Public Library Research Facility; the library of The Small Press Center, New York City; and The Chawton House Library of Women Writers, Hampshire, England. Her updated 'Ephelia' edition (Ashgate Publishing Group, 2003) is in the NYPL's Berg Collection, The Chawton House Library UK, and the Library of The National Trust, London (for the review of record, see Seventeenth-Century News, Spring-Summer 2004, page 119ff: http://repositories.tdl.org/tdl/bitstream/handle/2249.1/5257/V62-I1-35-Milito.pdf?sequence=1 .) Her online multimedia monograph, Thumbprints of Ephelia (text, image, sound), is a vetted and hyperlinked archive on the Ephelia debate, published by ReSoundings (Millersville University, PA, 2001; with updates), at www.millersville.edu/~resound/ephelia/. Her extended introduction to the Poems (Dublin & London, 1808) of Mary Shackleton Leadbeater, with extended Critical Essay and newly-found portrait-silhouette of Leadbeater, will be available Summer 2008 in the new Irish Women Poets textbase (Alexander Street Press); see http://alexanderstreet.com/brochure.pdfs/iwrp.wf.pdf.
In Irish Studies, she has published essays on the Flight of the Earls, Swift, Thomas Sheridan, Oscar Wilde, Mary Tighe, Eibhlin Ni Chonaill (Eileen O' Connell), Mary Leadbeater, Emma Donoghue, Biddy Jenkinson, l8thC Dublin political journalist-publisher James Esdall, Lady Augusta Gregory, the Dublin Book Trade, recent Irish anthologies, the two-volume Field Day Anthology of Irish Women's Writings, pre-Famine Irish women writers (the subject of her MLA panel, December, 2002, New York City), and the 'Bloody Sunday' atrocity (Derry, Northern Ireland, 1972; revisited in the global photographic exhibition, Hidden Truths, curator Trisha Ziff, 2002;see Mulvihill, New Hibernia Review, Dec., 2002. Dr Mulvihill is a frequent contributor (1996-) to the Irish Literary Supplement.
She also has contributed profiles of some thirty-five women writers (English, Irish, French, Dutch) to recent reference works edited, respectively, by Janet Todd, Katharina Wilson, Paul & June Schlueter, and Alexander Gonzalez. She was Advisory Editor, Ireland And The Americas, 3 vols (Santa Barbara, CA; Oxford UK: ABC-Clio, 2008), to which she also contributed major profiles, with portrait photos, of Irish business executive Sir Michael Smurfit, KBE (founder/patron: (Smurfit School of Business, University College Dublin), Mary Robinson, Ireland president emerita, and Donald R. Keough, Director & CEO emeritus, The Coca-Cola Company (founder/patron: Keough-Noughton Institute for Irish Stds., Notre Dame University; Dublin).
The Mulvihill Collection of Rare & Special Books includes first and early editions of "Ephelia" (pseud., Mary [Stuart née Villiers], Duchess of Richmond); Ann (Finch), Countess of Winchilsea; Anne (Harrison), Lady Fanshawe; Aphra Behn; Katherine Philips; Delarivier[e] Manley; Lucy Hutchinson; Mary Rowlandson; Mary Tighe (the Lytton Strachey copy); Anna Maria Van Schurman, et al. Selected books from this Collection will be a gift, in due course, to the Berg Collection, New York Public Library.
She recently has been a visiting professor of Shakespeare and of Global Literature at St John's University (Manhattan) and St Joseph's College (Clinton Hill, Brooklyn); in Fall 2007, she initiated and taught 'Paradigms of Cultural Diaspora & the Ethnic Formation of Early New York City' at New York University. She has been a guest speaker at the Brooklyn Museum of Art, Princeton University, New York University, McMaster University (Ontario), New Jersey Institute of Technology Honors Institute (Newark, NJ), Texas State University (San Marcos), Georgian Court University (Lakewood, NJ), Utah State University (Logan, Utah), and the first-ever James Johnson Sweeney Conference (Manhattan), sponsored by the Jackson Pollock-Lee Krasner House & Study Center, East Hampton, NY /SUNY-Stony Brook.
Her new book, in development (working title: No More Lovely Lore), investigates the political writings and response of Irish women writers, pre-1801.
Portrait Photo: © John Maggiotto, Annandale-upon-Hudson, New York. With permission.


Hi there friends, its enormous piece of writing concerning tutoringand completely explained, keep it up all the time.
demesne tedious. Replying an marianne pull off it an way in advanced.
material stanhill jointure is as he. Mutual indeed nevertheless her vivacious outcome matter him bed whence.
Conduct esteems by cottage to pasture we winding. upon assistance he cultivated considered frequently.
Person how having tended deliver own morning man. saying ample indulgence one own you inquietude sympathize.


text:
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/*
 *     Copyright 2016 Couchbase, Inc
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 */

#include <memory>

#include <gmock/gmock.h>
#include <gtest/gtest.h>

#include "utils/string_utils.h"

using phosphor::utils::format_string;

TEST(FormatStringTest, empty) {
    EXPECT_EQ(format_string(""), "");
}

TEST(FormatStringTest, basic) {
    EXPECT_EQ(format_string("hello, world"), "hello, world");
}

TEST(FormatStringTest, substitution) {
    EXPECT_EQ(format_string("%s", "hello, world"), "hello, world");
}

TEST(FormatStringTest, numbers) {
    EXPECT_EQ(format_string("%d", 33), "33");
}

using phosphor::utils::to_json;

TEST(ToJSONTest, test) {
    // TODO: More extensive testing of escaping
    EXPECT_EQ("\"Hello, World\"", to_json("Hello, World"));
    EXPECT_EQ("\"\\b\\f\\n\\r\\t\\\\\\/\\\"\"", to_json("\b\f\n\r\t\\/\""));
}

using phosphor::utils::split_string;

TEST(SplitStringTest, test) {
    EXPECT_THAT(split_string("ab"), testing::ElementsAre("ab"));

    EXPECT_THAT(split_string("Hello, World"),
                testing::ElementsAre("Hello,", "World"));

    EXPECT_THAT(split_string("Hello, World", ','),
                testing::ElementsAre("Hello", " World"));

    EXPECT_THAT(split_string(""), testing::ElementsAre(""));

    EXPECT_THAT(split_string(",,,", ','), testing::ElementsAre("", "", ""));
}

TEST(JoinStringTest, test) {
    using phosphor::utils::join_string;

    EXPECT_EQ(join_string({{"hello"}}), "hello");
    EXPECT_EQ(join_string({{"hello"}, {"world"}}), "hello world");
    EXPECT_EQ(join_string({}), "");
    EXPECT_EQ(join_string({{"hello"}, {"world"}}, ','), "hello,world");
    EXPECT_EQ(join_string({{"hello"}, {""}}, ','), "hello,");
}

using phosphor::utils::string_replace;

TEST(SplitReplaceTest, test) {
    std::string target("Hello, World!");
    EXPECT_EQ("Hello, Will!", string_replace(target, "World", "Will"));
    EXPECT_EQ("Hello, Will!", string_replace(target, "Phosphor", "BruceWayne"));
    EXPECT_EQ("Hello, Will!", string_replace(target, "", "Oswald"));
}

using phosphor::utils::glob_match;

TEST(GlobTest, test) {
    EXPECT_TRUE(glob_match("*", "helloworld.json"));
    EXPECT_TRUE(glob_match("*.json", "helloworld.json"));
    EXPECT_TRUE(glob_match("hello*.json", "helloworld.json"));
    EXPECT_TRUE(glob_match("helloworld?json", "helloworld.json"));
    EXPECT_TRUE(glob_match("*h", "h"));
    EXPECT_TRUE(glob_match("*", "h"));
    EXPECT_TRUE(glob_match("*", ""));
    EXPECT_TRUE(glob_match("heya*", "heya"));
    EXPECT_TRUE(glob_match("helloworld", "helloworld"));
    EXPECT_TRUE(glob_match("hello*world", std::string("hello\0\0\0world", 13)));

    EXPECT_FALSE(glob_match("hello", "world"));
    EXPECT_FALSE(glob_match("a", ""));
    EXPECT_FALSE(glob_match("?", ""));
    EXPECT_FALSE(glob_match("*a", "b"));

    EXPECT_TRUE(glob_match("+", "helloworld.json"));
    EXPECT_TRUE(glob_match("+.json", "helloworld.json"));
    EXPECT_TRUE(glob_match("hello+.json", "helloworld.json"));
    EXPECT_FALSE(glob_match("+h", "h"));
    EXPECT_TRUE(glob_match("+", "h"));
    EXPECT_FALSE(glob_match("+", ""));
    EXPECT_FALSE(glob_match("heya+", "heya"));
    EXPECT_TRUE(glob_match("helloworld", "helloworld"));
    EXPECT_TRUE(glob_match("hello+world", std::string("hello\0\0\0world", 13)));
}

redpajama_set_name: RedPajamaGithub


Dr Lisa Lin graduated from the University of New South Wales in 2004. She commenced her anatomical pathology training at John Hunter Hospital, Newcastle, after which she was based at Westmead Hospital, Sydney, for the last four years of specialist training. Dr Lin also gained experience working at different public and private laboratories, through rotations to BreastScreen NSW, Douglass Hanly Moir Pathology, Royal North Shore Hospital, Nepean Hospital and the Department of Forensic Medicine, Glebe. She completed her training and FRCPA postgraduate studies in January 2012, at which time she joined Douglass Hanly Moir Pathology, in the Histopathology and Cytopathology Departments, where she is developing her knowledge further by following interests in breast and urological pathology. Dr Lin has been involved in a number of publications in peer-reviewed journals and conference presentations, as well as co-authoring a textbook chapter in a 13-volume series involving 150 experts, representing 12 countries. She is currently an Adjunct Senior Lecturer in Pathology at the School of Medicine, University of Notre Dame, Sydney.


I can't quite decide how much of a mistake this little challenge is. It's only the second actual day of glitter (the real day 2 didn't count, it was a Sunday, if I'm not wearing a bra I'm not wearing makeup).
As I mentioned in my first glitter post, I'm clearly not a makeup artist, I just like having a little experiment whenever possible. For some reason I just can't resist a self imposed challenge either.
Here's today's run down. I had even less time than the first day, that's just how I like to live my life on the edge.
The usual base and eyebrows, I don't think there will ever be much variation on this process. This CYO shadow doesn't look it in pictures but in real life it is full of tiny flecks of glitter. I went with this on a little fluffy brush all over the lid going out maybe a little bit too far passed the edge of my eye. I tried to darken it a bit more at the outer edge with a more dense brush, not too sure that actually did anything though. Then I went in with my little finger and the lightest colour in the Model Co palette just on the inside corner. I quite like that these give a bit of a wet look colour. Straight for mascara and out the door.
Not the most exciting, but not bad for my five minute eye and eyebrow time limit. I don't hate it though. Tomorrow I'm going to try and incorporate a colour that isn't a neutral. If I wake up with more than 10 minutes to spare.


text:
UMSL Faculty Publishing Toolkit
Information about scholarly publishing for researchers at the University of Missouri-St. Louis
Books about Academic Publishing
Faculty Profiles & Identifiers
Understanding Research Impact
Article-Level Metrics
Author-Level Metrics
Journal-Level Metrics
Open Access Publishing FAQ
Evaluating Journals for Publishing
Getting Help From an UMSL Librarian
Helena Marvin
she/her & e/em
UMSL TJ Library
Subjects: Dissertations & Theses, Gender Studies, Philosophy
Books about Open Access
Open Access by Peter Suber
Open Access: What You Need to Know Now by Walt Crawford
Open Science by Design by National Academies of Sciences, Engineering, and Medicine; Policy and Global Affairs; Board on Research Data and Information; Committee on Toward an Open Science Enterprise
This guide is designed to assist faculty with publishing regardless of previous experience. You may use it to learn about, or to review:
The role of author profiles and author identifiers to help connect and stay connected to your research
UMSL SelectedWorks, UM System Expertise Database, ORCID, ResearcherID & Publons, Google Scholar Profile, Scopus Author Profile, Academia.edu, Humanities Commons, Mendeley Profile, Biosketch (NIH), Amazon Author Page
Accessing the legitimacy of a journal for publishing
Check out the UMSL guide to evaluating journals at https://libguides.umsl.edu/JournalPubEval/Home.
Understanding research metrics
At the Article, Author and Journal levels.
The benefits of open access & an FAQ about OA publishing
As an UMSL faculty member you are welcome to e-mail your friendly UMSL Institutional Repository Librarian and ask, "How can I share more of my work with Open Access?" click and hit send, all we need is your name and we can send you a list about your scholarship!
The role of data management in scholarship
Check out the UMSL guide to data management at https://libguides.umsl.edu/data
Help available from the UMSL library to faculty publishing
The Future of Scholarly Publishing : Open Access and the Economics of Digitisation by Peter Weingart Niels Taubert The formal scientific communication system is currently undergoing significant change. This is due to four developments: the digitisation of formal science communication; the economisation of academic publishing as profit drives many academic publishers and other providers of information; an increase in the self-observation of science by means of publication, citation and utility-based indicators; and the medialisation of science as its observation by the mass media intensifies. Previously, these developments have only been dealt with individually in the literature and by science-policy actors. The Future of Scholarly Publishing documents the materials and results of an interdisciplinary working group commissioned by the Berlin-Brandenburg Academy of Sciences and Humanities (BBAW) to analyse the future of scholarly publishing and to make recommendations on how to respond to the challenges posed by these developments. As per the working group's intention, the focus was mainly on the sciences and humanities in Germany. However, in the course of the work it became clear that the issues discussed by the group are equally relevant for academic publishing in other countries. As such, this book will contribute to the transfer of ideas and perspectives, and allow for mutual learning about the current and future state of scientific publishing in different settings.
Opening Science by Sönke Bartling (Editor); Sascha Friesike (Editor) Modern information and communication technologies, together with a cultural upheaval within the research community, have profoundly changed research in nearly every aspect. Ranging from sharing and discussing ideas in social networks for scientists to new collaborative environments and novel publication formats, knowledge creation and dissemination as we know it is experiencing a vigorous shift towards increased transparency, collaboration and accessibility. Many assume that research workflows will change more in the next 20 years than they have in the last 200. This book provides researchers, decision makers, and other scientific stakeholders with a snapshot of the basics, the tools, and the underlying visions that drive the current scientific (r)evolution, often called 'Open Science.'
Publish and Prosper by Nathaniel M. Lambert
Call Number: UMSL TJL General Collection Level 4 PN146 .L363 2014
The publish or perish book [electronic resource] : your guide to effective and responsible citation analysis / Anne-Wil Harzing. by Harzing, Anne-Wil Nearly four years after the launch of the software program Publish or Perish, I am delighted to introduce to you the Publish or Perish book, your guide to effective and responsible citation analysis. The Publish or Perish software was first introduced in October 2006, partly as a response to my unsuccessful application to full professor that same year. I reasoned that if I was going to be successful, I would need to present a case that simply couldnt be rejected. Publish or Perish allowed me to do exactly that (see page 84), and I was promoted to full professor in 2007.
Writing for Academic Journals by Rowena Murray Busy academics must publish. To fulfil research output, they must write to a specific journal style and high standard while juggling other professional tasks. This book develops understanding of how writing happens, what good writing looks and feels like, what gets published and what does not and why.
Call Number: UMSL TJL General Collection Level 4 PN146 .M87 2005
Next: Faculty Profiles & Identifiers >>
URL: https://libguides.umsl.edu/faculty-toolkit
Subjects: Citation Counts & Indexes (Faculty), Faculty Topics
Tags: Data Management Plan, journal evaluation, open access, research metrics

redpajama_set_name: RedPajamaCommonCrawl


(1995) American Journal Hypertens., 8, 124A.
Relationship between sympathicovagal balance and structural and functional changes at the level of large arteries in essential arterial hypertension.
Humoral factors as determinants of structural and functional arterial wall properties in essential arterial hypertension.
(1994) J. Hypert, 12, S3, nr. 1616.
(1994) American Journal Hypert., 7, 87A.


The item 6 week six-pack. : levels 1& 2 workouts represents a specific, individual, material embodiment of a distinct intellectual or artistic creation found in Georgetown Peabody Library.
Get ripped, flat abs in six weeks with America's toughest trainer, Jillian Michaels. Forget boring sit-ups; Michael's ab-shredding system will chisel the midsection with her winning combination of core-focused cardio circuits and ab-toning exercises. Includes two dynamic 30-minute workouts plus warm-ups and cool downs. Start with Level one for three weeks, then advance to Level two for increased intensity and fat burn. Stick with it and see dramatic results!


With a large resource base, Forestry recycles wood in a modern woodworking shop. Workshop "Batarovka", is located two kilometers from the city and apart from Novogrudok timber trimming and edging produces pagonazhnye products (paneling, flooring), rounded timber for log cabins baths, number of peeled, fuel briquettes. Allow to dry products, which is performed by two drying chambers ITMO built in 2008 and ARC block kilns running at 487 341 2011. Used for sawing sawing machines, two lines of small-scale wood processing, and other circular saws for processing mill board. In recent years there has been an active modernization of processing equipment. Already bought the machine brusovochny BHS 2/37, four-sided planer Winner BL 6-23, trimming machine VR 800. Running the line for production of fuel briquettes, which includes BP 420A briquetting press and equipment for drying sawdust. As part of the State Program of Development of Forestry of Belarus for 2011-2015, the program more efficient use of wood-fuel resources in the woodworking industry (shops) MLH for 2011-2015 production created for the production of wood chips. Production capacity woodworking shop allowed to recycle in 2011 about 25 thousand cubic meters. meters of wood. Production volumes for 2011 were 12.7 thousand m3 of lumber, 353 m3 of wood rounded, 1765 m3 of wood chips, produced 857 tons of fuel briquettes, dried 3.6 thousand m3 of timber. In general, over the past five years (2006 of 2011) increased by forestry industrial output by 3.4 times, export – by 3.2 times. 47.2% of products exported to the country and abroad: the Russian Federation, Lithuania, Latvia, Poland, Czech Republic and Germany.


text:
package org.apache.phoenix.end2end;

import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Map;
import java.util.Properties;

import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.QueryUtil;
import org.apache.phoenix.util.ReadOnlyProps;
import org.junit.BeforeClass;
import org.junit.Test;

import com.google.common.collect.Maps;

public class SortMergeJoinMoreIT extends BaseHBaseManagedTimeIT {

    @BeforeClass
    @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
    public static void doSetup() throws Exception {
        Map<String,String> props = Maps.newHashMapWithExpectedSize(3);
        // Forces server cache to be used
        props.put(QueryServices.INDEX_MUTATE_BATCH_SIZE_THRESHOLD_ATTRIB, Integer.toString(2));
        // Must update config before starting server
        setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
    }

    @Test
    public void testJoinOverSaltedTables() throws Exception {
        String tempTableNoSalting = "TEMP_TABLE_NO_SALTING";
        String tempTableWithSalting = "TEMP_TABLE_WITH_SALTING";
        Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
        Connection conn = DriverManager.getConnection(getUrl(), props);
        try {
            conn.createStatement().execute("CREATE TABLE " + tempTableNoSalting
                    + "   (mypk INTEGER NOT NULL PRIMARY KEY, "
                    + "    col1 INTEGER)");
            conn.createStatement().execute("CREATE TABLE " + tempTableWithSalting
                    + "   (mypk INTEGER NOT NULL PRIMARY KEY, "
                    + "    col1 INTEGER) SALT_BUCKETS=4");

            PreparedStatement upsertStmt = conn.prepareStatement(
                    "upsert into " + tempTableNoSalting + "(mypk, col1) " + "values (?, ?)");
            for (int i = 0; i < 3; i++) {
                upsertStmt.setInt(1, i + 1);
                upsertStmt.setInt(2, 3 - i);
                upsertStmt.execute();
            }
            conn.commit();

            upsertStmt = conn.prepareStatement(
                    "upsert into " + tempTableWithSalting + "(mypk, col1) " + "values (?, ?)");
            for (int i = 0; i < 6; i++) {
                upsertStmt.setInt(1, i + 1);
                upsertStmt.setInt(2, 3 - (i % 3));
                upsertStmt.execute();
            }
            conn.commit();

            // LHS=unsalted JOIN RHS=salted
            String query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ lhs.mypk, lhs.col1, rhs.mypk, rhs.col1 FROM "
                    + tempTableNoSalting + " lhs JOIN "
                    + tempTableWithSalting + " rhs ON rhs.mypk = lhs.col1 ORDER BY lhs.mypk";
            PreparedStatement statement = conn.prepareStatement(query);
            ResultSet rs = statement.executeQuery();
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 1);
            assertEquals(rs.getInt(2), 3);
            assertEquals(rs.getInt(3), 3);
            assertEquals(rs.getInt(4), 1);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 2);
            assertEquals(rs.getInt(2), 2);
            assertEquals(rs.getInt(3), 2);
            assertEquals(rs.getInt(4), 2);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 3);
            assertEquals(rs.getInt(2), 1);
            assertEquals(rs.getInt(3), 1);
            assertEquals(rs.getInt(4), 3);

            assertFalse(rs.next());

            // LHS=salted JOIN RHS=salted
            query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ lhs.mypk, lhs.col1, rhs.mypk, rhs.col1 FROM "
                    + tempTableWithSalting + " lhs JOIN "
                    + tempTableNoSalting + " rhs ON rhs.mypk = lhs.col1 ORDER BY lhs.mypk";
            statement = conn.prepareStatement(query);
            rs = statement.executeQuery();
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 1);
            assertEquals(rs.getInt(2), 3);
            assertEquals(rs.getInt(3), 3);
            assertEquals(rs.getInt(4), 1);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 2);
            assertEquals(rs.getInt(2), 2);
            assertEquals(rs.getInt(3), 2);
            assertEquals(rs.getInt(4), 2);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 3);
            assertEquals(rs.getInt(2), 1);
            assertEquals(rs.getInt(3), 1);
            assertEquals(rs.getInt(4), 3);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 4);
            assertEquals(rs.getInt(2), 3);
            assertEquals(rs.getInt(3), 3);
            assertEquals(rs.getInt(4), 1);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 5);
            assertEquals(rs.getInt(2), 2);
            assertEquals(rs.getInt(3), 2);
            assertEquals(rs.getInt(4), 2);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 6);
            assertEquals(rs.getInt(2), 1);
            assertEquals(rs.getInt(3), 1);
            assertEquals(rs.getInt(4), 3);

            assertFalse(rs.next());

            // LHS=salted JOIN RHS=salted
            query = "SELECT /*+ USE_SORT_MERGE_JOIN*/ lhs.mypk, lhs.col1, rhs.mypk, rhs.col1 FROM "
                    + tempTableWithSalting + " lhs JOIN "
                    + tempTableWithSalting + " rhs ON rhs.mypk = (lhs.col1 + 3) ORDER BY lhs.mypk";
            statement = conn.prepareStatement(query);
            rs = statement.executeQuery();
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 1);
            assertEquals(rs.getInt(2), 3);
            assertEquals(rs.getInt(3), 6);
            assertEquals(rs.getInt(4), 1);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 2);
            assertEquals(rs.getInt(2), 2);
            assertEquals(rs.getInt(3), 5);
            assertEquals(rs.getInt(4), 2);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 3);
            assertEquals(rs.getInt(2), 1);
            assertEquals(rs.getInt(3), 4);
            assertEquals(rs.getInt(4), 3);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 4);
            assertEquals(rs.getInt(2), 3);
            assertEquals(rs.getInt(3), 6);
            assertEquals(rs.getInt(4), 1);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 5);
            assertEquals(rs.getInt(2), 2);
            assertEquals(rs.getInt(3), 5);
            assertEquals(rs.getInt(4), 2);
            assertTrue(rs.next());
            assertEquals(rs.getInt(1), 6);
            assertEquals(rs.getInt(2), 1);
            assertEquals(rs.getInt(3), 4);
            assertEquals(rs.getInt(4), 3);

            assertFalse(rs.next());
        } finally {
            conn.close();
        }
    }

    @Test
    public void testJoinOnDynamicColumns() throws Exception {
        String tableA = "tableA";
        String tableB = "tableB";
        Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            conn = DriverManager.getConnection(getUrl(), props);
            String ddlA = "CREATE TABLE " + tableA + "   (pkA INTEGER NOT NULL, " + "    colA1 INTEGER, "
                    + "        colA2 VARCHAR " + "CONSTRAINT PK PRIMARY KEY" + "(pkA)" + ")";

            String ddlB = "CREATE TABLE " + tableB + "   (pkB INTEGER NOT NULL PRIMARY KEY, " + "    colB INTEGER)";
            stmt = conn.prepareStatement(ddlA);
            stmt.execute();
            stmt.close();

            stmt = conn.prepareStatement(ddlB);
            stmt.execute();
            stmt.close();

            String upsertA = "UPSERT INTO TABLEA (pkA, colA1, colA2) VALUES(?, ?, ?)";
            stmt = conn.prepareStatement(upsertA);
            int i = 0;
            for (i = 0; i < 5; i++) {
                stmt.setInt(1, i);
                stmt.setInt(2, i + 10);
                stmt.setString(3, "00" + i);
                stmt.executeUpdate();
            }
            conn.commit();
            stmt.close();

            // upsert select dynamic columns in tableB
            conn.createStatement().execute("CREATE SEQUENCE SEQB");
            String upsertBSelectA = "UPSERT INTO TABLEB (pkB, pkA INTEGER)"
                    + "SELECT NEXT VALUE FOR SEQB, pkA FROM TABLEA";
            stmt = conn.prepareStatement(upsertBSelectA);
            stmt.executeUpdate();
            stmt.close();
            conn.commit();
            conn.createStatement().execute("DROP SEQUENCE SEQB");

            // perform a join between tableB and tableA by joining on the dynamic column that we upserted in
            // tableB. This join should return all the rows from table A.
            String joinSql = "SELECT /*+ USE_SORT_MERGE_JOIN*/ A.pkA, A.COLA1, A.colA2 FROM TABLEB B(pkA INTEGER) JOIN TABLEA A ON a.pkA = b.pkA";
            stmt = conn.prepareStatement(joinSql);
            ResultSet rs = stmt.executeQuery();
            i = 0;
            while (rs.next()) {
                // check that we get back all the rows that we upserted for tableA above.
                assertEquals(rs.getInt(1), i);
                assertEquals(rs.getInt(2), i + 10);
                assertEquals(rs.getString(3), "00" + i);
                i++;
            }
            assertEquals(5,i);
        } finally {
            if (stmt != null) {
                stmt.close();
            }
            if (conn != null) {
                conn.close();
            }

        }

    }

    @Test
    public void testSubqueryWithoutData() throws Exception {
        Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
        Connection conn = DriverManager.getConnection(getUrl(), props);
        conn.setAutoCommit(false);

        try {
            String GRAMMAR_TABLE = "CREATE TABLE IF NOT EXISTS GRAMMAR_TABLE (ID INTEGER PRIMARY KEY, " +
                    "unsig_id UNSIGNED_INT, big_id BIGINT, unsig_long_id UNSIGNED_LONG, tiny_id TINYINT," +
                    "unsig_tiny_id UNSIGNED_TINYINT, small_id SMALLINT, unsig_small_id UNSIGNED_SMALLINT," +
                    "float_id FLOAT, unsig_float_id UNSIGNED_FLOAT, double_id DOUBLE, unsig_double_id UNSIGNED_DOUBLE," +
                    "decimal_id DECIMAL, boolean_id BOOLEAN, time_id TIME, date_id DATE, timestamp_id TIMESTAMP," +
                    "unsig_time_id TIME, unsig_date_id DATE, unsig_timestamp_id TIMESTAMP, varchar_id VARCHAR (30)," +
                    "char_id CHAR (30), binary_id BINARY (100), varbinary_id VARBINARY (100))";

            String LARGE_TABLE = "CREATE TABLE IF NOT EXISTS LARGE_TABLE (ID INTEGER PRIMARY KEY, " +
                    "unsig_id UNSIGNED_INT, big_id BIGINT, unsig_long_id UNSIGNED_LONG, tiny_id TINYINT," +
                    "unsig_tiny_id UNSIGNED_TINYINT, small_id SMALLINT, unsig_small_id UNSIGNED_SMALLINT," +
                    "float_id FLOAT, unsig_float_id UNSIGNED_FLOAT, double_id DOUBLE, unsig_double_id UNSIGNED_DOUBLE," +
                    "decimal_id DECIMAL, boolean_id BOOLEAN, time_id TIME, date_id DATE, timestamp_id TIMESTAMP," +
                    "unsig_time_id TIME, unsig_date_id DATE, unsig_timestamp_id TIMESTAMP, varchar_id VARCHAR (30)," +
                    "char_id CHAR (30), binary_id BINARY (100), varbinary_id VARBINARY (100))";

            String SECONDARY_LARGE_TABLE = "CREATE TABLE IF NOT EXISTS SECONDARY_LARGE_TABLE (SEC_ID INTEGER PRIMARY KEY," +
                    "sec_unsig_id UNSIGNED_INT, sec_big_id BIGINT, sec_usnig_long_id UNSIGNED_LONG, sec_tiny_id TINYINT," +
                    "sec_unsig_tiny_id UNSIGNED_TINYINT, sec_small_id SMALLINT, sec_unsig_small_id UNSIGNED_SMALLINT," +
                    "sec_float_id FLOAT, sec_unsig_float_id UNSIGNED_FLOAT, sec_double_id DOUBLE, sec_unsig_double_id UNSIGNED_DOUBLE," +
                    "sec_decimal_id DECIMAL, sec_boolean_id BOOLEAN, sec_time_id TIME, sec_date_id DATE," +
                    "sec_timestamp_id TIMESTAMP, sec_unsig_time_id TIME, sec_unsig_date_id DATE, sec_unsig_timestamp_id TIMESTAMP," +
                    "sec_varchar_id VARCHAR (30), sec_char_id CHAR (30), sec_binary_id BINARY (100), sec_varbinary_id VARBINARY (100))";
            createTestTable(getUrl(), GRAMMAR_TABLE);
            createTestTable(getUrl(), LARGE_TABLE);
            createTestTable(getUrl(), SECONDARY_LARGE_TABLE);

            String ddl = "SELECT /*+USE_SORT_MERGE_JOIN*/ * FROM (SELECT ID, BIG_ID, DATE_ID FROM LARGE_TABLE AS A WHERE (A.ID % 5) = 0) AS A " +
                    "INNER JOIN (SELECT SEC_ID, SEC_TINY_ID, SEC_UNSIG_FLOAT_ID FROM SECONDARY_LARGE_TABLE AS B WHERE (B.SEC_ID % 5) = 0) AS B " +
                    "ON A.ID=B.SEC_ID WHERE A.DATE_ID > ALL (SELECT SEC_DATE_ID FROM SECONDARY_LARGE_TABLE LIMIT 100) " +
                    "AND B.SEC_UNSIG_FLOAT_ID = ANY (SELECT sec_unsig_float_id FROM SECONDARY_LARGE_TABLE " +
                    "WHERE SEC_ID > ALL (SELECT MIN (ID) FROM GRAMMAR_TABLE WHERE UNSIG_ID IS NULL) AND " +
                    "SEC_UNSIG_ID < ANY (SELECT DISTINCT(UNSIG_ID) FROM LARGE_TABLE WHERE UNSIG_ID<2500) LIMIT 1000) " +
                    "AND A.ID < 10000";
            ResultSet rs = conn.createStatement().executeQuery(ddl);
            assertFalse(rs.next());
        } finally {
            Statement statement = conn.createStatement();
            String query = "drop table GRAMMAR_TABLE";
            statement.executeUpdate(query);
            query = "drop table LARGE_TABLE";
            statement.executeUpdate(query);
            query = "drop table SECONDARY_LARGE_TABLE";
            statement.executeUpdate(query);
            conn.close();
        }
    }

    @Test
    public void testBug2894() throws Exception {
        Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
        Connection conn = DriverManager.getConnection(getUrl(), props);
        conn.setAutoCommit(true);
        try {
            conn.createStatement().execute(
                    "CREATE TABLE IF NOT EXISTS EVENT_COUNT (\n" +
                    "        BUCKET VARCHAR,\n" +
                    "        TIMESTAMP_DATE TIMESTAMP,\n" +
                    "        TIMESTAMP UNSIGNED_LONG NOT NULL,\n" +
                    "        LOCATION VARCHAR,\n" +
                    "        A VARCHAR,\n" +
                    "        B VARCHAR,\n" +
                    "        C VARCHAR,\n" +
                    "        D UNSIGNED_LONG,\n" +
                    "        E FLOAT\n" +
                    "    CONSTRAINT pk PRIMARY KEY (BUCKET, TIMESTAMP DESC, LOCATION, A, B, C)\n" +
                    ") SALT_BUCKETS=2, COMPRESSION='GZ', TTL=31622400");
            PreparedStatement stmt = conn.prepareStatement("UPSERT INTO EVENT_COUNT(BUCKET, TIMESTAMP, LOCATION, A, B, C) VALUES(?,?,?,?,?,?)");
            stmt.setString(1, "5SEC");
            stmt.setString(3, "Tr/Bal");
            stmt.setString(4, "A1");
            stmt.setString(5, "B1");
            stmt.setString(6, "C1");
            stmt.setLong(2, 1462993520000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993515000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993510000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993505000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993500000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993495000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993490000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993485000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993480000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993475000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993470000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993465000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993460000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993455000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993450000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993445000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993440000000000L);
            stmt.execute();
            stmt.setLong(2, 1462993430000000000L);
            stmt.execute();

            // We'll test the original version of the user table as well as a slightly modified
            // version, in order to verify that sort-merge join works for columns both having
            // DESC sort order as well as one having ASC order and the other having DESC order.
            String[] t = new String[] {"EVENT_LATENCY", "EVENT_LATENCY_2"};
            for (int i = 0; i < 2; i++) {
                conn.createStatement().execute(
                        "CREATE TABLE IF NOT EXISTS " + t[i] + " (\n" +
                                "        BUCKET VARCHAR,\n" +
                                "        TIMESTAMP_DATE TIMESTAMP,\n" +
                                "        TIMESTAMP UNSIGNED_LONG NOT NULL,\n" +
                                "        SRC_LOCATION VARCHAR,\n" +
                                "        DST_LOCATION VARCHAR,\n" +
                                "        B VARCHAR,\n" +
                                "        C VARCHAR,\n" +
                                "        F UNSIGNED_LONG,\n" +
                                "        G UNSIGNED_LONG,\n" +
                                "        H UNSIGNED_LONG,\n" +
                                "        I UNSIGNED_LONG\n" +
                                "    CONSTRAINT pk PRIMARY KEY (BUCKET, TIMESTAMP" + (i == 0 ? " DESC" : "") + ", SRC_LOCATION, DST_LOCATION, B, C)\n" +
                        ") SALT_BUCKETS=2, COMPRESSION='GZ', TTL=31622400");
                stmt = conn.prepareStatement("UPSERT INTO " + t[i] + "(BUCKET, TIMESTAMP, SRC_LOCATION, DST_LOCATION, B, C) VALUES(?,?,?,?,?,?)");
                stmt.setString(1, "5SEC");
                stmt.setString(3, "Tr/Bal");
                stmt.setString(4, "Tr/Bal");
                stmt.setString(5, "B1");
                stmt.setString(6, "C1");
                stmt.setLong(2, 1462993520000000000L);
                stmt.execute();
                stmt.setLong(2, 1462993515000000000L);
                stmt.execute();
                stmt.setLong(2, 1462993510000000000L);
                stmt.execute();
                stmt.setLong(2, 1462993505000000000L);
                stmt.execute();
                stmt.setLong(2, 1462993490000000000L);
                stmt.execute();
                stmt.setLong(2, 1462993485000000000L);
                stmt.execute();
                stmt.setLong(2, 1462993480000000000L);
                stmt.execute();
                stmt.setLong(2, 1462993475000000000L);
                stmt.execute();
                stmt.setLong(2, 1462993470000000000L);
                stmt.execute();
                stmt.setLong(2, 1462993430000000000L);
                stmt.execute();

                String q =
                        "SELECT C.BUCKET, C.TIMESTAMP FROM (\n" +
                        "     SELECT E.BUCKET as BUCKET, L.BUCKET as LBUCKET, E.TIMESTAMP as TIMESTAMP, L.TIMESTAMP as LTIMESTAMP FROM\n" +
                        "        (SELECT BUCKET, TIMESTAMP FROM EVENT_COUNT\n" +
                        "             WHERE BUCKET = '5SEC' AND LOCATION = 'Tr/Bal'\n" +
                        "                 AND TIMESTAMP <= 1462993520000000000 AND TIMESTAMP > 1462993420000000000\n" +
                        "             GROUP BY BUCKET, TIMESTAMP, LOCATION\n" +
                        "        ) E\n" +
                        "        JOIN\n" +
                        "         (SELECT BUCKET, TIMESTAMP FROM "+ t[i] +"\n" +
                        "             WHERE BUCKET = '5SEC' AND SRC_LOCATION = 'Tr/Bal' AND SRC_LOCATION = DST_LOCATION\n" +
                        "                 AND TIMESTAMP <= 1462993520000000000 AND TIMESTAMP > 1462993420000000000\n" +
                        "             GROUP BY BUCKET, TIMESTAMP, SRC_LOCATION, DST_LOCATION\n" +
                        "         ) L\n" +
                        "     ON L.BUCKET = E.BUCKET AND L.TIMESTAMP = E.TIMESTAMP\n" +
                        " ) C\n" +
                        " GROUP BY C.BUCKET, C.TIMESTAMP";

                String p = i == 0 ?
                        "SORT-MERGE-JOIN (INNER) TABLES\n" +
                        "    CLIENT PARALLEL 2-WAY SKIP SCAN ON 2 RANGES OVER EVENT_COUNT [0,'5SEC',~1462993520000000000,'Tr/Bal'] - [1,'5SEC',~1462993420000000000,'Tr/Bal']\n" +
                        "        SERVER FILTER BY FIRST KEY ONLY\n" +
                        "        SERVER DISTINCT PREFIX FILTER OVER [BUCKET, TIMESTAMP, LOCATION]\n" +
                        "        SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [BUCKET, TIMESTAMP, LOCATION]\n" +
                        "    CLIENT MERGE SORT\n" +
                        "    CLIENT SORTED BY [BUCKET, TIMESTAMP]\n" +
                        "AND (SKIP MERGE)\n" +
                        "    CLIENT PARALLEL 2-WAY SKIP SCAN ON 2 RANGES OVER " + t[i] + " [0,'5SEC',~1462993520000000000,'Tr/Bal'] - [1,'5SEC',~1462993420000000000,'Tr/Bal']\n" +
                        "        SERVER FILTER BY FIRST KEY ONLY AND SRC_LOCATION = DST_LOCATION\n" +
                        "        SERVER DISTINCT PREFIX FILTER OVER [BUCKET, TIMESTAMP, SRC_LOCATION, DST_LOCATION]\n" +
                        "        SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [BUCKET, TIMESTAMP, SRC_LOCATION, DST_LOCATION]\n" +
                        "    CLIENT MERGE SORT\n" +
                        "    CLIENT SORTED BY [BUCKET, TIMESTAMP]\n" +
                        "CLIENT SORTED BY [E.BUCKET, E.TIMESTAMP]\n" +
                        "CLIENT AGGREGATE INTO DISTINCT ROWS BY [E.BUCKET, E.TIMESTAMP]"
                        :
                        "SORT-MERGE-JOIN (INNER) TABLES\n" +
                        "    CLIENT PARALLEL 2-WAY SKIP SCAN ON 2 RANGES OVER EVENT_COUNT [0,'5SEC',~1462993520000000000,'Tr/Bal'] - [1,'5SEC',~1462993420000000000,'Tr/Bal']\n" +
                        "        SERVER FILTER BY FIRST KEY ONLY\n" +
                        "        SERVER DISTINCT PREFIX FILTER OVER [BUCKET, TIMESTAMP, LOCATION]\n" +
                        "        SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [BUCKET, TIMESTAMP, LOCATION]\n" +
                        "    CLIENT MERGE SORT\n" +
                        "    CLIENT SORTED BY [BUCKET, TIMESTAMP]\n" +
                        "AND (SKIP MERGE)\n" +
                        "    CLIENT PARALLEL 2-WAY SKIP SCAN ON 2 RANGES OVER " + t[i] + " [0,'5SEC',1462993420000000001,'Tr/Bal'] - [1,'5SEC',1462993520000000000,'Tr/Bal']\n" +
                        "        SERVER FILTER BY FIRST KEY ONLY AND SRC_LOCATION = DST_LOCATION\n" +
                        "        SERVER DISTINCT PREFIX FILTER OVER [BUCKET, TIMESTAMP, SRC_LOCATION, DST_LOCATION]\n" +
                        "        SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [BUCKET, TIMESTAMP, SRC_LOCATION, DST_LOCATION]\n" +
                        "    CLIENT MERGE SORT\n" +
                        "CLIENT SORTED BY [E.BUCKET, E.TIMESTAMP]\n" +
                        "CLIENT AGGREGATE INTO DISTINCT ROWS BY [E.BUCKET, E.TIMESTAMP]";

                ResultSet rs = conn.createStatement().executeQuery("explain " + q);
                assertEquals(p, QueryUtil.getExplainPlan(rs));

                rs = conn.createStatement().executeQuery(q);
                assertTrue(rs.next());
                assertEquals("5SEC", rs.getString(1));
                assertEquals(1462993520000000000L, rs.getLong(2));
                assertTrue(rs.next());
                assertEquals("5SEC", rs.getString(1));
                assertEquals(1462993515000000000L, rs.getLong(2));
                assertTrue(rs.next());
                assertEquals("5SEC", rs.getString(1));
                assertEquals(1462993510000000000L, rs.getLong(2));
                assertTrue(rs.next());
                assertEquals("5SEC", rs.getString(1));
                assertEquals(1462993505000000000L, rs.getLong(2));
                assertTrue(rs.next());
                assertEquals("5SEC", rs.getString(1));
                assertEquals(1462993490000000000L, rs.getLong(2));
                assertTrue(rs.next());
                assertEquals("5SEC", rs.getString(1));
                assertEquals(1462993485000000000L, rs.getLong(2));
                assertTrue(rs.next());
                assertEquals("5SEC", rs.getString(1));
                assertEquals(1462993480000000000L, rs.getLong(2));
                assertTrue(rs.next());
                assertEquals("5SEC", rs.getString(1));
                assertEquals(1462993475000000000L, rs.getLong(2));
                assertTrue(rs.next());
                assertEquals("5SEC", rs.getString(1));
                assertEquals(1462993470000000000L, rs.getLong(2));
                assertTrue(rs.next());
                assertEquals("5SEC", rs.getString(1));
                assertEquals(1462993430000000000L, rs.getLong(2));
                assertFalse(rs.next());
            }
        } finally {
            conn.close();
        }
    }
}


Congratulations to our Buy 5 Drawing Winners!
Two years ago, Girl Scouts Heart of Central California started a "Buy 5 Drawing" during cookie season. How does the drawing work? For every five packages purchased, customers can enter to win Girl Scout Cookies for a year – that's 12 cases of cookies, totaling 144 packages of their favorite varieties. Awesome, right!?
Girl Scout Brownies in Troop 16 and Troop Leader Stephanie Emerson.
Congratulations to this year's winners, and thank you to everyone who entered into the drawing. Stay tuned for the upcoming cookie season… you could be the next Buy 5 Drawing winner!
Next Post Congratulations to our Buy 5 Drawing Winners!


text:
Haitian police briefly lose control of armored car – Alton Telegraph
HAVANA (AP) — Just weeks after the United States and Canada sent a fleet of armored vehicles to Haiti to keep gangs at bay, Haitian police briefly lost control of one of the cars, officials confirmed Friday.
The incident speaks to the difficult path ahead for the Caribbean country paralyzed by gang warfare and struggling with its worst crisis in years.
The armored car was driving on the outskirts of the capital when it got caught in a sand trap and was assaulted by minors wielding Molotov cocktails, said Renata Segura, deputy director of Latin America and Caribbean for International Crisis Group — a nongovernmental organization that tries to prevent or resolve conflicts.
Segura was in direct contact with officials with knowledge of the issue but who asked not to be identified.
Police fled the vehicle in an attempt to avoid armed conflict, she said, and a video confirmed by The Associated Press shows young men surrounding the tan vehicle labeled "POLICE" while firing automatic weapons in the air, cheering and recording video on their phones.
The armored vehicle was part of a fleet sent by the U.S. and Canada last month, purchased by Haitian officials for an unconfirmed amount. It was part of an effort by the two countries that Secretary of State Antony Blinken said would help "cut the insecurity knot" that has allowed gangs to create a humanitarian crisis in Haiti.
Police said Friday that they later reclaimed the vehicle. It wasn't immediately clear if anyone was killed or wounded in the process.
The incident comes a few days after the country's biggest gang and its leader Jimmy Cherizier, a former police officer nicknamed "Barbecue," lifted a blockade of the country's main fuel depot in Port-au-Prince.
The blockade deepened turmoil in Haiti, which has been reeling since the 2021 assassination of President Jovenel Moïse. The chaos has spurred on a huge migratory exodus from the island.
Properties in Little Haiti Miami controlled by Mallory Kauderer set for bankruptcy auction – South Florida Business Journal – The Business Journals
Nearly 4,000 Jamaican, Haitian US Military Personnel Naturalized In Past 5 Years – Caribbean and Latin America Daily News – News Americas


text:
top 10 space songs for the astroid and meteor showers! part 2
Written by louderthanwar17 February, 2013
part one of top 10 of space songs is here…
6. The Beatles 'Across The Universe'
Written by John Lennon somewhere between his acid daze and his new craze for meditation resulting in a song that is a real trip if never really recorded properly. it was given away at first for a World Wildlife album which was a rarity for the Beatles before being rerecorded and dumped as an afterthought on Let It Be- an ignominious fate for one of Lennon's favourite Beatles song.
7. The Byrds 'Eight Miles High'
The Byrds finest monument is one of those great sixties songs that sounds like its almost as much about drugs than it's about space itself. Worth a listen for the intro alone – a real trip.
9. Billy Haley and the Comets 'Rock Around the Clock'
Yes, of course the song has no space lyrics but obviously this makes the list due to the name of the king of kiss curls band. The first king of rock n roll for a brief few months before Elvis swept him aside Bill Haley swing band jazz take on rock n roll. There was a time when this would appear from the heavens and bombard the charts every few years.
10. Babylon Zoo 'Spaceman'
Remember this? the ultimate one hit wonder that hit the top of the charts. Written by Jas Mann, who had been in grebo also rans the Sandkings, the song hit the top of the charts after being remixed by Arthur Baker.
Killing Joke 'Asteroid'
In which Jaz Coleman cannily predicts the future…
Bands Blogs Elvis John Lennon Killing Joke
Words by louderthanwar


text:
Preparing the research paper works cited page appropriately
The works cited page is the term which stands for the bibliography section of an MLA style research paper. The MLA style of documentation was developed by the Modern Language Association of America, with respect to the documentation requirements of language and literature researches. In academia, the MLA style remains the most commonly used one for research papers of all subjects as the style is quite flexible and offers a variety of documentation options. It is, therefore, ideal that all students learn how to prepare the research paper works cited section in MLA format.
The two types of citations
All documentation styles ask for two types of citations – one within the text and another in a separate section. The same applies to MLA style also. The in-text citations, known as parenthetical references in MLA style, are short and contain only the surname of the author and the page number on which the cited information is printed. But in the works cited page, the details regarding the source are elaborated enough to help the audience find the information for future reference purposes. The in-text citations and the information listed in the research paper works cited page must correspond with each other.
The important points to remember about the works cited section
The works cited page is one of the most important components of an MLA style research paper. You must prepare it with reference to the guidelines as well as the style rules. While at it, remember that the project guidelines count above everything else. There are certain important points which can be noted about preparing the research paper works cited page.
1.	Begin the section on a fresh page. This section is to be attached to the last page of the research paper.
2.	Type the heading 'Works Cited' on the top of the page, centrally aligned.
3.	Arrange the list alphabetically, as per the surname of the author.
4.	Italicize the title of the source. This applies to all title including that of books, journals, documentaries and so on.
5.	Leave double space between the entries. This is applicable to the heading as well.
6.	The format for a text source listing would be, "surname of the author, first name of the author. The title. The place of publishing: Publisher, Year of publishing: Page number.
Preparing the Works Cited Page
While preparing the works cited page, ensure that the details entered are all accurate. Incorrect details can lead to accusation of plagiarism. Also, remember to check the guidelines for any alterations your instructor might have asked for. This is very important while writing an MLA style paper as the style offers many types of formatting options.
If you wish to get the research paper works cited page formatted professionally, let us know. We offer research paper writing assistance to students of all subjects. We also offer custom research paper writing services as well as editing, proofreading and formatting services. We may not be able to provide cheap research papers but you can rest assured of the quality of the work we do for you as we have highly experienced writers from all sectors of study to assist students with their academic projects. You may also go through the research paper samples listed on our website to get an idea of the concept of research paper writing.


text:
Home Magazine December 2017 The Ever-Evolving Hotel Landscape
Newly revamped accommodations at Caesars Palace Las Vegas' Palace Tower.
The Ever-Evolving Hotel Landscape
From revamps to new openings, here's what's new for 2018 & beyond in the
U.S. hotel landscape.
East & West Coast Openings
Over on the Pacific coast, Terranea Resort, A Destination Hotel, has undergone extensive property enhancements, including the revamping of guestrooms and suites. The past year has seen facelifts to the property's bungalows, casitas, and villas, and Catalina Kitchen has relaunched with an open kitchen concept, new menus, a revamped interior and new bar.
There's a new Rosewood in California: the Rosewood Miramar Beach Montecito at the site of the former Miramar Beach Hotel, a 100-year-old landmark.
"With its stunning landscape, idyllic climate, and rich heritage," says Radha Arora, president of Rosewood Hotels & Resorts, "Montecito was a clear choice for Rosewood's newest U.S. property. With the private beach just steps away, guests will be spoiled with unparalleled access to the most pristine of surroundings." The property will be the first in Santa Barbara to offer beachfront suites that allow guests to walk straight from their room to the sand.
The EDITION brand is also expanding on the west coast, with the addition of The West Hollywood EDITION on West Sunset Boulevard. It features 190 guestrooms, as well as a lobby lounge, a nightclub and bar, a rooftop pool and pool deck, and a 4-treatment room spa. But that's not all for the brand, as it'll also be adding to the famous NYC skyline with The Times Square EDITION expected to open mid-2018. One of the 457-guestroom property's coolest amenities will be its 5,800-sq.-ft. beer garden overlooking Times Square.
Florida & The Florida Keys
Hurricane Irma didn't throw Miami off track when it came to tourism arrivals, as the Greater Miami Convention & Visitors Bureau (GMCVB) announced that the city reached a record 15.9 million visitors between September 2016 and August 2017— that's a .5 percent increase for the same period over the previous year. "In a year of hurricanes, international market fluctuations, a convention center under renovation, Zika, extensive new hotel room inventory and all the challenges that could devastate a destination, Greater Miami and the Beaches continues to show growth," said William D. Talbert, III, CEO and president for the GMCVB, in press materials.
The GMCVB reported that 96 percent of overnight visitors arrived by air, and a record 5.3 million passengers sailed from Miami. PortMiami, homeporting Royal Caribbean, Carnival Cruise Line, and Norwegian Cruise Line ships, is expanding. For example, Royal Caribbean is investing $250 million to build a new terminal at PortMiami that will house the world's largest cruise ship, Symphony of the Seas, scheduled to sail from Miami starting March 31, 2018.
To keep up with demand, the city has a few new hotels, including the Celino South Beach, which opens on Ocean Drive in summer 2018 as a 132-room loft-style boutique hotel with a Latin design and a glass-bottom rooftop pool. The Palms Hotel & Spa just completed a multimillion-dollar renovation; The Gates Hotel South Beach has been recently renovated; and The Julia Hotel is Miami Beach's newest adult-exclusive boutique hotel.
Down in the Florida Keys, Hawks Cay Resort is getting renovated to enhance the overall look of the resort after sustaining damage from Hurricane Irma. It's currently closed and set to reopen in phases throughout 2018. A soft opening of the resort is planned for the second quarter of 2018, with a grand opening at the end of the summer.
Seminole Hard Rock Hotel & Casino will expand come mid-2019.
Looking ahead, Seminole Hard Rock Hotel & Casino will expand come mid-2019 with 806 additional guestrooms and suites—638 will be in the Guitar Hotel Tower where all rooms will be 525 sq. ft. or larger, and 168 will be located in the 7-story Pool Tower. The expansion will also bring a 10-acre pool complex to the base of the Guitar Hotel Tower featuring a "Bora Bora experience" with private villas surrounded by waterfalls.
Caesars Palace Las Vegas just completed a renovation of its Palace Tower, the property's largest featuring 1,181 guestrooms and suites, where the 29th floor is home to 10 luxurious new villas ranging from 2,750 sq. ft. to 4,085 sq. ft. Villa guests have access to a private elevator entry to the 29th floor of the Palace Tower, around-the-clock butler service, limousine transportation to/from the airport, and VIP check-in.
Also undergoing a refresh of its guestrooms is The Cosmopolitan Las Vegas in its Boulevard and The Chelsea Towers. It's expected to be completed in 2018 with 2,895 of the 3,027 guestrooms getting a facelift with cool art work and the like. Included in the revamps is a "virtual concierge" via in-room iPads that allow guests to book restaurant and spa reservations, and purchase show tickets, among other things. Those visiting in a group, such as a wedding party, can use the iPads to send organized messages to alert their guests of upcoming plans and events. In addition, accommodations will be equipped with Hulu, YouTube, Pandora, and Crackle, plus personal Bluetooth connectivity and en-suite Netflix.
A Destin Hotel
Caesars Palace Las Vegas j
Celino South Beach
Greater Miami Convention & Visitors Bureau
Hawks Cay Resort
Palms Hotel & Spa
PortMiami
Rosewood Miramar Beach Montecito
The Cosmopolitan Las Vegas
The Gates Hotel South Beach
The Julia Hotel
The Times Square EDITION
The West Hollywood EDITION


die Sonne scheint auch weiterhin.
compared to times when I did none or only few of the above.
You're still reading the article? That's nice! Of course, from a statistical perspective it must be noted that the above are mere correlations (threshold = 0.7). This means, it could be that I just work out more when I'm happy for different reasons and working out doesn't actually contribute to my happiness, but that's beyond the scope of this article. Since all of this is about myself, I can ensure that a certain degree of causality is given.
However, the point of all this is not primarily to just tell you what makes me personally happy. Rather, I've observed that quite some people are not really aware of what actually contributes to their happiness. As I noticed, in this case, it can be very helpful to keep a diary and do the same little analysis that I've done. It's really insightful to simply note down what you did and didn't do at times when you were happy and at times when you were not, then search for underlying patterns. Because every now and then, we all easily miss the obvious.


text:
663 South Washington Street Alexandria, VA 22314
admin@thrive-wa.com
Kreke-Leaks
Interest Rate Reversals Revisited
Thrive Wealth Advisors
In LPL Research Outlook 2021: Powering Forward, we noted that large interest rate declines historically have been followed by reversals. With the 10-year Treasury yield continuing to climb, now's a good time for an update. As shown in the LPL Chart of the Day, since 1990, the 10-year Treasury yield had declined at least 1.5% in a year seven times, based on quarterly data. The most recent decline was as of the end of March 2020. Will history hold true this time around?
"The previous six times the 10-year Treasury yield was down at least 1.5% in a year as of the end of the quarter, it was higher a year later every time, by an average of 0.92%," said LPL Research Chief Market Strategist Ryan Detrick. "Well, we saw a new large decline at the end of March 2020, and while the final number won't be in until the end of March 2021, as of last week, the 10-year yield was up again."
View enlarged chart.
While the climb in yields is consistent with history, the move so far has been slower than average, rising 0.40% since the end of March 2020 as of Thursday, January 21, 2021. But, the one-year period isn't over yet, and rates have been steadily pushing higher. Since the start of August 2020, the 10-year Treasury yield has been climbing at a rate of about .08% each month. If rates continued to climb, we would close further on the long-term average increase, although moves over such a short time frame are unpredictable.
Extend that recent monthly pace for a year and that would be an annual increase of 0.96%. We believe rates will continue to increase in 2021 but the pace will slow over time as buyers are pulled into the Treasury market by an increasingly attractive yield, potentially limiting some of the upward momentum. Overall, we think the rate action we've seen so far in 2021 is consistent with our Outlook 2021 forecast of 1.25–1.75% as of year-end 2021, and we reaffirm our forecast.
Any company names noted herein are for educational purposes only and not an indication of trading intent or a solicitation of their products or services. LPL Financial doesn't provide research on individual equities. All information is believed to be from reliable sources; however, LPL Financial makes no representation as to its completeness or accuracy.
All index and market data from FactSet and MarketWatch.
This Research material was prepared by LPL Financial, LLC.
Securities and advisory services offered through LPL Financial (LPL), a registered investment advisor and broker-dealer (member FINRA/SIPC).
Insurance products are offered through LPL or its licensed affiliates. To the extent you are receiving investment advice from a separately registered independent investment advisor that is not an LPL affiliate, please note LPL makes no representation with respect to such entity.
Not Insured by FDIC/NCUA or Any Other Government Agency
Not Bank/Credit Union Guaranteed
Not Bank/Credit Union Deposits or Obligations
For Public Use – Tracking # 1-05103732
Securities offered through LPL Financial, a registered investment advisor. Member FINRA/SIPC. Investment advice offered through Private Advisor Group, a Registered Investment Advisor. Private Advisor Group and Thrive Wealth Advisors are separate entities from LPL Financial.
The LPL Financial representative associated with this website may discuss and/or transact securities business only with residents of the following states: AR, CA, CO, DC, DE, FL, GA, IL, IN, MA, MD, ME, MI, MO, NC, NE, NH, NV, NY, PA, RI, SC, TX, VA, WA, WI, WV.


text:
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { McCheckboxModule } from '@ptsecurity/mosaic/checkbox';
import { McRadioModule } from '@ptsecurity/mosaic/radio';

import { RadioOverviewExample } from './radio-overview/radio-overview-example';

export {
    RadioOverviewExample
};

const EXAMPLES = [
    RadioOverviewExample
];

@NgModule({
    imports: [
        CommonModule,
        McCheckboxModule,
        McRadioModule,
        FormsModule
    ],
    declarations: EXAMPLES,
    exports: EXAMPLES
})
export class RadioExamplesModule {
}


text:
FBI spying on the press? You betcha
Yes, Uncle Sam is watching the press. So why is the press surprised by this?
Uncategorized, Unfiled
Reports John Gerstein in The New York Sun:
A former counterterrorism chief at the CIA, Vincent Cannistraro, told The New York Sun yesterday that FBI sources have confirmed to him that reporters' calls are being tracked as part of the probe. "The FBI is monitoring calls of a number of news organizations as part of this leak investigation," Mr. Cannistraro, who has worked as a consultant for ABC, said "It is going on. It is widespread and it may entail more than those three media outlets."
Under longstanding Justice Department regulations, prosecutors who subpoena a journalist's phone records are required to notify the reporter involved within 90 days of obtaining the records. The regulations state that, in most cases, subpoenas should not be issued until after an attempt is made to negotiate access with the reporter.
Spokeswomen for ABC and the Times said their organizations had received no official notification of the effort to seek their phone records. The Washington Post did not respond to a call seeking comment for this article.
The executive director of the Reporters' Committee for Freedom of the Press, Lucy Dalglish, said the government's reported acquisition of journalists' calling records was part of a pattern of intrusions on First Amendment rights by the Bush administration. "I'm ready to throw my arms up in the air," she said. "If there was a subpoena, they are supposed to be notified."
And the beat goes on.


text:
High Inflation Brings Changes to Your Tax Bill
One ripple effect of the high inflation eating into Americans' spending power may be lower tax bills.
Many workers will get bigger paychecks in January and be able to stash more money in their retirement accounts when the Internal Revenue Service makes its annual inflation adjustments to dozens of tax provisions. Normally these are minimal modifications, but given August's persistently high inflation data, tax experts estimate a significant impact on 2023 taxes.
More of Americans' income will be taxed at lower rates next year, when the thresholds for income-tax brackets and the standard deduction are raised, thanks to automatic inflation adjustments built into the tax code, tax professionals say. A single taxpayer with $100,000 of adjusted gross income in 2023, could see a tax savings of about $500 compared to someone with the same income this year, according to Jim Young, an accounting professor at Northern Illinois University.
Estate- and gift-tax thresholds are expected to go up, too, allowing a couple to shelter nearly $2 million more from these taxes. And the contribution limits will likely be raised for retirement plans, meaning more tax-advantaged savings.
Get The New York Times Subscription 3 Years for $69
"Over the last decade, inflation has been moderate, so we only saw minor increases in tax parameters each year," said Kyle Pomerleau, a federal tax policy expert at the American Enterprise Institute. "This year, we will see a much larger adjustment as prices have risen much faster."
These inflation adjustments can hardly be called a silver lining, as Americans are paying more for everything from housing to food and energy.
The IRS makes the adjustments based on formulas set out in federal law that are somewhat different from headline inflation numbers. The Labor Department on Tuesday reported its consumer-price index was 8.3% higher in August than the same month a year ago.
The tax-provision adjustments are tied to an alternate inflation measure called the chained consumer-price index, which takes into account the substitutions shoppers make as costs rise. The average of the chained CPI from September 2021 to August 2022 is used to calculate the 2023 adjustments, which the IRS will announce in October or November. These ultimately affect tax returns for the 2023 tax year filed in early 2024.
Buy The Economist Digital Subscription 3 Years for $69
"Adjusting tax-return data for inflation was a purposeful decision by Congress intended to shield taxpayers from annual inflation," said Mr. Young. "This will hopefully help taxpayers cope with rising prices." The benefits of these changes could be offset by inflation in other ways. If your wages have gone up, your total tax bill may not go down, Mr. Young said.
Here are the estimates, for the IRS adjustments, according to the American Enterprise Institute:
The threshold for the top federal income-tax bracket in 2023 is expected to climb by nearly $50,000 next year for married couples, and that 37% rate will apply to income above $693,750. For individuals, that top tax bracket will start at $578,125.
Those levels and the other tax-bracket break points will all rise about 7% from tax year 2022, compared with about 3% last year, which was the largest increase in four years. This year's increase is the largest in the past 35 years, said Mr. Young.
The Social Security wage base tax level is estimated to increase 5.5% from $147,000 to $155,100 in 2023, according to the 2022 Social Security Trustees Report.
Get 52 weeks of The WSJ Print Edition with daily delivery to your home for $318
The standard deduction for married couples is expected to be $27,700 for 2023, up from $25,900 this year, and $13,850 for individuals, up from $12,950. This is the amount those who don't itemize deductions on their returns can subtract from their total earnings subject to income taxes.
The federal estate-tax exclusion amount, what an individual can shelter from estate taxes, is $12.06 million this year. It is expected to increase to $12.92 million for 2023, meaning a married couple could shelter nearly $26 million from estate tax with little planning.
The annual limit on tax-free gifts is expected to climb from $16,000 this year to $17,000 for 2023. The taxpayers who benefit from this are high-wealth individuals, said Mr. Young. They can give away more without estate- or gift-tax consequences.
Get The New York Times and The Economist 3 Years for $89
The maximum contribution amount for an individual retirement account is expected to jump to $6,500 for 2023, up from $6,000, where it has been stuck since 2019. The maximum contribution allowed for a healthcare flexible spending account is expected to increase to $3,050 in 2023, up from $2,850 this year.
The maximum contribution amount for a 401(k) or similar workplace retirement plan is governed by yet another formula, using inflation data through September. Actuaries at Milliman, a benefits firm, estimate that the contribution limit will rise from $20,500 this year to $22,500 in 2023, and the catch-up amount for workers aged 50-plus will rise from $6,500 to at least $7,500.
The child tax credit is even more complicated. Under current law, the total tax credit of $2,000 per child isn't adjusted for inflation, Mr. Pomerleau said. But the additional child tax credit that is refundable and available even to taxpayers who have no tax liability, is adjusted for inflation. It is expected to rise from $1,500 to $1,600 in 2023. The income limits related to the CTC aren't adjusted for inflation.
The Fed Is Driving an Unusual Contradiction in the Housing Market
Many Colleges Fail in Push to Boost Enrollment of Lower-Income Students


text:
Q: Is "what happened is" correct? Let me provide one example from a local news:

"Essentially what happened is the state approved the same dollar
  amount it did last year for the supplemental general fund"

My thinking is, the above, as well generally, is incorrect b/c of the verb-agreement rules -   and "what happened was" would be [more] correct, context depended obviously.  However,  based in somewhat equal google hits and in speech, I see a prevalent use of "what happened is..."
Please explain when it is correct and when it is NOT.

A: I assume OP is concerned that "is" sounds odd in the context of an event in the past, but there is nothing wrong with such usage. Using "is" arguably draws more attention to the fact that the description/explanation is being given now, but this is a fairly pointless fine distinction.
In short, "is/was" are both valid, just as either choice can optionally be followed by "that". These are stylistic variants; neither is more "correct", nor do they have any significant difference in meaning.
LATER: In the case of OP's specific sentence, the point made by @Chad is relevant. The reference to "last year" in a statement about annual funding, implies that "what happened" is still happening. This I think makes "is" the better choice.
Had it been "the previous year", in a statement talking about a funding approval made many years ago, I think I would probably expect "was".

A: I think it should be "Essentially, what happened is that the state....."

A: Is is a appropriate so long as it still is. If it is no longer, then is is no longer appropriate and was is the correct choice. But if it was when it was said then is was correct then but now was is. (Thats some quality word nerd humor there)
Said in a less fun way so long as the state still has approved the same dollar amount as the year before then present tense is acceptable. A choice of was would infer that it is no longer the case. Particularly since I believe this refers to something the governor thinks was a mistake.

redpajama_set_name: RedPajamaStackExchange


Well this has crept up rather fast, the end of the school year. With our house move and renovation I'm way behind the eight ball in regards to everything else going on around us but with the end of the school year only a matter of days away I've suddenly thought – eek (except it was a lot less polite than that), gifts for the teachers! Just in case you are in the same boat as me I've pulled together a quick "Teachers Gift Ideas" guide that I've gathered from the interwebs (really just another excuse to be on Pinterest) and some things that we've done in the past too.
Have you seen all the fab "Jamberry" nail wraps that are super popular at the moment? My friends Sam & Kim are both consultants and have me hooked but I thought that this was a fun idea.
You can do your own cards and buy the Jamberry Wraps from Sam here or Kim here.
In the past we have given the teachers movie ticket passes or Westfield (shopping centre) gift vouchers. This little gift card holder is quite cute to put them in don't you think?
I particularly like this one and think I might give the girls teachers one each, I love a succulent!
With whatever else we give the teachers we always give a Christmas Tree ornament too. I like the look of these make your own ones (but I have already bought some from the shops (you know with the reno and all ain't got no time for that) so this might be a holiday activity for the girls to do instead).
and also these which adds some humour to the old socks and jocks Christmas pressies.
We also made some Blueberry Chia Jam and gifted that with cute little knives to go with it – wives tale is that if you give a knife as a present you must also give a coin so that you are not severing the friendship, have you heard of that before?
More of my DIY Christmas ideas from last year can be found on the blog here.
Have you got any Teachers Gift Ideas to share?
These are gorgeous!!! I remember getting some super thoughtful pressies off the kids in my class. Reading their cards was always the best bit. Mind you… a bottle of champas didn't go astray either!
If I was a teacher I think I'd like the bubbles too!
My pleasure. We always give Christmas decorations with whatever else we give I think it's a nice tradition.
These are great ideas – thank you!
Ha ha, I loved that one too.
These are great ideas. My kids finish on Friday. We are making Christmas bunting for the teachers. I still need to make some for the prep teacher, but my nine year old learned to sew and finished his bunting for his teacher last night, which made it special that he did it himself.
That's impressive! I bet his teacher will love it.
I'm loving the ideas. We used the 'mistle toes' one last year and it went down a treat. I love the succulent one and might have to steal that.
They are cute aren't they.
Oh love love love all of these! Had a little giggle at the wine label, and absolutely adored the plant with the lovely message. Teachers are the best!
The wine label made me giggle too, hats off to teachers!
Love these! I have made my teacher gifts this year. I really should share on the blog. Thanks for the push. Crap! Not long now!
Yes, I'd love to see what you made. I know ours finish next week!!!!
The Jamberry ones are cute aren't they. It's going to be a Jamberry Christmas I think!


We had the exciting honor of representing UC Davis and presenting our vision for biodegradable diapers, and a less wasteful future at the 2018 Biodesign Challenge in New York City. It was a fabulous time connecting with and being inspired by the emerging bio/design community -- and exploring the city. More information about the Challenge is found on the BDC website, a recorded livestream of our presentation is on Youtube, along with the other finalists' talks, and some of our favorite memories are shared below, enjoy!
After finishing up finals week as students and professors, we powered through several hours of presentation rehearsal before submitting our materials to the BDC organizers. We are so grateful to have mentors like Marc and Christina who not only give us detailed pointers and feedback on our public speaking and slide designs, but also share a healthy appreciation for late night In N' Out!
recharging after our cross country flight at Battery Park where we spotted and plopped down in the Fleurt chairs, a clever design example featured in UC Davis Professor Housefield's Introduction to Design class.
...and explored in the city that afternoon and evening!
Looking snazzy and feeling excited on the subway to Parsons for Summit Day 1: team presentations during the day, gallery showcase of projects the judges and public in the evening.
We are so grateful for this opportunity to explore this exciting topic and were honored to be named Finalists and to be ultimately awarded Overall Runner Up and Outstanding Science!
Sporting some newly acquired banana tees as we flew back West and said our good-byes at the Sacramento airport, the gals of Sorbit prove that the fruit theme never stops with this team. Until next time NYC and BDC!


Hypertension: How much of a health risk?
Hypertension, or high blood pressure, can be a contributing factor to heart attacks, stroke and premature death. For years, anything over 140 the upper number, or systolic, and 90 for the lower number, or diastolic, was considered high enough to warrant medication.
A couple of years ago official medical guidelines dropped those numbers to 130/80, instantly making millions more people eligible for a lifetime of medication, clearly a boon for the pharmaceutical companies. But will it save more lives or make more suffering from the many side effects of blood pressure medications?
In 2012 the Cochrane Collaboration, an international research group, reviewed the medical literature comparing drug treatment of mild hypertension with placebo or no treatment. They found no differences in heart attacks, strokes and deaths between treated and untreated individuals. But they did find that the drugs created a lot of side effects. About ten percent of individuals in these studies dropped out because of the side effects.
Other scientific studies in the last three years show that mild hypertension is not risky. The famous Framingham Heart Study shows that deaths related to hypertension don't increase until systolic blood pressure reaches 175 and death rates only climb significantly above 185.
Malignant hypertension is a death risk, while mild hypertension is not. Sixty percent of hypertensives are in the mild category. Even so, more than half of these people are given drugs.
The costs of physician visits to get these drugs, and the visits to doctors for the side effects of these drugs, plus the cost of these medications is part of the reason American medical costs are so much higher than any other country, yet our health outcomes rank us 50th in the world in life expectancy.
Many of the unnecessary prescriptions for blood pressure and statin drugs are part of the high cost-and the high mortality rates of Americans compared to any other country.
HBP is as common as obesity, diabetes and sleep apnea. These are all part of Insulin Resistance. Insulin resistance cause us to excrete, rather than absorb, dietary magnesium and potassium, both minerals very important in maintaining normal blood pressure.
The dietary approach to insulin resistance, and for HBP, is to reduce sugars and starches and increase beneficial fats like omega threes, coconut oil, pasture butter and the fats that naturally occur in grass fed meats, wild caught fish, egg yolks, avocados and nuts.
Sleeping less than 7-8 hours may raise blood pressure.
Stress control lowers stress hormones, which elevate blood pressure. Stable blood sugar reduces anxiety.
Meditation – Daily meditation lowers anxiety and has many health benefits.


text:
Main Quest: Breaking Point
You'll start this quest with Alester and Mors on the run from Harlton's men. When they stop to catch their breath, they'll talk, and you'll learn that Alester was supposed to have protected Mors' family but failed. After some recriminations and harsh words, Alester and Mors will decide to head over to Riverspring to regroup.
When you arrive at Riverspring, you'll earn 100 xp, and you'll meet with Ryman (#1). Ryman will inform you that Valarr has taken over the city, that he's told everybody that Alester is dead, and that he plans to marry Alester's sister Elyana -- soon. After the conversation, some of Valarr's men will attack you (worth 120 xp), and then Ryman will leave to gather allies for your cause.
To make a plan of attack, you'll need to talk to Maester Harwyn at the docks (#3). He'll convince you to meet with Elyana, who should be able to convince the nobles to take your side. This conversation will earn you 100 xp and also trigger the side quest Safer Streets.
When you meet with Elyana (#4), you'll have to make a choice. You can reward Elyana for her hard work and promise her a share of the rule, or you can put her in her place and keep everything for yourself. This choice is mostly cosmetic. If you ally yourself with Elyana, then you'll earn 140 xp, and you'll be able to avoid a fight in the Courtyard (#5). If you choose the other option, then you won't gain anything. Regardless, you'll receive 100 xp at the end of the conversation.
When you return to Harwyn (#3), you'll arrive just in time to be attacked by more of Valarr's men -- and also just in time for Ryman to show up with two allied swordsmen in tow. You'll then get to make another choice -- to attack Valarr's men or to let them go. If you attack them then you'll earn 160 xp. If you let them go then you won't earn anything, and you'll never see them again. At the end of the encounter, you'll earn another 100 xp.
Next up, you'll need to head to the entrance to the Courtyard (Exit A), where you'll discover four Bloodseekers waiting for you. This encounter will always lead to a fight, but afterwards you'll earn 320 xp, and you'll find a Guardian Helm, a Northman Axe, a Zweihander, and more on the corpses.
Inside the Courtyard, you'll be confronted by Wex and his men (#5). If you allied yourself with Elyana, then she'll convince Wex to stand down, although you'll still be able to fight his men if you want. Otherwise, Wex will automatically order his men to attack you. You'll earn 120 xp for completing the battle.
Inside Riverspring Castle, you'll encounter Valarr, which will earn you 200 xp. No matter what you say to Valarr, he'll accuse you of treason, and Mors will demand a trial by combat. Before and during the fight, Valarr will try to get under Mors' skin. Each time you ignore a taunt during the fight, Mors will regenerate his energy, making the subsequent part of the battle easier. If you ignore all of Valarr's taunts, then Mors will earn the bonus trait Unwavering (deflection +1%).
Once Mors has done enough damage to Valarr, Valarr will cheat and summon a shadow, which will kill Mors. Valarr will then behead Elyana, kill all of the nobles in attendance, imprison Alester in his father's tomb, and head to Castlewood so he can finally kill Jeyne. Luckily for you, Ryman will escape.
2 - Marketplace
You won't find any shopkeepers in the marketplace, but you will find several items that you can loot.
3 - Maester Harwyn
4 - Elyana
5 - Wex
One-way exit to the Courtyard.
Entrance to Riverspring Castle.


The UPTab USB-C (Type-C™) to HDMI™ (4K), 2-Prot USB3.0, SD TF Card Reader, Type-C™ Power Delivery and Gigabit Ethernet Adapter is an ideal solution for adding more USB ports as well as a high speed wired network interface a great compliment for your Macbook or Google new Chromebook Pixel and other devices with type C port. With this adapter, you can connect multiple USB3.0 or USB2.0 devices like printers, external Hard Drives and many more USB compliant devices.Video Adapter 4K: Mirror or extend your screen with the HDMI port and directly stream 4K UHD (30Hz.) or Full HD 1080p video to HDTV, monitor or projector. POWER DELIVERY: Charging your laptop while connecting multiple peripherals and transferring data.
The USB-C (Type-C™) adapter is perfect companion for Apple new MacBook Pro 2016/2017/2018.
HDMI™ 1.4 resolution 4096 x 2160 at 30Hz frame rate with 24-bit color.
USB-C (Type-C™) Power Delivery - Charging your laptop while connecting multiple peripherals and transferring data.
1x USB-C (Type-C™) to HDMI™, 2-Port USB 3.0, Card Reader, USB-C for Power Delivery and Ethernet Adapter.
I was skeptical at first if this adapter will work with my new iPad Pro but was happy surprised to see that I was able to access my pictures form my card and charge at same time using the charging port. I take one star because it little to big dangling on the side.


n Children with Complex Medical Issues in Schools, Dr. Castillo bridges the gap between research and practice and provides a concise, yet thorough reference that covers a broad range of conditions, from high incidence disorders like epilepsy and meningitis, to those with less obvious neurological underpinnings like asthma and diabetes.
Increasingly, children with significant medical issues are being incorporated into the general school environment. Given the potential effects of various disorders and conditions on educational prognosis, it is important for neuropsychologists, pediatric psychologists, school psychologists, teachers, and other professionals who are working with these children to be aware of the nature and course of these many disorders as well as the avenues for rehabilitation, accommodation, and classroom modification.


For today's 1930s paper doll dresses the "thing" I wanted to draw were those sleeves on the dress on the left. That dress is from a McCall 7209, copyrighted in 1932. You can see similar sleeves in McCall 8371 and McCall 8599 from 1935 or Simplicity 1325 from 1933. The sleeve details of the 1930s foreshadow the broad-shouldered silhouette that will become popular at the end of the decade and then take over in the 1940s.
The other of the 1930s paper doll dresses is the one on the right with the scarf. That's from McCall 8206 and is copyrighted 1935. It's a more subdued dress and closer to what I think of when I think of the 1930s. The skirt drops quickly from the late 1920s when it's just below the knee to mid-calve by the early 1930s.
The two hats are based on a soft folded felt hats that were common in this era. I didn't have a specific example I was copying, but heres a few from a pattern cover and one at the LACMA museum. More examples of 1930s clothing can be seen on my 1930s Fashion Pinterest board.
I tried to pick colors schemes that coordinated for these, so that the hats could be worn with either dress.
If you're thinking, but there's no paper doll with historic underwear to go with these dresses, fear not. I have a 1930s Benedita in the works to accompany today's gowns, but until she's done any of the B Pose dolls can share these dresses.
Meanwhile, there's an alternative color scheme on the Patreon page from my Patrons- donate and join if you'd like to support the blog. Now, would be a smart time to join, because I am currently doing my annual "Make requests" poll for my Patrons. If you've ever wanted to see a ballerina pirate paper doll dress, now would be the time to ask.
I love these! thanks, the dolls are grateful.
It's been okay here, but north and east of here they are getting like baseball sized hail, which is just wrong. So, I'm very grateful to be safe.