Okalanay . HaydenAlba. 8inchPrettyCASS. KateHottieBlond.
joliniefilleDanaAnalDreamsjoliniefilleJonSnow .HornyukguyMitsiechristananaugtyweetgirl .MorganFoxAmayaLilHotnhotChloeGonnaSquirt .FairyLiliananaugtyweetgirlTylorLeeFOXYDOLLHOTT .joliniefilleKARLKAM1KellyLollipopledyJenny .DreamNateKateHottieBlondmarilynsweettnorahai .ChloeGonnaSquirtMyrtheTainahoruhorneyAnitaCortez .HaydenAlbaDesirableKarryneQueenAsianAlexaXRapuncelX .KatrinaJadeBuxomPaulahoruhorneyMorganFox .excitinnngcouplegorgeousNICAAmayaLilSharon95 .SofyaIrishFOXYDOLLHOTTDesirableKarryneHaydenAlba .
NikolQuinaYohaTinellyMishaHottieYuki4U .PhoebeHunsandraWETnWILDtsJessykaRabbithoruhorney .CuteOra4UDesirableKarryneMrIncredible187OnlyInTheAss .CuteOra4UQueenAsianAlexaXmarilynsweettMishaHottie .JonSnowOnlyInTheAssFairyLilianaJessykaRabbit .AsianASSETexcitinnngcoupleledyJennySusanaLeyn .HORNYANASTASYYAMeganBrillRebecaHotxxxHornyukguy .BenitoHotnhotTorridMichelleCuteOra4U .RayixxxsosexyboobsMyrtheTainagorgeousNICA .funnyazaharaKateHottieBlondAngelJxledyJenny .RayiYohaTinellyDanaAnalDreamsHaydenAlba .


text:
<?php

declare(strict_types=1);

namespace Sylius\Tests\Controller;

use Lakion\ApiTestCase\JsonApiTestCase;
use Sylius\Component\Channel\Model\ChannelInterface;
use Symfony\Component\HttpFoundation\Response;

final class ChannelApiTest extends JsonApiTestCase
{
    /**
     * @var array
     */
    private static $authorizedHeaderWithAccept = [
        'HTTP_Authorization' => 'Bearer SampleTokenNjZkNjY2MDEwMTAzMDkxMGE0OTlhYzU3NzYyMTE0ZGQ3ODcyMDAwM2EwMDZjNDI5NDlhMDdlMQ',
        'ACCEPT' => 'application/json',
    ];

    /**
     * @var array
     */
    private static $authorizedHeaderWithContentType = [
        'HTTP_Authorization' => 'Bearer SampleTokenNjZkNjY2MDEwMTAzMDkxMGE0OTlhYzU3NzYyMTE0ZGQ3ODcyMDAwM2EwMDZjNDI5NDlhMDdlMQ',
        'CONTENT_TYPE' => 'application/json',
    ];

    /**
     * @test
     */
    public function it_does_not_allow_to_show_channels_list_when_access_is_denied(): void
    {
        $this->loadFixturesFromFile('resources/channels.yml');

        $this->client->request('GET', '/api/v1/channels/');

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'authentication/access_denied_response', Response::HTTP_UNAUTHORIZED);
    }

    /**
     * @test
     */
    public function it_denies_creating_channels_for_non_authenticated_user(): void
    {
        $this->client->request('POST', '/api/v1/channels/');

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'authentication/access_denied_response', Response::HTTP_UNAUTHORIZED);
    }

    /**
     * @test
     */
    public function it_does_not_allow_to_create_channel_without_specifying_required_data(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');

        $this->client->request('POST', '/api/v1/channels/', [], [], static::$authorizedHeaderWithContentType);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'channel/create_validation_fail_response', Response::HTTP_BAD_REQUEST);
    }

    /**
     * @test
     */
    public function it_allows_indexing_channels(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
        $this->loadFixturesFromFile('resources/channels.yml');

        $this->client->request('GET', '/api/v1/channels/', [], [], static::$authorizedHeaderWithAccept);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'channel/index_response', Response::HTTP_OK);
    }

    /**
     * @test
     */
    public function it_denies_getting_channel_for_non_authenticated_user(): void
    {
        $this->client->request('GET', '/api/v1/channels/none');

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'authentication/access_denied_response', Response::HTTP_UNAUTHORIZED);
    }

    /**
     * @test
     */
    public function it_does_not_allow_to_show_channel_when_it_does_not_exist(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');

        $this->client->request('GET', '/api/v1/channels/none', [], [], static::$authorizedHeaderWithContentType);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'error/not_found_response', Response::HTTP_NOT_FOUND);
    }

    /**
     * @test
     */
    public function it_allows_to_create_channel_with_required_data(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
        $this->loadFixturesFromFile('resources/locales.yml');
        $this->loadFixturesFromFile('resources/currencies.yml');

        $data =
            <<<EOT
        {
            "code": "mob",
            "name": "Channel for mobile",
            "taxCalculationStrategy": "order_items_based",
            "baseCurrency": "USD",
            "defaultLocale": "en_US",
            "enabled": true
        }
EOT;

        $this->client->request('POST', '/api/v1/channels/', [], [], static::$authorizedHeaderWithContentType, $data);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'channel/create_response', Response::HTTP_CREATED);
    }

    /**
     * @test
     */
    public function it_allows_to_create_channel_with_extra_data(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
        $this->loadFixturesFromFile('resources/locales.yml');
        $this->loadFixturesFromFile('resources/currencies.yml');
        $this->loadFixturesFromFile('resources/zones.yml');

        $data =
            <<<EOT
        {
            "code": "android",
            "name": "Channel for Android client",
            "taxCalculationStrategy": "order_items_based",
            "baseCurrency": "EUR",
            "defaultLocale": "en_US",
            "enabled": true,
            "description": "For now not required, for future development stages.",
            "defaultTaxZone": "EU",
            "hostname": "quickmart.eu",
            "currencies": [
                "GBP"
            ],
            "color": "ClassicBlue",
            "contactEmail": "admin@quickmart.eu",
            "skippingShippingStepAllowed": true,
            "skippingPaymentStepAllowed": true,
            "accountVerificationRequired": false
        }
EOT;

        $this->client->request('POST', '/api/v1/channels/', [], [], static::$authorizedHeaderWithContentType, $data);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'channel/create_with_extra_response', Response::HTTP_CREATED);
    }

    /**
     * @test
     */
    public function it_denies_updating_channel_for_non_authenticated_user(): void
    {
        $this->client->request('PUT', '/api/v1/channels/1');

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'authentication/access_denied_response', Response::HTTP_UNAUTHORIZED);
    }

    /**
     * @test
     */
    public function it_does_not_allow_to_update_channel_without_specifying_required_data(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
        $channels = $this->loadFixturesFromFile('resources/channels.yml');

        /** @var ChannelInterface $channel */
        $channel = $channels['channel_web'];

        $this->client->request('PUT', $this->getChannelUrl($channel), [], [], static::$authorizedHeaderWithContentType);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'channel/update_validation_fail_response', Response::HTTP_BAD_REQUEST);
    }

    /**
     * @test
     */
    public function it_allows_to_update_channel(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
        $channels = $this->loadFixturesFromFile('resources/channels.yml');

        /** @var ChannelInterface $channel */
        $channel = $channels['channel_web'];

        $data =
            <<<EOT
        {
            "color": "black",
            "enabled": false,
            "description": "Lorem ipsum",
            "name": "Web Channel",
            "hostname": "localhost",
            "taxCalculationStrategy": "order_items_based"
        }
EOT;

        $this->client->request('PUT', $this->getChannelUrl($channel), [], [], static::$authorizedHeaderWithContentType, $data);

        $response = $this->client->getResponse();
        $this->assertResponseCode($response, Response::HTTP_NO_CONTENT);

        $this->client->request('GET', $this->getChannelUrl($channel), [], [], static::$authorizedHeaderWithAccept);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'channel/update_response', Response::HTTP_OK);
    }

    /**
     * @test
     */
    public function it_allows_showing_channel(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
        $channels = $this->loadFixturesFromFile('resources/channels.yml');
        /** @var ChannelInterface $channel */
        $channel = $channels['channel_web'];

        $this->client->request('GET', $this->getChannelUrl($channel), [], [], static::$authorizedHeaderWithContentType);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'channel/show_response', Response::HTTP_OK);
    }

    /**
     * @test
     */
    public function it_returns_not_found_response_when_partially_updating_channel_which_does_not_exist(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');

        $this->client->request('PATCH', '/api/v1/channels/-1', [], [], static::$authorizedHeaderWithAccept);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'error/not_found_response', Response::HTTP_NOT_FOUND);
    }

    /**
     * @test
     */
    public function it_allows_to_partially_update_channel(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
        $channels = $this->loadFixturesFromFile('resources/channels.yml');

        /** @var ChannelInterface $channel */
        $channel = $channels['channel_web'];

        $data =
            <<<EOT
        {
            "color": "black",
            "enabled": false
        }
EOT;

        $this->client->request('PATCH', $this->getChannelUrl($channel), [], [], static::$authorizedHeaderWithContentType, $data);

        $response = $this->client->getResponse();
        $this->assertResponseCode($response, Response::HTTP_NO_CONTENT);

        $this->client->request('GET', $this->getChannelUrl($channel), [], [], static::$authorizedHeaderWithAccept);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'channel/update_response', Response::HTTP_OK);
    }

    /**
     * @test
     */
    public function it_does_not_allow_to_delete_non_existing_channel(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');

        $this->client->request('DELETE', '/api/v1/channels/-1', [], [], static::$authorizedHeaderWithAccept);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'error/not_found_response', Response::HTTP_NOT_FOUND);
    }

    /**
     * @test
     */
    public function it_allows_to_delete_channel(): void
    {
        $this->loadFixturesFromFile('authentication/api_administrator.yml');
        $channels = $this->loadFixturesFromFile('resources/channels.yml');
        $channel = $channels['channel-mob'];

        $this->client->request('DELETE', $this->getChannelUrl($channel), [], [], static::$authorizedHeaderWithContentType);

        $response = $this->client->getResponse();
        $this->assertResponseCode($response, Response::HTTP_NO_CONTENT);

        $this->client->request('GET', $this->getChannelUrl($channel), [], [], static::$authorizedHeaderWithAccept);

        $response = $this->client->getResponse();
        $this->assertResponse($response, 'error/not_found_response', Response::HTTP_NOT_FOUND);
    }

    /**
     * @param ChannelInterface $channel
     *
     * @return string
     */
    private function getChannelUrl(ChannelInterface $channel): string
    {
        return '/api/v1/channels/' . $channel->getCode();
    }
}

redpajama_set_name: RedPajamaGithub


The Healthcare Information and Management Systems Society (HIMSS) and the College of Health Information Management Executives (CHIME) announced a pivotal agreement to jointly partner on all programs and professional communities outside of North America. Through HIMSS-CHIME International, healthcare information technology's (HIT) two most visible and successful non-profit organizations will work collaboratively and strategically to transform healthcare across the globe.
HIMSS-CHIME International will offer exclusive HIT executive boot camps, leadership academies, certifications and events. Professional credentials will include the CHIME Certified Healthcare CIO (CHCIO) and the HIMSS Certified Professional in Health Information Management Systems (CPHIMS). The new partnership reflects a growing recognition that health IT leaders are seeking opportunities to grow their careers, and are eager to share best practices as they strive to improve patient care around the world.
HIMSS-CHIME International will be formally unveiled at the HIMSS World of Health IT event which is expected to be one of the most influential and innovative Pan-European eHealth events, and is taking place in Barcelona on 21-22 November 2016.
– The Healthcare Information and Management Systems Society (HIMSS) and the College of Health Information Management Executives (CHIME) announced a pivotal agreement to jointly partner on all programs and professional communities outside of North America.
– HIMSS-CHIME International will offer exclusive HIT executive boot camps,leadership academies, certifications and events.


text:
Dr Patrick Chaplin
Dr. Darts
Darts History
Dartboards and darts
Organisers and Commentators
Ladies Darts
Games & Setup
International Darts
Pub History
Pub Games
Pub Signs
OLIVER JAMES – WALES' FIRST NEWS OF THE WORLD CHAMPION
19Sep 2019 19 Sep 2019
Despite Wales sending Divisional champions to London for the Grand Finals of the News of the World every year since the competition was restored after the Second World War in the 1947/48 season, the country had to wait until 1954 until the trophy was lifted by a Welsh champion, Oliver James.
This is Oliver's story.
In an article written by journalist Barry Walsh in the early 1960s titled 'Oliver James – Darts Champion Supreme' culled from an unnamed Welsh newspaper, Walsh's opening gambit read:
Pandemonium broke out in Earls Court, London, on an evening in 1954, when 6,000 wildly excited darts enthusiasts, – many of whom travelled up from the Dulais Valley – saw a 52-years-old Seven Sisters grandfather, Oliver James, beat the cream players of the country to become the first Welshman to win the much coveted "News Of The World" individual darts championship of England and Wales. A magnificent record coupled with another, for Oliver still holds the record of being the oldest ever player to win the national title…
Oliver, by then 61-years old, was interviewed because of the fact that 'Wales's only British darts champion' had been made an honorary member of the team he had played for in recent years – the "Coalites" of the Half Way Inn, Onllwyn. In a letter notifying him of this honour, team captain and secretary Ray Venn wrote, 'We will always admire and cherish the name of Oliver James.'
Oliver James (pictured below) was born in the town of Pembroke on 1st March 1902, son of the town crier. At the age of 15, Oliver went out into the wide world but soon settled at Nantymoel in the Ogmore Valley where he became a collier and eventually moved to Seven Sisters. As a youngster he took an interest in indoor sports and gained success as an exponent of table tennis, billiards and table quoits. In spite of his useful ability at these games, Oliver treated them 'merely as a pastimes.'
He was introduced to darts in 1937 and played for 'Hoopers Shop' in the Dulais Valley Shoppers League, the original darts league in the valley. League Officials applied to the local Welfare association asking them to present a shield for individual competition in the league and this was agreed. Oliver subsequently won that trophy three times and earned success with the "Hoopers shop" team of Martyn's Avenue, Seven Sisters, which included such local stars as Stan Jones ('The Milk') and Syd Williams ('The Ostler). Despite these successes the league eventually disbanded.
During his interview with Barry Walsh, Oliver James said, "Darts was growing far more popular by now and was being introduced into public houses [rather than just clubs]." With his other team disbanded, Oliver joined the team at the Ex-Servicemen's Club, at Dyffryn Cellwen, Onllwyn, competing in the Club Institute Union (CIU) League. Oliver said, "It was the best team and league I have ever played in." It was while playing for the club that he won his News of the World title.
A fixed pattern of afternoon shifts working down the mine, meant that Oliver was unable to enter even the preliminary rounds of the News of the World until 1952. Even then his first attempt at the News of the World title in the 1952/53 season ended abruptly when he was beaten in one of the preliminary rounds by Len Heath, a teammate at the Ex-Servicemen's Club. However, Oliver did not have to wait long for success.
At the start of the 1953/54 season, armed with his 'bombers', heavy-weighted brass darts he had always used, darts he had specially filed down for better grip, Oliver won through the News of the World preliminary rounds. From there he travelled to Cardiff where he won the Wales divisional title, being presented with a magnificent trophy by former international and Captain of the Glamorgan County Cricket Club, Wilfred Wooller. (See image. Oliver James is on the right.)
The news that Oliver had made it through to the News of the World finals at the Empress Hall, Earl's Court, London, spread like wildfire throughout the Dulais Valley and his supporters set about organising their trek to the capital.
Barry Walsh's report revealed that, as it was holiday time, an unassuming Oliver, 'in his usual cool and calculative manner,' decided to make his visit to London serve a dual purpose. On his way to the finals he travelled to Gillingham, Kent to visit his son, daughter-in-law and two grandchildren, for a brief holiday before the big day.
While Oliver was relaxing with his family, panic-stricken organisers visited Oliver's home to find it empty. Frantic telegrams and telephone calls (no mobile phones in those days) were made to try and track him down. At the last moment they discovered where he was. Oliver told Barry Walsh, "A report appeared in a paper that I was missing, but I got to London in plenty of time."
According to Walsh's report, Oliver's nerves were unshaken by a crowded Earl's Court, and the '6,000-plus baying fans.' He was confident from the outset. Walsh reported that Oliver's band of Dulais Valley supporters, 'in a state of nail-biting tension, watched in silence as he took on Peter Aldridge, the London and Home Counties champion, in the quarter final. On his first visit to the board he notched up a good ton and finally defeated Aldridge by two legs to one.'
In the semi-finals, Oliver came up against Alec Adamson, the North of England champion. Unperturbed and with frequent tons and 140's, the Welsh champion strode through to the finals by two straight legs. Afterwards, Oliver learned that he would be meeting the Eastern Counties champion Johnny Bell, representing the Sun Inn, Waltham Abbey, Essex, in the final, a man regarded as the 'dark horse' of the grand finals.
'Dark horse' or not, Oliver remained calm and unruffled and threw consistently well, comfortably winning the first leg against Bell. However, the second leg was a different story. Bell hit form, striking four consecutive tons but, again, Oliver seemed unperturbed and battled on. Oliver told Barry Walsh, "The Eastern champion left himself on double 18 while I wanted 224. But Bell had cracked, he had shot his bolt."
Within another three darts, after Bell had 'wire trouble,' his darts hugging the wire of double 18, Oliver, scoring 99, reduced his remaining score to 125. Johnny Bell's next three darts again struck outside his required double. With tension running high, Oliver strode up to the oche, pinned his first dart in the treble 20 (60), embedded his second in the outer bull (25) and narrowly missed the match-winning double top. Sensing that he must put that double away, Bell pinned the first two darts of his next throw close to the wire and then hit a single 18 with the third.
By now the tension by was unbearable. Oliver told Walsh that you could have heard a pin-drop in the Empress Hall. Oliver moved up to the hockey (as it was spelt in those days) and, with his first dart, hit the winning double top. Pandemonium broke out throughout the Hall as a delighted Oliver, his cool temperament discarded, jumped on his opponent's back!
Oliver James was presented with the magnificent silver cup by the famous air ace Douglas Bader who was, at the time, Air Correspondent to the News of the World. After witnessing the final Bader was quoted as saying, "I have never been to a darts competition before but at times I was simply trembling with excitement." Afterwards Oliver James was chaired from the vast arena by his jubilant band of supporters.
After winning the national crown, Oliver's feat was recognised locally when he was presented with a silver lighter by the Neath Sports Club panel, a gold watch by the Ex-Servicemen's Club and a silver cup by Councillor Lal Evans, who at the time was president of the club and was among Oliver's supporters at Earl's Court.
Although he never again made it to the News of the World finals, Oliver went on to earn more trophies at a local level and in 1961, with the 'Coalites,' (the Welsh county and area champions) made it as far as the finals of The People Lord Lonsdale Darts Team National Championship in London. However, the team failed to win that trophy.
In his report in the early 1960s, Barry Walsh stated that, 'Oliver still enjoys playing the game. His three sons also play… Mrs James, who has little interest in the game, remarked humorously, "I suppose I have been a darts widow."
Oliver James died following a heart attack on 10th August 1971.
Patrick Chaplin
Original text ©2014 Patrick Chaplin. Images from the PC Archive or as sourced.
(My thanks to Oliver's great-grandson Simon for providing much of the information and some of the images included in this article.)
Published by Patrick
View all posts by Patrick
Previous 25 YEARS OF THE PDC WORLD CHAMPIONSHIPS
Next TONY SONTAG – ENGLAND INTERNATIONAL
DR. DARTS' Newsletter (ddn)
All content © Patrick Chaplin unless stated

redpajama_set_name: RedPajamaCommonCrawl


If you don't want to pull your stone out to sharpen your knife halfway through field dressing that elk, this Grizzly Ridge Folding Knife should be your go-to. It's one of the finest knives built by the experts at Benchmade®. Everything about it – from the supremely functional blade length to the handle's perfect balance – is designed to suit the serious outdoorsman. The USA-made S30V steel blade holds a wicked sharp edge, and the action is buttery smooth without a hint of play. Axis lock studs let you open the knife with the flick of thumb. The rubberized grip is a real winner – fits the palm perfectly with a grippy texture to eliminate slippage or spin. Even the color scheme is smart, with eye-catching spots of hunter orange so you won't be kicking yourself about walking off without it.
Weighs less than 4 oz.


text:
Q: Validate UUID with Laravel Validation Is there a built-in way to validate UUID with a validation rule? I did not found anything about this in the "Available Validation Rules" documentation.

A: Laravel 5.6 provides the ramesey/uuid package out of the box now.
You can use its "isValid" method now to check for a UUID. I noticed that the regex in the solution above would fail sometimes. I haven't had any issue yet with the package used by Laravel internally.
Validator::extend('uuid', function ($attribute, $value, $parameters, $validator) {
    return \Ramsey\Uuid\Uuid::isValid($value);
});

Unrelated to the question but you can now also generate a UUID using the "Str" class from Laravel. It is the reason why ramsey/uuid is now included by default, removing the necessity to include your own regex.
\Illuminate\Support\Str::uuid();

A: You can extend the validator helper in Laravel to add your custom validation rules, for example I've created my own validation rule to validate location using regex as follow:
Validator::extend('location', function ($attribute, $value, $parameters, $validator) {
    return preg_match('/^-?\d{1,2}\.\d{6,}\s*,\s*-?\d{1,2}\.\d{6,}$/', $value);
});

Referencing this post: PHP preg_match UUID v4
You can the use UUID regex to create it as follows:
Validator::extend('uuid', function ($attribute, $value, $parameters, $validator) {
    return preg_match('/[a-f0-9]{8}\-[a-f0-9]{4}\-4[a-f0-9]{3}\-(8|9|a|b)[a-f0-9]{3}\-[a-f0-9]{12}/', $value);
});

Hope that this match your request.

A: Actually, Laravel 5.7 supports UUID validation.
$validation = $this->validate($request, [
    'uuid_field' => 'uuid'
]);

Based on documentation.

A: For the ones that are having problem using the validation uuid method in Laravel 5.7, I fixed by updating Laravel (it was 5.7.6 then after updating 5.7.28) and it worked!

A: Laravel 5.7 UUID validation is not working for some reason. At least I get
InvalidArgumentException: validation.uuid.

The best way to fix this is to create a rule out of it.
php artisan make:rule UUID

Here is my rule class for UUID validation:
namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use Ramsey\Uuid\Uuid as UuidValidator;

class UUID implements Rule
{
    /**
     * Validate UUID
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return UuidValidator::isValid($value);
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'Supplied :attribute is not valid UUID!';
    }
}

Then you can use it manually like this
$validator = Validator::make($data->all(), ['uuid' => new UUID]);

if ($validator->fails()) {
     // Do whatever
}

Or use it with http request validation like this
namespace App\Http\Requests;

use App\Rules\UUID;
use Illuminate\Foundation\Http\FormRequest;

class UserRequest extends FormRequest
{
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'uuid' => ['required', new UUID],
            'email' => ['required','email']
        ];
    }
}

redpajama_set_name: RedPajamaStackExchange


The American Association of People with Disabilities was founded in 1995 in part to advocate for the enforcement of the Americans with Disabilities Act. They offer research and resources on voting with a disability as part of their work.
Many of the politicians with disabilities on the federal level became physically disabled during military service during a war, including Tammy Duckworth, an Illinois senator who is a double amputee from injuries she received during the Iraq War.
What links can you find between veterans and people with disabilities? Why might veterans be the most common people with disabilities in office?
People with disabilities often face direct challenges when they go to a polling place to vote. Think about the barriers that might come up for them and how those barriers are similar to or different from the barriers that affect other communities today.
Why might people with different disabilities vote at different rates than other groups?
How is this different from other historically oppressed groups? Why?
How might different technologies allow people with disabilities greater access to polls?
Why might these technologies still not increase voter turnout among people with disabilities?


text:
Q: Storage Access Framework - Permanent permission grant fails on user-selected folder I am trying to test Storage Access Framework in a sample Activity.
The goal is to get a permanent read/write permission on a folder Uri the user has selected.
Here's how the app starts the SAF file picker:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE);

onActivityResult method is called:
@Override
protected void onActivityResult(int requestCode,int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == OPEN_DIRECTORY_REQUEST_CODE)
    {
        if (resultCode == Activity.RESULT_OK)
        {
            int takeFlags = data.getFlags()& (Intent.FLAG_GRANT_READ_URI_PERMISSION
                    | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            ContentResolver resolver = this.getContentResolver();
            resolver.takePersistableUriPermission(data.getData(),takeFlags);
            updateDirectoryEntries(data.getData());

        } else
          {
            // The user cancelled the request.
          }
    }
}

I get this uri
"/tree/raw:/storage/emulated/0/Download/prova1"

and take it as a string.
Next time the app runs the following method is called:
public void consumeUri(String uriPath)
{
    ContentResolver contentResolver;
    contentResolver = this.getContentResolver();
    Uri uri;
    Uri docUri;
    uri=Uri.parse(uriPath);
    docUri= DocumentsContract.buildDocumentUriUsingTree(uri,
            DocumentsContract.getTreeDocumentId(uri)); //error here
}

I get this stack trace:
java.lang.IllegalArgumentException: Invalid URI: /tree/raw:/storage/emulated/0/Download/prova1
    at android.provider.DocumentsContract.getTreeDocumentId(DocumentsContract.java:1023)
    at com.example.myapplication.MainActivity.consumeUri(MainActivity.java:123)
    at com.example.myapplication.MainActivity$1.onClick(MainActivity.java:54)
    at android.view.View.performClick(View.java:6330)
    at android.view.View$PerformClick.run(View.java:24967)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6687)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)

What's wrong with my code?

A: It seems that the right way to save a Uri path is by means of
uri.toString();

the Uri path will have this form:
content://com.android.providers.downloads.documents/tree/raw%3A%2Fstorage%2Femulated%2F0%2FDownload%2Ftest_folder


text:
«Киевская Русь» — кинотеатр в Киеве. Крупнейший украинский коммунальный кинотеатр.

 Адрес кинотеатра: Киев, ул. Сечевых Стрельцов, 93.
 Ближайшая станция метро: Лукьяновская

Построен на месте кинотеатра «Коммунар», открыт в 1982 году к празднованию 1500-летия Киева. В оформлении здания использованы полированный мрамор, гранит, керамика, алюминий и пр. Перед главным входом — фонтан с бассейном (архитекторы В. Таенчук, Н. Босенко).

Залы
В кинотеатре два зала:
 Большой («Зал djuice», 1192 места). Тут установлен самый большой экран Украины — 26 на 11 м; С 2010 демонстрация в 3D-формате.
 Малый (176 мест).

Ссылки
 Сайт кинотеатра

Кинотеатры Киева
Шевченковский район (Киев)

redpajama_set_name: RedPajamaWikipedia


We offer 15-day money back guarantee for all our extensions. You can get a full refund if you are not satisfied with any of our extensions (if the product does not fulfill the functionality as described) during 15 days for all our extensions, unless copyright is infringed.
To get the refund please contact us with your order number. All refund requests submitted after 15 days are not accepted.
Fees for installation, conflicts resolution and customization services are not refundable. We reserve the right to update Customer Service Policy at any time. We will promptly reflect any such modifications on these Web pages.
One License is valid for one live domain only, how ever customer can request additional licenses for test domains that we can provide without additional cost.
Refund request that ask for more live domain licenses then entered in "No of live domain" field will not be refunded.
Installation Cost is not Refundable.


text:
import Logger from './logger';
import Hooker from './hooker';
import { fullscreen } from './fullscreen';
import { webFullscreen } from './web-fullscreen';
import { flvInfo } from './parsed-data';

class Patch {
    constructor() {
        this._installed = false;
    }

    install() {
        if (!this._installed) {
            this._installed = true;
            this._prepare();
            this._apply();
        }
    }

    _prepare() {}

    _apply() {}
}

class VipPatch extends Patch {
    constructor() {
        super();
    }

    _apply() {
        Hooker.hookUser((exports) => {
            const proto = exports.__proto__;
            proto.isVipSync = () => true;
            proto.isVip = (cb) => setTimeout(cb, 0, true);
            Logger.info('The vip patch has been installed');
        });
    }
}

class AdsPatch extends Patch {
    constructor() {
        super();
    }

    _fakeAdsData() {
        return {};
    }

    _apply() {
        Hooker.hookShowRequest((exports) => {
            const proto = exports.prototype;
            proto.request = (cb) => setTimeout(cb, 0, this._fakeAdsData());
            Logger.info('The ads patch has been installed');
        });
    }
}

class WatermarksPatch extends Patch {
    constructor() {
        super();
    }

    _apply() {
        Hooker.hookLogo((exports) => {
            exports.prototype.showLogo = () => {};
            Logger.info('The watermarks patch has been installed');
        });
    }
}

class ControlsPatch extends Patch { // Prevent the player controls were disabled.
    constructor() {
        super();
    }

    _apply() {
        Hooker.hookSkinBase((exports) => {
            exports.prototype._checkPlugin = () => {}; // This function disables the player controls when playing ads and enables when done.
            Logger.info('The controls patch has been installed');
        });
    }
}

class CorePatch extends Patch {
    constructor() {
        super();
    }

    _prepare() {
        this._initShowTip();
        this._initPlaybackRate();
    }

    _initShowTip() {
        Hooker.hookPluginControlsInit((that) => {
            that.core.on('showtip', (event) => {
                that.setcontroltip.apply(that, [{str: event.data, x: that._process.offset().left, y: 3, cut: true, timeout: true}]);
                if (that.$plugin.hasClass('process_hidden')) {
                    that._controltips.css('top', '-25px');
                } else if (that.$plugin.hasClass('bottom-hide')) {
                    that._controltips.css('top', '-38px');
                }
            });
        });
    }

    _initPlaybackRate() {
        Hooker.hookPluginControls((exports) => {
            exports.prototype.initPlaybackRate = function() {
                const core = this.core;

                let rate = parseFloat(localStorage.getItem('QiyiPlayerPlaybackRate'));
                rate = isNaN(rate) ? 1 : rate;

                if (core.getCurrStatus() === 'playing') {
                    core.setPlaybackRate(rate);
                } else {
                    const onstatuschanged = (evt) => {
                        if (evt.data.state === 'playing') {
                            core.setPlaybackRate(rate);
                            core.un('statusChanged', onstatuschanged);
                        }
                    };
                    core.on('statusChanged', onstatuschanged);
                }

                const $ul = this.$playbackrateUl;
                $ul.find(`[data-pbrate="${rate}"]`).addClass('selected');

                const $items = $ul.find('li');
                $items.on('click', function() {
                    const rate = parseFloat(this.getAttribute('data-pbrate'));
                    if (!this.classList.contains('selected')) {
                        $items.removeClass('selected');
                        this.classList.add('selected');
                    }
                    localStorage.setItem('QiyiPlayerPlaybackRate', rate);
                    core.setPlaybackRate(rate);
                });

                this.$playsettingicon.on('click', function() {
                    const rate = core.getPlaybackRate();
                    const $item = $ul.find(`[data-pbrate="${rate}"]`);
                    if ($item.length === 1) {
                        if (!$item.hasClass('selected')) {
                            $items.removeClass('selected');
                            $item.addClass('selected');
                        }
                    } else {
                        $items.removeClass('selected');
                    }
                });
            };
        });
    }

    _apply() {
        Hooker.hookCore((exports) => {
            const proto = exports.prototype;

            proto._showTip = function(msg) {
                this.fire({type: 'showtip', data: msg});
            };

            proto.getFPS = function() {
                if (flvInfo) {
                    return flvInfo.videoConfigTag.sps.frame_rate.fps;
                } else {
                    return 25; // f4v极速以上,动画23.976、电影24、电视剧25。
                }
            };

            proto.prevFrame = function() {
                const video = this.video();
                const seekTime = Math.max(0, Math.min(this.getDuration(), video.currentTime - 1 / this.getFPS()));
                video.currentTime = seekTime;
                this._showTip('上一帧');
            };

            proto.nextFrame = function() {
                const video = this.video();
                const seekTime = Math.max(0, Math.min(this.getDuration(), video.currentTime + 1 / this.getFPS()));
                video.currentTime = seekTime;
                this._showTip('下一帧');
            };

            proto.seek = function(...args) {
                const video = this.video();
                const playbackRate = video.playbackRate;
                this._engine.seek(...args);
                video.playbackRate = playbackRate;
            };

            proto.stepSeek = function(stepTime) {
                const seekTime = Math.max(0, Math.min(this.getDuration(), this.getCurrenttime() + stepTime));
                let msg;

                if (Math.abs(stepTime) < 60) {
                    msg = stepTime > 0 ? `步进:${stepTime}秒` : `步退:${Math.abs(stepTime)}秒`;
                } else {
                    msg = stepTime > 0 ? `步进:${stepTime/60}分钟` : `步退:${Math.abs(stepTime)/60}分钟`;
                }
                this._showTip(msg);

                this.seek(seekTime, true);
            };

            proto.rangeSeek = function(range) {
                const duration = this.getDuration();
                const seekTime = Math.max(0, Math.min(duration, duration * range));
                this.seek(seekTime, true);
                this._showTip('定位:' + (range * 100).toFixed(0) + '%');
            };

            proto.toggleMute = function() {
                if (this.getMuted()) {
                    this.setMuted(false);
                    this._showTip('取消静音');
                } else {
                    this.setMuted(true);
                    this._showTip('静音');
                }
            };

            proto.adjustVolume = function(value) {
                let volume = this.getVolume() + value;
                volume = Math.max(0, Math.min(1, volume.toFixed(2)));
                this.setVolume(volume);
                this.fire({type: 'keyvolumechange'});
            };

            proto.getPlaybackRate = function() { // iqiyi 的这个方法有bug,没把值返回!
                return this._engine.getPlaybackRate();
            };

            proto.adjustPlaybackRate = function(value) {
                const currRate = this.getPlaybackRate();
                const rate = Math.max(0.2, Math.min(5, parseFloat((currRate + value).toFixed(1))));

                localStorage.setItem('QiyiPlayerPlaybackRate', rate);
                this.setPlaybackRate(rate);
                this._showTip(`播放速率:${rate}`);
            };

            proto.turnPlaybackRate = function() {
                const currRate = this.getPlaybackRate();
                let rate;
                if (currRate !== 1) {
                    this._backRate = currRate;
                    rate = 1;
                } else {
                    rate = this._backRate || 1;
                }

                this.setPlaybackRate(rate);
                this._showTip(`播放速率:${rate}`);
            };

            proto.hasPrevVideo = function() {
                return this._getVideoIndexInList(this._movieinfo.tvid) > 0 || this._getVideoIndexInList(this._movieinfo.oldTvid) > 0;
            };

            proto.playNext = function() {
                if (this.hasNextVideo()) {
                    this._showTip('播放下一集');
                    this.switchNextVideo();
                } else {
                    this._showTip('没有下一集哦');
                }
            };

            proto.playPrev = function() {
                if (this.hasPrevVideo()) {
                    this._showTip('播放上一集');
                    this.switchPreVideo();
                } else {
                    this._showTip('没有上一集哦');
                }
            };

            Logger.info('The core patch has been installed');
        });
    }
}

const corePatch = new CorePatch();

class KeyShortcutsPatch extends Patch {
    constructor() {
        super();
    }

    _prepare() {
        corePatch.install();
    }

    _apply() {
        Hooker.hookPluginHotKeys((exports) => {
            const proto = exports.prototype;

            proto.init = function() {
                document.addEventListener('keydown', this._keydown.bind(this));
            };

            proto._isValidTarget = function(target) {
                return target.nodeName === 'BODY' || target.nodeName == 'VIDEO' || target.classList.contains('pw-video'); // 全局
                // return target.nodeName === 'VIDEO' || target.classList.contains('pw-video'); // 非全局
            };

            proto._keydown = function(event) {
                if (!this._isValidTarget(event.target)) return;

                const { keyCode, ctrlKey, shiftKey, altKey } = event;
                const core = this.core;

                switch (keyCode) {
                case 32: // Spacebar
                    if (!ctrlKey && !shiftKey && !altKey) {
                        if (core.isPaused()) {
                            core.play(true);
                            core._showTip('播放');
                        } else {
                            core.pause(true);
                            core._showTip('暂停');
                        }
                    } else {
                        return;
                    }
                    break;
                case 39:    // → Arrow Right
                case 37: {  // ← Arrow Left
                    let stepTime;
                    if (!ctrlKey && !shiftKey && !altKey) {
                        stepTime = 39 === keyCode ? 5 : -5;
                    } else if (ctrlKey && !shiftKey && !altKey) {
                        stepTime = 39 === keyCode ? 30 : -30;
                    } else if (!ctrlKey && shiftKey && !altKey) {
                        stepTime = 39 === keyCode ? 60 : -60;
                    } else if (ctrlKey && !shiftKey && altKey) {
                        stepTime = 39 === keyCode ? 3e2 : -3e2; // 5分钟
                    } else {
                        return;
                    }

                    core.stepSeek(stepTime);
                    break;
                }
                case 38: // ↑ Arrow Up
                case 40: // ↓ Arrow Down
                    if (!ctrlKey && !shiftKey && !altKey) {
                        core.adjustVolume(38 === keyCode ? 0.05 : -0.05);
                    } else {
                        return;
                    }
                    break;
                case 77: // M
                    if (!ctrlKey && !shiftKey && !altKey) {
                        core.toggleMute();
                    } else {
                        return;
                    }
                    break;
                case 13: // Enter
                    if (!ctrlKey && !shiftKey && !altKey) {
                        fullscreen.toggle();
                    } else if (ctrlKey && !shiftKey && !altKey) {
                        webFullscreen.toggle();
                    } else {
                        return;
                    }
                    break;
                case 67: // C
                case 88: // X
                    if (!ctrlKey && !shiftKey && !altKey) {
                        core.adjustPlaybackRate(67 === keyCode ? 0.1 : -0.1);
                    } else {
                        return;
                    }
                    break;
                case 90: // Z
                    if (!ctrlKey && !shiftKey && !altKey) {
                        core.turnPlaybackRate();
                    } else {
                        return;
                    }
                    break;
                case 68: // D
                case 70: // F
                    if (!ctrlKey && !shiftKey && !altKey) {
                        core.pause(true);
                        if (keyCode === 68) {
                            core.prevFrame();
                        } else {
                            core.nextFrame();
                        }
                    } else {
                        return;
                    }
                    break;
                case 80: // P
                case 78: // N
                    if (!ctrlKey && shiftKey && !altKey) {
                        if (keyCode === 78) {
                            core.playNext();
                        } else {
                            core.playPrev();
                        }
                    } else {
                        return;
                    }
                    break;
                case 27: // ESC
                    if (!event.ctrlKey && !event.shiftKey && !event.altKey)
                        webFullscreen.isWebFullScreen() && webFullscreen.exit();
                    return;
                default:
                    if (keyCode >= 48 && keyCode <= 57) { // 0 ~ 9
                        if (!ctrlKey && !shiftKey && !altKey) {
                            core.rangeSeek((keyCode - 48) * 0.1);
                        } else {
                            return;
                        }
                    } else {
                        return;
                    }
                }

                event.preventDefault();
                event.stopPropagation();
            };

            Logger.info('The keyboard shortcuts patch has been installed');
        });
    }
}

class MouseShortcutsPatch extends Patch {
    constructor() {
        super();
    }

    _prepare() {
        corePatch.install();
    }

    _apply() {
        Hooker.hookDefaultSkin((exports) => {
            exports.prototype._initDBClicks = function() {
                let timer, core = this.core;
                this.videoWrapper.find('video').on('click', () => {
                    if (timer) {
                        clearTimeout(timer);
                        timer = null;
                        return;
                    }
                    timer = setTimeout(() => {
                        if (core.isPaused()) {
                            core.play(true);
                        } else {
                            core.pause(true);
                        }
                        timer = null;
                    }, 200);
                }).on('dblclick', (event) => {
                    event.preventDefault();
                    event.stopPropagation();
                    if (event.ctrlKey) {
                        webFullscreen.toggle();
                    } else {
                        fullscreen.toggle();
                    }
                }).on('wheel', (event) => {
                    if (fullscreen.isFullScreen() || webFullscreen.isWebFullScreen()) {
                        const delta = event.wheelDelta || event.detail || (event.deltaY && -event.deltaY);
                        core.adjustVolume(delta > 0 ? 0.05 : -0.05);
                    }
                });
            };

            Logger.info('The mouse shortcuts patch has been installed');
        });
    }
}

class UseWebSocketLoaderPatch extends Patch {
    constructor() {
        super();
        this.tryWs = GM_getValue('tryWs', false);
    }

    _prepare() {
        this._addSetting();
    }

    _apply() {
        const that = this;
        Hooker.hookFragment((exports) => {
            Reflect.defineProperty(exports.prototype, 'tryWS', {
                get: () => this._tryWs || that.tryWs, // Will use the WebSocket loader if the value of tryWs is true.
                set: (value) => this._tryWs = value, // The value of tryWs will be true if the Fetch loader fails.
            });
            Logger.info('The WebSocket loader patch has been installed');
        });
    }

    _addSetting() {
        const that = this;
        Hooker.hookPluginControls((exports) => {
            const initSetting = exports.prototype.initSetting;
            exports.prototype.initSetting = function() {
                const div = document.createElement('div');
                div.innerHTML = `

                        WebSocket

`;
                const item = div.querySelector('.setPop_item');
                this.$playsettingbox.find('.video_setPop_top').append(item);
                this.$usewebsocketBtn = this.$playsettingbox.find('[data-player-hook="usewebsocketloader"]');

                if (that.tryWs) {
                    this.$usewebsocketBtn.removeClass('setPop_switch_close');
                }
                this.$usewebsocketBtn.on('click', () => {
                    this.$usewebsocketBtn.toggleClass('setPop_switch_close');
                    that.tryWs = !that.tryWs;
                    GM_setValue('tryWs', that.tryWs);
                });

                initSetting.apply(this);
            };
        });
    }
}

class KeepHookingPatch extends Patch {
    constructor() {
        super();
    }

    _apply() {
        Hooker.keepalive = true;
        Logger.info('The keep hooking patch has been installed');
    }
}

export const vipPatch = new VipPatch();
export const adsPatch = new AdsPatch();
export const controlsPatch = new ControlsPatch();
export const watermarksPatch = new WatermarksPatch();
export const keepHookingPatch = new KeepHookingPatch();
export const keyShortcutsPatch = new KeyShortcutsPatch();
export const mouseShortcutsPatch = new MouseShortcutsPatch();
export const useWebSocketLoaderPatch = new UseWebSocketLoaderPatch();


text:
Developers can now submit a claim in settled lawsuit with Apple
Posted by Dennis Sellers | Jan 14, 2022 | MacTech News |
In August 2021 Apple announced a number of changes coming to the App Store that, pending court approval, will resolve a class-action suit from US developers. Now a website that will allow developers to submit a claim for a payout has gone live.
Developers may be included in this settlement and entitled to receive a payment if they are or were a U.S. developer of any Apple iOS application or in-app product (including subscriptions) that:
Was sold for a non-zero price;
Was sold via Apple's iOS App Store between 2015 and 2021; and
Earned, together with any other iOS applications or in-app products (including subscriptions) sold through all of your associated developer accounts, proceeds equal to or less than $1,000,000.00 through the App Store U.S. storefront in every calendar year from 2015 to 2021 in which you had a developer account.
The criteria to be a "Settlement Class Member" are defined more fully in the notice relating to this settlement. U.S. developers who meet the criteria are entitled to a minimum cash payment ranging from $250 to $30,000.
The agreement clarifies that developers can share purchase options with users outside of their iOS app; expands the price points developers can offer for subscriptions, in-app purchases, and paid apps; and establishes a new fund to assist qualifying US developers.
Article provided with permission from AppleWorld.Today
PreviousThe 2022 iPad Pro may not sport a glass back as anticipated
NextNetflix increasing rates across all its subscription plans
Dennis Sellers
EXIF viewer for Mac OS X updated with RAW images support
Vampyr Story game coming to the Mac
America Ferrara joins cast of Apple TV+'s 'WeWork" series
macOS Ventura and iPadOS 16 will launch on Monday, Oct. 24


Kep province, located on the Cambodian's coast near the Vietnamese border, is one of Cambodia's youngest. Unfortunately, it is also one of the most unknown.
The eponymous city (also known as Kep-Sur-Mer) has been a highly prized holiday location from the early 20th century to the 60's by Cambodian and French elites alike. However, it was only in 2008, when the government of Cambodia was trying to ignite a new spark of interest for its littoral, that Kep became a province of its own.
If this little peninsular city, backed by mountains while fronted by the ocean, is still as charming as it ever was, it keeps shadowing the rest of the province. Indeed, most of the guidebooks barely mention the city, as if it was still part of the larger Kampot province surrounding it.
Of course, the town is highlighted, along with its crab market and its colonial architecture. Equally praised is Rabbit Island, a couple of miles offshore. Sadly, the countryside is forgotten most of the time.
Yet, it is filled with resources, both natural and cultural. Mangroves, fishing villages, and pepper plantations scatter the province, and clearly deserve your particular attention. Between high grounds and deep waters, Kep province offers landscapes that you will find nowhere else in Cambodia. However, to fully enjoy it, you might have to get off the beaten tracks.


text:
Exodus: Movement of the People
Tag: Germany
Immigrants Made Good – Paul Julius, Baron von Reuter
Alec Tritton
Immigrants Made Good No Comments
Paul Julius, Baron von Reuter was born Israel Beer Josaphat on July 21, 1816 in Kassel, Germany. He was an entrepreneur, journalist and media owner. More importantly, Reuter went on to become a trailblazer in the world of news reporting and telegraphy, eventually founding the Reuters news agency.
Baron Paul Julius Reuter -: 1816 – 1899(Photo credit: Wikipedia)
Reuter was born to Betty Sanders and Samuel Levi Josaphat, a local rabbi. He spent his younger years working as a clerk in his uncle's bank in Göttingen. During his time in Göttingen he managed to make the acquaintance of Carl Friedrich Gauss, a prominent mathematician and physicist who was at that time experimenting with the electric telegraph.
In October of 1845, he moved to London where he began using the name Joseph Josaphat. Later that same year, he converted to Christianity, and in a ceremony at St. George's German Lutheran Chapel, he took the Christian name Paul Julius Reuter.
Just one week later, Paul returned to Berlin where he married Ida Maria Elizabeth Clemetine Magnus. He joined a Berlin-based book publishing firm, and in 1847, he became a partner with Reuter and Stargardt. As Germany tumbled into the Revolution of 1848, however, the firm became involved in publishing and distributing radical pamphlets which brought Reuter under official scrutiny.
After arousing the hostility of German authorities, Reuter took refuge in Paris, where he began working with the news agency of Charles-Louis Havas (which would eventually become Agence France Presse). He soon founded the Reuters News Agency in Aachen, and began sending news excerpts between France and Germany using a system of carrier pigeons.
Since telegraphy was still being developed, Reuter had one of the fastest sources of news available. The carrier pigeons were considerably faster than the post train, so Reuter was able to capitalize on stock news from the Paris stock exchange before most others got the latest news. He also began translating bits and pieces of news from France and sending the articles on to newspapers in Germany via his pigeons.
UK – London – The City: Paul Julius Reuter statue (Photo credit: wallyg)
In 1851, Reuter returned to England and opened a telegraph office not far from the London Stock Exchange. Initially, he dealt primarily with commercial exchanges; however, as the popularity of daily newspapers grew, Reuter was able to sign on a number of publishers as well. His first major breakthrough in the industry came in 1859 when he was able to transmit a speech by Napoleon III preceding the Austro-French Piedmontese war in Italy.
Competition grew as other news agencies fought to keep up with Reuter's telegraph techniques. Undersea cables allowed Reuter to further his network to other continents, and eventually, Reuter was obligated to agree on a division of territory with his two main rivals, Havas in France and Wolff in Germany. These three agencies maintained an effective monopoly over the world press for many years.
Reuter became a naturalized British subject in 1857, and was eventually granted baronies by both the German Duke of Saxe-Coburg-Gotha and Queen Victoria of England. Reuter passed away in February of 1899; however, his news agency is still going strong today. In fact, on February 25, 1999, the Reuters News Agency honored its founder by establishing the Paul Julius Reuter Innovation Award.
Immigrants Made Good – Ludwig Mond
Ludwig Mond was inarguably one of the most successful and influential industrial chemists of his day. He not only made great strides in scientific research, but he became very successful in business as well, thanks to his unique business sense and enormous energy. He was well known as one of the founders of the alkali firm of Messrs. Brunner, Mond & Company and was an avid inventor, widely known for his philanthropic activities with many scientific institutions.
Mond was born on March 7, 1839 into a Jewish family in Cassel, Germany. His father was a fairly successful merchant, and was determined to provide young Ludwig with the best possible education. After completing his early studies in his home town, Ludwig was enrolled in the Polytechnic Institute of Cassel and went on to attend classes at the Universities of Marburg and Heidelberg.
Ludwig Mond (Photo credit: Wikipedia)
His professors held him in high esteem, and though he never earned a degree, they provided him with glowing recommendations. Thanks to recommendations from such distinguished educators as Hermann Kolbe and Robert Bunsen, Ludwig was able to find employment at two German chemical companies.
When he decided to move to England in 1862, he put his education to good use once more, and was soon employed by John Hutchinson and Co. in Widnes. He returned to Germany for a short time, where he married his cousin Frida Lowenthal, but in 1866 he returned to Widnes and took up work with John Hutchinson once more.
Hutchinson's company manufactured soda using the Leblanc process, but this process left a lot of black ash. Ludwig came up with a method for redeeming that black ash – which contained considerable amounts of sulfur – and he formed a partnership with John Hutchinson to recover and repurpose the sulfur through his patented process.
In 1872, Mond heard of work done by Ernest Solvay, a Belgian industrialist who was developing a more efficient soda manufacturing process. He formed a partnership with John Brunner and they began working on bringing Solvay's ammonia-soda process to commercial viability. Together they set up as Brunner Mond and Company in a factory at Winnington, Northwich. Building on Solvay's work, Mond quickly worked out the kinks that had hindered mass production, and within 20 years, Brunner Mond & Company had become the largest soda manufacturer in the world.
English: Entrance to Mond House, offices of Brunner Mond The entrance to Mond House is now flanked by statues of Sir John Brunner, 1842-1919 (left), and Ludwig Mond, 1839-1909 (right), the founders of Brunner-Mond. The terracotta detailing around the entrance and clock is by Jabez Thompson and dates the building to 1899. Brunner Mond became part of ICI and is now owned by the Tata Group. (Photo credit: Wikipedia)
Commercial success hardly slowed Mond, however. An incurable tinkerer, he continued researching new chemical processes, looking for more efficient ways to produce valuable commodities. One of his greatest accomplishments was the discovery of nickel carbonyl, a compound that was previously unknown. Through the Mond process, he was able to easily decompose this compound to produce pure nickel. Ludwig founded the Mond Nickel Company near Swansea in Wales and began importing huge amounts of ores from mines in Canada.
He had an enormous passion for the sciences, and was a generous benefactor of many scientific societies, including the Royal Institution of Great Britain, the Royal Society, and the Italian Accademia de Lincei. He worked with Henry Roscoe to expand the Lancashire Chemical Society into a national Society of Chemical Industry. He became a member of the Royal Society in 1891, and was granted membership in the German Chemical Society, the Prussian Akademie der Wissenschaften, and the Societa Reale of Naples. Though he never earned a degree, he was granted honorary doctorates from the universities of Oxford, Manchester, Padua, and Heidelberg.
Ludwig Mond passed away on December 11, 1909, at 'The Poplars' – his London home near Regent's Park.
German Pork Butchers in Britain
Immigration 5 Comments
Before burgers, fish and chips and kebabs came the original takeaway: German pork pies, sausages, rissoles and other ready-made foodstuffs. During the 19th century, while most European emigrants were making their way to North America, a significant number of Germans were quietly making England their new home
Pork packing in Cincinnati. Print showing four scenes in a packing house: "Killing, Cutting, Rendering, [and] Salting." Chromo-lithograph of the cartoons exhibited by the Cincinnati Pork Packers' Association, at the International Exposition, at Vienna.. (Photo credit: Wikipedia)
In the Hohenloheregion in the north-east of Germany, population growth, agricultural depression and a series of crop failures provided a significant push-factor. Germans from the region began looking outward for new opportunity, with a number of skilled professional butchers making their way to England in 1817.
The butchers quickly established themselves and found a ready market in the rapidly-expanding cities of Northern England. Industrialization was leading to a burgeoning population who demanded cheap, ready-made basic foods. The butchers had arrived at an opportune moment to serve a market of factory workers who wanted a convenient, hot meal after finishing work.
The demand quickly outstripped the supply, leading more butchers to open shops across England. In Sheffield, for example, one lone butcher shop in 1817 grew to 14 shops by 1883, and 18 shops by 1914. Soon, the number of qualified Hohenlohe butchers could no longer meet the demand, so they called out to young men back home.
Young farmers' sons were ready and able to take up the challenge. Once the winter set in, they jumped into butchery courses where they learned the art of slaughtering and butchering. Back home, their mothers taught them to produce the savory German sausages and salted, smoked and pickled meats that were in such high demand in England. With well-honed skills, the young butchers entered the British market near the middle of the 19th century.
As butchers grew wealthy, some sent letters home recruiting young women for household help. Others wrote home looking for wives. German women answered the call, bringing with them a whole set of skills and delightful family recipes to add to the butchers' offerings.
Butchers (Photo credit: Wikipedia)
The German butchers and their families quickly spread to all parts of Northern England, eventually establishing themselves as far afield as Scotland and Ireland. Butcher shops were soon opened in London as well as the German community continued to spread and grow.
The demand for cheap, ready-made foods continued to grow, and in the 1870s, the immigrant butchers called for a third wave of emigrants. A whole new flock of young apprentice butchers and young girls finished school and set off for work in Britain. The boys immediately jumped into their new employment, and girls served in German households.
A 1897 newspaper ran a story documenting the phenomenon, noting "The Germans created this business amongst us … In every town there are many of them, and there is now hardly a village (…) throughout the North of England that has not one or more. Englishmen have all along been to blame for neglecting the pig as a subject of human food (….). But the German is the pork man par excellence"
At first, the Germans stayed in close, tightly-knit communities. They spoke little English, and maintained their traditions, customs and stories. Eventually, however, they realized that their enterprise would be better served by integration into British society. This allowed them to thrive even further, with some taking leading positions in pork butchers' associations.
Unfortunately, the two World Wars brought widespread intolerance toward the German butchers. The once-thriving business went into decline, and the rich history of the Hohenlohe butchers was greatly diminished. A few establishments did make it through, like the Herterichs in Ireland and the Haffners in Burnley; however, little remains today of the once-famous German takeaway specialties.
1. New light on the German Pork Butchers in Britain (1850 – 1950)" by Karl-Heinz Wuestner, Ilshofen, Germany http://www.surrey.ac.uk/cronem/files/conf2009papers/Wuestner.pdf
The Shambles, York: The Most Medieval Street in England
Resident Evil 6 Opens Human Flesh Butcher Shop
Immigrants Made Good
Relics of Empire
Latest Migration Stories
Official Launch of Huguenot Museum
On Monday 13th July in the presence of HRH Princess Alexandra the staff and trustees of the Huguenot Museum will be holding an event to celebrate the museum's public opening. Britain's fir...
The Honourable John Company
The East India Company, often referred to as the Honourable East India Company or more colloquially as "John Company", was established with a Royal Charter from Elizabeth I on December 31, 1600. The C...
East Africa – Land of Opportunity
Throughout the nineteenth century, the Sultan of Zanzibar ruled most of the East African mainland. He held tight control over the region, and ran lucrative ivory and slave trades. The indigenous tribe...
The National Emigration Aid Society
The National Emigration Aid Society was conceived and founded for the express purpose of assisted emigration. It was founded by a substantial number of influential gentlemen, and was focused on...
Newfoundland "the other Ireland"
A large percentage of modern Newfoundland residents can trace their heritage to Irish ancestry. Throughout the island, you'll find that surnames, culture, and even accents speak strongly to the largel...


Image courtesy of the Pittsburgh Steelers.
Training camp is less than two weeks away! Mayor Purzycki and Pittsburgh Steeler Quadree Henderson are working together to conduct a rising stars Football camp entitled "No Limit Hurricane Football Organization X Quadree Henderson". The FREE non-contact camp will be held on Saturday, July 21 from 8 am to 3 pm at P.S. DuPont Middle School and is open to boys ages 8 to 18. There are only 20 spots available on a first come, first-serve basis, so register NOW!
The 20 camp slots available for young athletes from Wilmington will be awarded on a first come, first-served basis starting today. To register for the camp, email or call either of two assistants to Mayor Purzycki, Earl Cooper at eacooper@WilmingtonDE.gov or 302.576.2133, or Ashley Christopher at aschristopher@WilmingtonDE.gov or 302.576.2110.
Spectators will be permitted to watch from the stands at P.S. DuPont Middle School. Water and snacks will be provided to all camp for participants. One lucky young person will be designated as the camp MVP and will receive two tickets to the Pittsburgh Steelers and Philadelphia Eagles preseason game scheduled for August 9, 2018 at 7 p.m. at Lincoln Financial Field.
A parent or guardian for each minor age participant must sign a waiver prior to the start of camp. Waivers are available at this link: https://www.wilmingtonde.gov/residents/quadree-henderson-football-camp.
Quadree Henderson began playing football with the Jefferson Street Raiders at P.S. DuPont Field when he was five years old. He graduated from A.I. DuPont High School, where he was the Delaware Gatorade Player of the Year in 2015. Quadree went on to play for the University of Pittsburgh, where he was named First-Team All-ACC and an All-American in 2016 after leading FBS with 1,166 total return yards. He was Second-Team All-ACC the following year, when he led Pitt with 1,204 all-purpose yards for an average of 100.3 yards per game. He signed as an undrafted rookie wide receiver/kick returner with the Pittsburgh Steelers in 2018.


text:
package io.fabric8.funktion.agent;

/**
 * Thrown when an internal processing exception happens processing JSON / YAML
 */
public class InternalException extends Exception {
    public InternalException() {
    }

    public InternalException(String message) {
        super(message);
    }

    public InternalException(String message, Throwable cause) {
        super(message, cause);
    }

    public InternalException(Throwable cause) {
        super(cause);
    }

    public InternalException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}


One of the cool things about doing this column is discovering lost technologies myself, things I knew nothing about before poking about the virtual attics and basements of cyberspace, looking for things to write about. For instance, I knew nothing about stick chart navigation before covering it here. And I'd certainly seen timbrel vaulting before, but didn't know that's what it was called, or how it worked.
The bundling is done with a technique called "cable lacing". A series of knots and stitches from a continuous piece of wax impregnated cotton or twine are used to bundle cables together. It takes some practice, but it'll outperform zipties in that it won't crush the insulative jackets on wiring and that it's not going to shift axially on you if it's loose. Likewise, my bundles have a rectangular cross section. Zipties can't conform and keep bundle shapes other than ellipses.
Here's a page from "Workmanship and Design Practices for Electronic Equipment," showing different lacing and tying methods.
And here's a how-to on the Historic Naval Ships Association website.
There's not much more out there on the practice. If you do a search, you will find some images on various discussion boards of computer modders and others trying their hand at cable lacing the wiring inside of their computers and between the gear of their home media centers. It's nice to see that at least some folks are keeping the art alive.


Commercial Project Gallery Quad Cities - Xtreme Xteriors, Inc.
If you're looking for a trusted contractor to handle any of your roofing or exterior projects, then you've come to the right place. Our goal is to provide you with the best possible product and create relationships that are built to last. All of our experts are trained and certified to use products that come from the industry's best manufacturers. Check out our commercial project gallery below!
The only way to make certain that your structure will be safe against the weather is to design a system of quality materials, installed to the correct design by our skilled team. Our estimators are well informed in exterior contracting services. We will provide advice and help you design a system that will last.
We understand how important it is to provide the absolute best in commercial roofing installs. That is why we ensure minimal to no impact on your daily operations. Xtreme Xteriors is your roofer of choice for commercial roof replacement services or commercial roof repairs.
The siding on your company's office building does more than keep the rain out. It is an expression of your businesses unique personality and style. The colors and materials you choose are a great way to advertise who your company is. Contact us for all your commercial siding needs.
If you're looking for the best commercial window contractor in the Quad Cities area, look no further. We've been providing high-quality and professional window replacement and repair throughout the Quad Cities.


text:
Smart Movie Making new wave cinema and the mobile revolution
Pop Videos
iPhone Popup Film Festival
iPhone Filmmaking Masterclasses
Smart Movie Making
Disposable Film Festival
Mobile Film Festivals
iPhone Film festival
Smartmoviemakers
News, apple, cameraphones, Canon 5d MKII, iphone 4S, iphones, majek pictures, mobile film making, smartmoviemaking, smartphones, the film artist — October 17, 2011 11:47 — 1 Comment
iPhone 4S: the film-makers' verdicts
Shot on an iPhone 4S Photograph: © The Film Arist
"If mobile movie making hasn't caught on already, it absolutely will now" Anna Elizabeth James, Majek Pictures
"Film-making has just progressed to the next stage" The Film Artist
Apple's iPhone 4S is here and smart moviemakers wasted no time getting their hands on the latest model and trying out its much vaunted new camera with 1080 HD video.
The Film Artist took delivery of a 64GB model, wise considering how much filming he does, and the first thing he noticed after set up was the superb new in-built stabilization feature and improved picture quality.
"I have had a lot of practice with the iPhone 4 and managed to stabilize it using my grip and body moves, plus a little yoga, so I took it for shoot in the garden straight away …
"Shooting at 1080P, 30fps the DoF is fantastic and due to the size of the iPhone easy to manoeuvre around objects, something you would find hard to do with a traditional camera.
"Colour rendition is far more stable than its predecessor. The quality of video is astounding if not revolutionary, for the first time a mobile has challenged the big boys, the HDSLRs so much so that I forgot it was mobile," he said.
When he took the iPhone 4S out for a night shoot on the streets of south London (see below) he was equally impressed with the camera's performance.
"I think it captured the images and sound really well although there was noticeable image noise and it struggled with focussing at times. The biggest improvement I noticed was that the video was much smoother and flowed … no jitters even at night."
Michael Koerbel and Anna Elizabeth James from Majek Pictures in Los Angeles were one of the first to see the benefits of the iPhone 4 when it was launched last year and are credited with making the first 'iPhone film', Apple of My Eye.
Anna told me Majek are busy with other projects so have not yet had chance to film on the iPhone 4S properly – but she is very impressed with what she has seen so far.
"This is truly one of Steve Jobs's greatest accomplishments. The revolution has begun," she said.
"The iPhone 4S camera definitely feels ever so slightly heavier — Or maybe that's our 64GB we decided to upgrade to this round!
"The Camera App moves quickly from front camera to back camera, a feature we've always loved, and it doesn't seem to take quite as long to load. The "tap your finger to gain exposure" feature is such a plus — and this time a little box appears to let you know what area you exactly exposed and white balanced from.
"The 1080 HD video is truly gorgeous — if mobile movie making hasn't caught on already, it absolutely will now."
Like everyone else, Anna has been impressed with the Siri personal assistant app – to the point, she says, where it has been distracting them from their film-making projects.
"Together, we're pleased with the new version and can't wait to create another film to really show off what the camera can do!"
And, as Anna points out, the real beauty of the iPhone is that "anyone can pick up their phone and share their story with the world. Everyone has a story and everyone has a viewpoint of life. We can't wait to see what the next year holds for mobile movie making."
It's a point that The Film Artist echoes: "I don't think you can wish for anything better than this, film-making has just progressed to the next stage and I am even more inspired to make more films," he said.
● For a iPhone 4S/Canon 5d MKII Side by Side Comparison see this video posted on Vimeo by Robino Films
● For the film-maker's spec notes go to the Vimeo page iPhone 4S / Canon 5d MKII Side by Side Comparison
Stay Smart | subscribe to our weekly newsletter
Tony Myers has written 866 articles for Smart Movie Making
Fooling around with the iPhone since 2010. Taking it to the next web by writing about new media, new technology, new wave cinema and the digital revolution.
yard lights says:
A lot of the things you mention happens to be supprisingly appropriate and that makes me ponder the reason why I had not looked at this in this light before. This particular piece truly did turn the light on for me personally as far as this particular subject goes. Nevertheless at this time there is actually one factor I am not too cozy with and whilst I make an effort to reconcile that with the actual main theme of your issue, allow me observe exactly what the rest of your visitors have to say.Nicely done.
Smartphone films needed to promote 'ring of peace' around the world
Sugar Man director committed suicide
Apple updates: two new handsets with larger screen and better resolution
Hipstamatic launches new video editing app
Cinephone 2014: get your submission in
Facebook app revealed to be cause of iPhone battery woes
iPhone Film Festival 4: winners announced
HTC One M8 review: a lightning-quick, five-star smartphone
Steve Jobs gave iPhone engineers 'two-week deadline in 2005′
Mophie iPhone Space Pack – nice idea, let down by iOS
Latest from The Guardian
Select Month September 2014 May 2014 April 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 June 2011 May 2011 April 2011 March 2011 February 2011 January 2011
<!- Guardian Select: Technology & Media Tag Begins - Leaderboard BTF -> <!- Guardian Select: Technology & Media Tag Ends - Leaderboard BTF ->
Copyright © 2013 QuickSmartMedia All rights reserved | EDITORIAL | Developed by Jim Atkinson


text:
Q: update-grub: Generating grub configuration file ... error: failed to get canonical path...No path or device is specified I'm on Ubuntu 22.04 on a dual boot system with Windows 11. Everything works smoothly, but when I'm trying to install the Heroku CLI using the recommended script, I'm seeing the following error:-
curl https://cli-assets.heroku.com/install-ubuntu.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1232  100  1232    0     0   8898      0 --:--:-- --:--:-- --:--:--  8927
This script requires superuser access to install apt packages.
You will be prompted for your password by sudo.
[sudo] password for user:
+ dpkg -s apt-transport-https
+ echo deb https://cli-assets.heroku.com/apt ./
+ dpkg -s heroku-toolbelt
+ true
+ curl https://cli-assets.heroku.com/apt/release.key
+ apt-key add -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
100  1753  100  1753    0     0  19408      0 --:--:-- --:--:-- --:--:-- 19477
OK
+ apt-get update
Hit:1 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:2 https://cli-assets.heroku.com/apt ./ InRelease
Hit:3 http://in.archive.ubuntu.com/ubuntu jammy InRelease
Hit:4 https://dl.google.com/linux/chrome/deb stable InRelease
Hit:5 http://in.archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:6 http://in.archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit:7 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:8 https://ppa.launchpadcontent.net/danielrichter2007/grub-customizer/ubuntu jammy InRelease
Hit:9 https://ppa.launchpadcontent.net/git-core/ppa/ubuntu jammy InRelease
Hit:10 https://ppa.launchpadcontent.net/rodsmith/refind/ubuntu jammy InRelease
Hit:11 https://ppa.launchpadcontent.net/yannubuntu/boot-repair/ubuntu jammy InRelease
Reading package lists... Done
W: https://download.docker.com/linux/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://cli-assets.heroku.com/apt/./InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
+ apt-get install -y heroku
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 linux-modules-5.15.0-25-generic : Depends: linux-image-5.15.0-25-generic but it is not going to be installed or
                                            linux-image-unsigned-5.15.0-25-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

~/code [ master ] $

sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  chromium-codecs-ffmpeg-extra cmake-data dh-elpa-helper gcc gcc-11 gstreamer1.0-vaapi icu-devtools libasan6 libatomic1 libatomic1:i386 libbrotli-dev
  libbsd0:i386 libc-dev-bin libc-devtools libcc1-0 libcrypt-dev libdatrie-dev libdbus-1-dev libdeflate-dev libdpkg-perl libdrm-amdgpu1:i386
  libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libedit2:i386 libegl-dev libegl1-mesa-dev libelf1:i386 libepoxy-dev libexpat1:i386 libffi-dev
  libffi8:i386 libfile-fcntllock-perl libfribidi-dev libgcc-11-dev libgl-dev libglapi-mesa:i386 libgles-dev libgles1 libglib2.0-dev-bin
  libglvnd-core-dev libglvnd-dev libglvnd0:i386 libglx-dev libgraphite2-dev libgstreamer-plugins-bad1.0-0 libharfbuzz-gobject0 libice-dev
  libicu70:i386 libitm1 libjbig-dev libjsoncpp25 libllvm13:i386 liblsan0 liblzma-dev libmd0:i386 libnsl-dev libnvidia-cfg1-510 libnvidia-common-510
  libnvidia-compute-510:i386 libnvidia-decode-510 libnvidia-decode-510:i386 libnvidia-egl-wayland1 libnvidia-encode-510 libnvidia-encode-510:i386
  libnvidia-extra-510 libnvidia-fbc1-510 libnvidia-gl-510 libnvidia-gl-510:i386 libopengl-dev libpcre16-3 libpcre2-16-0 libpcre2-posix3 libpcre32-3
  libpcrecpp0v5 libpixman-1-dev libpng-tools libpthread-stubs0-dev librhash0 libsensors5:i386 libsepol-dev libsigc++-2.0-dev libsm-dev libstdc++6:i386
  libthai-dev libtiffxx5 libtirpc-dev libtsan0 libubsan1 libva-wayland2 libvulkan1:i386 libwayland-bin libwayland-client0:i386 libwayland-dev
  libx11-6:i386 libx11-dev libx11-xcb1:i386 libxau-dev libxau6:i386 libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386
  libxcb-randr0:i386 libxcb-render0-dev libxcb-shm0:i386 libxcb-shm0-dev libxcb-sync1:i386 libxcb-xfixes0:i386 libxcb1:i386 libxcb1-dev
  libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxdmcp6:i386 libxext-dev libxext6:i386 libxfixes-dev libxfixes3:i386 libxi-dev
  libxinerama-dev libxkbcommon-dev libxml2:i386 libxnvctrl0 libxrandr-dev libxrender-dev libxshmfence1:i386 libxtst-dev libxxf86vm1:i386 manpages-dev
  mesa-vulkan-drivers:i386 nvidia-compute-utils-510 nvidia-settings nvidia-utils-510 pango1.0-tools pkg-config rpcsvc-proto screen-resolution-extra
  wayland-protocols x11proto-dev xorg-sgml-doctools xserver-xorg-video-nvidia-510 xtrans-dev
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  linux-image-unsigned-5.15.0-25-generic
Suggested packages:
  fdutils linux-doc | linux-source-5.15.0 linux-tools linux-headers-5.15.0-25-generic linux-modules-extra-5.15.0-25-generic
The following packages will be REMOVED:
  linux-image-5.15.0-25-generic
The following NEW packages will be installed:
  linux-image-unsigned-5.15.0-25-generic
0 upgraded, 1 newly installed, 1 to remove and 1 not upgraded.
2 not fully installed or removed.
Need to get 0 B/11.2 MB of archives.
After this operation, 268 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
dpkg: linux-image-5.15.0-25-generic: dependency problems, but removing anyway as you requested:
 linux-modules-5.15.0-25-generic depends on linux-image-5.15.0-25-generic | linux-image-unsigned-5.15.0-25-generic; however:
  Package linux-image-5.15.0-25-generic is to be removed.
  Package linux-image-unsigned-5.15.0-25-generic is not installed.

(Reading database ... 208769 files and directories currently installed.)
Removing linux-image-5.15.0-25-generic (5.15.0-25.25) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-5.15.0-25-generic
/etc/kernel/postrm.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
/usr/sbin/grub-probe: error: failed to get canonical path of `/boot/grub/unicode.pf2GRUB_DISABLE_OS_PROBER=false'.
No path or device is specified.
Usage: grub-probe [OPTION...] [OPTION]... [PATH|DEVICE]
Try 'grub-probe --help' or 'grub-probe --usage' for more information.
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 64
dpkg: error processing package linux-image-5.15.0-25-generic (--remove):
 installed linux-image-5.15.0-25-generic package post-removal script subprocess returned error exit status 1
dpkg: too many errors, stopping
Errors were encountered while processing:
 linux-image-5.15.0-25-generic
Processing was halted because there were too many errors.
E: Sub-process /usr/bin/dpkg returned an error code (1)

I suppose the key error here is this:-
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
/usr/sbin/grub-probe: error: failed to get canonical path of `/boot/grub/unicode.pf2GRUB_DISABLE_OS_PROBER=false'.
No path or device is specified.

I can see that there's some issue when it's trying to create the grub configuration file.
I'm just not sure how to resolve this or even what the issue really is about.
My dual boot works just fine. My grub2 menu loads at bootup and I'm able to go to windows and Ubuntu from there. Everything is as it should be. But I'm seeing this.
What could be wrong?

A: Probably, there is a missing new line in your /etc/default/grub file.
My guess is that the command update-grub is trying to parse the /etc/default/grub file and finds an inconsistent fint path, becuase two separate lines are merged.
Check if there is a line containing /boot/grub/unicode.pf2GRUB_DISABLE_OS_PROBER=false and put an ENTER just between .pf2 and GRUB_DISABLE_OS_PROBER


GNY introduces machine learning to pre-existing blockchains, offering smart APIs that bridge to Ethereum, to Asch, to Lisk and any developer working with our universal system. With GNY Centre, GNY brings its own dedicated blockchain that can host side chains, offering a powerful set of tools to launch and host your own project from conception to implementation in the most developer friendly environment built around artificial intelligence. GNY tokenholders can now access GNY's powerful machine learning tools. A members only program will start at the end of the GNY token sale.
ERC20 token launch and Universal API.


It's been a long day already for Comey.
FBI Director James Comey's grilling before a House committee was turned up a couple of notches when he had to answer to Rep. Trey Gowdy.
Gowdy unleashed a series of fact checking statements, forcing Comey to show a clear discrepancy between his decision to essentially let the former Secretary of State off scot-free for mishandling classified information and the law.
Earlier, Comey was blasted by Rep. Jason Chaffetz, R-Ut, with the chairman of the committee pressed the FBI director on whether or not Clinton lied and if she would receive another security clearance, despite having mishandled top secret emails.


An aqua green straight kurta set with wooden buttons & hooks underneath. The gharara comes with an ikat print with elastic on the waist.
XS: Bust- 32", Waist- 26", Hip- 34"", Kurta Length- 32", Sleeve Length- 15", Gharara Length- 38"
S: Bust- 34", Waist- 28", Hip- 36", Kurta Length- 32", Sleeve Length- 15", Gharara Length- 38"
M: Bust- 36", Waist- 30", Hip- 38", Kurta Length- 32", Sleeve Length- 15", Gharara Length- 38"
L: Bust- 38", Waist- 32", Hip- 40", Kurta Length- 32", Sleeve Length- 15", Gharara Length- 38"
XL: Bust- 40", Waist- 34", Hip- 42", Kurta Length- 32", Sleeve Length- 15", Gharara Length- 38"
XXL: Bust- 42", Waist- 36", Hip- 44", Kurta Length- 32", Sleeve Length- 15", Gharara Length- 38"


Tickets are on sale now online, and range in price from $35 to $125 (plus taxes and fees). Are you planning a holiday getaway to Los Angeles? Stay with us and enjoy boutique accommodations and numerous amenities including free Wi-Fi, complimentary breakfast and an evening hosted wine reception. Questions about our hotel? Want to know more about Los Angeles events? Please don't hesitate to contact us at 1 (323) 658 6663 for more information. Make your booking today! Our friendly, professional staff is standing by to help with all your travel arrangements.


FOLKS........the aircraft is a Shorts , SC7 , Skyvan .
Peter >>> Hi. Log in, go to the bottom, and replace the "C152" by clicking on the box and reentering the code "SC7" in the box. Click "Save" and you should be all set. I've discovered that it is not the best policy to let FA autofill the info into that box. Always better to look up the correct code prior to uploading the pic and enter the proper code during the upload process at the same time that you are entering the reg # and airport identifier. Then, when you click SAVE, the code you entered for aircraft model overrides FA's autofilled code and the proper model name is displayed. Hope this helps. (Wave) PS: Guessing at the code doesn't always work. Although it is more time consuming, looking up the correct code on the list always works best.
This Skyvan is used as a mosquito control sprayer in Florida.
Funny, I got the same shot! lol.
Reminds me of the bumble bee. Aerodynamically it can't fly, but no one has told it so, it does!
The least aerodynamic outhouse in the air! Fly well enough though, often used to zip over to Belfast when on business up in Scotland from Prestwick in one courtesy of "Gill Airways". They also had some of the later & larger Skyliners and later still some of the 330 & 360 models I think. Although larger and with comfy seats,least the latter aircraft had some concessions to streamlining but still had the "Boxy" shape.
It has been said of the F-4 Phantom that "Proof that given enough thrust, even a brick will fly".
In that light, I offer this picture. Compared to the Skyvan, S330, and S360, the Phantom is positively svelte.
dang that things looks weird!
Collier (County) Mosquito Control District, Naples, FL. I believe they operate 3 of them with a couple of Hughes 500 helicopters.
That's one way to build "turbine time" (in one day)!
In the past, Nordair operated a Skyvan out of Dorval for flights up North. A tower air traffic supervisor asked the pilot, tongue in cheek, "Did you build it yourself?"
Looks like they tossed out the airplane....kept the box it came in! Still, a nice shot though! Thanks Peter! Cheers!!
Хотите просмотреть все архивные записи о N643M (с 1998 г.)? Купите сейчас, получите через час.


Green Laser Pointers are the most common type of DPSS Lasers, and have more complicated than standard red laser pointers. Please come to Tmart.com to choose various Green Beam Laser Pointe Pen. Green Laser Pens with various power outputs can meet various customer requirements in different fields. We provide you with the most unique style and reasonable price.


text:
The Social Network & Community JUST for Firefighters
FFN Home
FR Magazine
FFN Facebook
My FFN
FAQ & How To
Contact MyFFN
FFN LinkedIn
For Your FD
Group FAQ
Latest Vids
Upload New
Embed a Vid
Watch Emergency!
FireEMSblogs.com
Blogging FAQ
Cochran to first responders: Get vaccinated!
Posted by Fire Rescue Magazine on January 12, 2010 at 4:00pm
U.S. Fire Administrator Calls on Fire Service to Participate in National Influenza Vaccination Week
From the U.S. Fire Administration: http://www.usfa.dhs.gov/media/press/2010releases/011110.shtm
National Influenza Vaccination Week (NIVW), which is January 10-16, 2010, provides an important opportunity to continue vaccination efforts. During the week, U.S. Fire Administration (USFA) Administrator Kelvin J. Cochran will reach out to the fire service and first responders in all 50 states to ensure that they have taken steps to vaccinate themselves as well as their families.
"Being vaccinated for both seasonal influenza and the H1N1 influenza is an important way to secure the well being of our first responder workforce, their families and most importantly the residents of their communities for whom they provide emergency medical care," Cochran said. "I encourage all fire service leaders, fire service organizations and firefighters to join with me and participate in the National Influenza Vaccination Week."
One of the many goals for NIVW is to engage unique audiences who may not be vaccinated. Every year, certain days during NIVW are designated to highlight the importance of vaccination for specific groups, such as health care workers or children. By targeting first responders this year, the USFA and its federal partners like the Department of Health and Human Services are ensuring that our nation's first line of defense is even more prepared to support the communities they serve.
For more information regarding National Influenza Vaccination Week, visit www.Flu.gov/getvaccinated
USFA Press Office: (301) 447-1853
You need to be a member of My Firefighter Nation to add comments!
Join My Firefighter Nation
My Firefighter Nation
FireRescue Magazine
• Subscribe to FireRescue
• Buyer's Guide
Find Members Fast
-- Browse by State -- Alabama Alaska Arizona Arkansas California Colorado Connecticut Delaware Dist of Columbia Florida Georgia Hawaii Idaho Illinois Indiana Iowa Kansas Kentucky Louisiana Maine Maryland Massachusetts Michigan Minnesota Mississippi Missouri Montana Nebraska Nevada New Hampshire New Jersey New Mexico New York North Carolina North Dakota Ohio Oklahoma Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee Texas Utah Vermont Virginia Washington West Virginia Wisconsin Wyoming
Or Name, Dept, Keyword
Ex: "Los Angeles", Andrew
• Invite Your Friends
• Not a Member? Join Now
© 2020 Created by Firefighter Nation WebChief. Powered by
Badges | Contact Firefighter Nation | Terms of Service
Hello, you need to enable JavaScript to use My Firefighter Nation.


Marvel Studios has been doing a great job of teasing Avengers: Endgame, where the promotional materials haven't been revealing a lot of new information. All we know from the trailers and sneak peek footage is that the surviving members of the Avengers want to help the fallen Avengers, and they'll do whatever it takes to get them back. Well, that is until now. Someone has leaked footage from the film, and these feature key moments that contains heavy spoilers. The leak is available online, and it's causing a lot of fans to avoid social media for fear of spoilers.
Some fans have caved in and watched the leaked footage, and others are trying their hardest to avoid them. It's not surprising since Avengers: Endgame is the conclusion to the events of Avengers: Infinity War, where half the population of the universe was wiped out thanks to Thanos. And fans have been waiting to see how the surviving superheroes are going to stop the Mad Titan. According to CNBC, it believes that the source of the leak is from someone who had special clearance to see the Avengers: Endgame footage. Now some of those who have seen the footage have been going on social media and sites to talk about what they've seen.
So if you don't want to be spoiled about Avengers: Endgame, we suggest being very careful when using social media until the film hits theaters next week. Fans have been trying to help each other about avoiding the spoiler as to get the best experience for the film.
The avengers endgame leak is real don't go looking for it.
Other fans couldn't resist the temptation.
Of course, some fans have taken the time to make light of the situation.