This elastic therapeutic tape has been given a high profile thanks to such athletes as Serena Williams, Kerri Walsh and David Beckham.
Yet d3® K tape is effective for treating a wide range of problems, not just sports injuries. In fact, the main users of K tape when it was first introduced in Japan were orthopedists, chiropractors, acupuncturists and other alternative practitioners.
The elastic cotton strip and an acrylic adhesive is perfect for treating a variety of injuries and physical disorders, from tennis elbow to pregnancy pain.
When a muscle is inflamed, swollen or stiff, the space between the skin and the muscle is compressed resulting in constriction and congestion to the flow of lymphatic fluid and blood circulation. This compression applies pressure to the pain receptors resulting in the feeling of soreness to the affected area.
Applying d3® K6.0 Kinesiology Tape helps to lift the skin allowing increased lymphatic fluid and blood flow to the affected area. This reduces friction and pressure on the damaged tissues and relieves the feeling of pain. Supporting and promoting injury recovery reduces muscle fatigue, encourages increased range of motion and supports better quality muscle contraction.
What is d3® K Tape used for?


(Toronto, January 1, 2016) – Fox Flight Air Ambulance, a Canadian company specializing in international medical repatriation, recently relocated its Toronto headquarters to an expanded, custom-built office space. In addition, the company also recently completed an extensive renovation and reorganization of its dedicated hangar facilities at Lester B. Pearson International Airport. The upgraded facilities are the end result of a year-long initiative designed to allow Fox Flight to more efficiently meet current demand for its repatriation services and to better position the company for future growth.


text:
package org.apache.hadoop.yarn.server.timelineservice.storage.flow;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.Tag;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.regionserver.Region;
import org.apache.hadoop.hbase.regionserver.HRegionServer;
import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.yarn.api.records.timelineservice.TimelineEntities;
import org.apache.hadoop.yarn.api.records.timelineservice.TimelineEntity;
import org.apache.hadoop.yarn.server.timelineservice.collector.TimelineCollectorContext;
import org.apache.hadoop.yarn.server.timelineservice.storage.DataGeneratorForTest;
import org.apache.hadoop.yarn.server.timelineservice.storage.HBaseTimelineWriterImpl;
import org.apache.hadoop.yarn.server.timelineservice.storage.common.BaseTable;
import org.apache.hadoop.yarn.server.timelineservice.storage.common.ColumnHelper;
import org.apache.hadoop.yarn.server.timelineservice.storage.common.HBaseTimelineStorageUtils;
import org.apache.hadoop.yarn.server.timelineservice.storage.common.LongConverter;
import org.apache.hadoop.yarn.server.timelineservice.storage.common.TimestampGenerator;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

/**
 * Tests the FlowRun and FlowActivity Tables.
 */
public class TestHBaseStorageFlowRunCompaction {

  private static HBaseTestingUtility util;

  private static final String METRIC1 = "MAP_SLOT_MILLIS";
  private static final String METRIC2 = "HDFS_BYTES_READ";

  private final byte[] aRowKey = Bytes.toBytes("a");
  private final byte[] aFamily = Bytes.toBytes("family");
  private final byte[] aQualifier = Bytes.toBytes("qualifier");

  @BeforeClass
  public static void setupBeforeClass() throws Exception {
    util = new HBaseTestingUtility();
    Configuration conf = util.getConfiguration();
    conf.setInt("hfile.format.version", 3);
    util.startMiniCluster();
    DataGeneratorForTest.createSchema(util.getConfiguration());
  }

  /**
   * writes non numeric data into flow run table.
   * reads it back
   *
   * @throws Exception
   */
  @Test
  public void testWriteNonNumericData() throws Exception {
    String rowKey = "nonNumericRowKey";
    String column = "nonNumericColumnName";
    String value = "nonNumericValue";
    byte[] rowKeyBytes = Bytes.toBytes(rowKey);
    byte[] columnNameBytes = Bytes.toBytes(column);
    byte[] valueBytes = Bytes.toBytes(value);
    Put p = new Put(rowKeyBytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnNameBytes,
        valueBytes);
    Configuration hbaseConf = util.getConfiguration();
    Connection conn = null;
    conn = ConnectionFactory.createConnection(hbaseConf);
    Table flowRunTable = conn.getTable(BaseTable.getTableName(hbaseConf,
        FlowRunTable.TABLE_NAME_CONF_NAME, FlowRunTable.DEFAULT_TABLE_NAME));
    flowRunTable.put(p);

    Get g = new Get(rowKeyBytes);
    Result r = flowRunTable.get(g);
    assertNotNull(r);
    assertTrue(r.size() >= 1);
    Cell actualValue = r.getColumnLatestCell(
        FlowRunColumnFamily.INFO.getBytes(), columnNameBytes);
    assertNotNull(CellUtil.cloneValue(actualValue));
    assertEquals(Bytes.toString(CellUtil.cloneValue(actualValue)), value);
  }

  @Test
  public void testWriteScanBatchLimit() throws Exception {
    String rowKey = "nonNumericRowKey";
    String column = "nonNumericColumnName";
    String value = "nonNumericValue";
    String column2 = "nonNumericColumnName2";
    String value2 = "nonNumericValue2";
    String column3 = "nonNumericColumnName3";
    String value3 = "nonNumericValue3";
    String column4 = "nonNumericColumnName4";
    String value4 = "nonNumericValue4";

    byte[] rowKeyBytes = Bytes.toBytes(rowKey);
    byte[] columnNameBytes = Bytes.toBytes(column);
    byte[] valueBytes = Bytes.toBytes(value);
    byte[] columnName2Bytes = Bytes.toBytes(column2);
    byte[] value2Bytes = Bytes.toBytes(value2);
    byte[] columnName3Bytes = Bytes.toBytes(column3);
    byte[] value3Bytes = Bytes.toBytes(value3);
    byte[] columnName4Bytes = Bytes.toBytes(column4);
    byte[] value4Bytes = Bytes.toBytes(value4);

    Put p = new Put(rowKeyBytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnNameBytes,
        valueBytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnName2Bytes,
        value2Bytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnName3Bytes,
        value3Bytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnName4Bytes,
        value4Bytes);

    Configuration hbaseConf = util.getConfiguration();
    Connection conn = null;
    conn = ConnectionFactory.createConnection(hbaseConf);
    Table flowRunTable = conn.getTable(BaseTable.getTableName(hbaseConf,
        FlowRunTable.TABLE_NAME_CONF_NAME, FlowRunTable.DEFAULT_TABLE_NAME));
    flowRunTable.put(p);

    String rowKey2 = "nonNumericRowKey2";
    byte[] rowKey2Bytes = Bytes.toBytes(rowKey2);
    p = new Put(rowKey2Bytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnNameBytes,
        valueBytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnName2Bytes,
        value2Bytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnName3Bytes,
        value3Bytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnName4Bytes,
        value4Bytes);
    flowRunTable.put(p);

    String rowKey3 = "nonNumericRowKey3";
    byte[] rowKey3Bytes = Bytes.toBytes(rowKey3);
    p = new Put(rowKey3Bytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnNameBytes,
        valueBytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnName2Bytes,
        value2Bytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnName3Bytes,
        value3Bytes);
    p.addColumn(FlowRunColumnFamily.INFO.getBytes(), columnName4Bytes,
        value4Bytes);
    flowRunTable.put(p);

    Scan s = new Scan();
    s.addFamily(FlowRunColumnFamily.INFO.getBytes());
    s.setStartRow(rowKeyBytes);
    // set number of cells to fetch per scanner next invocation
    int batchLimit = 2;
    s.setBatch(batchLimit);
    ResultScanner scanner = flowRunTable.getScanner(s);
    for (Result result : scanner) {
      assertNotNull(result);
      assertTrue(!result.isEmpty());
      assertTrue(result.rawCells().length <= batchLimit);
      Map<byte[], byte[]> values = result
          .getFamilyMap(FlowRunColumnFamily.INFO.getBytes());
      assertTrue(values.size() <= batchLimit);
    }

    s = new Scan();
    s.addFamily(FlowRunColumnFamily.INFO.getBytes());
    s.setStartRow(rowKeyBytes);
    // set number of cells to fetch per scanner next invocation
    batchLimit = 3;
    s.setBatch(batchLimit);
    scanner = flowRunTable.getScanner(s);
    for (Result result : scanner) {
      assertNotNull(result);
      assertTrue(!result.isEmpty());
      assertTrue(result.rawCells().length <= batchLimit);
      Map<byte[], byte[]> values = result
          .getFamilyMap(FlowRunColumnFamily.INFO.getBytes());
      assertTrue(values.size() <= batchLimit);
    }

    s = new Scan();
    s.addFamily(FlowRunColumnFamily.INFO.getBytes());
    s.setStartRow(rowKeyBytes);
    // set number of cells to fetch per scanner next invocation
    batchLimit = 1000;
    s.setBatch(batchLimit);
    scanner = flowRunTable.getScanner(s);
    int rowCount = 0;
    for (Result result : scanner) {
      assertNotNull(result);
      assertTrue(!result.isEmpty());
      assertTrue(result.rawCells().length <= batchLimit);
      Map<byte[], byte[]> values = result
          .getFamilyMap(FlowRunColumnFamily.INFO.getBytes());
      assertTrue(values.size() <= batchLimit);
      // we expect all back in one next call
      assertEquals(4, values.size());
      rowCount++;
    }
    // should get back 1 row with each invocation
    // if scan batch is set sufficiently high
    assertEquals(3, rowCount);

    // test with a negative number
    // should have same effect as setting it to a high number
    s = new Scan();
    s.addFamily(FlowRunColumnFamily.INFO.getBytes());
    s.setStartRow(rowKeyBytes);
    // set number of cells to fetch per scanner next invocation
    batchLimit = -2992;
    s.setBatch(batchLimit);
    scanner = flowRunTable.getScanner(s);
    rowCount = 0;
    for (Result result : scanner) {
      assertNotNull(result);
      assertTrue(!result.isEmpty());
      assertEquals(4, result.rawCells().length);
      Map<byte[], byte[]> values = result
          .getFamilyMap(FlowRunColumnFamily.INFO.getBytes());
      // we expect all back in one next call
      assertEquals(4, values.size());
      rowCount++;
    }
    // should get back 1 row with each invocation
    // if scan batch is set sufficiently high
    assertEquals(3, rowCount);
  }

  @Test
  public void testWriteFlowRunCompaction() throws Exception {
    String cluster = "kompaction_cluster1";
    String user = "kompaction_FlowRun__user1";
    String flow = "kompaction_flowRun_flow_name";
    String flowVersion = "AF1021C19F1351";
    long runid = 1449526652000L;

    int start = 10;
    int count = 2000;
    int appIdSuffix = 1;
    HBaseTimelineWriterImpl hbi = null;
    long insertTs = System.currentTimeMillis() - count;
    Configuration c1 = util.getConfiguration();
    TimelineEntities te1 = null;
    TimelineEntity entityApp1 = null;
    UserGroupInformation remoteUser =
        UserGroupInformation.createRemoteUser(user);
    try {
      hbi = new HBaseTimelineWriterImpl();
      hbi.init(c1);

      // now insert count * ( 100 + 100) metrics
      // each call to getEntityMetricsApp1 brings back 100 values
      // of metric1 and 100 of metric2
      for (int i = start; i < start + count; i++) {
        String appName = "application_10240000000000_" + appIdSuffix;
        insertTs++;
        te1 = new TimelineEntities();
        entityApp1 = TestFlowDataGenerator.getEntityMetricsApp1(insertTs, c1);
        te1.addEntity(entityApp1);
        hbi.write(new TimelineCollectorContext(cluster, user, flow, flowVersion,
            runid, appName), te1, remoteUser);

        appName = "application_2048000000000_7" + appIdSuffix;
        insertTs++;
        te1 = new TimelineEntities();
        entityApp1 = TestFlowDataGenerator.getEntityMetricsApp2(insertTs);
        te1.addEntity(entityApp1);
        hbi.write(new TimelineCollectorContext(cluster, user, flow, flowVersion,
            runid, appName), te1, remoteUser);
      }
    } finally {
      String appName = "application_10240000000000_" + appIdSuffix;
      te1 = new TimelineEntities();
      entityApp1 = TestFlowDataGenerator.getEntityMetricsApp1Complete(
          insertTs + 1, c1);
      te1.addEntity(entityApp1);
      if (hbi != null) {
        hbi.write(new TimelineCollectorContext(cluster, user, flow, flowVersion,
            runid, appName), te1, remoteUser);
        hbi.flush();
        hbi.close();
      }
    }

    // check in flow run table
    HRegionServer server = util.getRSForFirstRegionInTable(
        BaseTable.getTableName(c1, FlowRunTable.TABLE_NAME_CONF_NAME,
            FlowRunTable.DEFAULT_TABLE_NAME));
    List<Region> regions = server.getOnlineRegions(BaseTable.getTableName(c1,
        FlowRunTable.TABLE_NAME_CONF_NAME, FlowRunTable.DEFAULT_TABLE_NAME));
    assertTrue("Didn't find any regions for primary table!",
        regions.size() > 0);
    // flush and compact all the regions of the primary table
    for (Region region : regions) {
      region.flush(true);
      region.compact(true);
    }

    // check flow run for one flow many apps
    checkFlowRunTable(cluster, user, flow, runid, c1, 4);
  }

  private void checkFlowRunTable(String cluster, String user, String flow,
      long runid, Configuration c1, int valueCount) throws IOException {
    Scan s = new Scan();
    s.addFamily(FlowRunColumnFamily.INFO.getBytes());
    byte[] startRow = new FlowRunRowKey(cluster, user, flow, runid).getRowKey();
    s.setStartRow(startRow);
    String clusterStop = cluster + "1";
    byte[] stopRow =
        new FlowRunRowKey(clusterStop, user, flow, runid).getRowKey();
    s.setStopRow(stopRow);
    Connection conn = ConnectionFactory.createConnection(c1);
    Table table1 = conn.getTable(BaseTable.getTableName(c1,
        FlowRunTable.TABLE_NAME_CONF_NAME, FlowRunTable.DEFAULT_TABLE_NAME));
    ResultScanner scanner = table1.getScanner(s);

    int rowCount = 0;
    for (Result result : scanner) {
      assertNotNull(result);
      assertTrue(!result.isEmpty());
      Map<byte[], byte[]> values = result.getFamilyMap(FlowRunColumnFamily.INFO
          .getBytes());
      assertEquals(valueCount, values.size());

      rowCount++;
      // check metric1
      byte[] q = ColumnHelper.getColumnQualifier(
          FlowRunColumnPrefix.METRIC.getColumnPrefixBytes(), METRIC1);
      assertTrue(values.containsKey(q));
      assertEquals(141, Bytes.toLong(values.get(q)));

      // check metric2
      q = ColumnHelper.getColumnQualifier(
          FlowRunColumnPrefix.METRIC.getColumnPrefixBytes(), METRIC2);
      assertTrue(values.containsKey(q));
      assertEquals(57, Bytes.toLong(values.get(q)));
    }
    assertEquals(1, rowCount);
  }

  private FlowScanner getFlowScannerForTestingCompaction() {
    // create a FlowScanner object with the sole purpose of invoking a process
    // summation;
    CompactionRequest request = new CompactionRequest();
    request.setIsMajor(true, true);
    // okay to pass in nulls for the constructor arguments
    // because all we want to do is invoke the process summation
    FlowScanner fs = new FlowScanner(null, null,
        (request.isMajor() ? FlowScannerOperation.MAJOR_COMPACTION
            : FlowScannerOperation.MINOR_COMPACTION));
    assertNotNull(fs);
    return fs;
  }

  @Test
  public void checkProcessSummationMoreCellsSumFinal2()
      throws IOException {
    long cellValue1 = 1236L;
    long cellValue2 = 28L;
    long cellValue3 = 1236L;
    long cellValue4 = 1236L;
    FlowScanner fs = getFlowScannerForTestingCompaction();

    // note down the current timestamp
    long currentTimestamp = System.currentTimeMillis();
    long cell1Ts = 1200120L;
    long cell2Ts = TimestampGenerator.getSupplementedTimestamp(
        System.currentTimeMillis(), "application_123746661110_11202");
    long cell3Ts = 1277719L;
    long cell4Ts = currentTimestamp - 10;

    SortedSet<Cell> currentColumnCells = new TreeSet<Cell>(KeyValue.COMPARATOR);

    List<Tag> tags = new ArrayList<>();
    Tag t = new Tag(AggregationOperation.SUM_FINAL.getTagType(),
        "application_1234588888_91188");
    tags.add(t);
    byte[] tagByteArray = Tag.fromList(tags);
    // create a cell with a VERY old timestamp and attribute SUM_FINAL
    Cell c1 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily,
        aQualifier, cell1Ts, Bytes.toBytes(cellValue1), tagByteArray);
    currentColumnCells.add(c1);

    tags = new ArrayList<>();
    t = new Tag(AggregationOperation.SUM_FINAL.getTagType(),
        "application_12700000001_29102");
    tags.add(t);
    tagByteArray = Tag.fromList(tags);
    // create a cell with a recent timestamp and attribute SUM_FINAL
    Cell c2 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily,
        aQualifier, cell2Ts, Bytes.toBytes(cellValue2), tagByteArray);
    currentColumnCells.add(c2);

    tags = new ArrayList<>();
    t = new Tag(AggregationOperation.SUM.getTagType(),
        "application_191780000000001_8195");
    tags.add(t);
    tagByteArray = Tag.fromList(tags);
    // create a cell with a VERY old timestamp but has attribute SUM
    Cell c3 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily,
        aQualifier, cell3Ts, Bytes.toBytes(cellValue3), tagByteArray);
    currentColumnCells.add(c3);

    tags = new ArrayList<>();
    t = new Tag(AggregationOperation.SUM.getTagType(),
        "application_191780000000001_98104");
    tags.add(t);
    tagByteArray = Tag.fromList(tags);
    // create a cell with a VERY old timestamp but has attribute SUM
    Cell c4 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily,
        aQualifier, cell4Ts, Bytes.toBytes(cellValue4), tagByteArray);
    currentColumnCells.add(c4);

    List<Cell> cells =
        fs.processSummationMajorCompaction(currentColumnCells,
            new LongConverter(), currentTimestamp);
    assertNotNull(cells);

    // we should be getting back 4 cells
    // one is the flow sum cell
    // two are the cells with SUM attribute
    // one cell with SUM_FINAL
    assertEquals(4, cells.size());

    for (int i = 0; i < cells.size(); i++) {
      Cell returnedCell = cells.get(0);
      assertNotNull(returnedCell);

      long returnTs = returnedCell.getTimestamp();
      long returnValue = Bytes.toLong(CellUtil
          .cloneValue(returnedCell));
      if (returnValue == cellValue2) {
        assertTrue(returnTs == cell2Ts);
      } else if (returnValue == cellValue3) {
        assertTrue(returnTs == cell3Ts);
      } else if (returnValue == cellValue4) {
        assertTrue(returnTs == cell4Ts);
      } else if (returnValue == cellValue1) {
        assertTrue(returnTs != cell1Ts);
        assertTrue(returnTs > cell1Ts);
        assertTrue(returnTs >= currentTimestamp);
      } else {
        // raise a failure since we expect only these two values back
        Assert.fail();
      }
    }
  }

  // tests with many cells
  // of type SUM and SUM_FINAL
  // all cells of SUM_FINAL will expire
  @Test
  public void checkProcessSummationMoreCellsSumFinalMany() throws IOException {
    FlowScanner fs = getFlowScannerForTestingCompaction();
    int count = 200000;

    long cellValueFinal = 1000L;
    long cellValueNotFinal = 28L;

    // note down the current timestamp
    long currentTimestamp = System.currentTimeMillis();
    long cellTsFinalStart = 10001120L;
    long cellTsFinal = cellTsFinalStart;
    long cellTsNotFinalStart = currentTimestamp - 5;
    long cellTsNotFinal = cellTsNotFinalStart;

    SortedSet<Cell> currentColumnCells = new TreeSet<Cell>(KeyValue.COMPARATOR);
    List<Tag> tags = null;
    Tag t = null;
    Cell c1 = null;

    // insert SUM_FINAL cells
    for (int i = 0; i < count; i++) {
      tags = new ArrayList<>();
      t = new Tag(AggregationOperation.SUM_FINAL.getTagType(),
          "application_123450000" + i + "01_19" + i);
      tags.add(t);
      byte[] tagByteArray = Tag.fromList(tags);
      // create a cell with a VERY old timestamp and attribute SUM_FINAL
      c1 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily, aQualifier,
          cellTsFinal, Bytes.toBytes(cellValueFinal), tagByteArray);
      currentColumnCells.add(c1);
      cellTsFinal++;
    }

    // add SUM cells
    for (int i = 0; i < count; i++) {
      tags = new ArrayList<>();
      t = new Tag(AggregationOperation.SUM.getTagType(),
          "application_1987650000" + i + "83_911" + i);
      tags.add(t);
      byte[] tagByteArray = Tag.fromList(tags);
      // create a cell with attribute SUM
      c1 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily, aQualifier,
          cellTsNotFinal, Bytes.toBytes(cellValueNotFinal), tagByteArray);
      currentColumnCells.add(c1);
      cellTsNotFinal++;
    }

    List<Cell> cells =
        fs.processSummationMajorCompaction(currentColumnCells,
            new LongConverter(), currentTimestamp);
    assertNotNull(cells);

    // we should be getting back count + 1 cells
    // one is the flow sum cell
    // others are the cells with SUM attribute
    assertEquals(count + 1, cells.size());

    for (int i = 0; i < cells.size(); i++) {
      Cell returnedCell = cells.get(0);
      assertNotNull(returnedCell);

      long returnTs = returnedCell.getTimestamp();
      long returnValue = Bytes.toLong(CellUtil
          .cloneValue(returnedCell));
      if (returnValue == (count * cellValueFinal)) {
        assertTrue(returnTs > (cellTsFinalStart + count));
        assertTrue(returnTs >= currentTimestamp);
      } else if ((returnValue >= cellValueNotFinal)
          && (returnValue <= cellValueNotFinal * count)) {
        assertTrue(returnTs >= cellTsNotFinalStart);
        assertTrue(returnTs <= cellTsNotFinalStart * count);
      } else {
        // raise a failure since we expect only these values back
        Assert.fail();
      }
    }
  }

  // tests with many cells
  // of type SUM and SUM_FINAL
  // NOT cells of SUM_FINAL will expire
  @Test
  public void checkProcessSummationMoreCellsSumFinalVariedTags()
      throws IOException {
    FlowScanner fs = getFlowScannerForTestingCompaction();
    int countFinal = 20100;
    int countNotFinal = 1000;
    int countFinalNotExpire = 7009;

    long cellValueFinal = 1000L;
    long cellValueNotFinal = 28L;

    // note down the current timestamp
    long currentTimestamp = System.currentTimeMillis();
    long cellTsFinalStart = 10001120L;
    long cellTsFinal = cellTsFinalStart;

    long cellTsFinalStartNotExpire = TimestampGenerator
        .getSupplementedTimestamp(System.currentTimeMillis(),
            "application_10266666661166_118821");
    long cellTsFinalNotExpire = cellTsFinalStartNotExpire;

    long cellTsNotFinalStart = currentTimestamp - 5;
    long cellTsNotFinal = cellTsNotFinalStart;

    SortedSet<Cell> currentColumnCells = new TreeSet<Cell>(KeyValue.COMPARATOR);
    List<Tag> tags = null;
    Tag t = null;
    Cell c1 = null;

    // insert SUM_FINAL cells which will expire
    for (int i = 0; i < countFinal; i++) {
      tags = new ArrayList<>();
      t = new Tag(AggregationOperation.SUM_FINAL.getTagType(),
          "application_123450000" + i + "01_19" + i);
      tags.add(t);
      byte[] tagByteArray = Tag.fromList(tags);
      // create a cell with a VERY old timestamp and attribute SUM_FINAL
      c1 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily, aQualifier,
          cellTsFinal, Bytes.toBytes(cellValueFinal), tagByteArray);
      currentColumnCells.add(c1);
      cellTsFinal++;
    }

    // insert SUM_FINAL cells which will NOT expire
    for (int i = 0; i < countFinalNotExpire; i++) {
      tags = new ArrayList<>();
      t = new Tag(AggregationOperation.SUM_FINAL.getTagType(),
          "application_123450000" + i + "01_19" + i);
      tags.add(t);
      byte[] tagByteArray = Tag.fromList(tags);
      // create a cell with a VERY old timestamp and attribute SUM_FINAL
      c1 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily, aQualifier,
          cellTsFinalNotExpire, Bytes.toBytes(cellValueFinal), tagByteArray);
      currentColumnCells.add(c1);
      cellTsFinalNotExpire++;
    }

    // add SUM cells
    for (int i = 0; i < countNotFinal; i++) {
      tags = new ArrayList<>();
      t = new Tag(AggregationOperation.SUM.getTagType(),
          "application_1987650000" + i + "83_911" + i);
      tags.add(t);
      byte[] tagByteArray = Tag.fromList(tags);
      // create a cell with attribute SUM
      c1 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily, aQualifier,
          cellTsNotFinal, Bytes.toBytes(cellValueNotFinal), tagByteArray);
      currentColumnCells.add(c1);
      cellTsNotFinal++;
    }

    List<Cell> cells =
        fs.processSummationMajorCompaction(currentColumnCells,
            new LongConverter(), currentTimestamp);
    assertNotNull(cells);

    // we should be getting back
    // countNotFinal + countFinalNotExpire + 1 cells
    // one is the flow sum cell
    // count = the cells with SUM attribute
    // count = the cells with SUM_FINAL attribute but not expired
    assertEquals(countFinalNotExpire + countNotFinal + 1, cells.size());

    for (int i = 0; i < cells.size(); i++) {
      Cell returnedCell = cells.get(0);
      assertNotNull(returnedCell);

      long returnTs = returnedCell.getTimestamp();
      long returnValue = Bytes.toLong(CellUtil
          .cloneValue(returnedCell));
      if (returnValue == (countFinal * cellValueFinal)) {
        assertTrue(returnTs > (cellTsFinalStart + countFinal));
        assertTrue(returnTs >= currentTimestamp);
      } else if (returnValue == cellValueNotFinal) {
        assertTrue(returnTs >= cellTsNotFinalStart);
        assertTrue(returnTs <= cellTsNotFinalStart + countNotFinal);
      } else if (returnValue == cellValueFinal){
        assertTrue(returnTs >= cellTsFinalStartNotExpire);
        assertTrue(returnTs <= cellTsFinalStartNotExpire + countFinalNotExpire);
      } else {
        // raise a failure since we expect only these values back
        Assert.fail();
      }
    }
  }

  @Test
  public void testProcessSummationMoreCellsSumFinal() throws IOException {
    FlowScanner fs = getFlowScannerForTestingCompaction();
    // note down the current timestamp
    long currentTimestamp = System.currentTimeMillis();
    long cellValue1 = 1236L;
    long cellValue2 = 28L;

    List<Tag> tags = new ArrayList<>();
    Tag t = new Tag(AggregationOperation.SUM_FINAL.getTagType(),
        "application_1234588888_999888");
    tags.add(t);
    byte[] tagByteArray = Tag.fromList(tags);
    SortedSet<Cell> currentColumnCells = new TreeSet<Cell>(KeyValue.COMPARATOR);

    // create a cell with a VERY old timestamp and attribute SUM_FINAL
    Cell c1 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily,
        aQualifier, 120L, Bytes.toBytes(cellValue1), tagByteArray);
    currentColumnCells.add(c1);

    tags = new ArrayList<>();
    t = new Tag(AggregationOperation.SUM.getTagType(),
        "application_100000000001_119101");
    tags.add(t);
    tagByteArray = Tag.fromList(tags);

    // create a cell with a VERY old timestamp but has attribute SUM
    Cell c2 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily,
        aQualifier, 130L, Bytes.toBytes(cellValue2), tagByteArray);
    currentColumnCells.add(c2);
    List<Cell> cells = fs.processSummationMajorCompaction(currentColumnCells,
        new LongConverter(), currentTimestamp);
    assertNotNull(cells);

    // we should be getting back two cells
    // one is the flow sum cell
    // another is the cell with SUM attribute
    assertEquals(2, cells.size());

    Cell returnedCell = cells.get(0);
    assertNotNull(returnedCell);
    long inputTs1 = c1.getTimestamp();
    long inputTs2 = c2.getTimestamp();

    long returnTs = returnedCell.getTimestamp();
    long returnValue = Bytes.toLong(CellUtil
        .cloneValue(returnedCell));
    // the returned Ts will be far greater than input ts as well as the noted
    // current timestamp
    if (returnValue == cellValue2) {
      assertTrue(returnTs == inputTs2);
    } else if (returnValue == cellValue1) {
      assertTrue(returnTs >= currentTimestamp);
      assertTrue(returnTs != inputTs1);
    } else {
      // raise a failure since we expect only these two values back
      Assert.fail();
    }
  }

  @Test
  public void testProcessSummationOneCellSumFinal() throws IOException {
    FlowScanner fs = getFlowScannerForTestingCompaction();

    // note down the current timestamp
    long currentTimestamp = System.currentTimeMillis();
    List<Tag> tags = new ArrayList<>();
    Tag t = new Tag(AggregationOperation.SUM_FINAL.getTagType(),
        "application_123458888888_999888");
    tags.add(t);
    byte[] tagByteArray = Tag.fromList(tags);
    SortedSet<Cell> currentColumnCells = new TreeSet<Cell>(KeyValue.COMPARATOR);

    // create a cell with a VERY old timestamp
    Cell c1 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily,
        aQualifier, 120L, Bytes.toBytes(1110L), tagByteArray);
    currentColumnCells.add(c1);

    List<Cell> cells = fs.processSummationMajorCompaction(currentColumnCells,
        new LongConverter(), currentTimestamp);
    assertNotNull(cells);
    // we should not get the same cell back
    // but we get back the flow cell
    assertEquals(1, cells.size());

    Cell returnedCell = cells.get(0);
    // it's NOT the same cell
    assertNotEquals(c1, returnedCell);
    long inputTs = c1.getTimestamp();
    long returnTs = returnedCell.getTimestamp();
    // the returned Ts will be far greater than input ts as well as the noted
    // current timestamp
    assertTrue(returnTs > inputTs);
    assertTrue(returnTs >= currentTimestamp);
  }

  @Test
  public void testProcessSummationOneCell() throws IOException {
    FlowScanner fs = getFlowScannerForTestingCompaction();

    // note down the current timestamp
    long currentTimestamp = System.currentTimeMillis();

    // try for 1 cell with tag SUM
    List<Tag> tags = new ArrayList<>();
    Tag t = new Tag(AggregationOperation.SUM.getTagType(),
        "application_123458888888_999888");
    tags.add(t);
    byte[] tagByteArray = Tag.fromList(tags);

    SortedSet<Cell> currentColumnCells = new TreeSet<Cell>(KeyValue.COMPARATOR);

    Cell c1 = HBaseTimelineStorageUtils.createNewCell(aRowKey, aFamily,
        aQualifier, currentTimestamp, Bytes.toBytes(1110L), tagByteArray);
    currentColumnCells.add(c1);
    List<Cell> cells = fs.processSummationMajorCompaction(currentColumnCells,
        new LongConverter(), currentTimestamp);
    assertNotNull(cells);
    // we expect the same cell back
    assertEquals(1, cells.size());
    Cell c2 = cells.get(0);
    assertEquals(c1, c2);
    assertEquals(currentTimestamp, c2.getTimestamp());
  }

  @Test
  public void testProcessSummationEmpty() throws IOException {
    FlowScanner fs = getFlowScannerForTestingCompaction();
    long currentTimestamp = System.currentTimeMillis();

    LongConverter longConverter = new LongConverter();

    SortedSet<Cell> currentColumnCells = null;
    List<Cell> cells =
        fs.processSummationMajorCompaction(currentColumnCells, longConverter,
            currentTimestamp);
    assertNotNull(cells);
    assertEquals(0, cells.size());

    currentColumnCells = new TreeSet<Cell>(KeyValue.COMPARATOR);
    cells =
        fs.processSummationMajorCompaction(currentColumnCells, longConverter,
            currentTimestamp);
    assertNotNull(cells);
    assertEquals(0, cells.size());
  }

  @AfterClass
  public static void tearDownAfterClass() throws Exception {
    util.shutdownMiniCluster();
  }
}

redpajama_set_name: RedPajamaGithub


text:
Richard "Superman" Harris
Home>Richard "Superman" Harris
Superman is a fictional character, a comic book superhero who appears in comic books published by DC Comics. He is widely considered to be an American cultural icon. Superman possesses extraordinary powers, with the character traditionally described as "faster than a speeding bullet, more powerful than a locomotive, and able to leap tall buildings in a single bound"
He adheres to a strict moral code often attributed to the Midwestern values with which he was raised. His commitment to operating within the law has been an example to many other heroes but has stirred resentment among others, who refer to him as the "big blue boy scout." Superman can be rather rigid in this trait, causing tensions in the superhero community, notably with Wonder Woman (one of his closest friends).
Having lost his home world of Krypton, Superman is very protective of Earth, and especially of Clark Kent's family and friends. This same loss, combined with the pressure of using his powers responsibly, has caused Superman to feel lonely on Earth, despite his many friends, his wife and his parents.
Superman is most vulnerable to green Kryptonite, mineral debris from Krypton transformed into radioactive material by the forces that destroyed the planet. Exposure to green Kryptonite radiation nullifies Superman's powers and immobilizes him with pain and nausea; prolonged exposure will eventually kill him. The only substance on Earth that can protect him from Kryptonite is lead, which blocks the radiation.
By Yak|2019-03-03T00:50:32+10:30March 26th, 2014|Player Profiles, Uni Whites News|

redpajama_set_name: RedPajamaCommonCrawl


text:
Balastro, balasto ou reator é um limitador de corrente utilizado nas lâmpadas fluorescentes e em outros dispositivos elétricos que necessitam limitar a intensidade da corrente elétrica que os atravessa durante o funcionamento. Os dois principais tipos de balastros utilizados são os eletromagnéticos e os eletrónicos. A palavra portuguesa provêm da palavra inglesa ballast.

Tipo e história
Antigamente, ele era constituído por um tipo especial de transformador, que convertia a tensão de entrada na tensão de saída necessária  para o acionamento da(s) lâmpada(s) e, normalmente, utilizava-se um starter, ou dispositivo de partida, para dar ignição ao sistema. Hoje os reatores são muito mais leves e de menor custo, possuem um circuito eletrônico que também transforma a tensão de entrada em uma tensão da qual necessitam as lâmpadas e são chamados de reatores eletrônicos. Um problema comum aos reatores é o fato de suas frequências de operação interferir em aparelhos eletrônicos, mais frequentemente em rádios, principalmente nas faixas de transmissão em modulação em amplitude (AM), particularmente as transmissões em onda média.

Reator eletromagnético
Reator é um aparelho indutor com núcleo de ferro, que utiliza a tensão da rede para potência necessária correta. Sua aplicação mais comum é com lâmpadas fluorescentes tubulares. Mas também são utilizados largamente em outros tipos de lâmpadas de descarga, como HQI, HPS e HPI. Produzem o efeito de reatância em um fluxo elétrico, transformando-o por um momento em ondas eletromagnéticas em suas bobinas internas e em seguida, retornando por efeito de indução à condição de condução de corrente. Consistem em várias voltas de fio de cobre esmaltado, em torno de um núcleo, que pode ser de material metálico, ferrite, ou ar (ausência de material sólido no núcleo). Como característica, um reator dificulta a passagem de corrente alternada e não atua significativamente sobre a passagem de corrente contínua, sendo assim utilizado como filtro onde não se deseja os efeitos da corrente alternada. No caso de lâmpadas fluorescentes, sua função é dupla: durante o processo de partida da lâmpada produz um impulso elétrico com um potencial mais alto, previsto pela Lei de Lenz, capaz de iniciar o processo de ionização da fase ionizável existente dentro da lâmpada. Com a lâmpada em operação, o balastro limita a corrente durante o seu funcionamento a uma região segura e sem a sua presença, a lâmpada acesa explodiria devido a uma ionização excessiva e descontrolada.

Reator eletrônico de partida rápida
Dispositivo com as mesmas funções de um reator eletromagnético, com menores dimensões e peso, utilizando intensivamente a ação de componentes eletrônicos para o seu funcionamento, inclusive com os dispositivos de partida incorporados. Pode ser miniaturizado para ser incluído na base das chamadas lâmpadas eletrônicas, substitutas diretas das mais antigas lâmpadas incandescentes.

1. Philips, Elementos de Eletrônica. Traduzido, completado e adaptado às condições brasileiras pelo Departamento Central de Propaganda da S. A. Philips do Brasil, com a colaboração do Dr. Kurt Selige. Editado por ETEGIL, Editora Técnico Industrial, São Paulo, SP, 1957.

Componentes elétricos
Componentes eletrônicos
Lâmpadas

redpajama_set_name: RedPajamaWikipedia


In 1152, Yury Dolgoruky founded a new princely town of Yuryev-Polsky (i.e. standing in the fields) on a still uninhabited place, having called it his name – Gergiev-Grad (George's-Town). The location of the city was advantageous: to the north it was surrounded by tributaries of the Nerl, near the town the Koloksha River carried its waters to the Klyazma. Here, first of all, the fortress was built and in it the white-stone princely church of St. George.
In 1212, Yuryev became the center of a small estate belonging to the son of Vsevolod III – Svyatoslav. In 1234, Svyatoslav, the grandson of Yury Dolgoruky, built a new St. George's Cathedral here on the site of a "dilapidated" church built by his grandfather. The cathedral was richly decorated with carvings and was famous for its beauty even centuries later. Unfortunately, the cathedral collapsed in the middle of the 15th century. It was "assembled again" by the famous Moscow architect V.D. Ermolin in 1471, probably with great changes. Later, it underwent repeated alterations, and only in Soviet times the extensions (bell tower, sacristy, warm side-chapel) disfiguring this beautiful building were demolished.
Initially it was a small one-headed four-pillar cathedral. The building was very slender and picturesque. The facade was divided by pilasters into three parts along the vertical and by arcature -columnar belt – horizontally, as was characteristic of the white-stone architecture of the late 12th-early 13th century. The heaviness of the today's temple is the result of its restoration by Ermolin. As the excavations have shown, in the small side-chapel near the northern wall there was the shrine of Svyatoslav Vsevolodovich (since 1991 his relics have been kept in the Holy-Intercession Church of Yuryev-Polsky).
Judging by the design of the northern wall, surviving from the 13th century, the whole surface of the facades of the temple and all the architectural details were entirely covered with carving, which distinguished the St. George's Cathedral, even in comparison with the exquisitely decorated Cathedral of St. Demetrius in Vladimir. The combination of a carpet pattern with high relief figures of saints, human faces, animals and monsters was very difficult technically. First, at the construction site, on individual stones relief images were hewn out. Then they were introduced into the wall masonry. And only on the already finished wall carving of the carpet pattern was made, which braided all high reliefs and architectural details. This work required perfect precision from the carvers and was possible only on the basis of a preliminary detailed project for the placement of carved stones. The calculation shows that two artels worked on the carved decoration of the temple: one (at least 12 masters) cut high relief figures, another (up to 20 people) performed floral ornament. At the same time, the individual manner of the Vladimir-Suzdal masters was seen behind the unity of decoration.
The beauty of the sculptural decoration of St. George's Cathedral captivated V.D. Ermolin, when he restored the temple after the destruction. Therefore, he kept all the whole stones with reliefs and tried to select them by the subjects, as far as possible. In general, the presence of complex plot compositions in the decoration of the facades (for example, Deesis, Our Lady of the Orante, "Crucifixion", "Ascension", "Trinity", "Transfiguration", "Seven Sleeping Youths of Ephesus", "Three Youths in Fiery Furnace", "Daniel in the Moat with Lions", "The Ascension of Alexander the Great" and others) also distinguished the St. George's Cathedral from its Vladimir predecessors. But they were connected nevertheless by the leitmotif of greatness and God's preservation of Vladimir power of the descendants of Monomakh.
Unfortunately, the famous carved white-stone St. George's Cathedral in Yuryev-Polsky today is in a state that requires a serious restoration to preserve the unique monument. However, for a number of reasons, earlier it was not included in the number of specially protected objects, unlike the Golden Gates, the Assumption cathedral and the cathedral of St. Demetrius , the Church of the Intercession on the Nerl and other ancient monuments of the Vladimir region. Only in 2015, the Ministry of Culture of the Russian Federation carried out a historical and cultural examination, which resulted in the drafting of a decree on the attribution of St. George's Cathedral to especially valuable objects of cultural heritage. With the positive conclusion of the Government of the Russian Federation, it will be possible to count on the presentation of St. George's Cathedral of Yuryev-Polsky for inclusion in the UNESCO World Heritage List.


text:
Hack alert!
Filed under: Our FIlms — Rajeev @ 10:37 pm
Cast: Manish Paul, Manish Chaudhari, Varun Badola, Elli Avram, Puja Gupta
Director: Saurabh Varma
I wouldn't be surprised if Mickey Virus was greenlit only because some smart-alec marketing wiz pitched it as the next Vicky Donor. Problem is, this film is never more than just a good pitch. A concept in search of a plot.
Happy-go-lucky drifter Mickey Arora (Manish Paul) spends his days hanging out with friends, hacking into software and websites just for fun, or to make a quick buck. When a string of mysterious murders in Delhi points to an organized cyber-crime ring, a local cop (Manish Chaudhari) recruits a reluctant Mickey to help the police department in solving the case.
First-time writer-director Saurabh Varma shoots the film's lighter scenes without too many hiccups, but fails to raise the stakes when Mickey himself becomes embroiled in the mess; you never once feel like he's truly in danger. None of the supporting characters are fleshed out substantially, least of all Mickey's friends who go by the nicknames Chutney, Floppy and Pancho.
There's a lot of staring into computers and muttering about servers and firewalls, but the film makes hacking look so easy, you have to wonder why more people don't take it up as a full-time profession. The suspense in the end feels contrived, and the twists along the way are not hard to guess.
Leading man Manish Paul has an easy manner about him, but he's lumped with a script that doesn't give him much to do aside from contorting his face repeatedly. His romantic subplot (with model Elli Avram) lacks spark, and the songs are nothing to write home about either. The only other actor who makes any impression is Varun Badola, as a sidekick cop, who delivers cheeky one-liners with a straight face.
Mickey Virus isn't unwatchable, but at 2 hours and 15 minutes, it certainly overstays its welcome, offering little by way of laughs or thrills. I'm going with two out of five. Walking out of the cinema, you've forgotten it already.
Aise role karke Manish Paul na ghar ka rahega na ghaat ka, na filmon ka rahega na TV ka.
Comment by ramesh — October 26, 2013 @ 11:19 am
Yeh film bhi china ka maal hai!
Comment by Akshay — November 1, 2013 @ 1:58 pm
"Walking out of the cinema, you've forgotten it already."
Couldn't have said it better myself. And what's with the liberal usage of North Indian ruffian lingo in so many current movies? They sound grating to my ears and totally disrespectful. Not everyone in Delhi talks like a Punjabi, most people there have a similar accent as the rest of India.
I wish I could slap that bumbling brattish smart alec character called Mickey.
Comment by Sahil — November 7, 2013 @ 2:36 pm


Will Glovinsky is a freelance writer and critic. He lives in New York City.
Exactly my point made from a different angle. Mass hysteria is a dangerous thing. I wrote about it in my blog post on the weekend (babyboomerwrites.wordpress.com); it may lead to lynchings and stonings, depending on the culture.
"I was wrong" should never be grudging.
Listen to Don. Please. He knows of what he speaks.
If crowd are bad, it was CNN that told the world the bomber had been caught when he had not been.
FBI withheld pics of the people they were after for fear that announcing would send them fleeing but finally FBI realized they were not getting where they wanted t o be fast enough and so released photos and the crowd you so dislike identified the two bombers.
Let's be clear about what actually happened: for every "the crowd did X" story, there's going to be a "the elite journalists did X" story. In a time of uncertainty, "the professionals and the amateurs" might be a more useful frame than "crowd vs. not-crowd" because, as you note, even the professionals in these cases were caught up in the sort of kneejerk, unreflective, and dangerous rumor-mongering which many people associate with crowds.
So, point one: crowds vs. not-crowds is only moderately helpful.
And while Will Glovinsky is right here that much of our recent discussion on crowds has been positive, I wish the history of crowd thought had been at least gestured to slightly more fully than Poe-Valery-Baudelaire. After all, Canetti is largely responding to a field, largely European, of crowd critics–Taine's version of the French Revolution, Le Bon's largely negative view of the crowd, Sighele's interest in crowd criminality, and Tarde's view of crowds and publics.
Point two: more historical contextualization please!
And this article might also be helped by Tarde–who is my favorite thinker on the crowd–because Tarde starts differentiating different sorts of crowds. After all, a lot of people in the street is a crowd in one way, but a lot of people reading the same newspaper is a crowd in another way, and a crowd of people on Twitter is something else entirely. For an excellent novel version of this, you could turn to Vernor Vinge's near-future science fiction Rainbows End, which has lots to do with multiple virtual presences and simultaneous membership in various crowds.
It may be true that coming-of-age tropes are prevalent and typical — but I wonder, then, why are they (especially the well written ones) consistently so alluring?


text:
The Piano
May 19, 2014 Directors, New ReleasesCannes, Jane Campion, The PianoPhilip Concannon
Philip Concannon revisits the 1993 Palme D'Or Winner, now out on Blu-ray, in the year its director heads the Cannes jury.
The first image we see in The Piano is a close-up of Holly Hunter's fingers as she holds her eyes in front of her face, allowing sunlight to filter through them. We hear her Scottish-accented voice on the soundtrack, but she tells us that "The voice you hear is not my speaking voice, but my mind's voice," and throughout the film these fingers will be her prime means of communication. Her character, Ada McGrath, has not spoken since she was six years old, having apparently taken it into her head to simply stop doing so. She speaks through sign language, translated by her daughter Flora (Anna Paquin), or by writing short notes on the pad she keeps hanging around her neck, but when Ada wishes to truly express what she is feeling, she does so through music. "The strange thing is, I don't think myself silent because of my piano," her voiceover tells us, "I shall miss it on the journey."
The journey that Ada and Flora are embarking upon will take them to New Zealand, where she is to meet her new husband Mr Stewart (Sam Neill) for the very first time. They disembark in rough seas only to find that Stewart has been delayed, but Ada opts to stay on this cold and windswept beach rather than travel inland, camping overnight with Flora, her luggage and – of course – her beloved piano. Two men are subsequently introduced to Ada, and the manner in which they both react to her prized possession tells us a great deal about them. Her rather stiff and conservative husband Stewart can't understand Ada's attachment to this cumbersome instrument, and he insists on leaving it on the beach while they carry the rest of her belongings, causing the first schism in their nascent relationship. The other man is Baines (Harvey Keitel), an acquaintance of Stewart's now living with the Maori, who is instantly intrigued by Ada and who sees the piano as the key to unlocking this enigmatic woman.
The Piano was Jane Campion's third feature film, but it marked an audacious leap forward from the already impressive Sweetie and An Angel at My Table. Drawing inspiration from 19th century romantic literature and New Zealand's history and culture, Campion fashioned one of those rare films in which every single element just falls into place. The casting brought together a group of actors at exactly the right moment in their respective careers; Michael Nyman (inexplicably not one of the film's Oscar nominees) came up with an inspired score that became an integral part of the film's structure; and Campion found locations that gave her film the scale of an epic while simultaneously serving the narrative symbolically.
For example, the marital home that Stewart takes Ada to is situated in the middle of a dark forest, plagued by incessant rain, and with every footstep the characters sink into the thick mud. It's all shot in dismal grey tones by Stuart Dryburgh and the effect is suffocating, with Ada's thoughts constantly drifting back to her piano, which still sits on the beach. When she finally persuades Baines to escort her back to the beach so she can play, the film immediately brightens. Against an expansive backdrop of calm seas and bathed in a golden light, Ada plays freely and beautifully with a blissful smile on her face; in fact, it's the first time in the movie that we see her typically fierce and cautious mask melt away.
The effect that the piano has on Ada is not lost on Baines. He takes possession of it and begins negotiating with Ada – a sexual favour for each key until she has eventually earned it back. Their arrangement begins on a small scale, with Ada removing items of clothing while she plays and exposing her arms or shoulders, but one such seemingly insignificant accession to Baines requests sends a shockwave through the film. While she plays, Baines asks Ada to lift her skirt so he can admire her legs, and when he spots a small hole in her stocking he delicately runs a finger over this tiny glimpse of white. At the point of contact, Ada immediately lifts her head and her expression suggests surprise, curiosity, puzzlement and pleasure all at once. This erotic encounter – perhaps the first she has ever experienced – is the turning point in Ada's story, the moment in which she begins to explore and take command of her own body and sexual desire, freeing herself from the restrictive role of docile wife that Stewart expects her to be and becoming a person of her own making.
Although The Piano builds inexorably to a dramatic act of violence, there are no villains in Campion's story, just a group of complicated characters facing emotions and situations that they have no experience of and are ill-prepared for. The director is constantly attuned to the shifting power dynamic and the fluctuating emotional tenor of the film, so much of which is captured in small glances and gestures between the characters, and each of the characters can be prickly, stubborn and unlikeable at various points in the story while also being capable of eliciting our sympathy.
At the time of writing, Jane Campion is heading the jury at the Cannes Film Festival, and her presence is a constant reminder that the Palme d'Or she shared for The Piano in 1993 is the only one that has ever been awarded to a female director. The film went onto gross over $140 million worldwide and took home three of its eight Oscar nominations the following year, but looking back from where we are now it's hard to imagine how this particular film managed such a feat. Can you imagine a sexually frank drama about female desire making such an impact with mainstream filmgoers today? Instead of opening the floodgates for female directors or encouraging viewers to embrace adult, artistically daring films about love and sex, Campion's film looks increasingly with every passing year like a strange but precious anomaly. The Piano has always been a film that seemed to exist out of time, and in many ways it feels like we are still trying to catch up to it.
The Piano is out on Blu-ray today.
← The Disaster Artist Mostly Pop – May 2014 →
1 thought on "The Piano"
MarvMarsh says:
My only issue with all this that The Piano is terrible. I think the supposed subtleties are all great galumphing oafish failures that loudly declare how subtle they are. The only good thing is Harvey Keitel's ever changing face tattoos.


Day two! For Karin's April SECOND prompt in the Imaginary Garden.
Wonderful, Marian. I want to make it to Friday too, and believe life can still be brand new.
Just gorgeous. And so full of love.
~sigh~ I have felt just like that, before.
Beautiful. And you are a lucky girl!
old you in the new-now"
This is just perfect, Marian. Wish I'd written this.
I enjoyed reading your poem, Second Sight!
sit in the back seat"
I know this feeling so well. A second reading brings to light even more than the first.
I'm just washing myself in the sheer power of this.
Everybody's workin for the weekend... A yearning for time, place, person...I feel it.
Do-overs, be silly for a day but at the end, don't worry, I'll be rhe same I'd you still are. A fun read, Marian, here and on FB.
Hey Marian— I came by yesterday but realize none of my comments on blogspot took. So glad I came back. It's just a wonderful poem, thanks. K.
Wow....old you in the new-now....killer line to close a stunning poem.


1.What is the procedure to purchase immovable property in Malta?
When the prospective buyer identifies the immovable property to be purchased, he/she enters into a written agreement (convenium) a copy of which must be attached to the AIP application form.
Download application form for individuals.
Download application form for companies / bodies of persons.
2.How long does it take for an application to be processed?
In accordance with a Quality Service Charter, the AIP Section is committed to issue the requested permit within 35 days subject to application submitted being correct.
3.What do I need to submit with an application to acquire immovable property in Malta?
4.What are the fees for an AIP Permit?
The fee payable on the issue of a permit is € 233.
5.What is the minimum immovable property price for a non-resident to purchase immovable property?
The minimum price is: € 121,792 for the purchase of a flat or maisonette; € 202,929 for the purchase of any other immovable property.
6. Are there any conditions imposed on the permit?
that the immovable property may not be sold in part, or otherwise into more than one dwelling house.
7. Can I rent my immovable property to third parties?
Property acquired by AIP permit cannot be rented out.
8. Can I acquire more than one immovable property in Malta?
As a non-resident, you are allowed to purchase only one immovable property in Malta unless it is situated in Designated Special Areas.
9. Who are the persons who need to apply?
See Conditions for Buying Immovable Property.


Chuck Jonkel studied polar bears in the Arctic.
SEELEY LAKE – Dr. Frank Tyro, the director of the film "Walking Bear Comes Home" about the life of Chuck Jonkel, is returning to Seeley Lake to present more detail about the Great Bear Foundation's Arctic Field Course in Churchill, Manitoba, the Polar Bear Capitol of the world. Presented by Clearwater Resource Council, Tyro's presentation, titled Montana to Manitoba: The Polar Bear Connection, is on Saturday, Nov. 17, 1 p.m. at the Seeley Lake Historical Museum and Visitors' Center.


If you have just one pet and tend to spend long hours working as you leave your pooch alone at home, he could be feeling lonely. For a lonely dog, he will greatly benefit by having extra company in general. You might even begin to see big improvements in his mood once he has a companion. Not to mention the fact that happy dogs tend to be happier. In the precious moments you do have for each other, you will love enjoying time with your pet when he is in a better mood.
Compared to the average dog, a pooch that needs company will seem sadder. He will have a sad demeanour to his walk and have markedly sad eyes. Compared to other dogs, he will not want to participate in nor enjoy outdoor, fun activities.
In some of his actions, a dog who happens to be lonely will tend to regress and disobedient. He may begin sneaking out of your yard and chewing on your belongings. He might even do his business inside the house, even after years of having been toiled trained. He may even disobey you purposely to get attention. No matter what, these acts can be signs that your dog craves a companion.
Dogs that are lonely will be less active and slower than happier dogs. He will sleep more, lie around more and go for walks or play with less frequency. The pastimes your dog used to love will be something he is not as interested in. Lonely dogs do not eat as much as happy dogs either. You will notice a change in his eating habits and he will tend to eat lighter meals. He won't want to eat too much and when this happens with medical conditions ruled out, your dog may be suffering from loneliness.
There are a few options to consider once you suspect your pooch is lonely. One option is to get another pet such as a cat, bird or another dog. While you are gone, other pets can keep your furry pal company. Hire a pet sitter or a dog walker to visit Fido routinely if another pet is out of the question. This will help get your lonely dog socialized. Check to see if your community has a doggie day care where he can socialize, play and run around. This can do wonders for alleviating your dog's loneliness.


With most of us using social media today its important that we understand some of the security and safety issues surrounding its use. Whether you are using a computer or a smart phone, there are certain things to remember. First of all, unless you have looked at the settings, some of these social media sites like Facebook, default to allow anyone to see your status. As well if you have turned on the location feature, every time you access the site it posts where you are. If you have teenagers you probably don't want strangers knowing what mall they are at. Also remember, if your friends can see where you are so can the criminals who are looking for their next home to break into. It really isn't a good idea to post your upcoming trips to the cottage or your next vacation on facebook or twitter before you actually leave. That is just telling everyone that you wont be home and another invitation to be a victim of breakin. Tell everyone how great your trip was after you get back.


Mining production rose 6.2% in December 2009 compared with the December 2008, the state run National Statistics Institute, or INE reported on the 30th.
That result means that Chile's increasing mining output for the January – November period was unaffected relative to the first 11 months of 2008, the report said.
November's piece was buoyed by increases in the output of copper, molybdenum, gold, iron ore, although increases were offset somewhat by rejecting manufacture of silver, zinc, lead and manganese.
In November, the index progressed 7.8% compared to the same month of 2008 due to 7.3% increase in the copper index and 0.4% percent rise in the other index.
The non-metallic index plunged 15% because of a steep drop in the output of the nitrate and lithium carbonate between January and November, this fell 6.2% year on year.


High-performance employees are in high-demand across all industries so although it's sometimes unexpected when a top performer submits their resignation, it's easy to understand how they received a good offer. Given how expensive it is to replace somebody new — recruiting, onboarding, etc. — every employer would rather keep their best employees rather than lose them to the competition.
Is the person just bluffing about their offer?
Why exactly have they decided to leave? Is this a problem beyond salary that a counter offer won't really fix?
What additional promises, such as promotions or future projects are you going to have to make?
Will that person now "own" you in the future?
If you counter-offer this person, will other employees consider you weak and start playing the same game?
Are you going to be obligated to give a raise to others due to payroll policies?
Are there non-financial benefits you can offer?
Is there anybody internally who could get up to speed quickly?
Will they agree to a "handover" period and stick around until the replacement is up-to-speed?
Answers to all of these questions will vary considerably and will have different meanings to different companies, depending on priorities and strategy. Remember to carefully consider all of the consequences of a counter-offer and discuss it with other managers. After all, you may be setting a precedent that is hard to follow.


Venus (Now M24Seven) is London's leading independent fibre broadband network. Established in 1996, Venus has pioneered the delivery of pure fibre internet to organisations based in central London. What makes Venus different from most other fibre network providers is that they can connect fibre internet directly to an organisation's premises almost anywhere in central London, even in cases where national providers can't.
We started working with Venus at the beginning of 2017 with the aim to improve their online presence and increase their number of sales generated through their website over the course of 12 months.
Before approaching us, Venus's marketing program relied heavily on outbound tactics in combination with their own direct sales team. Their outbound efforts, which included events, print marketing, PR and email marketing, helped Venus to build a large email contacts list, which generates a significant proportion of leads. However, as Venus continues to grow, they require a higher number of regular new leads to fuel sales activity.
To help Venus broaden their lead generation channels, we strategised and executed their new Inbound marketing strategy from scratch.
In the first stages, we performed a competitor analysis which helped Venus to establish their target market sectors. This stage helped us to form the core of Venus's new messaging, and to ensure that their own business offer differentiated them from their primary competition.
In the second stage of Venus's Inbound strategy, we created their target personas. In Inbound marketing methodology, personas are fictional characters created to represent an organisation's target markets. We held several workshops with Venus's marketing and sales teams to discuss their most common types of clients and the issues they frequently needed to be solved by Venus. From the extensive research gathered in these workshops, we created several target personas for Venus, each with their own character outline, and "pain points" that frequently need addressing, and established where they go to find trusted information on the web. Creating these personas meant that we could tailor marketing messaging, content and conversion approach that perfectly matched the needs of Venus's most common types of customer.
With Venus's target personas in place, we could begin to create target messaging that would attract the attention of prospects and initiate opening conversations. Each piece of targeted messaging was created around the pain points each persona faced during the three different stages of their individual buyer's journey: the "awareness stage", "consideration stage" and "decision stage". Now that we had created Venus's target personas and the messaging to answer their needs, we could move on to developing Venus's own "remarkables".
Developing a business's remarkables is a very important stage in an Inbound marketing strategy. A brand's remarkables not only need to differentiate them from their competitors' offerings, but they also need to generate a dialogue around the organisation's unique service by answering their persona's pain points. When done successfully, remarkables generate higher levels of brand awareness and more qualified business leads. Through another set of workshops and extensive research of the Venus brand, we elicited the remarkable factors of Venus's offerings. These remarkables were then used to form the basis of compelling headlines, which are now strategically placed on the Venus homepage to entice users to commit to a CTA and to guide them through their buyer's journey.
In the second stage of Venus's Inbound strategy, we created their target personas. In Inbound marketing methodology, personas are fictional characters created to represent an organisation's target markets. We held several workshops with Venus's marketing and sales teams to discuss their most common types of clients and the issues they frequently needed to be solved by Venus. From the extensive research gathered in these workshops, we created several target personas for Venus, each with their own character outline, and "pain points" that frequently need addressing, and established where they go to find trusted information on the web. Creating these personas meant that we could tailor marketing messaging, content and conversion approaches that perfectly matched the needs of Venus's most common types of customer.
Developing a business's remarkables is a very important stage in an Inbound marketing strategy. A brand's remarkables not only need to differentiate them from their competitors' offerings, but they also need to generate a dialogue around the organisation's unique service by answering their persona's pain points. When done successfully, remarkables generate higher levels of brand awareness and more qualified business leads. Through another set of workshops and extensive research of the Venus brand we elicited the remarkable factors of Venus's offerings. These remarkables were then used to form the basis of compelling headlines, which are now strategically placed on the Venus homepage to entice users to commit to a CTA and to guide them through their buyer's journey.
To increase Venus's lead generation, a new SEO and content marketing strategy needed to be formulated. Our Google Analytics data of Venus's web traffic from the previous year revealed that their web traffic remained at a consistent level throughout the year, with some spikes in traffic when Venus launched an email campaign. While this proved that Venus's email campaigns had some effect in generating leads, the level of leads generated in the periods where an email shot had not been released were not enough to meet Venus's sales goals. In addition, keyword analysis of Venus's website revealed that they were targeting highly competitive keywords and long tail keywords with low search rates. These factors together meant that Venus was not fulfilling its full potential in search rankings. To help Venus to perform better in search rankings we devised a new keyword strategy which included, in addition to more common industry keywords, intuitive long tail keywords which were based around the exact words and phrases that Venus's personas use when using search engines to find the solution to their pains.
For Venus to perform well with their new keywords, they needed a content marketing strategy. Part of the strategy meant that Venus needed a larger output of quality fully SEO optimised content on their site. Previously, Venus had a blog which was regularly updated with good content. The problem was that the content focused on Venus' own sales and marketing activities and general industry news, and was not particularly fine-tuned around high performing keywords or persona pain points. To help boost Venus's SEO performance we created an ongoing content strategy of blog articles, landing pages, offers and social media activity all based around keywords and persona pain points, to drive more organic traffic to the Venus website.
We conducted a review of the previous Venus website with the goal of improving the site's design and functionality in relation to the principles of inbound methodology. SEO research and best practice demonstrate that most web traffic lands on a website's homepage, and therefore that this is the first and most crucial contact point with a target audience.
When designing the new Venus homepage, it was important to incorporate the Inbound buyer's journey methodology to ensure that both design and messaging addressed the three stages of the persona's buyer's journey to educate and nurture website visitors onto the next stage. The key elements in addressing these points were the addition of CTAs, a postcode checker and content downloads focused on each persona in each stage of the marketing funnel.
Venus's previous website had very few CTAs to convert their website visitors into leads, and the CTAs that were on the site was "bottom of the funnel" offers. This means that there was no top or middle of the funnel offers to engage and nurture prospects at early stages of their buyer's journey. To enable Venus to engage with prospects at earlier stages of their buyer's journey, and then nurture them into firm leads we created several CTAs that addressed each stage of the buyer's journey, the most prominent of these being the Postcode checker tool.
The Postcode checker is the key offer on the Venus homepage. Our research when creating Venus's personas brought us to the conclusion that the common pain point faced by all of the personas was that they needed to know if they could get fibre internet installed in their new or existing premises. The Postcode checker tool addresses this issue as it allows a prospect to simply submit their postcode and instantly find out if they can get connected to Venus's fibre network. If a prospect can get connected they can then be guided to make a purchase quickly and easily.
In addition to the postcode checker CTA we also created CTAs with free content offers that were designed to address the technical needs of prospects in their consideration stage, including a highly technical eBook and a fibre product comparison sheet. The purpose of these offers is to provide prospects in their consideration stage with the technical information that both addresses their own consideration-stage questions as well as fortifying Venus's reputation as a reputable brand.
Venus's remarkables are also given prominent visual representation on the homepage. One of the most important of these being the map of Venus's fibre network. The fact that Venus owns and operates its own independent fibre network is one of the core remarkables that underpins the Venus brand. To promote this visually we included a diagram of a map which displays Venus's points of presence throughout London. This conveys Venus's value that they can connect businesses based just about anywhere in London, even when national carriers can't.
A final addition to the website design is the mega menu that is incorporated into the website's header. The benefits of the mega menu are multi-faceted, as not only does it streamline website navigation, allow more links to be displayed at any one time, and improve the site to meet modern design standards, but it also contains a CTA function that enables CTAs to be included within the menu itself.
Within the first month of their new Inbound strategy, Venus received an influx of new leads because of the new CTAs on the homepage. Most of these came through the postcode checker tool, but the content offerings also generated several qualified leads.
In addition, Venus's new SEO strategy has resulted in them being on page one for several highly competitive industry keyword phrases such as "fibre internet", "business fibre" and "fibre London", and their rankings for regional based search terms have been improved massively thanks to SEO optimised content.
To help Venus with their own content marketing efforts, we built their own custom inbound marketing module with fully customisable landing pages including a form field editor and user tracking data for submitted forms. Venus's blog function has also been given several new functionalities to help them optimise their content for SEO, including categories, tags and social media sharing options. With these new features in their new responsive CMS, Venus now has complete control over the content they post on their website.
We continue to work with Venus on their Inbound strategy. In addition to their own content, we provide them with regular blog articles, social media content and support, SEO optimisation of content, email marketing content, and ongoing support to ensure that they achieve their lead generation goals.
Are you ready to become the next Artonezero Inbound success story? Find out more about our Inbound marketing services or request a free Inbound project consultation.


text:
Q: Javascript Brackets IDE shows errors in JQuery 3.5.1 file I am very new to JS. Doing a course on Udemy. I am using the Brackets IDE. I downloaded JQuery-3.5.1 into my JS folder and I added it as a SRC using the script tag.
I am doing a simple "Hello World" type popup but it is not working.
When I look at the JQuery file in Brackets it shows that there are 63 errors. I simply did a "Save As" of the file when I downloaded it, as it was already a JS file type. Why would all these errors show up?
My main concern is I don't know why my popup alert is not showing. Is it the errors in the JQuery library or is it my code?
My code is here:
<script src="js/jquery-3.5.1.js"></script>
<script>
    $.(document).ready( function() {
        //code goes here
        alert("Welcome to MyPage with JQuery");
    });
</script>

Below is the screen capture of the errors in the Bracket IDE:

Some advice here would be very much appreciated.

Update:
Just a note on how this was resolved. I eventually looked at the solution code, could not see the issue until I compared it directly with mine as below:
$(document).ready( function() { alert("Welcome To Loso With JQuery!"); });
$.(document).ready( function() { alert("Welcome to MyPage with JQuery"); });
As you can see, mine (which is the second line of code) has an unnecessary full stop as the second character. I did the CSS module yesterday and I think that was a holdover from that. Anyway, that is my story and I am sticking to it. To those who helped out in the comments section, thank you.

redpajama_set_name: RedPajamaStackExchange


text:
L'incantatrice è un'opera in quattro atti di Pëtr Il'ič Čajkovskij, su libretto di Ippolit Vasil'evič Špažinskij, che lo derivò dalla sua tragedia omonima.

Storia della composizione
L'opera fu composta tra il settembre del 1885 ed il maggio del 1887 a Majdanovo, e fu messa in scena per la prima volta il 20 ottobre (1° novembre) 1887 al teatro Mariinskij di San Pietroburgo, sotto la direzione dell'autore.L'organico dell'orchestra è il seguente:
Archi: violini I, violini II, viole, violoncelli e contrabbassi
Legni: ottavino, 3 flauti, 2 oboi, corno inglese, 2 clarinetti, 2 fagotti
Ottoni: 4 corni (in fa), 2 cornette (in si bemolle), 2 trombe (si bemolle), 3 tromboni, tuba
Percussioni: timpani, triangolo, tamburello, tamburo, piatti, grancassa, tam-tam
Altro: arpa
La prima esecuzione assoluta in Italia ha avuto luogo al teatro di San Carlo di Napoli il 17 febbraio 2017.

Trama
L'azione ha luogo a Nižnij Novgorod e dintorni nell'ultimo quarto del XV secolo.

Atto I
Sulla riva dell'Oka opposta a Nižnij Novgorod, presso la locanda di Nastas'ja. La bella ostessa Nastas'ja, detta Kuma, canta per i suoi ospiti, quando si avvicinano alla riva delle imbarcazioni: si tratta del giovane principe Jurij, che torna dalla caccia. Nastas'ja è felice perché è innamorata di Jurij, ma egli invece la rifugge e decide di non fermarsi e proseguire. Invece arriva un ospite ben più sgradito: il padre di Jurij, il terribile principe vicario Kurljatev, con il diacono Mamyrov ed il suo seguito. Nastas'ja teme disgrazie, ma il principe, affascinato dalla bellezza e dal parlare arguto della ragazza, cambia la sua ira in benevolenza. Accetta dalla mano della locandiera una tazza di vino, beve e, ubriacatosi, ordina a Mamyrov di danzare con i buffoni per rallegrare i presenti.

Atto II
Il giardino della casa del principe. La principessa, abbandonata dal marito, è addolorata. Mamyrov, in collera per l'offesa ricevuta, fa credere alla principessa che il marito è rimasto vittima dei sortilegi della maliarda Kuma. La donna, rimasta sola, medita vendetta. Arriva il vecchio principe, perso nei suoi pensieri per Nastas'ja. L'irosa conversazione che segue tra i due coniugi non fa che aggravare la situazione. Entrambi se ne vanno. Nel giardino irrompe una folla di popolani, che insegue i servitori del principe, colpevoli di aver derubato dei mercanti in pieno giorno. Compare l'odiato Mamyrov, che prende i servitori ladri sotto la sua protezione e dà ordine di legare i capi della folla. Il rumore fa uscire il principe Jurij, che rimprovera Mamyrov per la sua ingiustizia e libera i capi del popolo. Nel frattempo il vecchio principe è andato di nuovo da Kuma e la principessa si sfoga con Jurij, che promette alla madre di uccidere la strega che ha irretito il padre.

Atto III
Nell'isba di Nastas'ja, la sera. Il vecchio principe cerca di convincere Nastas'ja a diventare la sua amante, alternando lusinghe e minacce, ma lei si rifiuta ostinatamente. Giunge perfino a porgere la gola al pugnale del principe, preferendo la morte alle sue profferte. Il vecchio, fuori di sé dalla rabbia, se ne va. Entra un'amica di Kuma con una brutta notizia: il principe Jurij ha creduto alle calunnie su di lei e la cerca per ucciderla. La povera ragazza rimasta sola si dispera, poi va a dormire senza chiudere la porta. Di soppiatto entra Jurij per ucciderla, ma al vederla desiste dal suo proposito: lei apre gli occhi e si dichiara pura. Jurij le crede e se ne innamora.

Atto IV
Un fitto bosco sulle rive dell'Oka. La principessa travestita si reca dal malvagio stregone Kud'ma per farsi dare del veleno, con cui vendicarsi di Kuma. Si è appena nascosta quando arrivano Jurij e Nastas'ja. Il giovane, cacciato da casa, cerca con la sua amata la felicità in qualche posto lontano. Ma, approfittando di una breve assenza di Jurij, la principessa riesce a far bere dell'acqua avvelenata a Nastas'ja, che muore tra le braccia del suo amato. Il suo corpo, per ordine della principessa, viene gettato nel fiume. Si fa scuro e sta per scoppiare una tempesta. Giunge il vecchio principe Kurljatev, sulle tracce del figlio e dell'amata. Sospettando che il giovane abbia nascosto Kuma da qualche parte, egli in uno scatto uccide suo figlio. Tutti fuggono inorriditi. Il principe quasi pazzo rimane solo nella sua disperazione, mentre la tempesta inizia a infuriare.

Struttura dell'opera
Introduzione

Atto I
1 Scena popolare
2 Scena popolare
3 Coro degli ospiti e scena
4 Scena e arioso di Kuma
5 Coro del popolo e scena
6 Scena
7 Decimino (a cappella) con coro, scena e coro, danza dei buffoni e scena

Atto II
Intermezzo
8 Scena e arioso della principessa
9 Scena e duetto
10 Scena
11 Scena e arioso del principe
12 Scena del principe e della principessa
13 Scena popolare
14 Finale

Atto III
15 Scena e duetto
16 Scena
17 scena e duetto

Atto IV
Intermezzo
18 Scena con coro
19 Scena e duetto
20 Scena e arioso di Kuma
21 Scena e duetto
22 Scena e quartetto
23 Finale

Note

Collegamenti esterni

Opere liriche di Pëtr Il'ič Čajkovskij
Opere liriche in lingua russa
Opere liriche basate su opere teatrali


text:
@interface OSCloudKitRequestOperation ()

@property (nonatomic,strong) CKDatabase* database;
@property (nonatomic,strong) CKQuery* query;
@property (nonatomic,strong) OSCKCompletionBlock completionOperation;

@end

@implementation OSCloudKitRequestOperation

+(OSCloudKitRequestOperation*)operationWithDatabase:(CKDatabase*)database query:(CKQuery*)query completionHandler:(OSCKCompletionBlock)completionOperation  {
    OSCloudKitRequestOperation* operation = [[OSCloudKitRequestOperation alloc] init];
    operation.database = database;
    operation.query = query;
    operation.completionOperation = completionOperation;
    return operation;
}

-(void)run {
    [self.database performQuery:self.query inZoneWithID:nil completionHandler:^(NSArray* results, NSError* error) {
        self.completionOperation(results,error);
        [self completeOperation];
    }];
}

- (void)main {
    @try {
        [self run];
    }
    @catch(...) {
        // Do not rethrow exceptions.
    }
}

@end


text:
(-) Task Force Report
Humanitarian Intervention
More Than Humanitarianism
This Council-sponsored Independent Task Force Report argues that Africa is becoming steadily more central to the United States and to the rest of the world in ways that transcend humanitarian interes…
Task Force Report by Anthony Lake, Christine Todd Whitman, Princeton N. Lyman, and J. Stephen Morrison
Promoting U.S. Economic Relations with Africa
In 1997, Washington paid unprecedented attention to Africa and its continental rebirth. Both then-First Lady Hillary Clinton and then-Secretary of State Madeleine Albright toured the continent. Presi…
Task Force Report by Peggy Dulany, Frank Savage, and Salih Booker
Making Intelligence Smarter
The need for intelligence, and for a capability within the U.S. government to collect, produce, and disseminate it, remains critical. The end of the Cold War will not usher in an age of peace and sec…
Task Force Report by Richard N. Haass


To fill and raise the level of (the bed of a stream) by deposition of sediment.
Fine-grained intermediate volcanic igneous rock. Mineralogically similar to the diorites.
A fretted, steep-sided rock ridge separating u-shaped or cirque valleys.
Generic term used to describe ridge-like accumulations of sediment within river channels. These develop on the bed of the river but may become exposed at low flow. Bar size is determined by sediment supply rate, with their height reflecting the depth of generating flows.
Refers to a transitional period of time between the Younger Dryas stadial, characterised by glacial re-advances, and the Holocene interstadial (last 10,000 years). The Boreal climate was characterised by a snowy winter and warm summer, with a large annual range of temperature. It can also refer to the northern coniferous zone in temperate areas of the northern hemisphere.
A braided river is a river whose flow passes through a number of interlaced branches that divide and rejoin.
Refers to substances containing or composed of calcium carbonate.
ii) Of the Palaeozoic period, above Devonian and below Permian.
Vegetation growing in cracks and crevices.
A general term applied to any unconsolidated sediment deposited by rain-wash, sheet-wash, slope failure, or slow continuous down slope creep, usually collecting at the base of slopes or hillsides.
River flow competence is the maximum particle size which can be transported by the flow.
A hollow, open downstream but bounded upstream by an arcuate, cliffed headwall, with a gently sloping floor or rock basin. They are common in formerly glaciated uplands.
Relating to, or like, a delta.
Assessment of a site usually preceding ground investigations typically incorporating a review of available site information, consultation with relevant bodies and a site visit.
A geological period of the Palaeozoic era named after the county of Devon in south west England where Devonian rock outcrops are common. It extends from c. 416 to 350 mya.
Specifically glacial deposits but often used to include other natural superficial deposits such as alluvium and beach deposits. Superficial deposits: as Drift deposits, but includes anthropogenic deposits such as made ground.
A duty placed on those with responsibility for controlled waste to ensure that it is managed properly and recovered or disposed of safely.
Sheet–like bodies of igneous rock that cut across the bedding or layering of the host rock.
The mixing of materials or other air/liquids into a pre-existing organised air or liquid current so that the material or air/liquid becomes part of that current.
Of the sub-family Erica which grow in evergreen habit on the acidic, nutrient-poor substrates that support most heathlands.
A fracture or fracture zone along which there has been a displacement of rock.
A type of lichen characterised by a very fine, hair-like structure.
Term used to describe the hydrograph of a stream which shows a rapid increase in discharge over a short period with a high peak in relation to normal flow.
The structure arising when directional movement of a liquid, containing crystals, causes these crystals to take up a parallel orientation.
Pertaining to flowing water. Produced by the action of a stream or river.
The science of surface landforms and the processes that have created them.
Exploratory investigation to determine the structure and characteristics of the ground influenced by a development. The collected information is used to establish or predict ground and groundwater behaviour during, and subsequent to, construction.
A tributary valley whose floor is discordant with the floor of the main valley.
An underground burrow, sea cave or rock hole used by an otter.
Rock types originating from magma (underground lava).
The macroscopic physical character of a rock or rock formation.
Animals without backbones that are big enough to see with the naked eye.
The molten rock material under the earth's crust, from which igneous rock is formed by cooling.
The layer of the earth between the crust and the core.
The condition of a soil layer in which the layer appears as a coherent or solid mass.
Reservoirs and lakes which contain moderate quantities of nutrients and are moderately productive in terms of aquatic animal and plant life.
Rock with a mineralogical and chemical granite composition.
Pertaining to a mountainous region.
Reservoirs and lakes which are nutrient poor and contain little aquatic plant or animal life.
Study of environmental records such as pollen, foraminifera, micro fossils and sedimentology to determine environmental conditions and changes over time.
Lying in a plane. Completely flat.
The outline or shape of a body of water as determined by the stillwater line.
Each PPG, produced by the Scottish Environment Protection Agency, is targeted at a particular industrial sector or activity and aims to provide advice on statutory responsibilities and good environmental practice.
Medium-grained rock. containing much larger individual crystals (phenocrysts) of any mineral.
Sites designated by regional geological groups based on locally developed criteria, currently the most important places for geology and geomorphology outside statutorily protected land such as Sites of Special Scientific Interest (SSSI).
Fine-grained to glassy acid volcanic rocks. Mineralogically similar to granites and microgranites.
A shallow part of the stream where water flows swiftly over completely or partially submerged obstructions to produce surface agitation.
Riparian zone is the interface between land and a flowing surface waterbody, characterised by hydrophilic plant communities.
An asymmetric rock mound produced by glacial erosion, one side is ice moulded and smooth, and the other is ice-plucked and craggy.
Composed of silicon or primarily of silicon.
Areas of national importance. The aim behind the SSSI network is to maintain an adequate representation of all natural and semi-natural habitats and native species across Britain. The site network is protected under the provisions of Sections 28 and 19 of the Wildlife and Countryside Act 1981 as well as the Amendment Act 1985 and the Environmental Protection Act 1990.
Material formed on, situated at, or occurring on the earth's surface, especially consisting of unconsolidated residual, alluvial, or glacial deposits lying on bedrock.
The Directive was adopted by the European Parliament and the Council of the European Union on 22 December 2000. Its objective is to establish a framework for community action in the field of water quality to protect inland surface waters, marine, transitional waters and groundwater.


Current Lawn Tech customers we are asking for your continued support this month! If you have a testimonial or review you would be will to share with us please email it to info@linearmagnitude.com so that we may feature it on this website. Thanks for all that you do to keep us in business see you this season!


text:
K Satdamrong / Shutterstock
Is momentum's moment over?
Kate Moore Chief Equity Strategist
Momentum was dented in the early February stock market swoon, but we believe its moment isn't over. Kate explains.
Momentum—and the equity style factor of the same name—was decidedly on in January, following a stellar 2017. Then came the February stock market swoon, which dented momentum strategies (those focused on stocks trending higher).
Is momentum's moment over? The answer is no, in our view, as we write in our new Global equity outlook Has momentum had its moment?
History reveals this factor is rewarded in times of economic growth—and that support remains firmly in place, we believe. We expect the global economic expansion to continue through 2018, and see upside to consensus forecasts amid tax cuts and robust government spending in the U.S. See Investing after the U.S. tax overhaul. The stimulus may hasten (and shorten) the U.S. economic cycle, but we estimate the cycle can power on amid broad global growth—even if domestic overheating pressures pick up in the near term.
The volatility of the macro environment also matters. We find in our analysis that momentum has outperformed broad indexes in low macro vol regimes and lagged slightly in high macro vol regimes. Our economic regime model indicates we are in a low macro vol regime—and one we believe has staying power. The early-February volatility spike came on the heels of an unusually placid 2017. We do not expect a return to the ultra-calm conditions, nor do we believe this episode represents a shift out of the low-vol regime.
The rosy top-down picture is complemented by a solid earnings backdrop that may lend support to equities and further out-performance of momentum. Every region collectively posted double-digit earnings growth in 2017 for the first time since 2005—excluding the post-global financial crisis pop in 2010. See the Earnings growth goes global chart below.
The trend is poised to accelerate in 2018, with forward earnings estimates rising at the fastest pace since 2003 (excluding 2010 again). Looking at MSCI indexes, we find: U.S. earnings growth of 11% in 2017 was the strongest since 2011. The outlook for 2018? Nearly 20%, with tax cuts providing a boost and lifting earnings growth prospects by 7%. Earnings growth was 26% in emerging markets (EM) Asia last year, with an outlook for more than 13% in 2018. Markets have followed. U.S. equities soared 15% and EM Asia 30% in the past 12 months, a period that includes the early February stock swoon. Solid earnings prospects for 2018 could bode well for momentum here.
icon-pointer.svgRead more market insights in our latest Global equity outlook.
The upbeat earnings story extends beyond geography to sectors. Earnings leader technology has been a large driver of momentum returns, yet other cyclical sectors in developed markets have also played a major role. Consumer discretionary, financials and industrials accounted for 49% of the return of the MSCI World Momentum Index over the last four quarters, we find. Tech accounted for 32%. Sectors with the strongest earnings drive have been the largest contributors to momentum performance. Momentum valuations do not appear excessive, relatively speaking. The MSCI All Country World Index (ACWI) is near its all-time high valuation on data back to 2003 while the ACWI Momentum Index is in the 89th percentile, based on forward price to earnings.
Overall, we see potential for momentum to outperform over the next three to six months absent a deterioration in the economic growth outlook, a significant deceleration in earnings momentum, or a geopolitical crisis that brings into question the bright economic outlook or spoils risk appetite. We particularly like momentum stocks in the U.S. and EM Asia, where the earnings outlook provides strong support.
Kate Moore is BlackRock's chief equity strategist, and a member of the BlackRock Investment Institute. She is a regular contributor to The Blog.
This material is not intended to be relied upon as a forecast, research or investment advice, and is not a recommendation, offer or solicitation to buy or sell any securities or to adopt any investment strategy. The opinions expressed are as of February 2018 and may change as subsequent conditions vary. The information and opinions contained in this post are derived from proprietary and nonproprietary sources deemed by BlackRock to be reliable, are not necessarily all-inclusive and are not guaranteed as to accuracy. As such, no warranty of accuracy or reliability is given and no responsibility arising in any other way for errors and omissions (including responsibility to any person by reason of negligence) is accepted by BlackRock, its officers, employees or agents. This post may contain "forward-looking" information that is not purely historical in nature. Such information may include, among other things, projections and forecasts. There is no guarantee that any forecasts made will come to pass. Reliance upon information in this post is at the sole discretion of the reader.