Every week someone asks me why the computer did what it did. For instance, not long ago a buyer asked me why the computer did not send our requirements for a certain item to the vendor who supplies the item. I started digging through the program that generates the files we send to vendors. Then I realized there was a better way. Let me tell you about it.
In many shops, business rules are embedded in source code. Sometimes rules are hard-coded. I've seen code that directly referred to customer numbers, sales rep numbers, vendor IDs, etc. Sometimes rules are soft-coded, with logic controlled by the values in database tables. Either way, trying to figure out why the computer did not do what the user thought it should do requires investigation. When the buyer asked her question, I realized that I needed to make the computer help me do that investigation.
What I really needed to know were two things: I needed to know which path the system was taking through the program when processing the item in question, and I needed to know what data values were causing it to take that path. If that sounds obvious or familiar, that's the same information we gather when we debug a program.
Of course, debugging was not feasible. The program in question ran in the wee hours of the morning, when I was slothfully slumbering in bed. Besides, even if I were awake, I would have no good way to interrupt the job stream and debug through a service job. In other words, I had to remove the requirement that I be present to win.
I solved my problem by writing a service program that would give me an easy way to see what had taken place while the computer was dealing with the item in question. My service program is called TRACERTNS, for Trace Routines. It lets me write anything I want to a printer file under the circumstances that I specify.
printer file if tracing is enabled.
printer file if tracing is enabled and a condition is true.
For more information about these subprocedures, see the Trace documentation Microsoft Word document in the downloadable code.
1. In the first line of your source member, define a condition to control compilation of the calls to the trace routines.
Condition all the trace-related code to this compiler directive.
2. Copy the procedure prototypes into the D specs of your program.
3. Open the trace when you open your files.
4. Start the trace when whatever you're looking for happens. Here I start tracing (writing to the printer file) when the program processes a certain item.
The system will not process WriteTrace and WriteTraceIf subprocedures until you start the trace.
The call to the StopTrace subprocedure ensures that tracing ends when you no longer need it. This keeps irrelevant information out of the report.
• A message indicating that control enters or exits a subroutine, subprocedure, or section of code.
• The value of a variable before that variable is used in a condition.
• The value of a variable that was changed in a subroutine.
You'll have to convert numeric data to character format. Use an appropriate built-in function, such as %CHAR or %EDITC.
I have found that prefixing a unique three-digit number to the beginning of each comment helps me quickly match the trace report to the source code. That's not a requirement. Write whatever's meaningful to you.
Use your imagination. Think about the sorts of things you would want to see if you were watching the program run in a debugger.
6. Close the trace when you close your other files.
7. After you've found the problem, change /DEFINE to /UNDEFINE and recompile. There's no sense in running the trace when you're not actively looking for a problem. I leave the trace code in the source member, in case I need it again someday.
So, what about my vendor problem? Did the trace utility work? You bet it did! Even though the program logic resembled a bucket of snakes, one production run told me what I needed to know, and I was able to explain to the user why the item requirements were not sent to the vendor.
I've used the trace utility several times since then. I've even used it instead of an interactive debugger when developing new programs.
I have only used the trace utility with ILE programs. I have plans for OPM wrappers, and will implement them if I ever need them.
One last point: You could add a printer file to a program and do the same thing without going to the trouble of binding to a service program. But if you've mastered ILE, you can insert calls to the trace routines much more quickly.
In an ideal world, everything would work properly and we'd never need to investigate problems or debug our programs. Since it's not an ideal world, I depend on utilities like my trace routines to help me quickly identify and resolve problems.
SQL/Pro takes the complex structure of SQL and breaks it down to a simple English-like language for everyone to understand. Technical and non-technical users alike can implement SQL/Pro to query, print and manipulate data in almost any way imaginable on the IBM i. Inserts, changes and deletes can be protected on a user profile basis ensuring allowable data handling.
Combine with SQL Audit to track and report all processing.
SQL/Pro - a superior alternative to SQL/400!
Infinite to Migrate IBM i Apps for Department of the Interior What's Happening In IBM i App Dev?
What's New With CPYFRMIMPF And CPYTOIMPF?


text:
Q: Flutter TextEditingController retain value without hitting done button Simple Add Place widget

*

*Title Text Field

*Container - Render image from camera

*Button - Activates camera device

I thought having a controller connected to TextField would automatically save the state of the input value.  However, from my example, if I input the text without click "done" and immediately click on "Take Picture" button.  The TextField input value is cleared after coming back from camera operation.
How to Reproduce Problem:

*

*Input text into the field

*Immediately click on the Camera button without click done / check or hit enter on the keyboard

*Take a picture confirm.

*Come back to page the TextField is empty

Example Code:
AddPlacePage StatefulWidget
Column(
              children: <Widget>[
                TextField(
                  decoration: InputDecoration(labelText: 'Title'),
                  controller: _titleController,
                ),

                ImageInput(),
              ],
            ),

ImageInput  StatefulWidget
  class _ImageInputState extends State<ImageInput> {
  File _storedImage;

  Future<void> _takePicture() async {
    final imageFile = await ImagePicker.pickImage(
      source: ImageSource.camera,
      maxWidth: 600,
    );
    setState(() {
      _storedImage = imageFile;
    });
    ...
  }

  @override
  Widget build(BuildContext context) {
    return Row(
      children: <Widget>[
        Container(
          ...
          child: _storedImage != null
              ? Image.file(
                  _storedImage,
                  fit: BoxFit.cover,
                  width: double.infinity,
                )
              : Text(
                  'No Image Taken',
                  textAlign: TextAlign.center,
                ),
          alignment: Alignment.center,
        ),

        Expanded(
          child: FlatButton.icon(
            icon: Icon(Icons.camera),
            label: Text('Take Picture'),
            textColor: Theme.of(context).primaryColor,
            onPressed: () => _takePicture(),
          ),
        ),
      ],
    );
  }
}

Question:
How can I modify TextField's controller to retain input value even after exiting the application to access device camera?
TextField(
  decoration: InputDecoration(labelText: 'Title'),
  controller: _titleController,
),

I did try to create a local variable and try to use onChange:
   String _inputValue

   build(BuildContext context){

     ...
     TextField(
        decoration: InputDecoration(labelText: 'Title'),
        controller: _titleController,
        onChange: (value) => _inputValue = value;
     ),

However the effect is the same once returning from the camera as Flutter re-reders the page, both _inputValue and _titleController.text is cleared.
Example code:
https://github.com/erich5168/flutter_camera_example

A: You can use share preferences to save the String to device then call it when you back to text field. This is how I implement:
class LocalStorage {
  static SharedPreferences instance;

  static Future init() async {
    instance = await SharedPreferences.getInstance();
  }

  static dynamic getValue(String key, dynamic emptyValue) {
    if (LocalStorage.instance.containsKey(key)) {
      return LocalStorage.instance.get(key);
    }
    return emptyValue;
  }
}

set it to text field:
TextEditingController _usernameController =
  new TextEditingController(text: LocalStorage.getValue('UserName', ''));

redpajama_set_name: RedPajamaStackExchange


Do you have records from Redland (Parish Church) Churchyard?
Get started contributing to Redland (Parish Church) Churchyard. Use the button below to begin a simple step by step process to get started contributing to Redland (Parish Church) Churchyard.
There are no upcoming events scheduled at Redland (Parish Church) Churchyard. Use the button below to schedule one.


Let these quotes about staying match inspire you to care for your health – your first wealth! The physique requires protein, fats, carbohydrates, vitamins, minerals and water. A eating regimen containing enough amounts of all important nutrients is important as a result of varied nutrients present vitality, construct and preserve body tissues and regulate physique capabilities. Beneath is a table with the six courses of important vitamins. Questions relating to the grant and/or position may also be directed to Dr. Eric S. Davidson at esdavidson@.
There are not any issues which may't be handled with good mental health plan, though relying on the severity of the difficulty or issues, the plan may not be as easy to interrupt down because the one above. Thus, the rhetoric and actuality of a global struggle on terror" if truth be told further inflames the 'world political awakening' as opposed to challenging and addressing the difficulty. In 2007, Brzezinski advised the US Senate that the Conflict on terror" was a mythical historic narrative,"12 or in different words, a whole fiction.
The AMA has additionally aggressively lobbied for a lot of restrictions that require docs to hold out operations that is perhaps carried out by cheaper workforce. For instance, in 1995, 36 states banned or restricted midwifery though it delivers equally secure care to that by medical doctors, in response to research clarification wanted The regulation lobbied by the AMA has decreased the amount and high quality of health care, in response to the consensus of economist: the restrictions do not add to quality, they lower the provision of care. 68 Furthermore, psychologists, nurses and pharmacists will not be allowed to prescribe medicines. clarification needed Beforehand nurses were not even allowed to vaccinate the patients without direct supervision by medical doctors.
Kneeling, slide the left leg straight out from behind and inhale, stretching torso up. Launch and repeat on other facet. When you applied for Market protection by means of a Particular Enrollment Period since you moved or lost other health coverage, you may be requested to submit documents to verify you qualify. Internet buying has come a great distance lately. There are various quality products that may be bought at substantial financial savings but this was the most effective deal I have discovered. You possibly can shop for ZenniOptical Christmas eyeglasses on the internet and can shock your beloved with this distinctive but useful present merchandise on Christmas or New Yr.
The positioning above has each piece of kit you could ever need for aquatic training or rehabilitation. It has lifts and hand rails for folks with poor mobility. It has treadmills and step and twist gear for aerobics. It even has underwater bicycles. Factory employees: The Occupational Security and Health Administration will halt regular inspections. Loved your post as to the healthcare state of affairs in the present day one must remember that Trump has no plan except to prode Congress into working together to develop a plan for all of our citizens, each poor midlle class and the so referred to as rich.


text:
My Priorities
Immigration Survey
Events & Surgeries
British Bill of Rights
/ British Bill of Rights
June 24, 2022 0 Comments by Chris in Crime Misc
Clearly human rights are important and must be protected. However, its a sad reality that current human rights laws are making it a lot harder for us to deport foreign criminals found guilty of heinous crimes and also making it harder to control our own borders. I'm pleased that a new British Bill of Rights is being brought forward to address these issues and restore a better balance between rights and responsibilities. I trust our own Parliament and Courts to safeguard our rights.
The Lord Chancellor believes that a new British Bill of Rights will enable us to deliver the Rwanda policy and make it easier to deport foreign national offenders without having to leave the European Convention of Human Rights. I very much hope this is the case.
It does frustrate me how long it takes to bring new laws into place. I asked the Lord Chancellor last week to expediate the plans to bring in a new British Bill of Rights. Happy to do all nighters if necessary. Appreciate this is an important Bill and Parliament needs time to scrutinise it but this shouldn't be allowed to drag on for months.
Small and Medium Enterprise Roundtable
Statement on Boris Johnson
Cladding Interview on BBC Radio Suffolk
Freeport East
St Francis Tower
Tweets by tomhunt1988
CONNECT WITH TOM
Tom for Ipswich
Promoted by Edward Phillips on behalf of Tom Hunt.
Both of 30 York Road, Ipswich, IP3 8BX.

redpajama_set_name: RedPajamaCommonCrawl


text:
Monthly Archives - July 2018
Are Gold and Stocks Really Negatively Correlated?
Trevor Gerszt2018-07-27T15:14:31+00:00
In investment circles it's common to hear that stocks and gold are negatively correlated. That is to say, gold's price increases when stock prices decrease, and vice versa. That's why you'll often hear the recommendation to sell stocks and invest in gold when stocks are doing poorly, and to sell gold and buy stocks when stock markets are doing well. But is it really true that the two are negatively correlated? And if so, is it really a good [...]
July 27, 2018 By Trevor Gerszt Goldco Precious Metals Blog
President Trump's Comments on Interest Rates Don't Bode Well for the Economy
Ron Paul2018-07-25T16:22:02+00:00
President Trump recently took on the Federal Reserve's conduct of monetary policy, although not in a good way. Rather than criticizing the Fed for keeping interest rates too low for too long, he criticized the Fed for raising interest rates, complaining that in so doing the Fed has taken away America's competitive edge against China and is erasing all the gains the economy has made due to the Trump administration's economic policies. It's no secret that the Fed throughout history [...]
July 25, 2018 By Ron Paul Goldco Precious Metals Blog
What Will the Federal Reserve Do Next?
Adam Gardiner2018-07-23T16:43:12+00:00
Last week's hearing with Federal Reserve Chairman Jerome Powell doesn't inspire confidence that the Fed knows what it is doing. Much attention has been focused recently on the yield curve, the spread between 2-year and 10-year Treasury securities, which has become increasingly narrow in recent weeks. The spread is becoming so close, in fact, that it risks inversion, with interest rates on 2-year bonds exceeding that of 10-year bonds. Every time that has happened in recent history, economic recession [...]
July 23, 2018 By Adam Gardiner Goldco Precious Metals Blog
Periodic Versus Lump Sum Investing: The Importance of Timing
It's time once again to discuss the importance of timing when it comes to investing. Timing plays a role in investing success whether we like it or not, and it affects investing strategies. Because of that, your investing strategy may need to change depending on whether you've got a lump sum of money to invest or whether you intend to invest on a periodic basis. You hear a lot of commentary about how just a little bit of money invested [...]
Will the Yield Curve Indicate a Recession Once Again?
One key indicator of the economy's health that economists and financial market observers look at is the yield curve. In particular, they look at the spread between the yield on 2-year Treasury bonds and 10-year Treasury bonds. As the difference between the yield on those two maturities narrows, the yield curve is said to be flattening. And in some cases the yield on the 2-year bond exceeds that of the 10-year bond, in which case the yield curve is [...]
Job Growth Seems Strong, But How Does That Reflect on the Economy?
There's a tendency, when looking at economic data, to look at aggregate measures and use them as proxies to determine the health of the economy. When looking at job numbers, for example, it's tempting to look at figures for the total number of jobs, number of employment openings, and the unemployment rate to figure out how healthy the economy is. If you do that, you'd figure that the economy is pretty healthy right now. The unemployment rate is at a [...]
Passive Investing Doesn't Mean Being a Passive Investor
One of the most popular investing strategies today, and one that's growing more popular all the time, is passive investing. It's a strategy that focuses on investing in low-cost funds that track popular stock indices, such as the S&P 500, the Russell 2000, the Wilshire 5000, etc. Rather than trying to beat markets through active stock-picking, the passive funds merely try to match the performance of markets. Many advocates of passive investing also urge investors to maintain a buy [...]
The Founders Had It Right When It Comes to Gold and Silver
Last week marked the 242nd anniversary of the signing of the Declaration of Independence, which began one of the greatest experiments in liberty the world has ever seen. But while we can see with hindsight how successful the American Revolution was, there were a number of times when it came perilously close to failure. Learning their lesson, the Founding Fathers sought to create a Constitution that would ensure that those mistakes would never be repeated. One of the primary reasons [...]
12Next →


text:
FanDuel Inks New Sports Betting Deal with Pat McAfee, Reportedly for $30M Annually
Posted on: December 9, 2021, 11:50h.
FanDuel on Thursday showed Pat McAfee the money. The sports betting operator and iGaming company announced the former NFL player turned sports media personality would remain an exclusive partner in a multi-year deal.
Online sports personality Pat McAfee and FanDuel announced a new partnership agreement on Thursday worth a reported $30 million annually. A FanDuel executive called the former Indianapolis Colts punter the company's "best marketing partner." (Image: YouTube/Pat McAfee Show)
Terms weren't announced in a FanDuel press release. But in a video, McAfee said it's a three-year deal with an option for a fourth year.
We just got paid an absurd amount of money," McAfee said in the video.
Shams Charania of The Athletic reported on Twitter, citing industry sources, that the deal was worth $30 million annually.
Makeover on the Way
The deal means FanDuel will continue to be the official sportsbook partner of Pat McAfee Inc. and the Pat McAfee Show.
McAfee's show, which runs live on YouTube weekdays from noon-3 pm ET, will also get a new look, as the Indianapolis-based studio gets a makeover, with FanDuel getting naming rights for its new set as well.
McAfee's team will also be behind FanDuel promotions, including a "crowd-sourced Spread the Love" betting opportunity. Spread the Love is a special marketing promotion that FanDuel uses for select games in specific markets. Most times, FanDuel will adjust the point spread every time a certain number of bettors make a wager on the game.
The bet, in effect, becomes a bonus for bettors, as the spread becomes an absurd amount. Back in January 2000, the spread in an Indiana University basketball game topped more than 100 points.
Latest Sportsbook-Media Partnership
The McAfee-FanDuel partnership evolves as sports betting operators and gaming companies look to deepen their ties with media entities.
The best-known partnership is Penn National Gaming's buy-in on Barstool Sports to make it the brand for the casino chain's sportsbooks. In a move more comparable to FanDuel's deal with McAfee, DraftKings earlier this year became a content distributor for Dan Le Batard's Meadowlark Media.
FanDuel Chief Marketing Officer Mike Raffensperger said in the company's release that McAfee is the "fastest-growing star" in sports media. He added that the company looks forward to doing more with McAfee's team.
The company also said the Pat McAfee Show is "the gold standard" in terms of live-odds integration and broadcasting wagering content. That includes odds boosts and enhancements.
"Of course, Pat isn't just our best marketing partner, he's also one of our best customers, so we expect he will give us some of the money back," Raffensperger joked.
Who is Pat McAfee?
McAfee, 34, played eight seasons in the NFL, all for the Indianapolis Colts. In a 2014 Indianapolis Star article, he talked about how winning $1,400 in an underground poker club led to him eventually getting a college scholarship to play football.
He was one of the top punters (the American football kind), but retired before age 30 to break into sports media. That included a stint with Barstool Sports, which he said in Thursday's video helped him as he looked to get established.
He's also been a broadcaster on ESPN and worked with the WWE as well.
His online show does attract a large audience for online media, which is a key target audience for companies like FanDuel. According to HypeAuditor, McAfee has 1.6 million subscribers to his YouTube channel. On Twitter, he has more than 2.2 million followers.
The average audience for one of McAfee's YouTube videos is about 175,000, and the highest audience he's had was nearly 617,000.
In recent weeks, his show has garnered attention for McAfee's segments with Green Bay Packers quarterback Aaron Rodgers, which included Rogers discussing his bout with COVID-19 and the treatments he took instead of getting a vaccination.
Bet365: Coming to America Via Hard Rock New Jersey Sports Betting Deal
888 Holdings to Power Sports Illustrated Sportsbook Set to Launch This Year
Caesars, WynnBET Seek Growth in Indiana Sports Betting Via Colts Deals
Minnesota Sports Betting Bills Coming Next Week, Odds of Passage Appear Long
Last Comment ( 1 )
Kian January 13, 2022
Philip Conneller — July 4, 2018
Steve Bittenbender — June 24, 2021
Steve Bittenbender — September 19, 2021


The Best Saber Sound System ever... but a luxeon driver as well !
NOW WITH COLOR MIXING ! UNLIMITED BLADE COLORS ! REAL TIME SETTINGS using our R.I.C.E. editor ! UNLEASH THE FORCE of your CREATIVITY !
Fully designed from scratch by Plecter Labs, Crystal Focus Saber Core is a single board featuring a luxeon controller and an interactive motion sensitive sound unit. It plays digital quality sound samples (22KHz / 16 bits) for power on, humming, swing (up to 16 slots), clash (up to 16 slots), blaster (4 slots), blade lockup, force push (2 slots) and power off. On/Off control of the module can be done with a latching switch or a momentary switch (setup with our SD-Config™ technology). The switch or button must be bought separately.
►The board comes with 12 sound banks made by Various Font Artists, installed on the microSD. You can obtain more sound fonts at saberfont.com, see this page.
► v9 now embeds the color profiles just like Prizm and feature SPECTRUM, a dynamic, orientation based, dial-styled color profile selection. Access to profile selection by combining the aux switch and the activator switch, or a combination of aux switch + twist motion.
Crystal Focus also features A-POP™ technology : Anti Power On/Off Protection™. An option on the configuration file can require that the user confirm the saber power off using the aux. button. This avoids any accidental power off of the saber, especially when using momentary buttons for activation.
CFSC handles WAV files ! It also handles a 8 LED bargraph that can be also used as a PLI (LEDs not provided). Additional gesture recognition features have been added like BlasterMove™ and PowerOnMove™ as well as visual effect synchronization with Flash on Clash™ (FoC™).
Dimensions : 50.77 x 22.13 x 7.5 mm (with the microSD card).
Power supply : 5.5 à 11 V / 3.5A (with the Luxeon LED). 2 li-ion cells (18650 or 14500) batteries recommended.
Compatibility : luxeon star III, V, K2, rebel, seoul P4, Ledengin, tri-rebel, tri-cree, quads.
Speaker : 4-8 ohm, up to 2W. NOT provided, must be purchased separately.


text:
Jayson Salinas
Senior Jayson Salinas is crowned as a member of the homecoming court by junior Ashlyn Bunch.
Katie Bullock
Q: What activities are you involved in?
A: "Band and Scholar Bowl. I would have to say that's it."
Q: How did you feel when you were nominated for Homecoming court?
A: "I had a lot of people telling me about it saying, 'Oh I voted for you,' and I'd say, 'That's pretty cool, thank you.' You just don't expect it to happen. You hear a lot of people saying it but it just didn't seem like one of those things that was happening."
Q: Why do you think people nominated you for homecoming court?
A: "I don't know, I'm a meme. I guess they wanted to see the meme up there.
Q: What qualities do you think that people should look for in the candidate that they vote for?
A: "Humor."
Q: What is your life philosophy?
A: "Let's cross that bridge when we get there. That's actually my philosophy. It sounds like I was trying to avoid that question but that is my life philosophy."
Q: If you had a superpower that could affect the school, what would you have and why?
A: "The power to make it snow because we all need a snow day every once in awhile."
Q: What advice do you have for underclassman?
A: "Be careful not to choke on your aspirations."


One of the biggest trends of the season is given a modern twist on a toe loop sandal featuring an intricately woven upper with an asymmetrical silhouette. Style Name: Agl Asymmetrical Woven Toe Loop Sandal (Women). Style Number: 5779006. Available in stores.


text:
package uk.co.real_logic.aeron.driver;

import uk.co.real_logic.aeron.driver.buffer.RawLog;
import uk.co.real_logic.aeron.driver.buffer.RawLogPartition;
import uk.co.real_logic.aeron.driver.media.ReceiveChannelEndpoint;
import uk.co.real_logic.aeron.logbuffer.TermRebuilder;
import uk.co.real_logic.aeron.protocol.DataHeaderFlyweight;
import uk.co.real_logic.agrona.UnsafeAccess;
import uk.co.real_logic.agrona.concurrent.NanoClock;
import uk.co.real_logic.agrona.concurrent.UnsafeBuffer;
import uk.co.real_logic.agrona.concurrent.status.Position;
import uk.co.real_logic.agrona.concurrent.status.ReadablePosition;

import java.net.InetSocketAddress;
import java.util.List;

import static uk.co.real_logic.aeron.driver.PublicationImage.Status.ACTIVE;
import static uk.co.real_logic.aeron.logbuffer.LogBufferDescriptor.*;

class PublicationImagePadding1
{
    @SuppressWarnings("unused")
    protected long p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15;
}

class PublicationImageConductorFields extends PublicationImagePadding1
{
    protected long timeOfLastStatusChange;
    protected long rebuildPosition;

    protected volatile long beginLossChange = -1;
    protected volatile long endLossChange = -1;
    protected int lossTermId;
    protected int lossTermOffset;
    protected int lossLength;
}

class PublicationImagePadding2 extends PublicationImageConductorFields
{
    @SuppressWarnings("unused")
    protected long p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30;
}

class PublicationImageHotFields extends PublicationImagePadding2
{
    protected long lastPacketTimestamp;
    protected long lastStatusMessageTimestamp;
    protected long lastStatusMessagePosition;
    protected long lastChangeNumber = -1;
}

class PublicationImagePadding3 extends PublicationImageHotFields
{
    @SuppressWarnings("unused")
    protected long p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45;
}

class PublicationImageStatusFields extends PublicationImagePadding3
{
    protected volatile long newStatusMessagePosition;
    protected volatile PublicationImage.Status status = PublicationImage.Status.INIT;
}

class PublicationImagePadding4 extends PublicationImageStatusFields
{
    @SuppressWarnings("unused")
    protected long p46, p47, p48, p49, p50, p51, p52, p53, p54, p55, p56, p57, p58, p59, p60;
}

/**
 * State maintained for active sessionIds within a channel for receiver processing
 */
public class PublicationImage
    extends PublicationImagePadding4
    implements AutoCloseable, NakMessageSender, DriverManagedResource
{
    public enum Status
    {
        INIT, ACTIVE, INACTIVE, LINGER
    }

    private final long correlationId;
    private final long imageLivenessTimeoutNs;
    private final int sessionId;
    private final int streamId;
    private final int positionBitsToShift;
    private final int termLengthMask;
    private final int initialTermId;
    private final int currentWindowLength;
    private final int currentGain;

    private final RawLog rawLog;
    private final InetSocketAddress controlAddress;
    private final InetSocketAddress sourceAddress;
    private final ReceiveChannelEndpoint channelEndpoint;
    private final SystemCounters systemCounters;
    private final NanoClock clock;
    private final UnsafeBuffer[] termBuffers;
    private final Position hwmPosition;
    private final List<ReadablePosition> subscriberPositions;
    private final LossDetector lossDetector;

    private boolean reachedEndOfLife = false;

    public PublicationImage(
        final long correlationId,
        final long imageLivenessTimeoutNs,
        final ReceiveChannelEndpoint channelEndpoint,
        final InetSocketAddress controlAddress,
        final int sessionId,
        final int streamId,
        final int initialTermId,
        final int activeTermId,
        final int initialTermOffset,
        final int initialWindowLength,
        final RawLog rawLog,
        final FeedbackDelayGenerator lossFeedbackDelayGenerator,
        final List<ReadablePosition> subscriberPositions,
        final Position hwmPosition,
        final NanoClock clock,
        final SystemCounters systemCounters,
        final InetSocketAddress sourceAddress)
    {
        this.correlationId = correlationId;
        this.imageLivenessTimeoutNs = imageLivenessTimeoutNs;
        this.channelEndpoint = channelEndpoint;
        this.controlAddress = controlAddress;
        this.sessionId = sessionId;
        this.streamId = streamId;
        this.rawLog = rawLog;
        this.subscriberPositions = subscriberPositions;
        this.hwmPosition = hwmPosition;
        this.systemCounters = systemCounters;
        this.sourceAddress = sourceAddress;

        this.clock = clock;
        final long time = clock.nanoTime();
        this.timeOfLastStatusChange = time;
        this.lastPacketTimestamp = time;

        termBuffers = rawLog.stream().map(RawLogPartition::termBuffer).toArray(UnsafeBuffer[]::new);
        this.lossDetector = new LossDetector(lossFeedbackDelayGenerator, this);

        final int termCapacity = termBuffers[0].capacity();

        this.currentWindowLength = Math.min(termCapacity, initialWindowLength);
        this.currentGain = Math.min(currentWindowLength / 4, termCapacity / 4);

        this.termLengthMask = termCapacity - 1;
        this.positionBitsToShift = Integer.numberOfTrailingZeros(termCapacity);
        this.initialTermId = initialTermId;

        final long initialPosition = computePosition(activeTermId, initialTermOffset, positionBitsToShift, initialTermId);
        this.lastStatusMessagePosition = initialPosition - (currentGain + 1);
        this.newStatusMessagePosition = this.lastStatusMessagePosition;
        this.rebuildPosition = initialPosition;
        this.hwmPosition.setOrdered(initialPosition);
    }

    /**
     * {@inheritDoc}
     */
    public void close()
    {
        hwmPosition.close();
        subscriberPositions.forEach(ReadablePosition::close);
        rawLog.close();
    }

    public long correlationId()
    {
        return correlationId;
    }

    /**
     * The session id of the channel from a publisher.
     *
     * @return session id of the channel from a publisher.
     */
    public int sessionId()
    {
        return sessionId;
    }

    /**
     * The stream id of this image within a channel.
     *
     * @return stream id of this image within a channel.
     */
    public int streamId()
    {
        return streamId;
    }

    /**
     * Get the string representation of the channel URI.
     *
     * @return the string representation of the channel URI.
     */
    public String channelUriString()
    {
        return channelEndpoint.originalUriString();
    }

    /**
     * The address of the source associated with the image.
     *
     * @return source address
     */
    public InetSocketAddress sourceAddress()
    {
        return sourceAddress;
    }

    /**
     * Return the {@link ReceiveChannelEndpoint} that the image is attached to.
     *
     * @return {@link ReceiveChannelEndpoint} that the image is attached to.
     */
    public ReceiveChannelEndpoint channelEndpoint()
    {
        return channelEndpoint;
    }

    /**
     * Remove this image from the {@link DataPacketDispatcher} so it will process no further packets from the network.
     * Called from the {@link Receiver} thread.
     */
    public void removeFromDispatcher()
    {
        channelEndpoint.dispatcher().removePublicationImage(this);
    }

    /**
     * Does this image match a given {@link ReceiveChannelEndpoint} and stream id?
     *
     * @param channelEndpoint to match by identity.
     * @param streamId        to match on value.
     * @return true on a match otherwise false.
     */
    public boolean matches(final ReceiveChannelEndpoint channelEndpoint, final int streamId)
    {
        return this.streamId == streamId && this.channelEndpoint == channelEndpoint;
    }

    /**
     * Get the {@link uk.co.real_logic.aeron.driver.buffer.RawLog} the back this image.
     *
     * @return the {@link uk.co.real_logic.aeron.driver.buffer.RawLog} the back this image.
     */
    public RawLog rawLog()
    {
        return rawLog;
    }

    /**
     * Return status of the image. Retrieved by {@link DriverConductor}.
     *
     * @return status of the image
     */
    public Status status()
    {
        return status;
    }

    /**
     * Set status of the image.
     *

     * Set by {@link Receiver} for INIT to ACTIVE to INACTIVE
     *

     * Set by {@link DriverConductor} for INACTIVE to LINGER
     *
     * @param status of the image
     */
    public void status(final Status status)
    {
        timeOfLastStatusChange = clock.nanoTime();
        this.status = status;
    }

    /**
     * Set status to INACTIVE, but only if currently ACTIVE. Set by {@link Receiver}.
     */
    public void ifActiveGoInactive()
    {
        if (Status.ACTIVE == this.status)
        {
            status(Status.INACTIVE);
        }
    }

    /**
     * Return time of last status change. Retrieved by {@link DriverConductor}.
     *
     * @return time of last status change
     */
    public long timeOfLastStatusChange()
    {
        return timeOfLastStatusChange;
    }

    /**
     * Called from the {@link DriverConductor} to determine if the subscribers have drained the image yet.
     *
     * @return true if the subscribers have drained the stream.
     */
    public boolean isDrained()
    {
        long subscriberPosition = Long.MAX_VALUE;
        final List<ReadablePosition> subscriberPositions = this.subscriberPositions;
        for (int i = 0, size = subscriberPositions.size(); i < size; i++)
        {
            subscriberPosition = Math.min(subscriberPosition, subscriberPositions.get(i).getVolatile());
        }

        return subscriberPosition >= rebuildPosition;
    }

    /**
     * Called from the {@link LossDetector} when gap is detected.
     *
     * @see NakMessageSender
     */
    public void onLossDetected(final int termId, final int termOffset, final int length)
    {
        final long changeNumber = beginLossChange + 1;

        beginLossChange = changeNumber;

        lossTermId = termId;
        lossTermOffset = termOffset;
        lossLength = length;

        endLossChange = changeNumber;
    }

    /**
     * Called from the {@link DriverConductor}.
     *
     * @param now in nanoseconds
     * @return if work has been done or not
     */
    public int trackRebuild(final long now)
    {
        long minSubscriberPosition = Long.MAX_VALUE;
        long maxSubscriberPosition = Long.MIN_VALUE;

        final List<ReadablePosition> subscriberPositions = this.subscriberPositions;
        for (int i = 0, size = subscriberPositions.size(); i < size; i++)
        {
            final long position = subscriberPositions.get(i).getVolatile();
            minSubscriberPosition = Math.min(minSubscriberPosition, position);
            maxSubscriberPosition = Math.max(maxSubscriberPosition, position);
        }

        final long oldRebuildPosition = this.rebuildPosition;
        final long rebuildPosition = Math.max(oldRebuildPosition, maxSubscriberPosition);

        final int positionBitsToShift = this.positionBitsToShift;
        final int index = indexByPosition(rebuildPosition, positionBitsToShift);

        final int workCount = lossDetector.scan(
            termBuffers[index],
            rebuildPosition,
            hwmPosition.getVolatile(),
            now,
            termLengthMask,
            positionBitsToShift,
            initialTermId);

        final int rebuildTermOffset = (int)rebuildPosition & termLengthMask;
        final long newRebuildPosition = (rebuildPosition - rebuildTermOffset) + lossDetector.rebuildOffset();
        this.rebuildPosition = newRebuildPosition;

        final int newTermCount = (int)(newRebuildPosition >>> positionBitsToShift);
        final int oldTermCount = (int)(oldRebuildPosition >>> positionBitsToShift);
        if (newTermCount > oldTermCount)
        {
            final int oldTermCountIndex = indexByTermCount(oldTermCount);
            final UnsafeBuffer termBuffer = termBuffers[previousPartitionIndex(oldTermCountIndex)];
            termBuffer.setMemory(0, termBuffer.capacity(), (byte)0);
        }

        if (minSubscriberPosition > (newStatusMessagePosition + currentGain))
        {
            newStatusMessagePosition = minSubscriberPosition;
        }

        return workCount;
    }

    /**
     * Insert frame into term buffer.
     *
     * @param termId  for the data packet to insert into the appropriate term.
     * @param termOffset for the start of the packet in the term.
     * @param buffer for the data packet to insert into the appropriate term.
     * @param length of the data packet
     * @return number of bytes applied as a result of this insertion.
     */
    public int insertPacket(final int termId, final int termOffset, final UnsafeBuffer buffer, final int length)
    {
        int bytesReceived = length;
        final int positionBitsToShift = this.positionBitsToShift;
        final long packetPosition = computePosition(termId, termOffset, positionBitsToShift, initialTermId);
        final long proposedPosition = packetPosition + length;
        final long windowPosition = lastStatusMessagePosition;

        if (isHeartbeat(buffer, length))
        {
            hwmCandidate(packetPosition);
            systemCounters.heartbeatsReceived().orderedIncrement();
        }
        else if (isFlowControlUnderRun(windowPosition, packetPosition) || isFlowControlOverRun(windowPosition, proposedPosition))
        {
            bytesReceived = 0;
        }
        else
        {
            final UnsafeBuffer termBuffer = termBuffers[indexByPosition(packetPosition, positionBitsToShift)];
            TermRebuilder.insert(termBuffer, termOffset, buffer, length);

            hwmCandidate(proposedPosition);
        }

        return bytesReceived;
    }

    /**
     * To be called from the {@link Receiver} to see if a image should be garbage collected.
     *
     * @param now current time to check against.
     * @return true if still active otherwise false.
     */
    public boolean checkForActivity(final long now)
    {
        boolean activity = true;

        if (now > (lastPacketTimestamp + imageLivenessTimeoutNs))
        {
            activity = false;
        }

        return activity;
    }

    /**
     * Called from the {@link Receiver} to send any pending Status Messages.
     *
     * @param now                  time in nanoseconds.
     * @param statusMessageTimeout for sending of Status Messages.
     * @return number of work items processed.
     */
    public int sendPendingStatusMessage(final long now, final long statusMessageTimeout)
    {
        int workCount = 0;

        if (ACTIVE == status)
        {
            final long statusMessagePosition = this.newStatusMessagePosition;
            if (statusMessagePosition != lastStatusMessagePosition || now > (lastStatusMessageTimestamp + statusMessageTimeout))
            {
                final int termId = computeTermIdFromPosition(statusMessagePosition, positionBitsToShift, initialTermId);
                final int termOffset = (int)statusMessagePosition & termLengthMask;

                channelEndpoint.sendStatusMessage(
                    controlAddress, sessionId, streamId, termId, termOffset, currentWindowLength, (byte)0);

                lastStatusMessageTimestamp = now;
                lastStatusMessagePosition = statusMessagePosition;
                systemCounters.statusMessagesSent().orderedIncrement();
                workCount = 1;
            }
        }

        return workCount;
    }

    /**
     * Called from the {@link Receiver} to send a pending NAK.
     *
     * @return number of work items processed.
     */
    public int sendPendingNak()
    {
        int workCount = 0;
        final long changeNumber = endLossChange;

        if (changeNumber != lastChangeNumber)
        {
            final int termId = lossTermId;
            final int termOffset = lossTermOffset;
            final int length = lossLength;

            UnsafeAccess.UNSAFE.loadFence(); // LoadLoad required so value loads don't move past version check below.

            if (changeNumber == beginLossChange)
            {
                channelEndpoint.sendNakMessage(controlAddress, sessionId, streamId, termId, termOffset, length);
                lastChangeNumber = changeNumber;
                systemCounters.nakMessagesSent().orderedIncrement();
                workCount = 1;
            }
        }

        return workCount;
    }

    /**
     * Remove a {@link ReadablePosition} for a subscriber that has been removed so it is not tracked for flow control.
     *
     * @param subscriberPosition for the subscriber that has been removed.
     */
    public void removeSubscriber(final ReadablePosition subscriberPosition)
    {
        subscriberPositions.remove(subscriberPosition);
        subscriberPosition.close();
    }

    /**
     * Add a new subscriber to this image so their position can be tracked for flow control.
     *
     * @param subscriberPosition for the subscriber to be added.
     */
    public void addSubscriber(final ReadablePosition subscriberPosition)
    {
        subscriberPositions.add(subscriberPosition);
    }

    /**
     * Return number of subscribers to this image.
     *
     * @return number of subscribers
     */
    public int subscriberCount()
    {
        return subscriberPositions.size();
    }

    /**
     * The position up to which the current stream rebuild is complete for reception.
     *
     * @return the position up to which the current stream rebuild is complete for reception.
     */
    public long rebuildPosition()
    {
        return rebuildPosition;
    }

    private boolean isHeartbeat(final UnsafeBuffer buffer, final int length)
    {
        return length == DataHeaderFlyweight.HEADER_LENGTH && buffer.getInt(0) == 0;
    }

    private void hwmCandidate(final long proposedPosition)
    {
        lastPacketTimestamp = clock.nanoTime();
        hwmPosition.proposeMaxOrdered(proposedPosition);
    }

    private boolean isFlowControlUnderRun(final long windowPosition, final long packetPosition)
    {
        final boolean isFlowControlUnderRun = packetPosition < windowPosition;

        if (isFlowControlUnderRun)
        {
            systemCounters.flowControlUnderRuns().orderedIncrement();
        }

        return isFlowControlUnderRun;
    }

    private boolean isFlowControlOverRun(final long windowPosition, final long proposedPosition)
    {
        final boolean isFlowControlOverRun = proposedPosition > (windowPosition + currentWindowLength);

        if (isFlowControlOverRun)
        {
            systemCounters.flowControlOverRuns().orderedIncrement();
        }

        return isFlowControlOverRun;
    }

    public void onTimeEvent(final long time, final DriverConductor conductor)
    {
        switch (status())
        {
            case INACTIVE:
                if (isDrained() || time > (timeOfLastStatusChange() + imageLivenessTimeoutNs))
                {
                    status(PublicationImage.Status.LINGER);
                    conductor.imageTransitionToLinger(PublicationImage.this);
                }
                break;

            case LINGER:
                if (time > (timeOfLastStatusChange() + imageLivenessTimeoutNs))
                {
                    reachedEndOfLife = true;
                    conductor.cleanupImage(PublicationImage.this);
                }
                break;
        }
    }

    public boolean hasReachedEndOfLife()
    {
        return reachedEndOfLife;
    }

    public void timeOfLastStateChange(final long time)
    {
    }

    public long timeOfLastStateChange()
    {
        return timeOfLastStatusChange;
    }

    public void delete()
    {
        close();
    }
}

redpajama_set_name: RedPajamaGithub


PAs: Are You Looking For a New Position?
Employers: Are you Looking to Advertise your PA Position?
Contact the OB/GYN site in which you rotated through for offices/hospitals in which they know are hiring or could use your help.
Contact one's own personal OB/GYN provider or the OB/GYN provider of a family member for offices/hospitals in which they know are hiring or could use your help.
Contact an APAOG member in your job search area via the APAOG membership directory (Members Only) and ask if they know of any openings or have any suggestions for your job search.
View opportunities on State Chapter PA websites.
Check the Classifieds section of PA Journals (ie JAAPA, Physician Assistant).
Check the Career Section of newspapers (note: look under and answer to NP and Physician ads as well as Physician Assistant ads).
Mass mail your resume and cover letter to local OB/GYN offices/hospitals.
Stop by or call local OB/GYN offices/hospitals and demonstrate your interest in employment and educate them on what a PA can do for their patients.
Please refer to the AAPA census which can be viewed under the Professional Practice Issues section on this Web site. For information on salaries in your specific area, please go on the AAPA Web site (www.aapa.org) to Employment and then to Candidate Resources where the information can be obtained through the option of Customizing Salary Profiles.
Know how you can best help the practice which you are applying to and be able to answer why the practice should hire a PA rather than another mid-level provider.
Know the salary range for PA's in your area.
Know which benefits you will not compromise on.
Know the number of OB/GYN PA's practicing in your state and if possible, in your local region.
Know the positive qualities you possess and understand your limitations. Be yourself and GOOD LUCK!


PHILADELPHIA -- Golden Tate has already gotten his introduction to Philly sports fans.
The new Eagles wide receiver was boarding a flight from his old home in Detroit to his new one Tuesday night when a fan in a Michigan State sweatshirt thanked him for his four-and-a-half seasons with the Lions. Then, he noticed someone's eyes darting between his phone and Tate's face to see if it was the Eagles' newest player.
In the end, Tate said Wednesday afternoon, there were about a dozen Eagles fans on his flight to Philadelphia. Many of them were on their way back from London, where the Eagles played and beat the Jacksonville Jaguars on Sunday. And it was an introduction to the culture for Tate.
"I always knew Philadelphia, the city, is just super passionate about really everything they do, especially their sports teams," Tate said. "I don't know much about Philly, but I have a feeling I'm going to learn quickly.
"It seemed like they accepted me pretty quickly and pretty well. ... I'm a player that kind of feeds on, I'm an emotional player, a very passionate player, and to be a part of a fan base that supports all their sports, that's a good feeling."
So Tate already has an idea for what the expectations in Philadelphia are. The Eagles won their first Super Bowl in franchise history in February. They made moves during the offseason that pointed toward another run at a title. And after a 4-4 start that's featured some struggles for the Eagles offense and a couple blown leads for the defense, the trade for Tate -- the Eagles sent a third-round pick to the Lions -- is the latest move with a championship in mind.
Tate, who is in the final year of his contract and could have an abbreviated Philadelphia career, realizes where the priorities of the organization are.
"My goal is to help us win every single game, and my job is to come in here and work hard, be accountable, help the people around me become better people, better players, and just win a bunch of ball games," Tate said. "I love the schedule we have coming up. I think there's an incredible opportunity to do some special things."
The Philadelphia Eagles got another weapon for quarterback Carson Wentz for the stretch run.
Tate knows that the Eagles are entering a crucial stretch of their schedule. He mentioned how there are five games left against divisional opponents. He knows the Eagles, at 4-4 and 1.5 games behind the Washington Redskins entering Week 9, are still in the mix for the division crown. And he also brought up that "some key guys" could be returning from injuries soon.
The one-time Pro Bowl receiver seems to have a grasp on the situation he's entering in Philadelphia, even if he knows he has to do some work to get up to speed before the Eagles' Week 10 matchup against the Dallas Cowboys on Sunday Night Football.
Tate said the timing of the Eagles being on their bye week is fortunate because it means he can focus on the logistics of moving his family from Detroit to Philadelphia and learning the playbook without having to practice at the same time. After his news conference, Tate said he planned to study the playbook and watch some film.
"It's something I haven't experienced," Tate said. "It's going to be tough, but I think I can get it down. I think it's going to take a lot of work between the offensive coordinator [Mike Groh] and my position coach [Gunter Brewer] and just being around the other receivers, that kind of helped me along and of course Carson [Wentz], so I'm just going to work."
Eagles coach Doug Pederson hasn't spoken publicly to media about the trade -- he likely won't until next week -- but he spoke with the team's official website Tuesday night, and he suggested the Eagles will start with a limited package of plays to phase Tate into the offense.
"We can do some of the mental stuff over the course of the next couple of days and then we'll get him on the field next week," Pederson told the site. "It's exciting. We're going to see what we can do with him - maybe give him 12 plays or so to start it off - and then go from there. He's been a highly productive player in his career and he's going to help our offense, hopefully. I can't wait to get it going with him."
The Los Angeles Rams, Philadelphia Eagles, Washington Redskins and more all attempted to get better at the NFL trade deadline.
Tate enjoyed the most successful stretch of his career during his four full seasons in Detroit. He averaged 93 catches for 1,056 yards and nearly five touchdowns per season, and he was primarily a slot receiver. Nelson Agholor occupies that role in Philadelphia, but Tate said he's confident in his ability to play either on the outside or in the slot in the Eagles offense.
Either way, it seems like it won't matter to Tate. He spoke glowingly about Wentz, and he said he'd already met with Pederson, Groh and Brewer. Tight end Zach Ertz got in touch with Tate, too, to welcome him to Philadelphia.
Tate already appears to have the lay of the land with the Eagles. And his priorities appear to be in same lane as those of a group with championship aspirations.
"There's no doubt we have a bunch of stars on this team, offensively and defensively and on special teams," Tate said. "What I've sensed already is that this is a very unselfish organization, and there's only one thing important, and that's winning ball games. ... [Ertz] reached out to me and said, 'Hey, look, we got a bunch of guys that make plays, and we don't care where the ball goes, we just want to win.' And that's the attitude that I have, that I've had for a while. I just want to help us, help us do that."


text:
// Copyright 2015, Google Inc. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package sqlannotation provides functions
// for annotating DML statements with keyspace-id
// comments and parsing them. These annotations
// are used during filtered-replication to route
// the DML statement to the correct shard.
// TOOD(erez): Move the code for the "_stream" annotations
// from vttablet to here.
package sqlannotation

import (
	"encoding/hex"
	"fmt"
	"log"
	"strings"

	"github.com/youtube/vitess/go/stats"
)

const (
	filteredReplicationUnfriendlyComment = "/* vtgate:: filtered_replication_unfriendly */"
	insertDML                            = "insert"
	updateDML                            = "update"
	deleteDML                            = "delete"
)

var (
	filteredReplicationUnfriendlyCountStat = stats.NewInt("ReplicationUnfriendlyStatementsCount")
)

// AddIfDML annotates 'sql' based on
// the keyspaceIDs found in 'keyspaceIDs':
//
// If 'sql' is not a DML statement no annotation is added.
// If 'sql' is a DML statement and contains exactly one element
// it is used to annotate 'sql'; otherwise 'sql' is annotated
// as replication-unfriendly.
func AddIfDML(sql string, keyspaceIDs [][]byte) string {
	if len(keyspaceIDs) == 1 {
		return AddKeyspaceIDIfDML(sql, keyspaceIDs[0])
	}
	return AddFilteredReplicationUnfriendlyIfDML(sql)
}

// AddKeyspaceIDIfDML returns a copy of 'sql' annotated
// with the given keyspace id if 'sql' is a DML statement;
// otherwise, it returns a copy of 'sql'.
func AddKeyspaceIDIfDML(sql string, keyspaceID []byte) string {
	if isDml(sql) {
		return AddKeyspaceID(sql, keyspaceID)
	}
	return sql
}

// AddKeyspaceID returns a copy of 'sql' annotated
// with the given keyspace id.
func AddKeyspaceID(sql string, keyspaceID []byte) string {
	return fmt.Sprintf("%s /* vtgate:: keyspace_id:%s */",
		sql, hex.EncodeToString(keyspaceID))
}

// AddFilteredReplicationUnfriendlyIfDML annotates the given 'sql'
// query as filtered-replication-unfriendly if its a DML statement
// (filtered-replication should halt if it encounters such an annotation).
// Does nothing if the statement is not a DML statement.
func AddFilteredReplicationUnfriendlyIfDML(sql string) string {
	if isDml(sql) {
		return AddFilteredReplicationUnfriendly(sql)
	}
	return sql
}

// AddFilteredReplicationUnfriendly annotates the given 'sql'
// query as filtered-replication-unfriendly.
func AddFilteredReplicationUnfriendly(sql string) string {
	filteredReplicationUnfriendlyCountStat.Add(1)
	return sql + filteredReplicationUnfriendlyComment
}

// Copied from go/vt/vtgate/resolver.go
// TODO(erez): Refactor this.

// Returns true if 'querySQL' is an INSERT, UPDATE or DELETE
// statement.
func isDml(querySQL string) bool {
	var sqlKW string
	if i := strings.Index(querySQL, " "); i >= 0 {
		sqlKW = querySQL[:i]
	}
	sqlKW = strings.ToLower(sqlKW)
	if sqlKW == insertDML || sqlKW == updateDML || sqlKW == deleteDML {
		return true
	}
	return false
}

// ExtractKeySpaceID parses the annotation of the given statement and tries
// to extract the keyspace id.
// If a keyspace-id comment exists 'keyspaceID' is set to the parsed keyspace id
// and err is set to nil; otherwise, if a filtered-replication-unfriendly comment exists
// or some other parsing error occured, keyspaceID is set to nil and err is set to a non-nil
// error value.
func ExtractKeySpaceID(sql string) (keyspaceID []byte, err error) {
	keyspaceIDString, hasKeySpaceID := extractStringBetween(sql, "/* vtgate:: keyspace_id:", " ")
	hasUnfriendlyAnnotation := (strings.Index(sql, filteredReplicationUnfriendlyComment) != -1)
	err = nil
	if hasKeySpaceID {
		if hasUnfriendlyAnnotation {
			keyspaceID = nil
			err = &ExtractKeySpaceIDError{
				Kind:    ExtractKeySpaceIDParseError,
				Message: fmt.Sprintf("Conflicting annotations in statement '%v'", sql),
			}
			return
		}
		keyspaceID, err = hex.DecodeString(keyspaceIDString)
		if err != nil {
			keyspaceID = nil
			err = &ExtractKeySpaceIDError{
				Kind: ExtractKeySpaceIDParseError,
				Message: fmt.Sprintf(
					"Error parsing keyspace id value in statement: %v (%v)", sql, err),
			}
		}
		return
	}

	if hasUnfriendlyAnnotation {
		err = &ExtractKeySpaceIDError{
			Kind:    ExtractKeySpaceIDReplicationUnfriendlyError,
			Message: fmt.Sprintf("Statement: %v", sql),
		}
		keyspaceID = nil
		return
	}

	// No annotations.
	keyspaceID = nil
	err = &ExtractKeySpaceIDError{
		Kind:    ExtractKeySpaceIDParseError,
		Message: fmt.Sprintf("No annotation found in '%v'", sql),
	}
	return
}

// Extracts the string from source contained between the leftmost instance of
// 'leftDelim' and the next instance of 'rightDelim'. If there is no next instance
// of 'rightDelim', returns the string contained between the end of the leftmost instance
// of 'leftDelim' to the end of 'source'. If 'leftDelim' does not appear in 'source',
// sets 'found' to false and 'match' to the empty string, otherwise 'found' is set to true
// and 'match' is set to the extracted string.
func extractStringBetween(source string, leftDelim string, rightDelim string) (match string, found bool) {
	leftDelimStart := strings.Index(source, leftDelim)
	if leftDelimStart == -1 {
		found = false
		match = ""
		return
	}
	found = true
	matchStart := leftDelimStart + len(leftDelim)
	matchEnd := strings.Index(source[matchStart:], rightDelim)
	if matchEnd != -1 {
		match = source[matchStart : matchStart+matchEnd]
		return
	}
	match = source[matchStart:]
	return
}

// ExtractKeySpaceIDError is the error type returned
// from ExtractKeySpaceID
// Kind is a numeric code for the error (see constants below)
// and Message is an error message string.
type ExtractKeySpaceIDError struct {
	Kind    int
	Message string
}

// Possible values for ExtractKeySpaceIDError.Kind
const (
	ExtractKeySpaceIDParseError                 = iota
	ExtractKeySpaceIDReplicationUnfriendlyError = iota
)

func (err ExtractKeySpaceIDError) Error() string {
	switch err.Kind {
	case ExtractKeySpaceIDParseError:
		return fmt.Sprintf("Parse-Error. %v", err.Message)
	case ExtractKeySpaceIDReplicationUnfriendlyError:
		return fmt.Sprintf(
			"Statement is filtered-replication-unfriendly. %v", err.Message)
	default:
		log.Fatalf("Unknown error type: %v", err)
		return "" // Unreachable.
	}
}


Sails.js is a Real-time MVC frameworks for Node.js.
What are the features of Sails.js?
5. Built-in web sockets in routes.
How to installed version Sails.js?
How to create an application instance in Sails.js?
What Is the Sails app lifecycle?
What Is the Assets Sails.js?
How to get application BaseUrl in Sails.js?
What Is the name of default ORM in Sails.js?
How to configure a database in Sails.js?
What are the types of hooks available in Sails.js?
What Is a service in Sails.js?
What Is Middleware in Sails.js?
How to generate controllers in Sails.js?
What are Generators in Sails.js?


text:
Q: ios CLLocation didUpdateLocations error I am use XCode7.2 Version
I try to use the locationManager delegate function
 func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
 let location = locations.last as! CLLocation
 print("%f/%f",location.coordinate.latitude,location.coordinate.longitude)

 }

But I get the error below:
  Downcast from 'CLLocation?' to 'CLLocation' only unwraps optionals; did you mean to use '!'?

I don't know how to fix the problem .
The swift code change more
have anyone can help me how to fix?
thank you

A: locations.last return type is CLLocation? and thats because an array may have no elements at all. As error state you don't have to cast an optional type to non optional when you can just unwrap it by doing this:
let location = locations.last!

Be aware that using the above method can lead to exception and always consider using optional unwrapping
if let location = locations.last{
    print("%f/%f",location.coordinate.latitude,location.coordinate.longitude)
}


HDFC Life offers a range of life insurance plans & policies specifically to meet the needs of NRIs. Buy our NRI insurance policies now !
Looking to buy HDFC ERGO Car Insurance? Compare HDFC ERGO Car Insurance and renewal process with the premium calculator.
HDFC ERGO Car Insurance – compare plans with other Insurers online in India. Check Eligibility Coverage Quote Benefits Reviews Renewal.
L&T General Insurance Company in India offer plans for health, motor & home insurance. Visit today for more details on HDFC General Insurance Limited.
Life insurance company in India offering best life insurance plans and policies covering a range of life insurance products like term insurance, savings.
We offer range of general insurance policies for motor, health, travel & home. Buy/renew now!
HDFC ERGO offers motor insurance policies to protect your two wheeler, private or commercial vehicle. Buy vehicle insurance online at HDFC ERGO to avail.


text:
LV= launches 'Doctor Services' for protection customers
Protection specialist and mutual, LV=, is today adding LV= Doctor Services to all personal protection products for new customers, at no added cost.
Provided by partner Square Health, this new service offers policyholders convenient access to three medical services via one app. Customers will be able to speak to a UK doctor by video or phone, get a private prescription without needing to visit their GP, as well as obtaining a review of an existing diagnosis and specialist advice on treatment options.
From today, the service will be available to all new personal protection policyholders. Customers simply need to download the app to their smartphone, or call Square Health directly, to get easy access to UK doctors and specialists, whatever their medical concern and wherever they are. Appointments are available between 8am-7pm Monday to Friday and 9am-1pm on Saturdays, and it can also be used for the policyholder's children up to the age of 16.
Chris McNab, Head of Protection Propositions at LV=, said: "We know that in today's frantic world, people can sometimes struggle to get the guidance they need on everyday medical issues. So we're very excited to be partnering with Square Health to provide our protection customers with convenient access to qualified UK doctors and specialists, at no added cost.
"At LV=, we believe that protection policies should offer more than a financial benefit - they should also provide support, reassurance and value to customers throughout the life of their policy. We already provide our protection customers with access to legal professionals, counsellors and nurses through our Member Care Line, so LV= Doctor Services feels like a natural and beneficial extension to our offering. We look forward to developing our relationship with Square Health and we continue to explore other services and partnerships to help our LV= customers live their lives more confidently."
Dr Bippon Vinayak, CEO of Square Health, said: "We're delighted to partner with LV=. We share their passion for customer service, and the medical services offered by Square Health will help to extend the support LV= can provide to their members in times of need. We see this partnership as the beginning of a journey in which we will be able to help more people lead a healthier life and provide a trusted source of healthcare advice whatever their medical concern and wherever they are in the world."
For more information, advisers can visit lv.com/value-added, where they can also enter the LV= competition to win a year's free access to the LV= Doctor Services app for themselves.
1 Customers who apply for any of LV='s personal protection policies on and after 6 June 2017 are entitled to LV= Doctor Services at no added cost.
About LV=
LV= employs over 6,000 people and serves over 5.8 million customers with a range of financial products. We are the UK's largest friendly society and a leading financial mutual.
When we started in 1843 our goal was to give financial security to more than just a privileged few and for many decades we were most commonly associated with providing a method of saving to people of modest means. Today we follow a similar purpose, helping people to protect and provide for the things they love, although on a much larger scale and through a wide range of financial services including insurance, investment and retirement products. We are currently the UK's joint number one brand for Insurance and Investments, according to the 2016 YouGov Brand Index Buzz Rankings.
We offer our services direct to consumers, as well as through IFAs and brokers, and through strategic partnerships with organisations including ASDA and Nationwide Building Society.
Authorised by the Prudential Regulation Authority and regulated by the Financial Conduct Authority and the Prudential Regulation Authority. LVFS is a member of the ABI and ILAG. Registered address: County Gates, Bournemouth BH1 2NF.
About Square Health
Square Health was founded by the team behind the Doctors Chambers group of companies, and was set up to provide holistic medical, technological and claims-related solutions for corporates and individuals.
The business is the result of over 20 years of experience within the healthcare sector. Our founders are doctors who also have a deep understanding of the complex requirements of the insurance industry.
We have an established infrastructure with access to over 5,000 medical specialists across the UK, 250 staff spread between our Windsor and Newcastle offices and a software development team of over 30.
Expanding on the clinical heritage of the group, Square Health offers an extensive range of medical services, including but not limited to: medical screening, 2nd opinion services, health MOTs, appointment booking services, virtual and face-to-face GP consultations, specialist referrals, physiotherapy sessions, counselling and dietician appointments— all of which can be arranged in short timescales and are supported via bespoke cutting edge app technology and software solutions.
Jon Sellors
Head of Corporate Affairs, Life & Pensions
Adviser centre


text:
Title: AMERICA: Maxfield the master in the Clark
There were three Grade 1s over the US last weekend with Irishman Brendan Walsh picking up one
https://www.theirishfield.ie/america-maxfield-the-master-in-the-clark-664835
Racing > International Racing
Anne Marie Duff on 03 Dec 2021
AMERICA: Maxfield the master in the Clark
Anne Marie Duff
Maxfield wins the Grade 1 Clark Handicap at Churchill Downs with Jose Ortiz up, for Brendan Walsh \ Equisport
Clark Stakes (Grade 1)
THERE were three Grade 1 races over the weekend in the USA and the feature was the all-aged Clark Stakes at Churchill Downs last Friday.
The nine-furlong contest drew a good field and it was the Brendan Walsh-trained, Godolphin's homebred Maxfield who ended his 11-race career with a half-length win over Happy Saver and the favourite, the three-year-old Midnight Bourbon three lengths back in third.
Maxfield now retires and joins the stallion ranks at Darley at Jonabell Farm for 2022.
It was the second Grade 1 for the four-year-old son of Street Sense after winning the 2019 Grade 1 Claiborne Breeders' Futurity at Keeneland at two.
With not much speed in the Clark apart from Midnight Bourbon, Maxfield, and jockey Jose Ortiz, grabbed a spot behind the pacesetter.
Midnight Bourbon set a comfortable pace with fractions of 23.83secs and 48secs. Maxfield always had him in his sights and took it up early in the stretch. With about half a furlong to go, Happy Saver emerged with a strong challenge but Maxfield responded and scored by half a length in 1m 49.06secs.
"I knew I put Midnight Bourbon away and he gave me another gear when he saw Happy Saver coming," Ortiz said.
It was Maxfield's eighth victory with two seconds and a third in his 11-race career with earnings of just over $2 million.
"I'm just delighted he got the job done and went out on a winning note," the trainer said. "This is a very prestigious race. And it was nice that he could win it and hopefully he can go on to have a great stud career.
"But he's just been an unbelievable horse. He's come back from an injury. He's helped me get out of bed in the mornings in the last two years, and it'll be hard to find another one like him."
Maxfield missed both the 2019 TVG Breeders' Cup Juvenile and the 2020 Kentucky Derby due to injuries.
Michael Banahan, Godolphin USA's director of bloodstock said: "A great result for Brendan and his team, who have nursed the horse through some ups and downs over the last years."
More Matriarch Glory for Brown
THERE were two Grade 1s on turf over the weekend on the west coast and on Sunday at Del Mar trainer Chad Brown won his fourth Grade 1 Matriarch Stakes in the last five years.
In the colours of Peter Brant, the five-year-old Animal Kingdom mare Regal Glory made all the running under jockey Jose Ortiz and none of the other five got in a blow as she came home two and a half lengths clear of the Irish-bred Zofelle and the favourite Princess Grace. Viadera, last year's winner, was fourth,
Brant had paid $925,000 to get Regal Glory early this year at the Keeneland January Horses of All Ages Sale from the estate of Paul P. Pompa Jnr who died last year. She had also been trained by Chad Brown for Pompa.
With none of the six front runners, Jose Ortiz let Regal Glory head to the front. That allowed Regal Glory to go the first quarter-mile in 24.06secs and a half-mile in 48.50secs.
Turning for home, Kent Desormeaux tried to rally Princess Grace but Regal Glory had plenty left and won unchallenged.
"We got away with some easy fractions, and then she had lots for the finish," Ortiz said.
Desormeaux Brilliant
The Grade 1 Hollywood Derby produced a fittingly named winner as jockey Kent Desormeaux, back in favour this season, steered home Beyond Brilliant in an all-the-way, rail-skimming ride.
The son of Twirling Candy grabbed the lead at the start and never looked back, just holding on by a neck victory from Godolphin's Santin in the nine-furlong three-year-old contest. Favourite Public Sector was fourth.
After spending his first seven starts, two of which he won, in allowance and maiden races on turf and dirt for trainer John Shirreffs, Beyond Brilliant was third last time out in the Santa Anita Grade 2 Twilight Derby on his stakes race debut.
"The (credit) goes to the barn because it's beyond brilliant what they've done to him in the last month," Desormeaux said.
"In his last start, I had my hands full and tried to manhandle him and coax him back and it didn't work as well. But today he was very content, very happy. He showed that he can sprint if he's allowed to have it his own way and he had it his today and his mind was right."
In a field of 14, Beyond Brilliant and Desormeaux led by a lengths and a half after a half-mile in 49.23secs, and still led as challenges came on the final turn.
It was the last to challenge Santin who made up nearly four lengths in that last furlong, but fell just short of adding to a memorable weekend for Brendan Walsh. Beyond Brilliant covered the nine furlongs in 1m 48.84secs.
It was a first Grade 1 for Desormeaux since 2019. He had failed to win a graded stakes race in 2020 and the first seven months of 2021,
"It's a tremendous amount of support, even more than you imagine because of social media," said the 51-year-old, with 49 wins this year, his biggest total since 2018.
"Kent and I go back a very, very long way and we've had our ups and downs but I'm so happy that Kent's riding so great and very thankful he did it for us today," John Shirreffs added.
Maxfield
Regal Glory
AMERICAN PREVIEW: Knicks Go warms up for Breeders' Cup
There are three Grade 1s up for decision this evening in the US with the Woodward the Belmont highlight
AMERICA: Easy does it for Maxfield
Godolphin's colt enjoyed a three and a quarter length triumph in the Stephen Foster
Leo Powell
BREEDING INSIGHTS: Bowing out in a blaze of Glory
Leo Powell looks at the Grade 1 winners in the USA, two of which were bowing out of racing
AMERICA: Mind Control bows out in fighting style
There were three Grade 1 races stateside and two of the winners ended their careers with a big win


Quad bikes aren't just for grownups and teenagers as there are a lot of kids' quads out there on offer. Parents can start letting their kids ride quad bikes at a young age. Just like their clothes, a child's quad will eventually be too small. Don't worry; quad bikes for kids can usually be sold for a price that is nearly a match for its original price.
Finding a quad for a tike can be a bit difficult for those who have no idea on how to go about it. There are a lot of things that need to be considered before buying a child their very first quad bike. Below is a small list of just some of the things that people need to be reminded of when they buy a kid's quads.
Don't just look at the price tag attached to the quad.
People are more or less spoiled for choice when it comes to rating kids quads in terms of price. The old adage "You get what you pay for" is something that generally applies to practically everything, which includes quad bikes. Always look at the features that a particular model offers its potential owners. Only then should a person start thinking about the price.
Some models might be more expensive than others, but that's because they offer their riders a lot more in terms of safety and value.
Kids' quads come in a large variety of sizes and engine displacements. It is extremely important to think about the size of the kid and the quad bike that they are riding. A rider that's too big for their quad bike can suffer from cramps after prolonged riding.
It is true that buying a quad bike that's too big for a kid might be beneficial, in that they will eventually grow into it. But remember, this is a kid's first quad bike. It was never meant to be ridden for a long span of time.
Comfort matters more than savings because the kids are just starting to get used to riding a quad bike for the first time. It is imperative to make things as comfortable for them as possible to make the learning experience easier.
People are easily misled when they do not have the right kind of knowledge, especially when it comes down to business. It's very important to arm oneself with the right kind of knowledge. Don't be careless, do some research about the different models of quad bikes that might suit a kid's wants and needs.
Remember, there are a lot of seasoned and experienced salesmen out there who will show you models with all the bells and whistles on it. Don't be fooled, a parent should always look for the right model that suits both the needs and wants of their kids. Don't let fancy sales talk take control of the situation.
Kids' quads are easy enough to find. It's finding the right deal that can take a little bit of effort and patience.


text:
Our Garbage Infrastructure
Florida Pedestrian Bridge Collapse The Result Of Bad Math And Ignoring Giant Cracks: Feds
Filed to:Bridge collapse
On March 15, 2018, a pedestrian bridge at Florida International University collapsed, crushed the cars underneath, killing six people and injuring 10 others. The tragedy was the result of a litany of errors by the contractors designing the bridge, an independent reviewer supposed to catch those errors, and the contractors' dismissal of obvious structural defects prior to the bridge being put over the roadway, the National Transportation Safety Board concluded in their their report.
Florida Pedestrian Bridge Constructed Barely A Week Ago Collapses, Killing Multiple People
The main span of a pedestrian bridge at Florida International University constructed as recently…
Here in the United States of America, many of our roads and bridges are very old and poorly maintained, but this was not one of those bridges. It was in the process of being built, and the span was put up less than a week prior to the collapse.
The $14.2 million project was supposed to be architecturally unique and visually striking. Instead, the designers appear to have put an awful lot of effort into designing a cool-looking bridge and very little into making sure it would stay up.
The National Transportation Safety Board (NTSB) determines that the probable cause of the Florida International University (FIU) pedestrian bridge collapse was the load and capacity calculation errors made by FIGG Bridge Engineers, Inc., (FIGG) in its design of the main span truss member 11/12 nodal region and connection to the bridge deck.
In other words, the contractors did crappy math.
To be sure, mistakes happen. That is precisely why independent reviewers are hired to check the math.
Unfortunately, the independent reviewer, Louis Berger, was "not qualified" by the Florida Department of Transportation, according to the NTSB, and "failed to perform an adequate review" of the plans. Specifically, NTSB said:
Contributing to the collapse was the inadequate peer review performed by Louis Berger, which failed to detect the calculation errors in the bridge design.
The report went on to say that Berger knew he should have checked the math on the calculations that resulted in the bridge collapsing, but "he indicated that there was not enough budget or time to evaluate those factors."
Name-checking budget and time constraints on the independent review is an indirect reference to the technique being used to build the bridge in the first place, a technique FIU has an entire center to promote.
This approach to bridge-building, accelerated bridge construction (ABC), is where precast parts are made offsite then put together quickly over the roadway. It is more expensive and architecturally difficult but is increasingly popular because it allows the work to be done without closing the road below. ABC is supposed to be fast and convenient but expensive, so the independent contractor name-checking aggressive timelines and lack of budget is particularly noteworthy.
The Florida Pedestrian Bridge Collapse Might Have Been A Disaster Waiting To Happen
The appeal of accelerated bridge construction—where precast parts are pieced together and within…
That being said, while ABC is mentioned a bunch in the 152-page report, the NTSB didn't seem overly concerned with the ABC approach in itself, but more how the contractors actually implemented it.
Perhaps the most galling findings, though, were related to the cracks.
For more than a month, workers warned the contractors they saw giant cracks in the parts of the bridge being precast offsite. The contractors didn't think it was a problem.
As early as February 13, more than a month before the collapse, construction personnel reported cracks in precast parts of the bridge. Workers reported more cracked parts in early March. Over the weeks, dozens of photographs were sent to the contractor. Here's a photo included in the NTSB report taken on March 13, two days before the collapse:
Screenshot: NTSB
That is a three-to-four-inch deep crack in a main structural support for the bridge.
These warnings didn't bother FIGG, who repeatedly told workers in the days before the collapse that they did not see the cracks as a safety issue. The NTSB quotes seven separate statements from FIGG managers in writing, voicemail, and as reported by others, in the two days prior to the collapse that the cracks were not a safety issue.
The morning of the collapse, workers took these photos and sent them to FIGG management:
Still, there was "no concern with safety of the span," according to FIGG managers.
In a bitterly ironic twist, the morning of the collapse, FIGG project managers had a meeting with the Florida Department of Transportation and FIU, among others, and a slide in their presentation declared "And, therefore, there is no safety concern relative to the observed cracks and minor spalls."
Four hours later, the bridge collapsed.
Actually, The SUV-Defeating Rock Is Good
This Garage Has A $970,000 Parking Spot, Apparently
North Carolina's Infamous Low-Ass Bridge Will Soon Be Raised
Senior Reporter, Investigations & Technology, Jalopnik


As promised to some friends yesterday, here is my favorite carnie moment taken the day before the Durham fair last year. I think that Austin Power's says it best as seen in the clip below. Believe it or not, he was a very friendly guy and gave me a stuffed bunny for taking his photo. Now my daughter sleeps with it every night. Creepy without a doubt. Perhaps I shouldn't judge a book by its cover. You wondering what's the miracle here? Take a look at the carnies eyes and see the resemblance to the bananas eyes. It's uncanny. You know how sometimes people start to resemble their dogs, well this carnie resembles his prizes.
He's interesting, but not as cute as Tony the Tiger.


text:
requirevars 'input_local_DB' 'db_query';

attach database '%{input_local_DB}' as localDB;

select execprogram(null, "/root/exareme/set-local-datasets.sh");

var 'a' from select count(distinct(rid)) as sum1 from (select distinct rid from (toeav %{db_query}));

var 'b' from select execprogram(null,'cat','/root/exareme/etc/exareme/name');
select var('a') as sum1, val as val, var('b') as who from (select distinct val from (toeav %{db_query}) where colname = 'dataset') group by val;


The Cuvée Rosé Alexia lives up to all you expect form a noble and prestigious wine.
A perfect effervescence or fragrances instantly develops in the mouth. Hints of strawberries and raspberries, of fudge and Tarte Tatin.
This Cuvée is an ideal aperitif but works well with desserts and dishes such as salmon with lemon.
Blended: 90 % of Chardonnay - 10 % of Pinot Noir.


text:
The Eagle Document
Oechsler, Monika (2008) The Eagle Document. [Exhibition/show, Performance]
Download (90kB) Preview
The Eagle Document Available under License Creative Commons Attribution No Derivatives.
Oechsler, Monika
Corporate or Group Creators:
James Hockey and Foyer Galleries
The Eagle Document forms the second stage of an ongoing project by artist Monika Oechsler.
Oeschler visited Farnham last September with a radical live performance combining modern dance, performance art, experimental music and a falconry display.
Stage two of the The Eagle Document is the culmination of filmed performance rehearsals, and bird flights presented on five screens. The installation examines notions of performance and 'live' art using projections onto multiple screens. The theme of the bird, the Eagle, is carried through into the new installation and used as an object/prop within the projections.
The viewer experiences multiple views from different camera angles and their non-synchronised timelines and sound creates overlaps and repeats; this repetition playing on notions of time and duration. The screen configuration also echoes the mechanism of film production, its rhythms of flow and interruption, to be experienced as a physical and spatial phenomena.
The Eagle Document was originally inspired by Marcel Broodthaers' Musée d'Art Moderne, a critical commentary on art production at the end of the modernist period. Broodthaers challenged the notion of the permanent art collection, the museum and the status of the art object by creating a series of nomadic, non-permanent and fictitious museum collections. One of these fictitious collections The Département d'Aigles (a collection of diverse eagle paraphernalia) cancelled the status of the eagle as a symbol of power and reappropriated the art objects as a method of display.
The installation borrows Broodthaers device 'the object as method' and investigates the 'object' within expanded art concepts. Both choreography and action are reminiscent of the early video performances of Marina Abramovic and Rebecca Horn.
The work also looks at 'body and space' a familiar theme in performance art. The installation contrasts the closed space of performance with the open space of the installation. Thus viewing and experiencing the work involves the onlooker navigating the space and assembling images and sounds.
Monika Oechsler
http://monikaoechsler.co.uk/
Test User
Exhibition/show, Performance
https://research.uca.ac.uk/id/eprint/217


Josh Brolin and Diane Lane are officially divorced, documents filed in Los Angeles County Superior Court show.
The couple married in 2004 and split up earlier this year.
People.com reported last Monday that their divorce was finalized last week.
Lane, 48, had legally changed her name to Diane Lane Brolin but has since dropped her ex-husband's last name, the celebrity news website said.
Brolin, 45, checked into a rehab facility last month following several public, drunken altercations.
Contact a Costa Mesa Divorce Lawyer for any help today!


Note the green circle. When price hit the channel, the channel rejected the price and propelled it higher. Will this be the only test of the white channel? I don't know…but I'll be watching it carefully.
Now a daily chart of this same DOW but much closer in time, not a 3 year chart, but a one year chart, starting January 2017. Note the burst above the channel in October, a test in November, and then whoosh…straight up to the high we just saw in late January 2018. The white dashed line is the 50-day moving average and "nothing bad happens when price is above a rising 50-day moving average." We aren't back above it, but it is still rising! Again, we bounced pretty darn close to the white channel line, and we didn't close a day inside the channel. THAT is what I'm worried about…closing inside the channel on a weekly basis.
Next Post PUBLIC: Compare 2011 to 2018 What do YOU see?


text:
Baking A Cake 1950s Poster Jigsaw Puzzle Game
Baking A Cake 1950s Poster Puzzle Details:
About: In this fun new puzzle we feature a poster from the 1950s. Drawn in the pop art style this retro poster depicts four women baking a cake. Pop art is an art movement that emerged in the mid-1950s in Britain and the late 1950s in the United States. Pop art presented a challenge to traditions of fine art by including imagery from popular culture such as advertising and news.The term "pop art" was officially introduced in December 1962; the occasion was a "Symposium on Pop Art" organized by the Museum of Modern Art.
Liked "Baking A Cake 1950s Poster" ?
Colorful Scarves
If you didn't know, a scarf is a piece of fabric worn around the neck for warmth, sun protection, cleanliness or fashion. Scarves have been worn since ancient times. They were originally worn by men around their neck or tied to their belt. The scarf became a real fashion accessory in the early 19th century for both men and women. By the middle of the 20th century, scarves became one of the most essential and versatile clothing accessories for both men and women. In this fun new puzzle we feature a bunch of modern colorful scarves.
Two Boats By The Peer
What better way to relax on a beautiful Spring day then with a fun puzzle and calm boat ride on the lake. Click start and jump aboard one of the two boats featured in today's game.
The primary function of these type of clocks is to awaken people from their night's sleep or short naps; they are sometimes used for other reminders as well. Alarm clocks are also found on mobile phones and watches so the traditional ones are less popular today.
The spice featured in this puzzle and commonly called star anise, star anise seed, Chinese star anise or badiam that closely resembles anise in flavor is obtained from the star-shaped pericarp of the fruit of Illicium verum which are harvested just before ripening. Its oil is a highly fragrant and it's used in cooking, perfumery, soaps, toothpastes, mouthwashes, and skin creams.
Today's new jigsaw puzzle features some beautiful hot air balloons. The hot air balloon is the oldest successful human-carrying flight technology. It is in a class of aircraft known as balloon aircraft. On November 21, 1783, in Paris, France, the first untethered manned flight was made by Jean-François Pilâtre de Rozier and François Laurent d'Arlandes in a hot air balloon created on December 14, 1782 by the Montgolfier brothers.
Old Movie Projector
Today's new puzzle features an old cinema movie projector. Projectors are opto-mechanical devices for displaying motion picture film by projecting it onto a screen. The essential optical elements of a projector are the light source, the reflector and condenser lens, the douser, the film gate and single image, the shutter, the imaging lens and aperture plate and the viewing screen. Projectors are classified by the size of the film used, i.e. the film format. Typical film sizes are 8 mm film, Super 8, 9.5, 16, 35, 70 mm film.
Peacock Butterfly
In today's new jigsaw puzzle we feature a beautiful peacock butterfly (Aglais io) sitting on a flower. The base-colour of this type of butterfly's wings is a rusty red, and at each wingtip it bears a distinctive, black, blue and yellow spot. The European Peacock can be found in fields, woods, meadows, parks, pastures, and gardens.
Solve this jigsaw and see the delicious red apples.
Colorful Skeins Of Wool
If you didn't know, a skein is a quantity of yarn, thread, or the like, put up together, after it is taken from the reel. Wool is obtained from sheep and other animals, including cashmere and mohair from goats, qiviut from muskoxen, angora from rabbits, and other types of wool from camelids (camels, llamas, alpacas). In addition to clothing, wool has been used for blankets, horse rugs, saddle cloths, carpeting, insulation and upholstery. In this new puzzle game we feature lots of colorful skeins of wool ready to be used in your next knitting project. Have fun!
White And Blue Umbrella
Today's new puzzle is a bit more challenging. It feature's a close-up of the blue and white pattern on an umbrella. Pick your difficulty level, click start and put the umbrella back together as fast as you can for a top place on our leader-boars. Have fun!
Colorful Floating Umbrellas
This kinds of colorful attractions, made out of hundreds of colorful umbrellas floating above the streets, are often found in tourist locations around the world. The multi-colored umbrellas add a bit of color the otherwise dull surroundings and at the same time create cool shaded places where people can escape the Summer sun and heat.
Today's puzzle is full of shiny, colorful pebbles. Pick your difficulty level, toggle piece rotation and put the pebbles back together as fast as you can and get a top spot on our leader-boards.


text:
NRG Energy buys solar developer Solar Power Partners
SPP sites include grocery stores, hospitals, universities, office buildings, municipal buildings, schools and airports
Princeton, N.J., November 21, 2011 — NRG Energy acquired San Francisco-based Solar Power Partners, a developer of commercial and industrial distributed solar projects.
In addition to 30 MW of distributed solar projects in operation or under construction, NRG also will secure development rights to Solar Power Partners' extensive pipeline of development projects in California, Hawaii, Arizona, Connecticut, New Mexico, Massachusetts, New Jersey, Ontario and Puerto Rico.
SPP sites include grocery stores, hospitals, universities, office buildings, municipal buildings, schools and airports.
Solar Power Partners will become an integral part of NRG Solar, an NRG subsidiary. The company has completed almost 50 commercial solar facilities and brings a team with deep experience developing, financing and operating projects. Solar Power Partners also specializes in creating long-term partnerships with customers to tailor each solar system to meet specific needs.


Gate valves, check valves, globe valves, non-return valves, dual-plate check valves, and high performance butterfly valves.
Since 1846, Powell Valves is been a leader in industrial valve manufacturing. Unified Alloys can provide Powell Gate valves, check valves, globe valves, non-return valves, dual-plate check valves, and high performance butterfly valves.
As a full-service valve company, Powell Valve offers modifications and field services. Their modification facility in Manning, South Carolina, is equipped to provide a wide range of custom modifications.


Free books by the best romance authors. . dirty romance, steamy stories, young love, and historical romance . Adonis Grayson has broken my heart more times than I .
. Lovers at Heart (The Bradens), Game of Love . #18 on GPlay, and #33 on Nook. Story of Love . Best Romance Books of The Month ROMANCING MY LOVE .
Love Stories That Touched My Heart; . can I get online PDF or EPUB versions of books? . forget to read the latest book of ravinder Singh will you still love me .
Love Stories That Touched My Heart Overview An anthology of moving, inspirational, heartwarming or heartbreaking, love stories shortlisted in a nation wide contest by Penguin India!


text:
Neilson, Reid & Co Works No 5907 No 9 0-4-0ST
This locomotive was built by Neilson, Reid & Co in 1901 as works number 5907 for the Bass Brewery in Burton-upon-Trent, who operated a fairly sizeable railway around the town using its own fleet of locomotives and wagons, and even at least one carriage for inspections, dignitaries etc.
It was Number 9 in the fleet whose main duty involved the hauling heavy trains of ale over the winding brewery tracks which contained many sharp curves. The locomotives were fitted with steam brakes and sanding gear and could handle up to 30 loaded wagons.
No 9 was withdrawn from service in 1964 and was put on display at the National Brewery Visitor Centre in Burton-on-Trent.
5907 at Coors Brewery at Burton – March 2012
Back to Neilson & Co – Neilson Reid & Company


text:
Q: How to split the results of a php xpath query I am trying to build a page that when a website URL is added to the input my php will scrape that page and display the input names for each form on that page.
I have successfully accomplished this, however im trying to split the results to make them easier to read if there are multiple forms on a page.
<form action="" method="post">
                Website URL:

                <input type="text" name="website-url-value" id="website-url-value" style="border:1px solid #000;" />

                <input type="submit" name="submit" value="Find forms" />
            </form>

        <?php
            $html = file_get_contents($_POST['website-url-value']);
            $website_doc = new DOMDocument();
            libxml_use_internal_errors(TRUE); //disable libxml errors
            if(!empty($html)){ //if any html is actually returned
                $website_doc->loadHTML($html);
                libxml_clear_errors(); //remove errors for bad html

                $website_xpath = new DOMXPath($website_doc);
                $form_total = 1; // initial form counter
                //get all the form fields
                $full_forms = $website_xpath->query('
                    //form
                '); // find forms on page
                $full_inputs = $website_xpath->query('
                    //input[@type="text"]|
                    //input[@type="radio"]|
                    //input[@type="checkbox"]|
                    //input[@type="tel"]|
                    //input[@type="email"]|
                    //input[@type="date"]|
                    //input[@type="number"]|
                    //input[@type="time"]|
                    //textarea|
                    //select'
                ); // find form fields with these types
                if($full_inputs->length > 0){
                    foreach($full_inputs as $single_input){
                        echo $single_input->getAttribute('name') . '
'; // show each field followed by new line
                    }
                }
                if($full_forms->length > 0){
                    foreach($full_forms as $single_form){
                        echo '' . $single_form->nodeName . " " . $form_total++ . '
'; // show form plus count
                    }
                }
            }
        ?>

I expect the result to look like:
Form 1:
FirstName
LastName
Email
Form 2:
FirstName
LastName
Phone
But currently the results i am getting is as below:
FirstName
LastName
Email
FirstName
LastName
Phone
Form 1:
Form 2:

A: What you are doing is getting all input from the html documents, what you need to do is get 1 form at a time and get their relevant inputs.
One more thing is xpath returns nodelist as a result, but we can use the nodelist and convert it into xpath again to query further. For that you can use descendant parameter and pass nodelist as 2nd parameter.
Try this :
if(!empty($html)) {
    $website_doc = new DOMDocument();

    libxml_use_internal_errors(TRUE); //disable libxml errors

    $website_doc->loadHTML($html);

    libxml_clear_errors(); //remove errors for bad html

    $xpath = new DOMXPath($website_doc);

    $forms = $xpath->query("//form");

    foreach($forms as $key => $form) {
        $inputs = $xpath->query('descendant::
            input[@type="text"]|
            input[@type="radio"]|
            input[@type="checkbox"]|
            input[@type="tel"]|
            input[@type="email"]|
            input[@type="date"]|
            input[@type="number"]|
            input[@type="time"]|
            textarea|
            select', $form);

        echo "Form ".($key+1)."
";

        foreach ($inputs as $input) {
            echo $input->getAttribute('name') . '
';
        }

        echo "
";
    }
}