text:
I Think That I Shall Never See a Tomb as Lovely as a Tree
June 24, 2018 By Damian in books, the big sleep No Comments
And incidentally, no real sacrifices need to be made to make this happen, as the community of Hümmel has demonstrated for years. They have put entire old beech forests under protection and found innovative ways to market them. Part of the forest is used as an arboreal mortuary, where the trees are leased out as living gravestones for urns buried under them.
— Peter Wohlleben, The Hidden Life of Trees: What They Feel, How They Communicate
Well, I'm convinced. Sign me up for a burial plot among the roots. I still prefer the DIY ethic — no need to involve money-grasping middlemen in such a private affair — but I suppose a little commerce is necessary to facilitate progress on a wider scale.
June 18, 2018 By Damian in noteworthies, notorious jbp No Comments
• Lance Morrow, "Return of the Notman"
• Derek Robertson, "Why the 'Classical Liberal' Is Making a Comeback"
• Yoram Hazony, "Jordan Peterson and Conservatism's Rebirth" (alternate link)
• Vladislav Davidzon, "In Memory of Isaiah Berlin"
• Joseph Heath, "Social Constructivism: The Basics"
• Wesley Yang, "The Shocking Truth About Jordan Peterson"
• Mmm-hmm.
It Will Help You Sleep at Night. It Will Make It Seem That Right Is Always Right
June 13, 2018 By Damian in nietzsche No Comments
Ian Marcus Corbin:
En route to such an argument, Beiner suggests that we must continually engage Nietzsche as a live opponent, who might just have his hand on something that is both wicked and enduringly attractive. "Reading these thinkers," Beiner assures us,
doesn't automatically turn us from liberals into something else (or hopefully it doesn't!); but hopefully what it does do is draw us into a fully ambitious questioning of what human life expects of us.
This is a generally welcome exhortation, basic to the practice of philosophy, but if Beiner ever concludes his ambitious questioning (and is still a liberal!) I hope he will write another book in which we can learn what it means for "human life" to "expect" anything at all of "us" in a God-shorn universe. Nietzsche thinks it expects nothing at all, and we need to demand that it meet our expectations. One is tempted to see this as another example of Beiner's quietly placing all of the most momentous philosophical action offstage, as if there is some agent out there called "human life" that will save us from the heavy task of judging and deciding in the absence of a Great Judge.
…Beiner's good instincts are part of what makes his book so frustrating; he mysteriously fails to follow his own excellent counsel, as he refuses to explore or acknowledge the very real—and yes, potentially dangerous—beauty of Nietzsche's prescriptions. But maybe he's just exercising prudence. If these prescriptions are potentially dangerous, why bother to discern the goodness or beauty in them? These ideas are not liberal! Keep them under wraps!
By the time I reached this point in Corbin's excellent review, I had already remembered a line from Thus Spoke Zarathustra: "And whoever wanted to sleep well still talked of good and evil before going to sleep." Apparently, Nietzsche was fine when he was being used as an all-purpose tool of intellectual deconstruction by postmodern academics, but in our hyperventilating, panicked political environment, orthodox progressive opinion has once again quarantined him as a dangerous inspiration to fascism. Ah, the vagaries of fashion.
Corbin goes on to draw parallels between Beiner's bedtime fable, where equality and justice triumph to live happily ever after, and the well-documented paradox of social media, which makes communication with countless strangers both easier and faster, yet ends up creating silos, echo chambers, vituperative distrust, and astonishing ignorance. As Corbin shows, the hope that life would finally be tamed and solved by means of gathering mankind under the comforting shelter of the One True Politics was present in Nietzsche's time, too, and he saw it for the delusion it is. Bien-pensants like Beiner will never understand this, preferring to tell the same old tales of good and evil before going to sleep.
Penitential Acts
June 11, 2018 By Damian in conspicuous crusading, the cult of multi, the great awokening No Comments
Twitter CEO Jack Dorsey forced to apologize for eating Chick-fil-A during Pride Month https://t.co/BbZjHu3RG2
— Business Insider (@businessinsider) June 11, 2018
John McWhorter wasn't correct enough — it's not just anti-racism; wokeness itself is a surrogate religion (hence "The Great Awokening"). Now we've even got the arcane dietary restrictions: no appropriating certain types of cuisines, no eating certain foods during holy festivals. At least Christianity, in theory if not always in practice, emphasizes that whole "judge not" ideal. With these fanatics, there's no such restraint.
June 9, 2018 By Damian in obiter scripta No Comments
An eighteenth-century inkstand — complete with quill holder, penknife, inkwell, pounce box (to hold the desiccant powder), and wafer box (to hold the paste sealing wafers) — was a monument to the physical act of writing. But if no inkstand was at hand, one could make do with temporary expedients. One day, when Sir Walter Scott was out hunting, a sentence he had been trying to compose all morning suddenly leapt into his head. Before it could fade, he shot a crow, plucked a feather, sharpened the tip, dipped it in crow's blood, and captured the sentence.
— Anne Fadiman, "Eternal Ink," Ex Libris: Confessions of a Common Reader
Let me proudly state that no animals have ever been harmed during the production of my own writing. And furthermore, if I must appear a madman for the sake of my art, I would rather build a mnemonic cage around the elusive sentence in question by repeating it out loud over and over again. More humane and more effective, if you ask me, and even if you don't. Scott would no doubt find my attitude regrettably soft and unmanly. But I like to think he'd be impressed, and perhaps a bit unnerved, by the way I can summon a notepad app from thin air, like a wizard's familiar, to capture ideas when I'm away from my writing desk.
Let's Hang On to What We've Got. Don't Let Go, Because We've Got a Lot
June 9, 2018 By Damian in books, political philosophy No Comments
Before I begin, I should recap the argument of this book: First, the rust of human nature is eating away at the Miracle of Western civilization and the American experiment. Second, this corruption is nothing new; nature is always trying to reclaim what is hers. But this corruption expresses itself in new ways at different times as the romantic spirit takes whatever form it must to creep back in. Third, the corruption can only succeed when we willfully, and ungratefully, turn our backs on the principles that brought us out of the muck of human history in the first place. The last point, which is the subject of the next chapter, is that the corruption has now spread, disastrously, to the right, not just in America but throughout the West.
— Jonah Goldberg, Suicide of the West: How the Rebirth of Tribalism, Populism, Nationalism, and Identity Politics is Destroying American Democracy
Louis C.K. did a funny bit about how our pettiness and short-sighted selfishness keeps us from enjoying conveniences which would have been considered utterly miraculous only a few generations ago. "Everything is amazing right now, and nobody's happy!" he exclaimed. Winston Churchill famously said that democracy was the worst form of government, except for all the others that have been tried. Jonah Goldberg has essentially combined those perspectives into a book-length meditation on our current political environment, pleading with us to recover a spirit of gratitude for what he calls the Miracle; i.e. Western democratic capitalism and the release it has granted us from the hardship and want of the pre-industrial age.
Goldberg, though a religious believer, presents a case designed to appeal to skeptics and atheists. There is no God to save us from our mistakes and tragedies. Life is a constant struggle against material and cultural entropy. The Miracle, though successful, is highly unnatural, forcing us to adopt new habits of living which defy all the tribal instincts ingrained through eons of evolution. The Miracle was only achieved through good fortune, and can easily be lost again with no guarantee of return. Various forms of what Goldberg groups together under the rubric of "romanticism," from left-wing utopianism to right-wing blood-and-soil nationalism, all promise to heal our alienation and make us whole again; all of them are pernicious lies.
An earnest plea for psychological balance and sanguine perspective will no doubt seem like a pitiful thing in a melodramatic, hyper-political age, but hopefully the seeds of Goldberg's argument will find receptive ground among the bystanders. Having long since come to the same tragic perspective on my own, I didn't need any additional convincing, but nonetheless, it was good to read an eloquent expression of it. Sometimes, there's nothing more that needs to be said beyond hear, hear.
You Will Be a Restless Wanderer On the Earth
June 7, 2018 By Damian in foolosophy, notorious jbp, political philosophy, the great awokening No Comments
Melissa Mackenzie:
Peterson had been noodling some ideas about this question: How do we know when the Left goes too far? He made the point that on the right, everyone knows Nazis are evil. They're something bad and something we don't want to be and this moral judgment was clearly illustrated at the Nuremberg Trials, but that there is no such limit on the Left.
It was one of those rare instances of serendipity. On June 25th, 2015, I read an essay by George Santayana, "Josiah Royce," in which he wrote:
Yet that is what romantic philosophy would condemn us to; we must all strut and roar. We must lend ourselves to the partisan earnestness of persons and nations calling their rivals villains and themselves heroes; but this earnestness will be of the histrionic German sort, made to order and transferable at short notice from one object to another, since what truly matters is not that we should achieve our ostensible aim (which Hegel contemptuously called ideal) but that we should carry on perpetually, if possible with a crescendo, the strenuous experience of living in a gloriously bad world, and always working to reform it, with the comforting speculative assurance that we never can succeed. We never can succeed, I mean, in rendering reform less necessary or life happier; but of course in any specific reform we may succeed half the time, thereby sowing the seeds of new and higher evils, to keep the edge of virtue keen. And in reality we, or the Absolute in us, are succeeding all the time; the play is always going on, and the play's the thing.
Suddenly, I understood. I saw, vividly, what I had only understood abstractly before: that the crusading would never stop. There was no limiting principle to left-wing political efforts, nothing that would serve as a reasonable goal or endpoint. Today's vanguard will be denounced as tomorrow's reactionaries by a new group of radicals demanding more, faster, better.
The very next day was when the Obergefell ruling was handed down. And Freddie deBoer, whom I had previously held in high esteem as an intelligent alternative to orthodox leftists, immediately tweeted, "Now on to polygamy. (And no, I ain't kidding.)" He followed that up with, "Y'know, fellow left types who say today's not a good day to start talking polygamy, 'slow down' is a derided stance for a reason."
I have no problem with gay marriage. And I don't think that poly-anything will ever be more than a fringe fad. In other words, my road-to-Damascus moment wasn't motivated by any visceral fear or loathing of the newest phases of the sexual revolution. Like Roger Scruton as a student in Paris in 1968, watching the rioting of the soixante-huitards, I simply realized that regardless of the merits of any particular culture-war crusade, in the grand scheme I was watching "a kind of adolescent insouciance, a throwing away of all customs, institutions, and achievements, for the sake of a momentary exultation which could have no lasting sense save anarchy." Nothing would ever be good enough. Nothing will ever satisfy people whose anger and misery is existential, not situational. Like Scruton, I realized that these people would eagerly tear down many of the imperfect things I loved about the world in pursuit of unattainable perfection, and that I was tired of being associated in any way with their endless complaints and histrionics.
Ever since Bacon and Descartes, we've been increasingly accustomed to shaping the world to our preferences. As our technical mastery increases, we find it harder to accept the existence of anything which impedes "progress," whether personal or political. How do we know when the Left goes too far? To answer that, we'd have to be capable of envisioning a world of "good enough," and I'm not sure if human nature even allows for that. What sort of epochal revolution would have to occur in order for humanity to envision an alternative to progress that didn't involve some romanticized past? Individuals will continue to have private epiphanies where they make peace with an imperfect world and resign from the crusades, but the species as a whole will continue to be what Nietzsche called "the unfinished animal," endlessly striving to bring more of life under its control, forever dissatisfied with what actually exists.


text:
"""Local File System Driver."""
import errno
import hashlib
import json
import logging
import os
import pathlib
import shutil
import sys
from contextlib import contextmanager
from datetime import datetime, timedelta, timezone
from typing import Dict, Iterable, List

import filelock
import itsdangerous
from inflection import underscore

from cloudstorage import Blob, Container, Driver, messages
from cloudstorage.exceptions import (
    CloudStorageError,
    CredentialsError,
    IsNotEmptyError,
    NotFoundError,
    SignatureExpiredError,
)
from cloudstorage.helpers import (
    file_checksum,
    file_content_type,
    read_in_chunks,
    validate_file_or_path,
)
from cloudstorage.typed import (
    ContentLength,
    ExtraOptions,
    FileLike,
    FormPost,
    MetaData,
)

if os.name != "nt":
    import xattr  # noqa: E402

__all__ = ["LocalDriver"]

logger = logging.getLogger(__name__)

IGNORE_FOLDERS = [".lock", ".hash", ".DS_STORE"]

@contextmanager
def lock_local_file(path: str) -> filelock.FileLock:
    """Platform dependent file lock.

    :param path: File or directory path to lock.
    :type path: str

    :yield: File lock context manager.
    :yield type: :class:`filelock.FileLock`

    :raise CloudStorageError: If lock could not be acquired.
    """
    lock = filelock.FileLock(path + ".lock")

    try:
        lock.acquire(timeout=0.1)
    except filelock.Timeout:
        raise CloudStorageError("Lock timeout")

    yield lock

    if lock.is_locked:
        lock.release()

    if os.path.exists(lock.lock_file):
        os.remove(lock.lock_file)

class LocalDriver(Driver):
    """Driver for interacting with local file-system.

    .. code-block:: python

        from cloudstorage.drivers.local import LocalDriver

        path = '/home/user/webapp/storage'
        storage = LocalDriver(key=path, secret='<my-secret>', salt='<my-salt>')
        # <Driver: LOCAL>

    Modified Source:
    `libcloud.storage.drivers.local.LocalCloudDriver <https://github.com/apache
    /libcloud/blob/trunk/libcloud/storage/drivers/local.py>`_

    :param key: Storage path directory: `/home/user/webapp/storage`.
    :type key: str

    :param secret: (optional) Secret key for pre-signed download and upload
      URLs.
    :type secret: str or None

    :param salt: (optional) Salt for namespacing download and upload
      pre-signed URLs. For more information. see `itsdangerous
      <https://palletsprojects.com/p/itsdangerous/>`_.
    :type salt: str or None

    :param kwargs: (optional) Extra driver options.
    :type kwargs: dict

    :raise NotADirectoryError: If the key storage path is invalid or does not
      exist.
    """

    name = "LOCAL"
    hash_type = "md5"
    url = ""

    def __init__(
        self, key: str, secret: str = None, salt: str = None, **kwargs: Dict
    ) -> None:
        super().__init__(key, secret, **kwargs)

        self.base_path = key
        self.salt = salt
        self.is_windows = os.name == "nt"

        try:
            if not os.path.exists(key):
                os.makedirs(key)
        except PermissionError as err:
            raise CredentialsError(str(err))

        # Check if base path is a directory and not a file
        if not os.path.isdir(self.base_path):
            raise NotADirectoryError("The base path '%s' is not a directory." % key)

    def __iter__(self) -> Iterable[Container]:
        for container_name in self._get_folders():
            yield self._make_container(container_name)

    def __len__(self) -> int:
        return len(list(self._get_folders()))

    @staticmethod
    def _normalize_parameters(
        params: Dict[str, str], normalizers: Dict[str, str]
    ) -> Dict[str, str]:
        normalized = params.copy()

        for key, value in params.items():
            normalized.pop(key)
            if not value:
                continue

            key_inflected = underscore(key).lower()

            # Only include parameters found in normalizers
            key_overrider = normalizers.get(key_inflected)
            if key_overrider:
                normalized[key_overrider] = value

        return normalized

    def _make_serializer(self) -> itsdangerous.URLSafeTimedSerializer:
        """Returns URL Safe Timed Serializer for signing payloads.

        :return: Serializer for dumping and loading into a URL safe string.
        :rtype: :class:`itsdangerous.URLSafeTimedSerializer`
        """
        # TODO: Throw exception if secret / salt not set.
        return itsdangerous.URLSafeTimedSerializer(
            secret_key=self.secret,
            salt=self.salt,
            signer_kwargs={"key_derivation": "hmac", "digest_method": "SHA1"},
        )

    def _make_xattr(self, filename: str):
        """
        Make a xattr-like object depending on the current platform.
        :param filename:
        :return:
        """
        if self.is_windows:
            return XattrWindows(filename)
        return xattr.xattr(filename)

    def _check_path_accessible(self, path: str) -> bool:
        """
        Check if the path is accessible. In windows custom files are used to simulate
        file attributes, these must not be accessed.

        :param filename:
        :return:
        """
        if self.is_windows:
            p = pathlib.Path(path)
            if p.name.startswith(".") and p.name.endswith(".xattr"):
                return False
        return True

    def _get_folders(self) -> Iterable[str]:
        """Iterate over first level folders found in base path.

        :yield: Iterable[str]
        :yield type: str
        """
        for container_name in os.listdir(self.base_path):
            full_path = os.path.join(self.base_path, container_name)
            if not self._check_path_accessible(full_path):
                continue
            if not os.path.isdir(full_path):
                continue

            yield container_name

    def _get_folder_path(self, container: Container, validate: bool = True) -> str:
        """Get the container's full folder path.

        :param container: A container instance.
        :type container: :class:`.Container`

        :param validate: If True, verify that folder exists.
        :type validate: bool

        :return: Full folder path to the container.
        :rtype: str

        :raises NotFoundError: If the container doesn't exist.
        """
        full_path = os.path.join(self.base_path, container.name)
        if validate and not self._check_path_accessible(full_path):
            raise NotFoundError(messages.CONTAINER_NOT_FOUND % container.name)
        if validate and not os.path.isdir(full_path):
            raise NotFoundError(messages.CONTAINER_NOT_FOUND % container.name)

        return full_path

    def _set_file_attributes(self, filename: str, attributes: Dict) -> None:
        """Set extended filesystem attributes to a file.

        Metadata is set to `user.metadata.<attr-name>` and remaining attributes
        are set to `user.<attr-name>`.

        References:

        * `xattr <https://github.com/xattr/xattr>`_

        :param filename: Filename path.
        :type filename: str

        :param attributes: Dictionary of `meta_data`, `content_<name>`, etc.
        :type attributes: dict

        :return: NoneType
        :rtype: None

        :raises CloudStorageError: If the local file system does not support
          extended filesystem attributes.
        """
        xattrs = self._make_xattr(filename)

        for key, value in attributes.items():
            if not value:
                continue

            try:
                if key == "meta_data":
                    for meta_key, meta_value in value.items():
                        # user.metadata.name
                        attr_name = (
                            self._OBJECT_META_PREFIX + "metadata." + meta_key
                        )  # noqa: E126
                        xattrs[attr_name] = meta_value.encode("utf-8")
                else:
                    # user.name
                    attr_name = self._OBJECT_META_PREFIX + key
                    xattrs[attr_name] = value.encode("utf-8")
            except OSError:
                logger.warning(messages.LOCAL_NO_ATTRIBUTES)

    def _get_file_path(self, blob: Blob) -> str:
        """Get the blob's full folder path.

        :param blob: A blob instance.
        :type blob: :class:`.Blob`

        :return: Full folder path to the blob.
        :rtype: str
        """
        return os.path.join(self.base_path, blob.container.name, blob.name)

    @staticmethod
    def _make_path(path: str, ignore_existing: bool = True) -> None:
        """Create a folder.

        :param path: Folder path to create.
        :type path: str

        :param ignore_existing: If True, ignore existing folder.
        :type ignore_existing: bool

        :return: NoneType
        :rtype: None

        :raises CloudStorageError: If folder exists and  `ignore_existing` is
          False.
        """
        try:
            os.makedirs(path)
        except OSError:
            logger.debug(messages.CONTAINER_EXISTS, path)
            exp = sys.exc_info()[1]
            if exp.errno == errno.EEXIST and not ignore_existing:
                raise CloudStorageError(exp.strerror)

    def _make_container(self, folder_name: str) -> Container:
        """Convert a folder name to a Cloud Storage Container.

        :param folder_name: The folder name to convert.
        :type folder_name: str

        :return: A container instance.
        :rtype: :class:`.Container`

        :raises FileNotFoundError: If container does not exist.
        """
        full_path = os.path.join(self.base_path, folder_name)
        if not self._check_path_accessible(full_path):
            raise NotFoundError(messages.CONTAINER_NOT_FOUND % folder_name)

        try:
            stat = os.stat(full_path)
        except FileNotFoundError:
            raise NotFoundError(messages.CONTAINER_NOT_FOUND % folder_name)

        created_at = datetime.fromtimestamp(stat.st_ctime, timezone.utc)

        return Container(
            name=folder_name, driver=self, meta_data=None, created_at=created_at
        )

    def _make_blob(self, container: Container, object_name: str) -> Blob:
        """Convert local file name to a Cloud Storage Blob.

        :param container: Container instance.
        :type container: :class:`.Container`

        :param object_name: Filename.
        :type object_name: str

        :return: Blob instance.
        :rtype: :class:`.Blob`
        """
        full_path = os.path.join(self.base_path, container.name, object_name)
        if not self._check_path_accessible(full_path):
            raise NotFoundError(messages.BLOB_NOT_FOUND % (object_name, container.name))

        object_path = pathlib.Path(full_path)

        try:
            stat = os.stat(str(object_path))
        except FileNotFoundError:
            raise NotFoundError(messages.BLOB_NOT_FOUND % (object_name, container.name))

        meta_data = {}
        content_type = None
        content_disposition = None
        cache_control = None

        try:
            attributes = self._make_xattr(full_path)

            for attr_key, attr_value in attributes.items():
                value_str = None

                try:
                    value_str = attr_value.decode("utf-8")
                except UnicodeDecodeError:
                    pass

                if attr_key.startswith(self._OBJECT_META_PREFIX + "metadata"):
                    meta_key = attr_key.split(".")[-1]
                    meta_data[meta_key] = value_str
                elif attr_key.endswith("content_type"):
                    content_type = value_str
                elif attr_key.endswith("content_disposition"):
                    content_disposition = value_str
                elif attr_key.endswith("cache_control"):
                    cache_control = value_str
                else:
                    logger.warning("Unknown file attribute '%s'", attr_key)
        except OSError:
            logger.warning(messages.LOCAL_NO_ATTRIBUTES)

        # TODO: QUESTION: Option to disable checksum for large files?
        # TODO: QUESTION: Save a .hash file for each file?
        file_hash = file_checksum(full_path, hash_type=self.hash_type)
        checksum = file_hash.hexdigest()

        etag = hashlib.sha1(full_path.encode("utf-8")).hexdigest()
        created_at = datetime.fromtimestamp(stat.st_ctime, timezone.utc)
        modified_at = datetime.fromtimestamp(stat.st_mtime, timezone.utc)

        return Blob(
            name=object_name,
            checksum=checksum,
            etag=etag,
            size=stat.st_size,
            container=container,
            driver=self,
            acl=None,
            meta_data=meta_data,
            content_disposition=content_disposition,
            content_type=content_type,
            cache_control=cache_control,
            created_at=created_at,
            modified_at=modified_at,
        )

    def validate_credentials(self) -> None:
        if not os.access(self.base_path, os.W_OK):
            raise CredentialsError(
                "[Errno 13] Permission denied: '{}'".format(self.base_path)
            )

    @property
    def regions(self) -> List[str]:
        return []

    def create_container(
        self, container_name: str, acl: str = None, meta_data: MetaData = None
    ) -> Container:
        if acl:
            logger.info(messages.OPTION_NOT_SUPPORTED, "acl")

        if meta_data:
            logger.info(messages.OPTION_NOT_SUPPORTED, "meta_data")

        full_path = os.path.join(self.base_path, container_name)
        if not self._check_path_accessible(full_path):
            raise CloudStorageError(messages.CONTAINER_NAME_INVALID)

        self._make_path(full_path, ignore_existing=True)
        try:
            with lock_local_file(full_path):
                self._make_path(full_path, ignore_existing=True)
        except FileNotFoundError:
            raise CloudStorageError(messages.CONTAINER_NAME_INVALID)

        return self._make_container(container_name)

    def get_container(self, container_name: str) -> Container:
        return self._make_container(container_name)

    def patch_container(self, container: Container) -> None:
        raise NotImplementedError

    def delete_container(self, container: Container) -> None:
        for _ in self.get_blobs(container):
            raise IsNotEmptyError(messages.CONTAINER_NOT_EMPTY % container.name)

        path = self._get_folder_path(container, validate=True)

        with lock_local_file(path):
            try:
                shutil.rmtree(path)
            except shutil.Error as err:
                raise CloudStorageError(err.strerror)

    def container_cdn_url(self, container: Container) -> str:
        return self._get_folder_path(container)

    def enable_container_cdn(self, container: Container) -> bool:
        logger.warning(messages.FEATURE_NOT_SUPPORTED, "enable_container_cdn")
        return False

    def disable_container_cdn(self, container: Container) -> bool:
        logger.warning(messages.FEATURE_NOT_SUPPORTED, "disable_container_cdn")
        return False

    def upload_blob(
        self,
        container: Container,
        filename: FileLike,
        blob_name: str = None,
        acl: str = None,
        meta_data: MetaData = None,
        content_type: str = None,
        content_disposition: str = None,
        cache_control: str = None,
        chunk_size: int = 1024,
        extra: ExtraOptions = None,
    ) -> Blob:
        if acl:
            logger.info(messages.OPTION_NOT_SUPPORTED, "acl")

        meta_data = {} if meta_data is None else meta_data
        extra = extra if extra is not None else {}

        attributes = self._normalize_parameters(extra, self._PUT_OBJECT_KEYS)
        attributes.setdefault("meta_data", meta_data)
        attributes.setdefault("content_disposition", content_disposition)
        attributes.setdefault("cache_control", cache_control)

        path = self._get_folder_path(container, validate=True)

        blob_name = blob_name or validate_file_or_path(filename)
        blob_path = os.path.join(path, blob_name)

        base_path = os.path.dirname(blob_path)
        self._make_path(base_path)

        tmp_blob_path = f"{blob_path}.tmp"

        with lock_local_file(blob_path):
            if isinstance(filename, str):
                shutil.copy(filename, tmp_blob_path)
            else:
                with open(tmp_blob_path, "wb") as blob_file:
                    for data in filename:
                        blob_file.write(data)
                    os.fsync(blob_file.fileno())

        os.rename(tmp_blob_path, blob_path)
        # Disable execute mode on file
        os.chmod(blob_path, int("664", 8))

        if not content_type:
            attributes["content_type"] = file_content_type(blob_path)
        else:
            attributes["content_type"] = content_type

        # Set meta data and other attributes
        self._set_file_attributes(blob_path, attributes)

        return self.get_blob(container, blob_name)

    def get_blob(self, container: Container, blob_name: str) -> Blob:
        return self._make_blob(container, blob_name)

    def get_blobs(self, container: Container) -> Iterable[Blob]:
        container_path = self._get_folder_path(container, validate=True)

        for folder, sub_folders, files in os.walk(container_path, topdown=True):
            # Remove unwanted sub-folders
            for sub_folder in IGNORE_FOLDERS:
                if sub_folder in sub_folders:
                    sub_folders.remove(sub_folder)

            for name in files:
                full_path = os.path.join(folder, name)
                if not self._check_path_accessible(full_path):
                    continue
                object_name = pathlib.Path(full_path).name
                yield self._make_blob(container, object_name)

    def download_blob(self, blob: Blob, destination: FileLike) -> None:
        blob_path = self._get_file_path(blob)

        if isinstance(destination, str):
            base_name = os.path.basename(destination)
            if not base_name and not os.path.exists(destination):
                raise CloudStorageError("Path %s does not exist." % destination)

            if not base_name:
                file_path = os.path.join(destination, blob.name)
            else:
                file_path = destination

            shutil.copy(blob_path, file_path)
        else:
            with open(blob_path, "rb") as blob_file:
                for data in read_in_chunks(blob_file):
                    destination.write(data)

    def patch_blob(self, blob: Blob) -> None:
        raise NotImplementedError

    def delete_blob(self, blob: Blob) -> None:
        path = self._get_file_path(blob)

        with lock_local_file(path):
            try:
                os.unlink(path)
            except OSError as err:
                logger.exception(err)

        if self.is_windows:
            xattr = XattrWindows(path)
            xattr.remove_attributes()

    def blob_cdn_url(self, blob: Blob) -> str:
        return os.path.join(self.base_path, blob.container.name, blob.name)

    def generate_container_upload_url(
        self,
        container: Container,
        blob_name: str,
        expires: int = 3600,
        acl: str = None,
        meta_data: MetaData = None,
        content_disposition: str = None,
        content_length: ContentLength = None,
        content_type: str = None,
        cache_control: str = None,
        extra: ExtraOptions = None,
    ) -> FormPost:
        meta_data = meta_data if meta_data is not None else {}
        extra = extra if extra is not None else {}

        expiration = datetime.utcnow() + timedelta(seconds=expires)
        expires_at = expiration.timestamp()

        fields = {
            "blob_name": blob_name,
            "container": container.name,
            "expires": expires_at,
        }

        payload = {
            "acl": acl,
            "meta_data": meta_data,
            "content_disposition": content_disposition,
            "content_length": content_length,
            "content_type": content_type,
            "cache_control": cache_control,
            "max_age": int(expires),
        }
        payload.update(**fields)
        payload.update(**extra)

        serializer = self._make_serializer()
        token = serializer.dumps(payload)
        fields["signature"] = token

        return {"url": "", "fields": fields}

    def generate_blob_download_url(
        self,
        blob: Blob,
        expires: int = 3600,
        method: str = "GET",
        content_disposition: str = None,
        extra: ExtraOptions = None,
    ) -> str:
        extra = extra if extra is not None else {}
        serializer = self._make_serializer()

        expiration = datetime.utcnow() + timedelta(seconds=expires)
        expires_at = expiration.timestamp()

        payload = {
            "max_age": int(expires),
            "expires": expires_at,
            "blob_name": blob.name,
            "container": blob.container.name,
            "method": method,
            "content_disposition": content_disposition,
        }
        payload.update(**extra)

        signature = serializer.dumps(payload)
        return str(signature)

    def validate_signature(self, signature):
        """Validate signed signature and return payload if valid.

        :param signature: Signature.
        :type signature: str

        :return: Deserialized signature payload.
        :rtype: dict

        :raises SignatureExpiredError: If the signature has expired.
        """
        serializer = self._make_serializer()
        payload = serializer.loads(signature, max_age=None)
        max_age = payload.get("max_age", 0)

        # https://github.com/pallets/itsdangerous/issues/43
        try:
            return serializer.loads(signature, max_age=max_age)
        except itsdangerous.SignatureExpired:
            raise SignatureExpiredError

    _OBJECT_META_PREFIX = "user."

    _PUT_OBJECT_KEYS = {
        "metadata": "meta_data",
    }

class XattrWindows:
    """
    Simulate xattr on windows.

    A file named ".<filename>.xattr" will be created on the same directory as the
    source file.
    """

    def __init__(self, filename) -> None:
        self.filename = filename
        p = pathlib.Path(filename)
        self.xattr_filename = os.path.join(p.parent, ".{}.xattr".format(p.name))

    def __setitem__(self, key, value) -> None:
        """
        Write an attribute to the json file.
        """
        data = self._load()
        if isinstance(value, bytes):
            value = value.decode("utf-8")
        data[key] = value
        with open(self.xattr_filename, "w") as outfile:
            json.dump(data, outfile)

    def items(self):
        """
        Return a list of the attributes.
        :return:
        """
        # xattr returns items as bytes, must convert all str first
        items = self._load()
        ret = {}
        for itemname, itemvalue in items.items():
            if isinstance(itemvalue, str):
                ret[itemname] = itemvalue.encode("utf-8")
            else:
                ret[itemname] = itemvalue
        return ret.items()

    def _load(self) -> Dict:
        """
        Load json file if it exists
        :return:
        """
        if os.path.exists(self.xattr_filename):
            with open(self.xattr_filename) as json_file:
                return json.load(json_file)
        return {}

    def remove_attributes(self):
        if os.path.exists(self.xattr_filename):
            with lock_local_file(self.xattr_filename):
                try:
                    os.unlink(self.xattr_filename)
                except OSError as err:
                    logger.exception(err)

redpajama_set_name: RedPajamaGithub


text:
Conosphaeron spinipenne är en skalbaggsart som beskrevs av Chemsak och Linsley 1967. Conosphaeron spinipenne ingår i släktet Conosphaeron och familjen långhorningar.

Artens utbredningsområde är Panama. Inga underarter finns listade i Catalogue of Life.

Källor

Långhorningar
spinipenne

redpajama_set_name: RedPajamaWikipedia


text:
21 Savage's Legal Team Sets It Straight: He Is Not a Convicted Felon, ICE 'Provided Incorrect Information'
Filed to: 21 SavageFiled to: 21 Savage
Abolish ICE
She'yaa Bin Abraham-Joseph
ICE arresting undocumented immigrants
ICE arrests
black immigrants
21 Savage attends the 2018 NBA Awards Show on June 25, 2018 in Santa Monica, California.
Photo: Allen Berezovsky (Getty Images)
21 Savage (birth name: She'yaa Bin Abraham-Joseph) is currently in ICE custody.
He arrived in the United States from the United Kingdom at the tender age of seven, therefore making him akin to a "Dreamer," the name lovingly given to individuals who may temporarily benefit from the immigration policy, Deferred Action for Childhood Arrivals (DACA). Additionally, there is the DREAM Act, a bill proposed by Sens. Lindsey Graham (R-S.C.) and Dick Durbin (D-IL) , which has yet to pass.
From a Black DACA Recipient: African-American Support Critical to Reform
Mwewa* always knew she was undocumented. "I just didn't understand what that meant and the…
Cut to February 3, 2019, when the 26-year-old artist was arrested and seized by law enforcement, vulnerable to possible deportation.
"U.S. Immigration and Customs Enforcement arrested unlawfully present United Kingdom national Abraham-Joseph 'during a targeted operation with federal and local law enforcement partners early Sunday,'" said U.S. Immigration and Customs Enforcement (ICE) Spokesperson Bryan Cox, who also noted 21 Savage is a convicted felon.
No Joke, What's Happening to 21 Savage Is Pretty Damn Concerning
It was all jokes... until it wasn't. In fact, it never really was a joke.
According to the young rapper's legal team, consisting of LaPolt Law, P.C., Kuck | Baxter Immigration Partners LLC, The Steel Law Firm, P.C., Daniels & Smith, LLC, Law Firm Of Abbi S. Taylor, LLC, and Icon Business Management, Inc., ICE misled the press with "conjecture and misinformation" in connection with their client's arrest.
The official statement reads:
There has been a great deal of misreporting in the case of She'yaa Bin Abraham-Joseph, known professionally as 21 Savage. Conjecture and misinformation help no one make good decisions and leads to false conclusions.
Mr. Abraham-Joseph was born in the United Kingdom. Mr. Abraham-Joseph arrived legally in the United states at the age of 7. He remained in the United States until 2005, when he departed for approximately one month to visit the United Kingdom. He returned to the United States under a valid H-4 visa on July 22, 2005. Mr. Abraham-Joseph has been continuously physically present in the United States for almost 20 years, except for a brief visit abroad. Unfortunately, in 2006 Mr. Abraham-Joseph's legal status expired through no fault of his own.
Mr. Abraham-Joseph, like almost two million of his immigrant child peers, was left without immigration status as a young child with no way to fix his immigration status. These "Dreamers" come from all walks of life and every ethnicity.
Mr. Abraham-Joseph has no criminal convictions or charges under state or federal law and is free to seek relief from removal in immigration court. ICE provided incorrect information to the press when it claimed he had a criminal conviction.
Mr. Abraham-Joseph has three US Citizen children, a lawful permanent resident mother and four siblings that are either US Citizens or lawful permanent residents. He has exceptionally strong ties in the United States, having lived here since he was in the first grade. Because of his length of residence in the United States and his immediate relatives, Mr. Abraham-Joseph is eligible to seek Cancellation of Removal from an Immigration Judge.
Mr. Abraham-Joseph was placed into deportation proceedings AFTER his arrest, he was not in deportation proceedings prior to this detention by ICE. DHS has known his address since the filing of a U visa application in 2017. He has never hidden from DHS or any of its agencies.
Mr. Abraham-Joseph is not subject to mandatory detention under federal law and is eligible for bond. By statute, bond should be granted by ICE when there is no flight risk or a danger to the community. ICE has the ability to set a bond and conditions of release on cases exactly like this. ICE routinely grants bond to individuals in Mr. Abraham-Joseph's circumstances, specifically individuals who have overstayed a prior valid visa and have relief from deportation under federal law. There is no chance that Mr. Abraham-Joseph is a flight risk. Mr. Abraham-Joseph is not a "danger" to the community as his acts of philanthropy and good will, as well as his music, continue to improve the communities from which he comes.
Mr. Abraham-Joseph has a pending U visa application with the USCIS. This U visa was filed as a result of being the victim of a deadly shooting in 2013. That visa was filed in 2017 and remains pending. When granted, the U visa will afford him lawful status in the United States. Generally, ICE has recognized a pending facially valid U visa as a basis to delay removal proceedings and release individuals from custody.
There continues to be no legal reason to detain Mr. Abraham-Joseph for a civil law violation that occurred when he was a minor, especially when people in his exact situation are routinely released by ICE. Many have speculated as to possible ulterior motives for his arrest and detention, including that he released music five days prior to his arrest by ICE, which included new lyrics condemning the behavior of immigration officials for their detention of children at the border. We are unaware of why ICE apparently targeted Mr. Abraham-Joseph, but we will do everything possible to legally seek his release and pursue his available relief in immigration court.
In addition to confirming just how long he has consistently been living in the U.S. (again, since he was seven years old), pointing out when exactly 21 Savage filed his U Visa (which is pending and will grant him lawful status in the U.S.) is an important note, because it means his address has been actively known by the Department of Homeland Security for at least that long.
Still, the thing that sticks out the most for me is specifying the family he would leave behind, should the deportation be implemented: Three children, a mother, and four siblings—even fathoming the worst is extremely heartbreaking.
One thing's for sure, he seems to have a highly competent legal team behind him. Let's hope true justice is served soon.
How Much Does 21 Savage Hate ICE? A Lot. Faces Deportation After Arrest
If You Don't Know the Words to Jingle Bells Don't Feel Bad, Because 21 Savage Doesn't Know Them Either
US Supreme Court Rules Dreamers Are Safe … for Now

redpajama_set_name: RedPajamaCommonCrawl


text:
Acts 19-22
Acts 18Acts 23
Acts 19-22 New American Standard Bible (NASB)
Paul at Ephesus
19 It happened that while Apollos was at Corinth, Paul passed through the upper country and came to Ephesus, and found some disciples. 2 He said to them, "Did you receive the Holy Spirit when you believed?" And they said to him, "No, we have not even heard whether [a]there is a Holy Spirit." 3 And he said, "Into what then were you baptized?" And they said, "Into John's baptism." 4 Paul said, "John baptized with the baptism of repentance, telling the people to believe in Him who was coming after him, that is, in Jesus." 5 When they heard this, they were baptized [b]in the name of the Lord Jesus. 6 And when Paul had laid his hands upon them, the Holy Spirit came on them, and they began speaking with tongues and prophesying. 7 There were in all about twelve men.
8 And he entered the synagogue and continued speaking out boldly for three months, reasoning and persuading them about the kingdom of God. 9 But when some were becoming hardened and disobedient, speaking evil of the Way before the [c]people, he withdrew from them and took away the disciples, reasoning daily in the school of Tyrannus. 10 This took place for two years, so that all who lived in [d]Asia heard the word of the Lord, both Jews and Greeks.
Miracles at Ephesus
11 God was performing extraordinary [e]miracles by the hands of Paul, 12 so that handkerchiefs or aprons were even carried from his body to the sick, and the diseases left them and the evil spirits went out. 13 But also some of the Jewish exorcists, who went from place to place, attempted to name over those who had the evil spirits the name of the Lord Jesus, saying, "I adjure you by Jesus whom Paul preaches." 14 Seven sons of one Sceva, a Jewish chief priest, were doing this. 15 And the evil spirit answered and said to them, "I recognize Jesus, and I know about Paul, but who are you?" 16 And the man, in whom was the evil spirit, leaped on them and subdued all of them and overpowered them, so that they fled out of that house naked and wounded. 17 This became known to all, both Jews and Greeks, who lived in Ephesus; and fear fell upon them all and the name of the Lord Jesus was being magnified. 18 Many also of those who had believed kept coming, confessing and disclosing their practices. 19 And many of those who practiced magic brought their books together and began burning them in the sight of everyone; and they counted up the price of them and found it [f]fifty thousand pieces of silver. 20 So [g]the word of the Lord was growing mightily and prevailing.
21 Now after these things were finished, Paul purposed in the [h]Spirit to go to Jerusalem after he had passed through Macedonia and Achaia, saying, "After I have been there, I must also see Rome." 22 And having sent into Macedonia two of those who ministered to him, Timothy and Erastus, he himself stayed in [i]Asia for a while.
23 About that time there occurred no small disturbance concerning the Way. 24 For a man named Demetrius, a silversmith, who made silver shrines of [j]Artemis, was bringing no little [k]business to the craftsmen; 25 these he gathered together with the workmen of similar trades, and said, "Men, you know that our prosperity [l]depends upon this business. 26 You see and hear that not only in Ephesus, but in almost all of [m]Asia, this Paul has persuaded and turned away a considerable number of people, saying that [n]gods made with hands are no gods at all. 27 Not only is there danger that this trade of ours fall into disrepute, but also that the temple of the great goddess [o]Artemis be regarded as worthless and that she whom all of [p]Asia and the [q]world worship will even be dethroned from her magnificence."
28 When they heard this and were filled with rage, they began crying out, saying, "Great is [r]Artemis of the Ephesians!" 29 The city was filled with the confusion, and they rushed [s]with one accord into the theater, dragging along Gaius and Aristarchus, Paul's traveling companions from Macedonia. 30 And when Paul wanted to go into the [t]assembly, the disciples would not let him. 31 Also some of the [u]Asiarchs who were friends of his sent to him and repeatedly urged him not to [v]venture into the theater. 32 So then, some were shouting one thing and some another, for the [w]assembly was in confusion and the majority did not know [x]for what reason they had come together. 33 Some of the crowd [y]concluded it was Alexander, since the Jews had put him forward; and having motioned with his hand, Alexander was intending to make a defense to the [z]assembly. 34 But when they recognized that he was a Jew, a single outcry arose from them all as they shouted for about two hours, "Great is [aa]Artemis of the Ephesians!" 35 After quieting the crowd, the town clerk *said, "Men of Ephesus, what man is there after all who does not know that the city of the Ephesians is guardian of the temple of the great [ab]Artemis and of the image which fell down from [ac]heaven? 36 So, since these are undeniable facts, you ought to keep calm and to do nothing rash. 37 For you have brought these men here who are neither robbers of temples nor blasphemers of our goddess. 38 So then, if Demetrius and the craftsmen who are with him have a complaint against any man, the courts are in session and [ad]proconsuls are available; let them bring charges against one another. 39 But if you want anything beyond this, it shall be settled in the [ae]lawful [af]assembly. 40 For indeed we are in danger of being accused of a riot in connection with today's events, since there is no real cause for it, and in this connection we will be unable to account for this disorderly gathering." 41 After saying this he dismissed the [ag]assembly.
Paul in Macedonia and Greece
20 After the uproar had ceased, Paul sent for the disciples, and when he had exhorted them and taken his leave of them, he left to go to Macedonia. 2 When he had gone through those districts and had given them much exhortation, he came to Greece. 3 And there he spent three months, and when a plot was formed against him by the Jews as he was about to set sail for Syria, he decided to return through Macedonia. 4 And [ah]he was accompanied by Sopater of Berea, the son of Pyrrhus, and by Aristarchus and Secundus of the Thessalonians, and Gaius of Derbe, and Timothy, and Tychicus and Trophimus of [ai]Asia. 5 But these had gone on ahead and were waiting for us at Troas. 6 We sailed from Philippi after the days of Unleavened Bread, and came to them at Troas within five days; and there we stayed seven days.
7 On the first day of the week, when we were gathered together to break bread, Paul began talking to them, intending to leave the next day, and he prolonged his [aj]message until midnight. 8 There were many lamps in the upper room where we were gathered together. 9 And there was a young man named [ak]Eutychus sitting [al]on the window sill, sinking into a deep sleep; and as Paul kept on talking, he was overcome by sleep and fell down from the third floor and was picked up dead. 10 But Paul went down and fell upon him, and after embracing him, he said, "[am]Do not be troubled, for his life is in him." 11 When he had gone back up and had broken the bread and [an]eaten, he talked with them a long while until daybreak, and then left. 12 They took away the boy alive, and were [ao]greatly comforted.
Troas to Miletus
13 But we, going ahead to the ship, set sail for Assos, intending from there to take Paul on board; for so he had arranged it, intending himself to go [ap]by land. 14 And when he met us at Assos, we took him on board and came to Mitylene. 15 Sailing from there, we arrived the following day opposite Chios; and the next day we crossed over to Samos; and the day following we came to Miletus. 16 For Paul had decided to sail past Ephesus so that he would not have to spend time in [aq]Asia; for he was hurrying to be in Jerusalem, if possible, on the day of Pentecost.
Farewell to Ephesus
17 From Miletus he sent to Ephesus and called to him the elders of the church. 18 And when they had come to him, he said to them,
"You yourselves know, from the first day that I set foot in [ar]Asia, how I was with you the whole time, 19 serving the Lord with all humility and with tears and with trials which came upon me [as]through the plots of the Jews; 20 how I did not shrink from declaring to you anything that was profitable, and teaching you publicly and [at]from house to house, 21 solemnly testifying to both Jews and Greeks of repentance toward God and faith in our Lord Jesus Christ. 22 And now, behold, bound by the [au]Spirit, I am on my way to Jerusalem, not knowing what will happen to me there, 23 except that the Holy Spirit solemnly testifies to me in every city, saying that bonds and afflictions await me. 24 But I do not consider my life of any account as dear to myself, so that I may finish my course and the ministry which I received from the Lord Jesus, to testify solemnly of the gospel of the grace of God.
25 "And now, behold, I know that all of you, among whom I went about preaching the kingdom, will no longer see my face. 26 Therefore, I [av]testify to you this day that I am [aw]innocent of the blood of all men. 27 For I did not shrink from declaring to you the whole purpose of God. 28 Be on guard for yourselves and for all the flock, among which the Holy Spirit has made you [ax]overseers, to shepherd the church of God which He [ay]purchased [az]with His own blood. 29 I know that after my departure savage wolves will come in among you, not sparing the flock; 30 and from among your own selves men will arise, speaking perverse things, to draw away the disciples after them. 31 Therefore be on the alert, remembering that night and day for a period of three years I did not cease to admonish each one with tears. 32 And now I commend you to God and to the word of His grace, which is able to build you up and to give you the inheritance among all those who are sanctified. 33 I have coveted no one's silver or gold or clothes. 34 You yourselves know that these hands ministered to my own needs and to the men who were with me. 35 In everything I showed you that by working hard in this manner you must help the weak and remember the words of the Lord Jesus, that He Himself said, 'It is more blessed to give than to receive.'"
36 When he had said these things, he knelt down and prayed with them all. 37 And [ba]they began to weep aloud and [bb]embraced Paul, and repeatedly kissed him, 38 [bc]grieving especially over the word which he had spoken, that they would not see his face again. And they were accompanying him to the ship.
Paul Sails from Miletus
21 When we had parted from them and had set sail, we ran a straight course to Cos and the next day to Rhodes and from there to Patara; 2 and having found a ship crossing over to Phoenicia, we went aboard and set sail. 3 When we came in sight of Cyprus, leaving it on the left, we kept sailing to Syria and landed at Tyre; for there the ship was to unload its cargo. 4 After looking up the disciples, we stayed there seven days; and they kept telling Paul [bd]through the Spirit not to set foot in Jerusalem. 5 When [be]our days there were ended, we left and started on our journey, while they all, with wives and children, escorted us until we were out of the city. After kneeling down on the beach and praying, we said farewell to one another. 6 Then we went on board the ship, and they returned home again.
7 When we had finished the voyage from Tyre, we arrived at Ptolemais, and after greeting the brethren, we stayed with them for a day. 8 On the next day we left and came to Caesarea, and entering the house of Philip the evangelist, who was one of the seven, we stayed with him. 9 Now this man had four virgin daughters who were prophetesses. 10 As we were staying there for some days, a prophet named Agabus came down from Judea. 11 And coming to us, he took Paul's belt and bound his own feet and hands, and said, "This is what the Holy Spirit says: 'In this way the Jews at Jerusalem will bind the man who owns this belt and deliver him into the hands of the Gentiles.'" 12 When we had heard this, we as well as the local residents began begging him not to go up to Jerusalem. 13 Then Paul answered, "What are you doing, weeping and breaking my heart? For I am ready not only to be bound, but even to die at Jerusalem for the name of the Lord Jesus." 14 And since he would not be persuaded, we fell silent, remarking, "The will of the Lord be done!"
Paul at Jerusalem
15 After these days we got ready and started on our way up to Jerusalem. 16 Some of the disciples from Caesarea also came with us, taking us to Mnason of Cyprus, a disciple of long standing with whom we were to lodge.
17 After we arrived in Jerusalem, the brethren received us gladly. 18 And the following day Paul went in with us to [bf]James, and all the elders were present. 19 After he had greeted them, he began to relate one by one the things which God had done among the Gentiles through his ministry. 20 And when they heard it they began glorifying God; and they said to him, "You see, brother, how many [bg]thousands there are among the Jews of those who have believed, and they are all zealous for the Law; 21 and they have been told about you, that you are teaching all the Jews who are among the Gentiles to forsake Moses, telling them not to circumcise their children nor to [bh]walk according to the customs. 22 What, then, is to be done? They will certainly hear that you have come. 23 Therefore do this that we tell you. We have four men who [bi]are under a vow; 24 take them and purify yourself along with them, and [bj]pay their expenses so that they may shave their [bk]heads; and all will know that there is nothing to the things which they have been told about you, but that you yourself also walk orderly, keeping the Law. 25 But concerning the Gentiles who have believed, we wrote, having decided that they should abstain from [bl]meat sacrificed to idols and from blood and from what is strangled and from fornication." 26 Then Paul [bm]took the men, and the next day, purifying himself along with them, went into the temple giving notice of the completion of the days of purification, until the sacrifice was offered for each one of them.
Paul Seized in the Temple
27 When the seven days were almost over, the Jews from [bn]Asia, upon seeing him in the temple, began to stir up all the crowd and laid hands on him, 28 crying out, "Men of Israel, come to our aid! This is the man who preaches to all men everywhere against our people and the Law and this place; and besides he has even brought Greeks into the temple and has defiled this holy place." 29 For they had previously seen Trophimus the Ephesian in the city with him, and they supposed that Paul had brought him into the temple. 30 Then all the city was provoked, and [bo]the people rushed together, and taking hold of Paul they dragged him out of the temple, and immediately the doors were shut. 31 While they were seeking to kill him, a report came up to the [bp]commander of the Roman [bq]cohort that all Jerusalem was in confusion. 32 At once he took along some soldiers and centurions and ran down to them; and when they saw the [br]commander and the soldiers, they stopped beating Paul. 33 Then the [bs]commander came up and took hold of him, and ordered him to be bound with two chains; and he began asking who he was and what he had done. 34 But among the crowd some were shouting one thing and some another, and when he could not find out the [bt]facts because of the uproar, he ordered him to be brought into the barracks. 35 When he got to the stairs, he was carried by the soldiers because of the violence of the [bu]mob; 36 for the multitude of the people kept following them, shouting, "Away with him!"
37 As Paul was about to be brought into the barracks, he said to the [bv]commander, "May I say something to you?" And he *said, "Do you know Greek? 38 Then you are not the Egyptian who some [bw]time ago stirred up a revolt and led the four thousand men of the Assassins out into the wilderness?" 39 But Paul said, "I am a Jew of Tarsus in Cilicia, a citizen of no insignificant city; and I beg you, allow me to speak to the people." 40 When he had given him permission, Paul, standing on the stairs, motioned to the people with his hand; and when there [bx]was a great hush, he spoke to them in the [by]Hebrew dialect, saying,
Paul's Defense before the Jews
22 "Brethren and fathers, hear my defense which I now offer to you."
2 And when they heard that he was addressing them in the [bz]Hebrew dialect, they became even more quiet; and he *said,
3 "I am a Jew, born in Tarsus of Cilicia, but brought up in this city, educated [ca]under Gamaliel, [cb]strictly according to the law of our fathers, being zealous for God just as you all are today. 4 I persecuted this Way to the death, binding and putting both men and women into prisons, 5 as also the high priest and all the Council of the elders [cc]can testify. From them I also received letters to the brethren, and started off for Damascus in order to bring even those who were there to Jerusalem [cd]as prisoners to be punished.
6 "But it happened that as I was on my way, approaching Damascus about noontime, a very bright light suddenly flashed from heaven all around me, 7 and I fell to the ground and heard a voice saying to me, 'Saul, Saul, why are you persecuting Me?' 8 And I answered, 'Who are You, Lord?' And He said to me, 'I am Jesus the Nazarene, whom you are persecuting.' 9 And those who were with me saw the light, to be sure, but did not [ce]understand the voice of the One who was speaking to me. 10 And I said, 'What shall I do, Lord?' And the Lord said to me, 'Get up and go on into Damascus, and there you will be told of all that has been appointed for you to do.' 11 But since I could not see because of the [cf]brightness of that light, I was led by the hand by those who were with me and came into Damascus.
12 "A certain Ananias, a man who was devout by the standard of the Law, and well spoken of by all the Jews who lived there, 13 came to me, and standing near said to me, 'Brother Saul, receive your sight!' And [cg]at that very time I looked up at him. 14 And he said, 'The God of our fathers has appointed you to know His will and to see the Righteous One and to hear an [ch]utterance from His mouth. 15 For you will be a witness for Him to all men of what you have seen and heard. 16 Now why do you delay? Get up and be baptized, and wash away your sins, calling on His name.'
17 "It happened when I returned to Jerusalem and was praying in the temple, that I fell into a trance, 18 and I saw Him saying to me, 'Make haste, and get out of Jerusalem quickly, because they will not accept your testimony about Me.' 19 And I said, 'Lord, they themselves understand that in one synagogue after another I used to imprison and beat those who believed in You. 20 And when the blood of Your witness Stephen was being shed, I also was standing by approving, and watching out for the coats of those who were slaying him.' 21 And He said to me, 'Go! For I will send you far away to the Gentiles.'"
22 They listened to him up to this statement, and then they raised their voices and said, "Away with such a fellow from the earth, for he should not be allowed to live!" 23 And as they were crying out and throwing off their cloaks and tossing dust into the air, 24 the [ci]commander ordered him to be brought into the barracks, stating that he should be examined by scourging so that he might find out the reason why they were shouting against him that way. 25 But when they stretched him out [cj]with thongs, Paul said to the centurion who was standing by, "Is it [ck]lawful for you to scourge a man who is a Roman and uncondemned?" 26 When the centurion heard this, he went to the [cl]commander and told him, saying, "What are you about to do? For this man is a Roman." 27 The [cm]commander came and said to him, "Tell me, are you a Roman?" And he said, "Yes." 28 The [cn]commander answered, "I acquired this citizenship with a large sum of money." And Paul said, "But I was actually born a citizen." 29 Therefore those who were about to examine him immediately [co]let go of him; and the [cp]commander also was afraid when he found out that he was a Roman, and because he had [cq]put him in chains.
30 But on the next day, wishing to know for certain why he had been accused by the Jews, he released him and ordered the chief priests and all the [cr]Council to assemble, and brought Paul down and set him before them.
Acts 19:2 Or the Holy Spirit has been given
Acts 19:5 Lit into
Acts 19:9 Lit multitude
Acts 19:10 I.e. west coast province of Asia Minor
Acts 19:11 Or works of power
Acts 19:19 Probably fifty thousand Greek drachmas; a drachma approximated a day's wage
Acts 19:20 Or according to the power of the Lord the word was growing
Acts 19:21 Or spirit
Acts 19:24 Lat Diana
Acts 19:24 Or profit
Acts 19:25 Lit is from
Acts 19:26 V 22, note 1
Acts 19:26 Lit those
Acts 19:27 Lit the inhabited earth
Acts 19:29 Or together
Acts 19:30 Lit people
Acts 19:31 I.e. political or religious officials of the province of Asia
Acts 19:31 Lit give himself
Acts 19:32 Gr ekklesia
Acts 19:32 Or on whose account
Acts 19:33 Or advised Alexander
Acts 19:35 Lit Zeus; Lat Jupiter
Acts 19:38 Or provincial governors
Acts 19:39 Or regular
Acts 20:4 Lit there accompanied him
Acts 20:4 I.e. west coast province of Asia Minor
Acts 20:7 Lit word, speech
Acts 20:9 Eutychus means Good fortune, i.e. 'Lucky'
Acts 20:9 Or at the window
Acts 20:10 Or Stop being troubled
Acts 20:11 Lit tasted
Acts 20:12 Lit not moderately
Acts 20:13 Or on foot
Acts 20:19 Lit by
Acts 20:20 Or in the various private homes
Acts 20:22 Or in spirit
Acts 20:26 Or call you to witness
Acts 20:26 Lit pure from
Acts 20:28 Or bishops
Acts 20:28 Lit acquired
Acts 20:28 Lit through
Acts 20:37 Lit a considerable weeping of all occurred
Acts 20:37 Lit threw themselves on Paul's neck
Acts 20:38 Lit suffering pain
Acts 21:4 I.e. because of impressions made by the Spirit
Acts 21:5 Lit we had completed the days
Acts 21:18 Or Jacob
Acts 21:20 Lit ten thousands
Acts 21:21 I.e. observe or live by
Acts 21:23 Lit have a vow on them
Acts 21:24 Lit spend on them
Acts 21:24 Lit head
Acts 21:25 Lit the thing
Acts 21:26 Or took the men the next day, and purifying himself
Acts 21:30 Lit a running together of the people occurred
Acts 21:31 I.e. chiliarch, in command of one thousand troops
Acts 21:31 Or battalion
Acts 21:34 Lit certainty
Acts 21:35 Lit crowd
Acts 21:38 Lit days
Acts 21:40 Lit occurred
Acts 21:40 I.e. Jewish Aramaic
Acts 22:2 I.e. Jewish Aramaic
Acts 22:3 Lit at the feet of
Acts 22:3 Lit according to the strictness of the ancestral law
Acts 22:5 Lit testifies for me
Acts 22:5 Lit having been bound
Acts 22:9 Or hear (with comprehension)
Acts 22:11 Lit glory
Acts 22:13 Or instantly; lit at the very hour
Acts 22:14 Or message; lit voice
Acts 22:25 Or for the whip
Acts 22:25 Interrogation by torture was a procedure used with slaves
Acts 22:29 Lit withdrew from
Acts 22:29 Lit bound him
Acts 22:30 Or Sanhedrin
Acts 19:1 : Acts 18:24; 1 Cor 1:12; 3:5, 6, 22; 4:6; 16:12; Titus 3:13
Acts 19:1 : Acts 18:1
Acts 19:1 : Acts 18:23
Acts 19:1 : Acts 18:21, 24; 19:17, 26, 28, 34f; 20:16f; 21:29; 1 Cor 15:32; 16:8; Eph 1:1; 1 Tim 1:3; 2 Tim 1:18; 4:12; Rev 1:11; 2:1
Acts 19:2 : Acts 8:15f; 11:16f
Acts 19:2 : John 7:39
Acts 19:3 : Luke 7:29; Acts 18:25
Acts 19:4 : Matt 3:11; Mark 1:4, 7, 8; Luke 3:16; John 1:26, 27; Acts 13:24
Acts 19:4 : John 1:7
Acts 19:5 : Acts 8:12, 16; 10:48
Acts 19:6 : Acts 6:6; 8:17
Acts 19:6 : Mark 16:17; Acts 2:4; 10:46
Acts 19:8 : Acts 9:20; 18:26
Acts 19:8 : Acts 1:3
Acts 19:9 : Acts 9:2; 19:23
Acts 19:9 : Acts 11:26; 19:30
Acts 19:10 : Acts 19:8; 20:31
Acts 19:10 : Acts 16:6; 19:22, 26, 27
Acts 19:10 : Acts 13:12; 19:20
Acts 19:11 : Acts 8:13
Acts 19:12 : Mark 16:17
Acts 19:13 : Matt 12:27; Luke 11:19
Acts 19:17 : Acts 18:19
Acts 19:19 : Luke 15:8
Acts 19:20 : Acts 6:7; 12:24
Acts 19:21 : Acts 20:16, 22; 21:15; Rom 15:25; 2 Cor 1:16
Acts 19:21 : Acts 20:1; 1 Cor 16:5
Acts 19:21 : Acts 16:9; 19:22, 29; Rom 15:26; 1 Thess 1:7f
Acts 19:21 : Acts 23:11; Rom 15:24, 28
Acts 19:22 : Acts 16:9; 19:21, 29
Acts 19:22 : Acts 13:5; 19:29; 20:34; 2 Cor 8:19
Acts 19:22 : Acts 16:1
Acts 19:22 : Rom 16:23; 2 Tim 4:20
Acts 19:24 : Acts 16:16, 19f
Acts 19:26 : Deut 4:28; Ps 115:4; Is 44:10-20; Jer 10:3ff; Acts 17:29; 1 Cor 8:4; 10:19; Rev 9:20
Acts 19:27 : Matt 24:14
Acts 19:29 : Acts 20:4; 27:2; Col 4:10; Philem 24
Acts 19:37 : Rom 2:22
Acts 20:1 : Acts 16:9; 20:3
Acts 20:3 : Acts 9:23f; 20:19
Acts 20:3 : Matt 4:24
Acts 20:4 : Eph 6:21; Col 4:7; 2 Tim 4:12; Titus 3:12
Acts 20:4 : Acts 21:29; 2 Tim 4:20
Acts 20:4 : Acts 16:6; 20:16, 18
Acts 20:5 : Acts 16:10; 20:5-15
Acts 20:7 : 1 Cor 16:2; Rev 1:10
Acts 20:8 : Matt 25:1
Acts 20:8 : Acts 1:13
Acts 20:10 : 1 Kin 17:21; 2 Kin 4:34
Acts 20:10 : Matt 9:23f; Mark 5:39
Acts 20:11 : Acts 2:42; 20:7
Acts 20:13 : Acts 16:10; 20:5-15
Acts 20:15 : Acts 20:17; 2 Tim 4:20
Acts 20:16 : Acts 16:6; 20:4, 18
Acts 20:16 : Acts 19:21; 20:6, 22; 1 Cor 16:8
Acts 20:16 : Acts 2:1
Acts 20:18 : Acts 18:19; 19:1, 10; 20:4, 16
Acts 20:21 : Luke 16:28; Acts 18:5; 20:23, 24
Acts 20:21 : Acts 2:38; 11:18; 26:20
Acts 20:21 : Acts 24:24; 26:18; Eph 1:15; Col 2:5; Philem 5
Acts 20:23 : Acts 9:16; 21:33
Acts 20:24 : Acts 13:25; 2 Tim 4:7
Acts 20:24 : Luke 16:28; Acts 18:5; 20:21
Acts 20:25 : Matt 4:23; Acts 28:31
Acts 20:28 : Luke 12:32; John 21:15-17; Acts 20:29; 1 Pet 5:2f
Acts 20:28 : Matt 16:18; Rom 16:16; 1 Cor 10:32
Acts 20:28 : Eph 1:7, 14; Titus 2:14; 1 Pet 1:19; 2:9; Rev 5:9
Acts 20:29 : Ezek 22:27; Matt 7:15
Acts 20:31 : Acts 19:8, 10; 24:17
Acts 20:32 : Acts 26:18; Eph 1:14; 5:5; Col 1:12; 3:24; Heb 9:15; 1 Pet 1:4
Acts 20:33 : 1 Cor 9:4-18; 2 Cor 11:7-12; 12:14-18; 1 Thess 2:5f
Acts 20:36 : Acts 9:40; 21:5; Luke 22:41
Acts 20:37 : Luke 15:20
Acts 21:1 : [we] Acts 16:10; 21:1-18
Acts 21:2 : Acts 11:19; 21:3
Acts 21:5 : Luke 22:41; Acts 9:40; 20:36
Acts 21:6 : John 19:27
Acts 21:8 : Acts 6:5; 8:5
Acts 21:8 : Eph 4:11; 2 Tim 4:5
Acts 21:9 : Luke 2:36; Acts 13:1; 1 Cor 11:5
Acts 21:11 : 1 Kin 22:11; Is 20:2; Jer 13:1-11; 19:1, 11; John 18
Acts 21:13 : Acts 5:41; 9:16
Acts 21:20 : Matt 9:8
Acts 21:20 : Acts 15:1; 22:3; Rom 10:2; Gal 1:14
Acts 21:21 : Acts 15:19ff; 1 Cor 7:18f
Acts 21:23 : Num 6:13-21; Acts 18:18
Acts 21:24 : John 11:55; Acts 21:26; 24:18
Acts 21:25 : Acts 15:19f, 29
Acts 21:26 : Num 6:13; Acts 24:18
Acts 21:27 : Num 6:9, 13-20
Acts 21:28 : Matt 24:15; Acts 6:13f; 24:6
Acts 21:30 : 2 Kin 11:15; Acts 16:19; 26:21
Acts 21:33 : Acts 20:23; 21:11; 22:29; 26:29; 28:20; Eph 6:20; 2 Tim 1:16; 2:9
Acts 21:34 : Acts 21:37; 22:24; 23:10, 16, 32
Acts 21:36 : Luke 23:18; John 19:15; Acts 22:22
Acts 21:40 : John 5:2; Acts 1:19; 22:2; 26:14
Acts 22:3 : Acts 9:1-22; 22:3-16; 26:9-18
Acts 22:3 : Acts 23:6; 26:5; Phil 3:6
Acts 22:4 : Acts 8:3; 22:19f; 26:9-11
Acts 22:5 : Luke 22:66; Acts 5:21; 1 Tim 4:14
Acts 22:5 : Acts 2:29; 3:17; 13:26; 23:1; 28:17, 21; Rom 9:3
Acts 22:6 : Acts 22:6-11: Acts 9:3-8; 26:12-18
Acts 22:14 : Acts 9:17; 26:16; 1 Cor 9:1; 15:8
Acts 22:16 : Acts 2:38; 1 Cor 6:11; Eph 5:26; Heb 10:22
Acts 22:19 : Acts 8:3; 22:4
Acts 22:19 : Matt 10:17; Acts 26:11
Acts 22:20 : Acts 7:58f; 8:1; 26:10
Acts 22:22 : Acts 21:36; 1 Thess 2:16
Acts 22:23 : 2 Sam 16:13
Acts 22:30 : Matt 5:22
NASB Hebrew-Greek Key Word Study Bible, genuine leather, burgundy-indexed
NASB Outreach Bible, Softcover-Case of 32
NASB Skinii Bible, Leather Bound Hardcover, Black


All > Piercing > Lip Piercing (story) > Cheek piercings; the good, the bad and the ugly.
Cheek piercings; the good, the bad and the ugly.
My cheek piercing experience could easily be defined as that of a successful one. Knowing that their referred to as "the piercing that never heals" made me wary at first, but deeply satisfied now that (a year later) there as close to healed as I've seen possible.
it was nothing I wanted to look at in the mirror. But already it felt worlds better. I decided the best way to go at that point in time was putting a tongue ring in there. It was a little ridiculous as far as length, but at that point that's what I wanted, and the balls were big enough where I didn't have to worry about them also imbedding into the smaller holes made by the other one.
One thing I can almost guarantee, (and you'll figure this one out on your own in time) is that you are going to have one "problem" cheek. And by problem cheek I mean it's going to be the one that always gives you complications, probably throughout the whole duration that you have them pierced. Even when the other is perfectly fine, that one will act up and give you problems every once in a while. No matter how healed you have them. Coincidentally, or not so coincidentally, my left is my problem cheek, and it still gets crusty and pissy and leaks once and a while. Everyone that I've come to know who also has them done, has that same thing going on, whether it be there right or left, so don't think you'll be an exception.
, don't panic just leave it alone. Stop touching your cheek piercings with your fingers, and especially stop playing with it with your tongue. Once it relaxes, It will go back in and look normal again. But it is freaky at the time. You'll know exactly what I'm talking about, if you see it.
So we've gone through the ins and outs of cheek piercings. There is good and back, but if your like me, and fall in love with whatever is in your face, they will definitely be a happy favorite. Don't rush it, but you'll get to the point where you will find exactly what looks good on you, the right size labrets to indent the cheek piercings as much as you favor, and the right size balls to top it off. I'm geeky, but very in love with mine, and happy with my success story. The best advice you can get, is; watch what  your piercer uses, don't over clean them, play with them as little as possible ...as tempting as it might be, and BE PATIENT. Without patience, mine would have never healed. Best of luck to you, and happy cheek piercings, kids!


text:
A Bundesliga a legmagasabb osztályú német női kézilabda-bajnokság. A bajnokságot 1958 óta rendezik meg, de nagypályán már korábban is volt országos bajnokság. A második világháború végétől 1991-ig külön rendezték Kelet-Németország (1949-től Német Demokratikus Köztársaság) bajnokságát. Jelenleg tizennégy csapat játszik a bajnokságban, a legeredményesebb klub a Bayer Leverkusen, a címvédő az SG BBM Bietigheim.

Nagypályás bajnokságok

Kispályás bajnokságok

Lásd még
Német férfi kézilabda-bajnokság (első osztály)
Keletnémet női kézilabda-bajnokság (első osztály)

Források

Das bundesligainfo.de Handballdaten-Archiv

Kézilabda-bajnokságok
Németország sportélete


Radiant Innovation Inc. , has developed a proprietary Infrared-System-On-Chip device that integrates all hardware items onto one IC.
The IR-SoC consists of an on-board CPU.
many other IR thermometer's batteries!
40 hours continuous of use.


text:
#ifndef TH_GENERIC_FILE
#define TH_GENERIC_FILE "generic/SoftMaxTree.c"
#else

static int nn_(SoftMaxTree_updateOutput)(lua_State *L)
{
  THTensor *input = luaT_checkudata(L, 2, torch_Tensor);
  THIntTensor *target = (THIntTensor*)luaT_checkudata(L, 3, "torch.IntTensor");
  int inputSize = luaT_getfieldcheckint(L, 1, "inputSize");
  long rootId = (long)(luaT_getfieldcheckint(L, 1, "rootId") - 1);
  long maxFamilyPath = (long)luaT_getfieldcheckint(L, 1, "maxFamilyPath");

  THIntTensor *childParent = (THIntTensor*)luaT_getfieldcheckudata(L, 1, "childParent", "torch.IntTensor");
  THIntTensor *parentChildren = (THIntTensor*)luaT_getfieldcheckudata(L, 1, "parentChildren", "torch.IntTensor");

  THTensor *linearOutput = luaT_getfieldcheckudata(L, 1, "_nodeBuffer", torch_Tensor);
  THTensor *logsoftOutput = luaT_getfieldcheckudata(L, 1, "_multiBuffer", torch_Tensor);

  THTensor *weight = luaT_getfieldcheckudata(L, 1, "weight", torch_Tensor);
  THTensor *bias = luaT_getfieldcheckudata(L, 1, "bias", torch_Tensor);
  THTensor *output = luaT_getfieldcheckudata(L, 1, "output", torch_Tensor);

  THIntTensor *node;
  THTensor *nodeWeight, *nodeBias, *nodeOutput, *nodeInput, *nodeInter;
  real *input_data, *output_data;

  long i, d;

  luaL_argcheck(L, input->nDimension == 2, 2, "2D(batch mode) tensor expected");
  luaL_argcheck(L, input->size[1] == inputSize, 2, "invalid input size");

  node = THIntTensor_new();
  nodeWeight = THTensor_(new)();
  nodeBias = THTensor_(new)();
  nodeOutput = THTensor_(new)();
  nodeInput = THTensor_(new)();
  nodeInter = THTensor_(new)();

  THTensor_(resize1d)(output, input->size[0]);

  for(i = 0; i < input->size[0]; i++)
  {
    long n = 0;
    long childId = (long)(THIntTensor_get1d(target, i)) - 1;
    accreal narrowsum = 0;
    THTensor_(select)(nodeInput, input, 0, i);
    while(1)
    {
      long parentId, parentIdx, childIdx, nChildren;
      /* get next Node in Tree */
      THIntTensor_select(node, childParent, 0, childId);
      parentId = (long)(THIntTensor_get1d(node, 0)) - 1;
      childIdx = (long)(THIntTensor_get1d(node, 1)) - 1;

      luaL_argcheck(L, parentId != -2, 2, "Non-root node has no parent in tree.");

      THIntTensor_select(node, parentChildren, 0, parentId);
      parentIdx = (long)(THIntTensor_get1d(node, 0)) - 1;
      nChildren = (long)(THIntTensor_get1d(node, 1));

      /* Linear */
      THTensor_(narrow)(nodeWeight, weight, 0, parentIdx, nChildren);
      THTensor_(narrow)(nodeBias, bias, 0, parentIdx, nChildren);
      THTensor_(narrow)(nodeOutput, linearOutput, 0, 0, nChildren);

      THTensor_(addmv)(nodeOutput, 1, nodeBias, 1, nodeWeight, nodeInput);

      /* LogSoftMax */
      THTensor_(set)(nodeInter, nodeOutput);
      THTensor_(narrow)(nodeOutput, logsoftOutput, 0, maxFamilyPath*i + n, nChildren);

      input_data = THTensor_(data)(nodeInter);
      output_data = THTensor_(data)(nodeOutput);

      accreal logsum = 0;
      real maxInput = -THInf;

      for(d = 0; d < nChildren; d++)
        maxInput = THMax(maxInput, input_data[d]);

      for(d = 0; d < nChildren; d++)
        logsum += THExpMinusApprox(maxInput-input_data[d]);
      logsum = maxInput + log(logsum);

      for(d = 0; d < nChildren; d++)
        output_data[d] = input_data[d] - logsum;

      /* Narrow */
      THTensor_(set)(nodeInter, nodeOutput);
      THTensor_(narrow)(nodeOutput, nodeInter, 0, childIdx, 1);

      /* CAddTable (without log, would have been CMulTable) */
      narrowsum += THTensor_(get1d)(nodeOutput, 0);
      n += nChildren;
      /* Break when root is reached */
      if (parentId == rootId)
      {
        break;
      }
      childId = parentId;
    }
    THTensor_(set1d)(output, i, narrowsum);
  }

  THIntTensor_free(node);
  THTensor_(free)(nodeWeight);
  THTensor_(free)(nodeBias);
  THTensor_(free)(nodeOutput);
  THTensor_(free)(nodeInput);
  THTensor_(free)(nodeInter);
  return 1;
}

static int nn_(SoftMaxTree_updateGradInput)(lua_State *L)
{
  THTensor *input = luaT_checkudata(L, 2, torch_Tensor);
  THTensor *gradOutput = luaT_checkudata(L, 3, torch_Tensor);
  THIntTensor *target = (THIntTensor*)luaT_checkudata(L, 4, "torch.IntTensor");
  int inputSize = luaT_getfieldcheckint(L, 1, "inputSize");
  long rootId = (long)(luaT_getfieldcheckint(L, 1, "rootId") - 1);
  long maxFamilyPath = (long)luaT_getfieldcheckint(L, 1, "maxFamilyPath");

  THIntTensor *childParent = (THIntTensor*)luaT_getfieldcheckudata(L, 1, "childParent", "torch.IntTensor");
  THIntTensor *parentChildren = (THIntTensor*)luaT_getfieldcheckudata(L, 1, "parentChildren", "torch.IntTensor");

  THTensor *logsoftOutput = luaT_getfieldcheckudata(L, 1, "_multiBuffer", torch_Tensor);

  THTensor *weight = luaT_getfieldcheckudata(L, 1, "weight", torch_Tensor);
  THTensor *output = luaT_getfieldcheckudata(L, 1, "output", torch_Tensor);
  THTensor *gradInput = luaT_getfieldcheckudata(L, 1, "_gradInput", torch_Tensor);

  THIntTensor *node;
  THTensor *nodeWeight, *nodeOutput;
  THTensor *nodeGradInput, *nodeGradOutput, *weightTranspose;
  real *gradInput_data, *output_data;

  long i, d;

  luaL_argcheck(L, input->nDimension == 2, 2, "2D(batch mode) tensor expected");
  luaL_argcheck(L, input->size[1] == inputSize, 2, "invalid input size");

  luaL_argcheck(L, gradOutput->nDimension == 1, 2, "1D tensor expected");

  node = THIntTensor_new();
  nodeWeight = THTensor_(new)();
  nodeOutput = THTensor_(new)();
  nodeGradInput = THTensor_(new)();
  weightTranspose = THTensor_(new)();

  THTensor_(transpose)(weightTranspose, weight, 0, 1);
  THTensor_(resizeAs)(gradInput, input);
  THTensor_(zero)(gradInput);

  for(i = 0; i < input->size[0]; i++)
  {
    long n = 0;
    long childId = (long)(THIntTensor_get1d(target, i)) - 1;
    real grad = THTensor_(get1d)(gradOutput, i);

    THTensor_(select)(nodeGradInput, gradInput, 0, i);

    while(1)
    {
      long parentId, parentIdx, childIdx, nChildren;
      /* get next Node in Tree */
      THIntTensor_select(node, childParent, 0, childId);
      parentId = (long)(THIntTensor_get1d(node, 0)) - 1;
      childIdx = (long)(THIntTensor_get1d(node, 1)) - 1;

      luaL_argcheck(L, parentId != -2, 2, "Non-root node has no parent in tree.");

      THIntTensor_select(node, parentChildren, 0, parentId);
      parentIdx = (long)(THIntTensor_get1d(node, 0)) - 1;
      nChildren = (long)(THIntTensor_get1d(node, 1));

      luaL_argcheck(L, logsoftOutput->size[0] >= n+nChildren, 2, \
        "Backward performed on different inputs than last forward");

      /* CAddTable + Narrow + LogSoftMax */
      THTensor_(narrow)(nodeOutput, logsoftOutput, 0, maxFamilyPath*i + n, nChildren);

      output_data = THTensor_(data)(nodeOutput);

      for(d = 0; d < nChildren; d++)
        output_data[d] = -exp(output_data[d])*grad;
      output_data[childIdx] += grad;

      /* Linear */
      THTensor_(narrow)(nodeWeight, weightTranspose, 1, parentIdx, nChildren);

      THTensor_(addmv)(nodeGradInput, 1, nodeGradInput, 1, nodeWeight, nodeOutput);

      n += nChildren;
      /* Break when root is reached */
      if (parentId == rootId)
      {
        break;
      }
      childId = parentId;
    }
  }

  THIntTensor_free(node);
  THTensor_(free)(nodeWeight);
  THTensor_(free)(nodeOutput);
  THTensor_(free)(nodeGradInput);
  THTensor_(free)(weightTranspose);
  return 1;
}

static int nn_(SoftMaxTree_accGradParameters)(lua_State *L)
{
  THTensor *input = luaT_checkudata(L, 2, torch_Tensor);
  THIntTensor *target = (THIntTensor*)luaT_checkudata(L, 4, "torch.IntTensor");
  real scale = luaL_optnumber(L, 5, 1);
  long rootId = (long)(luaT_getfieldcheckint(L, 1, "rootId") - 1);
  long maxFamilyPath = (long)luaT_getfieldcheckint(L, 1, "maxFamilyPath");

  int inputSize = luaT_getfieldcheckint(L, 1, "inputSize");
  THIntTensor *childParent = (THIntTensor*)luaT_getfieldcheckudata(L, 1, "childParent", "torch.IntTensor");
  THIntTensor *parentChildren = (THIntTensor*)luaT_getfieldcheckudata(L, 1, "parentChildren", "torch.IntTensor");

  THTensor *linearGradOutput = luaT_getfieldcheckudata(L, 1, "_multiBuffer", torch_Tensor);;

  THTensor *gradWeight = luaT_getfieldcheckudata(L, 1, "gradWeight", torch_Tensor);
  THTensor *gradBias = luaT_getfieldcheckudata(L, 1, "gradBias", torch_Tensor);

  lua_getfield(L, 1, "updates");

  THIntTensor *node;
  THTensor *nodeGradWeight, *nodeGradBias, *nodeInput, *nodeGradOutput;

  long i, d;

  luaL_argcheck(L, input->nDimension == 2, 2, "2D(batch mode) tensor expected");
  luaL_argcheck(L, input->size[1] == inputSize, 2, "invalid input size");

  node = THIntTensor_new();
  nodeGradWeight = THTensor_(new)();
  nodeGradBias = THTensor_(new)();
  nodeGradOutput = THTensor_(new)();
  nodeInput = THTensor_(new)();

  for(i = 0; i < input->size[0]; i++)
  {
    long n = 0;
    long childId = (long)(THIntTensor_get1d(target, i)) - 1;
    THTensor_(select)(nodeInput, input, 0, i);

    while(1)
    {
      long parentId, parentIdx, childIdx, nChildren;
      double count;
      /* get next Node in Tree */
      THIntTensor_select(node, childParent, 0, childId);
      parentId = (long)(THIntTensor_get1d(node, 0)) - 1;
      childIdx = (long)(THIntTensor_get1d(node, 1)) - 1;

      luaL_argcheck(L, parentId != -2, 2, "Non-root node has no parent in tree.");

      THIntTensor_select(node, parentChildren, 0, parentId);
      parentIdx = (long)(THIntTensor_get1d(node, 0)) - 1;
      nChildren = (long)(THIntTensor_get1d(node, 1));

      THTensor_(narrow)(nodeGradOutput, linearGradOutput, 0, maxFamilyPath*i + n, nChildren);
      THTensor_(narrow)(nodeGradWeight, gradWeight, 0, parentIdx, nChildren);
      THTensor_(narrow)(nodeGradBias, gradBias, 0, parentIdx, nChildren);

      THTensor_(addr)(nodeGradWeight, 1, nodeGradWeight, scale, nodeGradOutput, nodeInput);
      THTensor_(cadd)(nodeGradBias, nodeGradBias, scale, nodeGradOutput);

      /* updates will contain parentId (key) sum of scales (value)*/
      lua_pushinteger(L, (int)(parentId+1));
      lua_gettable(L, -2);
      count = lua_tonumber(L, -1) + scale;
      lua_pop(L, 1);

      lua_pushinteger(L, (int)(parentId+1)); /* key */
      lua_pushnumber(L, count); /* value */
      lua_settable(L, -3);

      n += nChildren;
      /* Break when root is reached */
      if (parentId == rootId)
      {
        break;
      }
      childId = parentId;
    }
  }

  THIntTensor_free(node);
  THTensor_(free)(nodeGradWeight);
  THTensor_(free)(nodeGradBias);
  THTensor_(free)(nodeGradOutput);
  THTensor_(free)(nodeInput);

  return 0;
}

static const struct luaL_Reg nn_(SoftMaxTree__) [] = {
  {"SoftMaxTree_updateOutput", nn_(SoftMaxTree_updateOutput)},
  {"SoftMaxTree_updateGradInput", nn_(SoftMaxTree_updateGradInput)},
  {"SoftMaxTree_accGradParameters", nn_(SoftMaxTree_accGradParameters)},
  {NULL, NULL}
};

static void nn_(SoftMaxTree_init)(lua_State *L)
{
  luaT_pushmetatable(L, torch_Tensor);
  luaT_registeratname(L, nn_(SoftMaxTree__), "nn");
  lua_pop(L,1);
}

#endif


Our Business Intelligence and Data Analytics (BIDA) programs are aimed at developing an elite set of graduates cross-trained in business process analysis, technology management and technically skilled in all aspects of data science including predictive modelling, analytical reporting, GIS mapping, segmentation analysis, and data visualisation. Students will acquire the skills to integrate cutting edge information and analytics technologies with best practices and applied business methods.
The program comprises 204 units: 150 units of core courses and 54 units of elective courses.


Over the last few years Thanksgiving and the Oktoberfest parade have gone hand in hand. The early morning start to the day is always fun especially with the cousins.
For me it is the start of a lot of fun with friends and family.
Here is my view of the parade. Check out the next post for my cousins view from the parade and thanksgiving!


I know the holidays are still a few months away but I wanted to share this with everyone before things get crazy with the hustle and bustle of the season. Get family and friends in on this too. I know they will be well received as well as deserved. Let's not forget the sacrifices made so we can celebrate freely. Thanks everyone!


text:
Officer screams he was hit in fatal California shooting
By Scott Smith, Associated Press | Posted - Aug. 1, 2017 at 7:02 p.m.
FRESNO, Calif. (AP) — A police officer frantically screamed into his radio for help, telling dispatchers he had been shot and was bleeding in the struggle and gunfight that left two officers wounded and a suspect dead.
Those and other details were slowly emerging Tuesday as the two officers lay recovering in a hospital, though authorities were still withholding much of the story.
They said that the officers did not know the man had been involved in a very similar struggle with sheriff's deputies a month ago when they first arrived at the apartment in the in the small central California farming community of Los Banos (BAHN'-ohs).
The man's teenage son had called 911 and summoned police, and he, the man's estranged wife and four other children huddled in a nearby room during the struggle and gunfight.
In the earlier struggle six months ago, deputies wrestled the combative man to the ground. Days later, his wife took out a restraining order, according to court documents that also say he had made violent threats.
The second encounter unfolded at dawn when authorities received a 911 emergency call that Norberto Reyes, 39, had broken into the apartment through a window.
"The son just wanted police there, wanted help," Los Banos Police Cmdr. Ray Reyna said. "The father did not live there — was not wanted there."
The first officer met the son outside the apartment, and they went inside. The officer found Reyes in the kitchen near the front door and asked him to leave the apartment. Reyes refused, and the situation quickly deteriorated into a physical confrontation, officials said.
The officer used his stun gun to subdue Reyes, but he pulled the metal probes it fired out of his body and fought the officer. The second officer arrived and tried to help restrain Reyes. Shots then erupted in the apartment, hitting both officers and the suspect, police said.
"I've been hit... I'm bleeding," one officer shouted into his radio, calling for more help, according to KMPH-TV in Fresno (http://bit.ly/2vfGfw6 ).
It's unclear at what moment the second officer arrived.
All were airlifted to Modesto-area hospitals, where Reyes died.
One of the injured officers, a six-year veteran, was shot in the head, torso and lower leg Monday, Los Banos Police Chief Gary Brizzee said. The other officer, who joined the force a year ago, was shot in the torso.
Police described their conditions as good and fair. Both are expected to survive. Their names were not released.
Reyna would not say if the suspect fired his own gun or managed to wrest away one of the officers' weapons.
Neighbor Esmeralda Cervantes said she heard the yelling and gunfire and hid in a closet with her children.
A bullet entered her apartment and ricocheted off a wall, landing on the kitchen table, Cervantes said. She comforted Reyes' family in her apartment all day as crime scene investigators worked outside, Cervantes said.
"They got the news that their dad just passed away and they're not taking it so easy," she told the Merced Sun-Star (http://bit.ly/2uRxbwq ).
Court documents showed that Reyes had a history of alleged drug use and violence, the newspaper reported.
One of the deputies in the earlier encounter, Sgt. Mark Taylor of the Merced County Sheriff's Office, said Reyes "did not want to do what he was told. He would talk to us. Sometimes he wouldn't make sense."
"He was obviously troubled," Taylor said.
Biden to continue push for voting rights bill as he honors King's legacy
US National Parks to waive entrance fees for MLK Day