text:
package org.apache.hyracks.tests.am.rtree;

import java.io.DataOutput;
import java.io.File;

import org.apache.hyracks.api.constraints.PartitionConstraintHelper;
import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
import org.apache.hyracks.api.dataflow.value.ITypeTraits;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.api.io.FileSplit;
import org.apache.hyracks.api.io.ManagedFileSplit;
import org.apache.hyracks.api.job.JobSpecification;
import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
import org.apache.hyracks.data.std.primitive.DoublePointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
import org.apache.hyracks.dataflow.common.data.marshalling.DoubleSerializerDeserializer;
import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
import org.apache.hyracks.dataflow.common.data.parsers.DoubleParserFactory;
import org.apache.hyracks.dataflow.common.data.parsers.IValueParserFactory;
import org.apache.hyracks.dataflow.common.data.parsers.UTF8StringParserFactory;
import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor;
import org.apache.hyracks.dataflow.std.file.ConstantFileSplitProvider;
import org.apache.hyracks.dataflow.std.file.DelimitedDataTupleParserFactory;
import org.apache.hyracks.dataflow.std.file.FileScanOperatorDescriptor;
import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
import org.apache.hyracks.dataflow.std.misc.ConstantTupleSourceOperatorDescriptor;
import org.apache.hyracks.dataflow.std.misc.NullSinkOperatorDescriptor;
import org.apache.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor;
import org.apache.hyracks.storage.am.btree.dataflow.BTreeResourceFactory;
import org.apache.hyracks.storage.am.btree.dataflow.BTreeSearchOperatorDescriptor;
import org.apache.hyracks.storage.am.common.api.IIndexBuilderFactory;
import org.apache.hyracks.storage.am.common.api.IPageManagerFactory;
import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory;
import org.apache.hyracks.storage.am.common.build.IndexBuilderFactory;
import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory;
import org.apache.hyracks.storage.am.common.dataflow.IndexCreateOperatorDescriptor;
import org.apache.hyracks.storage.am.common.dataflow.IndexDropOperatorDescriptor;
import org.apache.hyracks.storage.am.common.dataflow.IndexDataflowHelperFactory;
import org.apache.hyracks.storage.am.common.dataflow.TreeIndexBulkLoadOperatorDescriptor;
import org.apache.hyracks.storage.am.common.dataflow.TreeIndexInsertUpdateDeleteOperatorDescriptor;
import org.apache.hyracks.storage.am.common.freepage.AppendOnlyLinkedMetadataPageManagerFactory;
import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallbackFactory;
import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
import org.apache.hyracks.storage.am.lsm.rtree.utils.LSMRTreeUtils;
import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType;
import org.apache.hyracks.storage.am.rtree.util.RTreeUtils;
import org.apache.hyracks.storage.common.IResourceFactory;
import org.apache.hyracks.storage.common.IStorageManager;
import org.apache.hyracks.test.support.TestStorageManager;
import org.apache.hyracks.test.support.TestStorageManagerComponentHolder;
import org.apache.hyracks.tests.am.common.ITreeIndexOperatorTestHelper;
import org.apache.hyracks.tests.integration.AbstractIntegrationTest;
import org.junit.After;
import org.junit.Before;

public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest {
    static {
        TestStorageManagerComponentHolder.init(8192, 20, 20);
    }

    protected enum RTreeType {
        LSMRTREE,
        LSMRTREE_WITH_ANTIMATTER,
        RTREE
    }

    protected RTreeType rTreeType;

    protected final IStorageManager storageManager = new TestStorageManager();
    protected final IPageManagerFactory pageManagerFactory = AppendOnlyLinkedMetadataPageManagerFactory.INSTANCE;
    protected IResourceFactory rtreeFactory;
    protected IResourceFactory btreeFactory;

    // field, type and key declarations for primary index
    protected final int primaryFieldCount = 10;
    protected final ITypeTraits[] primaryTypeTraits = new ITypeTraits[primaryFieldCount];
    protected final int primaryKeyFieldCount = 1;
    protected final IBinaryComparatorFactory[] primaryComparatorFactories =
            new IBinaryComparatorFactory[primaryKeyFieldCount];

    protected final RecordDescriptor primaryRecDesc = new RecordDescriptor(new ISerializerDeserializer[] {
            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
            DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
            DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE });

    // to be set by subclasses
    protected String primaryFileName;
    protected IFileSplitProvider primarySplitProvider;
    protected IIndexDataflowHelperFactory primaryHelperFactory;

    // field, type and key declarations for secondary indexes
    protected final int secondaryFieldCount = 5;
    protected final ITypeTraits[] secondaryTypeTraits = new ITypeTraits[secondaryFieldCount];
    protected final int secondaryKeyFieldCount = 4;
    protected final IBinaryComparatorFactory[] secondaryComparatorFactories =
            new IBinaryComparatorFactory[secondaryKeyFieldCount];

    protected final RecordDescriptor secondaryRecDesc =
            new RecordDescriptor(new ISerializerDeserializer[] { DoubleSerializerDeserializer.INSTANCE,
                    DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
                    DoubleSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() });

    protected final RecordDescriptor secondaryWithFilterRecDesc =
            new RecordDescriptor(new ISerializerDeserializer[] { DoubleSerializerDeserializer.INSTANCE,
                    DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
                    DoubleSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(),
                    new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });

    // This is only used for the LSMRTree. We need a comparator Factories for
    // the BTree component of the LSMRTree.
    protected int btreeKeyFieldCount = 5;
    protected IBinaryComparatorFactory[] btreeComparatorFactories = new IBinaryComparatorFactory[btreeKeyFieldCount];

    protected String secondaryFileName;
    protected IFileSplitProvider secondarySplitProvider;
    protected IIndexDataflowHelperFactory secondaryHelperFactory;

    protected ITreeIndexOperatorTestHelper testHelper;

    protected ITreeIndexOperatorTestHelper createTestHelper() throws HyracksDataException {
        return new RTreeOperatorTestHelper();
    }

    @Before
    public void setup() throws Exception {
        testHelper = createTestHelper();

        primaryFileName = testHelper.getPrimaryIndexName();
        primarySplitProvider =
                new ConstantFileSplitProvider(new FileSplit[] { new ManagedFileSplit(NC1_ID, primaryFileName) });
        primaryHelperFactory = new IndexDataflowHelperFactory(storageManager, primarySplitProvider);
        secondaryFileName = testHelper.getSecondaryIndexName();
        secondarySplitProvider =
                new ConstantFileSplitProvider(new FileSplit[] { new ManagedFileSplit(NC1_ID, secondaryFileName) });
        secondaryHelperFactory = new IndexDataflowHelperFactory(storageManager, secondarySplitProvider);

        // field, type and key declarations for primary index
        primaryTypeTraits[0] = UTF8StringPointable.TYPE_TRAITS;
        primaryTypeTraits[1] = UTF8StringPointable.TYPE_TRAITS;
        primaryTypeTraits[2] = UTF8StringPointable.TYPE_TRAITS;
        primaryTypeTraits[3] = UTF8StringPointable.TYPE_TRAITS;
        primaryTypeTraits[4] = UTF8StringPointable.TYPE_TRAITS;
        primaryTypeTraits[5] = UTF8StringPointable.TYPE_TRAITS;
        primaryTypeTraits[6] = UTF8StringPointable.TYPE_TRAITS;
        primaryTypeTraits[7] = UTF8StringPointable.TYPE_TRAITS;
        primaryTypeTraits[8] = UTF8StringPointable.TYPE_TRAITS;
        primaryTypeTraits[9] = UTF8StringPointable.TYPE_TRAITS;
        primaryComparatorFactories[0] = PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY);

        // field, type and key declarations for secondary indexes
        secondaryTypeTraits[0] = DoublePointable.TYPE_TRAITS;
        secondaryTypeTraits[1] = DoublePointable.TYPE_TRAITS;
        secondaryTypeTraits[2] = DoublePointable.TYPE_TRAITS;
        secondaryTypeTraits[3] = DoublePointable.TYPE_TRAITS;
        secondaryTypeTraits[4] = UTF8StringPointable.TYPE_TRAITS;
        secondaryComparatorFactories[0] = PointableBinaryComparatorFactory.of(DoublePointable.FACTORY);
        secondaryComparatorFactories[1] = PointableBinaryComparatorFactory.of(DoublePointable.FACTORY);
        secondaryComparatorFactories[2] = PointableBinaryComparatorFactory.of(DoublePointable.FACTORY);
        secondaryComparatorFactories[3] = PointableBinaryComparatorFactory.of(DoublePointable.FACTORY);

        // This only used for LSMRTree
        int[] rtreeFields = null;
        int[] filterFields = null;
        ITypeTraits[] filterTypes = null;
        IBinaryComparatorFactory[] filterCmpFactories = null;
        if (rTreeType == RTreeType.LSMRTREE || rTreeType == RTreeType.LSMRTREE_WITH_ANTIMATTER) {
            rtreeFields = new int[] { 0, 1, 2, 3, 4 };
            filterFields = new int[] { 4 };
            filterTypes = new ITypeTraits[] { UTF8StringPointable.TYPE_TRAITS };
            filterCmpFactories =
                    new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) };
        }

        int[] btreeFields = null;
        if (rTreeType == RTreeType.LSMRTREE) {
            btreeKeyFieldCount = 1;
            btreeComparatorFactories = new IBinaryComparatorFactory[btreeKeyFieldCount];
            btreeComparatorFactories[0] = PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY);
            btreeFields = new int[] { 4 };
        } else {
            btreeComparatorFactories[0] = PointableBinaryComparatorFactory.of(DoublePointable.FACTORY);
            btreeComparatorFactories[1] = PointableBinaryComparatorFactory.of(DoublePointable.FACTORY);
            btreeComparatorFactories[2] = PointableBinaryComparatorFactory.of(DoublePointable.FACTORY);
            btreeComparatorFactories[3] = PointableBinaryComparatorFactory.of(DoublePointable.FACTORY);
            btreeComparatorFactories[4] = PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY);
        }

        IPrimitiveValueProviderFactory[] secondaryValueProviderFactories = RTreeUtils
                .createPrimitiveValueProviderFactories(secondaryComparatorFactories.length, DoublePointable.FACTORY);

        rtreeFactory = createSecondaryResourceFactory(secondaryValueProviderFactories, RTreePolicyType.RSTARTREE,
                btreeComparatorFactories,
                LSMRTreeUtils.proposeBestLinearizer(secondaryTypeTraits, secondaryComparatorFactories.length),
                btreeFields);

    }

    protected abstract IResourceFactory createSecondaryResourceFactory(
            IPrimitiveValueProviderFactory[] secondaryValueProviderFactories, RTreePolicyType rtreePolicyType,
            IBinaryComparatorFactory[] btreeComparatorFactories, ILinearizeComparatorFactory linearizerCmpFactory,
            int[] btreeFields);

    protected void createPrimaryIndex() throws Exception {
        JobSpecification spec = new JobSpecification();
        btreeFactory = new BTreeResourceFactory(storageManager, primaryTypeTraits, primaryComparatorFactories,
                pageManagerFactory);
        IIndexBuilderFactory indexBuilderFactory =
                new IndexBuilderFactory(storageManager, primarySplitProvider, btreeFactory, false);
        IndexCreateOperatorDescriptor primaryCreateOp = new IndexCreateOperatorDescriptor(spec, indexBuilderFactory);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primaryCreateOp, NC1_ID);
        spec.addRoot(primaryCreateOp);
        runTest(spec);
    }

    protected void loadPrimaryIndex() throws Exception {
        JobSpecification spec = new JobSpecification();

        FileSplit[] ordersSplits = new FileSplit[] {
                new ManagedFileSplit(NC1_ID, "data" + File.separator + "orders-with-locations-part1.txt") };
        IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
        RecordDescriptor ordersDesc =
                new RecordDescriptor(new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(),
                        new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                        new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                        new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                        new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                        DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
                        DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE });

        FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitProvider,
                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
                        DoubleParserFactory.INSTANCE, DoubleParserFactory.INSTANCE, DoubleParserFactory.INSTANCE,
                        DoubleParserFactory.INSTANCE }, '|'),
                ordersDesc);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ordScanner, NC1_ID);

        ExternalSortOperatorDescriptor sorter = new ExternalSortOperatorDescriptor(spec, 1000, new int[] { 0 },
                new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                ordersDesc);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, sorter, NC1_ID);

        int[] fieldPermutation = { 0, 1, 2, 4, 5, 7, 9, 10, 11, 12 };
        TreeIndexBulkLoadOperatorDescriptor primaryBulkLoad = new TreeIndexBulkLoadOperatorDescriptor(spec,
                primaryRecDesc, fieldPermutation, 0.7f, false, 1000L, true, primaryHelperFactory);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primaryBulkLoad, NC1_ID);

        NullSinkOperatorDescriptor nsOpDesc = new NullSinkOperatorDescriptor(spec);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, nsOpDesc, NC1_ID);

        spec.connect(new OneToOneConnectorDescriptor(spec), ordScanner, 0, sorter, 0);

        spec.connect(new OneToOneConnectorDescriptor(spec), sorter, 0, primaryBulkLoad, 0);

        spec.connect(new OneToOneConnectorDescriptor(spec), primaryBulkLoad, 0, nsOpDesc, 0);

        spec.addRoot(nsOpDesc);
        runTest(spec);
    }

    protected void createSecondaryIndex() throws Exception {
        JobSpecification spec = new JobSpecification();
        IndexBuilderFactory indexBuilderFactory =
                new IndexBuilderFactory(storageManager, secondarySplitProvider, rtreeFactory, false);
        IndexCreateOperatorDescriptor secondaryCreateOp = new IndexCreateOperatorDescriptor(spec, indexBuilderFactory);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondaryCreateOp, NC1_ID);
        spec.addRoot(secondaryCreateOp);
        runTest(spec);
    }

    protected void loadSecondaryIndex() throws Exception {
        JobSpecification spec = new JobSpecification();

        // build dummy tuple containing nothing
        ArrayTupleBuilder tb = new ArrayTupleBuilder(primaryKeyFieldCount * 2);
        DataOutput dos = tb.getDataOutput();

        tb.reset();
        new UTF8StringSerializerDeserializer().serialize("0", dos);
        tb.addFieldEndOffset();

        ISerializerDeserializer[] keyRecDescSers =
                { new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() };
        RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers);

        ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec,
                keyRecDesc, tb.getFieldEndOffsets(), tb.getByteArray(), tb.getSize());
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, keyProviderOp, NC1_ID);

        int[] lowKeyFields = null; // - infinity
        int[] highKeyFields = null; // + infinity

        // scan primary index
        BTreeSearchOperatorDescriptor primarySearchOp = new BTreeSearchOperatorDescriptor(spec, primaryRecDesc,
                lowKeyFields, highKeyFields, true, true, primaryHelperFactory, false, false, null,
                NoOpOperationCallbackFactory.INSTANCE, null, null, false);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primarySearchOp, NC1_ID);

        // load secondary index
        int[] fieldPermutation = { 6, 7, 8, 9, 0 };
        TreeIndexBulkLoadOperatorDescriptor secondaryBulkLoad = new TreeIndexBulkLoadOperatorDescriptor(spec,
                secondaryRecDesc, fieldPermutation, 0.7f, false, 1000L, true, secondaryHelperFactory);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondaryBulkLoad, NC1_ID);

        NullSinkOperatorDescriptor nsOpDesc = new NullSinkOperatorDescriptor(spec);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, nsOpDesc, NC1_ID);

        spec.connect(new OneToOneConnectorDescriptor(spec), keyProviderOp, 0, primarySearchOp, 0);
        spec.connect(new OneToOneConnectorDescriptor(spec), primarySearchOp, 0, secondaryBulkLoad, 0);
        spec.connect(new OneToOneConnectorDescriptor(spec), secondaryBulkLoad, 0, nsOpDesc, 0);

        spec.addRoot(nsOpDesc);
        runTest(spec);
    }

    protected void insertPipeline() throws Exception {

        JobSpecification spec = new JobSpecification();

        FileSplit[] ordersSplits = new FileSplit[] {
                new ManagedFileSplit(NC1_ID, "data" + File.separator + "orders-with-locations-part2.txt") };
        IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
        RecordDescriptor ordersDesc =
                new RecordDescriptor(new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(),
                        new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                        new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                        new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                        new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                        DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
                        DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE });

        FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitProvider,
                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
                        DoubleParserFactory.INSTANCE, DoubleParserFactory.INSTANCE, DoubleParserFactory.INSTANCE,
                        DoubleParserFactory.INSTANCE }, '|'),
                ordersDesc);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ordScanner, NC1_ID);

        // insert into primary index
        int[] primaryFieldPermutation = { 0, 1, 2, 4, 5, 7, 9, 10, 11, 12 };
        TreeIndexInsertUpdateDeleteOperatorDescriptor primaryInsertOp =
                new TreeIndexInsertUpdateDeleteOperatorDescriptor(spec, ordersDesc, primaryFieldPermutation,
                        IndexOperation.INSERT, primaryHelperFactory, null, NoOpOperationCallbackFactory.INSTANCE);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primaryInsertOp, NC1_ID);

        // secondary index
        int[] secondaryFieldPermutation = { 9, 10, 11, 12, 0 };
        TreeIndexInsertUpdateDeleteOperatorDescriptor secondaryInsertOp =
                new TreeIndexInsertUpdateDeleteOperatorDescriptor(spec, ordersDesc, secondaryFieldPermutation,
                        IndexOperation.INSERT, secondaryHelperFactory, null, NoOpOperationCallbackFactory.INSTANCE);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondaryInsertOp, NC1_ID);

        NullSinkOperatorDescriptor nullSink = new NullSinkOperatorDescriptor(spec);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, nullSink, NC1_ID);

        spec.connect(new OneToOneConnectorDescriptor(spec), ordScanner, 0, primaryInsertOp, 0);

        spec.connect(new OneToOneConnectorDescriptor(spec), primaryInsertOp, 0, secondaryInsertOp, 0);

        spec.connect(new OneToOneConnectorDescriptor(spec), secondaryInsertOp, 0, nullSink, 0);

        spec.addRoot(nullSink);
        runTest(spec);
    }

    protected void destroyPrimaryIndex() throws Exception {
        JobSpecification spec = new JobSpecification();
        IndexDropOperatorDescriptor primaryDropOp = new IndexDropOperatorDescriptor(spec, primaryHelperFactory);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primaryDropOp, NC1_ID);
        spec.addRoot(primaryDropOp);
        runTest(spec);
    }

    protected void destroySecondaryIndex() throws Exception {
        JobSpecification spec = new JobSpecification();
        IndexDropOperatorDescriptor secondaryDropOp = new IndexDropOperatorDescriptor(spec, secondaryHelperFactory);
        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondaryDropOp, NC1_ID);
        spec.addRoot(secondaryDropOp);
        runTest(spec);
    }

    @After
    public abstract void cleanup() throws Exception;
}

redpajama_set_name: RedPajamaGithub


As I announced on The Firearm Blog, SilencerCo last week released the first "commercially viable" shotgun suppressor called the "Salvo 12." I got a chance to shoot it a bunch and it is amazing. The video below is a demo of me unloading 9 rounds from a Benelli M2 shotgun without ear protection. It's gone viral, so check it out!


text:
Palestinians, U.S. politics
It's Time To Decide How We Treat The Palestinian Authority
Date: December 19, 2019Author: ottomansandzionists 0 Comments
The omnibus spending bill that Congress is expected to pass this week contains something for which many experts and government staffers have been clamoring for over a year; namely a fix to the Anti-Terrorism Clarification Act. ATCA, which passed by unanimous consent in October 2018, subjected the Palestine Liberation Organization and the Palestinian Authority to personal jurisdiction in U.S. federal courts – opening them both up to bankruptcy arising out of past terrorism suits from the Second Intifada – if the Palestinians accepted any funds from the U.S. government.
While the Trump administration had by that point cut nearly all funding going to the West Bank and Gaza, from the East Jerusalem hospital network to UNRWA, the one bucket it had not yet touched was the security assistance for the Palestinian Authority Security Forces, not wanting to do anything that would negatively impact Israeli-Palestinian security coordination. Once the Palestinians understood that continuing to accept security assistance would automatically subject them to personal jurisdiction, they rejected the U.S. aid money, and nearly everyone working on the Israeli-Palestinian conflict on both sides of the aisle has been trying to get the legislation amended since.
The fix in this week's spending bill amends ATCA by delinking personal jurisdiction for the PLO and PA from accepting any funds from the U.S., and the bill actually earmarks $75 million in security assistance and $75 million in economic assistance to the Palestinians for the first time. But the bill preserves the personal jurisdiction hook by activating it if the PLO or PA make any payments to prisoners or family members of terrorists who killed or injured an American citizen, if the PLO or PA open or maintain any offices in the U.S. excluding the UN mission, or if any PLO or PA official conducts any organizational business while in the U.S. aside from meeting with American or foreign government officials.
What this means in practice is that funding to the Palestinians can now resume without them being forced to choose between accepting the money or opening themselves up to potential bankruptcy, but the U.S. is now treating the Palestinian Authority even more so than before as a functional terrorist organization. If the next president wants to reopen the PLO mission to Washington, which President Trump shuttered this year, it will require an act of Congress to override this new ATCA provision. If a PA official is invited to speak at a conference in DC or at a think tank meeting – both of which are routine occurrences – he or she must reject the invitation so as not to establish personal jurisdiction for the PA in federal courts. The PA is effectively unable to operate in the U.S. any longer outside of a very narrow band of engaging with the U.S. government.
The ATCA fix is in some ways a great example of targeted and pragmatic compromise to address a thorny policy conundrum. It was meant to address the very specific problem of allowing security assistance to the PA and economic assistance to the West Bank and Gaza that is critical to Israeli and American interests to continue flowing while preserving the possibility of justice and compensation for American families of victims of terror. Because the clause dealing with Palestinian payments to perpetrators of terror against American citizens will almost certainly be activated, personal jurisdiction will be established and it will pressure the PLO and PA to settle with the victims' families. At the same time, removing U.S. assistance from the equation entirely means that the PA no longer has to make the self-defeating choice to cut off its security forces from the benefit of American funding and training. Furthermore, by earmarking money for Palestinian economic assistance, the U.S. is doing something to improve the welfare of ordinary Palestinians, who have been caught in the crossfire of the scorched earth battle being waged between the Trump administration and the PA. In addition, by tying jurisdiction to the martyr and prisoner payments, perhaps the ATCA fix will finally be the vehicle that convinces the PA to reform its abhorrent payment system, transforming it into an actual social security and social welfare fund based solely on need rather than on the level of violence committed against Israelis.
With all that said, the ATCA fix also takes a step forward in advancing the bizarre cognitive dissonance that reigns in Washington regarding the Palestinians. On the one hand, the U.S. continues to treat the PA as an important and credible diplomatic entity, including in this administration where Trump hosted Mahmoud Abbas at the White House and worked in vain to get PA buy-in for his ill-fated peace plan, while other administration officials from Jared Kushner to Jason Greenblatt routinely engaged with PA counterparts and even touted their successful brokering of Israel-PA cooperation. PA security assistance is viewed as so essential that the Trump White House lobbied Congress on revising ATCA almost as soon as the president signed it into law and people suddenly realized the implications, and Republican and Democratic offices in both chambers of Congress have been promoting their own fixes for months in order to enable resumed funding. Nearly everyone still treats the PA as the entity through which an Israeli-Palestinian peace deal must flow, and the PA is spoken about with a legitimacy befitting the fact that it was literally signed into creation on the White House lawn in 1993.
On the other hand, this latest legislation acts as if the PA is an unrepentant terrorist group that is blowing up buses, abducting Israeli soldiers, and working full time to liberate Palestine from the river to the sea. Seeking justice for victims of past Palestinian terror is not only appropriate but admirable, as is sending a message to the Palestinian government that even if it is no longer organizing and carrying out terrorist attacks, it is creating an incentive structure for ordinary Palestinians to do so. But treating every PA action in the U.S. as if it is being conducted by Hizballah is something else entirely. If we view the PA as a deeply problematic but legitimate organization, which is the thrust of American engagement with the PA in so many ways, it makes little sense to prevent a future president from ensuring that the Palestinians have diplomatic representation in Washington. It makes little sense to treat PA officials as nothing more than terrorist financiers and propagandists who cannot engage with American policy experts or non-governmental leaders. It sends the message that our interest in the Palestinians extends no farther than whether their representatives will agree to an American-brokered deal with Israel, and if they aren't here for limited meetings with the U.S. government, then their purpose is inherently illegitimate.
This is at odds with how we have viewed the Palestinian people and their representatives for decades, and it will not bring an Israeli-Palestinian deal closer or preserve American influence in the process. It may also backfire in a tangible way by incentivizing the next Democratic president to unilaterally recognize an independent state of Palestine, which is the easiest way to bypass the new restrictions on Palestinian diplomatic activity in the ATCA fix as it would erase the PLO and the PA as entities and courts would have to decide whether the legislation would no longer apply to a fully formed Palestinian government. Recognizing an independent Palestine won't make the Palestinians' legal problems go away, as even if ATCA no longer applies, the Justice Against Sponsors of Terrorism Act allows civil suits against foreign governments for acts of terrorism. But it will provide a mechanism for a future White House to reopen the Palestinian mission in DC and allow Palestinian officials to conduct routine diplomatic business in the U.S. without having to wade back into the Congressional morass. These are all things that Congress should consider in the future as it passes legislation that pertains to the Palestinians. The ATCA fix is important and was done in a way that is better than some of the alternatives that had been floated, but it leaves some large conceptual and practical problems in its wake.
Anti-Terrorism Clarification ActPalestine Liberation OrganizationPalestinian AuthorityPalestinian Authority Security Forcessecond intifadaterrorism
Previous Previous post: A Lesson For The Israeli Opposition
Next Next post: Three Questions for the Year Ahead

redpajama_set_name: RedPajamaCommonCrawl


After nearly pulling off a heist, bank robber James (Peter Kent) is captured and sent to prison. Ten years later, he's given a chance at early parole in exchange for leading a group of teenage criminals on a rafting trip. But as they make their way through the wild, James and the teens realize someone's out to kill them. The increasingly dire situation causes the kids to freak out, and they soon begin to rebel against their older leader.


Occasional research papers submitted by CALE visiting scholars, international students or other scholars at the Graduate School of Law, in the field of legal cooperation or on topics related to recent legal developments in Asian countries.
Copyright 2014 Center for Asian Legal Exchange. All Rights Reserved.


Diamond Nose Pin with 6pt Diamond (2.6mm).This nose pin is one such creation that impressively captures the elegance of a sleek and simple design.
The radiance exuded by this nose pin can be credited to the 2.6 mm diamond, featuring a round cut design, and its crisp finishing.
The beauty of this diamond nose pin is not limited to the dazzling diamond stone alone as the varying metal options that can be used to design it are extremely effective in accentuating its grace. 18ct rose gold, 18ct yellow gold, 14ct white gold and platinum are the metal options that can be used with this nose pin.
The fitting of a nose pin is an important attribute and we take utmost care to provide you with something that offers a seamless fitting. Once an order is placed, our expert goldsmiths will carefully pay attention to every specification and will handcraft your nose pin with precision so that it meets your requirement.
Our customisation service is not only limited to delivery as any alteration at the later stage will be duly honoured if the nose pin does not match your requirement. The use of fine-quality diamond with VS clarity and G/H colour makes it worthy enough to sit in your jewellery collection for years together.
Note: Prices of your diamond nose stud may vary according to the choice of metal.


In a bid to shine a light on the work of others, I'm hoping to start a new regular instalment on the blog: a summary of things I'm loving each week. Rather than posting at the end of the week, when I tend to write my Here's the thing posts, I'm going with a mid-week boost of wisdom and loveliness from people I respect.
Kyla Roma's free download of three common profitability mistakes we make in business. They are so on point, and you can get them here.
Gabrielle Treanor's Warm Embrace series – a wonderful way to enjoy more of January's genuine delights.
All the hand cream to protect against the cold weather.
An integrative healing session with the lovely Kristen Willis.
Fancy porridge for breakfast. I've been adding jam, dried fruit and nuts, and even chocolate chips. Yum!


text:
The Holy Family Way
COVID 2020-21
Curriculum Outline
Future Family Information
Our Parishes – Saint Agnes, St. Elizabeth Ann Seton, Nativity of Our Lord, and Quad Parishes
Faith Calendar
Faith Integration
Snapshot Report
Bus/Transportation Information
Important Parent Information
BASIC – Before and After School Individual Care
Boy Scouts/Cub Scouts
Food Service (Hot Lunch)
GRACE Technology
Weekly News from School
HFS Digital Announcements
Athletics Booster Club
In Touch with the Arts
HFCS Community Bulletin Board
GRACE Code of Conduct
Venues Directions
Comet Communique' Newsletter
Site Advisory Council
Third Source Funding
Magazine Sale
Alumni Form
Mission Statement and Key Messages
The Holy Family Catholic School community believes that the parents are the primary educators of their children, and as such, possess the right and duty to be aware of and understand the school's goals, policies and administration. Therefore, we shall work as a team to bring about open, cooperative and effective communication.
Holy Family Catholic School believes it is important to educate the total student with confidence, sincerity, passion, and fervor. To accomplish this, we provide a comprehensive and quality educational program which promotes the spiritual, intellectual, moral, physical, emotional and social growth of each individual student.
Holy Family Catholic School's programs and activities are selected to foster an understanding and appreciation of the Gospel message.
Holy Family Catholic School provides teachers who create an environment in which lifelong learning is evident. To accomplish this, we are proactive and improve our competence through staff development and collegial exchange of ideas.
Holy Family Catholic School provides a distinctive and advantageous environment for quality Catholic education. To maintain this environment, teachers follow diocesan and local Board guidelines concerning certification in the area of religious education.
Holy Family Catholic School is committed to develop within each student
A strong and enduring love for God.
A life of faith which is receptive, active, responsive and rooted in Christian values.
A sense of discipline, respect, cooperation, and trust between one's self, teachers, friends, and parents.
A love for learning and a desire to develop one's abilities and talents in a confident manner.
A level of excellence in learning according to one's capacities to ultimately become a self-directed learner.
A sense of commitment to and involvement in community through service and the practice of good citizenship.
Faith is Our Foundation
Holy Family Catholic School was founded in 1954 as St. Agnes School. Families valued Catholic education and more parishes supported the school, expanding the enrollment. St. Elizabeth Ann Seton Parish and St. Agnes Parish joined to support Holy Family School with strong Catholic tradition which continues today. The pastors from St. Agnes, St. Elizabeth Seton and the Quad Parishes rotate turns to lead Mass with the students. The students pray the rosary monthly at Students of Prayer. The students attend First Friday Adoration.
We Believe in Academic Excellence
Holy Family Catholic School is one of five Catholic Schools in the nation accredited as a Middle Years International Baccalaureate School. International Baccalaureate (IB) expects progress and achievement. Both teachers and students are accountable to the IB Criteria, which are continuously reviewed and standardized by IB evaluators worldwide to preserve academic integrity. Teachers utilize technology programs through STEM (science, technology, engineering, mathematics) curriculum in kindergarten through eighth grade. iDads is one of the community resource groups who support the technological advances to maximize the students' academic potential.
Your Family is Part of Our Family
The Holy Family Catholic School community represents an extension of every family. The students care about each other. Families are involved in numerous activities including social events, clubs and athletics. Holy Family School hosts multiple events throughout the school year including our Mentor Family Picnic, Muffins with Mom, Mother/Son Bowling, Father/Daughter Dance, and Donuts with Dad. Our athletic programs feature flag football, volleyball, soccer, track, cross country, basketball, and baseball.
CHOICE Accountability Report
1204 S. Fisk Street
©2020 Green Bay Area Catholic Education | All Rights Reserved | Site created by BRING Studios


YFC - Fredericton Airport (YFC) 7.8 miles from Fredericton, NB.
YSJ - Saint John Airport (YSJ) 57 miles from Fredericton, NB.
There are 2 airports in Fredericton. Fredericton Airport (YFC) is Fredericton's primary airport with at least domestic flights and international flights departing from its runways every week. As of today, airlines operate out of Fredericton Airport (YFC). Fredericton Airport (YFC) is 7.8 miles from Fredericton and offers nonstop flights to cities. Fredericton's secondary airport Saint John Airport (YSJ) is 57 miles from Fredericton and has airlines operating out of it and offers nonstop flights to cities with at least domestic flights and international flights departing each week.


text:
Q: Unable to incorporate Eclispe JDT codeAssist facilities outside a Plug-in Using Eclipse jdt facilities, you can traverse the AST of java code snippets as follows:
ASTParser ASTparser = ASTParser.newParser(AST.JLS3);
ASTparser.setSource("package x;class X{}".toCharArray());
ASTparser.createAST(null).accept(...);

But when trying to perform code complete & code selection it seems that I have to do it in a plug-in application since I have to write codes like
IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(somePath));
ICodeAssist i  = JavaCore.createCompilationUnitFrom(f);
i.codeComplete/codeSelect(...)

Is there anyway that I can finally get a stand-alone java application which incorporates the jdt code complete/select facilities?
thx a lot!
shi kui

I have noticed it that using org.eclipse.jdt.internal.codeassist.complete.CompletionParser
I can parse a code snippet as well.
CompletionParser parser =new CompletionParser(new ProblemReporter(
        DefaultErrorHandlingPolicies.proceedWithAllProblems(),
        new CompilerOptions(null),
        new DefaultProblemFactory(Locale.getDefault())),
        false);
org.eclipse.jdt.internal.compiler.batch.CompilationUnit sourceUnit =
new org.eclipse.jdt.internal.compiler.batch.CompilationUnit(
    "class T{f(){new T().=1;}  \nint j;}".toCharArray(), "testName", null);
CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 0);
CompilationUnitDeclaration unit = parser.dietParse(sourceUnit, compilationResult, 25);

But I have 2 questions:
 1. How to retrive the assist information?
 2. How can I specify  class path or source path for the compiler to look up type/method/field information?

A: I don't think so, unless you provide your own implementation of ICodeAssist.
As the Performing code assist on Java code mentions,  Elements that allow this manipulation should implement ICodeAssist.

There are two kinds of manipulation:

*

*Code completion - compute the completion of a Java token.

*Code selection - answer the Java element indicated by the selected text of a given offset and length.

  In the Java model there are two elements that implement this interface: IClassFile and ICompilationUnit.
  Code completion and code selection only answer results for a class file if it has attached source.

You could try opening a File outside of any workspace (like this FAQ), but the result wouldn't implement ICodeAssist.
So the IFile most of the time comes from a workspace location.

redpajama_set_name: RedPajamaStackExchange


text:
Frank Ocean's GQ Interview -- 6 things we learned
By Josh Stillman
Image credit: Peggy Sirota / GQ[/caption]
2012's been a busy year for Frank Ocean. The R&B singer released Channel Orange, a game-changing record that debuted at #2 on the Billboard 200. He played high-profile gigs at the MTV Video Music Awards and Saturday Night Live. He opened up about a failed romance with a man on his Tumblr.
Now the Odd Future affiliate, who was born Lonny Breaux, has spoken to GQ about his humble upbringing in New Orleans, his rapid ascent to stardom, and the post that could have potentially derailed his career. Here's what we learned:
1. The dominant male figure in his youth was his maternal grandfather, a former drug addict.
Ocean's father abandoned him and his mother when he was six, leaving a void that was ultimately filled by his flawed but resolute granddad. "He'd had a really troubled life with crack, heroin, and alcohol and had kids he wasn't an ideal parent to. I was his second chance, and he gave it his best shot."
2. Like most people starting out as songwriters in L.A., he had to grind it out with odd jobs.
"The first four and a half years was me in the studio every day, writing songs for other people. I had jobs, too — eleven jobs. I worked at Kinko's, Fatburger, Subway–I was a sandwich artist–and I was a claims processor at Allstate Insurance."
3. He was signed to Def Jam twice…as different two "artists."
Def Jam originally signed him in 2009, when he still went by Lonny Breaux, but didn't give him any money for recording. Later, after he changed his name to Christopher Francis Ocean and self-released the internet smash Nostalgia, Ultra, Def Jam approached him again with a new offer. His response: "I just told them, 'Give me $1 million if you want the next album.'"
4. As far as he's concerned, legends like Hendrix, Prince, and Freddie Mercury are his peers.
"I never think about myself as an artist working in this time. I think about it in macro…A friend of mine jokes that I have a painstaking royalty complex. Like maybe I was a duke in a past life."
5. His infamous Tumblr post, in which he revealed an affair with a man, was as much a personal release as a response to rumors.
Journalists and listeners had begun to take note of the male pronouns in some of his lyrics, and rumors were swirling. So shortly before Channel Orange's release, Ocean addressed them head on and posted the now-famous open letter. But it wasn't purely reactionary – he had written the piece months before for inclusion in the record's liner notes. Putting it online for the world to see, he says, lifted a tremendous burden. "The night I posted it, I cried like a f—ing baby. It was like all the frequency just clicked to a change in my head. All the receptors were now receiving a different signal, and I was happy."
6. He is very, very proud of Channel Orange.
Ocean doesn't mince words when it comes to his landmark achievement, calling it "one of the most brilliant pieces of art that has come out in my generation." Truth be told, most critics are inclined to agree.
OMFOGG! 'Gossip Girl' plans Frank Ocean-only soundtrack
Indie rock supergroup Divine Fits cover Frank Ocean — Watch it here
Rihanna poses (mostly) nude for 'GQ'
Frank Ocean says he'll bring John Mayer to SNL
Dexter Fletcher almost gave Rami Malek's Freddie Mercury a cameo in Rocketman
The NeverEnding Story theme singer Limahl celebrates newfound interest thanks to 'Stranger Things'
How Rocketman's ambition exceeds Bohemian Rhapsody's sanitized view of rock history
5 things we learned from GQ's Snoop Lion profile
Stranger Things 3 cautiously divides the critics on EW's Best of Shows podcast
Paul McCartney to write musical adaptation of It's a Wonderful Life
Bad Bunny, iLe, and Residente release protest song against Puerto Rico governor
Iggy Azalea is finally at peace on In My Defense, whether you like it or not
Netflix will finally allow Americans to watch the 2019 Eurovision Song Contest
6 movies that desperately need a Cher cover album
Jimmy Kimmel translates Cardi B, Offest lyrics for old people
The NeverEnding Story moment in Stranger Things 3 almost didn't happen
Jimmy Fallon, Stephen Colbert recreate NeverEnding Story moment from Stranger Things
Everything we know about Lil Nas X's upcoming EP, '7'
Sesame Street, Sally Field, and Earth, Wind & Fire among 2019 Kennedy Center Honorees
6 things we learned from the heartbreaking Whitney Houston movie
Frank Ocean's C-Span interview: First interview in 3 years
Lil Nas X accidentally blocks BBC cameras while bolting after interview


text:
New Amiibos Announced for September; 8-bit Mario and Animal Crossing Amiibos Leaked
News 3DS Platformer Simulation Wii U Nintendo
Travis Bruno June 15, 2015 No Comments
Earlier today Nintendo announced a new set of Amiibos that will be hitting stores in September. The first set of Amiibos happen to be three different Mii Fighters, one for each class, while the second set features mostly classic Nintendo icons.
These Amiibos happen to be R.O.B., Duck Hunt, Mr. Game & Watch (who will have changeable silhouettes), and the odd bird out Falco. It is worth noting that at the time of the announcement, Masahiro Sakurai did say that every Super Smash Bros. fighter will be given their own Amiibo, including Roy, Ryu, Lucas, and Mewtwo.
That wasn't all the news Nintendo had for Amiibo lovers though. Shortly after the announcement of the aforementioned Amiibos, Nintendo of Europe's Spanish section made the mistake of leaking an image that contained a number of un-announced figures. This includes an 8-bit Mario, Animal Crossing figures, and Animal Crossing cards.
Of course since this was simply a leaked image, no details about these figurines and the games they will be used for were revealed, though the 8-bit Mario is likely for Mario Maker while we will have to wait and see regarding the Animal Crossing ones.
Nintendo Selects titles will be different for each region
Mario Party 10 & Super Mario Amiibo Out Now


text:
Qualifying rained out
RICHMOND, Va. — A severe thunderstorm rolled through Richmond International Raceway on Friday afternoon, forcing NASCAR to call off qualifying for the Toyota Owners 400.
Qualifying for tonight's 400-lap Sprint Cup Series race was scheduled for 5:10 p.m. The Nationwide Series had just wrapped up qualifying for its 250-lap event on Friday night before heavy rain fell on this three-quarter-mile racetrack.
Rookie Kyle Larson earned the pole for the Sprint Cup race since he had the fastest lap overall in the practice sessions held earlier in the day. Teams practiced for two hours during the morning and then one hour in the early afternoon. Larson's best lap was clocked at 126.880 mph during the morning session.
"It's nice starting off from the pole," Larson said. "I don't know if I will count it as my first career pole, but it's still pretty cool to start on the front row."
Brad Keselowski will start alongside Larson on the front row. Clint Bowyer will roll off third, followed by Kasey Kahne, Kevin Harvick, who won the most recent race two weeks ago at Darlington, and Brian Vickers. Harvick also won last year's spring race at Richmond.
Starting seventh through 10th will be: Jamie McMurray, Ryan Truex, who is also a rookie this season, Paul Menard and Jimmie Johnson, the six-time and defending Sprint Cup champion.
Michael McDowell and Dave Blaney did not make the 43-car starting field.
Brian Scott won the pole for the Nationwide race. Scott turned a lap at 122.061 mph for his third career pole in the series, including his second at Richmond. Last September at this track, he started up front and led a career- high 239 laps in a dominating performance before finishing second.
Rookie Dylan Kwasniewski qualified second, followed by Ryan Blaney, Chase Elliott, who is also a rookie in the series this year, and Trevor Bayne. Elliott has won the last two Nationwide races and is the current points leader.


FISHERS (Jan. 7, 2015) – Power was restored by 8 a.m. to hundreds of Indianapolis Power & Light customers in Fishers.
Nearly 500 customers were without power near 96th Street and Hague Road early Wednesday morning.
The outage also affected traffic lights in the area.


text:
Obama: Historical Nomination
43 posts	• Page 3 of 3 • 1, 2, 3
Re: Obama: Historical Nomination
by MikeC on Thu Jun 05, 2008 9:55 am
TaoJoannes wrote: Tiger plays golf.
Man, they DO all look alike to you, huh?
Wasn't my intent at all. But a shame that your mind is in the gutter like that. Not unexpected though
MikeC
by steelincotton on Thu Jun 05, 2008 11:01 am
MikeC wrote: Ok, congrats Obama! Go get 'em Tiger!
Feel better steel?
Kewl. See that. We are bridging the divides as we speak.
Now, I'll say something nice about John McCain.... Out of all the reps running for president, I liked him and Ron Paul the best! More bridgework right there. Imagine what we could accomplish in this country if the dems/reps could put aside all the crap, and just start getting stuff done for America? What a country we could be.
Last edited by steelincotton on Thu Jun 05, 2008 11:05 am, edited 1 time in total.
steelincotton
Huajing
by Dmitri on Thu Jun 05, 2008 11:17 am
Wow... How the same person can like both Ron Paul and McCain is incomprehensible to me. They are almost complete opposites.
Location: Atlanta, GA (USA)
by MikeC on Thu Jun 05, 2008 11:49 am
It's called pandering
by steelincotton on Thu Jun 05, 2008 12:29 pm
Dmitri wrote: Wow... How the same person can like both Ron Paul and McCain is incomprehensible to me. They are almost complete opposites.
nah, it's not pandering. D, it's not that I said I liked McCain, I said out of the choices from the republicans running that I liked him and Ron Paul, with Opie in the third spot. If i go from the worse to the best republicans i would go from (in other words, they all suck, but some make my skin crawl more than others):
Mitt Romney - THE WORST PHONY OF THEM ALL
Rudy G - Horrible man, truly stands for nothing, and is hated by many in NYC.
Duncan Hunter - Uhm, his personality is liking watching paint dry, and he gives me the creeps!
Tancredo - Racist who hates all things Mexican, his entire platorm was about keeping Mexicans out of the USA.
Brownback - don't even know who he was - I suppose I didn't miss much either.
Fred Thomson - an actor, and another one with the personality of a dial-tone (dont say Reagan because he sukked too)
Mike Hucklebee - I loved him on the Andy Griffith show, but hey, at least he plays bass in a rock band and lost 100lbs; Huck is more likeable than all of the above by far!!
John McCain - might have been a maverick 20 years ago, but became a Bush shill for the last eight years. Former playboy and was tortured, so I give him some respect for his past.
Ron Paul - the guy who made the most sense to me as a liberal democrat. Too bad Ron Paul wouldn't leave his corrupt and immoral republican party. Still, he was no 1. in my book, so McCain got #2. But, truth be told, If Huckleberry wasn't a religious nut, he would have been my number 2 man on the right wingnut side of the aisle.
Last edited by steelincotton on Thu Jun 05, 2008 12:34 pm, edited 4 times in total.
by MikeC on Thu Jun 05, 2008 2:48 pm
Well, I'm glad to hear you like McCain so much, being as you'll be seeing a lot of him over the next four years.
by Buddy on Thu Jun 05, 2008 6:40 pm
"Even Buddy, who wants McCain, at least gives the man that much!"
I'm not for McCain, he's a Democrat as far as I'm concerned. I'm voting straight LP for the the 5th election in a row.
That said, I don't think, by any means, that criticism of Mr. Wright is racism. I think he has much to be criticized for. Don't we want to (and doesn't Mr. Obama claim to represent) have a greater understanding and respect for each other, regardless of our differing race, creed, or political beliefs? I don't think Mr. Wright represents this at all.
And while I think Sen. Obama left his church and criticized his former pastor out of political expediency, I'm willing, at least for now, and until shown otherwise, take him at his word.
Last edited by Buddy on Thu Jun 05, 2008 7:11 pm, edited 1 time in total.
by Michael on Thu Jun 05, 2008 7:20 pm
A couple of weeks ago, Keith Olberman responded to Hillary Clinton's remarks about the possible assassination of Barack Obama in the context of Bobby Kennedy having been assassinated late in the primary process in 1968.
Some commentary on Info Wars with another very short clip from Fox News guest, Trotta, former New York bureau chief of the Washington Times, also (jokingly?) calling for the assassination of Obama and Osama.
It's absolutely reprehensible that these comments were made, but I'm afraid the fat lady is just beginning to sing.
Last edited by Michael on Thu Jun 05, 2008 7:23 pm, edited 1 time in total.
"but we're going to hunt down that last point-one percent and say: 'you've gotta get inside, you gotta cut it out, and you gotta distance.'" —Mayor Garcetti
Location: 自由 国家
by Steve James on Thu Jun 05, 2008 7:27 pm
Michael wrote: It's absolutely reprehensible that these comments were made, but I'm afraid the fat lady is just beginning to sing.
Who or what, iyo, is "the fat lady"?
"A man is rich when he has time and freewill. How he chooses to invest both will determine the return on his investment."
Remember the TV show Dallas? The main character was a lying, cheating, S.O.B. named J.R. Ewing and his catchphrase was, "The opera's not over until the fat lady sings." You were probably having fun in France or Switzerland when the show was popular in the States, or simply weren't into prime time soap opera.
I tend to think that Hillary has been selected as the next President, so until the staged opera of the US electoral process plays out more fully, I think Hillary is the "fat lady" who has not finished singing.
"Olbermann's fury is justified but, as Kurt Nimmo points out, this goes deeper than a mere faux pas on behalf of Hillary. In reality, political crime families kill the opposition and the Clintons are notorious for having their adversaries "taken care of".
Several high profile public figures have warned that Obama may be the target of an assassination attempt before he is able to occupy the White House.
Appearing on The Alex Jones Show last month, former Minnesota Governor Jesse Ventura warned that Obama could be in the crosshairs.
"I believe very strongly that if an independent candidate like myself - a rogue - were to get into the President's race legitimately, if the polls looked like he had a chance to win, I believe that candidate would either be physically assassinated or would be assassinated credibility-wise or in some manner by our government because I do not believe they would ever allow a true independent or a citizen to become President of the United States," said Ventura.
"I say this in all seriousness - watch out Barack Obama," he added.
British Nobel Prize winner Doris Lessing said Obama would be taken out if he became President in February.
"He would probably not last long, a black man in the position of president. They would kill him," Lessing told a Swedish newspaper."
It'd be too easy to write the screenplay for this, down to who the assassin would be --or would not be. Of course, everywhere else in the world, the response would be "See, Wright was right about America." Inside the US, a person would be called a racist for suggesting that it was the continued existence of racism. Shucks, people are even predicting it --of course, only as a hypothetical or as a joke ... wink, wink. Some people would say that, in a civilized society, this wouldn't even come up. Here, it's expected. Yep, a great representation of "truth, justice and the American way."
Michael wrote: Remember the TV show Dallas? The main character was a lying, cheating, S.O.B. named J.R. Ewing and his catchphrase was, "The opera's not over until the fat lady sings." You were probably having fun in France or Switzerland when the show was popular in the States, or simply weren't into prime time soap opera.
Naw, I didn't watch Dallas; I still don't know who shot JR. I can name some real people who were shot in my time, though. But, re Hillary, she has already conceded that she will formally concede and endore Obama tomorrow or Saturday. She can't be considered for the VPresidency as long as she campaigns for the top spot. It is absolutely true, however, that something may yet happen to a candidate. They all might die. We all might die.
by steelincotton on Fri Jun 06, 2008 7:46 am
Personally, I don't understand why some republicans or moderate right wingers think that McCain is too much like a democrat. It doesn't make much sense to me, but then again, nothing short of liberalism does for me. The way I see it, McCain is extremely conservative on 95% of the issues.... As I understand the majority of his positions, this is what he stands for:
- Keeping the invasion of Iraq going for as long as possible, or as he put it, "until we win" - but even if that's a possibility, he wants to keep "some" troops over there indefinitely (100 years if that's what it takes he said).
- Roe vs Wade overturned (very right wing/evangelical position against abortion) - Don't think he will get many of Hillary's supporters with this one.
- Keep the tax cuts permanent for the wealthiest people (folks who make OVER $250,000 per year), AND the super utlra rich elites, and multi-billion dollar corporations. (like these folks need the breaks)
- Privatized Social Security (another big one for the conservatives; give your $$ to Wall Street - How Bush can you get?)
- Anti-universal/socialized health care (wants to give corporations even more profit, so we can pay for it ourselves)
- More No Child Left Behind nonsense, which has already been outed as an economic/social policy failure.
On the environment/green issue, even the Bush cabinet is getting hip to that, so I wouldn't call that a left/right issue.
Last edited by steelincotton on Fri Jun 06, 2008 7:47 am, edited 1 time in total.


text:
Queen Make Music Video History On 50th Anniversary Series The Greatest
(hennemusic) Queen are reviewing their history of groundbreaking and popular music videos in the latest episode of the band's 50th anniversary video series The Greatest.
With their 1975 clip for "Bohemian Rhapsody", Queen is widely regarded to have given birth to the practice of creating music videos to boost sales, even though they had been previously done by artists for years.
"It's the first video that actually took any kind of effect into actually making sales," explained Mercury in an earlier episode of the series. "A lot of videos were probably made before, but they didn't sell records. I think that's the first that actually worked."
While Queen went on to create some of the most iconic promos in rock history, the band's sense of adventure was not always universally embraced, particularly in the 1980s after the launch of MTV.
Filled with a sense of style and humor, Queen loved to push the limits - which inadvertently earned them the honor of being the first to have a video banned by MTV with "Body Language", the erotic undertone bathhouse scenes deemed unsuitable for audiences in 1982.
The cable channel ban did not hamper the track's chart performance: it went on to become Queen's fifth-biggest US hit single of all time, outperforming such better known international hits as "Radio Ga Ga" and "Somebody to Love."
MTV repeated the ban two years later when Queen issued a clip for "I Want To Break Free" that saw the band members appeared dressed as a female character from the British soap opera Coronation Street; this time, the ban impacted on the band's chance of major US success with the single stalling just inside the Top 50.
"Well MTV were very narrow minded," explains Roger Taylor. "It was Whitesnake, and ****ing Whitesnake, and then another Whitesnake track. And they decided they didn't think that men in drag was 'rock enough' I guess, and so they didn't play the video."
Queen's video history saw the group expand the production value of music videos, from cutting-edge animation, outrageous sets, and costumes to recreating entire scenes from Hollywood movies.
"Well things have come a long way, of course, they're becoming film budgets aren't they?," says Freddie Mercury. "And the technique and everything is, sort of, improved vastly, so, I mean, you can come up with all kinds of things.
"I remember that in 'Bohemian Rhapsody' we wanted these multiple images, and at that time the only way we could only get it was to use a prism. And then we wanted a sort of jagged effect and we had to shake the cameras, somebody had to kick it. Now you have all kinds of things I don't even know the names for that just do it automatically. It's beyond me as well, I don't know what's going to happen next."
In 2019, "Bohemian Rhapsody" became the first pre-1990's music video to pass the 1 billion views milestone on YouTube; 1978's "Don't Stop Me Now" currently has more than 700 million views on the video platform; 1980's "Another One Bites the Dust" and 1984's "I Want To Break Free" have passed more than 500 million views; and, "We Will Rock You" is closing in on the half-billion mark, as well.
All of the videos featured on Queen's official YouTube channel have a combined total of more than 8.5 billion views to date. Watch the new episode here.
Queen Look Back At John Deacon's Final Live Performance On The Greatest
Queensryche Begin Recording New Album
Queen Look Back At Freddie's Made In Heaven For The Greatest
Queensryche's Scott Rockenfield Sued Band 2021 In Review
Queen Revisit The Freddie Mercury Tribute Concert
News > Queen


Overview of advanced therapy in the Current Era: What's out there when to use it?
Where did this thrombus come from…and how does it influence therapy?
Unique Patient Substrates - Special Considerations?
VTE: What Role Does Hypercoagulability Play?
Troponin, BNP, D-dimer, PESI, Geneva: Are Biomarkers and Clinical RIsk Scores Useful for Risk Stratification or Not?
Catheter-directed Thrombolysis (CDT) and Pharmacomechanical Lysis (PMT): What do Recent Studies Show about Early and Intermediate-term Outcomes? Who Should be Considered for This Approach? Who Has Absolute Contraindication?
Thrombo-aspiraton - Latest Options, Case Selection, Outcomes?
DVT: Triage in the Office or ED: Which Cases Should I Worry About?
Aggressive Iliofemoral DVT Lysis and Rapid Restoration of Flow: Impact on Subsequent Events or Quality of Life?
DVT: Clot Removal or Lysis?
A Case: What Would You Do?
When to Look for PE and in Which Patients? What are the Signs, Symptoms, Background Factors that Alert One to Look for PE?
When is Anticoagulation Primary Therapy for PE; How Does One Initiate and Transition; and What are the Options?
Novel Anticoagulants (NOACs): The Data in Standard and High-Risk Patients...Which ones When? Are These Now First-line Therapy?
Prime Time for Reversal Agents: Latest Data, How and When to use Them…and Will They Tilt the Balance in Favor of NOACs over Traditional Agents?
CT Imaging in PE: Is this the Go To Test for Urgent Diagnosis and Risk Stratification?


text:
International Journal of Hematology and Blood Disorders
Research Article Open Access
Investigating the Impact of Alcohol Consumption on Some Haematological Variables among Alcohol Consumers in Jos Metropolis, Nigeria
Moses D Lugos1*, Bitrus N Lekshak2, Changjul L Singnap2, Umanka Y Polit1 and Benedict H Mangs3
1Department of Medical Laboratory Science, Faculty of Medical Sciences, University of Jos, Nigeria
2Department of Haematology and Blood Transfusion, University of Jos, Nigeria
3Department of Chemical Pathology, University of Jos, Jos-Nigeria
*Corresponding author: Moses D Lugos, Department of Medical Laboratory Science, Faculty of Medical Sciences, University of Jos, Nigeria;E-mail: @
Received: September 24, 2018; Accepted:October 11, 2018; Published: October 12, 2018
Citation: Lugos MD, Umanka YP, Lekshak BN, et al. (2018) Investigating the Impact of Alcohol Consumption on Some Haematological Variables among Alcohol Consumers in Jos Metropolis, Nigeria. Int J Hematol Blo Dis 3(3). 1-6
Ethanol is contained in alcoholic beverages, which are produced by the process of fermentation of grains, fruits, and other sources of sugar. The effect of alcohol consumption among youths and adults resulting to escalating crime rate in the society has generated great concern. The impact of alcohol consumption on haematological variables has not been well documented in Jos metropolis. The study sought to establish whether alcohol consumption has any effect on the haematological status of individuals or not. Following informed consent, we determined haematocrit values by the microhaematocrit method, haemoglobin (Hb) concentration by cyanmethaemoglobin technique, total and differential white blood cell counts (WBC), malaria parasite as well as microscopic blood film reporting of 124 alcohol consumers and 53 non-consumers as a control. SPSS version 23 was used to compare mean values between alcohol consumers and the control group (student t-test), while associations of blood film report were determined by chi-square. Results showed a significantly higher total lymphocytes count among alcohol consumers compared to nonalcohol consumers (48.28±12.98 v 41.91±11.59; p=0.002). Also, the blood film reporting revealed a significantly higher percentages of macrocytes (p=0.001), microcytes (p=0.020), hypochromia (p=0.001), polychromasia (p=0.013), rouleaux formation (p=0.004) and atypical lymphocytes (p=0.011) and malaria parasitaemia (p=0.001) among alcohol consumers compared to the control group. Anisocytosis and hypochromia, which are essential characteristic features of anaemia, have been shown to associate with alcohol consumption. The implication is that excessive alcohol intake may impact adversely on haematological variables, and particularly constitute an increased risk of developing anaemia.
Keywords: Alcohol Consumption; Haematological Variables; Anisocytosis; Hypochromia
An alcohol beverage is a drink containing ethanol, commonly known as alcohol. Alcoholic beverages are generally classified into three; the beer (bottled and local), wines and spirits [1]. These drinks are legally consumed in most countries, and over 100 countries have laws regulating their production, sale and consumption [2]. Studies have shown that people drink alcohol to enhance friendship, to increase power, to escape difficulties, to get drunk, for entertainment, or for ceremonial reasons, as well as to cope with stress and for social influences [3].
Excessive alcohol consumption has been linked to numerous adverse events, especially in impairing the state of the brain. [4, 5]. Alcohol abuse is fast becoming a public health concern among the Nigerian youths and adult strata of the society [6, 7].
Heavy intake of alcohol is a leading cause of preventable mortality, second only to cigarette smoking in industrialised countries [8]. Alcohol is implicated in more than 40% of all fatal traffic accidents in 25% of all general hospital admissions, in liver and upper gastrointestinal cancers, suicides sex crimes, industrial accidents, robbery, murder and fetal alcohol syndrome [9-11]. Conversely, there is evidence to suggest that moderate intake of alcohol has some advantages of reducing the risk of coronary heart disease and dementia, the leading causes of death in most affluent societies, especially in the elderly persons, [12, 13]. Therefore, it is expedient to unravel and make available to the public and research community, the benefit and harmful effects of alcohol consumption on specific haematological variables in our location.
With the global daily increase in the population of alcohol consumers, many scientific papers have been published on the subject of the biological effects of alcohol on the human body and from different parts of the world including some parts of Nigeria, but none has been reported from Jos metropolis in Plateau state, Nigeria.
This study was therefore designed to determine the effect of alcohol consumption on some haematological variables among alcohol consumers in Jos metropolis.
Subject Selection
After obtaining ethical clearance and informed written consent, a total of 177 subjects were recruited for this study, which comprised of 124 alcohol consumers (bottled beer and locally brewed burukutu, wine and gin or spirit) and 53 apparently healthy non-alcohol consumers that served as a control group. The alcohol consumers selected for this study refer to individuals who have been consistent consumers of alcohol for over seven (7) years, while non-consumers of alcohol are those who abstain from alcohol consumption for a minimum of five (5) years or from birth. All subjects were apparently healthy and between the ages of 20 and 85 years and resident within Jos metropolis.
Questionnaires were administered to all the study subjects to establish whether they take alcohol or not. We also used the questionnaire to determine the type of alcoholic drinks taken by the alcohol consumers and how long they have been taking it and the frequency of intake. We collected blood samples from study subjects who consented to participate in the study. Individuals who did not grant consent to participate in the study were excluded.
We collected 4.5ml of blood from each study participant into potassium EDTA anticoagulant bottles. The samples were analysed for Packed Cell Volume (haematocrit), hemoglobin concentration, total and differential white Cell Counts, as well as blood film reporting for cell morphology using standard manual methods.
Laboratory Methodologies
Determination of haematocrit value by the microhaematocrit method
To determine the value of packed cell volume (PCV), blood sample was well-mixed and drawn up to a 3/4th length of the plain capillary tube by capillary action. About 2mm of the dry end of the capillary tube was sealed with plasticine and placed in the groove of the microhaematocrit centrifuge (ensured balance). Capillary tubes were centrifuged at 13,000 ± 2000 rpm for 5 minutes. Hawksley haematocrit reader was used to read the value of haematocrit and was reported in percentage (%) [14, 15].
Haemoglobin (Hb) estimation by cyanmethaemoglobin method
The cyanmethaemoglobin method was used to estimate the haemoglobin concentration of the study participants. In this method, the potassium ferricyanide (K3[Fe(CN)6]) present in the cyanmethaemoglobin reagent (Drabkin's solution) converts haemoglobin to methaemoglobin, while potassium cyanide (KCN) combines with methaemoglobin to form cyanmethaemoglobin, a stable color pigment that can be quantified spectrophotometrically. The cyanmethaemoglobin method is briefly described: We pipetted 5ml of cyanmethaemoglobin reagent into the welllabelled test, and blank tubes. The blood sample was mixed, and 20μl was added to the test tube, while no sample was added to the reagent blank tube. The tubes were allowed to stand for 10 minutes at room temperature. The optical density (OD) of the test was read using spectrophotometer at 540nm wavelength, zeroing with the blank. Haemoglobin concentration of test was estimated against the standard chart that was calibrated using the standard cyanmethaemoglobin solution. Hb value was reported in grams per decilitre (g/dl) [16].
Total white blood cell count
A 1:20 dilution of whole mixed blood in Turk's solution, which comprises of water (97): glacial acetic acid (2): gentian violet (1) lyses the red cells and stains the nuclei of white cells to be counted under the microscope. The method described: We added 20μl of well-mixed whole blood to 0.38ml of Turk's solution in a test tube, mixed and stood for 10 minutes. The cover glass was mounted on an improved Neuberger counting chamber until Newton's ring was observed. The improved Neuberger counting chamber was carefully charged with the well mixed diluted blood. The charged counting chamber was placed in a moist Petri dish for 10 minutes to allow white cells to settle into the same plane. After the 10 minutes of incubation, counting chamber was placed on the microscope stage and leucocytes were counted from the four corner squares using 10x objective observing margin rule. Total white cell count was calculated and expressed in 109/L [17].
Differential white blood cell count and Blood Picture Assessment
To examine and report the morphology of cells, a thin blood film was prepared and stained with Leishman's method. The stained blood film was allowed to air dry and examined using battlement method with oil immersion objective (x100). The blood film was scanned head to tail to report on morphological details of red blood cells, white blood cells and platelets. For differential white blood cell count, 100 consecutive white blood cells were counted taking note of the various types of leucocytes. They are counted, recorded and reported as percentages. Also, intracellular haemo-parasite, that is Plasmodium species was identified and reported [17, 18].
Student t-test was used to compare the mean haematological variables between the test group (alcohol consumers) and the control subjects (non-consumers of alcohol) in order to determine the presence of significant difference in the parameters under consideration. A chi-squared (χ2) test was used to compare for any difference in the categorical variables of film reporting between alcohol consumers and non-alcohol consumers. The statistical package, SPSS version 23.0 (SPSS, Inc., Chicago, IL, USA) was employed. Comparison for which P < 0.05 is consider significant.
The demographic data of the study population are presented in Table 1. There are no significant differences in the mean values of PCV, Hb and total WBC counts between subjects that consume alcohol and those who abstain from taking alcohol as reported in Table 2. The white blood cell differential count results are displayed in Table 3; alcohol consumers showed a significantly higher percentage lymphocyte count compared to non-alcohol consumers ( 48.28±12.98% v 41.91±11.59%; p=0.002). Whereas non-alcohol consumers had a borderline significant higher percentage neutrophil count compared to alcohol consumers (48.40±12.70% v 44.50±13.67%; p=0.078).
Data from the film reporting in Table 4 revealed that a significantly higher percentage of alcohol consumers harbour malaria parasites in the blood compared to non-consumers (79.7% v 20.3%; p=0.001). Further results from the blood film reporting in Table 5, showed that significantly higher proportions of the following blood film variables were observed among alcohol consumers compared to non-consumers: macrocytes (80.4 v 19.6; p=0.001), microcytes (80.0 v 20.0; p=0.020), hypochromia (92.3 v 7.7; p=0.001), polychromasia (84.6 v 15.4; p=0.013), rouleaux formation (77.8 v 22.2; p=0.004) and atypical lymphocytes (90.0 v 10.0; p=0.011).
Table 1: Demographic variables of study participants
percentage %
Table 2:Comparison of mean haematological variables of alcohol and non-alcohol consumers
Haematological variables
Status of alcohol consumption
Non-consumers
Pcv (%)
Hb(g/dl)
WBC(x 109/L)
Table 3:Comparison of mean white blood cell differential counts of alcohol and non-alcohol consumers
Differential white blood cell count
Neutrophils (%)
44.50±13.67
Lymphocytes (%)
Monocytes (%)
Eosinophils (%)
Basophils (%)
Table 4:Association between alcohol consumption and malaria parasitaemia
Malaria parasite
χ2
47(79.7)
124(70.1)
Table 5:Association between alcohol consumption and features from blood film reporting
Normal red cells
Macrocytes
Microcytes
3(20.0)
Hypochromia
3(7.7)
ovalocytes
Crenated red cells
Stomatocytes
Spherocytes
polychromasia
Rouleaux formation
Platelets Adequate
Platelet increased
Giant platelets
Atypical lymphocytes
The study was carried out to investigate the impact of alcohol intake on haematocrit value, haemoglobin concentration, total and differential white blood cell counts, film reporting of blood cells morphologies, and malaria parasites among alcohol consumers in comparison with non-alcohol consumers. This study was designed to test our hypothesis that states that alcohol consumption may be associated with deleterious effects on some haematological variables.
The demographic data of the study participants are presented in table 1. Table 2 showed that there was no statistically significant difference in the values of haematocrit, haemoglobin, and total white cell count among alcohol consumers compared to non-alcohol consumers. Since we did not classify the study subjects according to the rate and frequency of alcohol intake, this observation could not provide a clear picture of the impact of alcohol intake on these haematological variables.. We speculate that stratifying the study subjects according to the frequency and duration of alcohol consumption may reveal a clearer picture of the effect of excessive and prolonged alcohol intake on haematology. The results of the differential white blood cell counts presented in table 3 revealed that alcohol consumers had a significantly higher percentage of lymphocytes compared to nonconsumers of alcohol (p=0.002). Inversely, a higher percentage (at a borderline significance; p=0.078) of the neutrophils count was reported among non-alcohol consumers compared to alcohol consumers. These reports have not been able to categorically decipher any advantege in the immune status of the two groups of the study participants. While the higher percentage of lymphocytes reported among alcohol consumers may be seen to confer potentials for adaptive immunity, the higher percentage neutrophil count seen among non-consumers of alcohol might be viewed as a potential for a stronger innate immune response..
As part of the thin blood film reporting, table 4 showed that alcohol consumers had a significantly higher incidence of malaria parasitaemia compared to non-consumers of alcohol (p=0.001).. It is contemplated that the increased malaria parasitaemia observed among the alcohol consumers could be associated with social habits such as keeping late nights at drinking spots and sleeping outside the mosquito nets among others, which increases their vulnerability to mosquito bites.. Interestingly, further blood film reporting presented in table 5 indicated increased incidences of macrocytes, microcytes, hypochromia, polychromasia, rouleaux formation and atypical lymphocytes among alcohol consumers compared to non-consumers of alcohol. These are common features that are characteristically oberved on blood films of patients suffering from some types of anaemia.
A study by Thoma and colleagues reported statistically decreased Hb concentration, total white cell count and PCV among alcoholics in relation to increased alcohol consumption time [19]. A case-control study performed by Erhabor and colleagues in Nigeria had observed significant reduction in WBC, red cell count (RBC), haemoglobin, haematocrit and platelet count, while MCV values were significantly elevated [20].This report did not agree with our findings, although the mean values of Hb, WBC and PCV recorded in this study was within a lower borderline and the time of alcohol consumption was not considered in the study. In a similar study by Elanchian et al, a statistically significant increased macrocytes among severe alcoholics was revealed in comparison to the non alcoholics [21]. The Elanchian finding is in agreement with data. The increased macrocytes among alcoholics could be associated with impaired dietary folate metabolism resulting to folate deficiency and leading to poor DNA development thereby releasing macrocytic cells into the peripheral blood circulation. A similar study by Yoganandh and colleagues reported grossly decreased level of both vitamin B12 and folate among severe alcoholics in comparison with non-alcoholic group [21].
The blood film report revealed statistically increased macrocytic, microcytic, hypochromic and polychromic red blood cells among the alcoholics. The blood film features suggest that alcohol consumption may be associated with anaemia, although the mean haematocrit and Hb values recorded in this study are at lower borderline. However alcohol consumption rate and duration should be consider because alcohol may have delay effect on haemaological parameters.
This study revealed a marked anisocytosis, and hypochromia among alcohol consumers and these are essential features of anaemia. The implication is that alcohol consumption associated with anaemia. These observations may be linked to poor dietary habit due to over-dependence on alcohol or its effect on absorption and utilization of essential vitamins required by the body. We recommend for a further study that will consider a more detailed historical data on alcohol consumers and stratify study participants to enhance understanding of the impact of alcohol intake on haematological variables. Furthermore, routine checks on haematological parameters may be necessary to avoid sudden onsets of haematological complications.
Giesbrecht, N, Ashley Wettlaufer, Emma Walker, Anca Ialomiteanu, Timothy Stockwell. Beer, wine and distilled spirits in Ontario: A comparison of recent policies, regulations and practices. Nordic Studies on Alcohol and Drugs. 2012;29(1):79-102.
Ferreira-Borges C, Esser MB, Dias S, Babor T, Parry CD. Alcohol control policies in 46 African countries: opportunities for improvement. Alcohol and alcoholism. 2015;50(4):470-476. doi: 10.1093/alcalc/agv036
Abbey A, M J Smith and R O Scott. The relationship between reasons for drinking alcohol and alcohol consumption: An interactional approach. Addictive behaviors. 1993;18(6):659-670.
Mukamal KJ, Kuller LH, Fitzpatrick AL, Longstreth WT, Mittleman MA, Siscovick DS. Prospective study of alcohol consumption and risk of dementia in older adults. Jama. 2003;289(11):1405-1413.
Brust JC. Ethanol and cognition: indirect effects, neurotoxicity and neuroprotection: a review. International journal of environmental research and public health. 2010;7(4):1540-1557. doi: 10.3390/ijerph7041540
Akanni E, Victor O Mabayoje, TO Zakariyahu, DP Oparinde. Haematological characterization among heavy alcohol consumers in Osogbo metropolis. Research Journal of Medical Sciences. 2010;4(2):48-52.
Obiechina G and B Isiguzo. Curbing the Menace of Drug Use among Secondary School Students in Nigeria. European Journal of Research and Reflection in Educational Sciences. 2016;4(1):1-64.
Mokdad AH, Marks JS, Stroup DF, Gerberding JL. Correction: actual causes of death in the United States, 2000. Jama. 2005;293(3): 293-294.
Kannel WB. Alcohol and cardiovascular disease. Proceedings of the Nutrition Society. 1988;47(2):99-110.
Ifeanyi O, Omeh Yusuf Ndukaku, OT Ndubuisi, BL Eze Obioma. Some Haematological and Biochemical Parameters of Chronic Alcoholics in Umuahia, Abia State, Nigeria. Res J Pharmaceut Biol Chem Sci. 2014;5(2):831-836.
Llerena S, María Teresa Arias-Loste, Angela Puente, Joaquín Cabezas, Javier Crespo and Emilio Fábrega. Binge drinking: Burden of liver disease and beyond. World journal of hepatology. 2015;7(27):2703-2715. doi: 10.4254/wjh.v7.i27.2703
Klatsky AL. Moderate drinking and reduced risk of heart disease. Alcohol Research and Health. 1999;23(1):15-23.
Sabia S, Aurore Fayosse, Julien Dumurgier, Aline Dugravot, Tasnime Akbaraly, Annie Britton, Mika Kivimäki, et al. Alcohol consumption and risk of dementia: 23 year follow-up of Whitehall II cohort study. Bmj. 2018;362:k2927.
Bull BS. Procedure for determining packed cell volume by the microhematocrit method; approved standard. NCCLS Document H7-A3. 2000;20(18):1-18.
Dacie J and S Lewis. Practical Hematology. 10th Ed, Churchill Living Stone. 2006.
Kalaivani K and P Ramachandran. Time trends in prevalence of anaemia in pregnancy. Indian Journal of Medical Research. 2018; 147(3):268 -277. doi: 10.4103/ijmr.IJMR_1730_16
Lorenzo C, AJ Hanley and SM Haffner. Differential white cell count and incident type 2 diabetes: the Insulin Resistance Atherosclerosis Study. Diabetologia. 2014;57(1):83-92. doi: 10.1007/s00125-013-3080-0
Bain BJ, I Bates and MA Laffan. Dacie and Lewis Practical Haematology E-Book. Elsevier Health Sciences. 2016.
Thoma E, Sonila Bitri , Klodeta Mucaj , Andrin Tahiri and Irida Pano. Changes of some blood count variables in correlation with the time of alcohol abuse. J Addict Res Ther. 2015;6:2. doi: 10.4172/2155-6105.1000221
Erhabor O and Teddy Charles Adias. Evaluation Of Haematological Parameters Among Alcoholics In Port Harcourt Nigeria. International Journal of Laboratory Hematology. 2013;35:49-50.
Yoganandh T, S Mayilsamy and S Radhakrishnan. Comparison of haematological parameters between alcoholics and non-alcoholics. International Journal of Research in Medical Sciences. 2017;5(11):5041-5047. doi:http://dx.doi.org/10.18203/2320-6012.ijrms20174967


Ecom Wannabe , zealgr , mumu2 , raphaelm16 , dolequan06 , Frenchy , sanjokg , mb40man , Baris , expresso08 , bluebirdbuddy , beliel7 , srgabrielw , othmane213 , ali75504, vergi5 , kinomalta , samlou , nirvana2018 , whiniuni , ZL3 , jbawa28 , rmikey5 , Tomhawks53 , Night159 , h3xv1l , sebascalidoso , gameditkon , FusionFx , flyzet , htbusiness , Impules , promobuddy , umdanny78 , adastra , simsiesims , testios001 , leekad , zzTAz , frankrx15 , drammennorway , Andras , scalable , ofuroinu , BrownJenkins , vttc89 , andymental , CeeJay , Purist , Rudichiban , fuzuli87 , aitwa3el , oanhmap , DJ Cremandon , alexanderraiback , conmaso , nk00013 , tlrademaker , Ballahide , Ih8googs , affmarketer101 thanked for this post.
ZL3 thanked for this post.
rodaguay , ZL3 thanked for this post.


Soak up the tropical atmosphere at Matanivusi Surf Resort in this superb eco-friendly resort, nestled in the rainforest beside a crystal clear lagoon. Enjoy a holiday and surf some of Fiji's finest waves as they peel off the reefs just a short boat ride from the resort. There are three local breaks, at their best from December to early April – see Matanivusi Surf.
Brilliantly designed to blend in to its natural setting, Matanivusi Surf Resort is in a class of its own. The rooms, with king size beds (or two king singles) are stylish, simple, spacious and beautifully finished with white walls, polished timber floors and louvre windows to allow fresh breezes and natural cooling. Every room has an en suite bathroom, high ceilings and views through palm trees to the white sand beach.
Outside, wooden walkways lead through tropical gardens to the restaurant, with its floor-to-ceiling windows opening to sun deck and sea views. Matanivusi Surf Resort's own chef prepares a variety of meals featuring fresh salads and local seafood, and Fiji's blend of local and Indian cuisines.
The free-form swimming pool overlooks the beach and is surrounded by coconut palms and outdoor tables where you can enjoy a drink and watch the sun set into the South Pacific. The surfers bar also has a great sea view, as well as a recreation area with table tennis, music and a collection of books to enjoy. Other activities include fishing for trevally, tuna, macheral and mahi mahi; snorkeling in the lagoon and excursions in the surrounding area. Our staff will introduce you to Vunaniu village, where you can learn about the local culture, enjoy a traditional Fijian feast and join in a kava ceremony.
As well as surfing, you can fish for trevally, tuna, mackerel and mahi mahi; the chef will cook your catch for dinner! There's also excellent snorkeling in the lagoon. Make an excursion in the surrounding area – our staff will introduce you to Vunaniu village, where you can learn about the local culture, enjoy a traditional Fijian feast and join in a kava ceremony.
An Atoll Travel package to Matanivusi Surf Resort is the easiest surfing holiday you'll ever have. Regular flights go direct to Fiji's international airport at Nadi. You'll be picked up at the airport for the scenic two-hour drive to the resort via the spectacular Coral Coast highway. Packages include airfares, transfers, accommodation; three meals a day and unlimited use of boats to local surf breaks (an extra charge applies for access to more distant breaks, including Frigates).
For exclusive use of all the facilities and local surf breaks for your own crew of family, friends or workmates, groups of 12 or more can book the whole resort for a holiday together.


This year Mark, one of our favorite history teachers, won the Provo School District Foundation Mini-Grant. In order to receive these mini-grants, teachers had to explain their idea for an innovative project within a two-page application. The completed applications was sent to the Provo School District Foundation Selection Committee who then selected 13 mini-grant winners. Winners are awarded $500 in order to fund their project and are expected to write a brief report describing the project's outcome.
Mark likes to bring history alive for his students. He will use his grant money to purchase the materials and tools needed to build a trebuchet, which is a catapult that consists of a large arm to launch projectiles. He hopes this will motivate students to come to school everyday.
Not only does this project bring history to life, it also uses math and technical building skills. The students love this project and can't wait for the final product to be finished.


Your editorial, "The Silent Treatment," indicated that tuberculosis can be spread by "just speaking" to a person with TB.
We simply would like to take this opportunity to ensure the accuracy of information about TB.
Exposure to a person with active disease must be close and prolonged for others to become infected with this germ.
With regard to the recent case at American River College (ARC), there was only one infectious person who was immediately isolated and treated and ARC officials followed appropriate testing protocols to protect all students and staff.
Furthermore, ARC administration did, in fact, directly contact those students and staff who were possibly exposed to the germ as soon as those students and staff were identified by Sacramento County Public Health.
1 Comment on "Letter to the editor: ARC administration correctly notified students about tuberculosis case"
My understanding is that the student also had a type of TB not easily transmitted, e.g., latent v. active. Is that true?