<quoted text>anyway,kinfolk said,jeb,move away from there.....oh,wrong jeb..that was jeb clampett.you were asking about jeb stuart at gettysburg.well,it's true jeb was 'awol' at that battle,but as gen. ewell said after the war,"there were enough mistakes made at that battle to go around,and God knows that i made more than my share"(more or less a quote).and he was right.a.p.hill,stuart,ewell and even lonstreet(lee's 'old warhorse')all let gen.lee down.even lee did'nt seem to have brought his'a' game.it was almost like a 'perfect storm' of errors,misjudgements,misunders tandings,etc.or,who knows,maybe just a little 'devine intervention'.on one final thought,some historians/physicians have suggested that gen. lee suffered a mild heart attack on the eve of the battle,and there is some evidence to support this.

<quoted text>They pay the same tax rates on the same type of income as do all taxpayers.Less in terms of percentages? LMAO, when about half the country doesn't pay ANY federal income tax.Your wealth envy and lack of knowledge is showing again...

Technically correct, EXCEPT withholding tax is levied against the first $117,000 of gross EARNED - operative word - income and that tax ALONE accounts for 32% of everything the government takes in. If your income comes from stock dividends, annuities, tax shelters, off-shore accounts (assuming they're reported), etc. then you don't have to pay anything on withholding.

So, even the 47% pay through the nose so the super-rich don't have to.

<quoted text>Technically correct, EXCEPT withholding tax is levied against the first $117,000 of gross EARNED - operative word - income and that tax ALONE accounts for 32% of everything the government takes in. If your income comes from stock dividends, annuities, tax shelters, off-shore accounts (assuming they're reported), etc. then you don't have to pay anything on withholding.So, even the 47% pay through the nose so the super-rich don't have to.Bet you don't like that math lesson. ;o)

<quoted text>Definately not this Republican or any others.Even if you are a Democrat, Jeb, I am surprised by your response.Besides, why did you leave General Lee in the dark about Federal troop positions at a critical time just before the battle at Gettysburg?.

just one other thing,the real"Gen.Lee",was very apolitical,unlike me,stuart and some others.

Yes. It was intended to pay for Social Security and Medicare but Congress couldn't keep their hands off it. Today, they've taken $2.73 TRILLION from the trust fund and each year dip into it to the tune of over $90 billion - and are now saying the system is about to go broke. Go figure.

<quoted text>They pay the same tax rates on the same type of income as do all taxpayers.Less in terms of percentages? LMAO, when about half the country doesn't pay ANY federal income tax.Your wealth envy and lack of knowledge is showing again...

wow!you repugs really just don't get it,do you.you accuse half of americans of being freeloaders and deadbeats.no wonder you're losing grounds so fast!

<quoted text>Technically correct, EXCEPT withholding tax is levied against the first $117,000 of gross EARNED - operative word - income and that tax ALONE accounts for 32% of everything the government takes in. If your income comes from stock dividends, annuities, tax shelters, off-shore accounts (assuming they're reported), etc. then you don't have to pay anything on withholding.So, even the 47% pay through the nose so the super-rich don't have to.Bet you don't like that math lesson. ;o)

You really need to quit typing when you don't know what you're talking about. It's really kind of funny, you're so misinformed...

I know this is a waste of time...

Withholding tax is NOT limited to $117K, I ASSUME you're talking about FICA, but the number is NOT $117K.

Withholding tax is/are taxes WITHHELD from earnings like salaries, wages, bonuses, etc. based upon the period earnings and witholding and deductions. IMAGINE THAT.

PARTIALLY correct, in practice, 100% WRONG. The entities making those payments are not employers, so there's no requirement for them to make payments (unless it's something like a lottery winning, in which case tax will be withheld, but there's no payroll taxes, etc.). An individual likely will make interim tax payments (Form 1040 ES) to make sure they haven't underpaid when filing their tax return. That serves the same purpose as withholding an employer processes.

<quoted text>Yes. It was intended to pay for Social Security and Medicare but Congress couldn't keep their hands off it. Today, they've taken $2.73 TRILLION from the trust fund and each year dip into it to the tune of over $90 billion - and are now saying the system is about to go broke. Go figure.

figure this,by "congress",exactly who do you refer to dems,reps,or both!

<quoted text>anyway,kinfolk said,jeb,move away from there.....oh,wrong jeb..that was jeb clampett.you were asking about jeb stuart at gettysburg.well,it's true jeb was 'awol' at that battle,but as gen. ewell said after the war,"there were enough mistakes made at that battle to go around,and God knows that i made more than my share"(more or less a quote).and he was right.a.p.hill,stuart,ewell and even lonstreet(lee's 'old warhorse')all let gen.lee down.even lee did'nt seem to have brought his'a' game.it was almost like a 'perfect storm' of errors,misjudgements,misunders tandings,etc.or,who knows,maybe just a little 'devine intervention'.on one final thought,some historians/physicians have suggested that gen. lee suffered a mild heart attack on the eve of the battle,and there is some evidence to support this.

Thanks for bringing back the memory of Elly May.

If Grannie knew what my brothers and I were thinking watching the Beverly Hillbillies, she'd of been blasting both barrels of that shotgun before asking any questions.

<quoted text>They pay the same tax rates on the same type of income as do all taxpayers.

Less in terms of percentages? LMAO, when about half the country doesn't pay ANY federal income tax.

Your wealth envy and lack of knowledge is showing again...

That post is now on the running for most incorrect post of the day.

Here's just an obvious example that took 1:18 to document.

From Business Insider:

Jim Cramer just went on a great Twitter tirade about the outrageousness of the tax loophole that allows hedge-fund and private-equity managers to pay 15% "capital gains" taxes while you and I pay much-higher "ordinary income" rates.

This loophole, which some think is one reason GOP front-runner Mitt Romney is scared to release his tax returns, is absurd.

To be clear:

There is no theoretical justification for it.

None.

The fact that the loophole exists is merely a function of the enormous power the financial industry has over Washington.

<quoted text>You really need to quit typing when you don't know what you're talking about. It's really kind of funny, you're so misinformed...I know this is a waste of time...Withholding tax is NOT limited to $117K, I ASSUME you're talking about FICA, but the number is NOT $117K.Withholding tax is/are taxes WITHHELD from earnings like salaries, wages, bonuses, etc. based upon the period earnings and witholding and deductions. IMAGINE THAT."If your income comes from stock dividends, annuities, tax shelters, off-shore accounts (assuming they're reported), etc. then you don't have to pay anything on withholding."PARTIALLY correct, in practice, 100% WRONG. The entities making those payments are not employers, so there's no requirement for them to make payments (unless it's something like a lottery winning, in which case tax will be withheld, but there's no payroll taxes, etc.). An individual likely will make interim tax payments (Form 1040 ES) to make sure they haven't underpaid when filing their tax return. That serves the same purpose as withholding an employer processes.Your wealth envy, as well as your lack of knowledge, is quite sad..."BM said: "how'd I do Bill of Douglasville?"You did well, grasshopper.

Wealth envy? Not hardly. I'm peddling as hard as I can to get there, and I'm going to! Already, 80% of my annual income is legally sheltered. In FY 2013, that should increase to 83% simply by taking full advantage of the law.

<quoted text>That post is now on the running for most incorrect post of the day.Here's just an obvious example that took 1:18 to document.From Business Insider:Jim Cramer just went on a great Twitter tirade about the outrageousness of the tax loophole that allows hedge-fund and private-equity managers to pay 15% "capital gains" taxes while you and I pay much-higher "ordinary income" rates.This loophole, which some think is one reason GOP front-runner Mitt Romney is scared to release his tax returns, is absurd.To be clear:There is no theoretical justification for it.None.The fact that the loophole exists is merely a function of the enormous power the financial industry has over Washington.

another uninformed post...

It's one thing to know the facts, it's another thing to know the facts and the whole story. You only got part correct...unless you know what you're talking about, your "facts are as usueful as a $3 bill.

There is a "reason" why capital gains rate is at 15%. Do you know why and what the rationale is?

Why don't you check to see what the impact on carried interest is? Do you understand what it is and how it works?

"You and I" pay the same tax rates as other people.

Your last statement is the only one that makes sense, our tax system is absolutely ridiculous, but we all play by the same rules. Romney's capital gains rate is the same rate as mine (his taxable numbers are a helluva lot higher than mine) and yours (if you have any) and we all pay ordinary income tax rates from the same tax tables.

<quoted text>No shit, Sherlock! WAGES (FICA) is the operative word, and it's $113,700.00 - my mistake there. So sue me.http://www1.umn.edu/ohr/payroll/tax/wagelimit...Wealth envy? Not hardly. I'm peddling as hard as I can to get there, and I'm going to! Already, 80% of my annual income is legally sheltered. In FY 2013, that should increase to 83% simply by taking full advantage of the law.

<quoted text>Actually, Mr. or Ms. BM is using a line (and a fact) I'm quite fond of.Where, exactly, in what he or she said, does it say someone is accusing half of Americans to be freeloaders? I don't think the % is anywhere near that high, but it's certainly more than 0%.BTW, since when is stating an actual fact equivalent to being accused of calling somebody something? Getting a little defensive?Seems to me your really making a rash assumption about a fact someone posted. Can you dispute the fact? No, you can't. Change the story and accuse somebody of something? Yeah, that'll work...

honestly,if i could make sense of your reply,then i would reply to it.but because i can not,i will not.it may be due to my lack of understanding of exactly how this system works,meantime,please excuse my ignorance and accept my apoligies.best wishs.

Tell me when this thread is updated:

Add your comments below

Please note by submitting this form you acknowledge that you have read the Terms of Service and the comment you are posting is in compliance with such terms. Be polite.
Inappropriate posts may be removed by the moderator. Send us your feedback.


Multi-drug resistance (MDR) of cancer is one of the major challenges for curing cancer. Exosomes play an essential role in this activity by expulsion of drug and signaling biomolecules, and have attracted significant research interests as they may also imply important biomarkers for cancer and therapy. Nanoparticles, an emerging technology to encapsulate and deliver drugs, are demonstrated to overcome MDR, by potentially interfering the production and composition of exosomes. We hypothesize that treatment by nanoparticles helps shedding drugs from exosome efflux to overcome MDR of cancer. To test this hypothesis and identify the underlying mechanism, our proposed research will focus on inducing MDR suppression with nanoparticle encapsulation and analyzing the quantitative and compositional variation of cancer-secreted exosomes. We plan to treat in vitro culture of the multidrug resistant cancer cells with nanoparticle encapsulated paclitaxel or doxorubicin to overcome MDR. To extract and purify the subsequently-secreted exosomes, we plan utilize our proprietary ciliated micropillar array, a novel nanowire-on-micropillar structure, which allows rapid, efficient, and non-invasive isolation of exosome. Recently, our group developed a microfluidic device consisting of ciliated micropillars, and demonstrated that it can preferentially trap exosome-like liposomes, while simultaneously filtering protein molecules and larger cell debris. This technique is temperature- stable, immediate accessible, and cost-effective. With the enhancement of exosome antibody, it allows rapid and non-invasive isolation of specific exosomes of high purity, therefore providing opportunity for on-site and high-throughput assay. The isolated exosomes will firstly be quantitated for their secretion rate under various treatment conditions of MDR up/down regulation. Exosomal constituents, especially ABC transporter proteins, will be further extracted for biomarker analysis. The result will be evaluated to track exosomal compositional variation and to identify the existence of potential biomarkers. With completion of above research, we expect to provide a powerful nanotechnology platform for rapid and efficient analysis of intact cancer derived exosomes, which can improve our understanding of cancer MDR and nanoparticle involvement. The outcome would also benefit the discovery of useful drug-resistant cancer biomarkers, thus leading to more efficient cancer nanotherapy.


Drop Everything and Look at the Street Style Outside of Chanel

When it involves type week dressing, the outdoor of Chanel is like the Olympics of side road taste. It is the final degree upon which athletes of the business pull out all the stops and in any case carry out the triple axle backflips of outfits they’ve been warming up for all type month.

There was once a bigger bow that tied the image in combination, although: an amazing proof of enjoyment of the procedure of placing in combination a mixture of garments and equipment that, in combination, do the absolute maximum.

Tell me your favourite outfits in the feedback down beneath. I’m handing out gold medals left and proper.

Photos through Simon Chetrit; practice him on Instagram @simonzchetrit.


// The MIT License (MIT)
//
// Copyright (c) 2015, 2016 Howard Hinnant
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.

// years - year_month_day not allowed

#include "date.h"

int
main()
{
    using namespace date;

    auto x = 2015_y - year_month_day{2015_y, aug, 9_d};
}


A Honduran man who has entered the United States illegally three times kidnapped his estranged girlfriend and repeatedly raped her at knifepoint on a drive from Missouri to New Jersey, federal prosecutors said.

Jose Amaya-Vasquez was arrested in May at a motel in Bellmawr, near Philadelphia, after law enforcement officers tracked the woman's cellphone. He was charged by federal prosecutors on Oct. 14 with kidnapping and illegally re-entering the country. In May, New Jersey authorities charged him with aggravated sexual assault, weapons possession and other counts.

Amaya-Vasquez, 30, made an initial appearance in front of a federal judge in Camden on Monday and was ordered detained. His public defender didn't immediately return a phone message seeking comment on the accusations.

Amaya-Vasquez kidnapped the woman at knifepoint in Kansas City, Missouri, in May and sexually assaulted her at a vacant house in Missouri, an Ohio motel and a Bellmawr motel, FBI special agent Nicole Canales wrote in court documents. Their 2-year-old child was also brought along on the ride.

The defendant was first accused of entering the country illegally in 2005, but wasn't caught by police and deported until July 2014 after he was charged with domestic assault against the same woman, investigators said.

He was stopped again two months later after illegally entering the country from Mexico. After serving 30 days in jail, he was deported and barred from re-entering the country for 20 years.

But this May, prosecutors said, he encountered the victim in a parking lot in Kansas City and held her against her will with a folding knife and threats that he would kill her three children and mother in Honduras.

He said "she had to decide that night if she wanted to live or die," Canales wrote. He also "told the victim that she was going to be with him until death" and that they were going to New York.

When police went to the New Jersey motel, the woman told them that he had fled through the ceiling tiles. He was caught a short time later after climbing 25 feet up a nearby tree.


E-cigarette liquids: Constancy of content across batches and accuracy of labeling.
To assess whether bottles of refill liquids for e-cigarettes were filled true to label, whether their content was constant across two production batches, and whether they contained impurities. In 2013, we purchased on the Internet 18 models from 11 brands of e-liquids. We purchased a second sample of the same models 4months later. We analyzed their content in nicotine, anabasine, propylene glycol, glycerol, ethylene glycol and diethylene glycol, and tested their pH. The median difference between the nicotine value on the labels and the nicotine content in the bottles was 0.3mg/mL (range -5.4 to +3.5mg/mL, i.e. -8% to +30%). For 82% of the samples, the actual nicotine content was within 10% of the value on the labels. All models contained glycerol (median 407mg/mL), and all but three models contained propylene glycol (median 650mg/mL). For all samples, levels of anabasine, ethylene glycol and diethylene glycol were below our limits of detection. The pH of all the e-liquids was alkaline (median pH=9.1; range 8.1 to 9.9). The measured content of two batches of the same model varied by a median of 0% across batches for propylene glycol, 1% for glycerol, 0% for pH, and 0.5% for nicotine (range -15% to +21%; 5th and 95th percentiles: -15% and +10%). The nicotine content of these e-liquids matched the labels on the bottles, and was relatively constant across production batches. The content of propylene glycol and glycerol was also stable across batches, as was the pH.


Q:

How to submit bugs to BugTracker.NET from C# application?

Reading the documentation page of BugTracker.NET
BugTracker.NET API Documentation
I realized that I need to use GET or POST which, I have to admit, I'm not very good at. I was wondering:

Is there a library that could be used to easily submit bugs to BugTracker.NET from a C# application (or VB.NET) ?
Or,
If there's no library. How can use GET or POST to submit bugs to BugTracker.NET ?

A:

Thank you all for your answers. Using your answers and other resources on the web, I've put together a method for submitting a new bug to BugTracker.NET
The method returns a boolean value indicating success or failure and it displays a message to the user with the status.
This behavior could be changed to match your needs.
The method uses POST method to submit bugs which helps to submit any long text in the comment (I've tried to submit the content of a log file in the comments and it worked).
Here's the code:
public bool SubmitBugToBugTracker(string serverName,
                                        bool useProxy,
                                        string proxyHost,
                                        int proxyPort,
                                        string userName,
                                        string password,
                                        string description,
                                        string comment,
                                        int projectId)
    {
        if (!serverName.EndsWith(@"/"))
        {
            serverName += @"/";
        }
        string requestUrl = serverName + "insert_bug.aspx";
        string requestMethod = "POST";
        string requestContentType = "application/x-www-form-urlencoded";
        string requestParameters = "username=" + userName
                                  + "&password=" + password
                                  + "&short_desc=" + description
                                  + "&comment=" + comment
                                  + "&projectid=" + projectId;
        // POST parameters (postvars)
        byte[] buffer = Encoding.ASCII.GetBytes(requestParameters);
        // Initialisation
        HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(requestUrl);
        // Add proxy info if used.
        if (useProxy)
        {
            WebReq.Proxy = new WebProxy(proxyHost, proxyPort);
        }

        // Method is POST
        WebReq.Method = requestMethod;
        // ContentType, for the postvars.
        WebReq.ContentType = requestContentType;
        // Length of the buffer (postvars) is used as contentlength.
        WebReq.ContentLength = buffer.Length;
        // Open a stream for writing the postvars
        Stream PostData = WebReq.GetRequestStream();
        //Now we write, and afterwards, we close. Closing is always important!
        PostData.Write(buffer, 0, buffer.Length);
        PostData.Close();
        // Get the response handle, we have no true response yet!
        HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
        // Read the response (the string)
        Stream Answer = WebResp.GetResponseStream();
        StreamReader _Answer = new StreamReader(Answer);
        string responseStream = _Answer.ReadToEnd();

        // Find out if bug submission was successfull.
        if (responseStream.StartsWith("OK:"))
        {
            MessageBox.Show("Bug submitted successfully.");
            return true;
        }
        else if (responseStream.StartsWith("ERROR:"))
        {
            MessageBox.Show("Error occured. Bug hasn't been submitted.\nError Message: " + responseStream);
            return false;
        }
        else
        {
            MessageBox.Show("Error occured. Bug hasn't been submitted.\nError Message: " + responseStream);
            return false;
        }
    }


Q:

Is there any difference in meaning between "blow someone off" and "cancel on someone" in the sense of canceling plans with someone?

Is there any difference in meaning between blow someone off and cancel on someone in the sense of canceling plans with someone? For example:

I made a date with Monica for coffee, but she canceled on me.
I made a date with Monica for coffee, but she blew me off.

A:

The phrases overlap, but using "blew me off" indicates that the speaker feels they have been treated with contempt. The first version is softer, though saying "canceled on me" also indicates that one feels ill-treated. A more neutral expression would be simply "...she canceled."


Pages

Wednesday, November 27, 2013

Monday - Wolf Hill, Smithfield, RI - 6.6 miles

Cold! Definitely time for the thermal leggings. Ran the usual trails on Wolf Hill. The land trust recently slapped a fresh coat of green paint on one of the trails which is appreciated. Nose and fingers were frozen at first but after a couple miles they thawed out nicely. The fall deluge of leaves has come to an end with most of them now off the trail or crushed into submission. I took the power line trail south beyond the perimeter of Wolf Hill to see how far it was to the Putnam Pike (answer: not far.) In my mind I can see the makings of an epic trail race that runs these powerlines from North Smithfield down to the Snake Den. The hills would be brutal and you'd be able to see the other runners far off in the distance. I'm sure there are a thousand restrictions and laws that would prevent this from happening but a man can dream.

Tuesday - Hopkinton, RI - 6.3 miles

I tried to start the day off with some Chest, Shoulders & Tris but my lower back was sore and as I tried my first push-up it felt very tight under my left arm. I decided to stop lest I make things worse. Is there no end to this madness?!?

At least it hasn't affected my running. Did my usual stint around Hopkinton while waiting on pick-up duties. I'm not sure what it is about this place but I always feel great and have a fast pace (maybe it's the night running.) Saw a mouse in the road and chased him for a bit before he froze in his tracks. I turned away and he made his escape. Scared a fellow who was looking into a yard where his dog was peeing. I heard him whisper "Oh!" and then his beast charged me. Poor old guy really had to make an effort to reign him in. Another victim of the Night Bandit!

Wednesday - Charlestown, RI - 1.3 miles

Heavy rains all day today but at 5:30 AM it was windy and just spitting so I dragged Oliver across the street for a quick run. He did not seem very enthused but it's probably the only exercise he was getting today. Plus I need every mile I can scrap together in my pursuit of 1800.

Amanda and I went to the Malted Barley in Westerly at night to see friends. We actually had to wait in line for about 10 minutes to get in. Never been there before but what a great beer bar! Kipling Pale Ale was the cask ale and it was delicious. I also had Founder's All Day IPA on tap which was phenomenal.

Thursday - Charlestown, RI - 9.4 miles

I took Oliver out for a three mile jaunt at 5:30 AM. We hit about a 9 minute mile pace which is pretty good for him I think. After bringing him back to the house, I ran down to the beach and back. Big waves at the beach. I was moving well until I turned around and realized I'd be fighting the wind the way back. Between the two runs I got in over 9 miles this morning - a good prep for the feasting that would ensue.

Friday - Crawley Preserve, Richmond, RI - 9 miles

I had to work (blech) but luckily I was able to make this group run before heading up to the office. Met up with Jeff, Mike B and Mike G for a run at the Crawley Preserve. Only Galoob had been there before and we were looking forward to some new trails. A steep hill right off the bat made me regret my second round of dessert last night but that was followed by a nice downhill. Then a neverending road climb. After this initial elevation seesaw we jumped back into the woods and explored more trails and dirt roads. I don't think we actually explored much of the Preserve itself - we spent a lot of time on the outlying roads and unofficial trails. But it was a lot of fun and a lively run. We'll save Crawley Preserve proper for another day.

Saturday - 0 miles

Sunday - Charlestown/South Kingstown, RI - 16.7 miles

I had couple possibilities for my long run but ultimately I decided to stick close to home and run to as many trails as I could. I was interested in joining Nate for an early morning exploration of a new DuVal trail but I couldn't get out of bed. It still sounded like a good idea so I decided to make a long run out of it. I wore my 4mm New Balance 730s and this would definitely be the longest run in 'em by a good five miles or so. I figured since the run would be a mix of roads and trails they'd be alright.

I started off by attempted to bushwack from the fields of South Farm over to Shannock Rd. I'd really like a cut-through so I didn't have to run all the way up past the Rathskellar. Unfortunately I only made it about halfway through the swamp and prickers before giving up on the attempt. You can see from my Strava map how I ended up veering off course anyhow. I retreated back to the fields and it began to rain.

I returned to Old Coach and took the roads over to Browning Woods, stopping briefly to chitchat with my buddy Jarrod who was diligently chopping wood in the rain. The rain was steady but not too heavy and the temp was 50 degrees for which I was happy. Just before I entered Browning Woods, I felt a stinging in my left nipple and saw that my tech shirt was bloody. Never before had I ever had to deal with this runner's affliction and I wasn't sure what to make of it. Did I scratch it while bushwacking? Two miles later and the right one began to bleed - that answered that question. I guess the 2013 Blessing of the Fleet shirt does not agree with my tender nips when wet.

First Timer

I took the Heart trail over to the dirt road and then traveled through the sand dunes where I spied the remains of a deer. It was mostly just head and neck - a grisly sight but a reminder of what awaits us all. I continued on the dirt road towards the DuVal trail. The 730s were soaked through but still felt alright. I could tell that my calves were beginning to feel it. I pushed the DuVal trail at a good pace and made my way to the new section of the southern half. It's about a mile long and leads to a cool little pond - a very nice addition to this network of trails.

After that it was all roads back to the house. My calves were ready to be done with this run and I felt no desire to push the distance to hit 50 for the week. A long but interesting jaunt.

Monday, November 25, 2013

One of my favorite local races had arrived. The Mew Tavern "Gear & Beer" 5k is run every November in Wakefield, RI. It starts and ends with decent hills and has a great afterparty with beer and food. It's always a crowded but fun event and this year was their biggest yet with over 2000 registered runners. With the hills and the temperature I had no illusions of a PR but I hoped that I could run about 18:30.

Amanda and I parked at the Elks Lodge and walked down to the Mews. It was cold and when the wind blew it was pretty awful. My Garmin wasn't charged and I realized I'd be running without the space watch for the first time in two years which disturbed me a bit. We had brought a bag with clothes for afterward but there wasn't really a good place to stash it so I ran it back up to the car, stripped down and did a short warm-up. Once I began running it wasn't as cold as I had feared. I made my way to the start line and saw the WTAC guys in attendance. After a few minutes the race director lined us up and then we were off.

The race goes uphill straight away and I tried to reign it in, letting a bunch of people go by. Some poor bastard had been driving down the road as the race began and stopped at the most inopportune place - right at the first corner. We ran around him and then there was no more car troubles. A few more people passed me on the way up to Willard St and I questioned how hard I was working. Should I be pushing harder? I found myself running alongside this tall shaggy dude. He was wearing minimalist shoes and made a loud slapping noise with every footfall.

When friends run and drink, everyone wins.

As we made our way down Willard St I continued to exchange places with Slappy Dude, a guy in under armor gear and a couple other folks. Slappy Dude's footfalls were starting to really get annoying. When we finally pulled off of Willard, I pushed it on the downhill to keep up with Under Armor. I could still hear Slappy Dude and in fact his slap slaps were starting to get closer as we turned onto High St.

I tried to push a little harder and finally the sounds of Slappy Dude faded away. Under Armor was still just ahead of me though. I was feeling it at this point but still felt like I had enough left for the big hill. We turned onto the hill and immediately I went by Under Armor who gave me some encouragement. Then halfway up the hill I managed to catch another guy. After that it was a mad downhill dash back down to the finish line. I was afraid someone would catch me and I didn't feel like I was moving well but I was safe. Finished in 18:17. 20 seconds off my PR from last month. Tough race in cold conditions - I'll take it happily.

Almost immediately I jogged back to the car to get our warm clothes and on the way back Amanda went by. She had a great race and finished in just under 25 minutes. A HUGE PR! We put on some warmer clothes and made our way to the beer area where we stood around chatting with everyone we knew. Eventually the frigid temps drove people away. You know it's cold when they still had a good amount of beer to be had two hours later. Amanda and I took shelter in the big tent until the food line died down. Grabbed some chow and more drinks and enjoyed the heat of the tent once again before heading home.

WTAC Represent

There were some strong showings from WTAC with Galoob and Ryan Woolley taking 4th and 5th. My team, the Channel 4 News Team, had an injury so we weren't able to field a complete group. Our wives ran a corresponding team but I think there was an issue with their team registration. And I know the WTAC guys fielded a team but I didn't see them listed in the results. Not surprising as the team registration process is confusing to say the least. Ah well, it's all in good fun. Next year join us, won't you?

Thursday, November 21, 2013

On the heels of the Li'l Rhody Runaround comes the Mews Tavern 5k this weekend. Really looking forward to this one. Lots of runners, a couple big hills on the course and a fun afterparty. The race fee includes unlimited access to a couple dozen kegs which always lures a bunch of my friends to run. It's lots of fun to run as a team and hang out with everyone afterwards.

Monday - 0 miles

Quite the blustery rainy morning. Made it easy to justify not running but then it cleared up so I turned out that I could've gotten in a run before work. Drat.

Tuesday AM - Charlestown, RI - 2.6 miles

Took the dog for an early stroll. Over the weekend I took him to South Farm and walked/sprinted with him. It went well enough that I decided to up the tempo on our morning constitutionals. Tried to keep it at an easy pace that he could handle and ended up running 11 minute miles. Not exactly race pace but our walks were at 16-17 minute miles so this is a definite improvement. Figure if we keep it up he'll get faster and I'll be able to fit a few more miles in each week with these "dog doubles."

Tuesday PM - Hopkinton, RI - 6.8 miles

I ran the roads near the dance studio, headlamp aglow. Legs were sore today from Li'l Rhody but the earlier run helped loosen them up. Pace was snappy in the low 7s and very consistent. My calves were feeling it by the end.

Wednesday - 0 miles

P90X Shoulders & Arms (45 minutes)

After a month off from P90X my neck, back and arm finally felt good enough to attempt a workout. Not too bad but thanks to the worksheet I could tell where my strength has dropped off. I've always favored my right arm but my left is now noticably weaker and proved problematic for the last few exercises. Still it was good to get back into the swing of things.

Thursday - Charlestown, RI - 10.2 miles

I had my yearly physical in the morning which allowed me to get a longer-than-usual weekday run. I started from my house and wore my cold compression gear for the first time this season. 20 degrees outside! I probably didn't need the leggings but it's hard to judge. I headed over to the Narragansett trail and poked around the side trails - I wound up behind the houses on Black Pond Road. I'd love to have an access point to these trails from that road but at the moment there doesn't appear to be one. Hmmm.

Made my way up to Route 2 with a shitty little yippy dog chasing me until I shouted at it. Explored a side road I had never been on then took the powerlines over to Shannock Rd. I took the roads back to my house, checking out a new development on the way. Fun local run once my thumbs thawed at mile 3.

Friday - Smithfield, RI - 6.1 miles

I hit the trails at work on a wet morning. At least it was 50 degrees out. The leaves are finally started to compress on the ground, making the singletrack more visible. Ran across my first hunter out in these woods. I'm pretty sure it was Santa. A older rotund chap, bushy white beard. He had a great camo jacket. I scared the crap out of him but he was a jolly fellow and laughed it off. Said I probably took 10 years off his life. Sorry Santa!

That night while the girls were out at the movies I brewed a gallon batch of Dead Ringer IPA and racked my original JAOM into a glass jug. The JAOM wasn't as far along as I thought. Patience is the key in home brewing but sometimes it's so difficult!

Racked my first JAOM into a glass carboy. Not quite ready for bottling.

Saturday - 0 miles

Sunday - Mews Tavern 5k, Wakefield, RI - 5.1 miles

Official time: 18:17. 25th overall. Report forthcoming.

Weekly Mileage: 30.9 miles

Year to Date: 1,584.7 miles

Good race at the Mews to round out the week. Looking forward to a few weeks of whatever-I-like runs before the Newport 10k in mid-December. Looking at the mileage, I think I may have a shot at hitting 1,800 miles but it will take a solid effort through the rest of the year. We shall see!

Monday, November 18, 2013

Time for another run around Watchaug Pond at the Li'l Rhody Runaround. Last year was a mess as I ran on a weak ankle and twisted it badly at mile one. I finished the race but it was ugly and easily my worst race of the year, both from a time and health perspective. This year I had no ankle issues and other than lingering back pain I felt ready to race. I didn't really plan out a strategy for this one. I figured a sub-55 minute run was doable - I was just going to go out strong and see how it played out.

Over the past week Amanda had been thinking about running this race and once we got the babysitting squared away she decided to go for it. We arrived with plenty of time to register and get situated. Saw the usual WTAC suspects and a bunch of other fast guys. It looked to be a deep field and I warned myself not to go out too fast. I ran the first mile of dirt road as a solo warm-up and then it was time to head to the starting line.

An orange mob takes off

Photo by Jana Walker

It was a fast start and I quickly settled into what I thought was a 6:15 minute pace. I glanced at my watch and it was about a 5:50 pace - whoa, too fast! Fellow WTACer Nate caught up to me and we exchanged greetings. We ran alongside each other and I followed him into the singletrack. I could feel the train of runners slow a bit on this first trail section and Nate and I passed a few runners right before we came out at the playground.

The pace picked up as we ran through the Burlingame campground and Aaron "Sandals" Rome passed us just as we entered the woods. Nate passed Sandals a few moments later and I decided to follow suit. I had made the decision to stick with Nate for as long as I could. My only misstep came shortly thereafter during the plank section. I tried to jump on a big rock for a shortcut and my feet slipped - I nearly landed flat on my back. My shoes found traction at the last moment and I was able to remain upright.

After 3.5 miles we were approaching the water stop and the Buckeye Brook Road section. I was working hard and decided to drop back from Nate a bit. The field was spread out at this point. I could see a couple guys off in the distance behind me and two in front of Nate. The pace picked up slightly for the brief road section and when I re-entered the woods I really had to focus and try not to think about how hard I was working. Keeping the pace up was difficult now and Nate seemed farther ahead. Looking back I could see Boj and another guy gaining on me.

The uphill "stairs" section towards the North Camp road really took its toll on me and even the following downhill section was wearing on me. I could hear footsteps behind me but I tried not to worry about anyone else. The last couple miles of trails were brutal at the speed I was running and I just wanted to get to the road section. I wasn't sure how much I'd have left but just knowing that the last mile is road would be a relief. Just before crossing Cool Spring Road I passed another runner and shortly after that Boj passed me.

Coming around the last turn

Photo by Jana Walker

It was good to see Muddy cheering us on as we came out on King's Factory Road. I tried to pick up the pace as much as I could for this last section. I could still see Nate off ahead. Boj clearly had more left in the tank and began to put distance on me. The runner I had passed caught to me with about 1/3 of a mile to go and told me to keep with him. I managed to maintain his pace briefly before he too pulled away from me. I was exhausted as I made the turn into the parking lot and thrilled when I saw I was going to finish in under 53 minutes.

Stood around chatting with everyone afterwards, so happy to be done with this race. It was tough. Did a cooldown with the guys and then ran the course backwards to cheer on Amanda...but she had already finished! Like a fool I ran all the way out to King's Factory Road looking for her. I ran back to the finish, now truly tired and starving and found her down at the picnic area with everyone else. She did amazing, finishing in 1:16:51. Pretty awesome considering this was her first ever trail race and by far her longest footrace.

Happy to be done!

Everyone seemed to have a great time at this race. Greg Hammett won yet again and there were some big PRs from WTAC. Speaking of WTAC, they did a great job at this event and it was by far the biggest field they've had with over 400 runners! It's great to see so many people coming out to support trail racing. Hopefully this bodes well for the South County 4th Season trail series. This was a bit of redemption for me after last year's difficulties. I came in 20th overall but 11th in my Age Group which goes to show how deep the field was. A great race!

Thursday, November 14, 2013

Li'l Rhody Runaround week is here. After last year's shitshow, I've been watching this race approach through squinty, suspicious eyes. But last year my ankles were a goddamn mess. Now they are strong and mountain goat-like. However other Janky body parts will still threaten to undo me.

Monday - Ryan Park, North Kingstown - 6.4 miles

I took Ezri out to ride her bike on the Quonset bike path yesterday and that same mid-back issue cropped up when I jogged alongside her. I wasn't even sure if I should run this morning but after an early morning dog walk I decided to give it a go.

I wore my minimal MT00s for the first time in a while and they felt good. I stuck to the west side of the park at first, hitting the various trais before attempt to cross the road and see how far I could follow the powerlines (Answer: not far. Briars slowed me down and then a busy stream turned me around.) Back felt good throughout but I started the run with that nagging arm pain (it went away by the halfway point.) Legs felt good with a lot of pop on the rail bed section which isn't surprising since I took the weekend off.

Tuesday - 0 miles

Our first days of cold weather and dry air mean that pretty much our whole household is sick. I'm not too bad off - just an annoying hacky cough. At least my back seems to feel better from the regimen of pills that the doc prescribed.

Wednesday - 0 miles

I was going to do the P90X Stretch video this morning but I just couldn't drag myself out of bed. Weary.

Thursday - Smithfield, RI - 5.5 miles

Sometimes a bit of happy chance can turn your whole day around.

It was a shitty drive into work. Just awful. My commute sucks monkey balls on the best of days and when there's gridlock it becomes unbearable. What a bunch of assholes we are, driving these highways everyday in our mobile prisons. Just a waste of so much time. I arrived at work seething with rage and for the first time ever I parked as close to the trails as I could. I didn't want to deal with even half a mile of footpaths before I got into the woods.

I figured the trail run would improve my mood and it did but the real discovery came a half mile in. There, next to some singletrack, buried in dirt and leaves was a green glass jug! With my descent into homebrewing, I've been on the lookout for gallon jugs for small batches and secondary fermenting. This thing is perfect!

Behold my filthy green jug!

I ran my treasure back to the car and then headed back into the woods. Beautiful fall day out there and I hit a bunch of wide powerline trails and twisty singletrack. My body felt good and the neck pain I had on the commute vanished as soon as I started running. I ventured into the office in a far superior mood.

Friday - Connors Farm Conservation Area, Smithfield, RI - 5 miles

I explored this small network of trails once before and this morning it occurred to me that I should run them again. The trails go up and down the hillside and I forgot just how much elevation change there was. There's essentially three trails - a red loop, a yellow loop and a blue trail that connects to the yellow and red trails. The blue trail has some pretty cool rock formations and all the trails have great views of the moraine below. After hitting up all of 'em I decided to put in a hard effort on the red trail to make a Strava segment. I ran it well despite the heavy blanket of leaves. Only a five mile run but it was a workout.

Saturday - Charlestown, RI - 2.6 miles

Took Oliver the Dog over to South Farm for his morning walk. Walked most of it but we ran a oouple sections so I'm counting this as a run. The beast is a sprinter - we were running at a 6 minute pace briefly. I'll probably try to incorporate more running when I walk him in the morning as I think he can handle it.

Sunday - Li'l Rhody Runaround, Charlestown, RI - 12.8 miles

Official time: 52:51. 20th overall. Report forthcoming.

Weekly Mileage: 32.2 miles

Year to Date: 1,553.8 miles

Thursday, November 7, 2013

Good lord, I'm falling apart. In addition to my upper back woes, my left arm has taking to aching something awful at random points in the day. It's connected to my back/neck troubles which also still hurts intermittently. I haven't touched the P90X since that ill advised Ab Ripper session and I miss it. Thankfully my running doesn't aggravate the back/arm thing so I'm gonna keep the mileage up.

Monday - Snake Den, Johnston, RI - 6.5 miles

It was great running weather at the Den - cold and crisp. The fallen leaves made the footing tough throughout. I really had to watch my step. The Connector Trail is hard to see at the best of times - I had a few off-trail blunders and paid for my errors with several briar scratches. Checked out a few trails I hadn't been on before - some were dead ends while others connected with familiar territory. This really is a great place for trail running, though it'll be better once the leaves compress. I nabbed enough elevation at the power lines to grab the first 1000m badge in the Strava elevation challenge - this indeed proved to be a challenge as I had to actively seek out some hilly runs over the past week. Good fun - I hope they do more of these.

Tuesday - 0 miles

Wednesday - Big River, West Greenwich, RI - 6.3 miles

I met up with Scott Mason at the Greasy Joe's parking lot to get my first taste of Big River night running. I'd never attempt this one my own (I've gotten lost a couple times here in the daytime) but I knew Scott and Bob Jackman were old pros at this so I made plans to meet up. It was dark when we headed out at 5:45 PM but the temperature was almost 60 degrees which was great. We started out on the New London Turnpike but soon ventured onto the singletrack. The headlamps provided plenty of light and it wasn't difficult running the trails behind Scott. We ended up running much of the last leg of the Big River 1/2 marathon. Conversation was lively and other than a short bushwacking snafu the night provided no difficulties.

Thursday - Charlestown, RI - 6.1 miles

I had a doctor's appointment in the morning for the janky back so I took advantage of the time and ran down to the beach and back. It had rained overnight but now it was just spitting. Temperature was just as warm as last night though it was windy as I approached the shore. I kept the run short and the pace peppy.

Friday - Smithfield, RI - 4.9 miles

Track if I'm strong, woods if I'm weak. That's what I said I'd choose between today. Well call me Mr. Weak because I was running late and decided to just run the trails behind work to save time. One day I'll return to the track. Perhaps.

It was pleasant enough in the woods though the thick cover of leaves made it slow going. I overdressed yet again and had to take off my long sleeve layer halfway through the run. My Janky Toe began to ache from the rocks on the singletrack and I ventured over to the power lines for a change of pace. The road under the lines gave my toe a break but then my mid-back began to hurt. Awesome. With my body aching and having absolutely no pep whatsoever, I opted to just head back to the car. I think I'll be taking the weekend off to give my body some needed rest.

Year to Date: 1,521.6 miles

Tuesday, November 5, 2013

As we wade into November, my homebrewing is in full swing. I figure I'd give an update on my recent creations.

Chinook IPA - 5% ABV

Followed a Northern Brewer recipe but fermented in the Beer Machine, this brew proved that the Beer Machine is a capable fermenter when better ingredients are used. Made only with Chinook hops, this IPA has a piney, resinous aroma and taste. No citrus/fruit overload here. Very drinkable with just the right amount of bitterness - sadly it is almost gone.

Wake Up Stout - 5.7% ABV

Another Northern Brewer recipe, I followed it closely except that I used an espresso flavored coffee from a local coffee shop. This coffee stout is alright - it would have benefited from oats in order to give it a thicker mouthfeel. A good beer but I know that it can be improved upon.

Runner's High Imperial IPA - 8.1% ABV

Just bottled this over the weekend. I'm not sure if 8% qualifies it as an Imperial but whatever. This is an original recipe using the remaining steeping grains from the Chinook IPA. I used Chinook hops for bittering and added Cascade and Falconer's Flight late in the boil. I dry hopped with those as well. Very aromatic. The grapefruit notes are front and center when I tasted it. At this point I think they're overpowering but I'm looking forward to trying it in a few weeks after it has been bottle conditioned.

The Runner's High haul - 6 bombers and 10 regular bottles

EdWort's Apfelwein - 8.4% ABV

This was also bottled over the weekend after five weeks in the primary. I tried it for the first time. Very dry, like a white wine but more drinkable. It was pretty good right out of the fermenter but it's supposed to improve with age. The better bottle wasn't empty long - I got another 4.5 gallons going the next day.

Joe's Ancient Orange Mead

My original JAOM is almost a month old and there's still bubbling action to be seen. If it sticks to the schedule it should clear up in the next month. I started a second batch two weeks later. My dutiful assistant Ezri was happy to drop in all the ingredients. This time I substituted peaches and craisins for the orange and raisins. I'm just going to let these be until they start to clear up.

Maybe I'll tuck away a bottle to give to Ezri in 17 years

On Deck:

Next I plan to make 2.5 gallons of Bourbon Barrel Porter and 1 gallon of IPA. The porter will be the first time I'm using a secondary (need to add bourbon soaked oak chips) and the IPA will be my first attempt at a small 1 gallon batch.


import React, { Component } from 'react'
import { connect } from 'dva'
import moment from 'moment'
import GlobalComponents from '../../custcomponents';
import {Form } from 'antd'
import { Link } from 'dva/router'

import PageHeaderLayout from '../../layouts/PageHeaderLayout'
import styles from './RetailStore.profile.less'
import DescriptionList from '../../components/DescriptionList';

import DashboardTool from '../../common/Dashboard.tool'
import appLocaleName from '../../common/Locale.tool'

const {
  defaultRenderExtraHeader,
  defaultSubListsOf, defaultRenderSettingList,

}= DashboardTool

const { Description } = DescriptionList;

const internalRenderExtraHeader = defaultRenderExtraHeader

const internalSubListsOf = defaultSubListsOf

const internalRenderSettingList = defaultRenderSettingList

const internalRenderTitle = (cardsData,targetComponent) =>{
  const linkComp=cardsData.returnURL?<Link to={cardsData.returnURL}> <Icon type="double-left" style={{marginRight:"10px"}} /> </Link>:null
  return (<div>{linkComp}{cardsData.cardsName}: {cardsData.displayName}</div>)

}

const internalSummaryOf = (item, targetComponents)=>{

	return GlobalComponents.RetailStoreBase.renderItemOfList(item, targetComponents)

}

class RetailStoreProfile extends Component {

  componentDidMount() {

  }

  render() {
    // eslint-disable-next-line max-len
    const  retailStore = this.props.retailStore;
    const { id,displayName, consumerOrderCount, retailStoreOrderCount, goodsCount, transportTaskCount, accountSetCount } = retailStore
    const  returnURL = `/retailStore/${id}/dashboard`
    const cardsData = {cardsName:"双链小超",cardsFor: "retailStore",cardsSource: retailStore,displayName,returnURL,
  		subItems: [

      	],
  	};

    const renderExtraHeader = this.props.renderExtraHeader || internalRenderExtraHeader

    const summaryOf = this.props.summaryOf || internalSummaryOf
    const renderSettingList = this.props.renderSettingList || internalRenderSettingList

    return (

      <PageHeaderLayout
        title={internalRenderTitle(cardsData, this)}
        content={summaryOf(cardsData.cardsSource, this)}
        wrapperClassName={styles.advancedForm}
      >
      {renderExtraHeader(cardsData.cardsSource)}
       {renderSettingList(cardsData)}
      </PageHeaderLayout>
    )
  }
}

export default connect(state => ({
  retailStore: state._retailStore,
}))(Form.create()(RetailStoreProfile))


Zvonko Šundovski

Zvonko Šundovski () (born 7 September 1967) is a former Macedonian team handball player from Republic of Macedonia and a former coach of the Macedonia National Handball Team. Starting from October 2010 he served as the head coach of the Macedonia national team, and since the summer of 2012 he was also in charge by Romanian top division side HCM Constanța. From June 2015 he was the coach of Romanian club CSM București.

His first station as a coach was in 2003 with the club team RK Pelister, which he led to the double win of the national championship and cup. Already in 2006, Šundovski was coaching not only the men’s junior national team but also the men’s senior national team, whom he led in 2009 through their World Championship journey in Croatia. In the season 2008/09 Šundovski managed RK Metalurg Skopje and led the club as Macedonian champions into the EHF Champions League as well as round four of the EHF Cup Winners' Cup.

As team coach  of Macedonia, Šundovski achieved 5th place in the 2012 European Men's Handball Championship in Serbia.

As of January 23, 2013, Šundovski is no longer a coach of the Macedonia National Handball Team. He resigned with a statement to the press, and an official email to the Macedonian Handball Federation in which he explained his leaving from the function. He took full responsibility for the low performance of the Macedonia National Handball Team at the 2013 World Men's Handball Championship in Spain.

Clubs

Head coach
2003–2007: RK Pelister: Macedonian League
2007–2009: RK Metalurg Skopje: Macedonian League
2012–2015: H.C.M. Constanța: Romanian League
2015–2017: CSM București:  Romanian League
2018–2019: HC Dobrogea Sud:  Romanian League

Head coaching career with national teams
2006–2008: Macedonia junior national handball team
2008–2010: Macedonia(assistant)
2010–2013: Macedonia
2017–2018: Israel

Championships and cups as head coach

National domestic league championships
2004-05: RK Pelister: Macedonian League
2007-08: RK Metalurg Skopje: Macedonian League

National domestic cup championships
2004-05: RK Pelister: Macedonian Cup

Honours
Macedonian Coach of the Year -  2012

References

External links
Macedonian Handball Federation

Category:Living people
Category:1967 births
Category:Macedonian male handball players
Category:Macedonian handball coaches
Category:Macedonian expatriates in Romania


Q:

application crashes when an activity starts

Im creating an application in which I have to show map when the button is clicked. But when the map button is clicked instead of showing map the application crash and it said "Unfortunately, 'Application' has stopped" here is my code:
java file:
package com.example.jamaattiming;

import android.os.Bundle;
import android.app.Activity;
//import android.app.FragmentTransaction;
import android.view.Menu;
import com.example.jamaat_times.R;
import com.google.android.gms.maps.GoogleMap;
//import com.google.android.gms.maps.MapFragment;

public class TagYourself extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tag_yourself);

        /* MapFragment mMapFragment = MapFragment.newInstance();
         FragmentTransaction fragmentTransaction =
                 getFragmentManager().beginTransaction();
         fragmentTransaction.add(R.id.map, mMapFragment);
         fragmentTransaction.commit();

         GoogleMap maps;
         maps=(((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap());*/

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.tag_yourself, menu);
        return true;
    }

}

here's the xml file:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#808080">

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

manifest file:
    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.jamaat_times"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="info.androidhive.googlemapsv2.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_jamaat"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.jamaattiming.Splash"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.jamaattiming.MainPage"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="com.example.CLEARSCREEN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.jamaattiming.Qibla"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="com.example.COMPASS" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
            android:name="com.example.jamaattiming.JamaatFinder"
            android:label="@string/title_activity_jamaat_finder" >
        </activity>

        <activity
            android:name="com.example.jamaattiming.QiblaFinder"
            android:label="@string/title_activity_qibla_finder" >
        </activity>

        <activity
            android:name="com.example.jamaattiming.TagYourself"
            android:label="@string/title_activity_tag_yourself" >
         </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="my key" />

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name="com.example.jamaattiming.NearbySearch"
            android:label="@string/title_activity_nearby_search" >
        </activity>

        <activity
            android:name="com.example.jamaattiming.ManualSearch"
            android:label="@string/title_activity_manual_search" >
        </activity>

    </application>

</manifest>

here is the log cat:

04-01 00:32:36.587: I/SurfaceTextureClient(18546): [STC::queueBuffer]
  (this:0x518786b0) fps:0.88, dur:2279.85, max:1974.08, min:305.77 04-01
  00:32:36.990: V/Provider/Settings(18546): invalidate [system]: current
  214 != cached 0 04-01 00:32:37.020: D/ActivityThread(18546):
  installProvider: 04-01 00:32:37.034: V/Provider/Settings(18546): from
  db cache, name = sound_effects_enabled , value = 0 04-01 00:32:37.223:
  D/mylog(18546): Wifi State true 04-01 00:32:38.102:
  D/ActivityThread(18546): getPackageInfo: securityViolation=true 04-01
  00:32:38.102: W/asset(18546): AssetManager-->addDefaultAssets CIP path
  not exsit! 04-01 00:32:38.741: I/Google Maps Android API(18546):
  Google Play services client version: 4242000 04-01 00:32:39.025:
  I/Google Maps Android API(18546): Google Play services package
  version: 4324034 04-01 00:32:39.538: D/AndroidRuntime(18546): Shutting
  down VM 04-01 00:32:39.538: W/dalvikvm(18546): threadid=1: thread
  exiting with uncaught exception (group=0x419b19a8) 04-01 00:32:39.709:
  E/AndroidRuntime(18546): FATAL EXCEPTION: main 04-01 00:32:39.709:
  E/AndroidRuntime(18546): java.lang.RuntimeException: Unable to start
  activity
  ComponentInfo{com.example.jamaat_times/com.example.jamaattiming.TagYourself}:
  android.view.InflateException: Binary XML file line #8: Error
  inflating class fragment 04-01 00:32:39.709: E/AndroidRuntime(18546):
    at
  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.app.ActivityThread.access$600(ActivityThread.java:162) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.os.Handler.dispatchMessage(Handler.java:107) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  android.os.Looper.loop(Looper.java:194) 04-01 00:32:39.709:
  E/AndroidRuntime(18546):  at
  android.app.ActivityThread.main(ActivityThread.java:5371) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  java.lang.reflect.Method.invokeNative(Native Method) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  java.lang.reflect.Method.invoke(Method.java:525) 04-01 00:32:39.709:
  E/AndroidRuntime(18546):  at
  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  dalvik.system.NativeStart.main(Native Method) 04-01 00:32:39.709:
  E/AndroidRuntime(18546): Caused by: android.view.InflateException:
  Binary XML file line #8: Error inflating class fragment 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  android.view.LayoutInflater.inflate(LayoutInflater.java:489) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  android.view.LayoutInflater.inflate(LayoutInflater.java:396) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  android.view.LayoutInflater.inflate(LayoutInflater.java:352) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:281)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.app.Activity.setContentView(Activity.java:1881) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  com.example.jamaattiming.TagYourself.onCreate(TagYourself.java:16)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.app.Activity.performCreate(Activity.java:5122) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  ... 11 more 04-01
  00:32:39.709: E/AndroidRuntime(18546): Caused by:
  java.lang.SecurityException: The Maps API requires the additional
  following permissions to be set in the AndroidManifest.xml to ensure a
  correct behavior: 04-01 00:32:39.709: E/AndroidRuntime(18546):
   04-01
  00:32:39.709: E/AndroidRuntime(18546):    at maps.e.ci.a(Unknown Source)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at maps.e.ay.a(Unknown
  Source) 04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  maps.e.ay.a(Unknown Source) 04-01 00:32:39.709:
  E/AndroidRuntime(18546):  at maps.e.al.a(Unknown Source) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at maps.e.bh.a(Unknown Source)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at maps.e.bg.a(Unknown
  Source) 04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  etu.onTransact(SourceFile:107) 04-01 00:32:39.709:
  E/AndroidRuntime(18546):  at
  android.os.Binder.transact(Binder.java:310) 04-01 00:32:39.709:
  E/AndroidRuntime(18546):  at
  com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onCreateView(Unknown
  Source) 04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  com.google.android.gms.maps.MapFragment$a.onCreateView(Unknown Source)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  com.google.android.gms.dynamic.a$4.b(Unknown Source) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  com.google.android.gms.dynamic.a.a(Unknown Source) 04-01 00:32:39.709:
  E/AndroidRuntime(18546):  at
  com.google.android.gms.dynamic.a.onCreateView(Unknown Source) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  com.google.android.gms.maps.MapFragment.onCreateView(Unknown Source)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.app.Fragment.performCreateView(Fragment.java:1695) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  android.app.FragmentManagerImpl.moveToState(FragmentManager.java:861)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1137)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  at
  android.app.Activity.onCreateView(Activity.java:4735) 04-01
  00:32:39.709: E/AndroidRuntime(18546):    at
  android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
  04-01 00:32:39.709: E/AndroidRuntime(18546):  ... 21 moreenter code
  here

A:

Take a look at this line of your logcat:
 Caused by:
java.lang.SecurityException: The Maps API requires the additional following permissions to be set in the AndroidManifest.xml to ensure a correct behavior: 04-01 00:32:39.709:
E/AndroidRuntime(18546): <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 04-01 00:32:39.709: E/AndroidRuntime(18546):   at maps.e.ci.a(Unknown Source)

Looks like you forgot to add the permission:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

to your AndroidManifest xml file


Hemoglobin enhances the self-association of spectrin heterodimers in human erythrocytes.
Spectrin in isolated erythrocyte membranes is known to undergo tetramer to dimer transformation upon hypotonic incubation at 37 degrees C. In the present study, we detect no such transformation in intact erythrocytes in which hypotonicity is achieved by valinomycin treatment followed by hypotonic swelling. The inhibition of spectrin tetramer to dimer transformation is attributable to intracellular hemoglobin, since the addition of hemoglobin to isolated membranes or spectrin extracts blocks a similar spectrin transformation. However, the inhibitory effect is not limited to hemoglobin; other proteins including heme-containing proteins and basic proteins such as cytochrome c, ribonuclease, and albumin are also effective. The magnitude of their effect is proportional to the increased pI value of these proteins. We conclude that the stabilizing effect of these proteins on spectrin tetramers under hypotonic conditions is partly due to their non-ideality, which excludes water from spectrin and thus increases the effective concentration of spectrin, and to their electrostatic interactions with spectrin. In addition, promotion of spectrin self-association by hemoglobin under hypotonic conditions increases the stability of membrane skeletons against mechanical shearing. More importantly, the hemoglobin effect on spectrin self-association is demonstrable at physiological hemoglobin concentration, pH, and osmolarity, suggesting that in intact red cells the spectrin dimer-dimer association, as well as the membrane skeletal structure, is strengthened by intracellular hemoglobin.


She will join the ITV soap playing a character called Rana, who is an old university friend of Alya Nazir, played by Sair Khan.

Her storyline will see her set her romantic sights on Alya's brother, Zeedan, played by Qasim Akhtar.

The 31-year-old Lancashire-born actress also appeared in TV police drama Cuffs.

She said: "I'm absolutely thrilled to be joining the show. Being a proud Northerner, it's a dream come true."

Coronation Street producer Stuart Blackburn said: "Rana is sharp, funny, utterly gorgeous and not a little manipulative. She's a girl who likes to get her own way and when she sets her sights on something, or someone... well, Zeedan better have his wits about him!"


//
//  MTTBubble.h
//  TeamTalk
//
//  Created by scorpio on 15/7/2.
//  Copyright (c) 2015年 MoguIM. All rights reserved.
//

#import <Foundation/Foundation.h>

struct MTTBubbleContentInset {
    float top;
    float left;
    float bottom;
    float right;
};
typedef struct MTTBubbleContentInset MTTBubbleContentInset;

struct MTTBubbleVoiceInset {
    float top;
    float left;
    float bottom;
    float right;
};
typedef struct MTTBubbleVoiceInset MTTBubbleVoiceInset;

struct MTTBubbleStretchy {
    float left;
    float top;
};
typedef struct MTTBubbleStretchy MTTBubbleStretchy;

@class MTTBubbleConfig;
@interface MTTBubbleModule : NSObject

+ (instancetype)shareInstance;

- (MTTBubbleConfig*)getBubbleConfigLeft:(BOOL)left;

- (void)selectBubbleTheme:(NSString*)bubbleType left:(BOOL)left;

@end

@interface MTTBubbleConfig : NSObject

@property(nonatomic,assign)MTTBubbleContentInset inset;
@property(nonatomic,assign)MTTBubbleVoiceInset voiceInset;
@property(nonatomic,assign)MTTBubbleStretchy stretchy;
@property(nonatomic,assign)MTTBubbleStretchy imgStretchy;
@property(nonatomic,retain)UIColor* textColor;
@property(nonatomic,retain)UIColor* linkColor;
@property(nonatomic,retain)NSString* textBgImage;
@property(nonatomic,retain)NSString* picBgImage;

- (instancetype)initWithConfig:(NSString*)string left:(BOOL)left;

@end


Personality traits as predictors of decline in higher-level functional capacity over a 7-year follow-up in older adults: the Ohasama study.
Numerous factors that affect functional decline have been identified, and personality traits are considered to be an important factor in functional decline risk. The Tokyo Metropolitan Institute of Gerontology Index of Competence (TMIG) was developed to measure three higher-level functional capacities, instrumental activities of daily living, intellectual activity, and social roles, in Japanese elderly, which were previously not assessed adequately with existing scales of functional decline. The objective of this study was to explore the effect of personality traits as predictors of higher-level functional decline over a 7-year follow-up in a rural Japanese community. Data on 676 participants (mean 67.1 years) who were free of functional decline and had completed questionnaires at baseline and 7 years later, were analyzed. Demographic characteristics, lifestyle and personality characteristics were obtained from a self-administered questionnaire at baseline. Higher-level functional decline was examined using the subscales of the TMIG at baseline and at a 7-year follow-up examination. Over the 7-year study period, 21.7% of eligible participants reported decline in higher-level functional capacity. After adjustment for putative confounding factors, the traits that were significant predictors of decline in higher-level functional capacity at the 7-year follow-up had higher psychoticism scores [odds ratio (95% confidence interval) 2.12 (1.23-3.66)] and lower extraversion scores [1.89 (1.01-3.56)]. The personality traits of higher psychoticism and lower extraversion were significantly associated with a risk of future functional decline. A better understanding of these personality traits may help identify of at-risk individuals and could help reduce functional decline in older adults.


Taxonomic classification of human hepatitis B virus.
Sufficient data have accumulated to permit the ICTV Study Group on the Nomenclature of Hepatitis Viruses to recognize human hepatitis B virus as a member of a unique group of viruses and to classify it, together with a number of related animal viruses, into a new family called the Hepadnaviridae. Over the past decade, the International Committee on Taxonomy of Viruses (ICTV) has been active in the development of a classification system for viruses. The majority of viruses infecting vertebrate hosts have been classified into families and genera on the recommendations of the Vertebrate Virus Subcommittee (VVSC). In June 1980, the VVSC authorized the formation of an ad hoc Study Group on the Nomenclature of Hepatitis Viruses under the Chairmanship of Dr. Ian D. Gust. This paper represents the first report of the Study Group on the Taxonomic Classification of Human Hepatitis B Virus.


Ask HN: I need to specialize.  Web, or iOS? - esob3
I'm a software engineer, with equal years web, equal years iOS.  I've decided, I need to specialize, and that means choosing either:
-  Web
-  iOS
-  something else?
In the opinion of the wise technologists of this forum, given equal interest in the aforementioned fields, what is the "best career move"
In other words, whats going to be more valuable in 10 years?
======
pedalpete
I vote web, not because I'm not an iOS user, but I see the opportunities if
you're familiar with web languages to be larger.

When I say 'web', I don't mean just a front-ender, though there will continue
to be large opportunity for great front-end devs on the web. To be a great
front-ender, you need mad css and javascript skills. Those javascript skills
can lead you into back-end web dev with node.js or desktop apps with
electron/node-webkit, etc. While you're doing that back-end stuff, does some
algorithm stuff catch your fancy? There's some node stuff there too, but maybe
you start toying with Python or who knows what language? Want to develop
mobile apps, there's phonegap. IoT (going to plug my own library here
[http://getfavor.net](http://getfavor.net)), real-time coms, there's webrtc...

So, you could focus on learning Objective-C/Swift and become great at
developing apps for Apple products (don't forget within their walled garden),
or you can focus on javascript and whatever new platform comes out, you'll
likely get a seat at the table and be hated by all your peers who are 'real
programmers'.

I don't mind a bit of disdain, but I clearly <3 js.

------
bikamonki
Neither, bots will develop apps in 10 years. Now, assuming AI does not take
over our jobs, I'd say it depends on the kind of apps that you develop. The
current state of technology allows for web apps to perform very close to
native and browsers are ever more willing to let web apps access phone
features. However, for some apps like games, image manipulation, etc. native
code is a better choice. I am a specialized web developer, I do mostly
'business-type apps' and so far I have managed to run in the phone's browser
or on top of a layer like Apache Cordova.

~~~
esob3
So from the sounds of it your vote is:

Web.

And your reasoning is:

Web could replace native Obj-C / Java, on mobile platforms, in the future.

My response is:

That makes sense. I don't have much experience building a mobile app with web
technology, but it seems to be more and more common, especially in the startup
space (because you can kill 2 birds with one stone).

~~~
bikamonki
You kill 4 birds not 2. Your clients/employer will appreciate a single
codebase that costs much less, both to develop and maintain.

There are drawbacks though. For instance, Android is very limited when
handling images taken from a camera activity which was called by a browser, in
fact this is a documented still unsolved bug. But Google itself is promoting
the concept of 'progressive web apps' so one would safely assume that the end
goal is to allow web apps to be as feature rich (and as performant) as native
apps.

------
moshiasri
well for the start, no body can predict what will be more valuable in 10 years
down the road, and who ever says so, it is just mere speculation.

The best road to take for you will be the one which is paying you more right
now, personally me being a CS graduate degree and a CFA, i would advise you to
weight in scale what will be more full filling to your needs at present.

the best course of action will be the web instead the ios, and the argument
here is pretty simple one, first there was ios, then there was android, then
came windows, what do you know will come next, but web has been the web, no
matter if the bots make it or the AI takes it over, all of those things will
also require skilled and smart people to make all the things happen.

We do not yet live in the terminator age (as i like to call it). yes the
technology has advanced, and the advancing of it also need specially skilled
smart people. iOS or android are just a piece of the pie, why settle for it,
when you can have the bigger bite or even the whole.

------
nness
A. Do you work with either at the moment? B. Will your current employment give
you the opportunity to switch?

~~~
esob3
A. I currently professionally do iOS. But, I also work on side projects using
modern web technologies (React, Angular, CSS3, HTML5, etc.)


Dental demands of older people living at home in Hertfordshire: changes over a 10-year period.
A random sample of 300 subjects aged 65 and over, living at home in Hertfordshire, was interviewed to establish whether any changes in their oral status had arisen since a previous survey 10 years earlier. Results show that considerable improvements have taken place. The level of perceived need has fallen by about one-third, there has been a large fall in the proportion who are edentulous and a marked increase in the percentage of those with 10 or more natural teeth. Those with dentures are replacing them more frequently.


Hi,
On 2014/02/26 12:28 , Guillaume Sachot wrote:
> I also thought of that, but I cannot adapt a datacenter network only for one probe :)
An easy way out for both sides would be for you to host two probes, one
of each VLAN.
At the moment probes are not set up for multiple interfaces, and we have
no clear idea what it would require to make that work. (And even if we
did, it would probably take a while before it is released)
Philip

The RIPE NCC uses cookies. Some of these cookies may have been set already. More information about our cookies can be found in our privacypolicy. You can accept our cookies either by clicking here or by continuing to use the site.


El Feidja National Park

El Feidja National Park is located in Northwest Tunisia and has an area of . It is home to many animals, notably, Barbary stag, African golden wolf, and Barbary boar.

References

UNESCO

Category:National parks of Tunisia
Category:Protected areas established in 1980


package org.javacs;

import java.io.IOException;
import java.net.URI;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;
import java.util.*;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import javax.lang.model.element.TypeElement;

// Translated from https://golang.org/src/strings/search.go

// Search efficiently finds strings in a source text. It's implemented
// using the Boyer-Moore string search algorithm:
// https://en.wikipedia.org/wiki/Boyer-Moore_string_search_algorithm
// https://www.cs.utexas.edu/~moore/publications/fstrpos.pdf (note: this aged
// document uses 1-based indexing)
public class StringSearch {
    // pattern is the string that we are searching for in the text.
    private final byte[] pattern;

    // badCharSkip[b] contains the distance between the last byte of pattern
    // and the rightmost occurrence of b in pattern. If b is not in pattern,
    // badCharSkip[b] is len(pattern).
    //
    // Whenever a mismatch is found with byte b in the text, we can safely
    // shift the matching frame at least badCharSkip[b] until the next time
    // the matching char could be in alignment.
    // TODO 256 is not coloring
    private final int[] badCharSkip = new int[256];

    // goodSuffixSkip[i] defines how far we can shift the matching frame given
    // that the suffix pattern[i+1:] matches, but the byte pattern[i] does
    // not. There are two cases to consider:
    //
    // 1. The matched suffix occurs elsewhere in pattern (with a different
    // byte preceding it that we might possibly match). In this case, we can
    // shift the matching frame to align with the next suffix chunk. For
    // example, the pattern "mississi" has the suffix "issi" next occurring
    // (in right-to-left order) at index 1, so goodSuffixSkip[3] ==
    // shift+len(suffix) == 3+4 == 7.
    //
    // 2. If the matched suffix does not occur elsewhere in pattern, then the
    // matching frame may share part of its prefix with the end of the
    // matching suffix. In this case, goodSuffixSkip[i] will contain how far
    // to shift the frame to align this portion of the prefix to the
    // suffix. For example, in the pattern "abcxxxabc", when the first
    // mismatch from the back is found to be in position 3, the matching
    // suffix "xxabc" is not found elsewhere in the pattern. However, its
    // rightmost "abc" (at position 6) is a prefix of the whole pattern, so
    // goodSuffixSkip[3] == shift+len(suffix) == 6+5 == 11.
    private final int[] goodSuffixSkip;

    StringSearch(String patternSting) {
        this.pattern = patternSting.getBytes();
        this.goodSuffixSkip = new int[pattern.length];

        // last is the index of the last character in the pattern.
        var last = pattern.length - 1;

        // Build bad character table.
        // Bytes not in the pattern can skip one pattern's length.
        Arrays.fill(badCharSkip, pattern.length);
        // The loop condition is < instead of <= so that the last byte does not
        // have a zero distance to itself. Finding this byte out of place implies
        // that it is not in the last position.
        for (var i = 0; i < last; i++) {
            badCharSkip[pattern[i] + 128] = last - i;
        }

        // Build good suffix table.
        // First pass: set each value to the next index which starts a prefix of
        // pattern.
        var lastPrefix = last;
        for (var i = last; i >= 0; i--) {
            if (hasPrefix(pattern, new Slice(pattern, i + 1))) lastPrefix = i + 1;
            // lastPrefix is the shift, and (last-i) is len(suffix).
            goodSuffixSkip[i] = lastPrefix + last - i;
        }
        // Second pass: find repeats of pattern's suffix starting from the front.
        for (var i = 0; i < last; i++) {
            var lenSuffix = longestCommonSuffix(pattern, new Slice(pattern, 1, i + 1));
            if (pattern[i - lenSuffix] != pattern[last - lenSuffix]) {
                // (last-i) is the shift, and lenSuffix is len(suffix).
                goodSuffixSkip[last - lenSuffix] = lenSuffix + last - i;
            }
        }
    }

    int next(String text) {
        return next(text.getBytes());
    }

    private int next(byte[] text) {
        return next(ByteBuffer.wrap(text));
    }

    private int next(ByteBuffer text) {
        return next(text, 0);
    }

    private int next(ByteBuffer text, int startingAfter) {
        var i = startingAfter + pattern.length - 1;
        while (i < text.limit()) {
            // Compare backwards from the end until the first unmatching character.
            var j = pattern.length - 1;
            while (j >= 0 && text.get(i) == pattern[j]) {
                i--;
                j--;
            }
            if (j < 0) {
                return i + 1; // match
            }
            i += Math.max(badCharSkip[text.get(i) + 128], goodSuffixSkip[j]);
        }
        return -1;
    }

    private boolean isWordChar(byte b) {
        char c = (char) (b + 128);
        return Character.isAlphabetic(c) || Character.isDigit(c) || c == '$' || c == '_';
    }

    private boolean startsWord(ByteBuffer text, int offset) {
        if (offset == 0) return true;
        return !isWordChar(text.get(offset - 1));
    }

    private boolean endsWord(ByteBuffer text, int offset) {
        if (offset + 1 >= text.limit()) return true;
        return !isWordChar(text.get(offset + 1));
    }

    private boolean isWord(ByteBuffer text, int offset) {
        return startsWord(text, offset) && endsWord(text, offset + pattern.length - 1);
    }

    int nextWord(String text) {
        return nextWord(text.getBytes());
    }

    private int nextWord(byte[] text) {
        return nextWord(ByteBuffer.wrap(text));
    }

    private int nextWord(ByteBuffer text) {
        var i = 0;
        while (true) {
            i = next(text, i);
            if (i == -1) return -1;
            if (isWord(text, i)) return i;
            i++;
        }
    }

    private boolean hasPrefix(byte[] s, Slice prefix) {
        for (int i = 0; i < prefix.length(); i++) {
            if (s[i] != prefix.get(i)) return false;
        }
        return true;
    }

    private int longestCommonSuffix(byte[] a, Slice b) {
        int i = 0;
        for (; i < a.length && i < b.length(); i++) {
            if (a[a.length - 1 - i] != b.get(b.length() - 1 - i)) {
                break;
            }
        }
        return i;
    }

    private static class Slice {
        private final byte[] target;
        private int from, until;

        int length() {
            return until - from;
        }

        byte get(int i) {
            return target[from + i];
        }

        Slice(byte[] target, int from) {
            this(target, from, target.length);
        }

        Slice(byte[] target, int from, int until) {
            this.target = target;
            this.from = from;
            this.until = until;
        }
    }

    private static final ByteBuffer SEARCH_BUFFER = ByteBuffer.allocateDirect(1024 * 1024);

    // TODO cache the progress made by searching shorter queries
    static boolean containsWordMatching(Path java, String query) {
        if (FileStore.activeDocuments().contains(java)) {
            var text = FileStore.contents(java);
            return matchesTitleCase(text, query);
        }
        try (var channel = FileChannel.open(java)) {
            // Read up to 1 MB of data from file
            var limit = Math.min((int) channel.size(), SEARCH_BUFFER.capacity());
            SEARCH_BUFFER.position(0);
            SEARCH_BUFFER.limit(limit);
            channel.read(SEARCH_BUFFER);
            SEARCH_BUFFER.position(0);
            var chars = StandardCharsets.UTF_8.decode(SEARCH_BUFFER);
            return matchesTitleCase(chars, query);
        } catch (NoSuchFileException e) {
            LOG.warning(e.getMessage());
            return false;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    static boolean containsWord(Path java, String query) {
        var search = new StringSearch(query);
        if (FileStore.activeDocuments().contains(java)) {
            var text = FileStore.contents(java).getBytes();
            return search.nextWord(text) != -1;
        }
        try (var channel = FileChannel.open(java)) {
            // Read up to 1 MB of data from file
            var limit = Math.min((int) channel.size(), SEARCH_BUFFER.capacity());
            SEARCH_BUFFER.position(0);
            SEARCH_BUFFER.limit(limit);
            channel.read(SEARCH_BUFFER);
            SEARCH_BUFFER.position(0);
            return search.nextWord(SEARCH_BUFFER) != -1;
        } catch (NoSuchFileException e) {
            LOG.warning(e.getMessage());
            return false;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private static boolean containsString(Path java, String query) {
        var search = new StringSearch(query);
        if (FileStore.activeDocuments().contains(java)) {
            var text = FileStore.contents(java).getBytes();
            return search.next(text) != -1;
        }
        try (var channel = FileChannel.open(java)) {
            // Read up to 1 MB of data from file
            var limit = Math.min((int) channel.size(), SEARCH_BUFFER.capacity());
            SEARCH_BUFFER.position(0);
            SEARCH_BUFFER.limit(limit);
            channel.read(SEARCH_BUFFER);
            SEARCH_BUFFER.position(0);
            return search.next(SEARCH_BUFFER) != -1;
        } catch (NoSuchFileException e) {
            LOG.warning(e.getMessage());
            return false;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * Check if `candidate` contains all the characters of `find`, in-order, case-insensitive. Matches can be
     * discontinuous if the letters of `find` match the first letters of words in `candidate` For example, fb matches
     * FooBar, but it doesn't match Foobar (exposed for testing)
     */
    public static boolean matchesTitleCase(CharSequence candidate, String find) {
        Objects.requireNonNull(candidate, "candidate is null");
        int i = 0;

        tokenLoop:
        while (i < candidate.length()) {
            i = startOfToken(candidate, i);

            for (char f : find.toCharArray()) {
                // If we have reached the end of candidate without matching all of find, fail
                if (i >= candidate.length()) return false;
                // If the next character in candidate matches, advance i
                else if (Character.toLowerCase(f) == Character.toLowerCase(candidate.charAt(i))) i++;
                else {
                    // Find the start of the next word
                    while (i < candidate.length()) {
                        char c = candidate.charAt(i);
                        // If the next character is not a word, try again with the next token
                        if (!isWordChar(c)) continue tokenLoop;
                        // TODO match things like fb ~ foo_bar
                        boolean isStartOfWord = Character.isUpperCase(c);
                        boolean isMatch = Character.toLowerCase(f) == Character.toLowerCase(c);
                        if (isStartOfWord && isMatch) {
                            i++;
                            break;
                        } else i++;
                    }
                    if (i >= candidate.length()) return false;
                }
            }
            // All of find was matched!
            return true;
        }
        return false;
    }

    private static int startOfToken(CharSequence candidate, int offset) {
        while (offset < candidate.length()) {
            char c = candidate.charAt(offset);
            if (isWordChar(c)) break;
            offset++;
        }
        return offset;
    }

    private static boolean isWordChar(char c) {
        return Character.isAlphabetic(c) || Character.isDigit(c) || c == '_' || c == '$';
    }

    static boolean containsType(Path file, TypeElement el) {
        switch (el.getKind()) {
            case INTERFACE:
                return containsInterface(file, el.getSimpleName().toString());
            case CLASS:
                return containsClass(file, el.getSimpleName().toString());
            default:
                throw new RuntimeException("Don't know what to do with " + el.getKind());
        }
    }

    private static Cache<String, Boolean> cacheContainsClass = new Cache<>();

    private static boolean containsClass(Path file, String simpleName) {
        if (cacheContainsClass.needs(file, simpleName)) {
            cacheContainsClass.load(file, simpleName, containsString(file, "class " + simpleName));
            // TODO verify this by actually parsing the file
        }
        return cacheContainsClass.get(file, simpleName);
    }

    private static Cache<String, Boolean> cacheContainsInterface = new Cache<>();

    private static boolean containsInterface(Path file, String simpleName) {
        if (cacheContainsInterface.needs(file, simpleName)) {
            cacheContainsInterface.load(file, simpleName, containsString(file, "interface " + simpleName));
            // TODO verify this by actually parsing the file
        }
        return cacheContainsInterface.get(file, simpleName);
    }

    // TODO this doesn't work for inner classes, eliminate
    static String mostName(String name) {
        var lastDot = name.lastIndexOf('.');
        return lastDot == -1 ? "" : name.substring(0, lastDot);
    }

    // TODO this doesn't work for inner classes, eliminate
    static String lastName(String name) {
        int i = name.lastIndexOf('.');
        if (i == -1) return name;
        else return name.substring(i + 1);
    }

    static String fileName(URI uri) {
        var parts = uri.toString().split("/");
        if (parts.length == 0) return "";
        return parts[parts.length - 1];
    }

    static String packageName(Path file) {
        var packagePattern = Pattern.compile("^package +(.*);");
        var startOfClass = Pattern.compile("^[\\w ]*class +\\w+");
        try (var lines = FileStore.lines(file)) {
            for (var line = lines.readLine(); line != null; line = lines.readLine()) {
                if (startOfClass.matcher(line).find()) return "";
                var matchPackage = packagePattern.matcher(line);
                if (matchPackage.matches()) {
                    var id = matchPackage.group(1);
                    return id;
                }
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        // TODO fall back on parsing file
        return "";
    }

    public static boolean matchesPartialName(CharSequence candidate, CharSequence partialName) {
        if (candidate.length() < partialName.length()) return false;
        for (int i = 0; i < partialName.length(); i++) {
            if (candidate.charAt(i) != partialName.charAt(i)) return false;
        }
        return true;
    }

    private static final Logger LOG = Logger.getLogger("main");
}


THE JINXED run of Collingwood veteran Daniel Wells continues, with the brilliant midfielder expected to be sidelined for up to three months with a left knee injury.

Wells landed heavily on the knee during the Pies' narrow win over Sydney at the SCG on Friday night, damaging both the posterior and medial ligaments.

INJURY WRAP Dons sweat on stars' hamstrings, worry for Port star

Amid fears he had sustained a career-ending injury, the 34-year-old consulted renowned orthopaedic surgeon Julian Feller on Sunday, after which it was decided Wells would forego surgery in the hope of making a late-season return.

The Magpies said Wells' knee would be placed in a brace for some weeks before making gradual return to strength and conditioning work.

"Surgery was an option but this course firstly allows Daniel to make a full recovery and, secondly, keeps alive the possibility of a return to playing in 2019," Collingwood football manager Geoff Walsh said.

"The recovery has to be strong and a priority, which it will be, but Daniel has the prospect of playing again to aim for."

Wells had been playing his first AFL game in 11 months, after overcoming a long-term foot injury, when disaster struck in the third quarter against the Swans.

The 258-gamer had earlier showcased his class by slotting three of the Pies' first four goals.

Daniel Wells does his best work around a goal square!

Three goals, eight possessions. #AFLSwansPies pic.twitter.com/YcMTDOLyLV — AFL (@AFL) May 24, 2019

A dual best and fairest winner with North Melbourne, Wells has played just 15 games for Collingwood since joining the club at the end of 2016. He is in the final year of a three-year contract.

Find Road to the Draft on Apple Podcasts, Google Podcasts and Spotify.