text:
from flask import request, url_for
from funcy import project, partial

from flask_restful import abort
from redash import models
from redash.handlers.base import (
    BaseResource,
    get_object_or_404,
    paginate,
    filter_by_tags,
    order_results as _order_results,
)
from redash.permissions import (
    can_modify,
    require_admin_or_owner,
    require_object_modify_permission,
    require_permission,
)
from redash.security import csp_allows_embeding
from redash.serializers import (
    DashboardSerializer,
    public_dashboard,
)
from sqlalchemy.orm.exc import StaleDataError

# Ordering map for relationships
order_map = {
    "name": "lowercase_name",
    "-name": "-lowercase_name",
    "created_at": "created_at",
    "-created_at": "-created_at",
}

order_results = partial(
    _order_results, default_order="-created_at", allowed_orders=order_map
)

class DashboardListResource(BaseResource):
    @require_permission("list_dashboards")
    def get(self):
        """
        Lists all accessible dashboards.

        :qparam number page_size: Number of queries to return per page
        :qparam number page: Page number to retrieve
        :qparam number order: Name of column to order by
        :qparam number q: Full text search term

        Responds with an array of :ref:`dashboard <dashboard-response-label>`
        objects.
        """
        search_term = request.args.get("q")

        if search_term:
            results = models.Dashboard.search(
                self.current_org,
                self.current_user.group_ids,
                self.current_user.id,
                search_term,
            )
        else:
            results = models.Dashboard.all(
                self.current_org, self.current_user.group_ids, self.current_user.id
            )

        results = filter_by_tags(results, models.Dashboard.tags)

        # order results according to passed order parameter,
        # special-casing search queries where the database
        # provides an order by search rank
        ordered_results = order_results(results, fallback=not bool(search_term))

        page = request.args.get("page", 1, type=int)
        page_size = request.args.get("page_size", 25, type=int)

        response = paginate(
            ordered_results,
            page=page,
            page_size=page_size,
            serializer=DashboardSerializer,
        )

        if search_term:
            self.record_event(
                {"action": "search", "object_type": "dashboard", "term": search_term}
            )
        else:
            self.record_event({"action": "list", "object_type": "dashboard"})

        return response

    @require_permission("create_dashboard")
    def post(self):
        """
        Creates a new dashboard.

        :<json string name: Dashboard name

        Responds with a :ref:`dashboard <dashboard-response-label>`.
        """
        dashboard_properties = request.get_json(force=True)
        dashboard = models.Dashboard(
            name=dashboard_properties["name"],
            org=self.current_org,
            user=self.current_user,
            is_draft=True,
            layout="[]",
        )
        models.db.session.add(dashboard)
        models.db.session.commit()
        return DashboardSerializer(dashboard).serialize()

class MyDashboardsResource(BaseResource):
    @require_permission("list_dashboards")
    def get(self):
        """
        Retrieve a list of dashboards created by the current user.

        :qparam number page_size: Number of dashboards to return per page
        :qparam number page: Page number to retrieve
        :qparam number order: Name of column to order by
        :qparam number search: Full text search term

        Responds with an array of :ref:`dashboard <dashboard-response-label>`
        objects.
        """
        search_term = request.args.get("q", "")
        if search_term:
            results = models.Dashboard.search_by_user(search_term, self.current_user)
        else:
            results = models.Dashboard.by_user(self.current_user)

        results = filter_by_tags(results, models.Dashboard.tags)

        # order results according to passed order parameter,
        # special-casing search queries where the database
        # provides an order by search rank
        ordered_results = order_results(results, fallback=not bool(search_term))

        page = request.args.get("page", 1, type=int)
        page_size = request.args.get("page_size", 25, type=int)
        return paginate(
            ordered_results,
            page,
            page_size,
            DashboardSerializer
        )

class DashboardResource(BaseResource):
    @require_permission("list_dashboards")
    def get(self, dashboard_id=None):
        """
        Retrieves a dashboard.

        :qparam number id: Id of dashboard to retrieve.

        .. _dashboard-response-label:

        :>json number id: Dashboard ID
        :>json string name:
        :>json string slug:
        :>json number user_id: ID of the dashboard creator
        :>json string created_at: ISO format timestamp for dashboard creation
        :>json string updated_at: ISO format timestamp for last dashboard modification
        :>json number version: Revision number of dashboard
        :>json boolean dashboard_filters_enabled: Whether filters are enabled or not
        :>json boolean is_archived: Whether this dashboard has been removed from the index or not
        :>json boolean is_draft: Whether this dashboard is a draft or not.
        :>json array layout: Array of arrays containing widget IDs, corresponding to the rows and columns the widgets are displayed in
        :>json array widgets: Array of arrays containing :ref:`widget <widget-response-label>` data
        :>json object options: Dashboard options

        .. _widget-response-label:

        Widget structure:

        :>json number widget.id: Widget ID
        :>json number widget.width: Widget size
        :>json object widget.options: Widget options
        :>json number widget.dashboard_id: ID of dashboard containing this widget
        :>json string widget.text: Widget contents, if this is a text-box widget
        :>json object widget.visualization: Widget contents, if this is a visualization widget
        :>json string widget.created_at: ISO format timestamp for widget creation
        :>json string widget.updated_at: ISO format timestamp for last widget modification
        """
        if request.args.get("legacy") is not None:
            fn = models.Dashboard.get_by_slug_and_org
        else:
            fn = models.Dashboard.get_by_id_and_org

        dashboard = get_object_or_404(fn, dashboard_id, self.current_org)
        response = DashboardSerializer(
            dashboard, with_widgets=True, user=self.current_user
        ).serialize()

        api_key = models.ApiKey.get_by_object(dashboard)
        if api_key:
            response["public_url"] = url_for(
                "redash.public_dashboard",
                token=api_key.api_key,
                org_slug=self.current_org.slug,
                _external=True,
            )
            response["api_key"] = api_key.api_key

        response["can_edit"] = can_modify(dashboard, self.current_user)

        self.record_event(
            {"action": "view", "object_id": dashboard.id, "object_type": "dashboard"}
        )

        return response

    @require_permission("edit_dashboard")
    def post(self, dashboard_id):
        """
        Modifies a dashboard.

        :qparam number id: Id of dashboard to retrieve.

        Responds with the updated :ref:`dashboard <dashboard-response-label>`.

        :status 200: success
        :status 409: Version conflict -- dashboard modified since last read
        """
        dashboard_properties = request.get_json(force=True)
        # TODO: either convert all requests to use slugs or ids
        dashboard = models.Dashboard.get_by_id_and_org(dashboard_id, self.current_org)

        require_object_modify_permission(dashboard, self.current_user)

        updates = project(
            dashboard_properties,
            (
                "name",
                "layout",
                "version",
                "tags",
                "is_draft",
                "is_archived",
                "dashboard_filters_enabled",
                "options",
            ),
        )

        # SQLAlchemy handles the case where a concurrent transaction beats us
        # to the update. But we still have to make sure that we're not starting
        # out behind.
        if "version" in updates and updates["version"] != dashboard.version:
            abort(409)

        updates["changed_by"] = self.current_user

        self.update_model(dashboard, updates)
        models.db.session.add(dashboard)
        try:
            models.db.session.commit()
        except StaleDataError:
            abort(409)

        result = DashboardSerializer(
            dashboard, with_widgets=True, user=self.current_user
        ).serialize()

        self.record_event(
            {"action": "edit", "object_id": dashboard.id, "object_type": "dashboard"}
        )

        return result

    @require_permission("edit_dashboard")
    def delete(self, dashboard_id):
        """
        Archives a dashboard.

        :qparam number id: Id of dashboard to retrieve.

        Responds with the archived :ref:`dashboard <dashboard-response-label>`.
        """
        dashboard = models.Dashboard.get_by_id_and_org(dashboard_id, self.current_org)
        dashboard.is_archived = True
        dashboard.record_changes(changed_by=self.current_user)
        models.db.session.add(dashboard)
        d = DashboardSerializer(
            dashboard, with_widgets=True, user=self.current_user
        ).serialize()
        models.db.session.commit()

        self.record_event(
            {"action": "archive", "object_id": dashboard.id, "object_type": "dashboard"}
        )

        return d

class PublicDashboardResource(BaseResource):
    decorators = BaseResource.decorators + [csp_allows_embeding]

    def get(self, token):
        """
        Retrieve a public dashboard.

        :param token: An API key for a public dashboard.
        :>json array widgets: An array of arrays of :ref:`public widgets <public-widget-label>`, corresponding to the rows and columns the widgets are displayed in
        """
        if self.current_org.get_setting("disable_public_urls"):
            abort(400, message="Public URLs are disabled.")

        if not isinstance(self.current_user, models.ApiUser):
            api_key = get_object_or_404(models.ApiKey.get_by_api_key, token)
            dashboard = api_key.object
        else:
            dashboard = self.current_user.object

        return public_dashboard(dashboard)

class DashboardShareResource(BaseResource):
    def post(self, dashboard_id):
        """
        Allow anonymous access to a dashboard.

        :param dashboard_id: The numeric ID of the dashboard to share.
        :>json string public_url: The URL for anonymous access to the dashboard.
        :>json api_key: The API key to use when accessing it.
        """
        dashboard = models.Dashboard.get_by_id_and_org(dashboard_id, self.current_org)
        require_admin_or_owner(dashboard.user_id)
        api_key = models.ApiKey.create_for_object(dashboard, self.current_user)
        models.db.session.flush()
        models.db.session.commit()

        public_url = url_for(
            "redash.public_dashboard",
            token=api_key.api_key,
            org_slug=self.current_org.slug,
            _external=True,
        )

        self.record_event(
            {
                "action": "activate_api_key",
                "object_id": dashboard.id,
                "object_type": "dashboard",
            }
        )

        return {"public_url": public_url, "api_key": api_key.api_key}

    def delete(self, dashboard_id):
        """
        Disable anonymous access to a dashboard.

        :param dashboard_id: The numeric ID of the dashboard to unshare.
        """
        dashboard = models.Dashboard.get_by_id_and_org(dashboard_id, self.current_org)
        require_admin_or_owner(dashboard.user_id)
        api_key = models.ApiKey.get_by_object(dashboard)

        if api_key:
            api_key.active = False
            models.db.session.add(api_key)
            models.db.session.commit()

        self.record_event(
            {
                "action": "deactivate_api_key",
                "object_id": dashboard.id,
                "object_type": "dashboard",
            }
        )

class DashboardTagsResource(BaseResource):
    @require_permission("list_dashboards")
    def get(self):
        """
        Lists all accessible dashboards.
        """
        tags = models.Dashboard.all_tags(self.current_org, self.current_user)
        return {"tags": [{"name": name, "count": count} for name, count in tags]}

class DashboardFavoriteListResource(BaseResource):
    def get(self):
        search_term = request.args.get("q")

        if search_term:
            base_query = models.Dashboard.search(
                self.current_org,
                self.current_user.group_ids,
                self.current_user.id,
                search_term,
            )
            favorites = models.Dashboard.favorites(
                self.current_user, base_query=base_query
            )
        else:
            favorites = models.Dashboard.favorites(self.current_user)

        favorites = filter_by_tags(favorites, models.Dashboard.tags)

        # order results according to passed order parameter,
        # special-casing search queries where the database
        # provides an order by search rank
        favorites = order_results(favorites, fallback=not bool(search_term))

        page = request.args.get("page", 1, type=int)
        page_size = request.args.get("page_size", 25, type=int)
        # TODO: we don't need to check for favorite status here
        response = paginate(favorites, page, page_size, DashboardSerializer)

        self.record_event(
            {
                "action": "load_favorites",
                "object_type": "dashboard",
                "params": {
                    "q": search_term,
                    "tags": request.args.getlist("tags"),
                    "page": page,
                },
            }
        )

        return response


text:
Skilled foreign workers in a range of occupations are needed in various Canadian provinces and territories and so the Provincial Nominees Program (PNP) was established to expedite their immigration to Canada. The Canadian government has authorized most of its provinces and territories to develop their own Provincial Nominees Program (PNP), based upon their particular local needs. There are 10 provinces and three territories in Canada and the majority of them participate in the PNP Canadian immigration program. Canada's predominantly French-speaking province of Quebec, however, has its own special program for skilled foreign workers who want to immigrate to Canada and move to Quebec.
The Canadian provinces and territories that participate in the Provincial Nominees Program (PNP) have created their own unique eligibility requirements which skilled foreign workers must first meet before they can apply to Canada's national government for permanent residency. In general, these eligibility requirements often include having:
a genuine commitment to live and work in the Canadian province/territory that nominates them for a Permanent Resident Visa to Canada;
a certain amount of work experience in an occupation that is in high-demand in the province/territory;
the education or other training necessary for the high-demand occupation; and
English or French language abilities that are at a minimum level or higher, as measured by an authorized language exam (such as the IELTS or TEF).
In some provinces (such as Manitoba), there is a points system in which points are given for various eligibility factors and a minimum number of points are required to qualify for their PNP.
There may also be an age limit in which applicants for a particular PNP must be between a certain age range.
An in-person interview between the skilled foreign worker and provincial/territorial officials may also be requested in some cases.
Applying for the Provincial Nominees Program (PNP) is basically a two-step procedure. First, a skilled foreign worker applies to the PNP of a particular Canadian province or territory. If the provincial or territorial officials review the skilled foreign worker's PNP application and believe that he or she meets the eligibility requirements for their program, they may then issue the skilled foreign worker a Provincial Nomination Certificate. The Provincial Nomination Certificate allows the skilled foreign worker to move on to the second step of the PNP procedure, which is to apply to the Canadian national government for the Permanent Resident Visa to Canada.
Since January 1, 2015, skilled foreign workers who are nominated under the Provincial Nominees Program (PNP) may apply for a Permanent Resident Visa to Canada through the PNP or through the new Express Entry system. It should be noted, however, that being selected for the PNP by a province or territory in Canada does not guarantee that a skilled foreign worker will be approved for Canadian immigration, since only Canada's national government can issue a permanent resident visa. As with all Canadian immigration programs, the skilled foreign worker and any accompanying family members (if applicable) will also need to meet health and character standards plus any other criteria required by Canada's national government, as well as pay the necessary fees.
If the Canadian national government issues the skilled foreign worker and any accompanying family members (if applicable) a Permanent Resident Visa to Canada, they will be allowed to live and work in the province or territory that nominated them, receive free basic health care (after a brief waiting period) and other benefits. After living in Canada as a permanent resident for at least four years during a six year period, and meeting other criteria, there is also an option to apply for Canadian citizenship.

redpajama_set_name: RedPajamaCommonCrawl


Classes are canceled at Pepperdine University's Encino campus for the remainder of the day and evening, Tuesday, March 3, 2015, due to a investigation of a suspicious package in the parking structure. LAPD and other appropriate resources are on scene and investigating at this time. For questions related to this information please contact the GSBM or GSEP program offices.
This entry was posted in Encino.


Rockhill Orthopaedic Specialists provides comprehensive evaluations and treatment plans for patients with permanent and progressive damage to knees, hips, or shoulders as a result of osteoarthritis, rheumatoid arthritis, trauma, or other joint disorders.
Osteoarthritis is the most common progressive joint disease that leads to pain, stiffness, and loss of mobility. Our physicians begin with an initial assessment, which involves a review of medical records and history, complete musculoskeletal physical exam and acquisition and review of appropriate radiological studies (X-rays, CT scans, and MRIs). Patient-tailored treatment recommendations are based on findings and diagnosis in conjunction with age, activity level, and medical history.
Treatment recommendations vary from conservative non-surgical measures to surgical intervention. Options are discussed with the patient as part of education and counseling. Non-surgical treatment includes anti-inflammatory medications, joint injections, physical therapy, and/or an individually designed home exercise program.


Wayne State University School of Medicine will provide the best scientific research exposure and experiences in the basic and clinical sciences for producing competent and caring physicians.
The faculty – through a variety of instructional strategies and methods – will create a climate where learning can occur, and where inquiring minds can be actively involved in the learning process.
Students will exhibit concern and awareness for the biological/scientific, social/cultural, and psychological/emotional aspects of health problems.
Students will appreciate the diverse cultures and the mixed threads that shape and influence their attitudes toward the people they treat.
Through both curricular and non‐curricular activities, students will exhibit a readiness to assess, identify, and implement the health care needs of their local community.
Student representatives will make their needs and concerns known as they assume their role on the Curriculum Committee. Students will actively participate in their own learning assuming responsibility for their continued learning and professional renewal.
All aspects of the curriculum will be reinforced by a student evaluation process which is consistent with both the goals of the School of Medicine and the goals of the broader university community with its distinct urban mission.


At Toyota West, we know that drivers in Columbus, Dublin OH, Hilliard, Galloway and Grove City have plenty of options when it comes to their automotive needs. That's why we make your satisfaction our absolute top priority; our goal is to outperform your expectations every time you visit, no matter whether you're looking to purchase a new car or bringing your current vehicle in for a scheduled service appointment.
If you're a current Toyota West customer, we want to thank you for being a valued patron. Please review us on one of the sites below so that prospective customers can read about your experiences with our dealership. If you'd prefer to provide your feedback directly to someone at our dealership, please call (855) 543-7264. Because we're always striving to improve our customer service, we appreciate your open and honest comments.
We feature a comprehensive inventory of new Toyota cars, SUVs and trucks, including the always-popular Prius, Corolla, Camry, RAV4 and Tundra models. We also offer an extensive assortment of high-quality, used Toyota vehicles and others from top automotive manufacturers, both foreign and domestic. The vehicles in our Certified Pre-Owned collection have been put through a rigorous 160-point inspection and include a 12-month/12,000-mile limited comprehensive warranty (whichever comes first).
When you're looking to purchase or lease your new-to-you Toyota, our finance experts will use their skills and connections with local financial institutions to create an auto loan or lease that suits your desires -- whether you prefer short-term payments or the most competitive interest rate.
Rely on the highly-trained, experienced technicians in our service center with your vehicle, from routine oil changes to more significant repairs; they'll only use genuine Toyota auto parts on your vehicle, so you can trust that each part fits as originally designed.
Are you ready to discover the Toyota West difference? Contact Toyota West to schedule your appointment, or visit our new Toyota showroom at 500 Auto Mall Drive in Columbus.


My answer isn't what you might expect. Some people may chose X-ray vision or great strength. But my answer is nothing like that, in fact it isn't a super power, it is much simpler – IT'S FRIENDSHIP! Friendship is like a magical switch that turns on when your friends are in danger. It makes you feel special and bubbly. If one of your friends gets hurt, the others stand up and protect, this is a friend's natural instinct. Our switch comes on and it makes our blood boil when our friends are hurt and you know who is responsible. We just want to help and protect each other.
Our friends are like our family, as they are always with us. We may argue but real friends always become friends again. They know what makes our hearts break into millions of pieces and that makes us feel that no one can be trusted. They also know what makes us happy. They make us stronger and that's what makes us who we are.
Well that's just in my experience. So that is my simple super magic power.


text:
Special Collections and University Archives : University Libraries Email an archivist
Find collections
About SCUA
Support SCUA
What is UMarmot?
What we want? What do we keep?
Digital (Credo)
Highway indexes (Hampshire Council of Governments)
Negatives index
Concordance to the Archives
Transfers to the archives
YouMass wiki
Social Change Colloquium
W.E.B. Du Bois Lecture
Visit SCUA
Ask SCUA's archivists
Accessibility in SCUA
Copies & fees
Fellowships & prizes
Permission to Publish
Japanology
Labor, work, and industry
New England history
Protistology
NEA Library
What do we want? What do we keep?
Fellowship application (2020)
Geishas, from Benjamin Smith Lyman Papers
The Department of Special Collections and University Archives collects and preserves textual, visual, and auditory materials of enduring historical value and makes them available to researchers at no charge.
The collections held by SCUA are rich and deeply interrelated, documenting four areas of historic and cultural interest: social change, New England, the University of Massachusetts, and innovation and entrepreneurship.
SCUA's distinguished collections range from the papers of civil rights pioneer W.E.B. Du Bois to three and a half centuries of records of the New England Yearly Meeting for Friends and the Hampshire Council of Governments, plus hundreds of collections documenting the lives and work of actvists, reformers, and revolutionaries; innovators; political figures; spiritual leaders; and writers, poets, and photographers.
Information about all of our manuscript and photographic collections is included in UMarmot. Use the search box and menus to the right to navigate our collections and to locate collections of interest.
Photographs and visual materials
Search in Credo
Keywords AnywhereTitle begins withAuthor (last name first)Subject begins withCall Number begins with
A B C D E F G H I J K L M N O P Q R S T U V W Y Z UMass
Collecting areas Select Category Africa (16) African American (70) Aging (7) Agricultural education (27) Agriculture (37) Alternative energy (20) Alternative medicine (1) Animal rights (2) Antifluoridation (27) Antinuclear (44) Antiracism (51) Antislavery (19) Arts & literature (46) Arts management (11) Asia (20) Balkans (5) Books and book history (18) Botany & horticulture (29) Business & industry (54) Central & South America (27) China (22) Civic organizations (31) Civil rights (70) Civil War (20) Cognitive science (2) Cold War culture (25) Communism & Socialism (56) Computer science (1) Connecticut (40) Conservationism (11) Cookery (8) Counterculture (27) Digital (23) Disability (27) Drug policy (10) Du Bois, W.E.B. (12) East & Central Europe (16) Education (70) Environment (58) Esperanto (3) Europe (10) Family (47) Famous Long Ago (20) Farming & rural life (59) Film & video (15) Folk music (12) Germany (18) Gravestones (57) Immigration & ethnicity (28) Innovation & entrepreneurship (11) Intentional communities (26) Japan (24) Jazz (11) Journalism (17) Judaica (20) Labor (79) Landscape & gardening (12) LGBTQ (30) Libraries (12) Literature & language (43) Maine (29) Manufacturing (36) Maritime (11) Mass Agricultural College (1863-1931) (82) Mass State College (1931-1947) (58) Massachusetts (74) Massachusetts (Central) (29) Massachusetts (East) (153) Massachusetts (West) (369) Media (20) Medical (28) Mercantile (55) Military (14) Music (15) Natural sciences (4) New England (54) New Hampshire (26) Oral history (35) Organic farming (9) Ornithology (5) Other (1) Peace (90) Performing arts (58) Personal finance (5) Photographs (183) Photojournalism (17) Poetry (42) Poland & Polish Americans (30) Political activism (71) Political radicalism (37) Politics & governance (65) Printed materials (58) Prison issues (28) Prose writing (29) Protistology (25) Quabbin (31) Quakers (83) Reform (24) Religion (51) Rhode Island (23) Rock music (5) Science & technology (59) Social change (89) Social justice (112) Southeast Asians (8) Spiritual change (30) Sport (12) Trades (12) Transport (13) Travel (17) UMass (1947- ) (230) UMass academics (22) UMass administration (44) UMass alumni (53) UMass faculty (171) UMass history (10) UMass staff (16) UMass students (43) Vermont (33) Vietnam War (64) Visual culture (12) Women (97) Women & feminism (57) World War I (22) World War II (67)
UMass Archives
Choose an area Academic Affairs (1) Administrative Services (1) Afro-American (6) Agricultural Economics (5) Agriculture (6) Alumni (23) Anthropology (7) Art (2) Arts and Sciences (1) Arts Extension Service (1) Asian-Languages (2) Astronomy (1) Athletics (2) Bacteriology and Physiology (1) Biology (4) Botany (9) Campus Center (1) Chancellors (2) Chemistry (4) Civil Engineering (4) Classics (2) Comparative Literature (1) Computer Center (1) Continuing Education (1) Cranberry Station (2) Dairy Science (1) Deans (3) Economics (2) Education (8) Engineering (1) English (23) Entomology (4) Extension Service (3) Food Science (3) Geosciences (1) German (3) Glee Club (1) Graduate School (3) Graduate Studies (1) Health Science (1) History (10) Horticulture (5) International Programs (1) Isenberg School (1) Journalism (1) Judaic (1) Labor Relations (3) Landscape Architecture (6) Languages (1) Legal Studies (2) Library (3) Mathematics (1) Mechanical Engineering (2) MFA (1) Microbiology (2) Music (8) Natural History (1) Natural Resources (1) Nature Recreation (1) Nursing (2) Philosophy (1) Physical Education (5) Physical Plant (1) Physics (6) Plant Pathology (2) Political Science (5) Polymer Science (1) Pomology (2) Presidents (16) Provosts (1) Public Affairs (1) Registrar (1) Shade Tree Lab (2) Sociology (3) Speech (3) staff (1) Stockbridge School (3) Stonewall Center (1) Student Affairs (1) Students (22) Theater (4) Trustees (4) umass (2) UMass Archives (45) UMass faculty (14) University Outreach (1) University Relations (1) Water Resources (1) Women (14) Womens Studies (5) Zoology (3)
M-F, 9.30-5pm (10-4 summer and holidays)
25th floor, W.E.B. Du Bois Library
University Libraries | UMass Amherst
154 Hicks Way | Amherst, MA 01003 | V. 413.545.SCUA (413-545-7282) Email an archivist
Find digital collections in Credo
© 2020. UMass Amherst | Site policies | Site contact


text:
Q: Information extraction with Python using huge list of entity names I have a large collection of multilingual html files from which I'd like to extract structured data. I also have huge list (+5M) of entity names occurring in the corpus (multi-word: persons & organisation names, places,...) that can be of help.
I'm looking for a Python library that can do fast tagging of text with entity names (and perhaps but not necessary do other task like POS tagging and elementary NER). The result should be searchable with simple REGEXP like expression augmented with tags. For example: ".+? [last_name] (is|was)( best)? CEO of [organisation_name]".
I've tried to find this functionality in NLTK and CLIPS pattern (pattern.search is similar) but failed. The closest open source library with such functionality is GATE but it is in Java and seems like overkill for this task.
Thanks,
Davor

A: You can try htql.RegEx from http://htql.net.  Here is the example from the website:
import htql;
address = '88-21 64th st , Rego Park , New York 11374'
states=['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut',
    'Delaware', 'District Of Columbia', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana',
    'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan',
    'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire',
    'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma',
    'Oregon', 'PALAU', 'Pennsylvania', 'PUERTO RICO', 'Rhode Island', 'South Carolina', 'South Dakota',
    'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin',
    'Wyoming'];

a=htql.RegEx();
a.setNameSet('states', states);

state_zip1=a.reSearchStr(address, "&[s:states][,\s]+\d{5}", case=False)[0];
# state_zip1 = 'New York 11374'

state_zip2=a.reSearchList(address.split(), r"&[ws:states]<,>?<\d{5}>", case=False)[0];
# state_zip2 = ['New', 'York', '11374']

redpajama_set_name: RedPajamaStackExchange


Raveon's RV-M7 UHF data radio modems are industrial-grade, high-speed, FCC certified data radios designed for telemetry, SCADA, AVL, wireless data, mobile-data and remote control applications. Designed by Raveon for long-range reliable communication using high-performance RF circuitry and filters, it is also feature-rich.
With fast over-the-air data rates and fast transmit-to-receive switching, Raveon's M7 UHF data radio transceiver increases data throughput in narrow-band wireless systems. Included in each unit, are advanced networking, error correction, and diagnostics. It may be ordered with an IP65 weatherproof enclosure or a ruggedized enclosure to withstand extreme environments (see datasheet for our ruggedized UHF radio). And because it is built using rugged "single-board" construction, it is extremely rugged – and cost effective. With prices for radio transceivers starting below $400 the M7 is the most powerful, most economical data radio available.
The Optional internal GPS ( GX option) enables the M7 to transmit its position, data, and status (voltage, speed, heading, temperature, I/O bits.) a pre-set intervals using either conventional carrier-sense methods or with efficient TDMA channel access. A GPS tracking system built with M7 transceivers, can track up to 20 radios with one-second updates or 200 with 10-seocond updated. The M7 is the fastest most efficient UHF AVL radio available. See details on its GPS tracking and TDMA abilities.
The M7 leads the industry in many areas including technology, features, and price. It has some of the fastest over-the-air data rates, TX-RX switching times, and power-on times. It is one of the smallest data radios in its class. It is one of the most rugged data radios made. It is one of the lowest power-consumption radios available. And its price will pleasantly suprise you.
Programmable 1/2 to 5 watts RF output.
High throughput. 19200 bps in a 25kHz channel, 9600 bps in a 12.5kHz channel.
RV-M7-U Tech Manual (Technical Manual) The Technical Manual for configuring and installing the RV-M7 wireless modem.
RV-M7-U GX Quick Start (M7 GX Quick-Start Guide) read this to quickly setup your M7 GX GPS transponder and configure it for use in most common applications.
Remote Management (pdf) Built into all FireLine and M7 modems, is a set of unique remote management and diagnostic capabilities. Users are able to remotely read network statistics, configuration, and operating conditions of any FireLine or Raveon modem in the system.
Competitive Features(pdf) Document AN131 describes the unique features of the M7wireless modem. Some of the M7's features are available in other company's products, but no other wireless modem on the market has as rich and complete set of a feature as Raveon's FireLine.
Firmware Revision Log (pdf) A list of the firmware revisions made to the RV-M7's processor.
RV-M7 3D Model (.easm) 3D model of the RV-M7.
Heatsink Option for M7 series of data radios. With this option, the M7 will operate at up to 100% duty cycle with an ambient temperature of 45C. With air circulating on the heatsink fins, the M7 may be operated at 100% duty cycle up to 50C.
DC power cable for M7 sereis radios with automotive lighter adaptor on one end. 3 amps maximum current capability. 6' long.
In-Line DC Surge Protector. The RV-SP-1 is designed to be plugged in-line with the DC input to electrical devices that may be subject to over-voltage (> 16V) events, large transient voltage spikes, electrical noise, or RF noise. It filters the DC and protects the connected device from over-voltage and transient events.
USB option replaces the standard DB9 RS232 serial connector with a USB 2.0 MINI-B connector and internal a USB-Serial bridge. All features and functions of the M7 remain available via the USB connection.
<click here> for a picture of the M7 with the RT-C9-USB option installed.


text:
UQ launches new postgraduate program for the resources industry
To help meet the changing professional training and development needs of the extractive resources sector, The University of Queensland has launched a new postgraduate coursework program for 2015.
UQ hosts leading Congolese environmental researcher
A leading environmental researcher from the Democratic Republic of the Congo (DRC) will offer an insight into mineral wealth in Congo during a visit to The University of Queensland next week.
$3.25 million to further coal seam gas research
The University of Queensland's Centre for Coal Seam Gas (CCSG) has attracted $3.25 million in funding to further its research capabilities.
UQ to help Colombian mining industry focus on social inclusion
University of Queensland researchers are working with Colombian ethnic groups to help them influence government policy-making for the mining sector.
Professor promotes sustainable mining over 40-year career
A lifelong commitment to sustainable mining has brought recognition for a highly accomplished and long-serving University of Queensland academic, Emeritus Professor Clive L. Bell.
Conflict with communities a big cost to business
Researchers at The University of Queensland (UQ), the Harvard Kennedy School, and Clark University have uncovered that conflict with communities is costing mining companies billions of dollars.
UQ looks into recycling waste for wealth
Researchers from The University of Queensland are looking at an untapped vein of metals, potentially worth $2 billion a year, but it won't be found in a mine.
Home › Sustainable Minerals Institute › 2014 › Search UQ News


Hola! Me llamo Maddy, y voy a Espana!
Hello, My name is Maddy Wolpow-Gindi, and I am going to Spain! I am currently 16 and attend Lyman High School in Longwood, Florida. Ten miles north of Orlando, Longwood is a suburban town in which I've lived my entire life. As much as I love my family and friends, my heart isn't in Florida and I've always known I belong somewhere else. For this, I truly believe I am meant to be in Spain next year.
I love nature and all of the four seasons. The only problem is that living in Florida, I only get to experience two seasons: hot and hotter. I am really looking forward to watching the leaves change in autumn, the snow fall in winter, the flowers bloom in spring, and the sun shine in summer.
As for school, I enjoy the intellectual aspect, however, I want to be culturally stimulated as well. I am in my third year of studying Spanish at my school, and I love the language. I've always dreamed of being multilingual and this is where it starts.
I like to think that I have four families: the ones who share my DNA and crazy last names, the goofy girls that make up my volleyball team, the best friends who know me throughout, and the fellow members of my BBYO chapter. More specifically, my immediate family consists of two households (my parents are divorced). My father Jeff, his wife Allison, and her son Dylan make up one half. My mom Tina, and big sister Alex, make up the other. I love all of my families, and especially want this one to know how much I love and appreciate them, for I wouldn't be writing this biography if not for them.
Ever since volleyball tryouts in the sixth grade, I have had a passion for playing. Whether it's with my school, or my club, volleyball season is my absolute favorite part of the year. There's just something about being on a team (or family) that makes me happy. I like being a part of something bigger than me, and working in conjunction with my best friends to reach success. I hope that my future high school will have a volleyball team and that I play on it. Honestly, playing volleyball in Spain might be one of the things I'm looking forward to the most.
I'm very involved in clubs at my school. I'm in Spanish club (and love it!), yearbook, Mu Alpha Theta (aka mathletes), Best Buddies, and the English Honor Society. My favorite club, or class really, is yearbook. It mixes the perfect amount of creativity, writing, and independence for my liking. Once again, being in yearbook is like being in a family, and working with them to reach a goal.
Now to explain my personality: Frankly, I'm a nerd. School is always my top priority, and sometimes I let it stress me out too much. My mom always likes to point out how much I persevere, even when I find it embarrassing. On a lighter note, I love playing and watching sports, I'm going to miss watching football on Sunday nights with my dad. I also really enjoy jokes, no matter how dumb, and making puns, no matter how silly. I love talking to my friends for hours, having picnics, stargazing, watching movies, seeing plays, days with low humidity, painting my nails, and eating frozen yogurt. Back to being a nerd, my favorite thing is probably learning new skills. I can sail, scuba dive, drive a manual car, change a flat tire, and I want to learn more. That includes: how to use a sewing machine, using Adobe photoshop, speaking Spanish fluently, and so many other things.
About my upcoming journey: I know it's a cliché, but words can't describe how excited I am to embark on this new chapter in my life. Sometimes I'll close my eyes while I'm in class, and think about how this time next year, I'll be in Spain, and butterflies fill my stomach as I start to smile. It still amazes me that this is happening; I hope by my first blog that it will have become real.
To my family and friends: I love you and will miss you dearly. To Liz Gatti, my guidance counselor: Thank you so much for introducing me to Rotary Youth Exchange, you are so wonderful. To the hard workers at RYE Florida: Thank you for providing me with this amazing opportunity, you are all so great, and I'm excited to share this with you.
So right now I´m writing this journal in my town´s library because I foolishly forgot to bring an outlet converter to use with my laptop. I´ve been in Spain now for four days and thankfully, this is the most of my troubles. I arrived safely in Barcelona, Spain after a nerveracking plane ride. I couldn´t really figure out what about it made me nervous (besides the fact that I was realizing what exactly I was about to do), but for the whole time leading up to my landing in Barcelona, I just didn´t feel myself. As my Outbound Student Handbook will tell me, this was my first incline on the roller coaster that is the emotions of an exchange student. Fortunately, my coaster began to decline as soon as my plane prepared to land in Barcelona and I looked out my window to see the thriving city stuck in between the Mediterranean Sea and the Pyrenees Mountains. The sight of the two extremes are so contrasting that it was astonishing. I was utterly convinced that this was the most beautiful place I had ever seen.
After thankfully retrieving my bags from baggage claim without a problem, I was met by a smiling host mom, dad, and little brother. We then drove about twenty-five minutes to our secluded town-and my new home--Sant Feliu de Codines. This town is like nothing I´ve ever seen. It literally sits on the side of a mountain and not a single road is horizontal, everything is at an incline. Something quite opposite from the flatness of central Florida, where there is maybe...I don´t know, one hill? My favorite part is that when you go to the edge of the town (or drive anywhere, for that matter) you can see all the mountains surrounding you, and the valleys in between. One thing in particular I noticed about my town is that they sure know how to save space. The roads are barely wide enough for a single car, not that that stops people from driving recklessly, and the sidewalks shouldn't even be called sidewalks, because you can´t walk on them comfortably. Most are about 10 inches wide and you constantly have to look around to make sure you don´t get hit by one of those reckless drivers coming around the ever winding roads. And on occasion when the sidewalks are wider, you still have no room to walk because cars are parked all along it. Sant Feliu can only perfectly be described as quaint. Every road leads to home. If it doesn´t, you´ll know it because there´s only empty land outside of the city (and your ears will start to pop because of the altitude). It almost looks like a diagram from my Spanish textbook during the chapter on people and places. There´s a plaza in the center of the town, and around it are several shops, each with its own specialty. La farmacia, la biblioteca, el carnisseria, etc etc. The only thing that I don´t like about Sant Feliu is that every now and then, a large truck carrying about 30-40 dirty, smelly, pigs will drive by and leave you traumatized not only by the helpless oinks you hear, but by the horrid stench which lingers in the air for about five dreadful minutes. This is especially nice during mealtimes.
My house isn´t much smaller than my home in Florida. However, there is only one full bathroom that everyone shares. This is quite different than what I´m used to, and another one of those ¨conserve space and energy¨ things that this place is so fond of. On the contrary, I am very proud of myself for cutting my twenty minute showers that my parents love so much down to about five. Being a girl, this was very difficult. My room also never looks like a tornado came through it (as my parents like to describe my room in Florida) I keep it nice and neat, make my bed every morning, and put my clothes back where they belong. My parents are probably dying of shock right now.
As for my family, they are really sweet people and have welcomed me with open arms. I mostly just hang out with my little host brother, Nestor. I´ve come to the conclusion that little boys are the same everywhere. We play video games, watch dubbed over Spongebob, and play fuzbol (or futbolinn). I even showed him some of the best games from my childhood that he´s now hooked on. I also taught him how to play Ninja and Bubble Trouble haha(or should I say ¨jaja¨). He always makes me laugh, whether its from a meow, or a random noise, or showing me his gross scratch n´ sniff trading cards...this is how I know we are going to be great friends.
In my six days in Spain, I have noticed many small, yet distinct differences. For instance, the bathroom has become a very confusing place for me. The toilets have TWO flush buttons. This was an interesting and scary experience the first time around. I still haven´t really figured out when I´m supposed to use one and when I´m supposed to use the other, so I just stick with one out of fear. Also, I don´t think Spain got the memo that MC Hammer pants are no longer fashionable. Although, I will admit that I´ve seen many people make them work. Table manners were also an interesting learning experience. Apparently it´s in bad manners to keep one hand in your lap while eating. My host dad always has to say to me ¨las manos!¨ so I remember to barbarically keep my hands on the table, hovering over my food. I certainly don´t want to be rude though and will make this a habit. Mealtimes are very important around here; in fact, I´ve come to realize that when the entire city closes down for the siesta, it´s not necessarily to sleep like I thought, but so that they can give their undivided attention to lunch, figures.
Today the other Rotary exchange student in my town and I went to our school to speak with a guidance counselor. Turns out that she is making us both specialized schedules to make our time here easy and enjoyable. You see, usually students have to choose between a math and science schedule, a history and literature schedule, or a mix of both, with few choices or electives. But for us, we hand picked the classes we wanted to take and we even have a special class with just the two of us and a Spanish tutor. This, I am most excited about. For a while there, I was afraid that since my entire peer group and school spoke Catalan, that I wouldn´t be able to become fluent in Spanish. Fortunately, this won´t be the case.
It was brought to my attention today that I have been in Spain for just over 90 days, a figure that I can't even comprehend. It seems like so many, ninety; yet feels like so few. I can't believe that it has already been a year since I attended my first Rotary Youth Exchange meeting. I sat there, soaking in all the unfathomable opportunity and adventure the Rotarians promised and that the inbounds vouched. When I think back to how I got here, I still don't really believe it; all those steps I took to prepare and now I'm actually living my exchange. I'm ninety days through. Ninety days filled with learning, wonder, confusion, excitement, loneliness, apprehension, adjustment, awkwardness, and sublimity; ninety days that I never want to forget and ninety days that I will never get back.
Like too many other journals I've read before, I want to apologize for the two month gap in between entries. I never understood all last year why the outbounds didn't seem incredibly anxious to tell the world of their experiences and reflections—I know I was, and I hadn't even been accepted yet. Now I understand. I don't know where my time went or what I have been doing, but writing this journal has been a challenge for me. Words typically come very naturally to me, but right now, I'm almost at a loss. As I type, I feel like I don't sound like myself. I'm not sure if it's my English I'm having to pry out of the dusty nooks of my brain, or just the mere fact that I'm changing. Youth exchange does something to you, something you can't explain. You wake up some days and see yourself, the world, in a different way. You find yourself reflecting and thinking, and keeping your eyes wide so as to not miss a beat. My time here so far hasn't necessarily been busy, or extremely exciting, it's just been life. But even as I say that I have to remind myself that this isn't your typical every day. I'm learning, growing, feeling things I can't explain. I repeat how difficult I'm finding it right now to write, because a lack of words is such a foreign feeling to me.
Anyway, I know this journal is well past due, but in all honesty, for the past month I couldn't write a single word without going off on tangents or just sounding morose. My emotions have been so erratic that one day I'm happy, feeling completely at home and normal, but then the next I spend all day in my head, thinking of home and how I still don't understand when someone asks me a simple question. There have been plenty of times where all I wanted was to just be able to go to sleep in my own bed and go back to a home that I know and feel loved. But that's the trick about being an exchange student; it messes with your head. Yet you have to get over those hurdles and jump through those flaming hoops, and trust me, it's a challenge. You're put to the test every day, whether its restraining yourself from going on Facebook, or not letting the small stuff get to you, or just plain old living in a different culture with a different language. This "three month homesick period", as the Rotarians call it, has a completely appropriate reputation. I am SO happy to be practically over with it.
One step at a time, little by little, poco a poco, everything comes together. I think this week has been the first time that I've felt like a normal person and not 'the exchange student'. I'm more comfortable with people at school, I actually have a few friends lol, and I even joined the soccer team. Oh, that was very interesting. One day (it was one of those bad days), I decided I was sick of not having much to do and that I had too much time to think to myself, so I joined the soccer team, no big deal, except that soccer is not a sport that I'm accustomed to. I'm a volleyball player, my running and foot-eye coordination skills are very low. Nevertheless, it's definitely made me happier; I have things to do and something to work at, not to mention more friends, haha.
I learn more about Spain, and especially Catalonia every day; and trust me, there's a difference. I'm happy to say that there have been a lot of information exchanges. People are always so interested in the United States, or "California", as many people call it who don't really realize that there are 49 other states… My teachers at school always make connections to the United States in order to ask me questions. I can't tell if the USA really comes up that much in lectures, or if they do it more because I'm there. Regardless, isn't that why we go on exchange? To learn about the world and to teach and enlighten each other? The other American exchange student and I are currently on a tour of the English classes in my school, giving various presentations. It's always funny to see how the tables turn when we're no longer the ones who don't understand the language, and our peers are dumbfounded that we have a rate of more than twenty words per minute. We also give English lessons around my town. People are very interested in the English language, and everybody wants to learn how to speak. We give a private class on Tuesdays and then on Fridays we go to the town elementary school and give little conversational sessions. This has been something that I really enjoy. So in the course of about two weeks, I went from having way too much time on my hands, to having a full schedule. It's a nice feeling; it feels like home, like routine.
It's pretty much winter here and getting COLD. I don't live that north, but I've lived in Florida my entire life, and this is something very new to me. I think I'm adjusting though, minus a little head cold. But that doesn't keep my host mom from always worrying about me. She's always telling me to put more layers on and that I'm not accustomed to the cold and I'll get sick. Clearly, she's right. I do enjoy the opportunity for buying clothes though, hehe, thanks mom and dad. I am now the proud owner of a pair of boots. That's right, my first pair of winter boots. Everyone in my host family is really nice and treats me like part of the family. I think my little host brother especially likes that he has someone to act as a "big brother" to, since I'm clueless when it comes to a lot of things. He really likes to shoot me lines that clearly came straight from his parents' mouths. He always tries to act like the adult, it's cute. He's fun though. I actually just got a Hanukkah package from my mom that had a menorah, dreidels, and chocolate inside. He's really fond of this whole playing a game that requires no skill to win chocolate thing.
So basically the past ninety days have just been life. Sure there have been many ups and downs, but at the end of the day, you get out of it what you put in. I may dream about going home sometimes and not wanting to "learn and grow" from yet another experience, but I am so happy to be here. I've only just begun, and I'm so excited for the next seven months.
People tell me all the time that they would never be able to do this, to be an exchange student; to be away from their family and friends for practically a year, away from everything they know and opening themselves up to the unknown and to the vulnerable. I never really understood that though. I never heard "youth exchange" and thought about all the reasons why it would be uncomfortable or challenging, I just sort of saw the opportunity and did it. But now that I've been in Spain for close to five months, I have realized why exactly so many people react the way they do to the idea of an exchange. I now feel the hardships they automatically imagined. They say distance makes the heart grow fonder, and I can definitely vouch for that. My life here has become so normal that home is no longer something that is always in my head. So much so that when I do think about home, it almost hurts. It's so hard to completely let go of your life and start a new one. But now that I have, it's even harder to go back and try to imagine your old life, how things were, how things will be. I honestly never thought I would feel this way, but after five months in a foreign country, I'm kind of used to things turning out differently than I imagined.
This past month, I experienced the holidays Spanish style. Here, the Navidad (Spanish for Christmas) is about a month and a half long process filled with various holidays. This begins at the end of November with the day of the Immaculate Conception and continues to Jan 6, where the real fun is: the Three Kings Day. This is basically the same as Christmas day except that the three Kings who witnessed the birth of Jesus are the ones to bring the children their presents. The holiday season, though with a few add-ins, seemed very similar to that of the States'. It was a time filled with family, presents, decorations, and food, lots of food. There was however one extremely distinct Catalonian tradition that I will never forget. In fact, you probably won't even believe it when I tell you. The number one Christmas icon here is the Caganen, which means "pooping boy" in Catalan. The greatest part is that nativity scenes and houses alike are adorned with figures of this Caganen. The story goes that during the birth of Jesus, an on looking pastor really had to go, but he waited until after Jesus was born to go. Apparently it's supposed to demonstrate humility. So right there in the nativity scenes, next to baby Jesus is a little figure of a pastor with his pants down, squatting over a fresh batch of #2. You can imagine my surprise when one day while passing through the center of a mall, where I expected to find a towering Christmas tree, I found in its place a giant man, doing his business. You can even go into any town this time of year and pick up a figurine of your favorite sports star or politician in their little act of Mother Nature.
As time progresses here, things definitely get somewhat easier. It's never really that easy though, I just get more used to life. Language is definitely still a challenge. It's so hard at times to not get frustrated with myself because I'm not further along in fluidity. I have to remember to take into account though that there are two different languages spoken where I live: Spanish and Catalan. And in my house my family only speaks Spanish when they are speaking to me. But while before I thought that that would make it impossible to learn anything, I find now that I can almost understand Catalan as well as Spanish. Four months ago, I thought Catalan was a crazy language and couldn't understand a word. Now, I can make simple sentences! Even still, I never really realize how much I've actually learned until I'm in the middle of a conversation with someone, speaking without translating in my head, and understanding everything they say back to me. That I think is the greatest feeling in the world.
This exchange feels like it's going as fast as a bullet train yet as slow as a slug all at the same time. It makes me so sad to think that I have such little time left, yet sometimes I would love to skip to the time where I can speak with ease and have made close friends. I have so much to look forward to though, and I don't want to miss a thing or take a minute for granted. I love my exchange, all the bad and all the good. Thank you Rotary, thank you friends, and thank you family, I really can't say that enough. Happy new year to all, hasta luego!
I'm so sorry I haven't updated my blog in a while, these last few months have passed by so quickly. I can't believe that I am already in my eighth month abroad and that I only have two and a half months to go. I also want to apologize for the probable lack of eloquence in this blog; it seems as if right now I'm not fluent in any language. That's one of the weird parts about going on exchange, before you realize, you forget how to speak your own language. I'm almost embarrassed now to help my peers in English because nothing that I say seems right anymore. Not to mention that they use British grammar books here, which although you may think would be the same, it's not. Even still, I end up helping everyone in English, but it's because I like to and I want to. It's like we've all come full-circle. Now that I can speak Spanish, I happily give up some of my time to help my friends in English who have helped me this entire year in Spanish, even when that meant giving up speaking their own native language of Catalan. As you take, you must always to remember to give.
About a month and a half ago, I changed houses. Normally, in this area of Spain, the exchange students don't change host families because there just aren't enough. But when I started to have some problems with my original host family, a good friend of mine invited me to come live with her. So here I am, living with my best Spanish friend and loving it. They have taught me so much in such little time and I really feel like a part of the family; like I live with people who love and care about me. I know this will be a lifelong relationship and I am so excited about that.
Although the point of this exchange is primarily to experience another culture and create understanding between countries, a large part you spend learning about yourself. Throughout an entire year in a foreign place, with new people and countless uncomfortable situations, you learn how you cope as an individual, how you resolve problems, and how you grow with every experience. You see the world from a different perspective and begin to let go of the learned customs you've known your whole life. You learn about people, language, and life lessons. You learn about the good, and you learn about the bad. But above all you become a person more in touch with reality, more aware of the happenings around you, and you change; I know I have.
That's all I have for now, but I promise for real this time that I'll write more often. Thank you again to everyone who has made this exchange possible! Rotary district 6980 and John Siegel, my host families, my friends, my family, and my mom and my sister whom I will see this weekend!


text:
Why did we name a street after this guy?
No explanation is given for Joseph Bloore's expression in this photograph dating back to the early 1800s.
Timothy Appleby
Published August 31, 2012 Updated April 30, 2018
Next time you step around a pile of upchuck in front of the Brunswick House, take a moment to let it remind you of how the history of Bloor Street is inextricably linked with the history of beer in the city.
The street's namesake, Joseph Bloor (sometimes spelled "Bloore") was not only an innkeeper who used his savings to buy tracts of what was then suburban land where Yorkville currently stands, he was also a brewmaster whose beer was made and bottled around what is now Sherbourne station. Soon, however, citizens of the city will be able to remember him by something more than that.
Better recognition is on the horizon in the shape of a new home on Bloor Street for a 150-year-old stone tablet that hails "an exemplary and useful Christian," who "calmly fell asleep in Jesus."
Bloor died Aug. 31, 1862, and the heavy, 105-by-30-centimetre commemorative tablet was engraved soon after, then placed in the Bloor Street Methodist Church, across the street from where he lived. Two church amalgamations and a demolition later, the tablet ended up in storage. Heritage Toronto – then the Toronto Historical Board – rescued it in 1993.
Bloor and his family lived on Bloor Street just east of Yonge, where St. Andrew's Church and an adjoining office building stand, and that's where the Bloor tablet will be installed. Earlier efforts failed, reflecting cost and because so many players are involved, but Toronto historian Stephen Otto is optimistic the memorial will be in place by year's end.
"Bloor was… a local worthy citizen and he was recognized for his good deeds," Mr. Otto says. "He did a lot of philanthropic stuff, mostly related to his church, the Yorkville Methodist Wesleyan Church."
As for that mysterious "e," which his family members also display on their gravestones, Mr. Otto offers an explanation.
Bloor without the "e" was the original, correct spelling, he believes, because many times its owner signed his name that way.
"I think it was a kind of affectation," Mr. Otto suggests. "Maybe Bloor was trying to notch up his gentility by putting an 'e' on the end of it."
Haunted Toronto: A paranormal primer
Follow us on Twitter @globetoronto Opens in a new window


Hi all :) Today, we've reached the final serum recipe in our serum segment. We've gone through dry skin, anti aging, brightening, moisturizing and plumping, and a couple more.
So today's serum is for oily, acne prone skin. When you have acne, you want to get to the root cause and eliminate bacteria as well as control oil production. It is very important to not strip away natural moisture in your skin and that is why this serum is amazing for your skin. Our hyaluronic serum helps to maintain and increase moisture in skin without making it oily.
Next we use witch hazel extract which contains tannins that help remove excess oil in skin. Finally, some Basil,Sage and Mint essential oil. This trio helps to stop acne causing bacteria spreading and leading to inflammed skin.
They are anti inflammatory and antibacterial. Basil especially is used to treat acne and perk up dull skin tone. With this serum, trust us that your skin will feel and start looking better in no time.


cast iron sheet cut to size 14 crystal clear cell cast plexiglass sheet cut to size cut to size lead flashing cut to size lead sheet roofing superstore calder lead roofing expansion joint plus cover flashing m x mm.
cast iron sheet cut to size waterjet cutting services impact ireland metals ltd engineering steel stockist stainless steel pipe and fittings division.
cast iron sheet cut to size cast iron and steel used in an engine custom metal fabrication metals online cutsize metals rectangular flat.
cast iron sheet cut to size lodge seasoned cast iron skillet with 2 loop handles 17 inch ergonomic frying pan downspout boots downspout shoes cast iron downspout boots sustainability.
cast iron sheet cut to size custom plastics cut to size polycarbonate acrylic more perforated sheet perforated metals perforated sheet materials.
cast iron sheet cut to size pre polished metals ex stock improved steel sheet cutting aluminum diamond plate industrial metal supply aluminum diamond plate.
cast iron sheet cut to size cut to size cut to size polycarbonate acrylic plastics tap plastics top sellers black led sheet.
cast iron sheet cut to size heat resistant cast iron pot cleaning brush kitchen tools ims.
cast iron sheet cut to size store featured products corrugated sheet what can be used to cut solid cast iron home guides sf gate.
cast iron sheet cut to size a36 steel plate size dremel heavy duty cutoff wheels thick pack dremel dremel heavy duty cutoff wheels quot thick.
cast iron sheet cut to size fiber laser cutting machine cast iron bed bodor cast iron bed 3015 size laser cutting .
cast iron sheet cut to size lodge lfsr3 cast iron fajita set pre seasoned cast iron vs cast steel metal casting blog.
cast iron sheet cut to size polished brass sheet box bar angle t section and more cast acrylic sheet cut to size cash on delivery club factory heatresistant cast iron pot cleaning brush kitchen tools.
cast iron sheet cut to size transparent acrylic sheets 100 recycled most environmentally friendly the difference between ferrous and nonferrous metal metal measuring metal strength part how to measure ductility and hardness.
cast iron sheet cut to size perforated sheet materials cast iron surface plate is gmt metrology gmt cast iron surface plate.
cast iron sheet cut to size cast aluminum tool jig plate atp 5 size .
cast iron sheet cut to size sustainability cut to size lead flashing cut to size lead sheet roofing superstore rolls of lead flashing.
cast iron sheet cut to size continuous cast ductile iron suppliers usa cast iron castle metals site cast iron grades specification.
cast iron sheet cut to size slide slide slide slide ductile iron pipe canada pipe ductile iron pipe.
cast iron sheet cut to size calder lead roofing expansion joint plus cover flashing 15m x 400mm the pizza lab baking steel vs lodge cast iron pizza serious eats bakingsteelthickpizzalabjpg.
cast iron sheet cut to size stainless steel sheet stainless steel sheettype type stainless steel sheet.
cast iron sheet cut to size measuring metal strength part 2 how to measure ductility and hardness cast iron castle metals site cast iron grades specification.
cast iron sheet cut to size 20121001 baking steel thick pizza lab 02jpg custom metal fabrication metals online cutsize metals angle.
cast iron sheet cut to size lodge 14 inch cast iron baking pan pre seasoned round baking pan with dual cast iron vs cast steel metal casting blog.
cast iron sheet cut to size 18 crystal clear cell cast plexiglass sheet cut to size perforated sheet perforated metals perforated sheet materials.
cast iron sheet cut to size crispy cast iron skillet chicken thighs are always a hit with the family and are a cast iron vs cast steel metal casting blog.
cast iron sheet cut to size impact ireland metals ltd engineering steel stockist stainless steel pipe and fittings division.
cast iron sheet cut to size a table of metal composition continuous cast iron suppliers gray ductile iron casting grades continuous cast ductile iron suppliers usa.
cast iron sheet cut to size continuous cast gray iron suppliers usa stainless steel sheettype type diamond plate.
cast iron sheet cut to size carousel slide steel and pipes for africa products services.
cast iron sheet cut to size metal plastic materials shop online no minimums cut to size without the wait .


Qualification : Matriculate and three years Diploma in Mechanical Engg. recognised by AICTE with 55% marks in aggregate.
Medical Standards : Minimum height 157 cms. (May be reduced by 5cms in the case of Assamese including those from Nagaland, Mizoram, Meghalaya, Arunachal Pradesh, Manipur, Tripura, Garhwal, Sikkim, local tribals of Andaman and Nicobar Islands, and by 2 cms in case of candidates from Lakshadweep, mainland settlers in (Andaman & Nicobar). Chest: Should be well proportioned. Minimum expansion 5 cms. Weight: Proportionate to height and age +10% acceptable. Hearing: normal Medical examination will be conducted by authorised military doctors as per medical standard prescribed in current regulations applicable to Enrolled Personnel on entry. Good dental, medical and physical health, free from any disease/disability, likely to interfere with efficient performance of duties. No Cardio-vascular disease, surgical deformities like knock knee, flat feet etc. infection of ears, no history of fits or psychiatric ailment, varicose vein, corrective surgery for eye sight etc. Visual Standards- 6/12 (Good Eye) and 6/24 (Bad Eye). Candidates are advised to get their ears cleaned for wax and tartar removed from teeth prior to examination.
Training : The basic training will commence in Aug 2012 at INS Chilka followed by sea training and professional training. Yantriks are liable to be discharged as unsuitable due to unsatisfactory performance at any time during the training.
Selection Procedure : Selection of candidates is based on the order of merit depending on their performance in Written Test, Physical Fitness Test (PFT), interview and Fitness in the Medical Examinations.
Kochi Indian Coast Guard Dist HQs No-4, Kalvatty Road, Fort Kochi, Kochi, Kerala- 682 004.
East Chennai Indian Coast Guard Dist HQs No-5, GM Pettai Road, Royapuram, Chennai- 13.
Visakhapatnam Indian Coast Guard Enclave, Behind Port High School, Malkapuram, Vishakhapatnam, Andhra Pradesh-530 011.
North East Kolkata Indian Coast Guard Air Squadron – 700, Naval Transmitting Station, Military Camp Bagjola Private Road (Nr. Nager Bazar), Dumdum, Kolkata – 74.


Firearms instructors in Gulfport, FL have various levels of expertise, training, experience, and many specialize in particular shooting disciplines such as; revolvers only, automatics only, a combination of both types of handguns, rifles, shotguns, hunting, precision shooting, long-distance shooting, and the list goes on. In addition to a firearm instructors training, experience, and shooting discipline that they teach it is important to find out if they also are currently certified, and who was the certification organization or agency, do they have references they can provide, how many students have they taught in the past, and are they insured?
Remember, you're asking this individual to not only teach you about the proper use of a firearm and firearm safety, but also many of the laws in Gulfport, FL that will pertain to your gun ownership. You have every right to investigate them thoroughly. Any firearms instructor that is not willing to answer all of your questions or to invite you to their facility so you can observe a training class is an instructor that I would not recommend and I would be very leery of.
US Precision Defense maintains a large database of Firearms Instructors in Gulfport, FL and from all across the country, find a link on our Firearms Instructors introduction page for a complete list of NRA Certified Instructors in your area by Clicking on the "Shoot For More" link below.
Gulfport, FL, We have an interesting collection of people to meet, places to visit, and things to do in our undiscovered little community. With natural beauty enhanced by our colorful personality, you will find Gulfport FL to be a visionary experience that you will want to share with your family and friends.
Located on the Boca Ciega Bay with a nice beach and long fishing pier, Gulfport's Waterfront District attracts young and old alike. Gulfport is famous for it's variety of dining experiencs. In fact, Gulfport was one of the six finalist in the Rand McNally "Best of the Road" out of 600 competing towns for "Best for Food".
Gulfport, FL, Is a city in Pinellas County, Florida, bordering St. Petersburg and Boca Ciega Bay. The population of Gulfport was 12,029 at the 2010 census. Gulfport is part of the Tampa-St. Petersburg-Clearwater Metropolitan Statistical Area, the 19th largest MSA in the country.


text:
U.S. ARMY SPECIAL OPERATIONS COMMAND ANNOUNCES WINNERS OF 2016 BEST WARRIOR COMPETITION
FORT BRAGG, North Carolina — Every year, the United States Army Special Operations Command (USASOC) holds its Best Warrior Competition. Described by the Army as "the Super Bowl of competitions," the four-day contest, tests elite soldiers ability to conquer urban warfare simulations, board interviews, physical fitness tests, written exams, and battle drills relevant to today's operating environment.
According to a report from Shadowspear.com, Staff Sgt. Clint Bahme of 1st Special Forces Command, was named the Non-Commissioned Officer of the Year, and Spc. Trey Caster of 75th Ranger Regiment, was named Soldier of the Year.
"As warriors, we love to compete. We compete against each-other and represent the organizations that we come from," Command Sgt. Maj. Robert Abernethy said to Shadowspear. "I think this is a great opportunity to build relationships, and to have a better understanding of the capabilities that exist in each of our formations."
Lt. Gen. Kenneth Tovo, the USASOC Commanding General, emphasized why the games are so important.
"You know another reason we compete, is because it 'sharpens the steel,'" Tovo said. "Hopefully along every one of the competitions it has not only improved your capabilities, but it has improved the capabilities of all those who didn't quite make it to this level but did learn something along the way."
Both Special Forces winners will represent USASOC at the Sergeant Major of the Army's Noncommissioned Officer and Soldier of the year "Best Warrior" competition this October in Virginia.
The full original report can be read on Shadowspear's website here.


text:
Q: Too many Email Invocations: 11 I am deactivating no of users and when user is deactivated then all of the open opportunities of user has been assigned to their Manager.
But I am getting below error message:
Error Message:

Apex script unhandled exception by user/organization: / Source
  organization:  (null) Failed to invoke future method 'public static
  void changeOwner(List)' on class 'ChangeOpportunityOwner' for job
  id ''
caused by: System.LimitException: Too many Email Invocations: 11

Below is the Apex Code:
public without sharing class ChangeOpportunityOwner {
  @Future
  public static void changeOwner(List<Id> usrIds){
    Boolean isUpdate=false;
    Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
    Map<Id, Boolean> mapUserToActive = new Map<Id, Boolean>();
    try{
       for (User u1 : [SELECT Id, isActive FROM User]) {
         mapUserToActive.put(u1.Id, u1.isActive);
       }
       List <user>usrs= [Select Id,Name,ManagerId,IsActive from user where Id=:usrIds];
       List<Opportunity> finalOptList=new List<Opportunity>();
       for(User u:usrs){
         List<Opportunity>optys=[Select Id,OwnerId,StageName from Opportunity where OwnerId=:u.Id];
         for(Opportunity opt:optys){
           if(opt.StageName!='Closed Won' && opt.StageName!='Closed Lost')
           {
              if (mapUserToActive.get(u.ManagerId)== true &&                 mapUserToActive.get(u.ManagerId)!=null) {
                 opt.OwnerId=u.ManagerId;
              }
              else{
                  User usr= [Select Id,Name,ManagerId from user where Name='Manager'];
                  opt.OwnerId=usr.Id;
               }
      finalOptList.add(opt);
    // Set list of people who should get the email
      List<String> sendTo = new List<String>();
      sendTo.add(u.ManagerId);
      mail.setToAddresses(sendTo);
    //  Set who the email is sent from
      mail.setReplyTo('flow@test.com');
      mail.setSenderDisplayName('Support');
     // Set email contents - you can use variables!
      mail.setSubject('Open Opportunities transferred to you');
      String body = 'Dear Manager,
 ';
      body +='
';
      body += 'Please note that '+u.name+'  has been deactivated as a Salesforce User hence all of its
 Open Opportunities has been assigned to you if any.
';
      body +='
';
      body +='Kind regards,
';
      body +='
';
      body +='SFDC Support';
      mail.setHtmlBody(body);
isUpdate=true;
}
}
if(isUpdate)
Messaging.sendEmail(new Messaging.SingleEmailMessage[]{mail},false);
}
if(isUpdate)
{
update finalOptList;
}
}
catch(Exception e)
{
system.debug('An Exception Occured: '+e.getMessage());
}
}

@InvocableMethod(label='Change Opportunity Owner' description='It Change the owner of opportunity when owner is inactive')
public static void changeOwnerFuture(List<Id> usrIds)
{
changeOwner(usrIds);
}
}

Can somebody please help me what is wrong in apex code?
The opportunity reassignment email that I am sending via apex,it crossed the limit...
Below updated code fix the Too many email invocation error but when I deactivate multiple users and when manager receives an email,it displays only first user information.
Lets say I am deactivating 3 users A,B,C has same manager and when manager receives an email,total 3 mails received but in all emails  it displays User A's information.
Updated Code:
public without sharing class ChangeOpportunityOwner {
@Future
public static void changeOwner(Id[] usrIds){
boolean isUpdate=false;
boolean isUpdate1=false;
boolean isUpdate2=false;
Id genericManagerId = [SELECT Id FROM User WHERE Name = 'Dhananjay Patil'].Id;
String genericName=[Select Id,Name from User where Id=:genericManagerId].Name;
Map<Id,User> usrMap=new Map<Id,User>([Select Id,Name,Manager.Name from User where Id=:usrIds]);
Opportunity[] opps = [SELECT Owner.Name,Owner.Manager.Name,Owner.ManagerId,Owner.Manager.IsActive FROM Opportunity WHERE OwnerId =:usrIds AND IsClosed = FALSE];
Set<Id> managerIds = new Set<Id>();
for(Opportunity opp: opps) {
if(opp.Owner.ManagerId != null && opp.Owner.Manager.IsActive) {
opp.OwnerId = opp.Owner.ManagerId;
managerIds.add(opp.OwnerId);
isUpdate=true;
} else {
opp.OwnerId = genericManagerId;
managerIds.add(opp.OwnerId);
isUpdate1=true;
}

}

Messaging.Email[] messages = new Messaging.Email[0];
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
Id templateId=[Select Id,DeveloperName,body,HtmlValue from EmailTemplate where DeveloperName=:'Assign_Opportunities_to_New_Owner'].Id;
EmailTemplate templ=[Select Id,HtmlValue,body from EmailTemplate where Id=:templateId];
OrgWideEmailAddress owa=[Select Id,Address,DisplayName from OrgWideEmailAddress where Address='test@test.com'];

for(User u1:usrMap.values()){
message.setSubject('Open Opportunities transferred to you');
message.setTargetObjectId(u1.managerId);
message.setOrgWideEmailAddressId(owa.Id);
message.setSaveAsActivity(false);
message.setTemplateId(templateId);
//Setting PlainText Body
string test = '';
test=templ.body.replace('{!Opportunity.OwnerFullName}',u1.Name);
message.setPlainTextBody(test);
messages.add(message);
isUpdate2=true;
// }
}
If((isUpdate||isUpdate1)&&isUpdate2){
Messaging.sendEmail(messages, false);
Database.update(opps, false);
}
}
@InvocableMethod(label='Change Opportunity Owner' description='It Changes the owner of opportunity when owner is inactive')
public static void changeOwnerFuture(Id[] usrIds)
{
changeOwner(usrIds);
}
}

A: You can only call Messaging.sendEmail 10 times per transaction, but you can put many Messaging.Email items in a list.
Messaging.Email[] messages = new Messaging.Email[0];
for(...) {
  Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
  // Set mail parameters
  messages.add(mail);
}
Messaging.sendEmail(messages);

Realistically, you've massively over-engineered your code. Here's how I would optimize your code:
@future public static void changeOwners(Id[] userIds) {
  Id genericManagerId = [SELECT Id FROM User WHERE Name = 'Manager'].Id;
  Opportunity[] opps = [SELECT Owner.ManagerId, Owner.Manager.IsActive FROM Opportunity WHERE OwnerId = :userIds AND IsClosed = FALSE];
  Set<Id> managerIds = new Set<Id>();
  for(Opportunity opp: opps) {
    if(opp.Owner.ManagerId != null && opp.Owner.Manager.IsActive) {
      opp.OwnerId = opp.Owner.ManagerId;
      managerIds.add(opp.OwnerId);
    } else {
      opp.OwnerId = genericManagerId;
    }
  }
  Messaging.Email[] messages = new Messaging.Email[0];
  for(Id managerId: managerIds) {
    Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
    message.setSubject('You have new opportunities.');
    message.setTargetObjectId(managerId);
    message.setSaveAsActivity(false);
    message.setPlainTextBody('You have new opportunities, etc, etc.');
    messages.add(message);
  }
  Messaging.sendEmail(messages, false);
  Database.update(opps, false);
}

A: Avoid the soql and sendemail method within the for loop.I have refined your code as below.Redefine the logic as you need
Also what are you doing here?
for (User u1 : [SELECT Id, isActive FROM User]) {
            mapUserToActive.put(u1.Id, u1.isActive);
        }

it will fetch all the users in the org . filter the users based on the condition
public without sharing class ChangeOpportunityOwner {
@Future
public static void changeOwner(List<Id> usrIds){
    Boolean isUpdate=false;
    Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
    Map<Id, Boolean> mapUserToActive = new Map<Id, Boolean>();

         User usr= [Select Id,Name,ManagerId from user where Name='Manager'];

        Map <id,user> usrMap = new Map<id,user>();
        set<id> mgrIds=new set<id>();
         for(User u:[Select Id,Name,ManagerId,IsActive from user where Id=:usrIds])
         {
             usrmap.put(u.id,u);
             mgrIds.add(u.managerid);

         }
         Map<id,user> managerUsrMap = new Map<id,user>([Select Id,Name,ManagerId,IsActive from user where Id in :mgrIds and isactive=true]);
        map<id,List<opportunity>> usrOppMap = new Map<id,List<opportunity>>();
        List<Opportunity> finalOptList=new List<Opportunity>();
        List<Messaging.SingleEmailMessage> msgList = new List<Messaging.SingleEmailMessage>();

        for(opportunity o:[Select Id,OwnerId,StageName from Opportunity where OwnerId in :usrMap.keyset()])
        {
            if(usrOppMap.containskey(o.ownerid))
            {
                List<opportunity> oppList = usrOppMap.get(o.ownerid);
                oppList.add(o);
                usrOppMap.put(o.ownerid,oppList);
            }
            else{
                usrOppMap.put(o.ownerid,new List<Opportunity> { o });
            }
        }
        for(User u:usrMap.values()){

            for(Opportunity opt:usrOppMap.get(u.id){
                if(opt.StageName!='Closed Won' && opt.StageName!='Closed Lost')
                {
                    if (managerUsrMap.containskey(u.managerid)) {
                        opt.OwnerId=u.ManagerId;
                    }
                    else{
                        opt.OwnerId=usr.Id;
                                   }
                                   finalOptList.add(opt);
                                   // Set list of people who should get the email
                                   List<String> sendTo = new List<String>();
                                   sendTo.add(u.ManagerId);
                                   mail.setToAddresses(sendTo);
                                   //  Set who the email is sent from
                                   mail.setReplyTo('flow@test.com');
                                   mail.setSenderDisplayName('Support');
                                   // Set email contents - you can use variables!
                                   mail.setSubject('Open Opportunities transferred to you');
                                   String body = 'Dear Manager,
 ';
                                   body +='
';
                                   body += 'Please note that '+u.name+'  has been deactivated as a Salesforce User hence all of its
 Open Opportunities has been assigned to you if any.
';
                                   body +='
';
                                   body +='Kind regards,
';
                                   body +='
';
                                   body +='SFDC Support';
                                   mail.setHtmlBody(body);
                                   isUpdate=true;
                                   msgList.add(mail);
                                   }
                                   }

                                   }

                                       update finalOptList;

                                       Messaging.sendEmail(msgList,false);

}

                                   @InvocableMethod(label='Change Opportunity Owner' description='It Change the owner of opportunity when owner is inactive')
                                   public static void changeOwnerFuture(List<Id> usrIds)
                                   {
                                       changeOwner(usrIds);
                                   }

                                       }

A: You can't send more than 10 emails with the sendEmail() method because of governor limits :
Total number of sendEmail methods allowed : 10

https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_gov_limits.htm
If you want to send more than 10 emails in a process, you need to use batch :
http://forceguru.blogspot.fr/2011/03/how-to-send-more-than-10-e-mails.html


text:
Q: Logical operators || and && difference - I keep making mistakes I am a beginner programmer in C++ and I have trouble understanding logical operators && and ||.
For example, I had a minor assignment to write a function which returns true if a vector of doubles is oscillatory (ex.  1, 3, 2, 4, 3, 5, 4).
I tried a very basic solution. I made a for loop
for(int i=1; i<vec.size()-1; i++)

and an if statement which checked if the element at the i-th position is either larger or equal to its predecessor and larger or equal to its successor OR if the element at the i-th position is lower or equal to its predecessor and lower or equal than its successor
if ((vec.at(i) >= vec.at(i-1) && vec.at(i) >= vec.at(i+1))
 || (vec.at(i) <= vec.at(i-1) && vec.at(i) <= vec.at(i+1)))
   return false;

BUT this does not work! However, if I put && instead of || and || instead of && it works! Why? Here is my logic:
The result should be true if either of the sub-conditions are met (Separated by ||) because the vector of numbers cannot be oscillatory if for example the second element is greater than the first and greater than the third, OR if the second element is lower than the first and lower than the second
This is my reasoning, just put && instead of and,  after that put || instead of   or and you get my code which sadly does not work.
Can someone tell me why my logic is faulty?

A: Your understanding of && and || is good but your reasoning is not correct. If as you say:

the second element is greater than the first and greater than the third, OR if the second element is lower than the first and lower than the second

...for all elements, then your vector is oscillatory. For a vector to not be oscillatory, you want at least one i where either one of these is true: a[i - 1] <= a[i] <= a[i + 1] or a[i - 1] >= a[i] >= a[i + 1]. In C++ terms:
if (a[i - 1] <= a[i] && a[i] <= a[i + 1]
    || a[i - 1] >= a[i] && a[i] >= a[i + 1]) { /* ... */ }

Your are checking the opposite of what you want, which is why inverting the operators work.

A:
The result should be true

But you returned false instead. :)


MOSCOW, January 23. /TASS/. Israel's practice of spontaneous strikes on Syria must be brought to an end, Russian Foreign Ministry Spokeswoman Maria Zakharova told reporters on Wednesday.
The diplomat called to think about possible consequences of sparking a new spiral of tension in the Middle East.
On January 20, Syria's SANA news agency reported that Syrian air defenses had repelled an Israeli air strike in the country's south. On the same day, Israel announced that it had intercepted a rocket fired at the Golan Heights.
The next day, Russia's Defense Ministry stated that four Syrian troops were killed and another six were wounded in the strikes, and the Damascus airport was damaged. Syria's air defenses destroyed more than 30 Israeli missiles and air bombs.


text:
Caecognathia polaris is een pissebed uit de familie Gnathiidae. De wetenschappelijke naam van de soort is voor het eerst geldig gepubliceerd in 1902 door Hodgson.

Gnathiidae

redpajama_set_name: RedPajamaWikipedia


Publish by in Category interior design at September 22nd, 2018. Tagged with freestanding tub in small bathroom.
Freestanding Tub In Small Bathroom have 50 picture of interior design, it's including Freestanding Tub In Small Bathroom Unbelievable Bathrooms With Tubs Table Storage Interior Design 1. Freestanding Tub In Small Bathroom Improbable Illbedead Interior Design 2. Freestanding Tub In Small Bathroom Phenomenal Beautiful Interior Design 3. Freestanding Tub In Small Bathroom Irrational Inviting Soaking Tubs Japanese Interior Design 4. Freestanding Tub In Small Bathroom Extraordinary Illbedead Interior Design 5.


text:
Q: Declare Docker options in GitHub Actions I am trying to turn a GitHub action like this:
...
- name: Pandoc
  run: |
    docker run -v "`pwd`/assets/fonts:/usr/share/fonts" \
      pandoc/latex:2.10 -o destination.pdf source.md

Into a GitHub action that would read something like:
...
  - uses: docker://pandoc/latex:2.10
    with:
      volume: "`pwd`/assets/fonts:/usr/share/fonts"
      args: -o destination.pdf source.md

The volume declaration above doesn't work.
Now, I know I could just do - run: docker run ... in the step declaration. I want to know if there is a more YAML-like way of doing things.

A:
I want to know if there is a more YAML-like way of doing things.

Not that I know of.
There are a collection of docker-related GitHUb Actions, but none of them involves docker run. Same for sdras/awesome-actions.