Breaking down the unorthodox Sparks for Clarkson trade

In July 2013, then-Leafs General Manager Dave Nonis said of the contract he gave his big signing, David Clarkson: “I’m not worried about years six and seven”. Nonis is gone, but as it turns out, the Leafs will be worrying – two times over, about year seven, as the team has acquired his contract while pulling in an asset for backup goaltender Garret Sparks.

Given the Leafs’ cap crunch, and that Mitch Marner remains unsigned, it might seem a little absurd that they would be taking back a $5.25 million contract – especially one that is considered by many to be the worst in franchise history, and a miracle to have escaped from (sort of) to begin with. But let’s touch on a few quick points, to settle the confusion.

Toronto’s Cursed LTIR Blessing

For those of you who didn’t click that “sort of”, here’s a quick refresher on how the Leafs got out of the Clarkson deal to begin with: In early 2015, the team, realizing just how bad of a mistake they had made with his contract, took advantage of a unique proposal given to them by the Blue Jackets.

Columbus had signed Nathan Horton to a contract with very similar terms, except they didn’t insure his deal against injury. This meant that when Horton’s career ended due to a degenerative back issue, the lower-budget Blue Jackets were stuck paying over $5 million per year in cash to a player who couldn’t play, instead of the insurance company footing 80% of the bill. They felt that a struggling player at the same price was better than an unusable body. Toronto accepted the deal, shedding a roster spot and having the ability to put Horton on Long-Term Injured Reserve, should they need to.

Up until now, things have unravelled in a pretty funny way. Toronto has never needed to activate Horton’s LTIR in-season, and Clarkson ended up with the same degenerative injury – meaning that they could’ve saved over $20 million in real dollars by waiting a few more months for Clarkson’s nagging pains to get the best of him. This season was expected to be the first that Toronto would have to use Horton’s injury to get under the cap, and now they have both.

To give a simplified explanation on how LTIR works – it’s not as simple as a floating $0 cap hit on the player. In essence, you’re using your injured players to buy down cap space at the time that they’re placed on it.

Toronto was sitting at roughly $70.5 million in committed roster salaries without Marner signed, meaning that he would have to sign for under $7 million to avoid LTIR being used going into opening night. So, knowing that the team was going to be there anyway, Toronto was in a unique position to take on another LTIR cap dump in exchange for an asset.

The Leafs also have a slight, unlikely to be used benefit in having that second injured player on the cap. Should Marner’s negotiations bleed into the season, having Clarkson on the roster will allow them to build a bigger buffer to slot him in later. Toronto would essentially build a barebones opening day roster that includes Clarkson and Horton as a part of it to get as close to the ceiling as possible, place both of them on LTIR to get that buy-back, and then repopulate the team with more room to sign Marner than if they just did this with Horton.

Vegas, on the other hand, were in a position where the team would have been able to exceed the cap with Clarkson’s LTIR, but shedding his contract would be enough to get them under it cleanly with a full roster (Nikita Gusev notwithstanding). This wasn’t quite a situation where the Golden Knights were desperate to get rid of that deal, but doing so gave them a little bit of a boost – hence the sweetener not being as massive as we’ve seen in some other cap dump deals. Vegas are effectively shedding $1 million in cap space while Toronto is gaining $0 – it’s hardly a case of $5.3 in, $5.3 out.

A Potentially Forced Hand

So this brings us to the meat of this trade that the ability to take on Clarkson, his $5.2 million in cap hit, and ~$1 million in real dollars facilitated, with the team sending Garret Sparks to Vegas in exchange for a fourth-round pick.

From a pure value perspective, it seems about right; non-starting goaltenders rarely get moved for more than a mid-late round pick, and Sparks, as many Leafs fans will tell you, did not live up to his historic 2017/18 AHL season with his performance as the big club’s backup last year.

In 20 games last year, the 26-year-old netminder posted an 8-9-1 record, attached to a 0.902 save percentage and 3.15 goals against average. The process to get there was complicated, too – a bloodbath of a debate about who should get the backup job in the preseason, two other goaltenders lost to waivers to make it happen, a concussion, and some unfortunate appearances started the proverbial fire, which was further stoked by Sparks calling out his team’s need to show more emotion on the ice, a lack of delivery on his own end, and what looked a lot like an exiling at the end of the season so he could “work on his game”.

I’d imagine that his outspokenness led to that exile more than his play, because while his play wasn’t fantastic, it wasn’t terrible for a first-full-year goaltender, particularly with league-wide save percentages dipping.

Once you pull apart the numbers, it wasn’t a terrible year. For $750,000, Sparks posted an average regular and 5-on-5 save percentage for a backup, an average PK save percentage compared to the whole league, and a top-third high-danger save percentage – oddly, only really bombing on low danger shots that you’d expect most goalies to have. It certainly wasn’t bad enough to feel strong emotions about one way or another, and didn’t cost them anything in the standings.

But we know that Mike Babcock’s lack of patience with attitudes that don’t mesh with his is low, and his lenience with backup goaltenders is even lower – the combination of Sparks’ outspokenness and statistical mediocrity likely dug his proverbial grave. To add some urgency to the management side, the team was able to retain 2018/19 Marlies starter Michael Hutchinson at an even lower NHL cap hit than Sparks’ ($700,000 – even $50,000 matters this year!), and have also signed Michal Neuvirth to a PTO as a fallback.

Realistically, I’d imagine this was a case of Babcock not wanting Sparks back, and management not seeing much value in fighting that specific war, given that it’s a pretty low-leverage roster spot.

So Is This Good?

Honestly, it’s hard to say.

I know I’m happy for Sparks specifically, in the sense that he gets to fight Malcolm Subban for the backup role in training camp, and if it doesn’t work out, his one-way contract and non-impressive stats in the show next year might be enough to get him to clear waivers – which would put him close to his hometown with the Chicago Wolves.

I can’t help but feel like the Leafs don’t particularly get better here. Sparks has been an easy whipping boy, but he’s still the youngest of their viable options, and still had promising aspects to his game – I can’t help but feel that he’s still got a shot in the NHL, and it would have been nice to see him do it here. I don’t think a fourth-round pick really moves the needle compared to the potential upside of him rebounding.

With that said, the pressures of the cap, the scrutiny of the public, and the skepticism of the coach made this a likely avenue, so it’s about as sensible of a move as any. Taking advantage of that Clarkson contract for a second, convoluted way is admittedly pretty hilarious and it’s a shrewd way to use unclaimable cap space. The insurance if Marner spills into the season helps too.

It’s one of those moves that feels practically smart, but not quite right all the same. Odds are, though, that it’ll have little consequence on the grand scheme of things, so perhaps the best plan is to enjoy the absurdity for what it is.

Liked it? Take a second to support The Faceoff Circle on Patreon!


package com.mg.axechen.wanandroid.base

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.support.v4.app.Fragment
import com.mg.axechen.wanandroid.utils.Contacts
import java.lang.ref.WeakReference

/**
 * Created by AxeChen on 2018/4/9.
 */
open class BaseFragment : Fragment() {

    private var receiver: MyLoginStatusReceiver? = null

    override fun onResume() {
        super.onResume()
        changeThemeRefresh()
    }

    protected fun registerLoginStatusReceiver() {
        receiver = MyLoginStatusReceiver(this)//广播接受者实例
        val intentFilter = IntentFilter()
        intentFilter.addAction(Contacts.LOGIN_SUCCESS)
        intentFilter.addAction(Contacts.COLLECT_STATUS)
        activity.registerReceiver(receiver, intentFilter)
    }

    /**
     * 修改主题之后，onResume刷新特定的控件
     */
    open fun changeThemeRefresh() {
    }

    /**
     * 登录状态广播接收
     */
    class MyLoginStatusReceiver(fragment: BaseFragment) : BroadcastReceiver() {

        private var weakFragment: WeakReference<BaseFragment>? = null

        init {
            weakFragment = WeakReference(fragment)
        }

        override fun onReceive(context: Context?, intent: Intent?) {
            var fragment = weakFragment?.get()
            if (Contacts.LOGIN_SUCCESS == intent?.action) {
                fragment?.loginSuccess()
            } else if (Contacts.COLLECT_STATUS == intent?.action) {
                var isCollect = intent.getBooleanExtra(Contacts.INTENT_IS_COLLECT, false)
                var id = intent.getIntExtra(Contacts.COLLECT_ID, 0)
                fragment?.collectStatusChange(id, isCollect)
            }
        }

    }

    open fun loginSuccess() {

    }

    open fun collectStatusChange(id: Int, isCollect: Boolean) {

    }

    override fun onDestroy() {
        super.onDestroy()
        if (receiver != null) {
            activity?.unregisterReceiver(receiver)
        }
    }

}


Q:

No suitable drivers found

I am new in Netbeans. I am working on a project on java using Netbeans IDE and mysql sever in Ubuntu. My database is successfully build . I have created the JFrame of a login page which is connected to the database. Page is running successfully,
But when I am giving the input, and clicking the button(ex,. Submit), its giving the following error
No suitable driver found for jdbc:derby://localhost:1527/ganDb[on APP]

And a pop up is coming saying:
java.lang.NullPointerException

A:

The library is not in your project classpath, you can right-click in the project an then in "properties" next in "libraries" and click in add library and find .jar file that contain de driver and add them to your project.
If you are using jpa you can see in "services"->"databases" that your driver is in it and the connection have been initialized.


Q:

How to change tab while progress bar is being updated in QT

I have a Qwidget with a few tabs. In one of the tabs, after clicking a button, a function starts processing data and updates a progress bar.
I'd like to be able to change tabs while this process is running, currently it does'nt let me do so. Any idea?

A:

(1) You must use a modeless progressdialog insteal of modal one. Practically, the main event loop must get the control to allow user interaction.
http://www.bogotobogo.com/Qt/Qt5_QProgressDialog_Modal_Modeless_QTimer.php
(2) You should put your data processing function to worker thread and invoke a progress dialog update to main UI thread from that. That way your task would not block UI, so you could interact with the window (like changing tab) meanwhile.

Qt also provides means to implement this, you might want to refer to:

QFuture, QtConcurrent::run(): run a task in separate thread.
QFutureWatcher: help monitor the progress of a task running in worker thread.
Example:
http://doc.qt.io/qt-5/qtconcurrent-progressdialog-example.html


Warning for the zoophobic: this item is about Caenorhabditiselegans – a free-living, transparent nematode {‘roundworm’ –sometimes known as ‘the Arabidopsis of animal biology’ [that’s Arabidopsis (frequently described as ‘the fruit fly of plant biology’) and fruit fly – Drosophila – which in its turn is occasionally referred to as the ‘maize of zoology’…]}. Enough, already! The point I’m trying to make is that each biological discipline has its own ‘model species’, which its devotees believe will illuminate the whole of biology (or something ambitious and worthy like that). As botanists we are used to stories about Arabidopsis thaliana (thale cress as they are known) – our own general-purpose, all-singing, all-dancing, technicolor, typical flowering plant. Well, in the interests of broadening botanists’ appreciation of non-plant disciplines, I thought it useful to mention the worm-like creature that is serving as a model for many facets of animal biology. However, although generally a good model, C. elegans also poses puzzles. For example, it is known that it could protect itself from viral attack using RNA interference (RNAi), but, since no natural virus capable of infecting C. elegans had ever been described, why does it have innate antiviral defences? Well, seek and ye shall find: lo and behold, Marie-Anne Félix et al. have just described natural viruses that will infect this model nematode (PLoS Biology9: e1000586; doi:10.1371/journal.pbio.1000586), which should permit identification and study of other host mechanisms that counter viral infection. So, what’s the French… err plant… connection? The viruses were isolated from… an apple in an orchard (near Paris). Which proves the old adage that ‘an apple a day keeps the doctor at play’. From a ‘rotten’ apple to a good one now. Steven Kunkel and colleagues have discovered that ursolic acid (3-b-hydroxy-urs-12-en-28-oic acid, also known as urson, prunol, and malol) reduces muscle atrophy (‘muscle wasting’) and promotes muscle growth in mice (Cell Metabolism13: 627–638, 2011). Furthermore, ursolic acid (UA) – a pentacyclic triterpene – also reduces fat, blood sugar levels, cholesterol and triglycerides, which led the team to suggest that it may also be useful for treating human metabolic disorders such as diabetes. Intriguingly, delving deeper on the Wikipedia site for the compound one finds that UA ‘has been found to reduce muscle atrophy and to stimulate muscle growth in mice’. Which isn’t to say that the Kunkel et al. paper isn’t news, it‘s just that Wikipedia cites that article for that statement (emphasising how up-to-date Wikipedia can be). More surprisingly, a co-citation for that claim is a Science Daily news item, itself probably based upon a press release about the Cell Metabolism paper. But, and even more surprising, is the statement about large amounts of UA being present in apple peel (hence this Plant Cuttings item), which is attributed to the UK’s Daily Mail, a so-called tabloid newspaper, in its item about… the Kunkel et al. article. It all gets a little circular (which is probably what newspapers ‘evolved’ from in the first place), but is an argument for caution in the use of Wikipedia as a primary source. Not to be outdone, CSIRO Plant Industry (Australia) scientists Ming-Bo Wang and Neil Smith have made a breakthrough in understanding how viruses infect plants. They find that the distinctive yellowing that accompanies infection by Cucumber Mosaic Virus (CMV) is due to a special type of viral particle (a ‘satellite’) ‘slicing a gene that makes chlorophyll’. This work should help us better understand how viruses cause diseases in plants – and potentially in animals and humans (and even model nematodes..?).


GBPJPY should rebound down soon

GBPJPY currency pair is trading higher than 55 Moving Average on M15 timeframe so we are considering a downward movement for this currency pair from the level of 183.537 on US stock trading session until 17:00 GMT today.


Endogenous anticonvulsant substance in rat cerebrospinal fluid after a generalized seizure.
Cerebrospinal fluid taken from rats subjected to electroshock-induced seizures and injected into the cerebral ventricles of rats that had not been shocked increased the seizure threshold of the recipients. The anticonvulsant activity of the donor cerebrospinal fluid was antagonized by opioid antagonists and enhanced by peptidase inhibitors. These results suggest the existence of an endogenous anticonvulsant substance in rat cerebrospinal fluid, possibly opioid in nature, which is activated as a consequence of a seizure and which may play a critical role in postseizure inhibition.


Now that the initial wave of disputes over the major overhaul of Saudi government that occurred on April 29 settled down, one can take a closer look at what these changes can actually mean for the future of the region. As you must already know, early in the morning on April 29 Saudi media sources started distributing an urgent message that Prince Muqrin bin Abdulaziz al-Saud has been deposed as “second to the king”, allegedly on “his own request”, while Prince Mohammed bin Nayef was appointed Crown Prince along with retaining his post of the Minister of Interior. At the same time he became the deputy chairman of the Council of Ministers, that is traditionally headed by the monarch, along with getting the position of chairman of the new Council for Political and Security Affairs. The position of Deputy Crown Prince, that was previously occupied by Prince Mohammed bin Nayef, took king’s son Mohammed bin Salman, while retaining the post of Defense Minister and the second deputy chairman of the Council of Ministers. He will also chair the Council for Economic and Development Affairs.

The problem is that these two figures are not sons of the founder of Saudi kingdom King Abdulaziz Ibn Saud, they are grandchildren. Thus, by forcing Abdulaziz’s son Muqrin to step down, King Salman has broken the tradition of transfer of power from brother to brother. It means that once King Salman perishes the throne will be inherited by the third generation of heirs of Al Saud, that are significantly younger that the representatives of the second generation. Crown Prince is “only” 55 years old, while his deputy is considerably younger – he’s in his 30’s.

Another important point is that those princes head security departments, therefore Saudi royal family members are hinted that any protests against the latests royal decrees will be suppressed by brute force. Quite expectedly, some political figures have already expressed their dissatisfaction with the fact that the Deputy Crown Prince is not just king’s son, he’s the youngest Defense Minister in Saudi history.

In addition, the appointed Crown Prince is known as an ardent fighter against all terrorism in general and Al-Qaeda in particular, since he has barely survived an attempted assassination orchestrated by the members of this group. This fact is of crucial importance, since all the previous security officials were known for their ties with international terrorist organizations. Moreover, Prince Turki bin Faisal Al Saud, a director general of Saudi intelligence from 1977 to 2001, is considered to be the founder of the Mujahideen movement that was brought up to fight Soviets troops in Afghanistan. He is also believed to be the mastermind of the rise of Chechen militants that caused a lot of troubles to Russia in mid 90’s. On March 16, 2015, Prince Turki in an interview with the BBC made a blatant statement that Saudi Arabia may abandon its nuclear-free status if the “mediator” will fail in persuading Iran to ban uranium enrichment.

As for another former security official – Prince Bandar, after spending 22 years as Saudi Arabia ambassador to Washington, in 2005 he became the General Secretary of National Security Council, and in just seven years the head of Saudi intelligence. It is no coincidence that his appointment was followed by a wave of “color revolutions” in the Arab world, along with the creation of such terrorist groups as the ISIL and Jabhat al-Nusra. He was actively encouraging extremism in the Russian North Caucasus, including the organization of the terrorist attacks in Volgograd on the very eve of Sochi Olympics. He made an attempt to blackmail and later bribe Russia so it would abandon its support of Syria and Iran.

Apparently, Riyadh is going to finally turn its back on terrorist organizations in order to achieve its political goals by more conventional means.

The appointment of two young princes as heirs to the throne has also confirmed that the Sudairi branches of the royal family are gaining more strength. Al-Sudairi – is the powerful Arabian family that occupies an important position in the political system of Saudi Arabia due to its connections to the royal dynasty of Al Saud. Since 19th century Al Saud princes are marrying Al-Sudairi girls, so Sudairis gave birth to a great many of Saudi royal family members, even the founder of the Saudi kingdom Abdulaziz Ibn Saud was a son of a Sudairi. It is obvious that this change was hard to implement since the balance of powers between Saudi clans was ultimately broken by these appointments. The clan of the deceased King Abdullah, that has no connections with the Sudairi family, has lost most of it influence overnight.

Another landmark in the Saudi policy is the resignation of Saud bin Faisal bin Abdulaziz Al Saud that occupied the position of Minister of Foreign Affairs since 1975, he was replaced by “a rising star of the Saudi diplomacy” Adel al-Jubeir. For the second time in Saudi history one of the key positions is occupied by a member “of the educated class” with no royal blood in his veins wahtsoever. It seems like a new trend – to promote offsprings of the wealthy educated families to the highest ranks of Saudi policy, since King Salman has allowed commoners to run ministers of labor, economy, planning, and public health. It is clear that Salman started infusing the political system of the country with fresh blood under the pressure of internal and external challenges, otherwise the state that is still run by the Wahhabi code of the 18th century will not last for long. But it will take some time before commoners will get any real political power.

The now reinforced government of Saudi Arabia, where all the power is consolidated in the hands of a single group, will have to face a long list of problems in foreign policy, domestic affairs and economic development. The first and foremost is in the need to distance itself from conflicts in Syria and Iraq, that Saudi Arabia had been fueling for a long time, along with stopping military aggression against Yemen without losing face in front of its Arab allies. King Salman will have to find a way of saving Egypt from total disintegration and collapse, while establishing normal relations with all the GCC partners. But what is even more important for the KSA well-being is the adoption of a new policy towards the United States, that is clearly determined to depart from the Middle East. Today Washington believes that is no longer bound by its obligations to protect Saudi Arabia anymore. In the nearest future Riyadh must attempt to seek reconciliation with Moscow, since its bilateral relations with Russia have hit an all time low due to a number of unfriendly and outright aggressive steps that Saudi authorities have made over the last decade. It’s no secret that without a strong partner there’s no survival for the KSA on the rapidly changing regional scene.

The primal internal goal is to maintain stability, which is badly shaken as a result of the Saudi aggression against Yemen, that is aggravated the Shiite population of the kingdom which amounts to 15% of the total population. It’s also about the time to stop dropping oil prices on the world markets, since Riyadh has lost tens of billions of dollars by selling short. As of now Saudi national economy has no means to compensate the deficit of 38 billion dollars that has made a big hole in the social budgets. The country that already had a significant number of unemployed and those living in poverty was forced to throw even more people onto the streets

All the above listed troubles can be addressed if King Salman continues showing political will. However, there is one relatively minor aspect that can jeopardize the whole grand plan – the possible confrontation between Crown Prince and his Deputy. One can not exclude such a possibility, since the king has offended a number of royal dynasty clans that may seek revenge in one form or another. Nothing is settled in the KSA, therefore Moscow can consider an option of providing assistance to Saudi Arabia, should its elites seek genuine reconciliation without any malicious intents.

Peter Lvov, Ph.D in political science, exclusively for the online magazine “New Eastern Outlook”


Q:

Dynamic Data Display Scattered DateTime Axis

I am trying to chart candlestick markers for a chart of stock prices. I have a marker for every minute of a trading day - 9:30 AM to 4:00 PM. I don't want to display empty space for 4:01 PM to 9:29 AM for each trading day. Is there a way I can remove that time span from my X axis on my graph? I want all the data to look continuous without break in flow. I am using a NumericAxis for my X axis with a TickToDateTimeLabelProvider that I created. Is there a way to change the LabelProvider to fit my needs? Or does it stretch deeper than that?
Here is my code for the LabelProvider:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;

namespace Microsoft.Research.DynamicDataDisplay.Charts {
public class TickToDateTimeLabelProvider : NumericLabelProviderBase {
    public override UIElement[] CreateLabels(ITicksInfo<double> ticksInfo) {
        var res = new TextBlock[ticksInfo.Ticks.Length];
        for (int i = 0; i < ticksInfo.Ticks.Length; ++i) {
            long l = (long)ticksInfo.Ticks[i];
            if (l < 0)
                l = 0;
            DateTime dt = new DateTime(l);
            res[i] = new TextBlock();
            res[i].Text = dt.ToString();
        }
        return res;
    }
}
}

A:

Solved this one, I ended up making my X mapping the position that the data was at in the collection, and then making a new label provider to change the positions into the DateTimes I wanted. My new label provider looks like this :
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Research.DynamicDataDisplay.Charts.Axes;
using System.Globalization;

namespace Microsoft.Research.DynamicDataDisplay.Charts {

public class TradingLabelProvider : NumericLabelProviderBase {

    private List<DateTime> m_Labels;
    public List<DateTime> Labels {
        get { return m_Labels; }
        set { m_Labels = value; }
    }

    public TradingLabelProvider(DateTime start, List<DateTime> labels) {
        Labels = labels;
    }

    public override UIElement[] CreateLabels(ITicksInfo<double> ticksInfo) {

        var ticks = ticksInfo.Ticks;
        Init(ticks);

        UIElement[] res = new UIElement[ticks.Length];
        LabelTickInfo<double> tickInfo = new LabelTickInfo<double> { Info = ticksInfo.Info };
        for (int i = 0; i < res.Length; i++) {
            tickInfo.Tick = ticks[i];
            tickInfo.Index = i;
            string labelText = "";

            if(Convert.ToInt32(tickInfo.Tick) <= Labels.Count && tickInfo.Tick >= 0) {
                labelText = Labels[Convert.ToInt32(tickInfo.Tick)].ToString();
            }

            TextBlock label = (TextBlock)GetResourceFromPool();
            if (label == null) {
                label = new TextBlock();
            }

            label.Text = labelText;
            label.ToolTip = ticks[i].ToString();

            res[i] = label;

            ApplyCustomView(tickInfo, label);
        }
        return res;
    }
}
}

This allowed me to string the days together without a space in between them to meet my requirements. I struggled trying to do this with a DateTimeAxis, with no avail.


CSR Wage Increase $11.50-12.00

Why work for Alorica Fredericksburg? Simply put, we want to make lives better one interaction at a time and to do that, we need the very best people to join us. We offer competitive wages of $11.50/hr during training and $12/hr once training is complete. Overtime opportunities are available to increase your income. Monthly bonuses just for being amazing at what you do. Bonuses in every paycheck when you refer friends and family for employment with Alorica. Full time hours. Yes, that's right, a consistent 40 hours a week. Potential for part-time hours further in your career if you seek to balance work with education or other life goals. Medical, dental, financial planning, p et insurance and tuition reimbursement benefits, for you and your family, to name a few. Paid time off for work and life balance. We think you should enjoy time away from the office. Retirement planning options (401(k)). Access to merchant discounts as an Alorica employee. We promote from within 80% of the time at our Fredericksburg site. Employee programs supporting employment, community outreach, corporate leadership, training and development, education assistance, & mentoring. Alorica offers fun, challenging opportunities to pursue your professional goals, and we want you to have fun and succeed - because when you're at your best, that's when we're at our best. Job Summary: Are you a problem solver who likes to make life better for others? As an Inbound Customer Service Representative, you will provide exemplary customer service, over the phone, offering solutions and answering questions about a product or service. You will be an advocate for our customers, showing compassion and putting yourself in their shoes to calmly resolve and de-escalate customer concerns. You won't be alone as our call centers offer a fun team environment in our state of the art facility located in Fredericksburg. This location places our multi-floor facility, built in 2017, in between Richmond and Washington, DC. A location where you can grow your career path and have fun while doing so. You'll literally be the voice of our client brand, and a positive relationship between our clients and their customers will start with you. So only the awesome need apply. Ready to start? Chat with us to begin the process now: (https://olivia.recruiting.ai/co/Alorica) Job Requirements First and foremost, you need a positive attitude and a natural willingness to want to help others We would love it if you have Inbound call center or customer service via phone experience, but we can train the right people . We require you are flexible in accepting a set schedule during our operating hours of 7am - 9pm Monday - Friday and 8am-9pm Saturday and Sundays. . We need you to be willing to work holidays when they fall within your assigned schedule We need your confident familiarity with current technology including computers, tablets, Smartphones and other cellular devices 18 years of age or older High School Graduate or GED required Ability to pass a background investigation and drug test Ability to complete a pre-employment behavioral assessment About Alorica: Alorica is an equal opportunity employer and committed to diversity in its workforce. Alorica recruits and makes all employment-related decisions based exclusively on job-related qualifications, without regard to characteristics such as race, color, national origin, religion, gender, age, marital status, disability, veteran status, citizenship status, sexual orientation, gender identity, or any other status protected by law.


MediPharm Labs Signs $35 Million Private Label Cannabis Oil Sale Agreement with Option for Additional $13.5 Million

TORONTO, Feb. 12, 2019 (GLOBE NEWSWIRE) — MediPharm Labs Corp. (TSXV: LABS) (OTCQB: MLCPF) (“MediPharm”) a leader in specialized, research-driven cannabis extraction and cannabinoid isolation, is pleased to announce that its wholly-owned subsidiary, MediPharm Labs Inc. (“MediPharm Labs” or the “Company”), has entered into a significant sales agreement with a leading Licensed Producer to supply approximately $35 million of private label purified cannabis oil concentrates. Under the terms of the agreement, the Licensed Producer will immediately purchase upfront $7.66 million of cannabis oil concentrate from MediPharm Labs’ inventory in February 2019. In addition, the Licensed Producer will purchase a minimum of $27 million of cannabis oil concentrate over a 12-month period commencing March 2019, with an option to purchase an additional $13.5 million over the same period, bringing the total potential aggregate value of the agreement to over $48 million to February 2020.

MediPharm Labs’ private label program is a high margin business for the Company, whereby it opportunistically procures dry cannabis flower and trim from its thirteen product supply partners, to produce proprietary cannabis oil concentrate products for resale globally on a private label basis. This is MediPharm Labs’ fourth private label sales agreement to date. In total, these four agreements have aggregate potential value of over $85 million in the 15-month period that commenced December 2018.

As the cannabis industry continues to rapidly grow and evolve, MediPharm Labs has quickly established itself as a dominant player and leading provider of private label cannabis oil concentrates to other Licensed Producers and branded product manufacturers. We have also demonstrated the permanent need for a specialized extraction provider to fulfill and secure the cannabis supply chain for medical and recreational consumers.

Pat McCutcheon, CEO of MediPharm Labs

With our significant first mover advantage, deep expertise, leading-edge proprietary technology to manufacture and develop high-quality cannabis oil and concentrate products at commercial scale, we have quickly been able to execute several major contracts already and continue to see robust demand for our specialized products and services and are well positioned to achieve strong revenue growth as a dominant extraction company in the cannabis industry.

As an agnostic supplier of pharmaceutical grade cannabis oil concentrates to the global cannabis industry, MediPharm Labs has demonstrated its ability to strengthen and further secure the domestic supply chain for high-demand cannabis oil. This new supply agreement, combined with a large, long-term oil supply agreement previously announced with Canopy Growth Corporation, represents less than 10% of MediPharm Labs’ annual extraction capacity of 150,000 Kg, which is currently being expanded to 250,000 Kg of annual extraction capacity, with completion expected Q2 2019.

To date, MediPharm Labs has completed four private label wholesale agreements for cannabis oil concentrate supply (including Canopy Growth Corporation); five long-term cannabis concentrate program (tolling) agreements with James E. Wagner Cultivation Corp., Emerald Health Therapeutics, Inc., INDIVA Limited, The Supreme Cannabis Company, Inc. and TerrAscend Corp. Additionally, the Company has completed bulk purchases and/or off-take agreements with thirteen Licensed Producers securing dried cannabis supply to build MediPharm’s oil inventories for private label sale. The Company also continues to make progress on new partnership agreements with additional Licensed Producers and branded product manufacturers for cannabis private label manufacturing, as well as partnerships to purchase cannabis concentrates for global export for private label and research and development.

About MediPharm Labs Corp.

Founded in 2015, MediPharm Labs is a pioneer in the cannabis industry and has the distinction of being the first company in Canada to become a licensed producer for cannabis oil production under the Access to Cannabis for Medical Purposes Regulations (ACMPR) without first receiving a cannabis cultivation licence. This expert focus on cannabis concentrates from its cGMP (current Good Manufacturing Practices) and ISO standard-built clean rooms and critical environments laboratory, allows MediPharm Labs to work with its established, Health Canada-approved cultivation partners to produce pharmaceutical-grade cannabis oil with a competitive advantage. MediPharm Labs is research-driven and focused on downstream secondary extraction methodology, distillation, and cannabinoid isolation and purification. MediPharm Labs provides B2B contract processing of cannabis to Canadian authorized licensed producers and appropriate international growers, supplying integrity-assured cannabis oil to qualified companies for sale under their own brand. In addition, MediPharm Labs will supply raw materials, formulations, processing and packaging for the creation of ready-to-sell advanced derivative products. MediPharm Labs was awarded Start-up of the Year at the recent Canadian Cannabis Awards hosted by Lift & Co.

Through its subsidiary, MediPharm Labs Australia Pty. Ltd., MediPharm has also completed its application process with the federal Office of Drug Control to extract and import medical cannabis products in Australia.

Original press release

Get ahead of the crowd by signing up for 420 Investor, the largest & most comprehensive premium subscription service for cannabis traders and investors since 2013.

Published by NCV Newswire The NCV Newswire by New Cannabis Ventures aims to curate high quality content and information about leading cannabis companies to help our readers filter out the noise and to stay on top of the most important cannabis business news. The NCV Newswire is hand-curated by an editor and not automated in anyway. Have a confidential news tip? Get in touch


Josh Beckett grew up idolizing Roger Clemens, remember, and the bloom wore off that Texas rose, too. And like Clemens, Beckett is now self-destructing at Fenway Park these days in a potentially fatal mix of seeming apathy, stubbornness, pride, and foolishness. Essentially, he is on trial.

Poetic, isn't it? Maybe there is simply something in the Texas water that prevents people from admitting they just screwed it all up. Faced with a crisis on Thursday night that he completely brought upon himself, Beckett simply imploded in an 8-3 defeat that was hardly so close.

Against a Cleveland Indians lineup stacked with left-handed and switch-hitters, Beckett allowed seven hits, seven runs, four doubles, two walks, and two home runs. He left the field to a cascade of boos that he richly deserved, and he now looks -- somewhat incredibly -- even more like someone who just doesn't give a damn.

Near the end, Clemens got this way, too, remember. At this stage of his career, when he was in his early 30s, Clemens went 40-39 with a 3.77 ERA during a four-year span in which the Red Sox generally looked like they look now. Clemens was out of shape. He lost the fire who made him who he was. Clemens basically had three Cy Young Awards in the same pocket where Beckett now holds two World Series rings, and it certainly started to feel like the big guy was just cashing the checks and living off his reputation.

Which is when his reputation really went south.

And so last night, there was Beckett again, telling us all that the off-days belong to him, that players only get 18 off-days during the season, the same way Clemens reminded us that the Red Sox had to carry their own bags through the airport. Clearly, you can only hide a life of entitlement for so long. The nadir of Beckett's existence in Boston coincidentally comes during a week in which Josh Hamilton hit four home runs in a game and made history for the Texas Rangers, which is relevant for this reason: Hamilton was the only man picked ahead of Beckett in the 1999 amateur draft. Hamilton subsequently came thisclose to losing his career amid a rash of personal problems and substance abuse issues, all before he became one of the truly great and inspiring stories in all of baseball.

Josh Hamilton almost had the game taken away from him, and so he learned to appreciate it, respect it, love it. He learned to respect his talent and his teammates, and he got the same back from them. When the Rangers have celebrated postseason victories in recent years, they have done so with ginger ale in their clubhouse, all out of respect for Hamilton. And after Hamilton went 5-for-5 with four home runs and 18 total bases earlier this week, he told television reporters that hitting three home runs in a game was always something he wanted to do, that he had never hit three before, that he never imagined four.

Josh Hamilton looked and sounded like a kid playing stick ball in the neighborhood schoolyard.

So here's the real question for Beckett today, amid all the obvious and well-deserved criticisms for how he has behaved and pitched of late: Do you even like what you do anymore, Josh? Do you? Or do you see your talent as some sort of needless burden? Five years ago, when Beckett was leading the Red Sox to their last world title, Red Sox officials spoke of Beckett having lofty goals, of him wanting to be a 300-game winner. Now they can't get him to keep his weight down during the season. They can't get him to stay off the golf course and do the prudent thing when he is scratched from a start with stiffness in his right lat muscle. The Red Sox just offer a series of meaningless, contradictory statement about Beckett's injury, or non-injury, or work ethic, all seemingly because an admission of guilt or wrongdoing would reveal some weakness.

Um, guys? You're 12-19. You're 19-39 since last September 1. You're beyond weak. You stink so badly right now that there is an entire legion of fans, from the entire six-state region you call yours, ready to quit for the summer. Further burying your anger and frustration isn't going to solve the problem. Ask the sports psychologists on your staff about that.

If you're not going to get mad now, when will you?

Last summer, before the debacle that was September and after becoming a husband and father, Beckett freely admitted that baseball was not the most important thing in his life anymore. He should have just told us baseball has no meaning to him whatsoever. Beckett is signed through 2014 for a guaranteed average of $17 million per season, all of which further detaches him from the realities of the real world. If you call in sick and then get busted on the golf course in the real world, somebody gets pissed off, Josh. You might even get fired. Clearly, none of those rules apply to you and you seem all too happy to remind everyone of it.

Years ago, when Clemens coasted through relative mediocrity, his time in Boston reached an inevitable conclusion. In the final months of the final year of his contract, Clemens picked up the pace with his eyes on free agency. He struck out 20 batters in a game for the second time in his career during a late-season run, tying Cy Young for No. 1 on the club's all-time list for victories. Then Clemens hit the market and recorded the highest average annual salary ever awarded a pitcher to that point in time, leaving the Red Sox in a bitter feud that sprung him (along with the alleged use of performance-enhancing drugs) into the next, glorious phase of his career.

Clemens won four more Cy Young Awards after he left Boston. He won two World Series with the New York Yankees. Clemens reputation since has never been the same in Boston -- or anywhere else, for that matter. And if the Red Sox have any lingering regret from that calamity, it is that they should have dumped Clemens when they had the chance.

With Beckett, the Red Sox had the chance last fall. They whiffed.

And so the protege continues to follow in the footsteps of his mentor, toward an inglorious end that now seems inevitable.


"use strict";

angular.module("hikeio").
	directive("conversion", ["$rootScope", "conversion", function($rootScope, conversion) {
		return {
			link: function(scope, element, attrs) {
				var value = attrs.value;
				var units = attrs.units;
				var truncateTo = attrs.truncateTo;
				var hideDecimalAt = attrs.hideDecimalAt;
				var showTrailingZeroes = attrs.showTrailingZeroes;
				if (!units) return;
				$rootScope.$watch("preferences.useMetric", function(useMetric) {
					var convertedUnits = units;
					if (useMetric !== conversion.isMetricUnits(units)) {
						convertedUnits = conversion.getOpposingUnits(units);
					}
					var convertedValue = conversion.convert(value, units, convertedUnits, truncateTo, hideDecimalAt, showTrailingZeroes);
					if (convertedValue === "1") {
						convertedUnits = conversion.getSingularUnits(convertedUnits);
					}
					element.find("[data-units]").html(convertedUnits);
					element.find("[data-value]").html(convertedValue);
				});
			}
		};
	}]);


README.md

Openframe Frame Controller

Friendly disclaimer: This project is under active development; we cannot promise that everything will work 100%. We encourage you to try it out! Feedback and pull requests are welcome :)

The Openframe controller is the software that runs on the frame itself (i.e. the RPi), acting as a process manager for starting, stopping, and transitioning between artworks. It communicates with an Openframe API Server server via a REST API, and connects to a global event system allowing for realtime updates. The idea is to work towards a system which supports the basic goals of Openframe, guided by a handful of pilot use cases.

The block diagram below represents a proposed architecture for the Openframe platform. It will continue to evolve as development on the project progresses.

Usage

FYI: Pardon the lack of detail and documentation. We'll be updating frequently over the coming weeks / months!

If you're just trying to get a frame up and running on a Raspberry Pi, please check out the Openframe User Guide.

If you're interested in hacking on Openframe, feel free to fork/clone this repo. Run npm install to install the deps, then start up the openframe software:

$ npm start

Upon startup, the application will prompt you for your Openframe username and password, and a name for this frame. You can run this on a mac or linux machine (windows untested), though various artwork format extensions are likely to be developed with a specific target platform in mind.

For DEBUG output, set the DEBUG env var:

$ DEBUG=* npm start

Configuration files

When you run npm install, the install.sh script will be executed. This script creates a hidden directory, .openframe, in your user home folder (/home/{username}/.openframe), and copies the default .ofrcconfiguration file there. The .ofrc file contains the server settings — by default this will point to the hosted API server at openframe.io, but if you're running a local server for development or are hosting your own API server you can update the settings in .ofrc accordingly.

After starting the application and answering the prompts, two additional files are created in the .openframe dir, frame.json which stores the frame state, and user.json which stores user data.

Extensions

Extensions are npm packages which add functionality to the frame, either by adding support for a new artwork format (i.e. media type) or by adding other functionality.


<?php
image2wbmp();
png2wbmp();
jpeg2wbmp();
ldap_sort();
$a->ldap_sort('b');


package com.sequenceiq.environment.service.integration;

import static com.sequenceiq.common.model.CredentialType.ENVIRONMENT;
import static com.sequenceiq.environment.proxy.v1.ProxyTestSource.getProxyConfig;
import static com.sequenceiq.environment.proxy.v1.ProxyTestSource.getProxyRequest;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.when;

import java.util.List;
import java.util.Map;
import java.util.Optional;

import javax.inject.Inject;
import javax.ws.rs.BadRequestException;
import javax.ws.rs.NotFoundException;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.test.context.ActiveProfiles;

import com.google.common.collect.Maps;
import com.sequenceiq.authorization.service.UmsAccountAuthorizationService;
import com.sequenceiq.authorization.service.UmsResourceAuthorizationService;
import com.sequenceiq.cloudbreak.auth.altus.EntitlementService;
import com.sequenceiq.cloudbreak.auth.altus.GrpcUmsClient;
import com.sequenceiq.cloudbreak.cloud.context.CloudContext;
import com.sequenceiq.cloudbreak.cloud.event.credential.CredentialVerificationRequest;
import com.sequenceiq.cloudbreak.cloud.event.credential.CredentialVerificationResult;
import com.sequenceiq.cloudbreak.cloud.event.credential.InitCodeGrantFlowRequest;
import com.sequenceiq.cloudbreak.cloud.event.credential.InteractiveLoginRequest;
import com.sequenceiq.cloudbreak.cloud.event.credential.InteractiveLoginResult;
import com.sequenceiq.cloudbreak.cloud.event.platform.ResourceDefinitionRequest;
import com.sequenceiq.cloudbreak.cloud.event.platform.ResourceDefinitionResult;
import com.sequenceiq.cloudbreak.cloud.model.CloudCredential;
import com.sequenceiq.cloudbreak.cloud.model.CloudCredentialStatus;
import com.sequenceiq.cloudbreak.cloud.model.CredentialStatus;
import com.sequenceiq.cloudbreak.service.secret.service.SecretService;
import com.sequenceiq.cloudbreak.util.FileReaderUtils;
import com.sequenceiq.environment.api.v1.credential.model.parameters.aws.AwsCredentialParameters;
import com.sequenceiq.environment.api.v1.credential.model.parameters.aws.KeyBasedParameters;
import com.sequenceiq.environment.api.v1.credential.model.parameters.azure.AzureCredentialRequestParameters;
import com.sequenceiq.environment.api.v1.credential.model.parameters.azure.RoleBasedRequest;
import com.sequenceiq.environment.api.v1.credential.model.request.CredentialRequest;
import com.sequenceiq.environment.api.v1.credential.model.response.CredentialResponse;
import com.sequenceiq.environment.api.v1.credential.model.response.CredentialResponses;
import com.sequenceiq.environment.api.v1.credential.model.response.InteractiveCredentialResponse;
import com.sequenceiq.environment.api.v1.proxy.model.request.ProxyRequest;
import com.sequenceiq.environment.api.v1.proxy.model.response.ProxyResponse;
import com.sequenceiq.environment.api.v1.proxy.model.response.ProxyResponses;
import com.sequenceiq.environment.client.EnvironmentServiceClientBuilder;
import com.sequenceiq.environment.client.EnvironmentServiceCrnEndpoints;
import com.sequenceiq.environment.credential.domain.Credential;
import com.sequenceiq.environment.credential.repository.CredentialRepository;
import com.sequenceiq.environment.credential.service.RequestProvider;
import com.sequenceiq.environment.network.NetworkService;
import com.sequenceiq.environment.proxy.domain.ProxyConfig;
import com.sequenceiq.environment.proxy.repository.ProxyConfigRepository;
import com.sequenceiq.environment.service.integration.testconfiguration.TestConfigurationForServiceIntegration;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
        classes = TestConfigurationForServiceIntegration.class,
        properties = "spring.main.allow-bean-definition-overriding=true")
@ActiveProfiles("test")
public class EnvironmentServiceIntegrationTest {

    private static final String SERVICE_ADDRESS = "http://localhost:%d/environmentservice";

    private static final String DEFINITION_AWS = FileReaderUtils.readFileFromClasspathQuietly("testCredentialDefinitionAws.json");

    private static final String TEST_ACCOUNT_ID = "accid";

    private static final String TEST_USER_CRN = String.format("crn:cdp:iam:us-west-1:%s:user:mockuser@cloudera.com", TEST_ACCOUNT_ID);

    private static final String TEST_RESOURCE_CRN = String.format("crn:cdp:environments:us-west-1:%s:credential:asdasd", TEST_ACCOUNT_ID);

    private static final String USER_CODE = "1234";

    private static final String VERIFICATION_URL = "http://cloudera.com";

    private EnvironmentServiceCrnEndpoints client;

    @LocalServerPort
    private int port;

    @Mock
    private ResourceDefinitionRequest resourceDefinitionRequest;

    @Mock
    private InteractiveLoginRequest interactiveLoginRequest;

    @Mock
    private InitCodeGrantFlowRequest initCodeGrantFlowRequest;

    @MockBean
    private RequestProvider requestProvider;

    @MockBean
    private UmsResourceAuthorizationService umsResourceAuthorizationService;

    @MockBean
    private UmsAccountAuthorizationService umsAccountAuthorizationService;

    @MockBean
    private EntitlementService entitlementService;

    @MockBean
    private NetworkService networkService;

    @MockBean
    private GrpcUmsClient grpcUmsClient;

    @Inject
    private ProxyConfigRepository proxyConfigRepository;

    @Inject
    private CredentialRepository credentialRepository;

    @Inject
    private SecretService secretService;

    private CredentialRequest credentialRequest;

    private Credential credential;

    @BeforeEach
    public void setup() {
        client = new EnvironmentServiceClientBuilder(String.format(SERVICE_ADDRESS, port))
                .withCertificateValidation(false)
                .withDebug(true)
                .withIgnorePreValidation(true)
                .build()
                .withCrn(TEST_USER_CRN);

        credential = new Credential();
        credential.setName("credential_test");
        credential.setResourceCrn(TEST_RESOURCE_CRN);
        credential.setAccountId(TEST_ACCOUNT_ID);
        credential.setCloudPlatform("AWS");
        credential.setCreator(TEST_USER_CRN);
        credential.setDescription("description");
        credential.setGovCloud(false);
        credential.setArchived(false);
        credential.setType(ENVIRONMENT);
        credentialRequest = new CredentialRequest();

        when(entitlementService.azureEnabled(any(), any())).thenReturn(true);
        doNothing().when(grpcUmsClient).assignResourceRole(anyString(), anyString(), anyString(), any());
        Map<String, Boolean> rightCheckMap = Maps.newHashMap();
        rightCheckMap.put(credential.getResourceCrn(), true);
        when(umsResourceAuthorizationService.getRightOfUserOnResources(anyString(), any(), anyList())).thenReturn(rightCheckMap);
    }

    @AfterEach
    public void clienUpDb() {
        proxyConfigRepository.deleteAll();
        credentialRepository.deleteAll();
    }

    @Test
    public void testCredentialCreateAws() throws InterruptedException {
        credentialRequest.setAws(getAwsKeyBasedCredentialParameters(false, "yyy", "zzzz"));
        credentialRequest.setCloudPlatform("AWS");
        credentialRequest.setName("testcredential");

        when(requestProvider.getResourceDefinitionRequest(any(), any())).thenReturn(resourceDefinitionRequest);
        when(requestProvider.getCredentialVerificationRequest(any(), any(), anyBoolean())).thenAnswer(
                invocation -> new CredentialVerificationMockRequest(invocation.getArgument(0), invocation.getArgument(1))
        );
        when(resourceDefinitionRequest.await()).thenReturn(new ResourceDefinitionResult(1L, DEFINITION_AWS));

        CredentialResponse response = client.credentialV1Endpoint().post(credentialRequest);
        assertTrue(response.getName().equals(credentialRequest.getName()), " not saved, or response is different");
        assertTrue(credentialRepository.findByNameAndAccountId(credentialRequest.getName(), TEST_ACCOUNT_ID, List.of("AWS"), ENVIRONMENT).isPresent());
    }

    @Test
    public void testCredentialInteractiveLogin() throws InterruptedException {
        credentialRequest.setName("testcredential");
        credentialRequest.setCloudPlatform("AZURE");
        AzureCredentialRequestParameters azureCredentialRequestParameters = new AzureCredentialRequestParameters();
        azureCredentialRequestParameters.setSubscriptionId("subid");
        azureCredentialRequestParameters.setTenantId("tenant");
        RoleBasedRequest roleBasedRequest = new RoleBasedRequest();
        roleBasedRequest.setDeploymentAddress("alma");
        roleBasedRequest.setRoleName("role");
        azureCredentialRequestParameters.setRoleBased(roleBasedRequest);
        credentialRequest.setAzure(azureCredentialRequestParameters);

        InteractiveLoginResult interactiveLoginResult = new InteractiveLoginResult(1L, Map.of("user_code", USER_CODE, "verification_url", VERIFICATION_URL));
        when(requestProvider.getInteractiveLoginRequest(any(), any())).thenReturn(interactiveLoginRequest);
        when(interactiveLoginRequest.await()).thenReturn(interactiveLoginResult);
        InteractiveCredentialResponse result = client.credentialV1Endpoint().interactiveLogin(credentialRequest);
        assertEquals(result.getUserCode(), USER_CODE);
        assertEquals(result.getVerificationUrl(), VERIFICATION_URL);
    }

    @Test
    public void testCredentialList() {
        credentialRepository.save(credential);
        CredentialResponses results = client.credentialV1Endpoint().list();
        assertTrue(results.getResponses().stream().anyMatch(credentialResponse -> credentialResponse.getName().equals(credential.getName())),
                String.format("Result set should have credential with name: %s", credential.getName()));
    }

    @Test
    public void testCredentialGetByName() {
        credentialRepository.save(credential);
        CredentialResponse results = client.credentialV1Endpoint().getByName(credential.getName());
        assertTrue(results.getName().equals(credential.getName()),
                String.format("Result should have credential with name: %s", credential.getName()));
    }

    @Test
    public void testCredentialGetByNameNotFound() {
        assertThrows(NotFoundException.class, () -> client.credentialV1Endpoint().getByName("nonexisting"));
    }

    @Test
    public void testCredentialGetByCrn() {
        credentialRepository.save(credential);
        CredentialResponse results = client.credentialV1Endpoint().getByResourceCrn(credential.getResourceCrn());
        assertTrue(results.getName().equals(credential.getName()),
                String.format("Result should have credential with name: %s", credential.getName()));
    }

    @Test
    public void testCredentialGetByCrnNotFound() {
        assertThrows(NotFoundException.class, () -> client.credentialV1Endpoint().getByResourceCrn("nonexisting"));
    }

    @Test
    public void testCredentialDeleteByName() {
        credentialRepository.save(credential);
        CredentialResponse results = client.credentialV1Endpoint().deleteByName(credential.getName());
        assertTrue(results.getName().startsWith(credential.getName()),
                String.format("Result should have credential with name: %s", credential.getName()));
    }

    @Test
    public void testCredentialDeleteByNameNotFound() {
        assertThrows(NotFoundException.class, () -> client.credentialV1Endpoint().deleteByName("nonexisting"));
    }

    @Test
    public void testCredentialDeleteByCrn() {
        credentialRepository.save(credential);
        CredentialResponse results = client.credentialV1Endpoint().deleteByResourceCrn(credential.getResourceCrn());
        assertTrue(results.getName().startsWith(credential.getName()),
                String.format("Result should have credential with name: %s", credential.getName()));
    }

    @Test
    public void testCredentialDeleteByCrnNotFound() {
        assertThrows(NotFoundException.class, () -> client.credentialV1Endpoint().deleteByResourceCrn("nonexisting"));
    }

    @Test
    public void testProxyList() {
        proxyConfigRepository.save(getProxyConfig());
        ProxyResponses results = client.proxyV1Endpoint().list();
        assertTrue(results.getResponses().stream().anyMatch(proxyResponse -> proxyResponse.getName().equals(getProxyConfig().getName())),
                String.format("Result set should have proxy with name: %s", getProxyConfig().getName()));
    }

    @Test
    public void testProxyGetByName() {
        proxyConfigRepository.save(getProxyConfig());
        ProxyResponse results = client.proxyV1Endpoint().getByName(getProxyRequest().getName());
        assertTrue(results.getName().equals(getProxyConfig().getName()),
                String.format("Result should have proxy with name: %s", getProxyConfig().getName()));
    }

    @Test
    public void testProxyGetByNameNotFound() {
        assertThrows(NotFoundException.class, () -> client.proxyV1Endpoint().getByName("nonexisting"));
    }

    @Test
    public void testProxyGetByCrnName() {
        proxyConfigRepository.save(getProxyConfig());
        ProxyResponse results = client.proxyV1Endpoint().getByResourceCrn(getProxyConfig().getResourceCrn());
        assertTrue(results.getCrn().equals(getProxyConfig().getResourceCrn()),
                String.format("Result should have proxy with resource crn: %s", getProxyConfig().getResourceCrn()));
    }

    @Test
    public void testProxyGetByCrnNotFound() {
        assertThrows(NotFoundException.class, () -> client.proxyV1Endpoint().getByResourceCrn("nonexisting"));
    }

    @Test
    public void testProxyDeleteByName() {
        proxyConfigRepository.save(getProxyConfig());
        ProxyResponse results = client.proxyV1Endpoint().deleteByName(getProxyRequest().getName());
        assertTrue(results.getName().equals(getProxyConfig().getName()),
                String.format("Result should have proxy with name: %s", getProxyConfig().getName()));
    }

    @Test
    public void testProxyDeleteByNameNotFound() {
        assertThrows(NotFoundException.class, () -> client.proxyV1Endpoint().deleteByName("nonexisting"));
    }

    @Test
    public void testProxyDeleteByCrnName() {
        proxyConfigRepository.save(getProxyConfig());
        ProxyResponse results = client.proxyV1Endpoint().deleteByCrn(getProxyConfig().getResourceCrn());
        assertTrue(results.getCrn().equals(getProxyConfig().getResourceCrn()),
                String.format("Result should have proxy with resource crn: %s", getProxyConfig().getResourceCrn()));
    }

    @Test
    public void testProxyDeleteByCrnNotFound() {
        assertThrows(NotFoundException.class, () -> client.proxyV1Endpoint().deleteByCrn("nonexisting"));
    }

    @Test
    public void testProxyCreate() throws Exception {
        ProxyRequest request = getProxyRequest();
        request.setPort(8080);
        ProxyResponse result = client.proxyV1Endpoint().post(request);
        assertEquals(request.getName(), result.getName());
        Optional<ProxyConfig> saved = proxyConfigRepository.findByNameInAccount(request.getName(), TEST_ACCOUNT_ID);
        assertTrue(saved.isPresent());
    }

    @Test
    public void testProxyCreateSwaggerError() throws Exception {
        ProxyRequest request = getProxyRequest();
        request.setPort(0);
        assertThrows(BadRequestException.class, () -> client.proxyV1Endpoint().post(request));
    }

    private AwsCredentialParameters getAwsKeyBasedCredentialParameters(boolean govCloud, String yyy, String zzzz) {
        AwsCredentialParameters aws = new AwsCredentialParameters();
        aws.setGovCloud(govCloud);
        KeyBasedParameters keyBased = new KeyBasedParameters();
        keyBased.setAccessKey(yyy);
        keyBased.setSecretKey(zzzz);
        aws.setKeyBased(keyBased);
        return aws;
    }

    static class CredentialVerificationMockRequest extends CredentialVerificationRequest {

        CredentialVerificationMockRequest(CloudContext cloudContext, CloudCredential cloudCredential) {
            super(cloudContext, cloudCredential);
        }

        @Override
        public CredentialVerificationResult await() {
            return new CredentialVerificationResult(1L,
                    new CloudCredentialStatus(getCloudCredential(), CredentialStatus.CREATED));
        }
    }
}


Search This Blog

Professor of Logic and Argumentation Theory. Analysis in Economic History and Political Economy. Fellow in Epistemology of Science. Reader Thomas Kuhn, Rudolf Carnap and novels of Central Europe: Haroslav Hasek, Hermann Broch, Robert Musil.


Sinelogix Technology is a one of the web design and development Company in India based in Bangalore. Our Core Service is web design and development but We also offer SEO Training and Creative Web Design, SEO Friendly Web Development,Graphic Design services to our valuable Clients in India. we are offering Website Designing, Website Development and SEO (Search Engine Optimization) services at reliable prices in Bangalore, Karnataka, India. Get in touch with us at : www.sinelogix.com Or send us enquiry at: http://www.sinelogix.com/contact.html » Or Call Us at : +91 9979553686 / 02653390052

www.propertyonlease.com Register & Post Property Free for Sale/Rent We List it with subscribed realtors in the Area
Buyers/Tenants when contact query is shot direct to Broker as sms/email & not to Pr...

We Madurai travels based at madurai in the name of "royal tours & travels" operating regular tours for Rameswaram,Kanyakumari,Munnar,Kodaikanal and Madurai Trivandrum varkala Cochin and all parts of s...


Find a Laveen Calculus Tutor

Subject:

Zip:

...I enjoy math! This means that I am motivational, passionate, and knowledgeable about everything related to math. I'm studying to be a civil engineer, so if I could be trusted with the building that you'll live in, I could be trusted with your child's education.

...I've taken college level astronomy both at an entry level and upper division level (specifically astrophysics) all at ASU. AST(111-114, 321, 322, 421, 422) I've spent a great deal of time reviewing for the various sections of the GRE before taking it myself as well as while tutoring students on ...

...I have been teaching at the college level for 15 years. I am currently a professor of mathematics at Scottsdale Community College. I have taught and tutored everything from basic mathematics up through Calculus, Differential Equations and Mathematical Structures.

I teach math, violin, general music and test teaching strategies. I have significant experience teaching in schools and am credentialed in math and music with Texas. I have 15 years of experience in professional symphonies as a violin player and a graduate degree in music.


Blog

So here we are in 2017. I wonder what this year has lined up for us all? I think we can all agree that 2016 was a strange year. From Brexit to the US election to the countless famous icons that have sadly left us… And last but by no means least the news that Toblerone would be reducing the size of its segments…

As I get older I notice that the years go by quicker and quicker and the new year comes by before you’ve joined the gym and lost your first pound. With that comes new aspirations, resolutions and lifestyle changes, asking myself what 2017 will mean for me.

A negative mind will never give you a positive life

— Unknown Author

This is a quote I am very fond of. There is so much negativity in the world and it’s easy to get sucked into a negative mentality. I try to find something positive in everything, even if the situation isn’t ideal. A persons perspective affects others around them. If I maintain a positive look on life and can help in adding to other peoples happiness then maybe they might adopt this perspective and pass it onto others and so on.

The greatest wealth is health

— Virgil

They say you are what you eat, and I agree. Food is fuel and it’s important we know what we are feeding our bodies. It’s so easy to feed our body with processed foods and be ignorant to what is actually inside the packaging. One of my goals for 2017 is to learn more about what I am putting into my body and the effects of those foods. In doing so, I am going to make a conscious effort to support local food sources and businesses.

2016 has been a big year for me in discovering my true passion for photography. I purchased my first DSLR camera, created my website and started networking through a wonderful community within Exeter. In 2017 I want to continue to develop my lifestyle photography and blog, working with local companies and independent businesses, inspiring people through my work.

Finally I want to continue to maintain the strong relationship I have with my family and friends. I am truly blessed with the wonderful people I have in my life. I have had another amazing year with my partner, who I feel so lucky to have met, welcoming me into his beautiful family. People often say you can’t pick your family but you can pick your friends. Well if I could pick my friends and family they would stay exactly the same. I am so lucky to have the family and friends that I do, although we aren’t all close in distance we are close in heart.

This time next year I hope to be writing a new set of ambitions having fulfilled all that I set out to in 2017.

Happy new year to you all. I hope 2017 brings you happiness and health. Don’t forget to set your new years resolutions.


Specializing in Roman Catholic Eclectic

Think about these few simple words, about the nature of Christ, and we’ll try to grasp just a little of what this means. Or can mean.

How did the Babe react to being placed in a manger? We aren’t told, but if we know something of Jesus’ nature, from study or personal experience or from whatever inner or outer source, we can imagine. I think, and this is just my thought, that he was peaceful, calm. The Creator of Heaven and earth, Author of Life, THE Perfect Being deserving of … He’s beyond deserving isn’t he? As though he lacks something and needs someone to supply him with fill-in-the-blank because he’s worthy. He is by nature eternally worthy whether we ever know it or not, and we can’t really give him anything he doesn’t already have. With the exception of a childlike heart, our heart, given by us to him. And here he is placed in a rough hewn box of sorts. But I see him reacting peacefully. Why shouldn’t he? What, really, could ever threaten him? Would he lose his self confidence because he was being treated as less than what he was? Of course not. That sort of reaction would more likely pertain to us, but not to him.

We are told that we must become like little children in order to enter into Heaven. We need to be innocent, joyful, trusting. Which means that we set the wrong kinds of ego and fear aside along with hardheartedness. And we can. With his help. When we’re laid in a manger of rough wood, when life becomes uncomfortable, we remain calm. Because we know he’s there in that “manger” with us. After all, is there any place, any set of circumstances when and where he isn’t with us?

“And said: Amen I say to you, unless you be converted, and become as little children, you shall not enter into the kingdom of heaven.” Matthew 18:3, Douay-Rheims.

Just a thought … Accepting crosses is a part of our existence as followers of Christ. It takes a real Christan to carry a cross. And it takes a child-like heart to be content with rough hewn mangers.


They are all spectacular. Sit back and enjoy the top picks. We asked all of you to vote, and the nominations came from from coast to coast. Places big and small, like devil's thumb ranch in Colorado, picnic island in the Florida keys. So many tough choices, but in the end, we had five finalists. First up, beautiful lake tahoe. With the crystal-clear water, surrounded by snow-capped mountains. It's a nature lover's paradise. My husband had the idea of getting kayaks. Once away from the shore and the people, we were on the lake alone, and it was just so incredible to be there. ? Next, gulf shores. The idyllic coastal town at the southern tip of Alabama. It is perfect for families and for the past 15 years, this family has made the annual 18-hour drive. We go crab hunting. What else? It's relaxing, the sand is gorgeous. Third nominee, arcadia national park in Maine. 15,000 acres of jaw-draping beauty. They visited the lower 48, and it was the favorite place. I had a chance to go on a helicopter ride, and it was just spec spectacular. Seeing the amazing views. While national parks were top choices, some preferred cities. Chicago's lake front. The perfect marriage of city and nature. And once done along the trail, 16-year-old Brandon Gunn has a success -- I enjoyed the food in Chicago. And last but not least, Montana's majestic glacier national park. It is a stunner. Spectacular vistas, diverse wildlife. Just ask Jennifer of Durham, North Carolina. It was hard to not trip over our feet because the views were stunning. It was a great escape. The great finalists. And the stories to go with them. Get them up on the map. I have lake tahoe here. Let me put it up. That's a good one. Beautiful, beautiful. And I'm going down south, of course. Gulf shores, Alabama. We used to vacation there a lot as kids. And 15,000 gorgeous acres, acadia national park up in Maine. And one of my favorite runs on lakeshore drive, Chicago. Beautiful spot. Love that. You know I love that, but glacier national park in Montana, it made it. The beautiful landscape, can't beat it. I'm going to stay over here. You at home decided this. Weigh in on your favorite on Facebook and Twitter, gmafave. Tell us your pick. We will reveal the winner live on Thursday.

This transcript has been automatically generated and may not be 100% accurate.


https://github.com/sindresorhus/awesome
https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books.md#python

Name|Url
--|--
thinkstats2|http://greenteapress.com/thinkstats2/html/index.html
thinkpython|http://www.greenteapress.com/thinkpython2/thinkpython2.pdf
thinthink-data-structures|http://greenteapress.com/wp/think-data-structures/

## [语言无关](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E8%AF%AD%E8%A8%80%E6%97%A0%E5%85%B3)

### [IDE](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#ide)

*   [IntelliJ IDEA 简体中文专题教程](https://github.com/judasn/IntelliJ-IDEA-Tutorial)

### [Web](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#web)

*   [3 Web Designs in 3 Weeks](https://www.gitbook.com/book/juntao/3-web-designs-in-3-weeks/details)
*   [Chrome 开发者工具中文手册](https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools)
*   [Chrome扩展及应用开发](http://www.ituring.com.cn/minibook/950)
*   [Chrome扩展开发文档](http://open.chrome.360.cn/extension_dev/overview.html)
*   [Growth: 全栈增长工程师指南](https://github.com/phodal/growth-ebook)
*   [Grunt中文文档](http://www.gruntjs.net/)
*   [Gulp 入门指南](https://github.com/nimojs/gulp-book)
*   [gulp中文文档](http://www.gulpjs.com.cn/docs/)
*   [HTTP 接口设计指北](https://github.com/bolasblack/http-api-guide)
*   [HTTP/2.0 中文翻译](http://yuedu.baidu.com/ebook/478d1a62376baf1ffc4fad99?pn=1)
*   [http2讲解](https://www.gitbook.com/book/ye11ow/http2-explained/details)
*   [JSON风格指南](https://github.com/darcyliu/google-styleguide/blob/master/JSONStyleGuide.md)
*   [Wireshark用户手册](http://man.lupaworld.com/content/network/wireshark/index.html)
*   [一站式学习Wireshark](https://community.emc.com/thread/194901)
*   [关于浏览器和网络的 20 项须知](http://www.20thingsilearned.com/zh-CN/home)
*   [前端代码规范 及 最佳实践](http://coderlmn.github.io/code-standards/)
*   [前端开发体系建设日记](https://github.com/fouber/blog/issues/2)
*   [前端资源分享（一）](https://github.com/hacke2/hacke2.github.io/issues/1)
*   [前端资源分享（二）](https://github.com/hacke2/hacke2.github.io/issues/3)
*   [正则表达式30分钟入门教程](http://deerchao.net/tutorials/regex/regex.htm)
*   [浏览器开发工具的秘密](http://jinlong.github.io/2013/08/29/devtoolsecrets/)
*   [移动Web前端知识库](https://github.com/AlloyTeam/Mars)
*   [移动前端开发收藏夹](https://github.com/hoosin/mobile-web-favorites)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#web%E6%9C%8D%E5%8A%A1%E5%99%A8)WEB服务器

*   [Apache 中文手册](http://works.jinbuguo.com/apache/menu22/index.html)
*   [Nginx开发从入门到精通](http://tengine.taobao.org/book/index.html) - 淘宝团队
*   [Nginx教程从入门到精通](http://www.ttlsa.com/nginx/nginx-stu-pdf/) - 运维生存时间 (PDF)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E5%85%B6%E5%AE%83)其它

*   [OpenWrt智能、自动、透明翻墙路由器教程](https://softwaredownload.gitbooks.io/openwrt-fanqiang/content/)
*   [SAN 管理入门系列](https://community.emc.com/docs/DOC-16067)
*   [Sketch 中文手册](http://sketchcn.com/sketch-chinese-user-manual.html#introduce)
*   [深入理解并行编程](http://ifeve.com/perfbook/)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E5%87%BD%E6%95%B0%E5%BC%8F%E6%A6%82%E5%BF%B5)函数式概念

*   [傻瓜函数编程](https://github.com/justinyhuang/Functional-Programming-For-The-Rest-of-Us-Cn)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F)分布式系统

*   [走向分布式](http://dcaoyuan.github.io/papers/pdfs/Scalability.pdf) (PDF)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E5%9C%A8%E7%BA%BF%E6%95%99%E8%82%B2)在线教育

*   [51CTO学院](http://edu.51cto.com/)
*   [Codecademy](https://www.codecademy.com/?locale_code=zh)
*   [CodeSchool](https://www.codeschool.com/)
*   [Coursera](https://www.coursera.org/courses?orderby=upcoming&lngs=zh)
*   [Learn X in Y minutes](https://learnxinyminutes.com/)
*   [shiyanlou](https://www.shiyanlou.com/)
*   [TeamTreeHouse](https://teamtreehouse.com/)
*   [Udacity](https://www.udacity.com/)
*   [xuetangX](https://www.xuetangx.com/)
*   [慕课网](http://www.imooc.com/course/list)
*   [极客学院](http://www.jikexueyuan.com/)
*   [汇智网](http://www.hubwiz.com/)
*   [计蒜客](http://www.jisuanke.com/)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E5%A4%A7%E6%95%B0%E6%8D%AE)大数据

*   [Spark 编程指南简体中文版](https://aiyanbo.gitbooks.io/spark-programming-guide-zh-cn/content/)
*   [大型集群上的快速和通用数据处理架构](https://code.csdn.net/CODE_Translation/spark_matei_phd)
*   [数据挖掘中经典的算法实现和详细的注释](https://github.com/linyiqun/DataMiningAlgorithm)
*   [面向程序员的数据挖掘指南](http://dataminingguide.books.yourtion.com/)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F)操作系统

*   [Debian 参考手册](http://man.chinaunix.net/linux/debian/reference/reference.zh-cn.html)
*   [Docker —— 从入门到实践](https://github.com/yeasy/docker_practice)
*   [Docker中文指南](https://github.com/widuu/chinese_docker)
*   [Docker入门实战](http://yuedu.baidu.com/ebook/d817967416fc700abb68fca1)
*   [FreeBSD 使用手册](http://www.freebsd.org/doc/zh_CN.UTF-8/books/handbook/)
*   [Linux Documentation (中文版)](https://tinylab.gitbooks.io/linux-doc/content/zh-cn/)
*   [Linux Guide for Complete Beginners](http://happypeter.github.io/LGCB/book/)
*   [Linux 构建指南](http://works.jinbuguo.com/lfs/lfs62/index.html)
*   [Linux 系统高级编程](http://sourceforge.net/projects/elpi/)
*   [Linux工具快速教程](https://github.com/me115/linuxtools_rst)
*   [Mac 开发配置手册](https://aaaaaashu.gitbooks.io/mac-dev-setup/content/)
*   [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/)
*   [The Linux Command Line](http://billie66.github.io/TLCL/index.html)
*   [Ubuntu 参考手册](http://wiki.ubuntu.org.cn/UbuntuManual)
*   [uCore Lab: Operating System Course in Tsinghua University](https://www.gitbook.com/book/objectkuan/ucore-docs/details)
*   [UNIX TOOLBOX](http://cb.vu/unixtoolbox_zh_CN.xhtml)
*   [命令行的艺术](https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md)
*   [嵌入式 Linux 知识库 (eLinux.org 中文版)](https://tinylab.gitbooks.io/elinux/content/zh/)
*   [开源世界旅行手册](http://i.linuxtoy.org/docs/guide/index.html)
*   [理解Linux进程](https://github.com/tobegit3hub/understand_linux_process)
*   [鸟哥的 Linux 私房菜 基础学习篇](http://cn.linux.vbird.org/linux_basic/linux_basic.php)
*   [鸟哥的 Linux 私房菜 服务器架设篇](http://cn.linux.vbird.org/linux_server/)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E6%95%B0%E6%8D%AE%E5%BA%93)数据库

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E6%99%BA%E8%83%BD%E7%B3%BB%E7%BB%9F)智能系统

*   [一步步搭建物联网系统](https://github.com/phodal/designiot)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F)正则表达式

*   [正则表达式-菜鸟教程](http://www.runoob.com/regexp/regexp-tutorial.html)
*   [正则表达式30分钟入门教程](https://web.archive.org/web/20161119141236/http://deerchao.net:80/tutorials/regex/regex.htm)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6)版本控制

*   [Git - 简易指南](http://rogerdudler.github.io/git-guide/index.zh.html)
*   [Git-Cheat-Sheet](https://github.com/flyhigher139/Git-Cheat-Sheet) - flyhigher139
*   [Git Community Book 中文版](http://gitbook.liuhui998.com/)
*   [git-flow 备忘清单](http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html)
*   [Git magic](http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/zh_cn/)
*   [Git Magic](http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/zh_cn/)
*   [Git 参考手册](http://gitref.justjavac.com/)
*   [Github帮助文档](https://github.com/waylau/github-help)
*   [GitHub秘籍](https://snowdream86.gitbooks.io/github-cheat-sheet/content/zh/)
*   [Git教程](http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000) - 廖雪峰
*   [Got GitHub](https://github.com/gotgit/gotgithub)
*   [GotGitHub](http://www.worldhello.net/gotgithub/index.html)
*   [HgInit (中文版)](https://zh-hginit.readthedocs.io/en/latest/)
*   [Mercurial 使用教程](https://www.mercurial-scm.org/wiki/ChineseTutorial)
*   [Pro Git](https://git-scm.com/book/zh/v2)
*   [Pro Git 中文版](https://www.gitbook.com/book/0532/progit/details)
*   [Pro Git 第二版 中文版](https://bingohuang.gitbooks.io/progit2/content) - Bingo Huang
*   [svn 手册](http://svnbook.red-bean.com/nightly/zh/index.html)
*   [学习 Git 分支](https://learngitbranching.js.org/)
*   [沉浸式学 Git](http://igit.linuxtoy.org/index.html)
*   [猴子都能懂的GIT入门](http://backlogtool.com/git-guide/cn/)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E7%A8%8B%E5%BA%8F%E5%91%98%E6%9D%82%E8%B0%88)程序员杂谈

*   [程序员的自我修养](http://www.kancloud.cn/kancloud/a-programmer-prepares)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E7%AE%A1%E7%90%86%E5%92%8C%E7%9B%91%E6%8E%A7)管理和监控

*   [ElasticSearch 权威指南](https://www.gitbook.com/book/fuxiaopang/learnelasticsearch/details)
*   [Elasticsearch 权威指南（中文版）](http://es.xiaoleilu.com/)
*   [ELKstack 中文指南](http://kibana.logstash.es/)
*   [Logstash 最佳实践](https://github.com/chenryn/logstash-best-practice-cn)
*   [Mastering Elasticsearch(中文版)](http://udn.yyuap.com/doc/mastering-elasticsearch/)
*   [Puppet 2.7 Cookbook 中文版](https://www.gitbook.com/book/wizardforcel/puppet-27-cookbook/details)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E7%BC%96%E7%A8%8B%E8%89%BA%E6%9C%AF)编程艺术

*   [每个程序员都应该了解的内存知识 (第一部分)](http://www.oschina.net/translate/what-every-programmer-should-know-about-memory-part1)
*   [程序员编程艺术](https://github.com/julycoding/The-Art-Of-Programming-by-July)
*   [编程入门指南](http://www.kancloud.cn/kancloud/intro-to-prog/52592)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86)编译原理

*   [《计算机程序的结构和解释》公开课 翻译项目](https://github.com/DeathKing/Learning-SICP)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E7%BC%96%E8%BE%91%E5%99%A8)编辑器

*   [exvim--vim 改良成IDE项目](http://exvim.github.io/docs-zh/intro/)
*   [Vim中文文档](https://github.com/vimcn/vimcdoc)
*   [所需即所获：像 IDE 一样使用 vim](https://github.com/yangyangwithgnu/use_vim_as_ide)
*   [笨方法学Vimscript 中译本](http://learnvimscriptthehardway.onefloweroneworld.com/)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6)计算机图形学

*   [LearnOpenGL CN](https://learnopengl-cn.github.io/)
*   [OpenGL 教程](https://github.com/zilongshanren/opengl-tutorials)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F)设计模式

*   [史上最全设计模式导学目录](http://blog.csdn.net/lovelion/article/details/17517213)
*   [图说设计模式](https://github.com/me115/design_patterns)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E6%96%B9%E6%B3%95)软件开发方法

*   [傻瓜函数编程](https://github.com/justinyhuang/Functional-Programming-For-The-Rest-of-Us-Cn) (《Functional Programming For The Rest of Us》中文版)
*   [硝烟中的 Scrum 和 XP](http://www.infoq.com/cn/minibooks/scrum-xp-from-the-trenches)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#%E9%A1%B9%E7%9B%AE%E7%9B%B8%E5%85%B3)项目相关

*   [GNU make 指南](http://docs.huihoo.com/gnu/linux/gmake.html)
*   [Gradle 2 用户指南](https://github.com/waylau/Gradle-2-User-Guide)
*   [Gradle 中文使用文档](http://yuedu.baidu.com/ebook/f23af265998fcc22bcd10da2)
*   [Joel谈软件](https://web.archive.org/web/20170616013024/http://local.joelonsoftware.com/wiki/Chinese_(Simplified))
*   [selenium 中文文档](https://github.com/fool2fish/selenium-doc)
*   [开源软件架构](http://www.ituring.com.cn/book/1143)
*   [約耳談軟體(Joel on Software)](https://web.archive.org/web/20170615232349/http://local.joelonsoftware.com/wiki/%E9%A6%96%E9%A0%81) (繁体中文)
*   [编码规范](https://github.com/ecomfe/spec)
*   [让开发自动化系列专栏](http://www.ibm.com/developerworks/cn/java/j-ap/)
*   [追求代码质量](http://www.ibm.com/developerworks/cn/java/j-cq/)

### Vim

*   [Vim Manual(中文版)](http://man.chinaunix.net/newsoft/vi/doc/help.html)
*   [大家來學 VIM](http://www.study-area.org/tips/vim/index.html)
### Shell

*   [shell-book](http://me.52fhy.com/shell-book/)
*   [Shell 编程基础](http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80)
*   [Shell 编程范例](https://tinylab.gitbooks.io/shellbook/content) - 泰晓科技
*   [Shell 脚本编程30分钟入门](https://github.com/qinjx/30min_guides/blob/master/shell.md)
*   [The Linux Command Line 中文版](http://billie66.github.io/TLCL/book/)
### Python

*   [Django 1.11.6 中文文档](https://www.yiyibooks.cn/xx/Django_1.11.6/index.html)
*   [Django book 2.0](http://djangobook.py3k.cn/2.0/)
*   [Python 3 文档(简体中文) 3.2.2 documentation](http://docspy3zh.readthedocs.org/en/latest/)
*   [Python Cookbook第三版](http://python3-cookbook.readthedocs.io/zh_CN/latest/) - David Beazley、Brian K.Jones、熊能(翻译)
*   [Python 中文学习大本营](http://www.pythondoc.com/)
*   [Python之旅](http://funhacks.net/explore-python) - Ethan
*   [Python教程 - 廖雪峰的官方网站](http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000)
*   [像计算机科学家一样思考Python](https://www.ctolib.com/docs/sfile/think-python-2e/0.html) - Allen B. Downey、大胖哥(翻译)
*   [深入 Python 3](https://github.com/jiechic/diveintopython3)
*   [笨办法学 Python](http://old.sebug.net/paper/books/LearnPythonTheHardWay/)
*   [简明 Python 教程](https://bop.molun.net/) - Swaroop C H、沈洁元(翻译)、漠伦(翻译)

#### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#django)Django

*   [Django Girls 教程 (1.11)](https://tutorial.djangogirls.org/zh/) (HTML)
*   [Django 搭建个人博客教程 (2.1)](https://www.dusaiphoto.com/article/detail/2) - (杜赛) (HTML)
### PHP

*   [Composer中文文档](http://docs.phpcomposer.com/)
*   [Laravel5.4中文文档](http://d.laravel-china.org/docs/5.4)
*   [Phalcon7中文文档](http://www.myleftstudio.com/)
*   [PHP 之道](http://wulijun.github.io/php-the-right-way/)
*   [PHP中文手册](http://php.net/manual/zh/)
*   [PHP标准规范中文版](https://psr.phphub.org/)
*   [Symfony2 实例教程](https://wusuopu.gitbooks.io/symfony2_tutorial/content)
*   [Yii2中文文档](http://www.yiichina.com/doc/guide/2.0)
*   [深入理解 PHP 内核](http://www.php-internals.com/book/)
### Markdown

*   [Markdown 快速入门](http://wowubuntu.com/markdown/basic.html)
*   [Markdown 简明教程](http://www.jianshu.com/p/7bd23251da0a)
*   [Markdown 语法说明](http://wowubuntu.com/markdown/)
*   [献给写作者的 Markdown 新手指南](http://www.jianshu.com/p/q81RER)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#mysql)MySQL

*   [21分钟MySQL入门教程](http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html)
*   [MySQL索引背后的数据结构及算法原理](http://blog.codinglabs.org/articles/theory-of-mysql-index.html)

### [](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md#nosql)NoSQL

*   [Disque 使用教程](http://disque.huangz.me/)
*   [Redis 命令参考](http://redisdoc.com/)
*   [Redis 设计与实现](http://redisbook.com/)
*   [The Little MongoDB Book](https://github.com/justinyhuang/the-little-mongodb-book-cn/blob/master/mongodb.md)
*   [The Little Redis Book](https://github.com/JasonLai256/the-little-redis-book/blob/master/cn/redis.md)
*   [带有详细注释的 Redis 2.6 代码](https://github.com/huangz1990/annotated_redis_source)
*   [带有详细注释的 Redis 3.0 代码](https://github.com/huangz1990/redis-3.0-annotated)
### Javascript

*   [Airbnb JavaScript 规范](https://github.com/adamlu/javascript-style-guide)
*   [ECMAScript 6 入门](http://es6.ruanyifeng.com/) - 阮一峰
*   [Google JavaScript 代码风格指南](http://bq69.com/blog/articles/script/868/google-javascript-style-guide.html)
*   [JavaScript Promise迷你书](http://liubin.github.io/promises-book/)
*   [Javascript 原理](https://web.archive.org/web/20170112164945/http://typeof.net/s/jsmech/)
*   [JavaScript 标准参考教程（alpha）](http://javascript.ruanyifeng.com/)
*   [《JavaScript 模式》](https://github.com/jayli/javascript-patterns) (《JavaScript patterns》译本)
*   [javascript 的 12 个怪癖](https://github.com/justjavac/12-javascript-quirks)
*   [JavaScript 秘密花园](http://bonsaiden.github.io/JavaScript-Garden/zh/)
*   [JavaScript核心概念及实践](http://icodeit.org/jsccp/) (PDF)
*   [Javascript编程指南](http://pij.robinqu.me/) ([源码](https://github.com/RobinQu/Programing-In-Javascript))
*   [你不知道的Javascript](https://github.com/getify/You-Dont-Know-JS/tree/1ed-zh-CN)
*   [命名函数表达式探秘](http://justjavac.com/named-function-expressions-demystified.html) - kangax、为之漫笔(翻译) (原始地址无法打开，所以此处地址为justjavac博客上的备份)
*   [学用 JavaScript 设计模式](http://www.oschina.net/translate/learning-javascript-design-patterns) - 开源中国
*   [深入理解JavaScript系列](http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html)
### HTML / CSS

*   [CSS3 Tutorial 《CSS3 教程》](https://github.com/waylau/css3-tutorial)
*   [CSS参考手册](http://css.doyoe.com/)
*   [Emmet 文档](http://yanxyz.github.io/emmet-docs/)
*   [HTML5 教程](http://www.w3school.com.cn/html5/)
*   [HTML和CSS编码规范](http://codeguide.bootcss.com/)
*   [Sass Guidelines 中文](http://sass-guidelin.es/zh/)
*   [前端代码规范](http://alloyteam.github.io/CodeGuide/) - 腾讯AlloyTeam团队
*   [学习CSS布局](http://zh.learnlayout.com/)
*   [通用 CSS 笔记、建议与指导](https://github.com/chadluo/CSS-Guidelines/blob/master/README.md)


AT&T won't sell smartphones from Huawei, sources told the Wall Street Journal.

Huawei was rumored to be in talks to sell its Mate 10 smartphone through AT&T by February. It would have been the first time the Chinese company, which is currently the world's third largest telecommunications equipment manufacturer, partnered with a major U.S. carrier. The deal was expected to be announced at CES in Las Vegas on Tuesday.

However, the breakdown in the deal means Huawei's foray in the American market will be delayed.

AT&T and Huawei did not immediately respond to CNBC requests for comment.

- Additional reporting by Todd Haselton.


Polidocanol inhibits cowhage - but not histamine-induced itch in humans.
Polidocanol is a local anaesthetic and antipruritic compound that is used in the treatment of itching skin conditions such as eczema. Its mechanisms of action are largely ill defined. This study has compared the antipruritic efficacy of topical polidocanol in histamine-induced itch and a histamine-independent, cowhage-induced model of pruritus. Polidocanol (3%) or vehicle was applied topically under occlusion for 1 h to the forearms of 45 healthy volunteers before itch was provoked by rubbing in 40-45 spicules of cowhage or skin prick testing with 10 mg/ml histamine. Itch was recorded at 1-min intervals for 30 min on a 100-mm visual analogue scale. Polidocanol significantly reduced the area under the curve for cowhage-induced itch by 58% (P < 0.05), but had no significant effect on histamine-induced itch. This result underlines the importance of histamine-independent itch models in the development of topical antipruritic agents.


cDNA cloning and chromosomal mapping of a novel human GAP (GAP1M), a GTPase-activating protein of Ras.
We have previously isolated a novel Ras GTPase-activating protein (Ras GAP), Gap1m, from rat brain. Gap1m is considered to be a negative regulator of the Ras signaling pathways, like other Ras GAPs, neurofibromin, which is a gene product of the neurofibromatosis type I gene, and p120GAP. In this study we have isolated a human cDNA of this Gap and mapped the gene. The gene encodes a protein of 853 amino acids that shows 89% sequence identity to rat Gap1m. The human gene was mapped to chromosome 3 by PCR analysis on a panel of human-mouse hybrid cells. FISH analysis refined the location of the gene further to 3q22-q23.


The disclosure generally relates to earmuffs having ear cups adapted to be used as circumaural hearing protectors. More specifically, this disclosure relates to earmuffs comprising dual ear cups with one cup being positioned entirely within and mechanically isolated from the other and ear seals for use with such earmuffs.
Circumaural earmuff devices are commonly used to protect against hearing damage or hearing loss in noisy environments where the unwanted sound levels are higher than safe limits. Compared to other types of hearing protectors, such as earplugs, earmuffs (i.e. circumaural) are usually preferred in single hearing protection applications as the major hearing protection device because they are easy to don and doff, reliable in attenuation, with less dependence on user training, skill and motivation, less sensitive to fitting, and capable of being used as a one-size-fits-all device. Earmuff devices known in the prior art generally include a pair of ear cups made of rigid plastic materials. Each ear cup is typically single walled and lined with an acoustical material in the interior to help dampen and absorb sound energy. The two ear cups are mounted on the ends of a spring-like headband that provides a clamping force to keep the ear cups in contact with the wearer's head. A soft ear cushion (i.e. ear seal) having a concentric ring shape and with a certain thickness is interposed between the ear cup and the wearer's head for comfort purposes as well as to form, ideally, an airtight seal around the ear. Maximum sound attenuating capabilities are constantly pursued by developers to provide optimal protection against noise exposure.
At lower frequencies, such as below 1,000 Hz where the sound wavelength is considerably larger than the dimensions of the earmuff, the ear cup in the earmuff assembly is displaced, by the acoustic energy, as a rigid mass vibrating against the wearer's head through the soft cushion. That is, the ear cup can be considered as a single-degree-of-freedom (SDOF) vibration system at low frequencies where the acoustic pressure underneath the ear cup is proportional to the amplitude of the ear cup displacement. Therefore, at the low frequency range, the sound attenuation performance of the earmuff substantially depends on the ear cup volume, mass, headband clamping force and ear cushion stiffness. Many attempts have been made at increasing the sound attenuation of earmuff devices of the kind described above, i.e. the earmuffs with single-walled cups, by increasing the cup mass/volume and increasing the headband clamping force to tighten the fit of the ear cushions as well as to increase the cushion stiffness.
At higher frequencies, such as above 1,000 Hz, the sound wavelength becomes comparable or even smaller than the earmuff dimensions, and the ear cup flexural modes are excited by the acoustic energy. The sound attenuation performance of the earmuff is then largely determined by the structural rigidity and acoustical resonances inside the cavity enclosed by the ear cup and the wearer's head. Accordingly, many attempts have been made to increase the high frequency sound attenuation performance of earmuff devices by increasing the ear cup's structural stiffness and/or the acoustical damping inside the cup cavity. In addition, many other attempts have also been made at increasing the earmuff comfort and minimizing air leak by various ear seal designs that are for use with, particularly, earmuffs having single-walled cups.
Although these attempts may have resulted in certain increases in attenuation, the resulting increase in attenuation is limited by practical considerations in terms of comfort since adding cup mass, volume and headband clamping force, increasing cushion stiffness and structurally stiffening the cup usually raise the discomfort level. Further, the resulting increase in attenuation is also limited by physical laws associated with earmuff structures with single-walled cups. Sound attenuation provided by earmuffs is generally 10-30 dB for lower frequencies such as below 1,000 Hz, and 25-40 dB for higher frequencies such as above 1,000 Hz. These attenuation levels may not be sufficient for certain environments, such as the vicinity of jet engines of military and commercial aircrafts and extremely loud industrial or manufacturing plants where a very high sound attenuation is desired from earmuff devices.
Therefore, what would be useful would be a new earmuff design that not only is able to provide significantly improved sound attenuation performance compared to other circumaural earmuffs of the similar kind known in prior art, but also is able to offer sufficient comfort for practical use.