text:
Dear members of the MIT community and friends,
With the fall semester wrapping up and the Institute preparing to head into winter break, I can't help but reflect upon this past year. I recall remarking last December on how much I missed campus and our community. Being back has been an incredible privilege, and a testament to the determination of our faculty, students, and staff to work together—literally and figuratively—to ensure our safety and ability to return to campus. The continual effort to show up and meet the challenges of the day are apparent in everything that we do, and a reminder that as MIT engineers, we are prepared to overcome any adversity.
To close out the year, I've compiled a list of stories that shows the depth and breadth of our school at all levels. In this issue, you'll meet a group of students who are working to better understand the building blocks of life, and how they can be used to reshape our world. You'll also be introduced to a cohort of amazing faculty who will compete to bring their entrepreneurial aspirations to fruition. Also included are several stories highlighting the exciting research being explored in areas such unmanned flight simulation, computer-aided design, materials applications, and carbon reduction.
It's been an extraordinary year in the School of Engineering, witnessing remarkable advancements in AI, machine learning, climate and sustainability, and nuclear energy, and impactful growth in entrepreneurship, graduate fellowships, undergraduate curriculum, industry collaborations, and more. I look toward the future with great anticipation and feel grateful for the support of our incredible alumni community.
Here's to another year full of compelling discoveries and remarkable breakthroughs! Until then, I'd like to wish you and yours a most wonderful holiday season.
Anantha P. Chandrakasan
DEAN, MIT SCHOOL OF ENGINEERING
VANNEVAR BUSH PROFESSOR OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE
INSPIRING INNOVATION
Power of Life
Students in Instrumentation and Measurements for Biological Systems take a trip to the microscopic level for an up-close and personal look at the building blocks of life.
ENTREPRENEURSHIP AND INDUSTRY
MIT Future Founders Initiative announces prize competition to promote female entrepreneurs in biotech
Nine MIT researchers selected as finalists for 2021 prize supported by Northpond Ventures; grand prize winner to receive $250K.
BLENDING DISCIPLINES
Popular new major blends technical skills and human-centered applications
Combining computer science, data science, and economics, Course 6-14 prepares students to address thorny quandaries in many fields.
MIT Spectrum: What does a drone see?
AeroAstro professor trains drones to fly by simulating environments that unmanned vehicles may encounter in the real world.
MATERIALS DESIGN
Electrochemistry, from batteries to brains
DMSE and NSE professor finds patterns in the behavior of ions across applications.
COMPUTER-AIDED DESIGN
Design's new frontier
Mechanical engineers are using cutting-edge computing techniques to re-imagine how the products, systems, and infrastructures we use are designed.
ELECTRONICS APPLICATIONS
Pushing the limits of electronic circuits
Associate professor seeks to develop next-generation electronic devices by harnessing terahertz waves.
RECOGNIZING EXCELLENCE
Staff spotlight: Yuvie Cjapi
Cjapi is a senior administrative assistant to School of Engineering Dean Anantha Chandrakasan.


text:
The mysteries of Topham Hill (West Head)
Australia, NSW, Sydney - North
Ku-ring-gai Chase NP, West Head
Summary: Off-track exploration of the Aboriginal engravings on Topham Hill, just south of the Topham Track.
Art type/s: Rock engraving
Number of motifs: 103
Motif/s: Bird Track, Club, Boomerang, Daramulan, Eel, Fish, Kangaroo, Kangaroo Rat, Koala, Man, Shield, Stingray, Woman
Year first recorded: 1944
Originally Recorded by: W.D. Campbell, F.D. McCarthy, Stanbury and Clegg
Peter Stanbury & John Clegg, A Field Guide to Aboriginal Rock Engravings.1990
Many Aboriginal engraving sites are scattered over Topham Hill in West Head, an area which seems to have been of great spiritual significance to the Garrigal people. A number of the long rock ledges on both sides of the hill have carvings with a range of motifs.
Topham Hill Kangaroo
On of the lower ledges is a kangaroo or wallaby.
Topham Hill Trig Ledge engravings (McCarthy Mankind Group 17)
Higher up on the north-east of the hill, a series of ledges (Topham Hill Trig Ledge engravings) has shields, boomerangs, fish, a stingray and two koalas (or a koala and an emu).
Topham Hill Trig Eel and Club
On the southern end of the hill are views over West Head to the north, and more tesselated ledges interspersed with dense scrub.
There's two more individual engravings on small rock platforms, with an eel and what appears to be a club.
From the eastern side of Topham Hill are views over West Head toward Pittwater and the Pacific Ocean in the distance.
Topham Hill Fish (Campbell Plate 17 Fig 6,8 and McCarthy Group 103 S1)
Also on the eastern side of Topham is the Topham Hill Fish, an Aboriginal engraving site that many years ago had a walking track up from West Head Road. Today, just the old National Parks (NPWS) sign remains.
The site includes a school of 30 fish being attacked by a shark, as well as shields, a bird track and two figures a bit further to the west. Many of the fish are fairly distinct, but it's a spectacular setting for the engravings, with Pittwater visible in the distance.
Topham Trig Red Hands Shelter
Continuing up Topham Trig towards the Trig Station is one of two (known) shelters with art on Topham Hill. The Topham Trig Red Hands Shelter has two very clear hand stencils in red ochre.
Continuing up Topham Hill, there's another view of West Head Road; on the horizon is the Bahai temple at Ingleside and the city skyline.
There's no shortage of caves, overhangs and rock formations to explore on the way up.
From time to time there are views of Pittwater through the trees.
There are a couple more potential unrecorded engraving sites higher up the hill – although I really can't be sure if they are are natural erosion or Aboriginal rock art. I suspect there are many more Aboriginal sites to be "discovered" on Topham Hill.
Topham Trig Station
At the very top of the hill, with an elevation of 223m (only 10m less than the Willunga Trig, the highest point in Ku-ring-gai Chase National Park) is Topham Trig Station (TS5653). The trig consists of just a steel post, with the rusted vane lying a few metres away.
There's distant views of the ocean from the trig station; a few years ago the views were more extensive after a fire went through the area. Dependig on the you route you take up Topham Hill, there are some nice views over West Head and toward Pittwater in the distance from the ridge.
Topham Trig Station Engraving site (McCarthy Mankind Group 16)
Below Topham Hill in a natural amphitheatre is the most significant Aboriginal site. The Topham Trig Station engraving site features Daramulan, a large deity, as well as a man and a woman who is urinating and defecating.
While the Topham Track is a nice walking trail (with a "secret cave" at the end), heading off-track to explore Topham Hill is an even more rewarding experience.
Summary of Topham Hill Aboriginal art sites
Site Name No. Motifs Motif Details AHIMS ID
Topham Hill Trig Ledge (3 sites) 29 Fish, stingray, shields, boomerangs, koalas 45-6-0198
Topham Hill Club 1 Bulbous-headed club 45-6-3926
Topham Hill Eel 1 Eel 45-6-1875
Topham Hill Kangaroo 1 Wallaby or kangaroo 45-6-0895
Topham Hill Fish 66 Fish (30), shark, bird, goanna, kangaroo 45-6-0200
Topham Hill Man 1 Man with rayed headdress 45-6-3925
Topham Trig Red Hands 2 Red hand stencils 45-6-0894
Refuge Bay Shelter 2 Red hand stencils (faint) 45-6-3743
-33.6037566151.2626327
Topham Hill rock art (West Head) – OkRoam · May 24, 2020 at 3:34 pm
[…] The World – May 24, 2020View Original Post for complete content…Filed Under: […]

redpajama_set_name: RedPajamaCommonCrawl


text:
package org.elasticsearch.xpack.searchablesnapshots.store.input;

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.message.ParameterizedMessage;
import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.IOContext;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefIterator;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.xpack.searchablesnapshots.cache.common.CacheFile;
import org.elasticsearch.xpack.searchablesnapshots.cache.common.CacheKey;
import org.elasticsearch.xpack.searchablesnapshots.cache.blob.BlobStoreCacheService;
import org.elasticsearch.xpack.searchablesnapshots.cache.blob.CachedBlob;
import org.elasticsearch.common.SuppressForbidden;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.io.Channels;
import org.elasticsearch.common.lease.Releasable;
import org.elasticsearch.common.unit.ByteSizeUnit;
import org.elasticsearch.index.snapshots.blobstore.BlobStoreIndexShardSnapshot;
import org.elasticsearch.xpack.searchablesnapshots.store.IndexInputStats;
import org.elasticsearch.xpack.searchablesnapshots.store.SearchableSnapshotDirectory;
import org.elasticsearch.xpack.searchablesnapshots.cache.common.ByteRange;

import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.Locale;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;

import static org.elasticsearch.xpack.searchablesnapshots.SearchableSnapshotsUtils.toIntBytes;

/**
 * Searchable snapshots index input that supports fully caching metadata files as well as header/footer information for each file,
 * consisting of a two-level cache (BlobStoreCacheService and CacheService).
 */
public abstract class MetadataCachingIndexInput extends BaseSearchableSnapshotIndexInput {

    protected static final int COPY_BUFFER_SIZE = ByteSizeUnit.KB.toIntBytes(8);

    protected final CacheFileReference cacheFileReference;

    /**
     * If > 0, represents a logical file within a compound (CFS) file or is a slice thereof represents the offset of the logical
     * compound file within the physical CFS file
     */
    protected final long compoundFileOffset;

    protected final int defaultRangeSize;
    protected final int recoveryRangeSize;

    // last read position is kept around in order to detect (non)contiguous reads for stats
    protected long lastReadPosition;
    // last seek position is kept around in order to detect forward/backward seeks for stats
    protected long lastSeekPosition;

    public MetadataCachingIndexInput(
        Logger logger,
        String name,
        SearchableSnapshotDirectory directory,
        BlobStoreIndexShardSnapshot.FileInfo fileInfo,
        IOContext context,
        IndexInputStats stats,
        long offset,
        long compoundFileOffset,
        long length,
        CacheFileReference cacheFileReference,
        int defaultRangeSize,
        int recoveryRangeSize,
        ByteRange headerBlobCacheByteRange,
        ByteRange footerBlobCacheByteRange
    ) {
        super(logger, name, directory, fileInfo, context, stats, offset, length, headerBlobCacheByteRange, footerBlobCacheByteRange);
        this.cacheFileReference = cacheFileReference;
        this.compoundFileOffset = compoundFileOffset;
        this.defaultRangeSize = defaultRangeSize;
        this.recoveryRangeSize = recoveryRangeSize;
        this.lastReadPosition = offset;
        this.lastSeekPosition = offset;
        assert offset >= compoundFileOffset;
        assert getBufferSize() <= BlobStoreCacheService.DEFAULT_CACHED_BLOB_SIZE; // must be able to cache at least one buffer's worth
    }

    @Override
    protected void doReadInternal(ByteBuffer b) throws IOException {
        final long position = getAbsolutePosition();
        final int length = b.remaining();

        logger.trace("readInternal: read [{}-{}] ([{}] bytes) from [{}]", position, position + length, length, this);

        try {
            final ByteRange blobCacheByteRange = rangeToReadFromBlobCache(position, length);
            if (blobCacheByteRange.isEmpty()) {
                readWithoutBlobCache(b);
            } else {
                readWithBlobCache(b, blobCacheByteRange);
            }
        } catch (final Exception e) {
            // may have partially filled the buffer before the exception was thrown, so try and get the remainder directly.
            final int alreadyRead = length - b.remaining();
            final int bytesRead = readDirectlyIfAlreadyClosed(position + alreadyRead, b, e);
            assert alreadyRead + bytesRead == length : alreadyRead + " + " + bytesRead + " vs " + length;
        }

        readComplete(position, length);
    }

    protected abstract void readWithoutBlobCache(ByteBuffer b) throws Exception;

    private void readWithBlobCache(ByteBuffer b, ByteRange blobCacheByteRange) throws Exception {
        final long position = getAbsolutePosition();
        final int length = b.remaining();

        final CacheFile cacheFile = cacheFileReference.get();

        // Can we serve the read directly from disk? If so, do so and don't worry about anything else.
        final Future<Integer> waitingForRead = cacheFile.readIfAvailableOrPending(ByteRange.of(position, position + length), chan -> {
            final int read = readCacheFile(chan, position, b);
            assert read == length : read + " vs " + length;
            return read;
        });

        if (waitingForRead != null) {
            final Integer read = waitingForRead.get();
            assert read == length;
            return;
        }

        final CachedBlob cachedBlob = directory.getCachedBlob(fileInfo.physicalName(), blobCacheByteRange);
        assert cachedBlob == CachedBlob.CACHE_MISS || cachedBlob == CachedBlob.CACHE_NOT_READY || cachedBlob.from() <= position;
        assert cachedBlob == CachedBlob.CACHE_MISS || cachedBlob == CachedBlob.CACHE_NOT_READY || length <= cachedBlob.length();

        if (cachedBlob == CachedBlob.CACHE_MISS || cachedBlob == CachedBlob.CACHE_NOT_READY) {
            // We would have liked to find a cached entry but we did not find anything: the cache on the disk will be requested
            // so we compute the region of the file we would like to have the next time. The region is expressed as a tuple of
            // {start, end} where positions are relative to the whole file.

            // We must fill in a cache miss even if CACHE_NOT_READY since the cache index is only created on the first put.
            // TODO TBD use a different trigger for creating the cache index and avoid a put in the CACHE_NOT_READY case.
            final ByteRange rangeToWrite = blobCacheByteRange;
            final ByteRange rangeToRead = ByteRange.of(position, position + length);
            assert rangeToRead.isSubRangeOf(rangeToWrite) : rangeToRead + " vs " + rangeToWrite;
            assert rangeToRead.length() == b.remaining() : b.remaining() + " vs " + rangeToRead;

            final Future<Integer> populateCacheFuture = cacheFile.populateAndRead(
                rangeToWrite,
                rangeToRead,
                channel -> readCacheFile(channel, position, b),
                this::writeCacheFile,
                directory.cacheFetchAsyncExecutor()
            );

            fillIndexCache(cacheFile, blobCacheByteRange);
            if (compoundFileOffset > 0L
                && blobCacheByteRange.equals(headerBlobCacheByteRange)
                && footerBlobCacheByteRange.isEmpty() == false) {
                fillIndexCache(cacheFile, footerBlobCacheByteRange);
            }

            final int bytesRead = populateCacheFuture.get();
            assert bytesRead == length : bytesRead + " vs " + length;
        } else {
            logger.trace("reading [{}] bytes of file [{}] at position [{}] using cache index", length, fileInfo.physicalName(), position);
            final int sliceOffset = toIntBytes(position - cachedBlob.from());
            final BytesRefIterator cachedBytesIterator = cachedBlob.bytes().slice(sliceOffset, length).iterator();
            BytesRef bytesRef;
            int copiedBytes = 0;
            while ((bytesRef = cachedBytesIterator.next()) != null) {
                b.put(bytesRef.bytes, bytesRef.offset, bytesRef.length);
                copiedBytes += bytesRef.length;
            }
            assert copiedBytes == length : "copied " + copiedBytes + " but expected " + length;
            stats.addIndexCacheBytesRead(cachedBlob.length());

            try {
                final ByteRange cachedRange = ByteRange.of(cachedBlob.from(), cachedBlob.to());
                cacheFile.populateAndRead(
                    cachedRange,
                    cachedRange,
                    channel -> cachedBlob.length(),
                    (channel, from, to, progressUpdater) -> {
                        final long startTimeNanos = stats.currentTimeNanos();
                        final BytesRefIterator iterator = cachedBlob.bytes()
                            .slice(toIntBytes(from - cachedBlob.from()), toIntBytes(to - from))
                            .iterator();
                        long writePosition = from;
                        BytesRef current;
                        while ((current = iterator.next()) != null) {
                            final ByteBuffer byteBuffer = ByteBuffer.wrap(current.bytes, current.offset, current.length);
                            while (byteBuffer.remaining() > 0) {
                                writePosition += positionalWrite(channel, writePosition, byteBuffer);
                                progressUpdater.accept(writePosition);
                            }
                        }
                        assert writePosition == to : writePosition + " vs " + to;
                        final long endTimeNanos = stats.currentTimeNanos();
                        stats.addCachedBytesWritten(to - from, endTimeNanos - startTimeNanos);
                        logger.trace("copied bytes [{}-{}] of file [{}] from cache index to disk", from, to, fileInfo);
                    },
                    directory.cacheFetchAsyncExecutor()
                );
            } catch (Exception e) {
                logger.debug(
                    new ParameterizedMessage(
                        "failed to store bytes [{}-{}] of file [{}] obtained from index cache",
                        cachedBlob.from(),
                        cachedBlob.to(),
                        fileInfo
                    ),
                    e
                );
                // oh well, no big deal, at least we can return them to the caller.
            }
        }
    }

    private void readComplete(long position, int length) {
        stats.incrementBytesRead(lastReadPosition, position, length);
        lastReadPosition = position + length;
        lastSeekPosition = lastReadPosition;
    }

    protected int readCacheFile(final FileChannel fc, final long position, final ByteBuffer buffer) throws IOException {
        assert assertFileChannelOpen(fc);
        final int bytesRead = Channels.readFromFileChannel(fc, position, buffer);
        if (bytesRead == -1) {
            throw new EOFException(
                String.format(
                    Locale.ROOT,
                    "unexpected EOF reading [%d-%d] from %s",
                    position,
                    position + buffer.remaining(),
                    cacheFileReference
                )
            );
        }
        stats.addCachedBytesRead(bytesRead);
        return bytesRead;
    }

    protected void writeCacheFile(final FileChannel fc, final long start, final long end, final Consumer<Long> progressUpdater)
        throws IOException {
        assert assertFileChannelOpen(fc);
        assert assertCurrentThreadMayWriteCacheFile();
        final long length = end - start;
        final byte[] copyBuffer = new byte[toIntBytes(Math.min(COPY_BUFFER_SIZE, length))];
        logger.trace(() -> new ParameterizedMessage("writing range [{}-{}] to cache file [{}]", start, end, cacheFileReference));

        long bytesCopied = 0L;
        long remaining = end - start;
        final long startTimeNanos = stats.currentTimeNanos();
        try (InputStream input = openInputStreamFromBlobStore(start, length)) {
            while (remaining > 0L) {
                final int bytesRead = readSafe(input, copyBuffer, start, end, remaining, cacheFileReference);
                positionalWrite(fc, start + bytesCopied, ByteBuffer.wrap(copyBuffer, 0, bytesRead));
                bytesCopied += bytesRead;
                remaining -= bytesRead;
                progressUpdater.accept(start + bytesCopied);
            }
            final long endTimeNanos = stats.currentTimeNanos();
            stats.addCachedBytesWritten(bytesCopied, endTimeNanos - startTimeNanos);
        }
    }

    private void fillIndexCache(CacheFile cacheFile, ByteRange indexCacheMiss) {
        final Releasable onCacheFillComplete = stats.addIndexCacheFill();
        final Future<Integer> readFuture = cacheFile.readIfAvailableOrPending(indexCacheMiss, channel -> {
            final int indexCacheMissLength = toIntBytes(indexCacheMiss.length());

            // We assume that we only cache small portions of blobs so that we do not need to:
            // - use a BigArrays for allocation
            // - use an intermediate copy buffer to read the file in sensibly-sized chunks
            // - release the buffer once the indexing operation is complete

            final ByteBuffer byteBuffer = ByteBuffer.allocate(indexCacheMissLength);
            Channels.readFromFileChannelWithEofException(channel, indexCacheMiss.start(), byteBuffer);
            // NB use Channels.readFromFileChannelWithEofException not readCacheFile() to avoid counting this in the stats
            byteBuffer.flip();
            final BytesReference content = BytesReference.fromByteBuffer(byteBuffer);
            directory.putCachedBlob(fileInfo.physicalName(), indexCacheMiss.start(), content, new ActionListener<Void>() {
                @Override
                public void onResponse(Void response) {
                    onCacheFillComplete.close();
                }

                @Override
                public void onFailure(Exception e1) {
                    onCacheFillComplete.close();
                }
            });
            return indexCacheMissLength;
        });

        if (readFuture == null) {
            // Normally doesn't happen, we're already obtaining a range covering all cache misses above, but theoretically
            // possible in the case that the real populateAndRead call already failed to obtain this range of the file. In that
            // case, simply move on.
            onCacheFillComplete.close();
        }
    }

    /**
     * Perform a single {@code read()} from {@code inputStream} into {@code copyBuffer}, handling an EOF by throwing an {@link EOFException}
     * rather than returning {@code -1}. Returns the number of bytes read, which is always positive.
     *
     * Most of its arguments are there simply to make the message of the {@link EOFException} more informative.
     */
    protected static int readSafe(
        InputStream inputStream,
        byte[] copyBuffer,
        long rangeStart,
        long rangeEnd,
        long remaining,
        CacheFileReference cacheFileReference
    ) throws IOException {
        final int len = (remaining < copyBuffer.length) ? toIntBytes(remaining) : copyBuffer.length;
        final int bytesRead = inputStream.read(copyBuffer, 0, len);
        if (bytesRead == -1) {
            throw new EOFException(
                String.format(
                    Locale.ROOT,
                    "unexpected EOF reading [%d-%d] ([%d] bytes remaining) from %s",
                    rangeStart,
                    rangeEnd,
                    remaining,
                    cacheFileReference
                )
            );
        }
        assert bytesRead > 0 : bytesRead;
        return bytesRead;
    }

    protected static boolean assertFileChannelOpen(FileChannel fileChannel) {
        assert fileChannel != null;
        assert fileChannel.isOpen();
        return true;
    }

    @SuppressForbidden(reason = "Use positional writes on purpose")
    protected static int positionalWrite(FileChannel fc, long start, ByteBuffer byteBuffer) throws IOException {
        assert assertCurrentThreadMayWriteCacheFile();
        return fc.write(byteBuffer, start);
    }

    protected static boolean assertCurrentThreadMayWriteCacheFile() {
        final String threadName = Thread.currentThread().getName();
        assert isCacheFetchAsyncThread(threadName)
            : "expected the current thread [" + threadName + "] to belong to the cache fetch async thread pool";
        return true;
    }

    protected int readDirectlyIfAlreadyClosed(long position, ByteBuffer b, Exception e) throws IOException {
        if (e instanceof AlreadyClosedException || (e.getCause() != null && e.getCause() instanceof AlreadyClosedException)) {
            try {
                // cache file was evicted during the range fetching, read bytes directly from blob container
                final long length = b.remaining();
                final byte[] copyBuffer = new byte[toIntBytes(Math.min(COPY_BUFFER_SIZE, length))];
                logger.trace(
                    () -> new ParameterizedMessage(
                        "direct reading of range [{}-{}] for cache file [{}]",
                        position,
                        position + length,
                        cacheFileReference
                    )
                );

                int bytesCopied = 0;
                final long startTimeNanos = stats.currentTimeNanos();
                try (InputStream input = openInputStreamFromBlobStore(position, length)) {
                    long remaining = length;
                    while (remaining > 0) {
                        final int len = (remaining < copyBuffer.length) ? (int) remaining : copyBuffer.length;
                        int bytesRead = input.read(copyBuffer, 0, len);
                        if (bytesRead == -1) {
                            throw new EOFException(
                                String.format(
                                    Locale.ROOT,
                                    "unexpected EOF reading [%d-%d] ([%d] bytes remaining) from %s",
                                    position,
                                    position + length,
                                    remaining,
                                    cacheFileReference
                                )
                            );
                        }
                        b.put(copyBuffer, 0, bytesRead);
                        bytesCopied += bytesRead;
                        remaining -= bytesRead;
                        assert remaining == b.remaining() : remaining + " vs " + b.remaining();
                    }
                    final long endTimeNanos = stats.currentTimeNanos();
                    stats.addDirectBytesRead(bytesCopied, endTimeNanos - startTimeNanos);
                }
                return bytesCopied;
            } catch (Exception inner) {
                e.addSuppressed(inner);
            }
        }
        throw new IOException("failed to read data from cache", e);
    }

    protected abstract long getDefaultRangeSize();

    protected ByteRange computeRange(long position) {
        final long rangeSize = getDefaultRangeSize();
        long start = (position / rangeSize) * rangeSize;
        long end = Math.min(start + rangeSize, fileInfo.length());
        return ByteRange.of(start, end);
    }

    @Override
    protected void seekInternal(long pos) throws IOException {
        if (pos > length()) {
            throw new EOFException("Reading past end of file [position=" + pos + ", length=" + length() + "] for " + toString());
        } else if (pos < 0L) {
            throw new IOException("Seeking to negative position [" + pos + "] for " + toString());
        }
        final long position = pos + this.offset;
        stats.incrementSeeks(lastSeekPosition, position);
        lastSeekPosition = position;
    }

    @Override
    public void doClose() {
        if (isClone == false) {
            cacheFileReference.releaseOnClose();
        }
    }

    static class CacheFileReference implements CacheFile.EvictionListener {

        private final long fileLength;
        private final CacheKey cacheKey;
        private final SearchableSnapshotDirectory directory;
        final AtomicReference<CacheFile> cacheFile = new AtomicReference<>(); // null if evicted or not yet acquired

        CacheFileReference(SearchableSnapshotDirectory directory, String fileName, long fileLength) {
            this.cacheKey = directory.createCacheKey(fileName);
            this.fileLength = fileLength;
            this.directory = directory;
        }

        CacheFile get() throws Exception {
            CacheFile currentCacheFile = cacheFile.get();
            if (currentCacheFile != null) {
                return currentCacheFile;
            }

            final CacheFile newCacheFile = directory.getCacheFile(cacheKey, fileLength);
            synchronized (this) {
                currentCacheFile = cacheFile.get();
                if (currentCacheFile != null) {
                    return currentCacheFile;
                }
                newCacheFile.acquire(this);
                final CacheFile previousCacheFile = cacheFile.getAndSet(newCacheFile);
                assert previousCacheFile == null;
                return newCacheFile;
            }
        }

        @Override
        public void onEviction(final CacheFile evictedCacheFile) {
            synchronized (this) {
                if (cacheFile.compareAndSet(evictedCacheFile, null)) {
                    evictedCacheFile.release(this);
                }
            }
        }

        void releaseOnClose() {
            synchronized (this) {
                final CacheFile currentCacheFile = cacheFile.getAndSet(null);
                if (currentCacheFile != null) {
                    currentCacheFile.release(this);
                }
            }
        }

        @Override
        public String toString() {
            return "CacheFileReference{"
                + "cacheKey='"
                + cacheKey
                + '\''
                + ", fileLength="
                + fileLength
                + ", acquired="
                + (cacheFile.get() != null)
                + '}';
        }
    }
}

redpajama_set_name: RedPajamaGithub


This statistic represents the average price of common clay between 2007 and 2018. The average price of common clay stood at approximately 13 U.S. dollars per ton in 2018. Clay is one of the most ancient building materials on earth.
The figures for 2007 through 2013 are taken from a previous edition of the publication; the figure for 2018 is an estimate.


text:
UK: New survey shows diamond shops can't assure customers that stones are not conflict diamonds
18 Oct 2004, 12:00am
The survey, presented to this week's World Diamond Congress (WDC) in New York, shows that almost two years after the diamond industry agreed to a system of self-regulation to prevent the trade in diamonds from regions of conflict, retailers in the UK are still failing to live up to their promises.
Amnesty International members around the country visited over 330 UK high-street shops and questioned staff about their policy on conflict diamonds:
Nearly half (46 per cent) could not provide a copy of their company policy on conflict diamonds(1), with over a fifth (22 per cent) explicitly stating that they had no policy on the issue.
Only 38 per cent of salespeople said that they had received training about conflict diamonds.
59 per cent of UK retailers failed even to respond to letters to Head Office requesting written information about company policy on conflict diamonds, including major UK diamond jewellery retailers like Asprey, Theo Fennell and Debenhams.
The survey shows that the diamond industry has failed to adequately implement a system of self regulation launched in January 2003. The system requires written warranties from all buyers and sellers of diamonds and incorporates a code of conduct to support the international Kimberley Process Certification Scheme preventing the trade in conflict diamonds.
Now Amnesty International and Global Witness are calling for governments to step in and ensure effective, independent monitoring of the Kimberley Process and the industry's code of conduct.
Amnesty International UK Director Kate Allen said:
"The trade in conflict diamonds has fuelled protracted and bloody wars in Angola, Democratic Republic of Congo, Liberia and Sierra Leone, destroying nations and costing an estimated 3.7 million lives.
"The diamond industry is not taking the issue of conflict diamonds seriously enough. Governments must step in and audit companies to ensure that diamonds are not funding conflict or human rights abuses.
"Consumers can really make a difference and force the industry to clean up its act. If you're buying a diamond, demand an assurance that it's clean. Diamonds may be expensive, but they needn't cost people's lives."
Global Witness and Amnesty International are calling on governments in the Kimberley Process to ensure that the diamond industry fully implements the code of conduct to which it agreed in January 2003.
Governments, including the UK, must carry out rigorous auditing and inspections of companies to ensure the industry is implementing the regulations it has committed to and report back in 2005.
As well as visiting shops, Amnesty International and Global Witness also wrote to over 80 major diamond jewellery retailers in the UK and US. The main findings include the following:
Out of 85 companies that were sent letters requesting written information about their policies, 48 (56%) failed to respond including major diamond jewellery retailers like Asprey, Theo Fennell and Debenhams in the UK, and Costco Whole Sale Corporation, T.J.Maxx and Kmart in the US.
32 out of the 37 companies that responded (86%) are implementing the system of warranties and have a policy to prevent dealing in conflict diamonds. However, 30 of the companies responding (81%) did not provide adequate details on how the system of warranties is being implemented and audited.
Today's results are part of a wider ongoing survey in which more than 800 retailers and suppliers have been contacted in Australia, Belgium, France, Germany, Italy, The Netherlands and Switzerland but so far only 52 have responded with information on their policy.
Corinna Gilfillan of Global Witness said:
"As the public face of the industry, diamond jewellery retailers must do more to show their commitment to comply with the self-regulation and actively promote compliance by their suppliers.
"The World Diamond Council and other key industry bodies must develop a common standard for verifying compliance, and we hope that trade organisations will follow Jewellers of America in monitoring its members."
Based on responses to the question "Does the company have a policy on conflict diamonds and if so, can you provide a copy?". 22% said that there was no company policy; 5% said 'no comment' or referred Amnesty to Head Office and 6% did not know.
Extract from The Essential Guide to Implementing the Kimberley Process, World Diamond Council, 2003:
In order to strengthen the credibility of the Kimberley Process agreement, as well as to provide the means by which consumers might more effectively be assured of the origin of their diamonds, the World Diamond Council proposed that the industry create and implement a System of Warranties for diamonds. Under this system, which has been endorsed by all Kimberley Process participants, all buyers and sellers of both rough and polished diamonds must make the following affirmative statement on all invoices:
"The diamonds herein invoiced have been purchased from legitimate sources not involved in funding conflict and in compliance with United Nations resolutions. The seller hereby guarantees that these diamonds are conflict free, based on personal knowledge and/or written guarantees provided by the supplier of these diamonds."
View the executive summary (pdf)
Read the background report (pdf) /b>


Asha belongs to the De Run family of Bundoora and is a huge bundle of energy and with two young boys in the family, the three of them never seem to run out of steam.
Dr.Rachel McCue has been seeing Asha at Greensborough for her puppy vaccinations and recently speyed her. This was no light or small job with Asha weighing in at 36kg at 6 months of age. Asha is a Leonberger. This is not a commonly seen breed for our area. They are known as a giant breed, with a heavy double coat, normally tan colour with a black mask. Their lifespan is approximately 8-9 years with mature females weighing around 52kg and males averaging 77kg. These massive dogs tend to have a good temperament if entertained enough and given attention. They tend to be adaptable with a fearless, loving nature. The name derives from the city of Leonberg in Germany. According to legend the Leonberger was bred as a "symbolic dog" that would mimic the lion in the town crest. Hence this is due to the colour and heavy coat.
While here for her surgery visit, our staff quickly took a liking to Asha. She was bounding with energy, even though she had been fasted for her procedure and was fun natured. She saw other animals as an opportunity to play, luckily she was restrained and all we saw was positives from her. Asha also attended our puppy school in the clinic, being a talking point and very social with the smaller pupils!
Our next visit from Asha will be to have her spey sutures removed and hopefully with a healthy year ahead, just for her routine vaccinations, heartworm tablets and her large breed puppy food. Well done to the De Run family for having a happy, healthy, disciplined when not excited, fun loving new family member.


Identification: Ohio OELPA Screener- given by the EL teacher to a student to see if they qualify for services. This test is given to new students whose first language is not English and another language other then English was indicated on the Home Language Survey at enrollment.
Yearly assessment: OELPA (Ohio English Language of Proficiency Assessment) Only students designated as an English Learner (EL) take this assessment. It assesses a student's language abilities in Reading, Writing, Speaking, and Listening.
Students designated English Learners (EL) will receive accommodations during State assessments. During assessments, students may use a word-to-word dictionary and have extended time to complete the assessment within the same day.


Offering a balcony with views to Robben Island, this more spacious room has floor-to-ceiling windows. The air-conditioned room has an en-suite bathroom with walk-in rain shower and 2 basins. Bathrobes and slippers are provided. The unit also offers under floor heating, a coffee and tea station, a mini bar and a flat-screen satellite TV. Room size 36 m².


Webster's Bible Psalms Chapter 6:1-10.
6:2 \6:1\To the chief Musician on Neginoth upon Sheminith, A Psalm of David. O LORD, rebuke me not in thy anger, neither chasten me in thy hot displeasure.
6:3 \6:2\Have mercy upon me, O LORD; for I am weak: O LORD, heal me; for my bones are agitated.
6:4 \6:3\My soul is also greatly disquieted: but thou, O LORD, how long?
6:5 \6:4\Return, O LORD, deliver my soul: Oh save me for thy mercies sake.
6:6 \6:5\For in death there is no remembrance of thee: in the grave who will give thee thanks?
6:7 \6:6\I am weary with my groaning; all the night I make my bed to swim; I water my couch with my tears.
6:8 \6:7\My eye is consumed because of grief; it groweth old because of all my enemies.
6:9 \6:8\Depart from me, all ye workers of iniquity; for the LORD hath heard the voice of my weeping.
6:10 \6:9\The LORD hath heard my supplication; the LORD will receive my prayer.
6:11 \6:10\Let all my enemies be ashamed and greatly disquieted: let them return and be suddenly ashamed.


text:
Eating behavior in relation to prevalence of overweight among Japanese men
Yasumi Kimura, Akiko Nanri, Yumi Matsushita, Satoshi Sasaki, Tetsuya Mizoue
Obesity is an important risk factor for lifestyle diseases. There has been much interest in the role of eating behavior in the development of obesity, but findings from population-based epidemiologic studies are limited and inconsistent. The objective of our cross-sectional study was to examine the association between eating behavior and prevalence of overweight. Subjects were 290 men of two municipal offices in northeastern Kyusyu, Japan. A positive association was found between overweight and some eating behaviors; multivariate-adjusted odds ratios (95% confidence intervals) for overweight were 4.33 (2.46-7.64), 2.29 (1.22-4.32), and 2.01 (1.06-3.80) for the behaviors of eating quickly, eating until full and eating fatty foods, respectively. Moreover, the prevalence of overweight was further increased when these eating behaviors were combined; multivariate odds ratios (95% confidence intervals) of overweight for men with 1, 2 and ≥3 versus no high-risk eating behaviors were 2.66 (1.27-5.56), 4.32 (1.87-9.97) and 7.32 (3.01-17.84), respectively (p<0.0001 for trend). Our findings suggest that eating quickly, eating until full and eating fatty foods are related to overweight in Japanese men.
Asia Pacific Journal of Clinical Nutrition
Fingerprint Dive into the research topics of 'Eating behavior in relation to prevalence of overweight among Japanese men'. Together they form a unique fingerprint.
Feeding Behavior Medicine & Life Sciences
Overweight Medicine & Life Sciences
Eating Medicine & Life Sciences
Food Medicine & Life Sciences
Obesity Medicine & Life Sciences
Risk-Taking Medicine & Life Sciences
Kimura, Y., Nanri, A., Matsushita, Y., Sasaki, S., & Mizoue, T. (2011). Eating behavior in relation to prevalence of overweight among Japanese men. Asia Pacific Journal of Clinical Nutrition, 20(1), 29-34.
Eating behavior in relation to prevalence of overweight among Japanese men. / Kimura, Yasumi; Nanri, Akiko; Matsushita, Yumi; Sasaki, Satoshi; Mizoue, Tetsuya.
In: Asia Pacific Journal of Clinical Nutrition, Vol. 20, No. 1, 01.03.2011, p. 29-34.
Kimura, Y, Nanri, A, Matsushita, Y, Sasaki, S & Mizoue, T 2011, 'Eating behavior in relation to prevalence of overweight among Japanese men', Asia Pacific Journal of Clinical Nutrition, vol. 20, no. 1, pp. 29-34.
Kimura Y, Nanri A, Matsushita Y, Sasaki S, Mizoue T. Eating behavior in relation to prevalence of overweight among Japanese men. Asia Pacific Journal of Clinical Nutrition. 2011 Mar 1;20(1):29-34.
Kimura, Yasumi ; Nanri, Akiko ; Matsushita, Yumi ; Sasaki, Satoshi ; Mizoue, Tetsuya. / Eating behavior in relation to prevalence of overweight among Japanese men. In: Asia Pacific Journal of Clinical Nutrition. 2011 ; Vol. 20, No. 1. pp. 29-34.
@article{3283a6c001d94bf4ba7326977c4744a3,
title = "Eating behavior in relation to prevalence of overweight among Japanese men",
abstract = "Obesity is an important risk factor for lifestyle diseases. There has been much interest in the role of eating behavior in the development of obesity, but findings from population-based epidemiologic studies are limited and inconsistent. The objective of our cross-sectional study was to examine the association between eating behavior and prevalence of overweight. Subjects were 290 men of two municipal offices in northeastern Kyusyu, Japan. A positive association was found between overweight and some eating behaviors; multivariate-adjusted odds ratios (95% confidence intervals) for overweight were 4.33 (2.46-7.64), 2.29 (1.22-4.32), and 2.01 (1.06-3.80) for the behaviors of eating quickly, eating until full and eating fatty foods, respectively. Moreover, the prevalence of overweight was further increased when these eating behaviors were combined; multivariate odds ratios (95% confidence intervals) of overweight for men with 1, 2 and ≥3 versus no high-risk eating behaviors were 2.66 (1.27-5.56), 4.32 (1.87-9.97) and 7.32 (3.01-17.84), respectively (p<0.0001 for trend). Our findings suggest that eating quickly, eating until full and eating fatty foods are related to overweight in Japanese men.",
author = "Yasumi Kimura and Akiko Nanri and Yumi Matsushita and Satoshi Sasaki and Tetsuya Mizoue",
journal = "Asia Pacific Journal of Clinical Nutrition",
publisher = "HEC Press",
T1 - Eating behavior in relation to prevalence of overweight among Japanese men
AU - Kimura, Yasumi
AU - Nanri, Akiko
AU - Matsushita, Yumi
AU - Sasaki, Satoshi
AU - Mizoue, Tetsuya
N2 - Obesity is an important risk factor for lifestyle diseases. There has been much interest in the role of eating behavior in the development of obesity, but findings from population-based epidemiologic studies are limited and inconsistent. The objective of our cross-sectional study was to examine the association between eating behavior and prevalence of overweight. Subjects were 290 men of two municipal offices in northeastern Kyusyu, Japan. A positive association was found between overweight and some eating behaviors; multivariate-adjusted odds ratios (95% confidence intervals) for overweight were 4.33 (2.46-7.64), 2.29 (1.22-4.32), and 2.01 (1.06-3.80) for the behaviors of eating quickly, eating until full and eating fatty foods, respectively. Moreover, the prevalence of overweight was further increased when these eating behaviors were combined; multivariate odds ratios (95% confidence intervals) of overweight for men with 1, 2 and ≥3 versus no high-risk eating behaviors were 2.66 (1.27-5.56), 4.32 (1.87-9.97) and 7.32 (3.01-17.84), respectively (p<0.0001 for trend). Our findings suggest that eating quickly, eating until full and eating fatty foods are related to overweight in Japanese men.
AB - Obesity is an important risk factor for lifestyle diseases. There has been much interest in the role of eating behavior in the development of obesity, but findings from population-based epidemiologic studies are limited and inconsistent. The objective of our cross-sectional study was to examine the association between eating behavior and prevalence of overweight. Subjects were 290 men of two municipal offices in northeastern Kyusyu, Japan. A positive association was found between overweight and some eating behaviors; multivariate-adjusted odds ratios (95% confidence intervals) for overweight were 4.33 (2.46-7.64), 2.29 (1.22-4.32), and 2.01 (1.06-3.80) for the behaviors of eating quickly, eating until full and eating fatty foods, respectively. Moreover, the prevalence of overweight was further increased when these eating behaviors were combined; multivariate odds ratios (95% confidence intervals) of overweight for men with 1, 2 and ≥3 versus no high-risk eating behaviors were 2.66 (1.27-5.56), 4.32 (1.87-9.97) and 7.32 (3.01-17.84), respectively (p<0.0001 for trend). Our findings suggest that eating quickly, eating until full and eating fatty foods are related to overweight in Japanese men.
JO - Asia Pacific Journal of Clinical Nutrition
JF - Asia Pacific Journal of Clinical Nutrition


Home Construction & technology Which is the best spot to watch Dubai Fountain show from?
"You may experience some water spray from The Dubai Fountain show," reads a sign board placed in front of the lower part of the bridge extending over the Dubai Mall Lake.
The lower part forms an addition to the existing bridge connecting Dubai Mall to Souk al Bahar, and was completed with the end of Ramadan.
"The construction is part of Emaar's ongoing efforts to enhance visitor experience in Downtown Dubai," said an Emaar spokesperson.
During of Dubai Fountain show times, which is every 30 minutes during evening hours, the area around the lake is quickly filled up with hundreds of spectators.
The bridge is one of the popular locations from which the spectacle is viewed. As soon as the show is over the crowd disperses, and crossing the bridge becomes close to impossible.
With the extension of the bridge at least one extra lane has been guaranteed.
The addition to the bridge was built without elevation, so all passengers, including those in wheelchair or with strollers can cross it, and is located at the lakeside, hence the splash warning.


text:
InCozumel, Mexico, Photography, Scuba Diving, Subway Handle, Travel
June 17, 2018ByNY See You Later
Our second dive stop with Barefoot Dive Center was the Felipe Xicotencatl Shipwreck. This was our first shipwreck dive, and is likely one of the best we'll ever experience. This vessel was originally used as a mine sweeper for the US Navy from 1944—1962, and was then sold to the Mexican Navy. It was then renamed the Felipe Xicotencatl C-53. In 1999, it was decommissioned, donated to the Cozumel underwater park and sunk offshore from Chankanaab Park.
This amazing underwater attraction is 154 feet (56 meters) long, 33 feet (10 meters) wide and 40 feet (12 meters) high.
Time stood still as we swam around and through the vessel while observing it's aged architecture, advanced coral formations and countless curious fish. A surprise visit by a barracuda made our hearts race and provided some exciting photo opportunities.
We thoroughly enjoyed the experience and highly recommend it. Opportunities like this one are the reason we wanted to become certified scuba divers. Diving in the crystal-clear waters of Cozumel is a must, and it's obvious why so many people turn it into a habit.
< Continued from Palancar Gardens Diving
#nyseeyoulaterBarefoot Diving CenterFelipe Xicontencalt Shipwreck DivingNY See You Laterscuba diving


Belagavi City Corporation (BCC), Govt. of Karnataka announces new job vacancies for various posts to fill 04 positions.
Through Belagavi City Corporation 2018 Computer Operator, JE job announcement, candidates who completed Degree, PG in relevant disciplines, with minimum qualification, experienced and have expertise in relevant areas can apply for the vacancies.
The announced BCC 2018 vacancies are for Personal Secretary, Computer Operator, Junior Engineer (Civil) and for Chief Financial Officer posts.
Candidates selected for the announced jobs will be recruited on contract basis, temporarily for Belagavi Smart City Project, and will be renewable every year and limited till the completion of project.
Interested aspirants for the desired job, have to apply through offline mode.
Junior Engineer (Civil): 01 Post.
Chief Financial Officer: 01 Post.
Candidates applying for the vacancies announced for Belagavi City Corporation, should ahve Degree, PG in relevant disciplines and should have experienced and relevant expertise required for the announced posts to be eligible to apply.


text:
PRCC celebrates Homecoming 2013
Submitted by braswell on October 21, 2013 – 10:37am
POPLARVILLE – Pearl River Community College celebrated homecoming Saturday, Oct. 19, with the presentation of awards, the crowning of Melissa Dragon as queen and a big win on the football field.
The day began with the induction of five star athletes into the PRCC Sports Hall of Fame. They include baseball standout Greg Guidry of Spring, Texas, basketball star Freddie Jordan of Picayune, All-American basketball player Audosha Kelley of Savannah, Ga., former NFL player Jeffrey Posey of Hattiesburg and All-American linebacker James W. "Snuffy" Smith of Foxworth.
At the annual Alumni Luncheon, Dr. John Grant Jr. of Poplarville was presented the Alumnus of the Year Award. Grant graduated from PRCC in 1966 and earned degrees from the University of Mississippi and the University of Southern Mississippi. He taught high school for several years before returning to PRCC where he spent 32 years as a teacher and administrator.
"Perhaps the greatest accolade is the thing I hear the most – that John Grant was a master teacher," PRCC President Dr. William Lewis said before presenting the award.
Grant retired in 2011 as vice president for instruction.
"It's gratifying and humbling to be included with others who have won this award," Grant said. "I've been dedicated to doing whatever I could to help students learn. When all is said and done, that's why we're here."
Lewis presented the Distinguished Service Award to The Asbury Foundation of Hattiesburg, which has given more than $620,600 in grants for allied health programs and scholarships at PRCC.
"I look forward to a continued relationship with Pearl River," said Bill Ray, chief executive officer of the foundation. "They do a great job."
Recipients of scholarships honoring former PRCC coaches were also recognized – Tanner Bryan of Picayune received the Dobie Holden Memorial Scholarship and Carson Miller of West Point received the Keith Daniels Memorial Football Scholarship.
Grant and members of the Sports Hall of Fame were recognized on the field at Dobie Holden Stadium before kickoff against East Central. The Wildcats defeated the Warriors 45-7.
Dragon, a sophomore from Picayune, and her court were presented at half-time. Her court included sophomore maids Victoria Farmer of Picayune and Miranda Fazende of Poplarville, Forrest County Center sophomore maid Morgan Cutrer of Tylertown, freshman maids Chelsea Bolton of New Augusta, Shelby L. Perry of Sumrall and Kaitlin Cooper of Picayune, Forrest County Center freshman maid Jelea Williams of Hattiesburg and Hancock Center maid Morgan Gallagher of Kiln.
Dr. John Grant Jr. of Poplarville, left, received the 2013 Alumnus of the Year Award from Pearl River Community College President Dr. William Lewis during homecoming on Saturday, Oct. 19.
PRCC Public Relations photo
Bill Ray, left, chief executive officer of The Asbury Foundation of Hattiesburg, accepted the Pearl River Community College Distinguished Service Award from PRCC President Dr. William Lewis at homecoming on Saturday, Oct. 19.
The 2013 Pearl River Community College homecoming court is, from left, freshman maids Chelsea Bolton of New Augusta and Shelby Perry of Sumrall, Forrest County Center sophomore maid Morgan Cutrer of Tylertown, sophomore maid Miranda Fazende of Poplarville, queen Melissa Dragon of Picayune, Forrest County Center freshman maid Jelea Williams of Hattiesburg, Hancock Center maid Morgan Gallagher of Kiln, sophomore maid Victoria Farmer and freshman maid Kaitlin Cooper, both of Picyaune.
Pearl River Community College President Dr. William Lewis congratulates Melissa Dragon of Picayune after crowning her 2013 Homecoming queen Saturday. Looking on is her father Mark Dragon. The PRCC Wildcats defeated East Central 45-7.
Pearl River Community College honored Dr. John Grant of Poplarville, left, as Alumnus of the Year at Homecoming Saturday. Also honored were Sports Hall of Fame inductees, from left, Freddie Jordan of Picayune, Greg Guidry of Spring, Texas; Jeffrey Posey of Hattiesburg and James W. "Snuffy" Smith of Foxworth.


Oceanfront condo with an enchanting view and resort style amenities!
Oceanfront porch area accessible from both the living room and master bedroom. Porch view. Open dining and living areas with oceanfront porch. Living room with oceanfront porch area. Living room with oceanfront porch area. Living, dining and kitchen areas. Dining, kitchen and entrance hall. Kitchen. Oceanfront master bedroom with queen bed, private bathroom and access to porch. Oceanfront master bedroom with queen bed, private bathroom and access to porch. Oceanfront master bedroom with queen bed, private bathroom and access to porch. Master bathroom. Guest bedroom with 2 double beds. Hall guest bathroom. Street view of condo complex. Beach view of condo complex. Community pool area. Community tennis court. Beach view of condo complex. Beach area. Paddle boarding is a popular event around Wrightsville Beach and is home to the Carolina Cup SUP Race. Shops, Restaurants & Movie Theater are just a short drive away at Mayfaire Town Center, conveniently located less than 3 miles off the beach.
Station One Condos - Oceanfront 2 bedroom, 2 bath condo within easy walking distance to shops, restaurant and grocery in the heart of Wrightsville Beach! Beautiful landscaped grounds, 24 hour security and many amenities for your vacation enjoyment with oceanfront community swimming pool, tennis court, bicycle room, BBQ grill area on ground level with picnic tables for outside dining.
This nicely decorated unit overlooks the pool with oceanfront balcony. Building has elevator to each floor for your convenience. Coin laundry facilities on each floor. Reserved parking for 2 cars.
No Pets. No Smoking. Occupancy: 8.
Great location - beachfront with pool, walk/bike to everything so we didn't have park in busy Wrightsville Labor Day weekend. Condo more comfortable/spacious than expected, so we weren't cramped. Minor issues were icemaker clogged & filter needed replacing. To get around this well-secured property, it would have been helpful to have more copies of a single key that opened everything-and a convenient bike rack.
Everything was great. Just one issue / cleanliness of floor. The unit had tile flooring all over and the housekeeping staff did not clean the floor before we arrived. I bought a new mop and cleaned the floor myself.
Carla, Thank you for providing feedback about your stay! We apologize that you found the condition of the unit unsatisfactory and would have gladly addressed your concerns promptly with our housekeeping staff had we been made aware during your stay. In the future we encourage you to reach out to us with these concerns, as we are happy to assist. We hope that you had a wonderful vacation and look forward to seeing you again next summer!
We had a great family vacation and were pleased with this condo. The location and amenities offered are wonderful!
We very much enjoyed our stay. The place is a bit dated but just fine for a beach vacation and perfect for a small child with very sandy feet. We would definitely stay here again.
We enjoyed our stay at Medina. We had a few issues that Bryant reality took care of immediately. This condo was not what we had originally booked but in the end we were happy with being relocated here. The location was perfect! We were able to walk everywhere. We were in town for my sisters wedding and everyone who stopped by wishes they were staying in station one. It really was the best location.
Perfect Location but Unit Needs some TLC!
This was our first visit to Wrightsville Beach and couldn't have been happier with the location of the Station One condominiums! Centrally located between the Johnny Mercer & Crystal Piers and within walking distance to plenty of good restaurants! If I was rating purely on location, I would give 5 stars!
Unfortunately, our unit, the Medina, could use a little TLC and definitely a thorough scrubbing! After an hour in barefoot, we had black feet...indicating the floors hadn't been cleaned in some time! I did email a photo to Bryant RE who promptly responded & offered to have the unit recleaned which was nice. Overall, cleanliness was not where I would have expected it to be. The kitchen has most of what you need, but dated with a microwave and toaster oven that could be replaced. Rust stains down the front of the freezer aren't very attractive. The master bathroom faucet needs to be replaced. Finally, the keys are extremely difficult to manage and upon our arrival required Station One staff assistance to be able to enter. Kevin was extremely cordial and helpful, as was the rest of the Station One staff! Upgrading to better locks/keys or swipe cards would be smart!
Overall, we would stay at Station One again; however, perhaps choose another property.
We appreciate your feedback and apologize that you did not find the unit cleaned to what you had expected and the keys difficult to work. We will let our maintenance team know about the keys and we will relay the suggestions that you have for upgrade to the owner. We hope that you had a nice vacation and that we will see you next year.
The condo was great and had mostly everything we needed for a short weekend. The kitchen could use an updated microwave, cutting board, sharp cutting knives and a few more wine glasses. Just a suggestion!


text:
CROATIA 4 Apply CROATIA filter
Spanish company seeks worldwide providers of remanufactured or new wind turbine spare parts for a supplier agreement.
A Spanish company working in the maintenance of wind towers and turbines is looking for worldwide providers of wind turbines spare parts, such as blad... See more
A Spanish company seeks manufactures of furnaces and environmental test chambers under distribution or commercial agreement.
A Spanish company specialised in industrial automation, maintenance and electrical installations wants to incorporate to its portfolio furnaces and en... See more
Motor vehicle distribution company from Spain is looking for an electric motorcycle producer via distribution agreement
The Spanish company is devoted to the supply of personal means of transportation. It operates in the eastern coast of Spain area, and as it seeks to ... See more
Spanish company which has developed a new disruptive payment system between companies using Blockchain and Ethereum is looking for a partner, under an outsourcing agreement, in the field of fintech or insurtech with experience in B2B services in Europe.
Spanish company, dedicated to international business, has developed a new disruptive payment system for B2B using Blockchain and Ethereum. The new ... See more
A Spanish company seeks manufactures of furnaces for research laboratories under distribution or commercial agreement.
A Spanish company specialised in industrial automation, maintenance and electrical installations wants to incorporate to its portfolio furnaces for re... See more
Slovenian manufacturer specialized in innovative ergonomic products for sedentary and standing work with computers and laptops is looking for a manufacturer of acrylic glass products and bamboo plates
Slovenian manufacturer of ergonomic products for sedentary and standing work with computers and laptops which enable correct posture and prevent incor... See more
Slovak producer of balance weights is looking for a zinc alloy supplier within the manufacturing of balance weights
A small Slovak technological company, the producer of balance weights, is looking for a zinc alloy supplier. The alloy must be designed for pressure d... See more
Request for coffee capsules under a licensing agreement
A Spanish (Basque) design SME has designed new coffee capsules that are compatible with the new machine of a very well-known coffee maker company. The... See more


Tollywood beauty Anushka believes that the heroines should not run after opportunities. Offers should come to the heroine, she feels. Anushka, who has acted with all major heroes, is still a stunner. Her beauty is alluring and her glamour is unfading. Post Baahubali, she did Bhagamathi.
Though the film was a hit and she got some more offers, nothing has been made official. Of late, however, there is a buzz that Anushka might work with Kona Venkat. Her looks for the film have been release. This doe-eyed beauty is seen smiling alluringly while holding a peacock feather. She seems to caress her cheeks with the peacock feather in the most seductive manner.
From the pic, one can surmise that Anushka has shed lot of weight and is back to her original shape. Sources close to her say that she has undergone special and natural treatment in Europe to get back into shape.


text:
Q: Is there a way to get python to output to the shell and simultaneously output to str in a variable? The only ways I can find in python that redirects the console output to string in a variable also seem to turn off the functionality of displaying the output to the console in a live manner similar to how python would output the code normally.
I currently am changing the sys.stdout but again, this is either one or the other it seems.
If I redefine it, I get the perfect performance for distant error checking, as I am able to save the output variable to a cloud based spreadsheet in the event of exception handling, which sends me notifications anywhere that I am.
However, redefining it means I don't get to come and locally check on the output of the program while it is "running smoothly"
EDIT: some of your answers have helped me refine my question. Here is a fresh re wording:
What is the best way to concisely store and record outputs with a single variable as the elements are printed to the console without overwriting sys.stdout?
old_stdout = sys.stdout
new_stdout = io.StringIO()
sys.stdout = new_stdout

def update_error_log_ss(traceback_, summary, output = ""):
    print("Connecting to Smart Sheet to Update Error Log")
    token = 'token'
    error_log_sheetid = 00000000
    ss_client = ss.Smartsheet(token)
    now = datetime.datetime.now()
    sheet = ss_client.Sheets.get_sheet(error_log_sheetid)
    colid = []
    for col in sheet.columns:
        colid.append(col.id)
        print(str(col.id) + " - " + col.title)
    totalcols = len(colid)
    row_add = ss.models.Row()
    row_add.to_top = True
    row_add.cells.append({
        'column_id': colid[0],
        'value': str(now)
    })
    row_add.cells.append({
        'column_id': colid[1],
        'value': summary
    })
    row_add.cells.append({
        'column_id': colid[2],
        'value': traceback_
    })
    row_add.cells.append({
        'column_id': colid[3],
        'value': output
    })
    response = ss_client.Sheets.add_rows(
        error_log_sheetid,
        [row_add]
    )

    return

except Exception:
        if debug_ == False:
synch.update_error_log_ss(traceback.format_exc(),'initialization failure',new_stdout.getvalue())
main_()
        else:
            synch.update_error_log_ss(traceback.format_exc(),'initialization failure')
        main_()

The only issue I have with the above solution is that in order for  new_stdout.getvalue() to get defined, sys.stdout has to be overwritten

A: Maybe you want this:
def get(x):
    print(x)
    return x

myvar = get('myvalue')

print(myvar)

Output:
myvalue
myvalue

So basically just write your own function to print the value and return it to the variable.

A: According to the print docs:

The file argument must be an object with a write(string) method

So you can just create one for your needs and assign it to sys.stdout which is the default file argument for print:
import io
import sys

class my_stdout:
    def __init__(self):
        self.real_stdout = sys.stdout
        self.new_stdout = io.StringIO()

    def write(self, s):
        self.real_stdout.write(s)
        self.new_stdout.write(s)

    def getvalue(self):
        return self.new_stdout.getvalue()

new_stdout = my_stdout()
sys.stdout = new_stdout
print("Original: Hello world!")
# for debug:
sys.stdout = new_stdout.real_stdout
print("From stringio:", new_stdout.getvalue())

Output:
Original: Hello world!
From stringio: Original: Hello world!

redpajama_set_name: RedPajamaStackExchange


Accurate, timely and customized to your exact requirements, AccuWeather warnings, forecasts, and weather data provide the critical insight your business needs to minimize risk, maximize opportunity and maintain business continuity.
Detailed current conditions are available for almost 3 million locations worldwide – everywhere that people live, work or travel.
Weather variables available include temperature, precipitation, dew point, humidity, wet bulb temperature and evapotranspiration, wind speed and direction, cloud cover, visibility, air quality, marine data such as wave heights, and many more.
The current conditions will be provided in the formats you prefer for easy merging with your other data and systems and integration into your decision processes, and are updated for you according to your schedule.


FallSmart Bedside Fall Out Crash Mats are bedside crash mats designed to minimise the risk of injuries caused by accidental and sleep related rolling out or falling out of bed.
Dangerous consequences of falls in frail elderly and disabled people at risk of falling are well recognised and subjected to an array of different falls prevention initiatives. In addition to accidental falls sustained during moving about (i.e. walking, gardening, shopping, socialising, etc.), it is worth to consider the dangers faced by the elderly, chronically ill and disabled people that are associated with accidental falling out of bed – when getting in to bed, trying to get out of bed or sleep-related falling or rolling out of bed.
Statistics released by the National Health Service Information System in the United Kingdom in 2011 show that falls and fall related injuries currently account for about 460 000 annual hospital admissions. Out of these, as many as 20 000 injuries are associated with falling out of bed.
Accidental falling out of bed as well as sleep related falling out of bed have considerable potential to cause significant injuries, which vary in severity from slight to permanently disabling to fatal. The injuries sustained due to falling out of bed include lacerations, bruising, dislocations and fractures.
Amongst common reasons for falling out of bed are disorientation or dizziness caused by medication, rolling over during restless sleep, disorientation or distress caused by dreams, tiredness and restlessness caused by poor sleep, aches and stiffness affecting abilities of getting in and out of bed, issues with balance, blood pressure related dizziness and light-headedness, dementia and other mental issues, improper bed or untidy surroundings and much more.
Interventions designed to prevent falling out of bed, reduce risk of falling out of beds and reduce injuries or severity of injuries caused by falling out of beds include bedside crash mats, bed rails, bed exit alarms, low height beds and bedside alert mats.
FallSmart Bedside Fall Out Mats help to prevent injuries caused by accidental falling out of bed. Placed on a bedside, FallSmart mats provide a 'force attenuating' surface that absorbs impact, helping to reduce the risk and severity of injuries.
Learn more about the FallSmart Bedside Fall Out Crash Mat and how it can help to protect you or your loved one from sustaining injuries caused by falling out of bed. Visit FallSmart Mat page for details of the FallSmart Bedside Crash Mats and prices and to buy FallSmart Bedside Crash Mat.


Our first day is designed to test the cars, the drivers and the navigators on a short run to get used to the driving conditions and to master the Road Book.
We were escorted through Da Nang to avoid any issues with the police and then released, into the mountains beyond, to tackle the Hai Van Pass. It is a mini-Stelvio with switchback bends and steep gradients leading to the summit. Made up of 19 kilometers of roadway that winds up and over a fortress of mountains, connecting Da Nang with the town of Lang Co in Hue Province. Popularised by BBC's Top Gear, adventurers come from far and wide to tackle the route and soak up the breathtaking views of the mountain and coast.
Here are fellow rallyists Marian, Tessa, David, Neil, Lorraine and David.
As we summitted the Hai Van Pass the locals all came in to admire the cars.
Of course the summit is a melee of stall holders trying to make a living from the tourists who arrive, mostly by bus. Naturally our cars attracted some attention and the "Friendship Rally" has finally begun with lovely smiles and wishes of good luck.
The first trophy of the rally has been awarded. The "raised bonnet award" goes to our esteemed team leader who was investigating a misfire and cooling his coil.
The scenery didn't disappoint, this was one of several bridges we crossed during our "day trip".
And of course we never miss an opportunity to refuel!
A successful day indeed and now our last night in Hoi An before we start "the rally proper" in the morning.
Keep the photos and news coming.
Here in the US the Eagles won the Super Bowl of our football season. I look forward to seeing lots of beautiful photos and reading of your adventures, especially for car #14.
Thanks for your comment Bernadette. We shall make sure we keep those photos coming! The Super Bowl sounded like it was a great event this year, lots of last minute tension!


text:
Q: Bash - Sort File Based on 2 Columns : HH:MM:SS AM/PM Trying to sort lines in a file. The column1 is HH:MM:SS format and col2 is AM/PM. Need to arrange lines from AM to PM firstly and then progressive time.
Current :
11:36:48 AM col3 ...
11:32:00 AM col3 ...
03:18:54 PM col3 ...
02:26:40 PM col3 ...
01:51:56 PM col3 ...
12:55:58 PM col3 ...
11:58:48 AM col3 ...
09:38:41 AM col3 ...

Final:
09:38:41 AM col3 ...
11:32:00 AM col3 ...
11:36:48 AM col3 ...
11:58:48 AM col3 ...
12:55:58 PM col3 ...
01:51:56 PM col3 ...
02:26:40 PM col3 ...
03:18:54 PM col3 ...

Thanks

A: A Schwartzian transform:
while read -ra fields; do
    printf '%s\t%s\n' "$(date -d "${fields[*]:0:2}" '+%s')" "${fields[*]}"
done < input \
| sort -n \
| cut -f 2-

outputs
09:38:41 AM col3 ...
11:32:00 AM col3 ...
11:36:48 AM col3 ...
11:58:48 AM col3 ...
12:55:58 PM col3 ...
01:51:56 PM col3 ...
02:26:40 PM col3 ...
03:18:54 PM col3 ...

The while loop calculates the epoch time for each timestamp and adds it to the output stream. Then it gets sorted by the numeric time. Then that field is removed.
Doing this in bash may be slower than doing it in, say, perl:
perl -MTime::Piece -lane '
        push @lines, [@F];
    } END {
        print join "\n",
              map {"@{$_->[1]}"}
              sort {$a->[0] <=> $b->[0]}
              map {[Time::Piece->strptime("$_->[0] $_->[1]", "%T %p")->epoch, $_]}
              @lines;
' input

A: You can generate a 24H equivalent of your AM/PM times and prepend it to the line with awk. Then sort will work fine and all that's left to do is to strip the added data (with sed or cut or whatever):
awk -F '[ :]' '
    {
        H24 = ($1 == 12 ? ($4 == "AM" ? 0 : 12) : ($4 == "PM" ? $1 + 12 : $1))
        print sprintf("%02d%02d%02d", H24, $2, $3), $0
    }
' data.txt |
sort |
sed 's/[^ ]* //'

A: All you have to do is get the AM lines with grep, then use sort on the output. After doing that then you can do the same for the PM lines.
cp "my_file" "backup_file" #Backup old file before overwriting
grep '^[0-9:]* AM' "backup_file" | sort > "my_file"
grep '^[0-9:]* PM' "backup_file" | sort >> "my_file"

Its important to backup your file before using > operation since that will completely overwrite your file.

A: As mentioned in a comment, sorting on the current time column will be problematic in that the 12:xx entries need to come before 01:xx entries.
One approach:

*

*convert the 12:xx entries to 00:xx

*run a normal 2-column sort

*convert the 00:xx entries back to 12:xx
One sed | sort | sed idea:
$ sed 's/^12/00/' sample.log | sort -k2,2 -k1,1 | sed 's/^00/12/'
09:38:41 AM col3 ...
11:32:00 AM col3 ...
11:36:48 AM col3 ...
11:58:48 AM col3 ...
12:55:58 PM col3 ...
01:51:56 PM col3 ...
02:26:40 PM col3 ...
03:18:54 PM col3 ...


text:
Bill Cosby Sentenced to 3 to 10 Years In Prison In First Celebrity Trial of #MeToo Era
This Gas Station in Virginia Gives Away Food to Anyone Who Needs It
In an image that must have struck many as surreal and unprecedented just two years ago, Bill Cosby was moved to prison in handcuffs yesterday. The 81-year-old received 3 to 10 years in state prison for drugging and sexually assaulting a woman at his estate. (h/t Hollywood Reporter)
It has been an extraordinary fall from grace for Cosby. He declined the opportunity to speak before his sentencing. THR reports that after the sentencing he sat laughing and talking with his defense team.
In his sentencing, Judge Steven O'Neill of Montgomery County in Pennsylvania said: "It is time for justice. Mr. Cosby, this has all circled back to you. The time has come." O'Neill also said Cosby had taken victim Andrea Constand's "beautiful, young spirit and crushed it."
Cosby must serve three years before becoming eligible for parole.
Jeff Bridges Has Revealed That He's Been Diagnosed With Lymphoma
At a news conference, District Attorney Kevin Steele said: "Now, finally, Bill Cosby has been unmasked, and we have seen the real man as he is headed off to prison." Constand stood next to Steele but gave no comment.
The Final 'Fantastic Beasts' Trailer Reveals More Characters, Tons of Action