text:
package org.apache.calcite.avatica;

import org.apache.calcite.avatica.remote.TypedValue;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Types;
import java.util.List;

import static org.junit.Assert.assertEquals;

/**
 * Test that {@code ResultSet} returned by {@code DatabaseMetaData} methods
 * conform to JDBC specification.
 */
public class MetaResultSetTest {
  /**
   * A fake test driver for test.
   */
  private static final class TestDriver extends UnregisteredDriver {

    @Override protected DriverVersion createDriverVersion() {
      return new DriverVersion("test", "test 0.0.0", "test", "test 0.0.0", false, 0, 0, 0, 0);
    }

    @Override protected String getConnectStringPrefix() {
      return "jdbc:test";
    }

    @Override public Meta createMeta(AvaticaConnection connection) {
      return new TestMetaImpl(connection);
    }
  }

  /**
   * Fake meta implementation for test driver.
   */
  public static final class TestMetaImpl extends MetaImpl {
    public TestMetaImpl(AvaticaConnection connection) {
      super(connection);
    }

    @Override public StatementHandle prepare(ConnectionHandle ch, String sql, long maxRowCount) {
      throw new UnsupportedOperationException();
    }

    @Override public ExecuteResult prepareAndExecute(StatementHandle h, String sql,
        long maxRowCount, PrepareCallback callback) throws NoSuchStatementException {
      throw new UnsupportedOperationException();
    }

    @Override public ExecuteResult prepareAndExecute(StatementHandle h, String sql,
        long maxRowCount, int maxRowsInFirstFrame, PrepareCallback callback)
        throws NoSuchStatementException {
      throw new UnsupportedOperationException();
    }

    @Override public ExecuteBatchResult prepareAndExecuteBatch(StatementHandle h,
        List<String> sqlCommands) throws NoSuchStatementException {
      throw new UnsupportedOperationException();
    }

    @Override public ExecuteBatchResult executeBatch(StatementHandle h,
        List<List<TypedValue>> parameterValues) throws NoSuchStatementException {
      throw new UnsupportedOperationException();
    }

    @Override public Frame fetch(StatementHandle h, long offset, int fetchMaxRowCount)
        throws NoSuchStatementException, MissingResultsException {
      throw new UnsupportedOperationException();
    }

    @Override public ExecuteResult execute(StatementHandle h, List<TypedValue> parameterValues,
        long maxRowCount) throws NoSuchStatementException {
      throw new UnsupportedOperationException();
    }

    @Override public ExecuteResult execute(StatementHandle h, List<TypedValue> parameterValues,
        int maxRowsInFirstFrame) throws NoSuchStatementException {
      throw new UnsupportedOperationException();
    }

    @Override public void closeStatement(StatementHandle h) {
    }

    @Override public boolean syncResults(StatementHandle sh, QueryState state, long offset)
        throws NoSuchStatementException {
      throw new UnsupportedOperationException();
    }

    @Override public void commit(ConnectionHandle ch) {
      throw new UnsupportedOperationException();
    }

    @Override public void rollback(ConnectionHandle ch) {
      throw new UnsupportedOperationException();
    }
  }

  private Connection connection;

  @Before public void setUp() throws SQLException {
    connection = new TestDriver().connect("jdbc:test", null);
  }

  @After public void tearDown() throws SQLException {
    connection.close();
  }

  @Test public void testGetAttributes() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getAttributes(null, null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(21, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TYPE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TYPE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "ATTR_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "DATA_TYPE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 6, "ATTR_TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 7, "ATTR_SIZE", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 8, "DECIMAL_DIGITS", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 9, "NUM_PREC_RADIX", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 10, "NULLABLE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 11, "REMARKS", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 12, "ATTR_DEF", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 13, "SQL_DATA_TYPE", Types.INTEGER,
          DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 14, "SQL_DATETIME_SUB", Types.INTEGER,
          DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 15, "CHAR_OCTET_LENGTH", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 16, "ORDINAL_POSITION", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 17, "IS_NULLABLE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 18, "SCOPE_CATALOG", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 19, "SCOPE_SCHEMA", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 20, "SCOPE_TABLE", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 21, "SOURCE_DATA_TYPE", Types.SMALLINT, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetBestRowIdentifier() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getBestRowIdentifier(null, null, null,
        DatabaseMetaData.bestRowUnknown, false)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(8, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "SCOPE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 2, "COLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 3, "DATA_TYPE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "COLUMN_SIZE", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 6, "BUFFER_LENGTH", Types.INTEGER,
          DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 7, "DECIMAL_DIGITS", Types.SMALLINT, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 8, "PSEUDO_COLUMN", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
    }
  }

  @Test public void testGetCatalogs() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getCatalogs()) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(1, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
    }
  }

  @Test public void testGetClientInfoProperties() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getClientInfoProperties()) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(4, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 2, "MAX_LEN", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 3, "DEFAULT_VALUE", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 4, "DESCRIPTION", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetColumnPrivileges() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getColumnPrivileges(null, null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(8, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "COLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "GRANTOR", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 6, "GRANTEE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 7, "PRIVILEGE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 8, "IS_GRANTABLE", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetColumns() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getColumns(null, null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(24, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "COLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "DATA_TYPE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 6, "TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 7, "COLUMN_SIZE", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 8, "BUFFER_LENGTH", Types.INTEGER,
          DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 9, "DECIMAL_DIGITS", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 10, "NUM_PREC_RADIX", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 11, "NULLABLE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 12, "REMARKS", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 13, "COLUMN_DEF", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 14, "SQL_DATA_TYPE", Types.INTEGER,
          DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 15, "SQL_DATETIME_SUB", Types.INTEGER,
          DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 16, "CHAR_OCTET_LENGTH", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 17, "ORDINAL_POSITION", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 18, "IS_NULLABLE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 19, "SCOPE_CATALOG", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 20, "SCOPE_SCHEMA", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 21, "SCOPE_TABLE", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 22, "SOURCE_DATA_TYPE", Types.SMALLINT, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 23, "IS_AUTOINCREMENT", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 24, "IS_GENERATEDCOLUMN", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
    }
  }

  @Test public void testGetCrossReference() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getCrossReference(null, null, null, null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(14, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "PKTABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "PKTABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "PKTABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "PKCOLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "FKTABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 6, "FKTABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 7, "FKTABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 8, "FKCOLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 9, "KEY_SEQ", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 10, "UPDATE_RULE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 11, "DELETE_RULE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 12, "FK_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 13, "PK_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 14, "DEFERABILITY", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
    }
  }

  @Test public void testGetExportedKeys() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getExportedKeys(null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(14, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "PKTABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "PKTABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "PKTABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "PKCOLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "FKTABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 6, "FKTABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 7, "FKTABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 8, "FKCOLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 9, "KEY_SEQ", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 10, "UPDATE_RULE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 11, "DELETE_RULE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 12, "FK_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 13, "PK_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 14, "DEFERABILITY", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
    }
  }

  @Test public void testGetFunctionColumns() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getFunctionColumns(null, null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(17, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "FUNCTION_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "FUNCTION_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "FUNCTION_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "COLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "COLUMN_TYPE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 6, "DATA_TYPE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 7, "TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 8, "PRECISION", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 9, "LENGTH", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 10, "SCALE", Types.SMALLINT, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 11, "RADIX", Types.SMALLINT, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 12, "NULLABLE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 13, "REMARKS", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 14, "CHAR_OCTET_LENGTH", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 15, "ORDINAL_POSITION", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 16, "IS_NULLABLE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 17, "SPECIFIC_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetFunctions() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getFunctions(null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(6, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "FUNCTION_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "FUNCTION_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "FUNCTION_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "REMARKS", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 5, "FUNCTION_TYPE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 6, "SPECIFIC_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetImportedKeys() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getImportedKeys(null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(14, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "PKTABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "PKTABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "PKTABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "PKCOLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "FKTABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 6, "FKTABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 7, "FKTABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 8, "FKCOLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 9, "KEY_SEQ", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 10, "UPDATE_RULE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 11, "DELETE_RULE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 12, "FK_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 13, "PK_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 14, "DEFERABILITY", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
    }
  }

  @Test public void testGetIndexInfo() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getIndexInfo(null, null, null, false, false)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(13, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "NON_UNIQUE", Types.BOOLEAN, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "INDEX_QUALIFIER", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 6, "INDEX_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 7, "TYPE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 8, "ORDINAL_POSITION", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 9, "COLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 10, "ASC_OR_DESC", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 11, "CARDINALITY", Types.BIGINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 12, "PAGES", Types.BIGINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 13, "FILTER_CONDITION", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetPrimaryKeys() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getPrimaryKeys(null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(6, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "COLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "KEY_SEQ", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 6, "PK_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetProcedureColumns() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getProcedureColumns(null, null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(20, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "PROCEDURE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "PROCEDURE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "PROCEDURE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "COLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "COLUMN_TYPE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 6, "DATA_TYPE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 7, "TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 8, "PRECISION", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 9, "LENGTH", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 10, "SCALE", Types.SMALLINT, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 11, "RADIX", Types.SMALLINT, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 12, "NULLABLE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 13, "REMARKS", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 14, "COLUMN_DEF", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 15, "SQL_DATA_TYPE", Types.INTEGER,
          DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 16, "SQL_DATETIME_SUB", Types.INTEGER,
          DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 17, "CHAR_OCTET_LENGTH", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 18, "ORDINAL_POSITION", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 19, "IS_NULLABLE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 20, "SPECIFIC_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetProcedures() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getProcedures(null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(9, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "PROCEDURE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "PROCEDURE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "PROCEDURE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 7, "REMARKS", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 8, "PROCEDURE_TYPE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 9, "SPECIFIC_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetPseudoColumns() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getPseudoColumns(null, null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(12, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "COLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "DATA_TYPE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 6, "COLUMN_SIZE", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 7, "DECIMAL_DIGITS", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 8, "NUM_PREC_RADIX", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 9, "COLUMN_USAGE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 10, "REMARKS", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 11, "CHAR_OCTET_LENGTH", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 12, "IS_NULLABLE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
    }
  }

  @Test public void testGetSchemas() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getSchemas(null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(2, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 2, "TABLE_CATALOG", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetSuperTables() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getSuperTables(null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(4, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "SUPERTABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
    }
  }

  @Test public void testGetSuperTypes() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getSuperTypes(null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(6, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TYPE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TYPE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "SUPERTYPE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 5, "SUPERTYPE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 6, "SUPERTYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
    }
  }

  @Test public void testGetTablePrivileges() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getTablePrivileges(null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(7, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "GRANTOR", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 5, "GRANTEE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 6, "PRIVILEGE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 7, "IS_GRANTABLE", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetTables() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getTables(null, null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(10, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TABLE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TABLE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "TABLE_TYPE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "REMARKS", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 6, "TYPE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 7, "TYPE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 8, "TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 9, "SELF_REFERENCING_COL_NAME", Types.VARCHAR,
          DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 10, "REF_GENERATION", Types.VARCHAR, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetTableTypes() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getTableTypes()) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(1, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TABLE_TYPE", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
    }
  }

  @Test public void testGetTypeInfo() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getTypeInfo()) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(18, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 2, "DATA_TYPE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 3, "PRECISION", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 4, "LITERAL_PREFIX", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 5, "LITERAL_SUFFIX", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 6, "CREATE_PARAMS", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 7, "NULLABLE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 8, "CASE_SENSITIVE", Types.BOOLEAN, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 9, "SEARCHABLE", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 10, "UNSIGNED_ATTRIBUTE", Types.BOOLEAN, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 11, "FIXED_PREC_SCALE", Types.BOOLEAN, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 12, "AUTO_INCREMENT", Types.BOOLEAN, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 13, "LOCAL_TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 14, "MINIMUM_SCALE", Types.SMALLINT, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 15, "MAXIMUM_SCALE", Types.SMALLINT, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 16, "SQL_DATA_TYPE", Types.INTEGER,
          DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 17, "SQL_DATETIME_SUB", Types.INTEGER,
          DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 18, "NUM_PREC_RADIX", Types.INTEGER, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetUDTs() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getUDTs(null, null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(7, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "TYPE_CAT", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 2, "TYPE_SCHEM", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 3, "TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "CLASS_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "DATA_TYPE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 6, "REMARKS", Types.VARCHAR, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 7, "BASE_TYPE", Types.SMALLINT, DatabaseMetaData.columnNullable);
    }
  }

  @Test public void testGetVersionColumns() throws SQLException {
    DatabaseMetaData metadata = getDatabaseMetadata();
    try (ResultSet rs = metadata.getVersionColumns(null, null, null)) {
      ResultSetMetaData rsMeta = rs.getMetaData();

      assertEquals(8, rsMeta.getColumnCount());
      assertColumn(rsMeta, 1, "SCOPE", Types.SMALLINT, DatabaseMetaData.columnNullableUnknown);
      assertColumn(rsMeta, 2, "COLUMN_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 3, "DATA_TYPE", Types.INTEGER, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 4, "TYPE_NAME", Types.VARCHAR, DatabaseMetaData.columnNoNulls);
      assertColumn(rsMeta, 5, "COLUMN_SIZE", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 6, "BUFFER_LENGTH", Types.INTEGER, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 7, "DECIMAL_DIGITS", Types.SMALLINT, DatabaseMetaData.columnNullable);
      assertColumn(rsMeta, 8, "PSEUDO_COLUMN", Types.SMALLINT, DatabaseMetaData.columnNoNulls);
    }
  }

  private static void assertColumn(ResultSetMetaData rsMeta, int column, String name, int type,
      int nullable) throws SQLException {
    assertEquals(
        String.format(
            "Expected column %d to be named '%s', was '%s'.",
            column, name, rsMeta.getColumnName(column)),
        name,
        rsMeta.getColumnName(column));

    assertEquals(
        String.format(
            "Expected column %d type to be '%d', was '%d'.",
            column, type, rsMeta.getColumnType(column)),
        type,
        rsMeta.getColumnType(column));

    assertEquals(
        String.format(
            "Expected column %d nullability to be '%d', was '%d'.",
            column, nullable, rsMeta.isNullable(column)),
        nullable,
        rsMeta.isNullable(column));
  }

  private DatabaseMetaData getDatabaseMetadata() throws SQLException {
    return connection.getMetaData();
  }

}

// End MetaResultSetTest.java


This week we look at Christ's High Priestly Prayer. It's the longest example in Scripture of Christ's actual words while praying. In it, we'll see Him pray for Himself, and then intercede for His disciples and all believers throughout the church age.
The notes and audio can be found on the Notes & mp3s page.
Posted on June 8, 2008, in Bible, calvary chapel, christian, Horizon Central, Horizon Christian Fellowship, indianapolis and tagged Jesus, prayer. Bookmark the permalink.	Leave a comment.


Product Note: 100 bracelet cards per pack.
Size: 4"x3-1/2" Folded, Unfolded 4" x 7"
Description: Custom printed with your design in dazzling full color. Slip Bracelet into the notches. Customized jewelry cards are a cute stylish way of displaying your merchandise. Add character to your handmade pieces. This bracelet packaging comes to you as a KIT, the sleeves and cards are separate and unfolded.
Cotton Muslin Pouches 2-3/4" x 5"
View Small supple cotton pouch just the right size for earrings or a small chain. Tiered Pricing: the more you purchase, the more you'll save.
Need to attach our custom hang tags to a garment? Our plastic fasteners are made to fit into our tagging gun for quick and easy attachment. Tiered Pricing: the more you purchase of these fasteners, the more you'll save.
Coupled with our tagging gun makes quick work of product labeling. Tiered Pricing: the more you purchase of these white locking tag strings, the more you'll save.


text:
Q: What is the difference between @var [type]  and $variableName =  in magento 2 PHTML files I am new to PHP and Magento2. I was reading some sample code in a PHTML file and came across this style of declaring a variable
<?php
    /** @var \Magento\Theme\Block\Html\Title $title */
?>

And I could use the $title variable as if I had declared and made it an instance of the Title class.
Right below that, there was another piece like so:
<?php
    $text = $title->getPageTitle();
?>

What is the difference between the two styles of declaration?
Importantly, why doesn't Magento2 complain about the undeclared variable $title in this case?
EDIT
It was not
<?php
    /** @var \Magento\Theme\Block\Html\Title $title */
?>

Instead it is written as
<?php
    /** @var \Magento\Theme\Block\Html\Title $block */
?>

The question is still the same, as to how can $block be used without actually declaring it

redpajama_set_name: RedPajamaStackExchange


Announcing a KILLER Concept! The Spearboard Best Trip Report Challenge!
International Poll - Trip Report Challenge First Quarter 2011 - We Need your votes!
USA East Coast Poll - Trip Report Challenge First Quarter 2011 - We Need your votes!
USA West Coast Poll - Trip Report Challenge First Quarter 2011 - We Need your votes!


Appearance of the rock music in the 1940s and 1950s signified the begging of the golden age of the modern drumming. With public spotlight being firmly placed on bands that integrated drum sets as the core of their music, Rock and Roll history became one of the most important movements in the drum history.
History of drums covers entire history of modern mankind, from the first civilizations in the Asia, Africa and Middle East, to the expansion of Europe in Renaissance and current modern music genres like pop, rock and jazz. Here you can find out more about history of one of the oldest musical instruments of mankind.
Very early in our modern history, drums managed to prove themselves as one of the most efficient ways of transferring information in military. No matter if on battlefield, drills or public ceremonies, drums managed to become integral part of military for almost 3 thousand years.
Timeline of drums covers entire modern history of mankind, starting with the Neolithic times until today when drummers from all around the world can craft their own personalized rhythm sections filled with dozens of types of drums.


Last week, the Open Contracting Partnership released a new report, Mythbusting Confidentiality in Public Contracting, during the Open Government Partnership meetings in Georgia. The report is a fascinating and helpful read, based on a review of recent contract publication practices in eight countries as well as legal frameworks in another seven.
CGD and the Centre for Finance and Development are teaming up to bring together international finance practitioners who are thinking about how to marry public and private international financing for development (so-called blended finance) and researchers who are rethinking government strategies to encourage private activity in sectors viewed as key to economic development (known as the new industrial policy).
Does Management Matter for Learning Outcomes?
Much has been written about the difference in education outcomes between public and public-private partnership (PPP) schools. According to a review by Ark, so far there is insufficient or modest evidence linking PPPs—including contract schools, subsidies, and vouchers—with better learning outcomes (as distinct from evidence about public versus private [non-PPP] schools).
Last summer, the Liberian government delegated management of 93 public elementary schools to eight different private contractors. Given the intense controversy around the program, the government—with some encouragement from our colleagues at Ark Education Partnership Group, who helped manage the program—agreed to randomize the allocation of schools during the pilot, and the three of us partnered with Innovations for Poverty Action (IPA) to evaluate its impacts.
Over the last few years, an increasing number of companies that produce, trade, or buy "forest risk" commodities have pledged to get deforestation out of their supply chains. But voluntary efforts by progressive companies will not on their own be sufficient to end tropical deforestation. A "jurisdictional approach" that marries public and private efforts at the scale of political units offers a promising way forward.


text:
BACK TO CLIENTS
Thomas Kemp
Violinist, Conductor
Thomas Kemp has established himself as one of Britain's leading musicians working internationally as a conductor: a versatile artist who is equally acclaimed for his interpretation of classical repertoire as well as music of 20th and 21st Century. He is the founder and music director of Music@Malling Festival and music director of Chamber Domaine. A highly acclaimed artist, his dynamic commitment and virtuosic performances combined with innovative and ground breaking programming have received wide-spread critical praise. He has worked worldwide as a concertmaster and chamber musician and in 2012 he made his debut with London's Opera Holland Park to great acclaim.
© 2022 WildKat Group
We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you accept the cookies policy.OK

redpajama_set_name: RedPajamaCommonCrawl


It's important to be recognized, in life, and in business.
That's why we're particularly excited to share the news of Gartner's most recent research, the 2018 Magic Quadrant for Supply Chain Planning System of Record. In it, Gartner positions Kinaxis as a Leader for the third consecutive time, providing what we think is some pretty weighty validation for our vision of what a supply chain planning platform should be.
A few years ago, Kevin O'Marah said Gartner's Top 25 Supply Chains was getting increasingly boring. Apple and P&G were annually #1 and #2. So Gartner looked at the numbers and created the Masters category. The criteria in qualifying for the Masters category is any company who has been in the top five rankings for at least seven out of the past 10 years. This year, Amazon was voted off the regular list, and joins Apple and P&G in this Masters category. In 2019, it's likely both Unilever and McDonald's will also be voted off the island and move into the Masters category, as well.
Gartner's Top 25 Supply Chains has become like watching Survivor, the reality TV show that places people on a remote location, where they outwit, outplay and outlast the others. I laugh when they vote out the Navy Seal or the Triathlete. Then, they have no food and lose the following week's challenge. At tribal council, they wonder why they lost. Easy answer here – vote out the best and the tribe gets weaker. Or, as Nature Boy Ric Flair says, "If you want to be the man, you gotta beat the man." Something needs to be done differently in the Masters category if Gartner wants to avoid simply having two lists.
Another change needed is the vast difference between how the 169 peers vs the 38 Gartner analysts rank the companies.
One message came through loud and clear during Gartner's recent Supply Chain Executive Conference; you must ACT (aspire, challenge, transform) now if you want to have any hope in taking your supply chain profitably into the future. The conference's theme of Aspire, Challenge and Transform in a Disruptive World featured prominently in the opening keynote address by two of the research firm's VPs, Debra Hofman and Michael Burkett, who urged attendees to re-imagine their roles and ask how they will meet the future.
The pair talked about how disruption is the new norm. I would argue it always has been, but agree the explosion of interconnectivity and digital disruptors is causing an immediate impact on supply chain—even if the supporting technology behind it has individually been around for years. I'd also agree that to be successful it's time to re-define the very notion of supply chain.
With more than $16 trillion exports moving between countries annually, the new reality isn't just focused on getting the right product to the right people at the right time. As Hofman and Burkett put it, it's about creating an experience-focused supply chain, which will force you as supply chain managers and leaders to gain a better understanding of your customers than ever before.
It is with great pride that we announce Kinaxis® has been placed in the Leaders quadrant of the recently published Gartner Magic Quadrant for Sales and Operations Planning Systems of Differentiation.
Because of our unique ability to provide concurrent planning, Kinaxis RapidResponse® is an ideal solution to take companies through the various stages of S&OP maturity. We believe the next revolution in supply chain performance can only be achieved by realizing the speed of cross-functional decision making. As today's press release indicated, our goal is to advance our customers' S&OP processes from early stages through to Stage 4, and beyond, over time by taking advantage of all full capabilities in our single product.
"Oh where, oh where, can my supply chain be?
a. My Bold Predictions were not far off. I did call the Nike and Starbucks entry into the Top 10. I am bolder on Samsung, simply because they had the highest 2016 Inventory Turns aside from McDonalds. As well, Samsung was 7th in Peer Voting rank, so the other "185" Peer voters agree with me.


With the famed Pinewood studios nearby, the creative industries are a real opportunity for Slough, according to the local council.
Simon Hall, lead economic growth and enterprise for the local auhtority, said at the WOW conference for west and west of west London and the Thames Valley today (22 November): "Pinewood is a whole range of different small SMEs and we want to work with them to find how we can bring those businesses into Slough."
Pinewood was opened 80 years ago, and has 40 stages, including the "007 Stage".
Hall spoke of the council recently opening a film office to help companies wanting to use the area for film and TV. Part of the recent BBC drama, Killing Eve was shot around the area.


text:
Leica M11 promotional videos leaked! New camera to debut this week?
Anthony T. Gonzalez	January 5, 2022
UPDATE: Two Leica M11 videos have just been leaked, photographers Ralph Gibson and Goncalo Fonseca both the camera to capture images.
These videos appear to be promotional material for the official Leica M11 launch, which is slated to take place on January 7 in Europe and January 13 across the United States from the manufacturer's "What Makes a Legend" event. .
In these leaked promotional videos, we clearly show a redesigned baseplate in the M11, similar to that of the Leica Q2, thanks to which you no longer need to remove the brass baseplate to expose the SD card and battery. . In this new design, the battery cover is also part of the baseplate, and when inserted, covers the SD card compartment and is flush with the rest of the camera body.
(Image credit: Leica)
In the video featuring fine art photographer Ralph Gibson, we also get a glimpse of the new Leica Visoflex used in situ with the M11, which appears to have been completely resigned and now features a more understated and boxy appearance than the previous generation. Typ020 EVF.
The Leica M11 is actually referenced in Goncalo Fonseca's account of using the camera and is said to have excellent low-light capabilities. Sample images are also provided by the two photographers in the videos.
These two leaked videos still stay on Vimeo, but it might only be a matter of time before they're deleted, so if you want to see the latest M11 before everyone else, you'd better watch them. while they are still available!
ORIGINAL STORY (December 10, 2021): Since we first found out that Leica would be releasing a new M-series camera, there have been several rumors regarding its specs. Following the leak online of a second image of the upcoming Leica M11 digital rangefinder camera, we took a look at what features it could offer. As expected, it exudes signature Leica style with a minimalist design, black leather-like texture, and an external dial to control shutter speed.
We first got a glimpse of the new Leica M11 back in October but the photo does not say too much. All you could tell from the initial image was that it was black, it had a dial on the top for shutter speed, next to it was the shutter release button and on the other side it was had a smaller dial that could be a mode dial.
Read more: Best Leica M lenses
Main features of the Leica M11
New and improved Leica M11 looks a lot like the Leica M10-R according to a picture Nokishita fled. As far as we can tell, there are only a few subtle aesthetic differences.
Internally, however, this is where we might start to see more of an upgrade. According to the specifications disclosed on the Leica rumors website, the M11 will have a 50MP sensor that can be cropped to shoot at 36MP or 15MP depending on the zoom you need (Leica typically offers digital cropping to simulate longer focal lengths). It is also likely that the Leica M11 will use the new Leica BP-SCL7 battery and charger and it should have Wifi and Bluetooth connectivity.
Similar to the Leica Q2 setup, it will not have a baseplate, which means it will be faster to change batteries and SD cards. This was always a weird and sometimes boring historic design feature inherited from Leica's M-series film cameras.
Is this the end of the detachable Leica baseplate shown here on the Leica M10 Monochrom? It made sense for older film cameras, but got a bit awkward for digital models frankly. (Image credit: Rod Lawton / Digital Camera World)
The M11 should also be USB-C compatible, which will speed up charging times and eliminate the need for an external charger. While many users were hoping it would have IBIS (In-Body Stabilization), it seems some people might be disappointed as including it would have meant a bigger body – something Leica was unwilling to change.
One of the differences we spotted between the Leica M10 and the Leica M11 is the addition of a small button next to the trigger / on / off switch. We're not sure exactly what this will be used for, but we could assume it will be to change the resolution of the sensor (in other words, give you the crop factor focal lengths) as seen on Leica Q cameras. and Q2. There has been talk of it being a video button, but we're not convinced Leica would add video to the M series when it would be much more suitable for the Q or S series cameras.
The Leica M11 could also benefit from Leica's new Visoflex, an optional electronic viewfinder that sits on the camera's hot shoe. It's been six years since this tech got an upgrade, so it's well overdue and the best news is that the new Finder is expected to be of a higher resolution and backward compatible.
Rumors suggest that this could spell the end of the Leica M10-D, shown here, the model without a rear display. It's good old school – you can't even look at your footage until you've returned from your photoshoot! (Image credit: Leica)
We still don't know exactly when there will be an official announcement from Leica regarding the Leica M11 release date and specifications. According to a source from Leica Rumors, the release of the new camera will result in the Leica M10, M10-P and M10-D being discontinued. As we get closer and closer to the end of the year, we're unlikely to hear anything from that side of 2022. Maybe Leica has decided to launch the new camera in the new one. year and make people wait a little longer.
Today's best Leica M10-R offers
The best Leica cameras
The best Leica SL lenses
Leica lens name explained
Best full frame mirrorless cameras
The interesting features of the Huawei nova 9 ultra vision camera
The world's largest digital camera is almost ready to photograph the stars
DJI Ronin 4D review: an unrivaled cinema camera system
Samsung Galaxy S22 Live Image Leak Hints at Redesigned Camera Module and Glossy Finish
Market size analysis of the sales of Aircraft Surveillance Camera Systems in 2021 by major key players
Modular Camera Systems Market Research Report and Forecast to 2028 - Toshiba, Samsung, BYD, LG - Industrial IT
OnePlus 10 Pro will include a triple rear camera and updated software
Toucan unveils its first security camera equipped with projectors
Opal C1 is a compact $ 300 webcam with DSLR-style camera quality


text:
Greater Manchester Good Employment Charter
Impact of the Charter
Working For a Charter Member
The Charter
Secure Work
Engagement & Voice
Supporter Registration Form
The Good Employment Awards
Flexible Work Masterclass
Safely Reopening GM
Good Employment Chatter: S1 E04
The Impact of the Pandemic on the Hospitality Industry
Sacha Lord
Impact of the Pandemic on the Hospitality Industry – in this episode we speak to Sacha Lord, Nightime Economy Advisor for Greater Manchester. We look at the hospitality sector, how it has been affected by continued lockdowns, and how we can build back better with this industry at the forefront.
Listen for Chatter about Sacha Lord's first experience of employment, his belief that hospitality is integral to the country building back after Covid-19, and what hospitality industries need to do to keep Good Employment practices at the forefront of future decision-making.
"I've kind of had a lightbulb moment this week actually, because this won't come as a surprise to you but I do feel like hospitality has been hung out to dry."
Subscribe now for free: Apple Podcasts | Spotify | RSS Feed
Mark Clinton, Native Manchester
Episode Discussion: The Impact of Covid-19 on the Hospitality Industry
It's all people, I suppose this whole thing, situation, crisis, panic – pandemic, is about people. So when invited to write this piece this was the main topic I kept coming back to.
Thinking back to 2020, when we first heard the term 'lockdown', but before that other term we are now so accustomed to –'furlough' - businesses in our industry acted in differing ways. Some believed it would be two weeks, so it was a matter of using annual leave to cover and we'd be fine. Others went to panic stations more drastic - immediately reducing their head count and beginning redundancies. It was a frightening time for everybody, but this was the first impact on people in our industry.
Furlough settled the packs, although my phone began to hop with my teams queries of: Am I eligible? How much would it be, as I work more hours than in my contract? Can leavers return? I assume similar things were happening in every business across the country, but the complexities of flexible and variable contracts in our industry was to have further stress affect, once again on our people.
We all know the extended lengths of lockdown seemed never ending before Summer seemed to bring some taste of normality back and we began to re-open. However, the various restrictions meant that at the new maximum capacity, coupled with an increased cost of operating, many businesses would not be the same again for some time. The next step, and probably the one that has done the most lasting damage to the industry was the many, many redundancies across the sector.
This happened across many sectors, not just ours. However (I believe) this was the one where we lost the trust. We became the truth of the typical picture regularly posed of our industry – not a career, no longevity, no stability, zero hour contracts, no security. And just like that we let go of so many strong talented colleagues who then ultimately with their amazing transferrable, flexible, adaptable skills, found work elsewhere.
It's no secret now that our industry is facing a people crisis - with the restrictions that Brexit brought with it with regard to European workers, and the people we unfortunately had to let go reluctant to face the risk of returning.
I know I'm not alone when I say that we all find ourselves constantly recruiting. We spend additional hours week after week in attempt to refill our teams, we fill gaps with the use of agency workers at a premium, we increase pay rates to beat the competing businesses also in the same situation, and we look at ways we can add value to our benefit packages. These all add cost to already tiny margins, reduced further by restrictions. However, there is a thought of irony to this – surely the interim cost of looking after these people would have been far less than what we are spending now to recoup.
Without doubt the impact on our people has been the biggest factor this pandemic has had on our industry as a whole, and one I have felt the most. But looking at it from the other side of our people, the impact on their lives will have been greater.
This is an industry where mental health issues and stress are prevalent. This was cited in an open forum held by Sacha Lord, Night-time Economy Adviser, where he asked the industry which areas needed most the improvement and support. Mental health issues came above tipping practices in this ranking.
There is no doubt that we will feel the effects of this pandemic on mental health for some time to come. This will be both as a direct effect of the pandemic itself in our personal lives, and indirectly as a result of the various stresses we have encountered at this time.
Now, and looking forward, it is my intention to continue to prove this is an industry that can provide a serious lifelong career, I will do my part to ensure we show loyalty, job stability, progression and continue to promote a culture where mental health is something we are not ashamed to talk about. I believe these will be some of the solutions to our current situation in the long term, but short term, we've got some work to do.
Mark Clinton
Mark Clinton has been an established Food & Beverages operator in Manchester for over 18 years, and is currently leading the re-brand at Ducie Street Warehouse.
Passionate about mental health and improving the image of the industry as a respected career, Mark's work at The Refuge was recognised as a 'Best Practice Operator' in the Greater Manchester Night Time Economy Adviser's Blueprint. Mark also sits as a panel member on the Night-Time Economy COVID-19 recovery forum.
Impact of the Pandemic on the Hospitality Industry | Podcast Episode 4


text:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_detail_player"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/view_pager2"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

redpajama_set_name: RedPajamaGithub


text:
In View of SARS CoV-19 new duty roster is avilable now on Divisional notice Board.
all teaching/non-teaching staff is directed to attend duties a per schedule.
World health organisation Guidelines
Modes of transmission of the COVID-19 virus
Respiratory infections can be transmitted through droplets of different sizes: when the droplet particles are >5-10 μm in diameter they are referred to as respiratory droplets, and when then are <5μm in diameter, they are referred to as droplet nuclei.
According to current evidence, COVID-19 virus is primarily transmitted between people through respiratory droplets and contact routes.
In an analysis of 75,465 COVID-19 cases in China, airborne transmission was not reported.
Droplet transmission occurs when a person is in in close contact (within 1 m) with someone who has respiratory symptoms (e.g., coughing or sneezing) and is therefore at risk of having his/her mucosae (mouth and nose) or conjunctiva (eyes) exposed to potentially infective respiratory droplets. Transmission may also occur through fomites in the immediate environment around the infected person.
Therefore, transmission of the COVID-19 virus can occur by direct contact with infected people and indirect contact with surfaces in the immediate environment or with objects used on the infected person (e.g., stethoscope or thermometer).
Airborne transmission is different from droplet transmission as it refers to the presence of microbes within droplet nuclei, which are generally considered to be particles <5μm in diameter, can remain in the air for long periods of time and be transmitted to others over distances greater than 1 m.
In the context of COVID-19, airborne transmission may be possible in specific circumstances and settings in which procedures or support treatments that generate aerosols are performed; i.e., endotracheal intubation, bronchoscopy, open suctioning, administration of nebulized treatment, manual ventilation before intubation, turning the patient to the prone position, disconnecting the patient from the ventilator, non-invasive positive-pressure ventilation, tracheostomy, and cardiopulmonary resuscitation.
There is some evidence that COVID-19 infection may lead to intestinal infection and be present in faeces. However, to date only one study has cultured the COVID-19 virus from a single stool specimen.
There have been no reports of faecal−oral transmission of the COVID-19 virus to date.
Implications of recent findings of detection of COVID-19 virus from air sampling
To date, some scientific publications provide initial evidence on whether the COVID-19 virus can be detected in the air and thus, some news outlets have suggested that there has been airborne transmission. These initial findings need to be interpreted carefully.
A recent publication in the New England Journal of Medicine has evaluated virus persistence of the COVID-19 virus.10 In this experimental study, aerosols were generated using a three-jet Collison nebulizer and fed into a Goldberg drum under controlled laboratory conditions. This is a high-powered machine that does not reflect normal human cough conditions. Further, the finding of COVID-19 virus in aerosol particles up to 3 hours does not reflect a clinical setting in which aerosol-generating procedures are performed—that is, this was an experimentally induced aerosol-generating procedure. There are reports from settings where symptomatic COVID-19 patients have been admitted and in which no COVID-19 RNA was detected in air samples.
WHO is aware of other studies which have evaluated the presence of COVID-19 RNA in air samples, but which are not yet published in peer-reviewed journals. It is important to note that the detection of RNA in environmental samples based on PCR-based assays is not indicative of viable virus that could be transmissible. Further studies are needed to determine whether it is possible to detect COVID-19 virus in air samples from patient rooms where no procedures or support treatments that generate aerosols are ongoing. As evidence emerges, it is important to know whether viable virus is found and what role it may play in transmission.
Based on the available evidence, including the recent publications mentioned above, WHO continues to recommend droplet and contact precautions for those people caring for COVID-19 patients. WHO continues to recommend airborne precautions for circumstances and settings in which aerosol generating procedures and support treatment are performed, according to risk assessment.
These recommendations are consistent with other national and international guidelines, including those developed by the European Society of Intensive Care Medicine and Society of Critical Care Medicine
and those currently used in Australia, Canada, and United Kingdom.
At the same time, other countries and organizations, including the US Centers for Diseases Control and Prevention and the European Centre for Disease Prevention and Control, recommend airborne precautions for any situation involving the care of COVID-19 patients, and consider the use of medical masks as an acceptable option in case of shortages of respirators (N95, FFP2 or FFP3).
Current WHO recommendations emphasize the importance of rational and appropriate use of all PPE,
not only masks, which requires correct and rigorous behavior from health care workers, particularly in doffing procedures and hand hygiene practices.
WHO also recommends staff training on these recommendations,
as well as the adequate procurement and availability of the necessary PPE and other supplies and facilities. Finally, WHO continues to emphasize the utmost importance of frequent hand hygiene, respiratory etiquette, and environmental cleaning and disinfection, as well as the importance of maintaining physical distances and avoidance of close, unprotected contact with people with fever or respiratory symptoms.


Challenge little minds with the ultimate shape sorter! Bright and cheerful, it features 16 chunky, vibrant shapes that make a satisfying "clink" as they drop into the hardwood cube. Then open the lid, take them out, and start all over again.


"At the risk of sounding dramatic, this is a landmark week in Austin music," declared Live Music Task Force Chair Paul Oveisi, who also owns Momo's on Sixth Street. "We have an opportunity to step up as a community and build a foundation of a live music infrastructure that could catapult Austin to be a cutting-edge music city."
After nine long months of work by the 15-member volunteer task force, created by City Council in January, its recommendations, reflecting substantial community input, will be presented to council at 2pm on Thursday, Nov. 20. The next hurdle: turning all those good ideas into new city policies, programs, and community initiatives that actually work to support the music scene and related sectors of the local economy.
The new nonprofit Save Austin Music has dubbed this "the Week That Will Change Austin Music Forever." SAM is partnering with the Austin Music Foundation for a march to City Hall on Thursday to demonstrate community support for the live music scene. Ralliers will gather at 1pm at Antone's (213 W. Fifth; free parking at City Hall). Notes SaveAustinMusic.com: "The LMTF will tell City Council how the City can help support our industry and how they can help us make a living in the music business in Austin. But these recommendations will have little effect without public support."
Bobby Garza, a task-force member, musician, and aide to Council Member Mike Martinez, noted this week, "It's going to be up to folks who care about this stuff to lobby council, push forward the recommendations they think are good ideas, and make sure action gets taken." The most emphatic push will need to come from council resolution sponsors Martinez, Will Wynn, Sheryl Cole, and their colleagues. Here in the live music capital of the world, no elected official would dare be "against" live music. Certainly it bodes well that Garza and mayoral aide Rich Bailey have been closely involved in making the task force a success. But other recent citizen recommendations – memorably those of the Affordable Housing Incentives Task Force – have languished without council adoption or much staff support.
Look for council to take its first action at its Dec. 11 or 18 sessions, likely directing city staff to pursue one or more recommendations. The central one: "Establish a central Music Department (MD) within the City of Austin governance structure." If it's not officially someone's job to implement the 15 pages of bright ideas, they won't get far. Realistically, city funding will have to wait on the 2009-2010 city budget; given shrinking local sales-tax revenues, even that now looks dubious. So as not to lose momentum, the task force recommends tasking an existing city staffer (ideally reassigned full-time), or a team, with the responsibilities outlined in the report.
Many of the suggested improvements would cost the city little other than staff time. (For a detailed analysis, see "Music Deportment," Music, and "Can the Bands Play On?" July 18.) Big-ticket items, such as providing central affordable housing for musicians, would likely need private-sector participation or other funding. And members will need cost-benefit estimates from the budget office, headed by Chief Financial Officer Leslie Browder, and/or the Economic Growth and Redevelopment Services Office, overseen by Assistant City Manager Sue Edwards.
A detailed economic development analysis would define the potential return on the city's investment. The music industry was credited by a 2004 city report with generating nearly $1 billion in local economic activity. An effective Music Department potentially could pay for itself by growing the local music industry and thereby yielding more sales- and property-tax revenues. The task force recommends an active three-pronged strategy: 1) recruit needed industry elements, such as record labels, distributors, booking agents, and talent management; 2) attract complementary industries, such as digital and film; and 3) incubate and foster growth of existing industry elements already in Austin. To make fast tracks, the city's Economic Growth wing potentially could partner on this effort with Opportunity Austin, the economic growth arm of the Austin Chamber of Commerce.
Urged Oveisi: "I can't emphasize the power of proving that the community is behind this report. Numbers speak volumes to our elected officials." Observing that the task force has already required "many months of public forums, late-night work sessions, surveys, meetings, consultations with people all over this planet," he said: "I ask more. Participate. Pay attention. Be involved."
And don't ignore the bands' tip jars.
The Live Music Task Force recommendations – including recent changes regarding sound enforcement and control – are posted online at www.cityofaustin.org/council/livemusictaskforce.htm.


The purpose of this study was to identify indicators of three different types of teaching and learning used within an informal community of practice. Peters and Armstrong's (1998) article, Collaborative learning: People laboring together to construct knowledge, served as the basis for this case study, which expanded upon the types of teaching and learning as a framework for understanding practitioners' interactions within communities of practice (CoP). No other research has comparatively examined these three types of teaching and learning, or examined the types of teaching and learning as a framework for understanding interactions within CoPs.
Eight members of a CoP group participated in this study over a 10-week period. Data sources consisted of audio taped meetings, discussion board posts, and field notes. Through typological and discourse analysis of the transcripts, five indicators of teaching and learning were identified: engagement, assumptions, influence, questions, and mode of discourse. Each indicator displayed different characteristics across each of the three types of teaching and learning.
The results suggest how the types of teaching and learning can be used as a framework for understanding group interactions within CoPs. The indicators provide a practical method for practitioners to identify language behaviors that contribute to these interactions. By identifying these indicators, the researcher contends that practitioners can facilitate themselves and their CoPs with better intention and purpose.
Navorska, Shalane Balfour, "Identifying Types of Teaching and Learning in an Informal Community of Practice. " PhD diss., University of Tennessee, 2010.


After almost two years and 176 presidential tweets about the "witch hunt," the Special Counsel investigation is finally complete. Now that it's over, the full report should be released to the public.
I wouldn't be doing my job right if I sat here and wrote to the Class of 2021 that Elon University has its entire act together. I know it's not true.
As polarizing of a figure as NBA superstar LeBron James is in the realm of barbershop conversations and Twitter debates, President Donald Trump incomparably proved this past fall that he is the current "King" of divisiveness.
While Elon University might be working hard to increase racial and cultural diversity, as a university we still fall short of meeting the kind of racial and cultural ratio we should have if we are going to boast about our "global engagement". Coming to Elon I knew that I wouldn't be seeing as much diversity as I was used to, but when I found out that only 20 percent of my class identified as a person of color, I was appalled. According to a study done in 2015 by the Pew Research Center, about 35% of people in the United States identify as a person of color.
Venezuela is currently in a state of humanitarian crisis, economic crisis, democratic crisis and just about any other form of crisis under the sun.
Elon University prides itself as an institution that helps create global citizens. We can see aspects of this mindset in the required first year class "The Global Experience," International Station at Lakeside and various international studies and language programs across campus. But, when it comes to creating global leaders, there's one Elon experience that Elon loves to highlight most: study abroad.
Last weekend I had the privilege to learn about the research being done by undergraduates across the country.
Both viewers and participants in all forms of art and entertainment are drawn together by a singular live event that rarely escapes one's memory.
The elevator was rising higher and higher, and my ears started to pop. When we reached the top we had a beautiful twilight view of the London skyline.
It was the home of so many firsts: first dates; first parties; first independence. I still remember that pizza parlor like it was yesterday. I still remember those igloos like I remember my childhood bedroom. But now, the place where so many of us grew from kids into adults is waddling off into the sunset.
I remember one of the first times someone called me a leader. I was the only freshman in the Alto II section of my choir class in high school.
Reaching out to minority groups enriches social and academic conversations on campus. It can help us fine-tune our minds to become better global ambassadors, understanding the influence of culture in academia.
Maybe you've seen yaks about it, heard chatter about it or been directly affected by its abstract presence, but the stereotypes in our greek community revolving around one "tier system" have simply got to go. For those of you who don't understand (in which case I either applaud your ability to focus on what's really important or urge you to get out from the rock you're living under), the so-called "tier system" is built on the belief that, in Fraternity and Sorority Life, there is a totem-pole style ranking of coolness or widely-known reputation from one sorority/fraternity to another.
If you are a woman, please consider wearing a hijab on Thursday. It might not be comfortable, but being an ally rarely is. Last year was the first year Elon University participated in Hijab Day.
They say it's not a Muslim ban. They say it's a safety concern. They say this is all a preventive measure.
Black History is a living, breathing movement that our forebears started with hopes of cultivating a better environment for us. Their legacy is left to us. We, as in every human being, are capable of redirecting longstanding perceptions of race.


text:
« Weyermuller: Thousands pay respect to slain Chicago Police Commander | Main | Breaking: Rauner campaign mentions the words "Donald Trump" »
New Ives ad focuses on Rauner betraying social conservatives
WHEATON - Illinois TV viewers have been told by Governor Rauner's campaign for the last couple of weeks that GOP challenger State Rep. Jeanne Ives is "Madigan's favorite Republican." Anyone that is keeps up on Springfield politics is well aware that Ives is not Madigan's favorite Republican, and that the comments used in Rauner's campaign were scoffing responses to the governor blaming Madigan for none of Rauner's Turnaround Agenda being put into effect.
In response, Ives - who has a considerably smaller campaign budget than Rauner's $65M - released a new ad on the internet called "Rauner's Friends." The ad, her campaign says, "exposes Bruce Rauner's real political allies in Springfield."
Among those Rauner allies are Personal PAC, an organization that supports the radical Left's social agenda, including taxpayer-funding of abortion "on demand" - meaning aborting babies for any reason, at any time during the pregnancy - with taxpayers paying for it.
Rauner and his wife have donated and raised millions for Personal PAC and Planned Parenthood. Personal PAC and Planned Parenthood have spent millions to defeat conservatives. By the transitive property, Rauner is financing those seeking to defeat Republicans throughout Illinois, Ives' statement said.
"It is the breathtaking truth that not only has Rauner done the bidding of radical Left, he finances their attacks on conservatives. There has never been a bigger enemy inside the perimeter of the Illinois Republican Party than Bruce Rauner," they said.
"Illinois primary voters should know who Bruce Rauner's allies are," said Ives. "They are organizations like Personal PAC and Planned Parenthood who push a radical social agenda and work to defeat conservative Republicans. Conservative voters should know that. Governor Rauner does not understand conservatives or our values. He doesn't respect us. And that's why it was so easy for him to betray us."
Monday, February 19, 2018 at 11:01 AM | Permalink


Choose The Perfect Electricity Plan in Tivoli, Texas!
We work hard for over four million home and business customers across the United States and Canada, striving to earn their trust every day. Although we're among the biggest residential energy retailers in North America, our headquarters are in Texas, making us one of your friendly neighborhood electric companies. We provide big-business know-how without giving up the support you'd expect from a hometown energy provider.
Understanding your energy usage has never been simpler. Our insights will help you make advised decisions, be more efficient, and save money. Direct Energy is there for you. With an abundance of specially-designed offerings across North America, we are a resource you can rely on.
Sign up for your perfect energy plan in Tivoli, Texas!
Why spend time thinking about your electricity, when you could be taking on a new home improvement project? Choose Direct Energy for low, fixed Tivoli electric rates! Don't spend another hot and humid Tivoli summer stressing about your electricity. Direct Energy has the products and prices that are right for your home and your budget. There is a wide array of plans available to you, from the Echo Dot plan to a fixed rate, where you can lock in price stability for an established length of time.
You can always count on competitive electricity rates and unmatched customer service, but the perks don't stop there. Once you've figured out your perfect plan, you can use our Online Account Manager to view your bills, check out exclusive offers, and more. It's that easy! At Direct Energy, we want to be more than just your energy company. We want to be there for you as a partner in your home. That's why we provide you with the knowledge and tools to help you become more energy-savvy, while creating a brighter home. We want you to lower your energy use. Your wallet, and the environment, will thank you. Let Direct Energy show you manageable ways to reduce your energy usage and costs that are simple enough to incorporate into everyday life.
Direct Energy is not your typical electricity supplier in Tivoli, Texas.
Are you on a mission to Use Less of What We Sell™? Well, we're committed to helping you do just that. We provide our customers in the AEP Central area with the resources and tools they need. Direct Your Energy, a custom suite of energy usage insight tools, helps you see, understand, and manage how you use energy in your home. Your energy snapshot will help you make adjustments, if needed, so that you are in total control. You'll also benefit from a seven-day weather outlook and how that could impact your bottom line.
If you want to learn more about your energy use, you can browse through Direct Energy's Learning Center and blog for access to comprehensive tools. Everything from green living and home improvement tips to safety tips, Direct Energy is dedicated to helping you care for your home and understand and manage your energy use.
Are you trying to decide between Direct Energy and Green Mountain Energy? Learn more about the pluses of being a Direct Energy customer. We make it simple, whether you're switching Tivoli electricity providers or you need new service. It doesn't matter if you want the stability of a fixed rate or the freedom of a connected home bundle, we have the plan that fits your needs. We even offer you a way to simplify the process of paying your bill. Sign up for Paperless Billing and Auto Pay by logging into the Online Account Manager!
Not everyone chooses the same electricity plan, but all customers have several things they can count on - like fixed rates and great customer service! We empower you to make smarter, more informed choices with our energy insights tool, Direct Your Energy. Take a look at our educational resources to bump up your energy efficiency and save on your monthly bills. We aren't the same as all the other electricity companies. We want to help you save money. By simply signing up for and participating in the Reduce Your Use Rewards program, you could get a 10% discount on your next bill! Live smarter by getting started with Direct Energy today.


Once upon a time, people used disc-cutting machines to cut their own discs. Eventually (during the 50s?), people switched to magnetic tape for home recording. That's the history as I know it--it's probably a bit more complicated than that. But here's a home-made Christmas disc by a very young man named Billy. I know this, because on the second side Billy introduces a piano piece (nothing I recognize; sounds like a by-ear number) with the words, "This is Billy, making you a record for Christmas of (in?) 1948." Thus I know the recording year. Of course, Billy could have simply been the engineer, but I suspect he's the ivory tinkler, at least on side 2. He's a decent player for a kid.
I'm designating the piano solo (which features a false start, followed by some Charles Ives harmonies, before it gets going) as side 2 because it contains no label writing; the flip (above) lists White Christmas and Jingle Bells as the pieces, and what looks like "Billy Four" as the artists. So I'm assigning it side-1 status. Problem is, there are only two musicians--tenor (?) sax and piano, so maybe "Four" (or "Lour"?) is Billy's last name. Will we ever know?
Condition isn't very good (Maybe I should have employed some hiss filtering), but I used the curve marked "AFRS Transcriptions #1" in my VinylStudio program, and it brings the music out loud and clear over the disc noise. AFRS, of course, is Armed Forces Radio Service, which eventually became Armed Forces Radio and Television Service (AFRTS), or "A-farts," as we called it in the Navy. AFRTS would send my first ship videos to play over the closed-circuit system, and one night I was showing a program for the crew while watching a tape on another machine. Meaning to fast-forward the other tape, I accidentally fast-forwarded the AFRTS program. Knock on the door--a crewmember. "Could you please reshow the last five minutes or so?" he asked. Oops.
AFRTS programs always included Navy recruiting spots, and you can imagine the responses they received in our TV lounges. Anyway, of course this disc has nothing to do with AFRS, but the curve sure matches up beautifully.
So, why did I buy this Goodwill album? Well, after going through eight or nine boxes, I'd picked a small group of LPs and 45s. My brother-in-law was standing next to me. I thought this jacket was kind of cool (it is--surprisingly so for a cheapo label), so I held it up and said, "Do I want this?" "Yes, you want this," he replied. So I bought it.
The label is Hollywood, and here Hollywood is pulling the standard budget-label read-the-smaller-print scam: a big (colorized?) picture of the famous artists being exploited, the artists' name in big letters ("Dorsey"), and no Tommy or Jimmy Dorsey present on the disc. Surprise!! Just Maury Laws' Orchestra and Chorus, which does a surprisingly decent job recreating the Tommy Dorsey sound (7 to 8 on a scale of 10). (I don't think any of these were originally Jimmy Dorsey sides, but correct me if I'm wrong.) Surprisingly decent, because the budget couldn't have been very sky-high. In all, a fun LP with a few outstanding performances. My only complaint: some truncated arrangements, including my two all-time favorite TD tracks: Marie and Sunny Side of the Street. How could they? But there's an excellent Opus No. 1, so maybe I can forgive this lapse in $1.98-LP wisdom. This junk-label album far exceeded my low expectations, so I'll give it an A. Besides, the cover rocks.
Biggest surprise: the very decent sound. I combined left and right for fabulous results. Not usually, but sometimes the poverty-row record companies get it right. Well, except for putting the jacket's track listings in the correct order, but that's a proud budget label tradition. These folks have standards to uphold.
Click here to hear: The Dorsey Touch--Maury Laws' Chorus and Orch.
The couple (above) looks like it's being tortured. In the Hall of Bad Poses, this jacket cover probably has its own special room.
Now, when you see an album cover this banged up (I cloned out some of the worst of it, save for the pose itself), you can only assume the disc is toast, but in fact it's a solid average. So I got good sound out of all nine (yes, nine) of the tracks. Oh, and in typical zero-budget label fashion, the jacket title listings are out of sync with the actual order, and the label sports a different title than the front (Teenage All-Time Favorites). Yup, everything checks out.
Despite the 1958-style art, this collection of sound-alike hits dates from 1963! And what a group of 1963 "Teen-age Favorites" (keeping in mind these are all "fake" versions)--the 1954 Kay Starr hit, Rock and Roll Waltz; the 1957 Jim Reeves hit Four Walls; Sal Mineo's Start Movin' (In My Direction), same year; two Fats Domino numbers (Be My Guest, My Girl Josephine--1959 and 1960); and the then-current Sam Cooke classic, Another Saturday Night. I guess none of the teens surveyed by the Broadway label were into the Beach Boys, Lesley Gore, Stevie Wonder, or Bobby Vinton.
Anyway, this very strange worth-it-for-the-cover-pose-alone album is actually pretty fun listening. Find out for yourself. You'll thank me (or not).
An astonishingly good set of "fake" hits, considering it's from the cheapest of all cheapo record companies of the Fifties: Record Corp. of America, not to be confused with RCA.
Some wear on this disc, but decent sound overall. Some of the performances border on quite good (Rock Around the Clock, for instance, the best cheap-label copycat version of the classic tune anywhere). De-clicking this was a chore, but a happy one, because these tracks were worth rescuing from the ravages of needle drops, digs, and general turntable mistracking. I take this stuff seriously, Lord help me.
Notice the ripped-off portion of the cover, which was likely a track listing. Whoever did it could have done it a little more gracefully, but it's cool, campy cover anyway.
Best guess on the release year: 1955, because all of these are 1955 hits. The LP cover says 1954, but do you trust Record Corp. of America?


Voices of Employees - Waseda University Property Management Corp.
What is your major role/responsibility in your current job?
I am mainly responsible for accounting tasks such as issuing invoices and processing slips, managing accounts receivable / payable, payment and deposit management, budget management, monthly operations, settlement of accounts, etc. Since I manage numbers in detail every day, I pay close attention so not to cause inconveniences to business partners and partner companies due to careless mistakes. In addition, we manage company equipment, the reception, and dealing with visitors. Recently, I began to be involved in the promotion activities of the University's official water Waseda Water which launched sales in 2017, and I get the opportunity to have new experiences everyday.
In what ways do you feel your job is worth doing?
As I gained knowledge through accumulating experiences on a daily basis, and as I gradually became able to work efficiently, I realized that I can contribute to the company as well as wider society through work. In the beginning, when I entered the company, I was confused by the fact that I did not understand its characteristics and I often had doubts. But in the process of resolving them one by one I gradually deepened my understanding. In such accumulation of experiences, it became possible to respond immediately when receiving questions from other divisions, and I feel that being relied upon as the person in charge is a job worth doing.
What was the most rewarding moment in your business career?
It is a pleasant moment when I can feel my own growth, such as when my boss gives me the opportunity to do a new task, or when I feel that I am recognized from the people around me as the person in charge. In addition, as I am involved in the new sales project of Waseda Water, I feel grateful of repeating customers who say to me "Thank you always". I am also thankful for having the chance to gain new experiences that are difficult to get if I work only in accounting.
I am mainly responsible for general management such as cleaning, facilities, and security services on the campus premises. I also carry out management work and temporary security management when there are big events in the university such as entrance ceremonies, graduation ceremonies, and open campus.
It is encouraging that there are many opportunities in my daily work for direct contact with students, faculty and staff who are facility users, and that I can receive direct feedback from them. In addition, I make different proposals about a wide variety of tasks based on ideas that come from my own experience. It feels very rewarding when these are accepted and they connect with definite results.
It is really motivating when people I work with and facility users say things "Thank you! Let's work together again" about tasks in which I did my best and came up with various ideas. It increases my confidence and becomes an important driving force.
Utilizing the qualification of registered real estate broker, when the university purchases or sells real estate, I mainly handle brokerage work of real estate sales such as negotiations with counterparties and preparation of contracts etc.
Dealing with real estate is very deep. It is not a repetition of the same routine; each time I face different problems and challenges. In each case the process of discussing and examining the solution within the division, which sometimes involves experts such as lawyers and architects, and drawing a conclusion while arguing is a really exciting and highly motivating.
Although my daily work is not directly related to school buildings and students, I am deeply involved in the process of the university acquiring land. Fine school buildings are built on the land and every time I see those highly convenient buildings being utilized by students and faculty staff, I feel a sense of accomplishment and joy.
In real estate transactions, I help to make general reviews of the initial stage, such as surveying the construction site and the kind of buildings that can be built. In addition, as lease management work of properties owned by the university, I also handle tenants' affairs such as collecting rents, utilities and water costs, and facility management.
For students, we have set an apartment search portal site. This is a special website that we run for Waseda University students, and it offers housing that can be rented even for less than a year.
In addition, we have launched a project team with technical employees as core members across divisions and are now promoting the expansion of building facility management work and also considering and implementing improvements in order to strengthen the system.
I studied economics at university and upon graduation I worked in a think-tank. In the process of changing my job, I became interested in architecture. While working hard at a design office, I got the qualification of class-1 architect.
When I worked at a design office I was exclusively engaged in construction work to respond to customer's requests but after joining this company I have been required to support from an architectural perspective while paying attention to the overall frame of real estate.
Real estate spans a wide variety of fields such as leasing, trading, development, management, law, financial economy and so on. I feel proud that I am responsible for working to enhance the possibilities of projects by comprehensively looking what can be done from a construction side and its impact.
The apartment search portal site dedicated to Waseda students was launched in February 2018 and students use it much more than I had imagined. As the goal was to help students with short-term rental contracts that are usually difficult to make, I feel a sense of accomplishment because I'm glad if this service helped them in some way.
I am in charge of the administration and management of student apartments, student dormitories and international student dormitories used by Waseda students.
Specifically, I carry out maintenance of buildings and facilities, collect rent, and deal with troubles occurring inside dormitories.
We offer a comfortable living environment to all students coming from across Japan and various countries and regions of the world with a common goal of learning at Waseda University. Our support enables students to lead a safe daily life, and we are proud to contribute to building a foundation that helps them concentrate on studies and research.
Looking at the international students dormitory, when students who grew up in various countries and regions are brought together and share joy, sorrow, and smiles, it makes me realize once again that even if cultures and languages are different, people are all essentially the same, and that is refreshing.
Also, when students who returned to their home countries after completing their study visit Japan later, and they recall the enjoyable dormitory life at Waseda and visit us in our office, it makes me feel unexpectedly nostalgic. I feel very luck to be the person in charge.
Utilizing the qualification of registered real estate broker, I am mainly in charge of rental properties' mediation for undergraduate and graduate students, faculty, and staff of Waseda University.
Most of our customers are local students who just came to Tokyo from regional towns and cities or international students who just arrived in Japan following the admission period. People feel anxiety when they come and live in Japan for the first time, and finding a room is no easy task, so we concentrate on doing our best to support them from beginning to end.
Thankfully, there are many customers who visit us as repeaters after 1 or 2 years since the first contract, sometimes even after graduating from university. It is very rewarding to realize that my work was trusted and that I gained trust from customers.
It is touching when, in the process of being involved with helping students search for a place to live, the trust relation continues beyond their graduation. Sometimes after they got an official job offer or when they graduate from university they kindly come to thank us for our work.
In this way we build good human relations that go beyond being just customers, and I feel grateful and happy that these relations continue for a long time.
Special thanks to Manga Kenkyukai (Manga Research Association) of Waseda University for drawing portraits of our employees.


For those of you that need a bit of help picking out finishes, paint, accessories, or furniture, let me help you!
Some of you may not know that I offer design services online.
Send me a picture of your room, and we can find solutions for your space to make it beautiful!
Please email me for pricing and more information.
I am happy to work with any budget, big or small, give my professional advice on furniture placement, scale, and artwork.
I will also send you links to all the products in one email for easy reference.


In your letter dated September 22, 2006, you requested a classification ruling on behalf of Regatta (U.S.A.) L.L.C.
Due to the fact that the garment is to be constructed of a 50/50 blend of fibers, it is classified using HTSUS Section XI Note 2(A) and Subheading Note 2(A). The garment will be classified as if it consisted wholly of that one textile material which is covered by the heading that occurs last in numerical order among those, which equally merit consideration. Even a slight change in the fiber content may result in a change of classification, as well as visa and quota requirements. The garment may be subject to Customs laboratory analysis at the time of importation, and if the fabric is other than a 50/50 blend it may be reclassified by Customs at that time.