text:
The 1878 Victorian Football Association season was the second season of the Australian rules football competition. The premiership was won by the Geelong Football Club, after it defeated  in a playoff match on 5 October. It was the club's first VFA premiership, and the first in a sequence of three consecutive premierships won from 1878 to 1880. Geelong was unbeaten during the year.

Association membership
The number of senior metropolitan clubs in the Association increased from five to seven in 1878, with  and West Melbourne being newly promoted to senior ranks for 1878, having been leading junior teams in 1877.

Additionally, several provincial teams, including premiers , competed as senior clubs affiliated with the Association.

1878 VFA premiership
Among the metropolitan clubs,  had the best record, finishing with eleven wins and five draws from its twenty-three matches, ahead of , whose record was seventeen wins and one draw from twenty-four matches.

Despite Carlton having a numerically superior record, at the time, Melbourne and Carlton were considered to be by far the strongest of the metropolitan clubs, with Melbourne's position as the top club based almost entirely on head-to-head matches between the two clubs, of which Melbourne won all four.

Among the provincial clubs,  was by far the strongest, having gone through the season undefeated with fifteen wins and one draw from sixteen matches. However, Geelong had played only three games against metropolitan clubs (wins against West Melbourne, Carlton and Hotham), while its provincial opponents were not considered as strong as the metropolitan competition: this gave rise to a dispute as to whether or not Geelong's record was strong enough to claim the premiership.

To resolve this dispute, Melbourne and Geelong scheduled a premiership play-off match - the first in Association history - for 5 October, the week after the season was to have finished, at the MCG. Geelong won the play-off match by four goals to win the premiership.

|-
| 5 October 1878 (3:30 pm)
| align=right |
| align=center| def. by
| style="font-weight: bold;" |
| style="font-size: 100%"| Melbourne Cricket Ground (Crowd: 7,000–8,000)
|
|-
|
| align=right | 1.11.4
| align=center style="font-weight: bold;" | HalfFinal
|1.75.12
| valign=top style="font-size: 85%" colspan=2 | Umpires: Graham ()
|-
| colspan=2 align=right valign=top style="font-size: 85%" | C. Baker
| align=center valign=top | Goals
| colspan=2 valign=top style="font-size: 85%"| Booth 3, Christie, Douglass
|-

Club senior records
The below table details the playing records of the seven senior metropolitan clubs and  in all matches during the 1878 season. Two sets of results are given:

 Senior results: based only upon games played against VFA senior metropolitan clubs
 Total results: including senior games, and games against intercolonial, up-country and junior clubs.

The clubs are listed in the order in which they were ranked in the Australasian newspaper. The VFA had no formal process by which the clubs were ranked, so the below order should be considered indicative only, particularly since the fixturing of matches was not standardised; however, the top three placings were later acknowledged in publications including the Football Record and are considered official. The senior records include the premiership playoff match.

Notable events
  and  each hosted intercolonial clubs during the season – in both cases, the same clubs they had visited in 1877:
 Carlton hosted the Waratah club from New South Wales, playing one match under the rugby rules prevalent in New South Wales and one match under the Victorian rules, as they had done the previous year during Carlton's visit to Sydney. The result of the rugby game on 29 June was disputed between the two clubs: both clubs claimed one goal and one touch-down, but the Carlton and Waratah umpires disagreed about whether or not Carlton's shot for goal had hit the post; consequently, Carlton claimed a 1–1 draw and Waratah claimed a 1–0 victory. In the Victorian rules game on 1 June, Carlton 2.13 defeated Waratah 1.2. Both clubs were lauded for their proficiency in their non-preferred code.
 Melbourne hosted the Victorians club from South Australia. Both matches were played under Victorian rules, which were in use in both Victoria and South Australia at the time. Melbourne won both games: on 17 August, Melbourne 1.23 d. Victorians 0.1; and, on 19 August, Melbourne 2.13 d. Victorians 0.4.
 The leading goalkickers for the season were Christie () and Coulthard (), who both kicked 15 goals.

External links
 Victorian Football Association/Victorian Football League History (1877-2008)
 List of VFA/VFL Premiers (1877-2007)
 History of Australian rules football in Victoria (1853-1900)

References

Victorian Football League seasons
Vfa Season, 1878


Our colleagues at the Montessori Public Policy Initiative (MPPI) are working on an important policy issue that has a potential impact on all Montessori teachers. Please read their letter below and consider supporting their efforts.
How does this impact Montessori Schools and Teachers?
As highly respected voices in early childhood advocacy, NAEYC and other members of the P2P Task Force shape early childhood policy. The P2P Initiative has the potential to influence child care licensing regulations, state requirements for teachers, QRIS rubrics, and other policies that significantly impact Montessori programs. As MPPI, MACTE, and other Montessorians advocate throughout the country for proper recognition of the Montessori credential, it is essential that Montessori teacher preparation be properly classified by an organization as powerful as NAEYC.
Therefore, we are concerned that NAEYC's draft document classifies Montessori teacher preparation as a "specialist" training, to be obtained after other, conventional teacher training. Montessori training fully prepares individuals to meet the knowledge and competencies that NAEYC has set forth for "generalist" early childhood educators, within a Montessori setting. Montessori teachers are generalists who are trained to teach in a specialized setting, but the current NAEYC rubric does not have a way to adequately capture that. We cannot simply request a re-categorization of Montessori training to "generalist" because according to the current draft, teachers receiving credentials from free-standing teacher education programs would only be classified in NAEYC's rubric as ECE I, the lowest level, which would not qualify them as a lead teacher in most child-care licensing frameworks or publicly funded early childhood programs.
Ask NAEYC and the P2P Task Force to adequately classify Montessori teacher preparation by adding your name in support of this letter before April 28, 2018. You can add your name, and/or the name of your organization, by filling out this form. We will submit the letter along with all of the names received, by the April 30th deadline.
For further information, see the full draft of the P2PDecision Cycles 3, 4, and 5 attached to this email.
Thank you for bolstering the Montessori voice, as we advocate for proper recognition of the Montessori teaching credential. Please feel free to reach out to Denise or Wendy with any questions.


Articles about Grand Theft Auto: Liberty City Stories.
Developed by Rockstar Leeds and Rockstar North, released for the PSP™, PS2™, Apple iOS™ and Android devices.
Pages in category "GTA LCS"
This page was last edited on 11 January 2019, at 23:39.


Stay tuned here for frequent updates on our progress.
Evolve Marketing is making progress each day with our one-on-one consultations. Here's how we're achieving success in the Salt Lake City region.
There is no substitute for knowing how to set and attain personally meaningful objectives when it comes to success. This is why we make goal setting a foundational topic in the Evolve Marketing training program.


This traditional pickle onion recipe was given to my mother-in-law years ago by a friend. She passed it down to me, and I have been making this ONO appetizer for years. It's ONO with stews and poi. That's how I like to eat it.
A friend who loves my onions, likes to eat the onions with her tuna sandwich. When the onions are gone, her husband keeps the onion juice, adds dried shrimp and uses the juice to season his food, much like chili pepper water.
3- Maui onions, peeled and quartered or any type of sweet onion available.
Wash and sterilize 1 quart size canning jar.
Cut both ends of the onions and stand the onion upright on the cutting board. Being careful not to slice to the very end, slice in half, and then slice into quarters.
Keeping the quarters intact, alternately layer and pack the onions, bell pepper and chili peppers into the jar. Add the vinegar, salt and sugar. Add the boiling water to the top and seal with the cover. Shake to dissolve the sugar and salt.
Refrigerate after it has set for a day.


text:
Q: Proof for the comparision criterio of uniform convergence I'm trying find proof (or prove) for the following statement:

For every $x \in M$ and every $n \in \mathbb{N}:$
$|f_n(x)|\leq g_n(x)$
If series of functions $\sum_{n=1}^{\infty} g_n$ converges uniformly
  on $M$, then also series of functions $\sum_{n=1}^{\infty} f_n$
  converges uniformly on $M$.

I have been looking for proof for some time but didn't find it. If there is none, could you help me prove it?
Thanks

redpajama_set_name: RedPajamaStackExchange


When you book a session with a four-month old participant, you're never sure how it's going to go. As soon as Liam got out of the car with his mom, he let out a big toothless smile at me and I knew this was going to be a great session. What was even better was to find out the mom and dad were old neighbors of ours! Hope you enjoy this sneak peek!!


text:
Mokhtar (arabe mukhtâr : « choisi ») est un prénom masculin arabe. Le même sens de base a donné le titre mukhtar, qui désigne un maire de village au Proche-Orient. En turc, le prénom et le titre sont écrits Muhtar (muhtar).

Variantes du prénom
 Mokhtaria ; qui en est la forme féminine.

Comme prénom de personne
 Mokhtar Latiri (1926-2007) est un haut fonctionnaire tunisien.
 Mokhtar Dhouib (1952- ) est un footballeur tunisien.
 Mokhtar Arribi (1924-1989 ) est un footballeur français.
 Mokhtar Belmokhtar (1972- 2015) est un chef djihadiste algérien.

Comme titre
 Omar Al Mokhtar

Autres
 Mokhtar est un film tunisien sorti en 1968.

Notes et références

Homonymie de prénom
Prénom masculin

redpajama_set_name: RedPajamaWikipedia


The Verona High School Exploration Academy students helped paint the birds for the Fitchburg Bike Trail Underpass Mural. With lead artist Alicia Rheal and Emida Roller. The birds will be installed in the Spring 2017.


Concentrance, a Washington, DC-based professional services and technology firm, is a fast-growing business with a diverse workforce, a national perspective, and a varied portfolio of client engagements. Concentrance was founded on ideals of quality, integrity and respect, for both our clients and our employees.
Our motto, "Centered on your success," is a guiding principle for all of our customer interactions; our business philosophy is helping our customers, our employees, and our communities meet their goals. Our focus on quality and our team-oriented atmosphere make Concentrance an exciting, dynamic place to work, and our employees, great people to work with.
We believe that our success is driven by a firm commitment to shared values.
These values are the key drivers of our accomplishments. They form the foundation of our corporate culture and the fabric around our corporate relations.


text:
Riding with Wendy
Shuttle Diversity, Flexibility are Keys to Success
Re-framing Time
Organizing to Fund Transportation Programs
Right-Sizing Transportation
Transportation's Role in Reducing Greenhouse Gases
MISSION BAY SHUTTLE A COMMUNITY ASSET
It's taken less than two years for the Mission Bay Shuttle to establish itself as a much-appreciated and fundamental community benefit. The shuttle, which links Mission Bay offices, retailers and residents with the Powell BART and Caltrain light rail stations, recorded just under 300,000 boardings in 2011.
The shuttle grew from two to four buses in its first year of operation; it expanded from one to two routes as of January of 2012. The service operates from 7am to 10am and from 3:45pm to 8pm.
It can be credited as a key contributor towards Mission Bay truly becoming a "transit-first community." According to a 2011 survey conducted by the Mission Bay TMA, over 72% of the community uses transit; another 12% walk or bicycle to work.
Why is Transportation so Important?
It's the integral tie between where we live, work, play, and how we get around.
It's also central to the overall quality of life. Decisions about where we live, work, and shop revolve around the availability and number of transportation choices.
The availability and number of transportation choices impacts local communities in several ways:
-Diversity of tax revenues
-Property values
-Image and public perception of accessibility or isolation
-Congestion within the community
-Congestion to and from the community
-The cost of building and maintenance of roadways and parking facilities
-Use of public services
-Environmental quality
©2009 - Silvani Transportation Consulting. All Rights Reserved.

redpajama_set_name: RedPajamaCommonCrawl


My friend Craig and I took a train today to meet at Emmanuel Presbyterian Church with the Faith/Activism Collective and the New Sanctuary Movement to meet and hear the story of Yolanda, an immigrant from Guatemala who has taken asylum in the church.
Yolanda left Guatemala which was suffering all kinds of problems, due especially to a violent civil war, and came to the U.S. in 1989 seeking a better life for herself and especially for her family. For years she struggled to make it in the U.S. and worked to get proper documentation. After spending well over $5,000 (I actually think it was closer to $10,000), while working marginal jobs, on lawyers in order to get proper documentation and more permanent status in the U.S. she was still ordered to deport and leave the country. Faced with the choice of leaving the country alone and leaving her daughter behind (who was born in the U.S.) thus breaking up her family, bringing her daughter back to Guatemala to live in poverty with her, or staying in the U.S. together as a family and giving her daughter a better chance at life, she chose to accept asylum from her church and the New Sanctuary Movement. Thus far, Immigration and Customs Enforcement has not come in to deport her (this might be because it would make for bad press) but nothing is keeping them from doing just that. Because of "separation of church & state" there are no laws protecting churches from having their front doors busted in (I thought it would be the opposite). The New Sanctuary Movement is working with "pro-bono" attorneys to get Yolanda permanent status but this will be a long process because of all the red tape and bureaucracy. Yolanda is theoretically safe as long as she stays inside the church. She hasn't left the church building in a long time, but she does have a garden on the roof.
Yolanda was a great story teller (especially if you can understand Spanish), and she had an absolutely delightful personality. I think we all fell in love with her fast. This trip was a sad reminder of some of the enormous problems with immigration in the U.S. But it was also an inspiration to hear from the heart of such an amazing woman who, to most people who haven't met her and to American policy, is just an "illegal."
The New Sanctuary Movement is an encouraging and beautiful example of a healthy ecclesiological response to a very real social/political issue.


text:
package com.sequenceiq.cloudbreak.cm;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;

import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.http.HttpStatus;

import com.cloudera.api.swagger.BatchResourceApi;
import com.cloudera.api.swagger.HostsResourceApi;
import com.cloudera.api.swagger.ToolsResourceApi;
import com.cloudera.api.swagger.UsersResourceApi;
import com.cloudera.api.swagger.client.ApiClient;
import com.cloudera.api.swagger.client.ApiException;
import com.cloudera.api.swagger.model.ApiAuthRoleRef;
import com.cloudera.api.swagger.model.ApiBatchRequest;
import com.cloudera.api.swagger.model.ApiBatchRequestElement;
import com.cloudera.api.swagger.model.ApiBatchResponse;
import com.cloudera.api.swagger.model.ApiBatchResponseElement;
import com.cloudera.api.swagger.model.ApiClusterRef;
import com.cloudera.api.swagger.model.ApiCommand;
import com.cloudera.api.swagger.model.ApiEcho;
import com.cloudera.api.swagger.model.ApiGenerateHostCertsArguments;
import com.cloudera.api.swagger.model.ApiHost;
import com.cloudera.api.swagger.model.ApiHostList;
import com.cloudera.api.swagger.model.ApiHostRef;
import com.cloudera.api.swagger.model.ApiUser2;
import com.cloudera.api.swagger.model.ApiUser2List;
import com.sequenceiq.cloudbreak.client.HttpClientConfig;
import com.sequenceiq.cloudbreak.cloud.scheduler.CancellationException;
import com.sequenceiq.cloudbreak.cm.client.ClouderaManagerApiClientProvider;
import com.sequenceiq.cloudbreak.cm.client.ClouderaManagerClientInitException;
import com.sequenceiq.cloudbreak.cm.client.retry.ClouderaManagerApiFactory;
import com.sequenceiq.cloudbreak.cm.polling.ClouderaManagerPollingServiceProvider;
import com.sequenceiq.cloudbreak.common.json.JsonUtil;
import com.sequenceiq.cloudbreak.domain.stack.Stack;
import com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster;
import com.sequenceiq.cloudbreak.polling.ExtendedPollingResult;
import com.sequenceiq.cloudbreak.service.CloudbreakException;

@ExtendWith(MockitoExtension.class)
public class ClouderaManagerSecurityServiceTest {

    private static final int GATEWAY_PORT = 8080;

    private static final boolean LDAP_ENABLED = true;

    private static final boolean LDAP_DISABLED = false;

    private static final String ADMIN = "admin";

    @Mock
    private ClouderaManagerApiFactory clouderaManagerApiFactory;

    @Mock
    private ClouderaManagerApiClientProvider clouderaManagerApiClientProvider;

    @Mock
    private ClouderaManagerSecurityConfigProvider securityConfigProvider;

    @Mock
    private ClouderaManagerKerberosService kerberosService;

    @Mock
    private ClouderaManagerLdapService ldapService;

    @Mock
    private ClouderaManagerPollingServiceProvider clouderaManagerPollingServiceProvider;

    @Mock
    private ApiClient apiClient;

    @InjectMocks
    private ClouderaManagerSecurityService underTest;

    private Stack stack;

    private HttpClientConfig clientConfig;

    public void initTestInput(String userName) {
        stack = createStack(userName);
        clientConfig = new HttpClientConfig("localhost");
        underTest = new ClouderaManagerSecurityService(stack, clientConfig);
        MockitoAnnotations.openMocks(this);
    }

    @Test
    public void testChangeOriginalCredentialsAndCreateCloudbreakUserWhenLdapIsConfiguredAndAdminUserIsProvided()
            throws CloudbreakException, ApiException, ClouderaManagerClientInitException {
        initTestInput(ADMIN);
        UsersResourceApi usersResourceApi = mock(UsersResourceApi.class);
        ToolsResourceApi toolsResourceApi = mock(ToolsResourceApi.class);
        ApiUser2List oldUserList = createApiUser2List();

        when(clouderaManagerApiClientProvider.getDefaultClient(GATEWAY_PORT, clientConfig, ClouderaManagerApiClientProvider.API_V_31)).thenReturn(apiClient);
        when(clouderaManagerApiFactory.getUserResourceApi(any())).thenReturn(usersResourceApi);
        when(usersResourceApi.readUsers2("SUMMARY")).thenReturn(oldUserList);
        when(clouderaManagerApiFactory.getToolsResourceApi(any())).thenReturn(toolsResourceApi);
        when(toolsResourceApi.echo("TEST")).thenReturn(new ApiEcho());

        underTest.changeOriginalCredentialsAndCreateCloudbreakUser(LDAP_ENABLED);

        verify(clouderaManagerApiFactory).getUserResourceApi(apiClient);
        verify(usersResourceApi).readUsers2("SUMMARY");

        ArgumentCaptor<ApiUser2List> argumentCaptor = ArgumentCaptor.forClass(ApiUser2List.class);
        verify(usersResourceApi, times(2)).createUsers2(argumentCaptor.capture());
        List<ApiUser2List> createdUsers = argumentCaptor.getAllValues();
        assertEquals(stack.getCluster().getCloudbreakAmbariUser(), createdUsers.get(0).getItems().get(0).getName());
        assertEquals(stack.getCluster().getCloudbreakAmbariPassword(), createdUsers.get(0).getItems().get(0).getPassword());
        assertEquals(stack.getCluster().getDpAmbariUser(), createdUsers.get(1).getItems().get(0).getName());
        assertEquals(stack.getCluster().getDpAmbariPassword(), createdUsers.get(1).getItems().get(0).getPassword());

        verify(usersResourceApi).updateUser2(oldUserList.getItems().get(0).getName(), oldUserList.getItems().get(0));
    }

    @Test
    public void testChangeOriginalCredentialsAndCreateCloudbreakUserWhenLdapIsNotConfiguredAndTheGivenUserIsNotAdmin()
            throws CloudbreakException, ApiException, ClouderaManagerClientInitException {
        initTestInput("ambariUser");
        UsersResourceApi usersResourceApi = mock(UsersResourceApi.class);
        UsersResourceApi newUsersResourceApi = mock(UsersResourceApi.class);
        ToolsResourceApi toolsResourceApi = mock(ToolsResourceApi.class);
        ApiClient newApiClient = mock(ApiClient.class);
        ApiUser2List oldUserList = createApiUser2List();

        when(clouderaManagerApiClientProvider.getDefaultClient(GATEWAY_PORT, clientConfig, ClouderaManagerApiClientProvider.API_V_31)).thenReturn(apiClient);
        when(clouderaManagerApiFactory.getUserResourceApi(apiClient)).thenReturn(usersResourceApi);

        when(usersResourceApi.readUsers2("SUMMARY")).thenReturn(oldUserList);

        when(clouderaManagerApiFactory.getToolsResourceApi(any())).thenReturn(toolsResourceApi);
        when(toolsResourceApi.echo("TEST")).thenReturn(new ApiEcho());

        when(clouderaManagerApiClientProvider.getClouderaManagerClient(clientConfig, GATEWAY_PORT, stack.getCluster().getCloudbreakAmbariUser(),
                stack.getCluster().getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31)).thenReturn(newApiClient);
        when(clouderaManagerApiFactory.getUserResourceApi(newApiClient)).thenReturn(newUsersResourceApi);

        underTest.changeOriginalCredentialsAndCreateCloudbreakUser(LDAP_DISABLED);

        verify(clouderaManagerApiClientProvider).getDefaultClient(GATEWAY_PORT, clientConfig, ClouderaManagerApiClientProvider.API_V_31);
        verify(usersResourceApi).readUsers2("SUMMARY");

        verify(clouderaManagerApiClientProvider).getClouderaManagerClient(clientConfig, GATEWAY_PORT, stack.getCluster().getCloudbreakAmbariUser(),
                stack.getCluster().getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31);

        ArgumentCaptor<ApiUser2List> createUserCaptor = ArgumentCaptor.forClass(ApiUser2List.class);
        verify(usersResourceApi, times(2)).createUsers2(createUserCaptor.capture());
        List<ApiUser2List> createdUsers = createUserCaptor.getAllValues();
        assertEquals(stack.getCluster().getCloudbreakAmbariUser(), createdUsers.get(0).getItems().get(0).getName());
        assertEquals(stack.getCluster().getCloudbreakAmbariPassword(), createdUsers.get(0).getItems().get(0).getPassword());
        assertEquals(stack.getCluster().getDpAmbariUser(), createdUsers.get(1).getItems().get(0).getName());
        assertEquals(stack.getCluster().getDpAmbariPassword(), createdUsers.get(1).getItems().get(0).getPassword());

        ArgumentCaptor<ApiUser2List> createNewUserCaptor = ArgumentCaptor.forClass(ApiUser2List.class);
        verify(newUsersResourceApi).createUsers2(createNewUserCaptor.capture());
        List<ApiUser2List> createdNewUser = createNewUserCaptor.getAllValues();
        assertEquals(stack.getCluster().getUserName(), createdNewUser.get(0).getItems().get(0).getName());
        assertEquals(stack.getCluster().getPassword(), createdNewUser.get(0).getItems().get(0).getPassword());

        verifyNoMoreInteractions(clouderaManagerApiClientProvider);
    }

    @Test
    public void testChangeOriginalCredentialsAndCreateCloudbreakUserWhenUsersAlreadyCreated()
            throws CloudbreakException, ApiException, ClouderaManagerClientInitException {
        initTestInput("ambariUser");
        UsersResourceApi usersResourceApi = mock(UsersResourceApi.class);
        UsersResourceApi newUsersResourceApi = mock(UsersResourceApi.class);
        ApiClient newApiClient = mock(ApiClient.class);

        Cluster cluster = stack.getCluster();

        setUpClientCreation(cluster);
        when(clouderaManagerApiFactory.getUserResourceApi(apiClient)).thenReturn(usersResourceApi);

        setUpUsersAlreadyCreated(usersResourceApi, cluster);
        setUpApiClientCredentialAlreadyChanged();

        when(clouderaManagerApiClientProvider.getClouderaManagerClient(clientConfig, GATEWAY_PORT, cluster.getCloudbreakAmbariUser(),
                cluster.getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31)).thenReturn(newApiClient);
        when(clouderaManagerApiFactory.getUserResourceApi(newApiClient)).thenReturn(newUsersResourceApi);

        underTest.changeOriginalCredentialsAndCreateCloudbreakUser(LDAP_DISABLED);

        verifyClientCreation(cluster);
        verify(usersResourceApi).readUsers2("SUMMARY");
        verifyNoUsersCreated(usersResourceApi, newUsersResourceApi);
        verifyNoMoreInteractions(clouderaManagerApiClientProvider);
    }

    private void setUpClientCreation(Cluster cluster) throws ClouderaManagerClientInitException {
        when(clouderaManagerApiClientProvider.getDefaultClient(GATEWAY_PORT, clientConfig, ClouderaManagerApiClientProvider.API_V_31)).thenReturn(apiClient);
        when(clouderaManagerApiClientProvider.getV40Client(GATEWAY_PORT, cluster.getCloudbreakAmbariUser(), cluster.getCloudbreakAmbariPassword(), clientConfig))
                .thenReturn(apiClient);
    }

    private void setUpApiClientCredentialAlreadyChanged() throws ApiException {
        ToolsResourceApi toolsResourceApi = mock(ToolsResourceApi.class);
        when(clouderaManagerApiFactory.getToolsResourceApi(any())).thenReturn(toolsResourceApi);
        when(toolsResourceApi.echo("TEST")).thenThrow(new ApiException(HttpStatus.UNAUTHORIZED.value(), "Bad credentials"));
    }

    private void setUpUsersAlreadyCreated(UsersResourceApi usersResourceApi, Cluster cluster) throws ApiException {
        ApiUser2List oldUserList = new ApiUser2List()
                .addItemsItem(new ApiUser2().name(ADMIN))
                .addItemsItem(new ApiUser2().name(cluster.getUserName()).password(cluster.getPassword()))
                .addItemsItem(new ApiUser2().name(cluster.getCloudbreakAmbariUser()).password(cluster.getCloudbreakAmbariPassword()))
                .addItemsItem(new ApiUser2().name(cluster.getDpAmbariUser()).password(cluster.getDpAmbariPassword()));
        when(usersResourceApi.readUsers2("SUMMARY")).thenReturn(oldUserList);
    }

    private void verifyClientCreation(Cluster cluster) throws ClouderaManagerClientInitException {
        verify(clouderaManagerApiClientProvider).getDefaultClient(GATEWAY_PORT, clientConfig, ClouderaManagerApiClientProvider.API_V_31);
        verify(clouderaManagerApiClientProvider)
                .getV40Client(GATEWAY_PORT, cluster.getCloudbreakAmbariUser(), cluster.getCloudbreakAmbariPassword(), clientConfig);

        verify(clouderaManagerApiClientProvider).getClouderaManagerClient(clientConfig, GATEWAY_PORT, cluster.getCloudbreakAmbariUser(),
                cluster.getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31);
    }

    private void verifyNoUsersCreated(UsersResourceApi usersResourceApi, UsersResourceApi newUsersResourceApi) throws ApiException {
        verify(usersResourceApi, never()).createUsers2(any());
        verify(newUsersResourceApi, never()).createUsers2(any());
    }

    @Test
    public void testChangeOriginalCredentialsAndCreateCloudbreakUserWhenLdapIsConfiguredAndTheGivenUserIsNotAdmin()
            throws CloudbreakException, ApiException, ClouderaManagerClientInitException {
        initTestInput("ambariUser");
        UsersResourceApi usersResourceApi = mock(UsersResourceApi.class);
        UsersResourceApi newUsersResourceApi = mock(UsersResourceApi.class);
        ToolsResourceApi toolsResourceApi = mock(ToolsResourceApi.class);
        ApiClient newApiClient = mock(ApiClient.class);
        ApiUser2List oldUserList = createApiUser2List();

        when(clouderaManagerApiClientProvider.getDefaultClient(GATEWAY_PORT, clientConfig, ClouderaManagerApiClientProvider.API_V_31)).thenReturn(apiClient);
        when(clouderaManagerApiFactory.getUserResourceApi(apiClient)).thenReturn(usersResourceApi);

        when(usersResourceApi.readUsers2("SUMMARY")).thenReturn(oldUserList);

        when(clouderaManagerApiFactory.getToolsResourceApi(any())).thenReturn(toolsResourceApi);
        when(toolsResourceApi.echo("TEST")).thenReturn(new ApiEcho());

        when(clouderaManagerApiClientProvider.getClouderaManagerClient(clientConfig, GATEWAY_PORT, stack.getCluster().getCloudbreakAmbariUser(),
                stack.getCluster().getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31)).thenReturn(newApiClient);
        when(clouderaManagerApiFactory.getUserResourceApi(newApiClient)).thenReturn(newUsersResourceApi);

        underTest.changeOriginalCredentialsAndCreateCloudbreakUser(LDAP_ENABLED);

        verify(clouderaManagerApiClientProvider).getDefaultClient(GATEWAY_PORT, clientConfig, ClouderaManagerApiClientProvider.API_V_31);
        verify(usersResourceApi).readUsers2("SUMMARY");
        verify(clouderaManagerApiClientProvider, times(2)).getClouderaManagerClient(clientConfig, GATEWAY_PORT, stack.getCluster().getCloudbreakAmbariUser(),
                stack.getCluster().getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31);

        ArgumentCaptor<ApiUser2List> createUserCaptor = ArgumentCaptor.forClass(ApiUser2List.class);
        verify(usersResourceApi, times(2)).createUsers2(createUserCaptor.capture());
        List<ApiUser2List> createdUsers = createUserCaptor.getAllValues();
        assertEquals(stack.getCluster().getCloudbreakAmbariUser(), createdUsers.get(0).getItems().get(0).getName());
        assertEquals(stack.getCluster().getCloudbreakAmbariPassword(), createdUsers.get(0).getItems().get(0).getPassword());
        assertEquals(stack.getCluster().getDpAmbariUser(), createdUsers.get(1).getItems().get(0).getName());
        assertEquals(stack.getCluster().getDpAmbariPassword(), createdUsers.get(1).getItems().get(0).getPassword());

        ArgumentCaptor<ApiUser2List> createNewUserCaptor = ArgumentCaptor.forClass(ApiUser2List.class);
        verify(newUsersResourceApi).createUsers2(createNewUserCaptor.capture());
        List<ApiUser2List> createdNewUser = createNewUserCaptor.getAllValues();
        assertEquals(stack.getCluster().getUserName(), createdNewUser.get(0).getItems().get(0).getName());
        assertEquals(stack.getCluster().getPassword(), createdNewUser.get(0).getItems().get(0).getPassword());

        verify(newUsersResourceApi).deleteUser2(ADMIN);
    }

    @ParameterizedTest(name = "{0}")
    @MethodSource("testRotateHostCertificatesWhenBatchExecuteSucceededDataProvider")
    public void testRotateHostCertificates(String testCaseName, String subAltName) throws Exception {
        // GIVEN
        initTestInput("user");
        when(clouderaManagerApiClientProvider.getClouderaManagerClient(clientConfig, GATEWAY_PORT, stack.getCluster().getCloudbreakAmbariUser(),
                stack.getCluster().getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31)).thenReturn(apiClient);
        HostsResourceApi hostsResourceApi = mock(HostsResourceApi.class);
        BatchResourceApi batchResourceApi = mock(BatchResourceApi.class);
        when(clouderaManagerApiFactory.getHostsResourceApi(apiClient)).thenReturn(hostsResourceApi);
        when(clouderaManagerApiFactory.getBatchResourceApi(apiClient)).thenReturn(batchResourceApi);

        ApiHostList hostList = createApiHostList();
        when(hostsResourceApi.readHosts(null, null, "SUMMARY")).thenReturn(hostList);
        ArgumentCaptor<ApiBatchRequest> batchRequestArgumentCaptor = ArgumentCaptor.forClass(ApiBatchRequest.class);
        when(batchResourceApi.execute(batchRequestArgumentCaptor.capture())).thenReturn(createApiBatchResponse(hostList, true));
        when(clouderaManagerPollingServiceProvider.startPollingCommandList(eq(stack), eq(apiClient), any(List.class), eq("Rotate host certificates")))
                .thenReturn(new ExtendedPollingResult.ExtendedPollingResultBuilder().success().build());
        // WHEN
        underTest.rotateHostCertificates(null, null, subAltName);
        // THEN no exception
        verifyBatchRequest(batchRequestArgumentCaptor.getValue(), subAltName, "/api/v31/hosts/host-1/commands/generateHostCerts",
                "/api/v31/hosts/host%40company.com%202/commands/generateHostCerts");
    }

    private void verifyBatchRequest(ApiBatchRequest batchRequest, String subAltName, String... urlsExpected) {
        assertThat(batchRequest).isNotNull();
        List<ApiBatchRequestElement> batchRequestElements = batchRequest.getItems();
        assertThat(batchRequestElements).isNotNull();
        if (urlsExpected == null) {
            assertThat(batchRequestElements).isEmpty();
        } else {
            assertThat(batchRequestElements).hasSize(urlsExpected.length);
            for (int i = 0; i < urlsExpected.length; i++) {
                ApiBatchRequestElement batchRequestElement = batchRequestElements.get(i);
                assertThat(batchRequestElement).isNotNull();
                assertThat(batchRequestElement.getUrl()).isEqualTo(urlsExpected[i]);
                ApiGenerateHostCertsArguments apiGenerateHostCertsArguments = (ApiGenerateHostCertsArguments) batchRequestElement.getBody();
                if (subAltName == null) {
                    assertNull(apiGenerateHostCertsArguments.getSubjectAltName());
                } else {
                    assertThat(apiGenerateHostCertsArguments.getSubjectAltName().get(0)).isEqualTo(subAltName);
                }
            }
        }
    }

    static Object[][] testRotateHostCertificatesWhenBatchExecuteSucceededDataProvider() {
        return new Object[][]{
                // testCaseName subAltName
                {"subAltName=null", null},
                {"subAltName!=null", "DNS:gateway.company.com"},
        };
    }

    static Object[][] testRotateHostCertificatesWhenBatchExecuteFailedDataProvider() {
        return new Object[][]{
                // testCaseName batchResponseFactory
                {"response=null", (Function<ApiHostList, ApiBatchResponse>) hostList -> null},
                {"success=null", (Function<ApiHostList, ApiBatchResponse>) hostList -> createApiBatchResponse(hostList, false).success(null)},
                {"items=null", (Function<ApiHostList, ApiBatchResponse>) hostList -> new ApiBatchResponse().success(true).items(null)},
                {"success=false", (Function<ApiHostList, ApiBatchResponse>) hostList -> createApiBatchResponse(hostList, false)},
        };
    }

    @ParameterizedTest(name = "{0}")
    @MethodSource("testRotateHostCertificatesWhenBatchExecuteFailedDataProvider")
    public void testRotateHostCertificatesWhenBatchExecuteFailed(String testCaseName, Function<ApiHostList, ApiBatchResponse> batchResponseFactory)
            throws Exception {
        // GIVEN
        initTestInput("user");
        when(clouderaManagerApiClientProvider.getClouderaManagerClient(clientConfig, GATEWAY_PORT, stack.getCluster().getCloudbreakAmbariUser(),
                stack.getCluster().getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31)).thenReturn(apiClient);
        HostsResourceApi hostsResourceApi = mock(HostsResourceApi.class);
        BatchResourceApi batchResourceApi = mock(BatchResourceApi.class);
        when(clouderaManagerApiFactory.getHostsResourceApi(apiClient)).thenReturn(hostsResourceApi);
        when(clouderaManagerApiFactory.getBatchResourceApi(apiClient)).thenReturn(batchResourceApi);
        ApiHostList hostList = createApiHostList();
        when(hostsResourceApi.readHosts(null, null, "SUMMARY")).thenReturn(hostList);
        ArgumentCaptor<ApiBatchRequest> batchRequestArgumentCaptor = ArgumentCaptor.forClass(ApiBatchRequest.class);
        when(batchResourceApi.execute(batchRequestArgumentCaptor.capture())).thenReturn(batchResponseFactory.apply(hostList));
        // WHEN
        ClouderaManagerOperationFailedException exception = assertThrows(ClouderaManagerOperationFailedException.class,
                () -> underTest.rotateHostCertificates(null, null, null));
        // THEN exception
        assertThat(exception).hasMessageStartingWith("Host certificates rotation batch operation failed: ");
    }

    @Test
    public void testRotateHostCertificatesWhenPollingCancelled() throws Exception {
        // GIVEN
        initTestInput("user");
        when(clouderaManagerApiClientProvider.getClouderaManagerClient(clientConfig, GATEWAY_PORT, stack.getCluster().getCloudbreakAmbariUser(),
                stack.getCluster().getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31)).thenReturn(apiClient);
        HostsResourceApi hostsResourceApi = mock(HostsResourceApi.class);
        BatchResourceApi batchResourceApi = mock(BatchResourceApi.class);
        when(clouderaManagerApiFactory.getHostsResourceApi(apiClient)).thenReturn(hostsResourceApi);
        when(clouderaManagerApiFactory.getBatchResourceApi(apiClient)).thenReturn(batchResourceApi);
        ApiHostList hostList = createApiHostList();
        when(hostsResourceApi.readHosts(null, null, "SUMMARY")).thenReturn(hostList);
        ArgumentCaptor<ApiBatchRequest> batchRequestArgumentCaptor = ArgumentCaptor.forClass(ApiBatchRequest.class);
        when(batchResourceApi.execute(batchRequestArgumentCaptor.capture())).thenReturn(createApiBatchResponse(hostList, true));
        when(clouderaManagerPollingServiceProvider.startPollingCommandList(eq(stack), eq(apiClient), any(List.class), eq("Rotate host certificates")))
                .thenReturn(new ExtendedPollingResult.ExtendedPollingResultBuilder().exit().build());
        // WHEN
        CancellationException exception = assertThrows(CancellationException.class, () -> underTest.rotateHostCertificates(null, null, null));
        // THEN exception
        assertThat(exception).hasMessage("Cluster was terminated during rotation of host certificates");
    }

    @Test
    public void testRotateHostCertificatesWhenPollingTimedOut() throws Exception {
        // GIVEN
        initTestInput("user");
        when(clouderaManagerApiClientProvider.getClouderaManagerClient(clientConfig, GATEWAY_PORT, stack.getCluster().getCloudbreakAmbariUser(),
                stack.getCluster().getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31)).thenReturn(apiClient);
        HostsResourceApi hostsResourceApi = mock(HostsResourceApi.class);
        BatchResourceApi batchResourceApi = mock(BatchResourceApi.class);
        when(clouderaManagerApiFactory.getHostsResourceApi(apiClient)).thenReturn(hostsResourceApi);
        when(clouderaManagerApiFactory.getBatchResourceApi(apiClient)).thenReturn(batchResourceApi);
        ApiHostList hostList = createApiHostList();
        when(hostsResourceApi.readHosts(null, null, "SUMMARY")).thenReturn(hostList);
        ArgumentCaptor<ApiBatchRequest> batchRequestArgumentCaptor = ArgumentCaptor.forClass(ApiBatchRequest.class);
        when(batchResourceApi.execute(batchRequestArgumentCaptor.capture())).thenReturn(createApiBatchResponse(hostList, true));
        when(clouderaManagerPollingServiceProvider.startPollingCommandList(eq(stack), eq(apiClient), any(List.class), eq("Rotate host certificates")))
                .thenReturn(new ExtendedPollingResult.ExtendedPollingResultBuilder().timeout().build());
        // WHEN
        ClouderaManagerOperationFailedException exception = assertThrows(ClouderaManagerOperationFailedException.class,
                () -> underTest.rotateHostCertificates(null, null, null));
        // THEN exception
        assertThat(exception).hasMessage("Timeout while Cloudera Manager rotates the host certificates.");
    }

    @Test
    public void testRotateHostCertificatesWhenCMApiCallFailed() throws Exception {
        // GIVEN
        initTestInput("user");
        when(clouderaManagerApiClientProvider.getClouderaManagerClient(clientConfig, GATEWAY_PORT, stack.getCluster().getCloudbreakAmbariUser(),
                stack.getCluster().getCloudbreakAmbariPassword(), ClouderaManagerApiClientProvider.API_V_31)).thenReturn(apiClient);
        HostsResourceApi hostsResourceApi = mock(HostsResourceApi.class);
        BatchResourceApi batchResourceApi = mock(BatchResourceApi.class);
        when(clouderaManagerApiFactory.getHostsResourceApi(apiClient)).thenReturn(hostsResourceApi);
        when(clouderaManagerApiFactory.getBatchResourceApi(apiClient)).thenReturn(batchResourceApi);
        when(hostsResourceApi.readHosts(null, null, "SUMMARY")).thenThrow(new ApiException("Serious problem"));
        // WHEN
        CloudbreakException exception = assertThrows(CloudbreakException.class, () -> underTest.rotateHostCertificates(null, null, null));
        // THEN exception
        assertThat(exception).hasMessage("Can't rotate the host certificates due to: Serious problem");
    }

    private Stack createStack(String userName) {
        Stack stack = new Stack();
        stack.setGatewayPort(GATEWAY_PORT);
        stack.setCluster(createCluster(userName));
        return stack;
    }

    private Cluster createCluster(String userName) {
        Cluster cluster = new Cluster();
        cluster.setCloudbreakUser("cloudbereak");
        cluster.setCloudbreakPassword("cloudbereak123");
        cluster.setDpUser("dp");
        cluster.setDpPassword("dp123");
        cluster.setUserName(userName);
        cluster.setPassword("admin123");
        return cluster;
    }

    private ApiUser2List createApiUser2List() {
        ApiUser2List apiUser2List = new ApiUser2List();
        ApiUser2 admin = new ApiUser2();
        admin.setName(ADMIN);
        admin.setAuthRoles(Collections.singletonList(new ApiAuthRoleRef()));
        apiUser2List.setItems(List.of(admin));
        return apiUser2List;
    }

    private ApiHostList createApiHostList() {
        ApiHostList apiHostList = new ApiHostList();
        ApiClusterRef clusterRef = new ApiClusterRef();
        ApiHost apiHost1 = new ApiHost().hostId("host-1").clusterRef(clusterRef);
        ApiHost apiHost2 = new ApiHost().hostId("host@company.com 2").clusterRef(clusterRef);
        apiHostList.items(List.of(apiHost1, apiHost2));
        return apiHostList;
    }

    private static ApiBatchResponse createApiBatchResponse(ApiHostList hostList, boolean success) {
        List<ApiBatchResponseElement> responseElements = hostList.getItems().stream().map(req -> {
            ApiCommand apiCommand = new ApiCommand().active(Boolean.FALSE).id(BigDecimal.ONE).hostRef(new ApiHostRef().hostId(req.getHostId()));
            return new ApiBatchResponseElement().response(JsonUtil.writeValueAsStringSilent(apiCommand));
        }).collect(Collectors.toList());
        return new ApiBatchResponse().success(success).items(responseElements);
    }

}

redpajama_set_name: RedPajamaGithub


ALT-MU Creative offers the same creative marketing services you would expect from a creative marketing agency - the difference? We are a collective community of talented freelancers with the contacts and experience to deliver much much more!
Want to make your own magazine or ebook? Our team of Copywriters and Magazine Designers can transform your content into a magazine or ebook. This can give your brand a boost with new audiences and help you engage with your community in new and innovate ways.
At ALT-MU Creative we have a huge freelance network that we can tap into on your behalf, which means we can recruit the best team for the job on a project-by-project basis. Whether you are after a full music marketing strategy or simply looking for support on a one-off music marketing campaign.
We have a network of talented web designers and developers that can be assigned individually to your project or included in your ALT-MU Creative team. Whether you want a unique website built or help setting up a premium Wordpress theme, we offer the support and training you need to get your business off the ground.
There were 866,000 creative people working in UK non-creative industries in 2012 according to the Department for Media, Culture, and Sport. A number set to rise as more companies strive to conquer the increasing demand for high quality content over old-school linkbuilding techniques.
This probably means that there are thousands of creatives feeling suffocated and demotivated in their job at this very moment. Why? Because a traditional office environment and the average working culture is just not built for creatives. And it's not just the corporate companies that are the culprits here, there are reams of 'creative agencies' that just throw a pool table in the mix and splash their walls with graffiti and expect that to be enough. Well… it isn't.
First off – let's stop calling them customers or consumers. We are talking about people here. Living breathing souls just like you or me. The key to writing for your audience in a way that really resonates with them is of course, to write from the heart. To write something inspiring and fresh. To talk to the reader, rather than dictate. That said, there is some intelligence you can apply to your research, that will help your content to be more successful.


text:
Delivering healthcare to women in rural Ethiopia
In a room that is bare but for a few beds, Kuzema Abba Naga is resting after giving birth hours before to her tenth child, and now she thinks, her last.
Before coming from her village to this remote and rural government health center in the Kebele district to give birth, Naga never knew it was possible to choose when or whether to have a baby.
"I am 38 years old and I had my first baby at age 15," she said. "This is my first baby for eight years."
Naga named the baby Nejat, which translates to 'liberation', after giving birth and discovering the contraception options available to her, she decides to have an IUD fitted immediately.
Lack of access to contraception in rural areas
This is the first time midwife Rewda Kedir has fitted a woman who has just had a baby with an IUD, though it is not uncommon to meet women coming from rural areas who have never heard about family planning. When they do, many are interested in it, even if they have to fight their husbands to use it or they are forced to hide it from them.
"They want contraceptives to space out their children," said Kedir.
"Sometimes their husbands don't like them coming in to get family planning, so we have to lock their appointment cards away. Their husbands want more children and some think that women who do not keep having their children will go with other men," she said.
Kuzema Abba Naga has just given birth to her tenth child and decides to be fitted with an IUD
Kedir says that most women prefer using the contraceptive implants because they feel few side effects, are long-lasting, easy and painless to have fitted and to conceal.
"Here, people believe that more kids means more wealth, and religion restricts family planning services," she said.
"Only 28 percent of women aged 15 to 49 use modern contraceptives," says Dessalegn Workineh, who manages the Family Guidance Association of Ethiopia's south west area office in Jimma.
Expanding contraceptive access in Ethiopia
With support from the Family Planning Association of Ethiopia (FGAE), who work with the Ethiopian government, clinics in remote rural areas like this one can now provide a full range of sexual and reproductive health (SRH) services for free.
Having all the products and services available and under one roof makes it easier to reach people who might really benefit from help with family planning.
In Oromia, 43 percent of women give birth at a health facility. Kedir finds a lot of women coming in for maternal and post-natal health services who she speaks to about family planning, end up staying or returning to get family planning services.
"Before, it was very difficult to persuade people to use family planning and we had to have a lot of conversations. Now, they come 45 days after delivery to speak to us about this when they get their babies immunised," she said.
Staff at the clinic also provide family counselling to try and encourage men that contraception is a good idea for the whole family.
"We tell them that continuously giving birth can affect the mother's health and might lead to maternal death, damage the uterus and lead to long-term complications," said Kedir.
A number of staff at the clinic have been trained on family planning and can answer queries and deliver services, "So when I'm not here, people can help."
"The implant procedures are better because there are newer products," said Kedir, who sits next to a handmade poster with the options for contraception glued on that still has the older, match-sized implants and the new, thinner implants.
Providing comprehensive abortion care
The clinic also provides comprehensive abortion care and for the past six years, medical abortions. This involves taking a pill rather than having vacuum aspiration or surgery, and is helping to stop women turning to unsafe abortion methods.
"Before, there was no safe abortion. People would go to traditional healers and then come here with complications like sepsis, bleeding, anaemia and toxic shock," said Kedir.
"The good thing is that the women that have [safe] abortions get proper care and the counselling and education has improved," said Kedir.
In Ethiopia, these services are vital "to save mothers from dying due to cases of unsafe abortion," says Workineh.
"Working on comprehensive abortion care reduces complications and therefore maternal mortality," he added.
Kedir says women still have to fight their husbands to get access to family planning and cases can end up in court or divorce. But the cases of complications resulting from unsafe abortion have plummeted.
"We used to see about 40 a year. Now it's one or two," she said.
Related member association
Family Guidance Association of Ethiopia
Providing a safe space for sex workers in Ethiopia


Jacqueline Eggenschwiler is a DPhil student at the University of Oxford's Centre for Doctoral Training in Cyber Security and the Faculty of Law. Her research interests include cyberspace governance and regulatory fragmentation. She holds degrees in International Affairs and Governance, International Management, and Human Rights from the University of St Gallen and the London School of Economics and Political Science.


text:
Jane Murray Photography
Exhibition – The Human Document
November 2, 2016 ~ Jane Murray	~ Leave a comment
Mead Gallery 7 Oct-10 December
Akram Zaatari: On Photography, People and Modern Times
"In his latest exhibition, Akram Zaatari offers a way of reading images collectively by looking at the lives and motivations of the photographers who made them. Assuming the role of curator, the artist selects photographs and materials from the Arab Image Foundation (AIF)—which he co-founded with Walid Raad and others in Beirut in 1997—and exhibits them alongside video recorded testimonies of the photographers themselves.
The project's primary focus is on the archive of photographer Hashem el Madani, as well as Studio Sheherazade, which el Madani established in 1953 in the Southern Lebanese city of Saida, Zaatari's hometown. A short interview with the photographer is part of the first installation On Photography People and Modern Times (2010), which includes a two-channel video. On one side, an AIF archivist is filmed in stop-motion as she handles materials from the collection; on the other, the photographers tell the stories behind the images. El Madani, whose father was Sheikh, explains that only after checking that photography was not a sin was he able to support his son's choice of profession. Other interviewees from Cairo, Alexandria, and Jerusalem discuss their individual relationship to photographic practice: a wedding photographer remembers scolding young brides for letting curls fall across their foreheads, taking the initiative to trim them off himself to better expose their faces to the camera; a snapshot photographer pours through an album of holiday pictures of ships passing along the Suez Canal and the Great Sphinx of Giza; and a collector reveals that the destruction unleashed by the Lebanese Civil War (1975–90) is what inspired him to take pictures and to start his own collection—initially stemming from his discovery of photographer Camille el Kareh's (1897–1952) early twentieth-century portraits of charismatic Northern Lebanese gang leaders in Zghorta—and has since become an obsession. A quick search on the AIF website brings up images of the smartly booted and mustachioed fighters, as well as el Kareh's series of fascinating, post-mortuary portraits of Christian families from Zghorta.
The AIF's clinical environment and the silent, diligent work of the archivist shown on the film installation's left side appears to be set in direct contrast to the domestic settings and the crowded, pre-digital studios of the people being interviewed on the right. In the comfort of a darkened room, the viewer watches both of these channels while nestled within cinema-style seating. Zaatari's appeal to our own personal experience of collecting images is what prevents the interviewees' stories from coming across as completely fictionalized, as if the gallery was actually a cinema for narrative film. While these days, online image archives have come to reflect a more pervasive desire to accumulate imagery rather than a judicious collection of visual artifacts for posterity, Zaatari's focus on everyday memories reframes powerful accounts of exile and war within the same reality, fragmenting the assumed narrative of a culture overcome by conflict.
In the gallery's second venue on Duke Street, Zaatari's comprehensive photographic and video documentation of el Madani's studio equipment—ranging from pencil stubs, to retouching brushes, to the cardboard boxes where he kept his negatives—feels overdone. Although the artist focuses his attention more generally on his subjects' drive to photograph throughout most of the exhibition, L'Enlevement (2010), a fifteen-minute video recording of an operational film projector directed at an unseen wall, represents a decidedly slighter gesture and ends up simply fetishizing the equipment. Whereas Zaatari fills vitrines with digital reproductions of the original photographs elsewhere in the gallery—asserting his indifference to the material authenticity of the historical matter itself—these instinctively diverse approaches do help to clarify his double-sided practice as both an artist and curator, even if the leap between these roles is a little bit jarring.
As el Madani and Zaatari both act as dedicated image-makers and collectors, the authorship of all the work on display is (conceptually, if not legally) shared. Life-size portraits from the "Damaged Negatives" series (2012), for example, bare the marks el Madani made by physically scratching the surface of his own negatives. Enlarging and printing these images, Zaatari creates new works from the ones that el Madani almost destroyed, the cursory slashes across them revealing the hand behind the original images. Though revived in this manner, the sitter's expression in Scratched Portrait of Mrs. Baqari, for example, seems all the more bruised for being defaced by the photographer's blade. It recalls another work not included in this exhibition, Dance to the End of Love (2011), in which Zaatari edits together YouTube clips of Arab teenagers filming themselves while they perform magic tricks, engage in dance-offs, and "drift" across desert roads in Jeeps miraculously balanced on two wheels. His confidence with these materials is enlivening. When Zaatari describes the objective of his practice as being the desire to "make records for future records," he casts the archive of Arab histories into a continuous state of becoming."
http://www.art-agenda.com/reviews/akram-zaatari%E2%80%99s-%E2%80%9Con-photography-people-and-modern-times%E2%80%9D/
Test Shoot 2.
November 2, 2016 November 2, 2016 ~ Jane Murray	~ Leave a comment
– ancient symbol of spirituality, ascension… dreams…memories
Cyanotype process
Test Process 1.
Iris Swimming
Exported stills from movie ('Iris' 2001 biographical movie based on John Bayley's account of his life with Iris Murdoch) .
The swimming scenes used throughout the movie as metaphor for memories shared. Stills modified to create more graphic (painterly) effect and to reduce noise.
AD7000 – Major Project Initial Proposal
AD7000 Objects/Memories- Ideas Development
AD7904 – Professional Development
AD7802 – Research and Context
FINAL EVALUATION – AD7803 Interrogating Practice


Is CEO Pay Ratio Disclosure Coming to Canada?
Last year, the U.S. Securities and Exchange Commission (SEC) approved a proposal that would require U.S. public companies to disclose the ratio of CEO annual compensation to median employee annual compensation. Similarly, the European Commission is proposing the adoption of rules requiring certain publicly traded companies to report CEO pay ratios.
Proposals to use and disclose vertical benchmarking metrics in the form of executive compensation ratios are, at least in part, a response to a public debate concerning growing income disparity. The United States' disparity gap ranks above the Organization for Economic Co-operation and Development (OECD) average with the average pay of American CEOs of S&P 500 companies 354 times that of the average U.S. worker in 2012. The OECD has reported that Canada's disparity gap, though less than that of the U.S., is also higher than the OECD average and growing.
The SEC initiative raises the question of whether similar disclosure requirements may be adopted by Canadian securities regulators.
The SEC's proposed rule addresses some of the concerns raised about the pay ratio provision in the Dodd-Frank Act by offering flexibility in calculating pay ratios. The proposed rule allows companies to select a methodology to calculate pay ratios that is appropriate based on the size and structure of their business and the way the company compensates employees, rather than stipulating a required calculation methodology. The rule is proposed to become effective with respect to the first fiscal year of an issuer commencing on or after the effective date of the final rule.
The proposal was subject to a public comment period which ended in December 2013. A final rule has not yet been adopted by the SEC.
This U.S. disclosure change does not appear to have been motivated by pressure from institutional investors. According to a bulletin published by Towers Watson in June 2011, the number of shareholder proposals regarding internal pay ratio disclosure in the U.S. dropped from nine in 2010 to three in 2011. The proposals that have been made have also generally received limited support. For example, the International Brotherhood of DuPont Workers made a proposal in 2011 calling for the board of directors of E. I. du Pont de Nemours to compare the compensation packages for senior executives with that provided to the lowest paid employees. The proposal received only 5.8 per cent shareholder support.
The European Commission's proposal goes further than the SEC proposal by requiring a binding vote on a wide range of sensitive remuneration benchmarks, including CEO pay ratios. European lawmakers have taken a number of recent steps to control executive awards, including banning banker bonuses if the bonus is more than twice the level of fixed pay.
The European proposal will require over 10,000 listed companies to disclose clear, comparable and comprehensive information on their remuneration policies and how they were put into practice. Company pay policies will need to indicate the maximum executive compensation, and explanations will be required as to how each company's executive team contributed to its long-term interests and sustainability. In addition, companies will need to explain how the pay and employment conditions of employees were taken into account when setting the executive pay policies, including disclosure of the ratio of CEO pay to the average employee.
The proposal is still in draft stage and is facing significant opposition. For example, Hendrik du Toit, chief executive officer of Investec Asset Management Limited, which manages US$110 billion in assets, said it would "put Europe at a disadvantage." Further, the proposal may not receive support from the United Kingdom, Germany and other member states that declined to implement the disclosure of such ratios after domestic debates over corporate governance reform. In January 2012, following responses to consultations on the reporting, regulation and structure of executive pay, the U.K. government announced a package of measures to address key issues around executive pay. This package did not include disclosure of CEO to employee pay ratios, despite several proposals to introduce such disclosure.
In Canada, executive compensation disclosure rules have historically been driven by investor demand, particularly institutional investor demand. Canadian institutional investors and asset managers have not to date voiced significant interest in the use or disclosure of executive compensation ratios. So, while disclosure of executive compensation ratios has been implemented or widely debated in various countries, there has been very little debate in Canada regarding requiring this type of disclosure.
Institutional Shareholder Services Inc. and Glass Lewis & Co., two shareholder proxy voting firms that provide advice and governance to larger institutional investors, have not expressed a position on such an initiative in their Canadian voting guidelines. Furthermore, the voting proxy guidelines of the major Canadian institutional investors, such as OMERS, Canada Pension Plan Investment Board and Caisse de dépôt et placement du Québec, do not refer to CEO pay ratios.
Stephen Erlichman of the Canadian Coalition for Good Governance (CCGG), which represents many of Canada's largest institutional investors and asset managers, expressed concern that such ratios distract from other issues around compensation. In CCGG's view, such ratios are just one measure of executive compensation and can be difficult to compare across industries and even companies, and could be a distraction from other important compensation measures. Concern has also been voiced that companies will outsource their lowest-paid jobs to push their average worker pay higher and improve their CEO pay ratios.
However, the Shareholder Association for Research & Education (SHARE), which calls itself a Canadian leader for responsible investment services for institutional investors, indicates it will support proposals that ask companies to provide shareholders with a comparison of the compensation of their executive and non-executive employees, provided the reports can be produced without undue expense or revealing confidential information, and will vote on specific proposals for companies to establish specific ratios on a case-by-case basis.
NEI Investments submitted shareholder proposals last year to the six major Canadian banks requesting disclosure of a CEO to employee pay ratio. The proposal was withdrawn given the banks' agreement to study the use of benchmarking in executive compensation. The Meridian Compensation Partners report that was commissioned by the banks concluded that when horizontal benchmarking is used properly, it provides relevant context and is an important input for committees when setting executive pay and a key input in setting pay parameters. The report also concluded that while vertical benchmarking is unlikely to be sufficient on its own to guide committees establishing executive compensation, it can provide additional context to assist decision-making.
The voting results published following the respective annual meetings of shareholders showed an overwhelming vote against the proposal, with the highest percentage of support at 18.6 per cent. The results suggest that while the measure may be supported by some retail investors and SHARE, very few institutional shareholders or asset managers endorsed these proposals. Instead, the focus in Canada of institutional shareholders and asset managers appears to be on the adoption of say-on-pay votes and pay-for-performance proposals.
The disclosure of such ratios has been raised previously in the Canadian context in relation to executive compensation disclosure. In 2011, in the course of amending Form 51-102F6 Statement of Executive Compensation, the Canadian Securities Administrators (CSA) received four comments recommending that companies be required to provide pay ratio disclosure. The CSA responded that the costs imposed on companies to provide this disclosure outweighed any benefits of disclosing the pay ratio and did not amend the form to include this disclosure in response to these comments.
Major institutional investors, their organizations such as CCGG, and their proxy advisory services have historically driven Canadian practices and requirements relating to executive compensation disclosure. Few, if any, of these are requesting that companies provide such disclosure or that the Canadian securities regulators enact a rule similar to the proposed SEC rule to require such disclosure. As a result, only Canadian dual-listed companies that do not qualify for the foreign private issuer, or other exemptions, will be required to provide such disclosure to comply with the proposed SEC rule. Given the lack of interest by Canadian institutional investors and asset managers in such disclosure, it currently appears that Canadian securities regulators will not be adopting such a requirement. Such a requirement would likely only come about as a result of a political mandate from provincial governments to do so, such as the recent Ontario government initiative with respect to the OSC proposal to require disclosure of companies' approach to the participation of women in boards and in senior management.


What on earth are you on about? This has absolutely nothing to do with South Sudan, at all. It's clear to anybody capable of rational thought that Egypt is the one that's being unreasonable and confrontational here. Now, Ethiopia will complete this dam, and Egypt should just come to terms with it.


One of the most annoying things to me is to hear a man say that stay at home moms have it "easy". It makes me want to punch the guy in the face. I know, violence is NOT the answer. The thing is though, it always seems to be dads saying this and the dads that say this always seem to be the laziest and least involved with their children.
On the flip side, it irks me to hear moms complain about how easy their husbands have to go off to work. It is as if they forgot they chose this life. If you are that miserable, throw your kid(s) in daycare and get a job. Problem solved. Now, I am not saying motherhood is a walk in the park, but it is the life I have chosen. And, I consider it an honor that I get to hang out with Connor all day. Ian actually has to wake up in the morning, go to work and function. I roll out of bed, feed Connor breakfast while drinking coffee and stay in my pajamas until 11...that sounds like the life to me! And Ian would love to be a stay at home dad. Problem is, we would have to live out of a cardboard box if I was the sole provider for the family. Sorry Ian. Plus, Ian didn't seem too keen on trying to breastfeed!
All I am trying to say is we are a team. We aren't working separately. We are working together to keep this family going. I love how involved Ian is in our family. And I love that he can provide for us and enjoys providing for us. I love watching Connor get excited when Ian gets home and am not jealous at all about that.
Its all about supporting one another, not tearing one another apart.
Its about making each other's lives easier, not harder.
Its about love, not hatred, jealousy or rage.
so true! Being home with Landon is such a privilege and I am so thankful RJ works hard so that I am able.
I hear that. Preach it sister!


Lawn & Garden Shirt has a rating of stars based on reviews.
In the garden. Do not disturb. If a bug is bugging you, then take out that turd!
Show those bugs who's boss with your official Mr. Pinch Lawn & Garden T-Shirt and send the message that you mean business!
100% Cotton. It's from a plant. Like the ones in your garden!
Limited Supply. Act while supplies last.


I am most proud of being a non-profit leader in our community. Like many in our community, I work passionately everyday to make an impact. Each day I get to see how the public library positively changes lives in Laramie, while forming fulfilling relationships with community members who clearly see the library's importance. I absolutely love my job, and I feel privileged to spend my time seeking support for a cause as important as the public library.
My primary personal development goal is to continue to seek opportunities that will best help me to put new ideas into practice and become a better director.
The philanthropic achievement I am most proud of is contributing more than 400 voluntary service hours as a youth across the state of Wyoming to earn the Gold Congressional Award Medal. This accomplishment ignited my passion for service and put me on the path to dedicate my professional life to non-profit work.
The actions of the Laramie Noon Rotary Club have made a big difference in Laramie. This year I'm proud to serve as the president of an organization that follows the motto of Service Above Self, here in our community and around the world. Each year, the Laramie Rotary Club provides local organizations and groups with needed funding and volunteer help to accomplish important community projects. The Laramie Rotary Club has made a big impact on my professional life, while allowing me to give back to the community.
Laramie has so many essential non-profits that work in harmony, with a willingness to partner with other organizations and support each other's successes. I am excited to see how these organizations continue to grow and make Laramie a better place to live, with help from a generous and encouraging community. I am also excited to see how Laramie grows and changes to meet community needs.
I became the director of the Albany County Public Library Foundation when I was just 25, so the most important help I was given as a young professional in a directorship was the advice of great mentors. My main mentor is still my board chair, John M. Burman, who has been instrumental in my development as a non-profit director. A willingness to learn and make changes, seek networking opportunities, and work with dedication and purpose have all helped me to find success.
My advice to other young professionals in Laramie would be to seek mentors that push you to be better; to get involved on boards and with civic organizations; and to work diligently and with passion to make an impact in Laramie.


text:
Vriesea nanuzae är en gräsväxtart som beskrevs av Elton Martinez Carvalho Leme. Vriesea nanuzae ingår i släktet Vriesea och familjen Bromeliaceae. Inga underarter finns listade i Catalogue of Life.

Bildgalleri

Källor

Externa länkar

Gräsordningen
nanuzae


text:
Q: What is the best way, to draw a part of an arraybuffer to the canvas? I have an ArrayBuffer, and I have a function called module.repaint, which works with the ArrayBuffer. In every redraw call, I would like to put the colors from the ArrayBuffer to the canvas.
I do it like this:
imgData.data.set(new Uint8ClampedArray(MEM, 0, siz));

But is it possible, to copy a part of the ArrayBuffer to an other faster?
Code:
var MEM = new ArrayBuffer(2*1024*1024);
var canvas, ctx, imgData, siz;

var repaint = function() {
    // module.repaint works on the arraybuffer
    module.repaint();

    imgData.data.set(new Uint8ClampedArray(MEM, 0, siz));
    ctx.putImageData(imgData, 0, 0);

    requestAnimationFrame(repaint);
};

var init = function() {
    canvas = document.getElementById('canvas');
    ctx = canvas.getContext('2d');

    siz = canvas.width*canvas.height*4;

    imgData=ctx.createImageData(canvas.width,canvas.height);

    repaint();
};

A: Note that I didn't check if the gain is important, but I can see some useful optimizations here.
First, Uint8ClampedArray is a view to the buffer, not a buffer itself, so you don't need to create it everytime. (You can also have multiple views on a single buffer)
You should also avoid using the set method of imgData.data because it copies all the data from one array to another (which is useless). Instead, you can set your Uint8ClampedArray on the constructor.
With that code, each change on MEM will automatically affect imgData because imgData.data directly points to MEM.
var MEM = new ArrayBuffer(2*1024*1024);
var canvas, ctx, imgData, siz;

var repaint = function() {
    // module.repaint works on the arraybuffer
    module.repaint();

    ctx.putImageData(imgData, 0, 0);

    requestAnimationFrame(repaint);
};

var init = function() {
    canvas = document.getElementById('canvas');
    ctx = canvas.getContext('2d');

    siz = canvas.width*canvas.height*4;

    imgData = ctx.createImageData(new Uint8ClampedArray(MEM, 0, siz), canvas.width, canvas.height);

    repaint();
};

A: If possible, refactor your module.repaint() to use an offscreen canvas instead of a pixel array.
That way you can just drawImage the offscreen canvas to the onscreen canvas--efficient because the GPU can do the blitting instead of burdening the CPU.
putImageData is slower because it involves the CPU fetching data from the pixel array, setting that data in your temp array and transferring the temp array to the onscreen imageData.  These are all activities that burden the CPU and reduce performance.


ON BOARD THE PAPAL PLANE - Pope Francis announced Wednesday he will visit Japan in November, becoming the first pontiff to do so since John Paul II nearly 40 years ago.
The Argentine pontiff has repeatedly voiced a desire to visit Japan, home to some 450,000 Roman Catholics, and around 510,000 Protestants.
But during his five-year papacy he has repeatedly spoken in admiration of the missionary work carried out by his Jesuit order to bring Christianity to Japan in the 16th century, and of the martyrs who suffered from the anti-Christian persecution that ensued.
Any papal visit to Japan would certainly include a visit to the 26 Martyrs Museum and Monument in Nagasaki at the site where 26 Christians were killed in 1597.
Visiting Nagasaki would also allow Francis to draw attention to its devastating atomic legacy.
In January last year, Francis issued a harrowing photograph taken in 1945 showing a young Japanese boy carrying his dead brother. The child, carried on the boy's back, was killed when the United States dropped the A-bomb on Nagasaki.
The mayors of Hiroshima and Nagasaki have reportedly asked Francis to visit to encourage the survivors. And Japan's bishops have been urging him to visit since he was elected, in part to honor the "hidden Christians" who kept the faith alive during decades of persecution.


CANTON, Ohio, April 26, 2018 /PRNewswire/ -- TimkenSteel (NYSE: TMST, timkensteel.com), a leader in customized alloy steel products and services, today reported first-quarter net sales of $380.8 million, compared with net sales of $309.4 million in the same quarter last year and $341.4 million in the fourth quarter of 2017. The company reported a net loss of $1.9 million or minus $0.04 per share for the first quarter of 2018, compared with a net loss of $5.3 million or minus $0.12 per share in the same quarter last year, and a net loss of $33.9 million or minus $0.76 per share in the fourth quarter of 2017.
EBITDA(1) for the first quarter was $21.3 million including $3.7 million of non-recurring costs, compared with EBITDA(1) of $17.5 million in the same quarter last year, and adjusted EBITDA(1) of $8.2 million in the fourth quarter of 2017.
"The year is off to a good start. We improved lead times, reduced past-due orders, won new business for differentiated products and realized improvements in our financial performance," said Tim Timken, chairman, CEO and president. "This year is about executing a strategy to gain advantages beyond the market recovery and set us on a path to grow. We're focused on improving the mix of products we sell, driving fair market pricing and gaining advantages from our unique set of assets. Our financial results in the first quarter are beginning to reflect the impact of this work."
First-quarter net sales increased $71.4 million or 23.1 percent year over year, and $39.4 million or 11.5 percent sequentially.
Ship tons were approximately 300,000, an increase of 7.1 percent over the first quarter of 2017 and an increase of 4.9 percent sequentially, due to strong end-market demand.
Prior-year and sequential gains were from increased volume, higher prices, and improved product mix.
Surcharge revenue of $90.7 million increased 55.6 percent from the prior-year quarter as a result of a 21 percent increase in the No. 1 Busheling Index and higher volumes. Compared with the fourth-quarter 2017, surcharge revenue increased 16.9 percent.
EBIT(1) was $2.8 million, compared with an EBIT(1) loss of $1.4 million for the same period a year ago and an adjusted EBIT(1) loss of $10.3 million for fourth-quarter 2017.
EBIT(1) improved both year over year and sequentially due to raw material spread as a result of the rising No. 1 Busheling Index, and better price/mix.
Included in first-quarter EBIT(1) is $3.7 million of non-recurring legal costs and employee benefit claims.
Melt utilization was 77 percent for the quarter driven by improved demand across all end markets, compared with 71 percent in first-quarter 2017 and 68 percent in fourth-quarter 2017.
Shipments are expected to be between 5 percent and 10 percent higher than first-quarter 2018 from improving end markets.
Net income is projected to be between $8 million and $18 million.
EBITDA is projected to be between $30 million and $40 million.
Raw material spread is expected to be a headwind of about $6 million.
2018 capital spending is projected to be $40 million.
The company will host a conference call at 9 a.m. ET on Friday, April 27, to discuss its financial performance with investors and securities analysts. The financial results and conference call materials will be available online at investors.timkensteel.com.
TimkenSteel reports its financial results in accordance with accounting principles generally accepted in the United States ("GAAP") and corresponding metrics as non-GAAP financial measures. This earnings release includes references to the following non-GAAP financial measures: EBIT, EBITDA, Adjusted EBIT and Adjusted EBITDA. These are important financial measures used in the management of the business, including decisions concerning the allocation of resources and assessment of performance. Management believes that reporting these non-GAAP financial measures is useful to investors as these measures are representative of the Company's performance and provide improved comparability of results. See the attached schedules for definitions of the non-GAAP financial measures referred to above and corresponding reconciliations of these non-GAAP financial measures to the most comparable GAAP financial measures, as well as supplemental financial data. Non-GAAP financial measures should be viewed as additions to, and not as alternatives for, TimkenSteel's results prepared in accordance with GAAP. In addition, the non-GAAP measures TimkenSteel uses may differ from non-GAAP measures used by other companies, and other companies may not define the non-GAAP measures TimkenSteel uses in the same way.
This news release includes "forward-looking" statements within the meaning of the federal securities laws. You can generally identify the company's forward-looking statements by words such as "anticipate," "believe," "could," "estimate," "expect," "forecast," "outlook," "intend," "may," "possible," "potential," "predict," "project," "seek," "target," "could," "may," "should" or "would" or other similar words, phrases or expressions that convey the uncertainty of future events or outcomes. The company cautions readers that actual results may differ materially from those expressed or implied in forward-looking statements made by or on behalf of the company due to a variety of factors, such as: deterioration in world economic conditions, or in economic conditions in any of the geographic regions in which the company conducts business, including additional adverse effects from global economic slowdown, terrorism or hostilities, including political risks associated with the potential instability of governments and legal systems in countries in which the company or its customers conduct business, and changes in currency valuations; the effects of fluctuations in customer demand on sales, product mix and prices in the industries in which the company operates, including the ability of the company to respond to rapid changes in customer demand, the effects of customer bankruptcies or liquidations, the impact of changes in industrial business cycles, and whether conditions of fair trade exist in U.S. markets; competitive factors, including changes in market penetration, increasing price competition by existing or new foreign and domestic competitors, the introduction of new products by existing and new competitors, and new technology that may impact the way the company's products are sold or distributed; changes in operating costs, including the effect of changes in the company's manufacturing processes, changes in costs associated with varying levels of operations and manufacturing capacity, availability of raw materials and energy, the company's ability to mitigate the impact of fluctuations in raw materials and energy costs and the effectiveness of its surcharge mechanism, changes in the expected costs associated with product warranty claims, changes resulting from inventory management, cost reduction initiatives and different levels of customer demands, the effects of unplanned work stoppages, and changes in the cost of labor and benefits; the success of the company's operating plans, announced programs, initiatives and capital investments (including the jumbo bloom vertical caster and advanced quench-and-temper facility), the ability to integrate acquired companies, the ability of acquired companies to achieve satisfactory operating results, including results being accretive to earnings, and the company's ability to maintain appropriate relations with unions that represent its associates in certain locations in order to avoid disruptions of business; unanticipated litigation, claims or assessments, including claims or problems related to intellectual property, product liability or warranty, and environmental issues and taxes, among other matters; the availability of financing and interest rates, which affect the company's cost of funds and/or ability to raise capital, the company's pension obligations and investment performance, and/or customer demand and the ability of customers to obtain financing to purchase the company's products or equipment that contain its products; the amount of any dividend declared by the company's Board of Directors on the company's common shares; and the overall impact of mark-to-market accounting. Additional risks relating to the company's business, the industries in which the company operates or the company's common shares may be described from time to time in the company's filings with the SEC. All of these risk factors are difficult to predict, are subject to material uncertainties that may affect actual results and may be beyond the company's control. Readers are cautioned that it is not possible to predict or identify all of the risks, uncertainties and other factors that may affect future results and that the above list should not be considered to be a complete list. Except as required by the federal securities laws, the company undertakes no obligation to publicly update or revise any forward-looking statement, whether as a result of new information, future events or otherwise.
(1) EBIT is defined as net loss before interest expense and income taxes. EBIT is an important financial measure used in the management of the business, including decisions concerning the allocation of resources and assessment of performance. Management believes that reporting EBIT is useful to investors as this measure is representative of the Company's performance.
This reconciliation is provided as additional relevant information about the Company's performance. EBIT, Adjusted EBIT, EBITDA, and Adjusted EBITDA are important financial measures used in the management of the business, including decisions concerning the allocation of resources and assessment of performance. Management believes that reporting EBIT, Adjusted EBIT, EBITDA, and Adjusted EBITDA is useful to investors as these measures are representative of the Company's performance. Management also believes that it is appropriate to compare GAAP net income (loss) to EBIT, Adjusted EBIT, EBITDA and Adjusted EBITDA.
(1) EBIT is defined as net loss before interest expense and income taxes. EBIT Margin is EBIT as a percentage of net sales.
(2) EBITDA is defined as net loss before interest expense, income taxes, depreciation and amortization. EBITDA Margin is EBITDA as a percentage of net sales.
(3) Adjusted EBIT is defined as EBIT excluding the loss from remeasurement of benefit plans.
(4) Adjusted EBITDA is defined as EBITDA excluding the loss from remeasurement of benefit plans.
This reconciliation is provided as additional relevant information about the Company's financial position. Free cash flow is an important financial measure used in the management of the business. Management believes that free cash flow is useful to investors because it is a meaningful indicator of cash generated from operating activities available for the execution of its business strategy.


When using the Site you may be asked to provide certain personal information by filling out the form, or in any other way. The data that will be asked, it is usually an e-mail address. For inquiries forms and registration on the Site you will be asked for more personal information.
We require only data that is necessary for the operation of the Service. Failure to provide the required data block the activity connected with them.
To subscribe to free newsletter you must enter the correct form of your name and e-mail address. These fields must be filled.
Data obtained in this way are added to the newsletter mailing list.
The Service reserves the right to send messages to people whose contact details are due to activities related to the Service. By this we mean information directly relating to the Service (eg, changes, promotions), not commercial messages (eg greetings, comments, etc.) and information.
Site owner is not responsible for the content of the information commercially.
The condition of cookies is that they are accepted by the browser and not removed from disk.
Using the site without changing the setting of cookies is that they will be published on your end device. You can at any time make changes to the settings for cookies.
User session Service maintenance (after logging in), so that user does not have on every page Site retype your login and password.
In accordance with Art. Paragraph 173. 1 of the Act of 16 July 2004, the Telecommunications Law (Journal of Laws of 2004 No. 171, item. 1800) note that the subject zamieszczającym on your end device is operator cookies service / site - WSP im. J. Korczaka 02-202 Warszawa ul. Złotego Smoka 20 lok. 3. Cookies posted and can also be used by the co-operator advertisers.
The content of this domain and the domain name are protected by law. Documents, articles, graphics, scripts, and other files that make up services for this domain are the propertyWSP im. J. Korczaka or are used with permission of beneficiaries.
Copying and distribution using any method of printing or electronic, is prohibited, unless otherwise agreed with the WSP im. J. Korczaka.
Individual documents published on the Site by WSP im. J. Korczaka may contain other copyright notices associated with those documents.
Although every effort is made that the information on this website as accurately as possible, WSP im. J. Korczaka is not responsible for its content. The materials may contain inaccuracies or typographical errors.


The final toy organizing decision was made one cold weekend – weather ideal for organizing. I took ALL of the children toys and placed them in the middle of the living room. The reaction was: WOOW, how many toys..and how much money spend on them. How could anyone sort this out?
But, we finally started decluttering. The plan was: first, every child could take 5 of his favorite toys and place it back in their room.
Give (donate) pile. All the baby toys, and all toys they have generally outgrown.
2. Toss pile: Broken or mismatched toys that couldn't be used anyway .
3. The give/donate pile is individual for everyone, but you should get rid of all toys not used for some time.


text:
Q: Ticks disappear in Graphics3D with Epilog Bug introduced in 10.0.0 and fixed in 10.0.2

Normally, you can enable Graphics3D to show tick marks by doing this:
Graphics3D[Sphere[], Axes -> True]

But in Mathematica version 10, when I add an Inset which contains a Grid or Column, the output looks wrong:
Graphics3D[Sphere[], Axes -> True,
 Epilog -> Inset[Column[{"a"}], {.05, .05}]]

The ticks only appear when I manually rotate the graphics or start editing the input line. But note that I produced the enclosed images here by doing Export["file.png",%] after each plot, so that this faulty display is indeed not just a notebook display problem - it leads to incorrectly exported graphics, too.
This doesn't appear to happen when the inset contains a Row instead of Column. I also see this strange behavior when doing something like this:
Plot3D[1, {x, -1, 1}, {y, -1, 1},
 Epilog -> Inset[Column[{"a"}], {.05, .05}]]

Here, you can see that the tick marks are displayed only partially!
My operating system is Mac OS X 10.8.5, and I am wondering if this is reproducible on other systems. If so, it would be nice to know how to work around this problem. The issue also goes away when the Inset only contains numbers and not strings.
Edit
I've reported this as a bug (CASE:1384605).

A: The bug is reproduced in v. 10.0.0 under Win7 x64.
A workaround:
Graphics[{Inset[Graphics3D[Sphere[], Axes -> True], Center, Center,
   Scaled[1]], Inset[Column[{"a"}], {.05, .05}]}]

A: Since the bug doesn't seem to occur when the Inset contains a Row instead of a Column or Grid, one could define the following function:
Attributes[fixInsets] = {HoldFirst};
fixInsets[plot_] :=
 ReleaseHold[
  Hold[plot] /.
   HoldPattern[Rule[Epilog, Inset[x_, y___]]] :>
    Rule[Epilog, Inset[Row[{x}], y]]
  ]

Then use it on the faulty plots like this:
Graphics3D[Sphere[], Axes -> True,
  Epilog -> Inset[Column[{"a"}], {.05, .05}]] // fixInsets

This produces the correct output. All I did was to replace the content of the Inset (when it occurs in the Epilog) by Row[{...}] wrapping that content. fixInsets doesn't modify the plot if there is no need to, and it can be appended to any 3D graphics without having to change the actual plotting commands.
Another possible work-around is to wrap the plot in Legended. For example,
Legended[
 Plot3D[1, {x, -1, 1}, {y, -1, 1}, Epilog -> Inset[Column[{"a"}]]],
 ""]

This empty legend is enough to make the tick marks appear again.

A: While searching for a possible workaround I observed another strange behaviour:
Only functions in V9 (ticks disappear in V10):
Graphics3D[Sphere[],
 Axes -> True,
 Epilog -> Inset[Style["First row\nSecond Row", 12, Bold], {.05, .05}],
 ImagePadding -> 40]

But this functions in both versions:
Graphics3D[Sphere[],
 Axes -> True,
 Epilog -> Inset["First row\nSecond Row", {.05, .05}],
 ImagePadding -> 40]


A media player is a compact personal computer or processor that controls digital displays and runs various applications on systems. Media players are small devices that can be located in in digital signage installations and systems or are operated remotely. In digital signage installations, every screen displays something unique. The media players are attached to the back of the digital display and are connected via cable. In systems, multiple screens display similar content. Media players can be operated remotely using signal distribution equipment. Remote media players are mostly rack-mounted in an IT closet.
Digital signage is an integration of signage with touch screens, beacons, and RFID technologies and sensors. It allows two-way communication with end-users via smartphones or other communication devices. Multiple types of hardware is used in every digital signage installation. The hardware helps delivering content to the screen. Typically, a digital signage system includes one or more display screens/dashboards and media players, digital signage software, and a back-end server that can handle content storage, scheduling, and user access. In several cases, the user interface and back-end server are bundled together into a product known as content management system (CMS).
End-users may create and update content quickly and with ease. They can create and schedule play lists and handle added tasks using digital signage software on a personal computer or other device such as a smartphone. Then, the digital signage media player stores and plays the digital content, which may include images, audio, documents, or video or a combination of the all these. Each media player pushes the content to the display screens according to a predefined or already set play list. The users of smartphone can interact directly with digital signage screens. For instance, they can share content on social media, play games, take part in a poll, etc.. This engagement (of end-users with media players) enhances the consumer experience and assists advertisers in understanding consumer behavior as users can now evaluate and respond as per their preferences. Recent trends in the digital signage market, such as interactivity, consumer engagement, and predictive analytics, are helping digital signage media player providers to gain insights and plan their investment accordingly.
The digital signage media player market can be segmented based on component, product, application, and region. In terms of component, the digital signage media player market can be classified into hardware and software. Based on product, the digital signage media player market can be categorized into entry level, advanced level, and enterprise level. In terms of application, the digital signage media player market can be classified into retail, public spaces, corporate offices, BFSI, transportation and tourism, education, entertainment, hospitality, and health care. Based on region, the global digital signage media player market can be segmented into North America, Europe, Asia Pacific, Middle East & Africa, and South America. North America and Europe are expected to dominate the global digital signage media player market during the forecast period.
The digital signage media player market in North America is expected to expand, owing to a rise in the use of media players for signage applications in the retail, entertainment, transportation, and BFSI sectors across the region. High demand for and increasing investments in digital signage systems and well developed infrastructure in North America are likely to further boost the digital signage media player market. Moreover, an increase in the deployment of digital signage media players across retail stores, restaurants, shopping malls, and airports is anticipated to propel the digital signage media player market in China as most of these products are imported from the country.
The digital signage media player market is characterized by intense rivalry among key players and a rise in the number of new entrants. Market players are focusing more and more on research and development in order to integrate new and advanced functions into media players. Some of the key players operating in the digital signage media player market include Advantech Co., Ltd., IBase Technology, AOpen, Inc., Brightsign LLC, IAdea, Broadsign, NEXCOM International, Inc., Onelan, Scala, HP, Visix, Inc., Broadsign, Clearone, and Barco.


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<title>org.dsngroup.broke.broker.handler</title>
<meta name="date" content="2018-01-27">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">

JavaScript is disabled on your browser.

Skip navigation links

Overview

Package

Class

Tree

Deprecated

Index

Help

Prev Package

Next Package

Frames

No Frames

All Classes

Package org.dsngroup.broke.broker.handler

This package used for dealing with channel, as a pipeline of processing.

See: Description

Class Summary

Class
Description

MqttMessageHandler

Message handler for MqttMessage.

Package org.dsngroup.broke.broker.handler Description

This package used for dealing with channel, as a pipeline of processing.

Skip navigation links

Overview

Package

Class

Tree

Deprecated

Index

Help

Prev Package

Next Package

Frames

No Frames

All Classes