text:
<?php

namespace Ems\Events;

use Ems\Contracts\Core\Subscribable;
use Ems\Core\Patterns\SubscribableTrait;
use Ems\Testing\LoggingCallable;

use function print_r;

class BusTest extends \Ems\TestCase
{
    public function test_implements_interface()
    {
        $this->assertInstanceOf(
            Subscribable::class,
            $this->newBus()
        );
    }

    public function test_getListener_returns_all_listener()
    {
        $dispatcher = $this->newBus();
        $listener = function () {};

        $dispatcher->on('*', $listener);

        $this->assertSame($listener, $dispatcher->getListeners('*')[0]);
    }

    public function test_fire_calls_onAll_listener()
    {
        $dispatcher = $this->newBus();
        $listener = new LoggingCallable();

        $dispatcher->on('*', $listener);

        $dispatcher('some-event', 'a');
        $dispatcher('some-event', ['a', 'b']);
        $dispatcher('some-event');

        $this->assertEquals(['some-event', 'a'], $listener->args(0));
        $this->assertEquals(['some-event', 'a', 'b'], $listener->args(1));
        $this->assertEquals(['some-event'], $listener->args(2));
    }

    public function test_fire_calls_all_listeners_and_returns_all_return_values()
    {
        $dispatcher = $this->newBus();

        $calls = [];

        $beforeAnyListener = function ($event, $char) {

            if ($event != 'foo') {
                $this->fail('Dispatcher fired wrong event name');
            }

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            return 'a';
        };

        $beforeListener = function ($char) {

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            return 'b';
        };

        $onListener = function ($char) {

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            return 'c';

        };

        $allListener = function ($event, $char) {

            if ($event != 'foo') {
                $this->fail('Dispatcher fired wrong event name');
            }

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            return 'd';

        };

        $afterListener = function ($char) {

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            return 'e';
        };

        $afterAnyListener = function ($event, $char) {

            if ($event != 'foo') {
                $this->fail('Dispatcher fired wrong event name');
            }

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            return 'f';

        };

        $dispatcher->onAfter('*', $afterAnyListener);
        $dispatcher->onAfter('foo', $afterListener);
        $dispatcher->on('*', $allListener);
        $dispatcher->on('foo', $onListener);
        $dispatcher->onBefore('foo', $beforeListener);
        $dispatcher->onBefore('*', $beforeAnyListener);

        $this->assertEquals(['a', 'b', 'c', 'd', 'e', 'f'], $dispatcher->fire('foo', 'e'));

        $tests = [
            'a' => ['*', 'before'],
            'b' => ['foo', 'before'],
            'c' => ['foo', ''],
            'd' => ['*', ''],
            'e' => ['foo', 'after'],
            'f' => ['*', 'after'],
        ];

        foreach ($tests as $result=>$args) {

            $listener = $dispatcher->getListeners($args[0], $args[1])[0];

            if ($args[0] == '*') {
                $this->assertEquals($result, $listener('foo', 'e'));
                continue;
            }
            $this->assertEquals($result, $listener('e'));
        }

    }

    public function test_fire_calls_all_listeners_with_event_object()
    {
        $dispatcher = $this->newBus();

        $calls = [];

        $beforeAnyListener = function ($event, $object) {

            if ($event != BusTest_Event::class) {
                $this->fail('Dispatcher fired wrong event name: ' . $event);
            }

            if (!$object instanceof BusTest_Event) {
                $this->fail('Dispatcher fired wrong parameter ' . print_r($object, true));
            }

            return 'a';
        };

        $beforeListener = function ($event) {

            if (!$event instanceof BusTest_Event) {
                $this->fail('Dispatcher did not fire event object');
            }

            return 'b';
        };

        $onListener = function ($event) {

            if (!$event instanceof BusTest_Event) {
                $this->fail('Dispatcher did not fire event object');
            }

            $this->assertEquals(13, $event->number);
            $this->assertEquals('fired', $event->code);

            return 'c';

        };

        $allListener = function ($event, $object) {

            if ($event != BusTest_Event::class) {
                $this->fail('Dispatcher fired wrong event name');
            }

            if (!$object instanceof BusTest_Event) {
                $this->fail('Dispatcher fired wrong parameter');
            }

            return 'd';

        };

        $afterListener = function ($event) {

            if (!$event instanceof BusTest_Event) {
                $this->fail('Dispatcher did not fire event object');
            }

            return 'e';
        };

        $afterAnyListener = function ($event, $object) {

            if ($event != BusTest_Event::class) {
                $this->fail('Dispatcher fired wrong event name');
            }

            if (!$object instanceof BusTest_Event) {
                $this->fail('Dispatcher fired wrong parameter');
            }

            return 'f';

        };

        $dispatcher->onAfter('*', $afterAnyListener);
        $dispatcher->onAfter(BusTest_Event::class, $afterListener);
        $dispatcher->on('*', $allListener);
        $dispatcher->on(BusTest_Event::class, $onListener);
        $dispatcher->onBefore(BusTest_Event::class, $beforeListener);
        $dispatcher->onBefore('*', $beforeAnyListener);

        $event = new BusTest_Event();
        $event->number = 13;
        $event->code = 'fired';

        $this->assertEquals(['a', 'b', 'c', 'd', 'e', 'f'], $dispatcher->fire($event));

        $tests = [
            'a' => ['*', 'before'],
            'b' => [BusTest_Event::class, 'before'],
            'c' => [BusTest_Event::class, ''],
            'd' => ['*', ''],
            'e' => [BusTest_Event::class, 'after'],
            'f' => ['*', 'after'],
        ];

        foreach ($tests as $result=>$args) {

            $listener = $dispatcher->getListeners($args[0], $args[1])[0];

            if ($args[0] == '*') {
                $this->assertEquals($result, $listener(BusTest_Event::class, $event));
                continue;
            }
            $this->assertEquals($result, $listener($event));
        }

    }

    public function test_fire_breaks_on_first_not_null_if_halt_is_true()
    {
        $dispatcher = $this->newBus();

        $calls = [];

        $allListener = function ($event, $char) use (&$calls) {

            if ($event != 'foo') {
                $this->fail('Dispatcher fired wrong event name');
            }

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            $calls[] = 'all';

        };

        $beforeListener = function ($char) use (&$calls) {

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            $calls[] = 'before';

            return 'b';
        };

        $onListener = function ($char) use (&$calls) {

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            $calls[] = 'on';

            return 'c';
        };

        $afterListener = function ($char) use (&$calls) {

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            $calls[] = 'after';

            return 'd';
        };

        $dispatcher->on('*', $allListener);
        $dispatcher->onBefore('foo', $beforeListener);
        $dispatcher->on('foo', $onListener);
        $dispatcher->onAfter('foo', $afterListener);

        $this->assertEquals('b', $dispatcher->fire('foo', 'e', true));
    }

    public function test_fire_stops_propagating_if_listener_returns_false()
    {
        $dispatcher = $this->newBus();

        $calls = [];

        $beforeListener = function ($char) use (&$calls) {

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            $calls[] = 'before';

            return 'a';
        };

        $onListener = function ($char) use (&$calls) {

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            $calls[] = 'on';

            return 'b';
        };

        $allListener = function ($event, $char) use (&$calls) {

            if ($event != 'foo') {
                $this->fail('Dispatcher fired wrong event name');
            }

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            $calls[] = 'all';

            return false;

        };

        $afterListener = function ($char) use (&$calls) {

            if ($char != 'e') {
                $this->fail('Dispatcher fired wrong parameter');
            }

            $calls[] = 'after';

            return 'c';
        };

        $dispatcher->on('*', $allListener);
        $dispatcher->onBefore('foo', $beforeListener);
        $dispatcher->on('foo', $onListener);
        $dispatcher->onAfter('foo', $afterListener);

        $this->assertEquals(['a', 'b', false], $dispatcher->fire('foo', 'e'));
    }

    /**
     * @expectedException Ems\Contracts\Core\Errors\Unsupported
     **/
    public function test_getListeners_with_unknown_position_throws_exception()
    {
        $dispatcher = $this->newBus();
        $dispatcher->getListeners('foo', 'bar');
    }

    public function test_mark_returns_new_instance()
    {
        $dispatcher = $this->newBus();
        $listener = new LoggingCallable();

        $dispatcher->on('users.updated', $listener);

        $this->assertNotSame($dispatcher, $dispatcher->mark('no-broadcast'));

        $dispatcher->mark('no-broadcast')->fire('users.updated');
    }

    /**
     * @expectedException LogicException
     **/
    public function test_mark_with_explicit_falsed_mark_throws_exception()
    {
        $dispatcher = $this->newBus();

        $dispatcher->mark('!no-broadcast')->fire('users.updated');
    }

    /**
     * @expectedException Ems\Contracts\Core\Errors\Unsupported
     **/
    public function test_mark_with_unknown_mark_throws_exception()
    {
        $dispatcher = $this->newBus();

        $dispatcher->mark('foo');
    }

    public function test_mark_with_added_mark_throws_no_exception()
    {
        $dispatcher = $this->newBus()->registerMark('foo');

        $this->assertInstanceOf(BusWithMarkSupport::class, $dispatcher->mark('foo'));
    }

    public function test_wildcard_listen()
    {
        $dispatcher = $this->newBus();
        $listener = new LoggingCallable;
        $allListener = new LoggingCallable;

        $dispatcher->on('users.*', $listener);
        $dispatcher->on('*', $allListener);

        $dispatcher->fire('address.updated', []);

        $this->assertCount(0, $listener);
        $this->assertCount(1, $allListener);
        $this->assertEquals(['address.updated'], $allListener->args());

        $dispatcher->fire('users.updated', ['a']);

        $this->assertCount(1, $listener);
        $this->assertEquals(['a'], $listener->args());
        $this->assertEquals(['users.updated', 'a'], $allListener->args());

    }

    public function test_mark_calls_only_matching_listeners()
    {

        $dispatcher = $this->newBus();
        $listener = new LoggingCallable();
        $markListener = new LoggingCallable();
        $notMarkedListener = new LoggingCallable();

        $dispatcher->on('users.updated', $listener);
        $dispatcher->when('no-broadcast')->onBefore('users.updated', $markListener);
        $dispatcher->when('!no-broadcast')->onAfter('users.updated', $notMarkedListener);

        $dispatcher->mark('no-broadcast')->fire('users.updated');

        $this->assertCount(1, $listener);
        $this->assertCount(1, $markListener);
        $this->assertCount(0, $notMarkedListener);

        $args = ['a', 'b', 'c'];
        $dispatcher->fire('users.updated', $args);

        $this->assertCount(2, $listener);
        $this->assertEquals($args, $listener->args());
        $this->assertCount(1, $markListener);
        $this->assertEquals([], $markListener->args()); // the old ones
        $this->assertCount(1, $notMarkedListener);
        $this->assertEquals($args, $notMarkedListener->args());

    }

    public function test_mark_calls_only_matching_listeners_with_wildcards()
    {

        $dispatcher = $this->newBus();
        $listener = new LoggingCallable();
        $markListener = new LoggingCallable();
        $notMarkedListener = new LoggingCallable();
        $notMatchingListener = new LoggingCallable();
        $allMarkedListener = new LoggingCallable();

        $dispatcher->on('users.updated', $listener);
        $dispatcher->when('no-broadcast')->on('*', $allMarkedListener);
        $dispatcher->when('no-broadcast')->on('*.updated', $markListener);
        $dispatcher->when('!no-broadcast')->on('users.*', $notMarkedListener);
        $dispatcher->when('no-broadcast')->on('orders.*', $notMatchingListener);

        $dispatcher->fire('users.updated');

        $this->assertCount(1, $listener);
        $this->assertEquals([], $listener->args());

        $this->assertCount(0, $allMarkedListener);
        $this->assertCount(0, $markListener);
        $this->assertCount(1, $notMarkedListener);
        $this->assertEquals([], $notMarkedListener->args());
        $this->assertCount(0, $notMatchingListener);

        $dispatcher->fire('users.created', [33]);

        $this->assertCount(1, $listener);

        $this->assertCount(0, $allMarkedListener);
        $this->assertCount(0, $markListener);
        $this->assertCount(2, $notMarkedListener);
        $this->assertEquals([33], $notMarkedListener->args());
        $this->assertCount(0, $notMatchingListener);

        $dispatcher->mark('no-broadcast')->fire('address.updated', [33]);

        $this->assertCount(1, $listener);

        $this->assertCount(1, $allMarkedListener);
        $this->assertEquals(['address.updated', 33], $allMarkedListener->args());

        $this->assertCount(1, $markListener);
        $this->assertEquals([33], $markListener->args());

        $this->assertCount(2, $notMarkedListener);

        $this->assertCount(0, $notMatchingListener);

    }

    public function test_multiple_when_calls()
    {

        $dispatcher = $this->newBus();
        $markListener = new LoggingCallable();
        $notMarkedListener = new LoggingCallable();

        $dispatcher->when('no-broadcast')->when('from-remote')->onBefore('users.updated', $markListener);
        $dispatcher->when(['!no-broadcast', 'from-remote'])->onAfter('users.updated', $notMarkedListener);

        $dispatcher->mark('no-broadcast')->fire('users.updated');

        $this->assertCount(0, $markListener);
        $this->assertCount(0, $notMarkedListener);

        $dispatcher->mark('no-broadcast')->mark('from-remote')->fire('users.updated');

        $this->assertCount(1, $markListener);
        $this->assertCount(0, $notMarkedListener);

        $dispatcher->mark('from-batch')->mark('from-remote')->fire('users.updated');

        $this->assertCount(1, $markListener);
        $this->assertCount(1, $notMarkedListener);

        $dispatcher->mark(['no-broadcast', 'from-remote'])->fire('users.updated');

        $this->assertCount(2, $markListener);
        $this->assertCount(1, $notMarkedListener);
    }

    public function test_strange_call_combination_of_where_and_fire()
    {

        $dispatcher = $this->newBus();
        $markListener = new LoggingCallable();
        $notMarkedListener = new LoggingCallable();

        $dispatcher->when('no-broadcast')->when('from-remote')->on('users.updated', $markListener);
        $dispatcher->when(['!no-broadcast', 'from-remote'])->on('users.updated', $notMarkedListener);

        $dispatcher->when('no-broadcast')->fire('users.updated');

        $this->assertCount(0, $markListener);
        $this->assertCount(0, $notMarkedListener);

        // Lets do something useful with this test and test if only this two
        // callables were added

        $this->assertCount(2, $dispatcher->getListeners('users.updated'));
        $this->assertCount(0, $dispatcher->getListeners('*'));
    }

    public function test_forward_forwards_to_bus()
    {

        $dispatcher = $this->newBus();
        $listener = new LoggingCallable();

        $dispatcher->on('users.updated', $listener);

        $subscribable = new BusTest_Subscribable;

        $subscribable->on('test', $dispatcher->forward('users.updated'));

        $subscribable->trigger('test', ['a', 'b']);

        $this->assertCount(1, $listener);
        $this->assertEquals(['a', 'b'], $listener->args());
    }

    public function test_forward_forwards_to_other_bus()
    {

        $bus = $this->newBus();
        $bus2 = $this->newBus();

        $listener = new LoggingCallable();

        $bus2->on('users.updated', $listener);

        $bus->fire('users.updated');

        $this->assertCount(0, $listener);

        $bus->forward('users.updated')->to($bus2);

        $bus->fire('users.updated', ['a', 'b']);

        $this->assertCount(1, $listener);
        $this->assertEquals(['a', 'b'], $listener->args());
    }

    public function test_forward_forwards_another_bus_to_this_bus()
    {

        $bus = $this->newBus();
        $bus2 = $this->newBus();

        $listener = new LoggingCallable();

        $bus->on('users.updated', $listener);

        $bus2->fire('users.updated');

        $this->assertCount(0, $listener);

        $bus->forward($bus2, 'users.updated')->to('users.updated');

        $bus2->fire('users.updated', ['a', 'b']);

        $this->assertCount(1, $listener);
        $this->assertEquals(['a', 'b'], $listener->args());
    }

    /**
     * @expectedException LogicException
     **/
    public function test_forward_throws_exception_if_two_events_passed()
    {
        $bus = $this->newBus();
        $bus2 = $this->newBus();

        $bus->forward('users.updated', 'orm.created');
    }

    public function test_installFilter_with_callable()
    {

        $dispatcher = $this->newBus();
        $listener = new LoggingCallable();

        $filter = function ($event, $args) {
            return (bool)count($args);
        };

        $dispatcher->on('users.updated', $listener);

        $this->assertFalse($dispatcher->hasFilter());

        $dispatcher->fire('users.updated');

        $this->assertCount(1, $listener);

        $this->assertSame($dispatcher, $dispatcher->installFilter($filter));
        $this->assertTrue($dispatcher->hasFilter());

        $dispatcher->fire('users.updated');

        $this->assertCount(1, $listener);

        $dispatcher->fire('users.updated', [33]);

        $this->assertCount(2, $listener);

    }

    public function test_installFilter_with_wildcard()
    {

        $dispatcher = $this->newBus();
        $listener = new LoggingCallable();

        $dispatcher->on('*', $listener);

        $this->assertFalse($dispatcher->hasFilter());

        $dispatcher->fire('users.updated');

        $this->assertCount(1, $listener);

        $this->assertSame($dispatcher, $dispatcher->installFilter('*.updated'));
        $this->assertTrue($dispatcher->hasFilter());

        $dispatcher->fire('users.updated');

        $this->assertCount(2, $listener);

        $dispatcher->fire('address.updated');

        $this->assertCount(3, $listener);

        $dispatcher->fire('address.created');

        $this->assertCount(3, $listener);

        $dispatcher->uninstallFilter();

        $dispatcher->fire('address.created');

        $this->assertCount(4, $listener);

    }

    public function test_filtered_filters_events()
    {

        $dispatcher = $this->newBus();
        $listener = new LoggingCallable();

        $dispatcher->on('*', $listener);

        $this->assertFalse($dispatcher->hasFilter());

        $dispatcher->fire('users.updated');

        $this->assertCount(1, $listener);

        $result = $dispatcher->filtered('*.created', function () use ($dispatcher) {

            $dispatcher->fire('users.updated');
            $dispatcher->fire('users.created');
            $dispatcher->fire('users.updated');
            $dispatcher->fire('users.deleted');
            return 'bar';
        });

        $this->assertEquals('bar', $result);

        $this->assertCount(2, $listener);

        $dispatcher->fire('users.updated');
        $this->assertCount(3, $listener);

        try {
            $dispatcher->filtered('*.created', function () use ($dispatcher) {
                throw new \Exception;
            });
            $this->fail('The thrown exception inside filtered should be thrown');
        } catch (\Exception $e) {

        }

        // Filter should be uninstalled, even when exceptions occur
        $dispatcher->fire('users.updated');
        $this->assertCount(4, $listener);

    }

    public function test_mute_and_unmute_bus()
    {

        $dispatcher = $this->newBus();
        $listener = new LoggingCallable();

        $dispatcher->on('*', $listener);

        $this->assertFalse($dispatcher->isMuted());

        $dispatcher->fire('users.updated');

        $this->assertCount(1, $listener);

        $this->assertSame($dispatcher, $dispatcher->mute());
        $this->assertTrue($dispatcher->isMuted());

        $dispatcher->fire('users.updated');

        $this->assertCount(1, $listener);

        $dispatcher->fire('address.updated');

        $this->assertCount(1, $listener);

        $dispatcher->fire('address.created');

        $this->assertCount(1, $listener);

        $dispatcher->uninstallFilter();

        $dispatcher->fire('address.created');

        $this->assertCount(1, $listener);

        $this->assertSame($dispatcher, $dispatcher->mute(false));
        $this->assertFalse($dispatcher->isMuted());

        $dispatcher->fire('address.created');

        $this->assertCount(2, $listener);

    }

    public function test_muted_mutes_events()
    {

        $dispatcher = $this->newBus();
        $listener = new LoggingCallable();

        $dispatcher->on('*', $listener);

        $this->assertFalse($dispatcher->hasFilter());

        $dispatcher->fire('users.updated');

        $this->assertCount(1, $listener);

        $result = $dispatcher->muted(function () use ($dispatcher) {

            $dispatcher->fire('users.updated');
            $dispatcher->fire('users.created');
            $dispatcher->fire('users.updated');
            $dispatcher->fire('users.deleted');

            return 'bar';

        });

        $this->assertEquals('bar', $result);

        $this->assertCount(1, $listener);

        $dispatcher->fire('users.updated');

        $this->assertCount(2, $listener);

        try {
            $dispatcher->muted(function () {
                throw new \Exception;
            });
            $this->fail('The thrown exception inside muted should be thrown');
        } catch (\Exception $e) {

        }

        // Filter should be uninstalled, even when exceptions occur
        $dispatcher->fire('users.updated');
        $this->assertCount(3, $listener);

    }

    public function test_addBus_returns_added_bus()
    {

        $bus = $this->newBus();
        $ormBus = $bus->addBus('orm');
        $this->assertNotSame($bus, $ormBus);

    }

    /**
     * @expectedException OverflowException
     **/
    public function test_addBus_twice_with_same_name_throws_exception()
    {
        $bus = $this->newBus();
        $ormBus = $bus->addBus('orm');
        $bus->addBus('orm');
    }

    public function test_removeBus_removes_added_bus()
    {

        $bus = $this->newBus();
        $this->assertFalse($bus->hasBus('orm'));
        $ormBus = $bus->addBus('orm');
        $this->assertTrue($bus->hasBus('orm'));
        $bus->removeBus('orm');
        $this->assertFalse($bus->hasBus('orm'));

    }

    /**
     * @expectedException OutOfBoundsException
     **/
    public function test_remove_unknown_bus_throws_exception()
    {
        $bus = $this->newBus();
        $bus->removeBus('orm');
    }

    public function test_bus_returns_all_busses_on_every_forked_bus()
    {

        $bus = $this->newBus();
        $ormBus = $bus->addBus('orm');
        $cacheBus = $bus->addBus('cache');

        $this->assertSame($ormBus, $bus->bus('orm'));
        $this->assertSame($cacheBus, $bus->bus('cache'));
        $this->assertSame($ormBus, $ormBus->bus('orm'));
        $this->assertSame($ormBus, $cacheBus->bus('orm'));

        $importBus = $cacheBus->addBus('imports');
        $this->assertEquals('imports', $importBus->name());

        $this->assertSame($importBus, $bus->bus('imports'));
        $this->assertSame($importBus, $ormBus->bus('imports'));

        $importBus->removeBus('orm');

        $this->assertFalse($bus->hasBus('orm'));
        $this->assertFalse($cacheBus->hasBus('orm'));

    }

    /**
     * @expectedException LogicException
     **/
    public function test_addBus_named_default_throws_exception()
    {

        $bus = $this->newBus();
        $ormBus = $bus->addBus('default');
    }

    protected function newBus()
    {
        $object = new Bus();
        return $object;
    }
}

class BusTest_Subscribable implements Subscribable
{
    use SubscribableTrait;

    public function trigger($hook, $args)
    {
        $this->callOnListeners($hook, $args);
    }
}

class BusTest_Event
{
    public $number = 0;
    public $code = '';
}


With Kyle Williams out for the year with a torn ACL, the 49ers are looking for cover at receiver and returner.
According to Matt Maiocco of CSNBayArea.com, the 49ers are going to sign former Eagles wideout/return man Chad Hall to the practice squad.
That could be a temporary assignment, as a punt returner would help, particularly after Ted Ginn injured his wrist and muffed a punt against the Saints.
I suppose it's a nice signing for the practice squad…surprised they wouldn't look at bringing back Rock Cartwright though.
Also looking for either AJ Jenkins or LaMichael James to step up as well.
Whatever happened to next man up? Jenkins and James are accumulating dust by being inactive. Let em loose!
I guess AJ Jenkins is turning out to be a dissapointment.
This team is deep at all positions. If you notice, the article said PRACTICE SQUAD not active roster. Jenkins and LaMicael James are already on the active roster .. Hall will probably be activated to the 53 man roster in a few weeks after Kyle goes on IR… Baalke did his homework in the offseason , this was one of the reasons Jacobs/James were brought in b/c of the wear and tear on Gore/ Hunter..This offense will probably be more explosive.
This move has no bearing on AJ Jenkins.
AJ is part of the 53 and will be active this week.
Hall is going to the PS in case he needs to come up for Ginn.
All this means is that AJ and LMJ are not slated for KR duty, which is no surprise.
Why not use him ? or Jenkins ?
jenkins and james are not punt returners…they are wide receiver and runningback.. im sure they would like to use james but if anyone remembers the preseasson. james was horrible at returning punts…he muffed like 5 in one game….seriously. jenkins is just not playing because now ginn will fill the williams spot on wide receiver. dont fret. this coaching staff knows what they are doing.
Forget excitement on kick returns. The Niners need someone who can secure the ball safely. After last year's playoff experience, there is nothing, repeat, nothing more important on special teams than ball security, and a guy who can safely make a fair catch is a much better option than a guy who is a threat to break a big one but puts a ball on the turf now and again.


web applications using ASP.NET, MVC, SQL Server, PHP, MySQL, jQuery and AJAX.
We provide domain registration at very affordable rates in Pakistan.
with support for ASP.NET 4.5, SQL Server 2012, IIS 8, PHP 5.3.10, Apache, MySQL 5.1.
We develop creative and robust apps for Android and iOS.
We are the leading provider of E-Recruitment solutions in Pakistan and Middle East.
We offer quality website design and development services in Pakistan at best rates. The days of static pages have gone. Now companies are convinced by the impact of database driven interactive websites.
TechnoBird provides Domain Registration with your desired names at affordable rates to help you grow up your business.
Are you looking for a creative design for your website or need creative design for your office stationary? Our web and print creative design services are here to help.
We provide professional website design and development in both Windows and Linux based development technologies along with reliable hosting on both platforms at the competitive prices all over Pakistan.


Health informatics combines health care and information sciences to improve the delivery and management of health care. The Lewis School offers an interdisciplinary bachelor's degree in this rapidly growing field.
Nurses are a critical component of patient care and we prepare entry level registered nurses to meet health care challenges through the bachelor's degree program. In addition, the school offers all levels of graduate education, including master's degrees, DNP and a Doctor of Philosophy degree.
A popular career because of the increased interest in health and fitness, nutrition plays a vital role in each person's health and quality of life. Our graduates are well prepared to care for patients of all ages and all degrees of health and wellness whether in a corporate setting, hospital, sports medicine, food and pharmaceutical companies or private practice.
Physical therapists are dedicated to the prevention and rehabilitation of disability, injury and disease related to movement and function of the body. Georgia State prepares doctors of physical therapy who are committed to clinical excellence and scientific scholarly activity.
Respiratory therapy, one of the fastest growing careers, uses the latest technological medical equipment for life saving and life support care in cooperation with physicians. Respiratory therapists evaluate, treat and care for patients of all ages from premature infants to the elderly.


Hydrofarm's best 4ft T5 Grow Light (bulbs included) is great for seedlings, cuttings, houseplants, flowers… and much more! Produces more than double the output as normal fluorescent fixtures. Ideal for shelves or over bench tops. deciduous trees can provide needed shade in the summer, but since they lose their leaves each fall, they allow for sunlight in the winter.
Every gardener dreams of spring flowers during the dark days of winter, and looks forward eagerly to the first burst of spring color. Spring arrives at different times depending on where you live, but the sequence of blooms is similar in most places.
If I live in an area with a harsh winter, what should I do to protect my Knock Out® Roses? If you live in a harsh winter climate, add 2-3" of mulch, leaves, or pine/fir boughs around the base of the plant.
American Cockroach In Shower How To Get Termite Control Mosquitoes With west nile virus Found In Three New States The West Nile virus quickly spread across the United States after the first reported cases in Queens, New York in 1999. The virus is believed to have entered in an infected bird or mosquito, although there is no clear evidence.
March brings with it the promise of gardening and warm(er), sunny days, as Earth turns its frostbitten cheek to winter and springs forth from the vernal equinox. read about this month's holidays, happenings, seasonal recipes, gardening tips, Moon phases, folklore, and much more!
Jan 18, 2017 … … on insect populations for the following spring, but this does not mean it does … Many assume a warmer winter would spike insect populations, but if anything, … is more so the weather condition during which insects emerge.


Ananda Moy Ma is an example of a great female spiritual Master. She grew up in a very modest environment and had herself no visible spiritual Master. She seemed to know everything from within.
She traveled her whole life from one place to another. She did not have any material wealth or even a fixed place to stay. She spent her life for her disciples and helped, wherever she could.
Ananda Moy Ma did not write anything herself, but many of her talks have been recorded by her disciples. She also did not found any organisation, but through her silent influence many ashrams were founded in her name.
She never really revealed who she was, but she convinced by her personality and great charisma.


text:
@interface MYChatDataSource ()
@property (nonatomic, strong) NSMutableArray *expandedCellIndexPaths;
@end

@implementation MYChatDataSource

- (instancetype) init {
    self = [super init];
    if (self) {
        self.expandedCellIndexPaths = [NSMutableArray new];
    }
    return self;
}
- (NSInteger ) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.entries count];
}

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    MYChatCellView *cell = (MYChatCellView *) [tableView dequeueReusableCellWithIdentifier:@"KOChatCell"];
    MYChatEntry *entry = self.entries[indexPath.row];
    cell.entry = entry;
    cell.delegate = self.parentViewController;

    if (indexPath.row == 2) {
        cell.isDateVisible = YES;
    }

    if (indexPath.row == 0 || indexPath.row == 2 || indexPath.row == 5 || indexPath.row == 6) {
        cell.isOutgoing = YES;
    }

    return cell;
}

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    BOOL dateVisible = indexPath.row == 2;
    BOOL spamExpanded = [self.expandedCellIndexPaths containsObject:indexPath];
    return [KOChatControlHelper cellHeight:self.entries[indexPath.row] dateVisible:dateVisible spamExpanded:spamExpanded];
}

- (void) tableView:(UITableView *)tableView expandOrCollapseCell:(KOChatCellView *)cell {
    NSIndexPath *indexPath = [tableView indexPathForCell:cell];
    if([cell.entry isSpamed]) {
        if ([self.expandedCellIndexPaths containsObject:indexPath]) {
            [self.expandedCellIndexPaths removeObject:indexPath];
        } else {
            [self.expandedCellIndexPaths addObject:indexPath];
        }
        [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
}

@end

redpajama_set_name: RedPajamaGithub


text:
Cash Flow Never Lies
The numbers tell the story and not the other way around. Don't forget that.
Stocks quotes in this article: AMZN, TSLA, AAPL, MSFT, ABNB, DASH, BRK.A, BRK.B
We are the Renegades of Funk. Or, if you prefer The Jedi. Sometimes it feels like treating the valuation of equities as a SCIENCE, as it should be, is a lost art practiced by only a few of us. I try not to disrespect those who serve by using a military metaphor to describe something as prosaic as attempting to fairly value a company, but it does feel like a war sometimes.
There is just an army of people on the American financial media that never use even a single mathematical idea to try and divine the value of a stock or, more broadly, the fair value of the stock market which is of course composed of individual stocks. Tune them out!
If 2020 has taught us anything it is that most of the American media - and that most assuredly includes social media and its one-sided, Bradbury-esque censorship - is a completely useless. Ignore them!
As we get to the end of 2020, I really have no idea what "they" are saying about the stock market entering 2021. I honestly don't care. I will continue to hew to the motto of my firm: cash flow never lies.
That's where valuation is paramount. The 2020 stock market is filled with people using newfangled media methods to obfuscate and make excuses for companies that don't produce cash flow in excess of the cost of capital needed to generate those returns. We are partying like it's 1999.
I actually lived through the Tech Bubble as a Wall Street analyst and the lesson is an easy one. Promises made through hip buzzwords to justify ridiculous valuations simply never came true.
But, again, the numbers tell the story and not the other way around. Don't forget that. Many use pets.com as an example of the excesses of the (first) tech Bubble. That company's extraordinarily fast journey from start-up to public company to bankruptcy failure is well-documented. What most people miss, however, is that delivering pet supplies based on internet orders to far-flung customers is actually a very good idea. You think Lil' Jeffy B up in Seattle never thought of that? Of course he did.
But the reason Amazon (AMZN) succeeded where pets.com failed is a simple one: in delivery retail, scale is paramount. Large bags of dog food are really heavy and thus really expensive to ship. That's what killed pets.com. Amazon obviously crossed that scale threshold in millions of different SKUs a decade ago, and so the company is able to earn attractive returns on its capital and keep its shareholders happy without benefit of receiving a dividend. Lil' Jeffy B can take market share from just about anyone.
But very few consumer products companies possess that scale. That is where electric cars and the Magical Mystery Tour that is Tesla's (TSLA) stock price simply make no sense to me, a long-time car industry analyst. Tesla only generated positive cash flow last quarter because it accounts for its factory in Lingang China using an operating lease, not a direct capital expenditure. That is CFA Level I-stuff, and anybody should be able to see that. Amazon -another reference - offers supplement data to analysts that presents its facilities accounted for under operating leases as if they were bought and paid for. On that basis, AMZN STILL generates positive cash flow, but if Tesla did the same, their cash flow would have been negative last quarter, and probably would be forever.
Focus! Pay attention to this stuff! It matters! Longer-term returns on capital (shareholder's equity being the most obvious) are the sole driver for economic value creation. Apple (AAPL) does it incredibly well, as do Amazon, Microsoft (MSFT) and other tech titans. It's not just an "old economy" fuddy-duddy thing. It's actually the only thing.
But when you try to tell me, and my cadre of data nerds - what I used to refer to as the Portfolio Guru Army, but, again, sorry for the military reference - that returns on capital don't matter because of "disruption" or other such silly constructs, we tune you out. Feel free to overpay for Airbnb (ABNB) , DoorDash (DASH) and other hot IPOs. That worked really well in 2000, let's see how it works out in 2021. Also, by all means, invest in assets like cryptocurrencies that - even after Bitcoin's extraordinary run which has given it a larger market cap than Berkshire Hathaway (BRK.A) (BRK.B) - still have ZERO intrinsic value. I will not be joining you, and hopefully the other Renegades will pass, as well.
I run two separate small businesses, and believe me when I tell you that I know the return on EVERY dime that I have invested in them. So does Buffett, I would think, even for an enterprise as diversified as Berkshire Hathaway. Cash flow never lies, but the stock market can, and for more than one day, week, or even year.
Don't get fooled again!
(Amazon, Apple, and Microsoft are holdings in Jim Cramer's Action Alerts PLUS member club. Want to be alerted before Jim Cramer buys or sells these stocks? Learn more now.)
At the time of publication, Jim Collins' firm was Short TSLA.
TAGS: IPOs | Bitcoin | Investing | Markets | Stocks | Trading | Cryptocurrency
Carnival's Valuation Is a Head Scratcher
Markets may be painting an overly rosy picture for the cruise ship company.

redpajama_set_name: RedPajamaCommonCrawl


CRO selection. CRO performance evaluation. Whether you've been in the business of clinical trials for two years or twenty, these processes typically remain onerous, time-consuming, challenging, crucial, stressful… Need we go on? We at ISR would like to think that spending over a decade researching service provider selection and performance has left us with a pretty good idea of what readers need to know in order to make the process of selecting a Phase II/III service provider less arduous and more effective. There is a whole lot riding on the outcomes of clinical trials – why not utilize available information to make educated service provider selections?


Lana Del Rey has dropped heavy hints about her plans to take part in a magic mass "binding" ritual against Donald Trump today.
The singer shared a cryptic series of dates – "Feb 24, March 26, April 24, May 23" – on her Twitter account earlier this morning, along with clue: "Ingredients can b found online." While fans initially thought the post was something to do with the release of Rey's new album, it was quickly linked to an anti-Trump witchcraft ritual.
The mass spell, held on each "waning crescent moon", has been widely covered in the news this week. It calls on witches from around the world to cast a "binding" ritual on the US president once a month, in an effort to get him removed from office. The dates Rey shared on Twitter coincide with the dates of the spell, as does the time ("midnight"). Ingredients can also be found online.
The "eclectic magician" who originally encouraged the spell, Michael M. Hughes, revealed yesterday that he "felt very strongly" that the event would go viral. "I've been amazed at the way it has spread around the world," he told Dazed.
Learn more about the binding spell, including full instructions for taking part, here. The ritual is set to take place at midnight on February 24.


Big Bang is having a "Koe wo kiksasete" campaign and they want to hear your voice. To celebrate their third single the group will pick their favorite fan "voices" and send you, the fan, a personal message!
They even created another YouTube channel to host this campaign.
"With the release of our 3rd single KOE WO KIKASETE (LET ME HEAR YOUR VOICE) we are gathering messages from all over the world through this YouTube channel. Let us hear your voice.
This option lets you use your webcam to respond. YouTube will automatically attempt to detect your computer's settings.
Click the "Allow" button in the window to allow YouTube to access your camera and microphone.
Click the "Record" image to begin recording.
Once you're done recording, click stop. After that you can preview, publish, or re-record your video. You can also change the video Title, Description and Tags to the left of the player.
This option lets you respond with any video you've already posted.
This option works like the normal upload process.
Select the "Upload a Video" options.
Enter all of your video's information.
Click either "Upload a video" to upload a file, or "Record from Webcam" if you decide to use your webcam after all.
Note: One thing to keep in mind—your video can only be used as a response once. If you've used a video as a response in the past and want to use it for a new response, it will no longer be listed as the earlier response.
*Please respond directly to the video. Original contents please. Thank you.
If you ask me this is one hell of a way to interact and sell your single. So all you die hard Big Bang fans if you want to hear to get a personal message from your favorite group, time to bust out those video cams and work it!
Old news I forgot to post that was sitting in the draft area, sorry.


Bharat works to mobilize and raise the voices of fishing communities against coastal industrialization, and has fought for their rights in local courts as well as through international advocacy. He has conceptualized and implemented the first direct marketing system for fisherfolk in India (Mundra, Gujarat) and helped create a self sustaining model for information kiosks for fishing communities. Bharat has a PhD, in which he researched the effects of new fishing technologies on fishing communities, and has served as General Secretary for a fishworkers' rights association.
Namati's Environmental Justice Program, India, works in collaboration with the Centre for Policy Research.


text:
Romans 13: A Short Primer
Home » LONANG Commentaries » Legal Foundations » Romans 13: A Short Primer
by Gerald R. Thompson*
Before jumping into an analysis of Rom. 13, we should consider how, when and why civil authority came about in the first place.
From the beginning of history until the great flood of Noah, people had no civil power. The only authority given to mankind at that point was the authority of individuals and families to subdue and rule over the earth, to have children and families, and to take dominion over the earth. This authority did not include either the right of a person to rule over any other person (other than in a parent-child context), or the right of anyone to punish crimes and other legal offenses by others.
The law of nature, being the will of God expressed in the creation, was sufficient (as Ps. 19 and Rom. 1 inform us) to let people know that certain things were inherently wrong, such as theft, murder, adultery, etc. They were wrong, but no one had the authority to enforce these laws. That is why, when Cain killed Abel in Gen. 4, no one could rightfully take vengeance on Cain. In other words, no one had the right to enforce the law of murder, even though murder was wrong. So God put a mark on Cain – not to curse him, but to warn off any potential avengers.
After the flood, as part of God's covenant with Noah in Gen. 9, God for the first time authorized people to avenge (or to punish) the crime of murder. This may be understood as the initial grant of civil power to anyone. But to whom, exactly, was civil power given to? At the time the command to punish murder was spoken (Gen. 9:6), there were exactly only eight people on the face of the earth. There were no nations, no civil governments, and no kings. And so the authority to enforce the law of murder, along with all of the other promises in God's covenant with Noah, applied to each person there. And to all of their descendants, which now include everyone alive today.
Nations only came about years later, when people were scattered by language and family groups from the Tower of Babel. Civil governments only came about years after that, when these many separate family groups expanded into ethnic nations and began to organize governments. Notice here a crucial distinction: civil power and the birth of nations both came from God, but the formation of civil governments did not. God created the nations, but people make civil governments. Other than the nation of Israel (and even that is arguable, but for another time), God never made or gave any nation on the face of the earth a civil government. Civil governments are the creation of Man.
So when we get to the New Testament statements about civil government, including Rom. 13, the writers are not establishing any new principles, laying down any new laws, or indeed, saying anything new at all. They are most certainly not issuing any new commands from God. They are merely summarizing in a succinct form, what it is that God expected people to have figured out from the law of nature and from history.
Let me make one last point before we jump into the Rom. 13 text. Nothing in the initial grant of civil power, or the creation of nations and the formation of civil governments, nullified, superseded, or altered the authority which God previously gave to individuals and to families (i.e., the private sector). That which is most important, is that which God gave first. In the beginning, God gave mankind everything people need to survive and thrive. The addition of nations and civil government into the mix of human society was not a culmination point, but an additional support mechanism designed to help people overcome their abject failure in exercising self-government up to that point.
Be subject for the Lord's sake to every human institution, whether it be to the emperor as supreme, or to governors as sent by him to punish those who do evil and to praise those who do good. (1 Pet. 2:13-14). Let every person be subject to the governing authorities. For there is no authority except from God, and those that exist have been instituted by God. (Rom. 13:1).
The mission of civil government is therefore two-fold: a) to punish wrongdoers; and b) to commend what is right (in the American tradition, to secure individual rights). As to punishing wrongdoers, this includes not only punishing criminals, but also providing a means of redress for private litigants who have disputes over breaches of contract, property claims, injuries to persons, or other damages, etc. These are essentially the same means used for protecting individual rights.
In sum, civil power was granted to protect people from malefactors so the purposes of individual and family authority could be carried on without interference. That is, to restrain evil for the benefit of the private sector. Thus, nations were created, and civil power was granted, to provide a stable society for the safety, prosperity and happiness of the people in their private capacities. God did not create nations because individuals inherently need to be ruled, nor to superintend families, nor to exercise a superior dominion over the earth. Nations and civil government are, in the larger picture, merely facilitators for the private sector, not its replacement.
On the other hand, to "commend what is right" does not mean to do good things, to dole out special favors, or to enforce any alleged rights of the government against the people. Civil governments are not the creations of God, and as such, have no "rights."
Further, the legitimate role of civil government is very specifically limited to wielding the sword to carry out wrath on a limited class of wrongdoers. Nowhere do the scriptures commend civil government either to: 1) punish evil thoughts; or 2) punish merely moral wrongs which are not also crimes as God defined them. Nor did God ever give civil rulers the power to (re)define crimes as merely any behavior which those in power want to deter. The chief evil of civil government is not that it does too little, but that it seeks to do too much.
Thus, Rom. 13 is not a command to obey all purported authorities that people have created – it only applies to authorities instituted by God. And there is no presumption that merely because some form of human government exists, it was made (or put there) by God. It is the laws of God, which define and restrict all institutions of human authority, that people are to obey and respect.
Even the defenders of the so-called divine right of kings back in the 17th century, never made the argument which people now commonly ascribe to Romans 13 – "the mere fact I am king necessarily proves that God put me here." You see, the English kings knew that such a claim is easily refuted – all one has to do is assassinate the king and install a successor. Then the new king can claim "it must have been God's will, because He allowed it to happen." There isn't a whole lot of security in that argument.
It's funny that people today gravitate towards a line of reasoning that at the time, when the divine right of kings was popular, was known to be impractical and foolish. Oh, how far we have fallen!
Which leaves us with a terrible irony. Jesus came to bring liberty (Lk. 4:18) and God intended that civil rulers would be for our good. Yet, the way many people read Romans 13, it brings only bondage and evil. Shame on us! The solution? Change the way we understand the scriptures. And if your pastor or teacher is leading you into submission and subjection as a way of life instead of freedom and liberty, don't just sit there like a dummy.
What Is Said and Not Said
Let every person be subject to the governing authorities. For there is no authority except from God, and those that exist have been instituted by God. Therefore whoever resists the authorities resists what God has appointed, and those who resist will incur judgment. For rulers are not a terror to good conduct, but to bad. Would you have no fear of the one who is in authority? Then do what is good, and you will receive his approval, for he is God's servant for your good. But if you do wrong, be afraid, for he does not bear the sword in vain. For he is the servant of God, an avenger who carries out God's wrath on the wrongdoer. Rom. 13:1-4.
Be subject for the Lord's sake to every human institution, whether it be to the emperor as supreme, or to governors as sent by him to punish those who do evil and to praise those who do good. For this is the will of God, that by doing good you should put to silence the ignorance of foolish people. Live as people who are free, not using your freedom as a cover-up for evil, but living as servants of God. Honor everyone. Love the brotherhood. Fear God. Honor the emperor. 1 Pet. 2:13-17.
I purposely gave an extended introduction to these texts to lay a contextual framework for understanding them. First, that God has created no form of government for any Gentile nation, and second, that God has given no direct delegation of civil authority to any Gentile ruler. We need these basic principles firmly grounded before coming to these texts. Let's start by examining three key phrases which pose some interpretive challenges.
For there is no authority except from God, and those that exist have been instituted by God. Therefore whoever resists the authorities resists what God has appointed.
I take this text to mean primarily that civil government is not inherently evil, but that when God created the nations He in fact intended them to exercise civil power, and that it was mankind's job to institute such forms of civil government as would carry out God's intention. Note that it is civil authority which God has instituted, not any particular form of government, nor any specific persons as civil rulers. When civil rulers deviate from the authority God intended for them to exercise, our allegiance is to God, not to rulers.
For he is the servant of God, an avenger who carries out God's wrath on the wrongdoer.
This text indicates that the institution of civil government, consistent with God's purposes and intentions, is a good thing. It is also consistent with the general intention of God that all human institutions – including individual self-government, family government, and church government – are meant to restrain evil. Civil government is likewise tasked with restraining evil – the only difference being the types of evils it may restrain and the means it may use to restrain them when compared to the individual, family and church.
Be subject for the Lord's sake to every human institution, whether it be to the emperor as supreme, or to governors as sent by him.
It is the nature of all civil governments to have multiple layers or tiers of responsibility. We see this in the system of judges in ancient Israel, which is carried over into the American system of federal, state and local government. All such authority, when properly constituted, is equally entitled to respect and obedience. The listing of emperors and governors is by way of example – it is not an exhaustive list. The full list is not even limited to civil rulers. "Every human institution" means exactly what it says – not only civil government, but families, churches, and employers, etc.
What I do not see in any of these texts is an injunction for all people to give slavish obedience or unlimited submission to their civil rulers as embodiments of the presence of God among men. First, we must read all of scripture consistent with the rest of scripture and not force an interpretation which does violence to our understanding of many other texts. Second, we must carefully note what the Rom. 13 and 1 Pet. 2 texts do not say, namely,
Civil rulers stand in the place of God over the people, to the extent they may exercise authority which God has reserved unto Himself alone (i.e., authority over the mind and heart, and matters which God has elsewhere delegated to individuals, families or the church). – Not!
God has placed certain people in positions of civil authority, and if you dare to challenge their authority you will incur the wrath of God. – Not!
Everything civil rulers do is by definition approved and sanctioned by God, because the mere fact they are in those positions shows divine approval. – Not!
Every act taken to hold civil rulers to the limited authority God has given them is an act of rebellion against God Himself. – Not!
In other words, none of these statements (above) are what the scriptures stand for.
Context is Key
Now, let's take things to the next level by adding what we know about the broader context of human institutions. Namely, the statements be subject to the governing authorities and be subject to every human institution, do not refer exclusively to civil government. For individuals, families and the Church were all instituted by God – they are part and parcel of God's institutional framework and stand on no less than an equal footing with civil government as far as being considered a governing authority according to the scriptures.
So when 1 Peter commends us to be subject to every human institution, "whether it be to" this civil ruler or that civil ruler, these are to be taken as examples, not limitations. 1 Pet. 2:13-14 is not limited to civil rulers – rather, the respect we show for rightful authority (i.e., authority actually approved by God and not merely a pretended authority) extends even so far as to civil rulers when they are acting rightfully.
And when I say that the private sector stands on no less than an equal footing with civil government, what I mean, of course, is that the private sector actually stands above civil government. Of all the governing authorities, civil government is the least, not the greatest. Rom. 13 and 1 Pet. 2 do not override God's authority framework previously established, and somehow elevate civil rulers to the top of the authority pile.
1) The private sector gets its authority directly from God, whereas civil government gets its authority from the people, and what God grants is always greater than what people grant.
2) The people only ever gave civil government a portion of what they have inherently, so that the powers of civil government are always less than and inferior to the totality of rights and powers of the people. Just because the people have created a government does not mean they have deprived themselves of the ability to engage in self-government, or that ultimate sovereignty does not still reside with them.
3) Civil government is the mere agent of the people, not their master. Public officials owe a duty of allegiance and obedience to follow the will of the people – that is the consent of the governed, which is the paramount power in any political society.
4) All civil governments are disposable. If the people don't like what the government is doing, they can always change (alter or abolish) the government. Contrariwise, the government has no power to alter or abolish the people. Inherently, the people are greater.
5) God placed mankind on earth originally with only private sector authority and no civil power. This was all that was necessary for people to survive and thrive. Civil power only came along almost 2,000 years later. Thus, civil government must be less necessary to human existence than the private sector.
Additionally, neither Rom. 13 nor 1 Pet. 2 establish rules of conduct or conscience that are either higher than, or superior to, the Ten Commandments. And if we examine the Decalogue, we find the first four commandments directed to the identity, invisible nature, name and holiness of the Creator, followed immediately by a directive to respect the next highest authority among mankind other than God Himself – parents. The rest of the commandments are directed to activities we may squarely place in the sphere of the private sector (murder, adultery, theft, false accusations and coveting).
What's missing? Nowhere in the Ten Commandments is there a directive to obey monarchs, governors, public officials or any civil authority. Nowhere in the Ten Commandments is there a directive to obey pastors, ministers, church elders or any ecclesiastical authority. Church and state? Pffft! They are nothing compared to the authority of God, the family, and the private sector. If you really want to please God, you'd better get your priorities straight.
* Copyright © 2021 Gerald R. Thompson. All rights reserved. Used by permission. All Bible quotations are from the English Standard Version.


text:
The Tabernacle Choir Blog
Photo by Eric Nopanen on Unsplash
The Powerful Effect of Music on the Brain
"Music is truly the universal language, and when it is excellently expressed how deeply it moves our souls." —David O. McKay
Music has been scientifically proven to have a powerful effect on the brain. Recent research shows that music can help in many aspects of the brain, including pain reduction, stress relief, memory, and brain injuries. In the book The Power of Music, Elena Mannes says, "Scientists have found that music stimulates more parts of the brain than any other human function." Let's look at some of the ways music can aid in the healing and stimulation of the human brain.
"I think music in itself is healing. It's an explosive expression of humanity. It's something we are all touched by. No matter what culture we're from, everyone loves music." —Billy Joel
A 2014 study found that music was helpful for patients with fibromyalgia. The study showed that listening to relaxing music of the patient's choice "reduced pain and increased functional mobility significantly." Researchers believe that music eases pain because listening to it triggers opioids—the body's natural pain relievers. In a 2013 study, people given the opioid blocking drug Naltrexone experienced less pleasure while listening to their favorite song, suggesting music activates the release of pain-relieving opioids.
Depending on the type of music you listen to, relaxing music can alleviate stress by lowering cortisol levels, which is the hormone released in response to stress.
A 2013 study demonstrates a link between music and decreased stress in pediatric emergency room patients. "In the trial with 42 children ages 3 to 11, University of Alberta researchers found that patients who listened to relaxing music while getting an IV inserted reported significantly less pain, and some demonstrated significantly less distress, compared with patients who did not listen to music," according to the American Psychological Association.
Studies linking music to memory recall have increased since the early 20th century, when the research first emerged. Listening to certain music can take your mind back decades in an instant. In a previous blog post we published, titled "Studies Prove Music Boosts Brain Activity in Alzheimer's Patients," we cited the documentary Alive Inside, which chronicled how music awakened patients suffering from memory loss. Neurologist Oliver Sacks said, "Music evokes emotion, and emotion can bring with it memory. … It brings back the feeling of life when nothing else can."
A 2014 study was conducted on 89 patients with dementia, where the patient and caregivers were randomly assigned either a 10-week music listening coaching group, a 10-week singing coaching group, or regular care. The results showed that "compared with usual care, both singing and music listening improved mood, orientation, and remote episodic memory and to a lesser extent, also attention and executive function and general cognition. Singing also enhanced short-term and working memory and caregiver well-being, whereas music listening had a positive effect on quality of life."
Seizure, Brain Injury, or Stroke
It has been reported that the brains of patients with epilepsy respond differently to music than people who do not have epilepsy. "Persons with epilepsy synchronize before a seizure. However, in our study, patients with epilepsy synchronized to the music without having a seizure," said Christine Charyton, of The Ohio State University Wexner Medical Center. Charyton explained that stress causes seizures to occur and added, "By listening to the music, many patients reported that they felt relaxed."
Stroke patients who listened to music in the early stages after a stroke showed an improvement in recovery according to a 2008 study. Author of the study, Teppo Särkämö, suggested that patients start listening to music soon after the stroke, as many changes occur during the first weeks and months of recovery. "We found that three months after the stroke, verbal memory improved from the first week post-stroke by 60 percent in music listeners," said Särkämö.
In 1973 a music-based treatment called Melodic Intonation Therapy was developed to help stroke survivors or people who suffer with aphasia to be able to communicate again. The purpose of the therapy is to convert singing into speech. According to Research and Hope, even though these patients aren't able to speak, "they are often able to sing, sometimes with the same fluency and clarity they had before the onset of illness."
Discover the power of music with some of our YouTube playlists:
Music of Rodgers and Hammerstein »
Music from Handel »
Greatest Hits! (Over 1 Million Views) »
Follow us for more insights on songs and performances by the Choir:
Studies Prove Music Boosts Brain Activity in Alzheimer's Patients
Scientific Study Shows a Link Between Musical Training and Successful Children
Participating in Musical Events Leads to a Happier Life
An Amazing Phenomenon Happens to the Heartbeats of Choir Members When They Sing Together
9 Songs That Will Change Your Mood for the Better


It's a simple equation for a good time!
Welcome to nomikai - social food and drinkery.
Our social food blends unique ingredients on specialty dough, fusing exotic flavors with familiar presentations. Whether you call it pizza or flatbread, the result is a combination of similarly casual and highly addictive eats. If you're curious about new options or just want to nosh on old favorites, there will be something on the list for you.
Bringing the fun quotient to a new level, nomikai is a full bar- what we like to call a drinkery - offering premium Japanese sake, craft spirits, beer and wine.
We're making the middle of the week a little more exciting with Whiskey Wednesdays.
Enjoy special discounted prices on select whiskeys!
Punch bowls - the hit of any party - perfect for a crowd!
Special Punchbowls available on Thursdays only!
Joto Daiginjo "72 Golden Clocks"
Come on down and enjoy special discount prices on select whiskeys!
There are plenty of great reasons to join the nomikai EClub! You'll be the first to hear about the latest events and specials and receive a Free Birthday surprise! It's easy! Sign up below and receive a complimentary appetizer!
We will never sell your information or spam you. That's just not cool. You can unsubscribe at any time.
Looking to work at a cool fun place? Cool, because we're looking for cool fun people to join our team. Drop us a note at nomikaisj@gmail.com or fill in the form below and let us know why you shine!


Hello all! I hope you all had a great weekend! I sure did. Yesterday was Sunday, and Sunday's are usually the most peaceful days of each week. I spent the morning doing some major cleaning and then spent the afternoon with the family. Family time is always the best. It's something special when we all get together. It's always great to see my little nephew, and see how much he's grown. Love that little guy!
Well here are a few things I hadn't worn in a while.


Gibt ein assoziatives Array zurück das den zuletzt aufgetretenen Fehler mit den Elementen "type" (für die Art des Fehlers), "message" (für die Fehlermeldung) sowie "file" und "line" (für den Ort an dem der Fehler aufgetreten ist) beschreibt. Wenn bisher noch kein Fehler aufgetreten ist, wird NULL zurückgegeben.
If an error handler (see set_error_handler ) successfully handles an error then that error will not be reported by this function.
Function error_get_last() will return an error information even if the error is hidden because you've used character @, because of the "error_reporting" directive in the php.ini file, or because you've used function error_reporting().
# Check if there was a PHP fatal error.
# Using error_get_last is the "right" way, but it requires PHP 5.2+. The back-up is a hack.
This is, of course, language-dependent, so it wouldn't be good in widely-distributed code, but it may help in certain cases (or at least be the base of something that would work).
Beware that registing a shutdown function to catch errors won't work if other shutdown functions throw errors.
In the above code, $last_error will contain the warning, becuase cleanupObjects() is called first.
The error_get_last() function will give you the most recent error even when that error is a Fatal error.
While mail at mbaierl dot com makes the point that this function isn't best for reporting the possible error condition of the most recently executed step, there are situations in which it is especially helpful to know the last error—regardless of when it occurred.
As an example, imagine if you had some code that captured the output from dynamic pages, and cached it for faster delivery to subsequent visitors. A final sanity check would be to see if an error has occurred anywhere during the execution of the script. If there has been an error, we probably don't want to cache that page.
Like $php_errormsg, the return value of this function may not be updated if a user-defined error handler returns non-FALSE. Tested on PHP 5.2.6.
This function is pretty useless, as it can not be reset, so there is no way to know if the error really happened on the line before this function call.


text:
Thousands of Chinese workers clash with the police in protest against the state repression under the cover of COVID-19
Statement of the Revolutionary Communist International Tendency (RCIT), 28 March 2020, www.thecommunists.net
On Friday, 27 March, thousands of Chinese workers clashed with the police at the border of the provinces Hubei and Jiangxi. Video clips circulating in Chinese social media show violent confrontations with riot police starting at 8.00am in the morning and continuing until late in the afternoon. Several police cars were overturned and at least seven police officers injured. Popular outrage seems to have been so massive that some police from the province Hubei joined the protesters and attacked with them the police from Jiangxi.
The Stalinist-capitalist dictatorship in China has imposed for a long time massive restrictions on the freedom of movement of its citizens from one province to the other. This is why Chinese workers who are employed in another province are called "migrants". These restrictions have been massively enforced since the beginning of the COVID-19 crisis.
Hubei is home of around 60 million people. Its capital, Wuhan, has been at the centre of the Corona Virus crisis. The regime has put its citizens under a draconic lockdown regime until recently.
As the regime now claims that it has brought the spread of the Corona Virus under control, it has started to relax the travel restrictions on Wednesday for citizens of Hubei outside of Wuhan City. However, they are only allowed to leave their province as long as they possess a "green code" to certify that they are in good health (which is difficult to get from the bureaucratic authorities).
Furthermore, citizens of Hubei face massive discrimination in the rest of China. The clashes broke out when police of Jiangxi did not allow citizens of Hubei to cross the bridge across the Yangtze River to leave their province. Even the Communist Party mouthpiece People's Daily acknowledged: "…it is undeniable that some places, intentionally or not, have set up obstacles for Hubei migrant workers to return to their posts and hold prejudices against them." (South China Morning Post: Coronavirus: police, public clash as border reopens between Hubei and Jiangxi provinces, 28 March 2020, https://www.scmp.com/news/china/society/article/3077393/coronavirus-police-public-clash-border-reopens-between-hubei-and)
The Stalinist-capitalist dictatorship is evidently nervous about these clashes. Global Times – the regime's English-language mouthpiece – had to admit that "the incident triggered a large confrontation." It also was forced to report that these clashes "have sparked internet outrage. Some netizens accused Jiujiang police of discriminating against Hubei people because of the COVID-19 pandemic while some denied that." (Global Times: Hubei and Jiangxi investigate police conflict on provincial border, 27 March 2020, https://www.globaltimes.cn/content/1183980.shtml)
The Revolutionary Communist International Tendency (RCIT) fully supports these protests. We have stated numerous times that the regime – not only in China but all over the world – uses the COVID-19 crisis as a pretext to increase the state repression. Wuhan – a major working class city of 11 million people with a large manufacturing industry – was the centre of important popular protests in summer 2019 against the horrible air pollution. In addition, the regime in Beijing was terrified about the mass uprising in Hong Kong and the possibility of provoking similar events in other Chinese regions.
The RCIT has emphasized in numerous documents that the mass lockdown of the whole population – in China as well as globally – is a counter-revolutionary strike against the working class and the popular masses. It is primarily not motivated by health considerations but by political calculations. If the regimes would be primarily interested in containing and eliminating the pandemic they would focus on free mass testing of the population, in expanding the resources of the health sector and in providing free medical treatment to those infected.
But in fact the main interests of the capitalist regimes are to paralyze, terrify and confuse the workers and oppressed, to launch a gigantic wave of austerity attacks, mass sackings and factory closures as well as to massively build-up the state repression apparatus. Since the global capitalist system experiences its worst economic slump since 1929, the ruling classes are planning to use the threat of the Corona Virus for months and years in order to advance these goals.
The RCIT has therefore warned from the beginning that the COVID-19 crisis is utilized by the ruling classes as a cover for a major global counterrevolutionary offensive. They are launching huge authoritarian attacks on democratic rights like the mass lock downs and the suppression of the right to demonstrate and to assemble.
Unfortunately, the opportunistic left has largely capitulated to this pressure of the ruling classes around the world. Many of them even share the admiration of various capitalist politicians and journalists for the draconic methods of China's Stalinist-capitalist regime. However, the mass protests in Hubei demonstrate that the working class is not prepared to accept the state repression.
The situation is highly symbolic: while large sectors of the so-called left support mass lock down and state repression under the cover of the COVID-10 crisis, the workers and oppressed rebel against these attacks of the Bonapartist regimes. In other words, these two are on the opposite sides of the barricades. The place of revolutionaries can only be on the side of the popular masses fighting for democratic rights.
We repeat our call to all authentic revolutionaries to enter in serious discussion and collaboration with the RCIT. The mass riots in Hubei are a harbinger of future events. We need to politically and organizationally prepare for such revolutionary explosions which will take place not only in China but in many places around the world. There is no time to lose! Join the RCIT in building a Revolutionary World Party!
International Bureau of the RCIT
The RCIT has published numerous statements and articles on the COVID-19 crisis of which several have been translated into different languages. They are all collected at a special sub-page in our website: https://www.thecommunists.net/worldwide/global/collection-of-articles-on-the-2019-corona-virus/
In particular we draw the attention of readers to these two documents:
We are at a turning point in the world situation as the ruling classes provoke a war-like atmosphere in order to legitimize the build-up of chauvinist state-bonapartist regimes
Manifesto of the Revolutionary Communist International Tendency (RCIT), 21 March 2020
https://www.thecommunists.net/worldwide/global/covid-19-a-cover-for-a-major-global-counterrevolutionary-offensive/
Act Now because History is Happening Now!
A call to all revolutionary organizations and activists to join forces against the global counter-revolutionary offensive under the cover of COVID-19
Open Letter of the Revolutionary Communist International Tendency (RCIT), 26 March 2020
https://www.thecommunists.net/worldwide/global/open-letter-act-now-because-history-is-happening-now/


Abstract: We demonstrate a novel class of trapping potentials, time-averaged adiabatic potentials (TAAP), which allows the generation of a large variety of traps for quantum gases and matter-wave guides for atom interferometers. Examples include stacks of pancakes, rows of cigars, and multiple rings or sickles. The traps can be coupled through controllable tunneling barriers or merged altogether. We present analytical expressions for pancake-, cigar-, and ring-shaped traps. The ring geometry is of particular interest for guided matter-wave interferometry as it provides a perfectly smooth waveguide of widely tunable diameter and thus adjustable sensitivity of the interferometer. The flexibility of the TAAP would make possible the use of Bose-Einstein condensates as coherent matter waves in large-area atom interferometers.
This entry was posted in IESL, Publications, UNOT - Theory and tagged IESL, Publication, Theory. Bookmark the permalink.


text:
LA Varsity
KLAC is now AM 570 LA Sports — but…
Glendale power plant protest
Marijuana in Montebello
Things to doRadio
KLAC is now AM 570 LA Sports — but what's the difference?
Headphones Podcast On-Air
By Richard Wagoner | rwagoner@socalradiowaves.com |
PUBLISHED: March 18, 2015 at 12:42 pm | UPDATED: August 28, 2017 at 3:34 am
It's been years since anyone paid attention to KLAC (570 AM). So long that many forgot the station used to play music — like most AM stations, music is the last format that attracted an audience large enough to be meaningful. In the case of KLAC, it was adult standards that immediately followed country.
But that was a long time ago. For the past decade or so KLAC has been sports. Not that anyone cares. Outside of the entertaining "Petros and Money Show" in the afternoon, none of the shows has been noteworthy. And the ratings have reflected that seemingly forever, such as in the most recent Nielsen ratings that has KLAC at a 0.5 share of the audience. Put into perspective, if you combine the ratings of all the sports stations in town — KLAC, KLAA (830 AM), KSPN (710 AM) and KFWB (980 AM) — you have a 1.8 share of the audience. That's good for 24th place. Combined.
But all that's about to change. Owner iHeartRadio, formerly known as Clear Channel, has the answer. KLAC as we know it is gone. In its place: AM 570 L.A. Sports.
What's new? Get this — a brand-new logo! A couple of new shows, too. Oh, and did I mention the brand-new logo? It's a really nice logo.
The day starts with Dan Patrick from 6 to 9 a.m., followed by the all-new "L.A. Today" with Bill Reiter and Leann Tweeden from 9 a.m. to noon. Jay Mohr follows until 3 p.m., at which time Petros Papadakis and Matt "Money" Smith take over.
Highlighting the co-ownership of the station with the Los Angeles Dodgers, "Dodger Talk," featuring David Vassegh and Kevin Kennedy, will air every night all year long at 7, or following the Dodgers games when they are playing.
"Your report should of been about how iHeartRadio changed nice family station Hot 92.3 from a station with loved DJs such as Art Laboe — who is a legend here in Los Angeles, honored by Angelenos — to a vulgar, thuggish, no class or respect station. This is a travesty. Our Latino culture was kicked to the curb — total discrimination — for a station that totally glorifies thugs, drugs and vulgarity. Sick. And Big Boy was totally in on it; he already had a million-dollar job he walked out on for $3 million, knowing his fellow DJs would be kicked to the curb. Los Angeles lost a fabulous station for a group of greedy lowlifes."
— Dorothy Ortega
I've gotten emails and read posts on Facebook stating pretty much the same thing. Losing Hot is particularly tough for fans because there is no replacement; no other station in town plays the same music. If you live in the right area you can hear old school — and Art Laboe, whose syndicated show moved after Hot changed formats — on KQIE/Riverside (104.7 FM).
Of course, what I really want is for Laboe to bring back the original 1110 KRLA (now KDIS, 1110 AM) and program the tunes as he did in the 1970s and early '80s. KRLA was the original old-school station, with ties to East L.A. going back decades. But that's just me living in the past again.
"How do I go about letting KABC (790 AM) know that they did not make a good choice in replacing Brian Suits with Judge Cristina Perez? While she appears to know her legal stuff, her voice — which is all soft and sweet — is annoying to listen to when speaking about such heavy-duty matters. Does anyone else feel the way I do? I change the station to KFI (640 AM) from 9 to 10 a.m. when I am in the car during my morning drive."
— Fern Reisner
No, you are not the only one. I've received a few letters such as yours, along with quite a few asking where they can find Suits. Short answer: I cannot find him either. My hunch: I'm not expecting the Perez show to last.
John Phillips is on the short list to become the new host of the syndicated Red Eye Radio, to replace Greg Gutfeld. I have not been able to catch Phillips yet to get his thoughts. Next week, I should have the scoop.
Richard Wagoner is a San Pedro freelance writer covering radio in Southern California. Send him email at rwagoner@cox.net.
Motorcyclist killed in 210 Freeway collision in Pasadena
Man found dead in crawlspace of 210 Freeway overcrossing in Arcadia
Cal State LA is trying to use a bioscience hub to bring new jobs, opportunity to struggling region
San Francisco trial court ruling a temporary setback for Prop. 13
This man saved a kitten straight out of a coyote's mouth
Children of motorcyclist killed in 2016 Pasadena hit-and-run crash settle suit with Tesla owner
Investigation continues in death of woman found in Pasadena parking lot
Dispute among neighbors leads to fatal shooting in Temple City
Woman found beaten to death in Pasadena parking lot is identified
2 injured in Alhambra crash that may be linked to LA shooting
Richard Wagoner
Richard Wagoner is a San Pedro freelance columnist covering radio in Southern California. Email rwagoner@socalradiowaves.com.
L.A. Daily News


text:
JL SMITHER
About JL
Short stories and poems
Novel (in-progress)
Monster at the Institute
Review of To The Lighthouse
Woolf, Virginia, and Juliet Stevenson. 2008. To the lighthouse. [S.l.]: Naxos AudioBooks.
http://www.worldcat.org/oclc/
More of a poem than a novel, and a better poem than most. Virginia Woolf pulls threads of images through the fabric of individual characters' lives in a way that exposes their innermost thoughts and feelings, impressions they may even hesitate to admit to themselves, let alone to the other characters around them. By exposing her characters down to their essences, Woolf creates a cast of distinct individuals that readers can relate to one by one through the common humanity of their anxieties and sudden waves of affection.
Although the narrative jumps frequently from one character's mind to another, the impressions are distinct and clear enough that the reader doesn't get lost in the translation of these cloud-like expressions to the printed page. We understand James's seething hatred just as we understand why his father continues to tickle his leg. We understand Lily's certainty about moving the tree toward the middle just as we understand Tansley's insistence that women can't paint, can't write.
There's not much plot to the story. In parts 1 and 3, the focus instead is on a microscopic view of a few hours of life. In part 2, the view zooms out so far that 10 years pass in an instant. These hours may not seem significant in the scheme of things—in parts 1 and 3, no one is born, no one dies—but they influence every life who experiences them. And Woolf's genius conveys this quiet drama beautifully.
Two Stars
Read my reviews on
The writing made available on this site by JL Smither is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.


text:
namespace ash {

// Singleton broker that stands in the middle between the
// ChromeKioskAppInstaller and the KioskAppExternalLoader. The external
// loader registers here when created and will be triggered by the app installer
// when the apps to be installed are known.
class ChromeKioskExternalLoaderBroker {
 public:
  using InstallDataChangeCallback =
      base::RepeatingCallback<void(base::DictionaryValue)>;

  static ChromeKioskExternalLoaderBroker* Get();

  static void Shutdown();

  ChromeKioskExternalLoaderBroker();
  ChromeKioskExternalLoaderBroker(const ChromeKioskExternalLoaderBroker&) =
      delete;
  ChromeKioskExternalLoaderBroker& operator=(
      const ChromeKioskExternalLoaderBroker&) = delete;
  ~ChromeKioskExternalLoaderBroker();

  void RegisterPrimaryAppInstallDataObserver(
      InstallDataChangeCallback callback);
  void RegisterSecondaryAppInstallDataObserver(
      InstallDataChangeCallback callback);

  void TriggerPrimaryAppInstall(
      const ChromeKioskAppInstaller::AppInstallData& install_data);
  void TriggerSecondaryAppInstall(std::vector<std::string> secondary_app_ids);

 private:
  base::DictionaryValue CreatePrimaryAppLoaderPrefs() const;
  base::DictionaryValue CreateSecondaryAppLoaderPrefs() const;

  absl::optional<ChromeKioskAppInstaller::AppInstallData>
      primary_app_install_data_;
  absl::optional<std::vector<std::string>> secondary_app_ids_;

  // Handle to the primary app external loader.
  InstallDataChangeCallback primary_app_changed_handler_;

  // Handle to the secondary app external loader.
  InstallDataChangeCallback secondary_apps_changed_handler_;
};

}  // namespace ash

#endif  // CHROME_BROWSER_CHROMEOS_APP_MODE_CHROME_KIOSK_EXTERNAL_LOADER_BROKER_H_


text:
Duchess of Wellington is the title given to the wife of the Duke of Wellington. Women who have held the title include:

Catherine Wellesley, Duchess of Wellington (1773-1831)
Elizabeth Wellesley, Duchess of Wellington (1820-1904)
Dorothy Wellesley, Duchess of Wellington (1889-1956)
Diana Wellesley, Duchess of Wellington (1922-2010)
Princess Antonia, Duchess of Wellington (born 1955), current holder of the title

In popular culture:

The 2009 Filipino comedy film Yaya and Angelina: The Spoiled Brat Movie featured a fictionalized (and unnamed) Duchess of Wellington, who was the subject of a terrorist plot in the movie. The duchess was portrayed by Michael V., who also portrayed one of the titular characters, Rosalinda "Yaya" Lucero.

redpajama_set_name: RedPajamaWikipedia


text:
Runinskrift Sö 299 är ett runstensfragment som sitter inmurat i Huddinge kyrkas yttervägg i Huddinge socken på Södertörn.

Stenen
Stenen stod ursprungligen vid Kyrksjön strax norr om Huddinge kyrka. När kyrkan byggdes kring 1200 togs stenen till vara som byggnadsmaterial och inmurades i långhusets södra yttervägg. Dess ovanliga stenart består av rosa sandsten. Måtten är cirka 115 x 70 cm och den sitter 1,5 meter ovanför marken. Av texten att döma är stenen rest efter en moder av hennes söner och de lät även bygga en bro. Ristningens ornamentik går i stilen Fågelperspektiv.

Inskriften

Runsvenska: onunr : auk thurfa... -r sino : thair : kirthu bru

Nusvenska: Anund och Torfast... sin moder. De gjorde bro.

Richard Dybecks teckning utförd vid hans besök 1855.

Se även
Lista över Södermanlands runinskrifter
Sverige under vikingatiden
Sverige under äldre medeltiden

Källor
 Gömmarens gåva, längs rinnande vatten genom Södertörns historia, Olle Magnusson, Hanvedens Förlag, 1994,
 Huddinge forntid, Huddinges Historia 5, Alf Nordström och Jonas Ferenius, Huddinge kommun, 1984, sid. 38, ISSN 0280-6088,
 Huddinge, en socken i storstadens skugga, Margareta Seth-Stenung, Huddinge Hembygdsförening, 1956

Noter

Södermanlands runinskrifter
Runinskrifter i Huddinge kommun


text:
Q: Get current user id in function php I know that this question is already often asked but there is no exact answer for it.
I need to get the loggedin user id to change a value in the database for this user.
I tried 2 ways it didn't work.
Way 1:
$user = get_current_user_id();

$sql = "UPDATE table_usermeta SET meta_value = '0' WHERE user_id= $user AND meta_key = 'alg_wc_ev_is_activated';";

Way 2:
$user = wp_get_current_user();
$user_id = $user->ID;

$sql = "UPDATE table_usermeta SET meta_value = '0' WHERE user_id= $user_id AND meta_key = 'alg_wc_ev_is_activated';";

Full code:
function do_anything() {
$servername = "localhost";

$user = get_current_user_id();
    echo $user;
    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
    }

    $sql = "UPDATE table_usermeta SET meta_value = '0' WHERE user_id= $user->ID AND meta_key = 'alg_wc_ev_is_activated';";

    if ($conn->query($sql) === TRUE) {
    echo "Record updated successfully";
    } else {
    echo "Error updating record: " . $conn->error;
    }
    $conn->close();

wp_redirect(  wc_get_page_permalink( 'myaccount' ) );
exit();
}
add_action('wp_logout', 'do_anything');

A: You're running your code on the wp_loguout hook, which is after the user has logged out, so of course there's no current user ID. There's no current user at all.
If you look at the documentation for the wp_logout hook, you will see that the ID of the user that was logged out is passed to any hooked functions. You need to use that if you want the logged out user's ID:
function do_anything( $user_id ) {
    // $user_id is now the logged out user's ID.
}
add_action( 'wp_logout', 'do_anything' );

Also, you really should not be creating a new connection to the database and using SQL if you want to update user meta. You should be using the proper function, update_user_meta():
function do_anything( $user_id ) {
    update_user_meta( $user_id, 'alg_wc_ev_is_activated', '0' );
    // etc.
}
add_action( 'wp_logout', 'do_anything' );

redpajama_set_name: RedPajamaStackExchange


text:
Le   était une pièce d'artillerie de  dite "de montagne" utilisée par l'Armée impériale japonaise durant la Seconde Guerre sino-japonaise et la Seconde Guerre mondiale. Ce canon de  supplanta le Type 41 de même calibre pour devenir la pièce d'artillerie standard d'une division d'infanterie japonaise. La dénomination  Type 94 indique que cette pièce d'artillerie a été adoptée par l'Armée en l'an 2594 du calendrier japonais soit 1934 dans notre calendrier grégorien.

Histoire et développement
Les retours d'expériences en combat en zone montagneuses du Type 41 durant l'invasion de la Manchourie démontrèrent, au commandement japonais, que ce canon manquait non seulement de puissance de feu et de précision mais que son transport en terrain difficile n'était pas aussi aisé qu'espéré.  Le Bureau Technique de l'Armée impériale fut donc assigné au développement de son remplaçant au 1931. Le premier prototype fut testé en 1932 et son modèle fut adopté par l'Armée en septembre 1934 sous la dénomination Type 94.
Cependant, le projet de rééquiper tous les régiments d'artillerie avec ce nouveau canon fut constamment reporté en raison de priorités budgétaires.

Conception
Le canon de montagne Type 94 de  était une pièce d'artillerie monotube qui incorporait de nombreuses innovations techniques d'armuriers étrangers : comme la culasse à ouverture coulissante horizontale des canons allemands Krupp (sans doute repris de l'obusier Type 38 15 cm) , ainsi que le mécanisme d'absorption du recul hydropneumatique et l'affut sur roue de la société française Schneider (issu du canon de 105 mle 1913 Schneider). La position du canon sur l'affut a été étudiée pour que celui-ci soit positionné au niveau de son centre d'équilibre, ne nécessitant ainsi pas de système d'équilibrage supplémentaires. De plus, le canon pouvait tirer avec son affut déployé ou non. Les servants étaient partiellement protégés par un bouclier frontal de  d'épaisseur.

La désignation "de montagne" du canon indique que sa construction est modulaire pour faciliter le transport. Le Type 94 était ainsi capable d'être divisé en 11 parties en moins de 5 min pour être transportable à dos d'homme ou mulet. La partie la plus lourde pesant , l'ensemble était transporté par 6 chevaux ou par 18 hommes. Néanmoins durant la campagne de Bougainville, en raison de la difficulté du terrain, l'équipage monta à 41 hommes pour son transport. La procédure de mise en place prenait 10 min et maximum 10 de plus la nuit grâce à des indicateurs luminescents sur les parties à assembler.

Munitions
Le Type 94 tirait les mêmes projectiles que les autres pièces de  nippones  mais avec une charge plus grande que le canon de montagne Type 41 (identique à ceux du Type 38).  Le Type 94 pouvait utiliser :
 Des obus explosifs  :
  M94 de  dont  de TNT avec une fusée M88 (choix percutante ou fusante)
 "A" de  chargé avec de l'acide picrique et du Dinitrotoluène avec une  fusée M3 (fusante)
 "B" de  chargé avec  de l'acide picrique et du Dinitrotoluène avec une  fusée M88 (choix percutante ou fusante)
 M90/97 de  avec  de TNT avec une fusée  fusée (choix percutante ou fusante)
 M90 de  chargé de TNT avec une  fusée M88 (choix percutante ou fusante)
 Des obus anti-blindage :
M95 de  chargé avec   de l'acide picrique et du Dinitrotoluène avec une fusée M95 (explosion après impact)
 Des obus à shrapnell :
 M90 de  chargé avec  de poudre noire et une  fusée M5 (percutante et fusante)
 M38 de  chargé avec  de poudre noire et une  fusée M3 (choix percutante et fusante)
 Des obus chimiques
 Des obus éclairants :
 M90 de  avec une  fusée M5 (fusante)
 Des obus incendiaires :
 M90 de  avec une  fusée M5 (percutante et fusante)
 Des obus fumigènes :
 M90 de  chargé avec  de l'acide picrique et du Dinitrotoluène avec une  fusée M88 (percutante)

Engagements
Le canon de montagne  Type 94 de  fut utilisé intensivement par l'Armée impériale japonaise lors de la bataille du Mandchoukouo et durant la Seconde Guerre sino-japonaise. Il fut mis en dotation de l'Armée Expéditionnaire du Sud et utilisé  en position défensive dans les Iles des Indes Néerlandaises et du Mandat des îles du Pacifique. C'était l'un des canons les couramment rencontrés par les forces alliés durant les premiers mois de la guerre du Pacifique.

La copie chinoise du  Type 94 fut aussi utilisée par l'Armée nord-coréenne durant la guerre de Corée

Médias

Notes et références

Sources
 Bishop, Chris (eds) The Encyclopedia of Weapons of World War II. Barnes & Nobel. 1998.
 Chant, Chris. Artillery of World War II, Zenith Press, 2001,
 McLean, Donald B. Japanese Artillery; Weapons and Tactics. Wickenburg, Ariz.: Normount Technical Publications 1973. .
 Mayer, S.L. The Rise and Fall of Imperial Japan. The Military Press (1884)
 War Department Special Series No 25 Japanese Field Artillery October 1944
 US Department of War, TM 30-480, Handbook on Japanese Military Forces, Louisiana State University Press, 1994.

Liens externes
decritpion du Type94 sur le site de Taki
US Technical Manual E 30-480
75mm Type 94 exposé (multiples photos sous tous les angles)
75mm Type 94 exposé à Vladivostok

Arme japonaise de la Seconde Guerre mondiale
Artillerie de calibre 75 mm
Artillerie de campagne


2019 Offseason Questions: How Do You Feel About Trade Compensation?
Question: How do you feel about the Steelers' reported compensation for trading Antonio Brown?
Late last night, Adam Schefter among others—including Antonio Brown himself—reported that the wide receiver and the Steelers had agreed in principle to trade him to, of course, the Oakland Raiders. The reported return on investment was a third- and fifth-round pick in the 2019 NFL Draft. For arguably the top wide receiver in the game.
That's substantially less than what the Steelers wanted to get for him. their initial asking price reportedly was a first-round pick and then some. Then they walked it back to just a first-round pick when they weren't getting enough interest. When all was said and done, it fell back to a third-round pick plus a fifth-rounder.
My guess is that had the Raiders been drafting lower in the second round, the Steelers would have gotten their second-round pick. But because Oakland has one of the top picks in the second round, they determined that that was too high of a resource to give up, so they sent their third and fifth over instead.
If it makes people feel any better, the Steelers can package those two picks to trade up into the second round and then you can say that they ended up getting a second-round pick for Antonio Brown. It's a realistic possibility that they might actually do that, as well.
Brown really gave the Steelers no attractive options here. He more or less let it be known that he was either not going to play for them or he was simply going to be a major problem if they tried to hold on to him, and nobody gets anything out of that arrangement.
With this deal being made—which, again, is not official until the start of the new league year—both sides get something. Brown certainly 'wins' this exchange, getting out of town and a handsome raise on top of it, but he already won months ago.