[Biomechanical basis for a combined method of repositioning fractures and fracture-dislocations of the lower thoracic and lumbar vertebrae].
On the basis of data of model experiments and results of the treatment of 53 patients the authors recommend a combined technique of the treatment of severe fractures and dislocation fractures (a one-step reposition and subsequent extension of the involved portion). Favorable immediate and late results were obtained.


962 F.2d 70
Bruce D. WELLMAN, Petitioner, Appellant,v.STATE OF MAINE, Respondent, Appellee.
No. 91-1944.
United States Court of Appeals,First Circuit.
Heard Jan. 6, 1992.Decided Feb. 26, 1992.

David P. Silk with whom Curtis Thaxter Stevens Broder & Micoleau was on brief, Portland, Me., for petitioner, appellant.
Joseph A. Wannemacher, Asst. Atty. Gen., Crim. Div., with whom Michael E. Carpenter, Atty. Gen., was on brief, for respondent, appellee.
Before BREYER, Chief Judge, BOWNES, Senior Circuit Judge, and SELYA, Circuit Judge.
BOWNES, Senior Circuit Judge.

1
Petitioner Bruce D. Wellman appeals the denial of his 28 U.S.C. § 2254 petition for habeas corpus.   The main issue is whether the State of Maine violated petitioner's constitutional rights by eliminating pretrial detention time as a credit against his sentence which it had previously granted him.   For the reasons that follow, we find that there was no constitutional violation and affirm the judgment below.

I. THE FACTS

2
Petitioner was indicted in Cumberland County, Maine, on twenty-four counts of robbery, burglary, and theft.   He was also indicted on ten counts of robbery, burglary, and theft in Knox, Lincoln, and Sagadahoc counties.   At the time of his indictment, petitioner was serving a sentence in New Hampshire for being an accomplice to burglary.   He was brought from New Hampshire to Maine and confined in the Cumberland County jail from May 23, 1985, to November 20, 1986, pending disposition of the Maine indictments.   The confinement in the Cumberland County jail was in service of the New Hampshire sentence, pursuant to the Interstate Compact on Detainers, Me.Rev.Stat. Ann. tit. 34-A, §§ 9601-9609 (West 1988).   During his pretrial detention in Maine, petitioner's New Hampshire sentence was reduced as a result of a successful appeal and was terminated on November 20, 1986.   Petitioner remained incarcerated in Maine on the pending Maine charges.

3
After a mistrial was declared in the trial of some of the counts, petitioner entered into a plea agreement covering the thirty-four counts of burglary, theft, and robbery.   He pled guilty to all counts on September 26, 1986.   Petitioner was sentenced on April 8, 1987, to twenty years imprisonment with all but nine years suspended and three years probation.   Prior to the sentencing, the Cumberland County District Attorney provided the sentencing judge with a formal notice stating that petitioner had been detained in Maine under the Interstate Compact on Detainers for 686 days.   This reflected the period from May 23, 1985, the date of petitioner's removal from New Hampshire to Maine, to the date of sentencing, April 8, 1987.   At the sentencing petitioner was given a pretrial detention credit for the full 686 days.

4
After petitioner had commenced a post-conviction challenge to the sentence,1 the Attorney General for Maine realized that under Maine law petitioner was not entitled to any pretrial detention credit for time served on his New Hampshire sentence.   Me.Rev.Stat. Ann. tit. 17-A, § 1253(2) (West 1991).   The Attorney General informed the Maine State Prison Classification Department of the pertinent statute and directed that it recalculate petitioner's sentence.   As a result, petitioner's release date was set back 546 days, the period from his removal to Maine, May 23, 1985, to the end of his New Hampshire sentence, November 20, 1986.   Petitioner was credited with the 140 pretrial detention days on the Maine charges.

5
Petitioner challenges the reduction in pretrial detention credits on the grounds that Maine breached its plea agreement with him and that his guilty pleas were thus rendered involuntary.   Petitioner also attacks his sentence on the ground that Maine had misinformed him about the particulars of a plea agreement between the state and another defendant, John Bedard, who became one of the key prosecution witnesses.

II. PROCEDURAL HISTORY

6
Petitioner mounted a post-conviction challenge to the elimination of 546 days of detention time credit in the Maine Superior Court.   In April of 1990 he was granted leave to withdraw his guilty plea by the Superior Court of Maine for Cumberland County.   The court found that while petitioner had not proven "that an agreement [regarding time spent in pretrial detention] had been reached but not carried out," he had been convincing that "he and his lead counsel expected that he [would] get the full 686 days of credit."   Based upon this "unrealized expectation" the court found that the petitioner's "pleas were not voluntary under either a subjective or objective test."   The issue involving Bedard's plea agreement was not reached.

7
The Supreme Judicial Court of Maine reversed.  Wellman v. State of Maine, 588 A.2d 1178 (Me.1991).   It upheld the finding of the superior court that there had been no breach of a plea agreement, stating that "credit for time served was not an explicit part of the plea agreement."  Id. at 1181.   Relying on United States v. Bouthot, 878 F.2d 1506, 1511-12 (1st Cir.1989), it drew a distinction between the direct and collateral consequences of a guilty plea:

8
M.R.Crim.P. 11 requires the court, prior to acceptance of a guilty plea, to insure that the plea is made knowingly, that the plea is voluntary and that there is a factual basis for the charge.   The court fully complied with the requirements of Rule 11 at the time Wellman entered his guilty pleas.   The court informed Wellman of the direct sentencing consequences of his pleas and later imposed a sentence consistent with the plea agreement.   There is no requirement under Rule 11 that the court inform the defendant of each and every collateral consequence of his plea and the resulting sentence, such as where he is to be incarcerated, what good time credits he may be entitled to earn, or to what pretrial detention credit he may be entitled.

9
Id. at 1180-81 (footnote omitted).   The court held:

10
The Superior Court erred in concluding that Wellman's otherwise voluntary pleas were made involuntary by his subjective misunderstanding as to his entitlement to credit for pretrial detention in Maine, when that entitlement was not part of the plea agreement and was not induced by misrepresentation.

11
Id. at 1181.

12
Petitioner then brought this petition for habeas corpus.   The district court, in a well-reasoned opinion, denied the petition.  769 F.Supp. 21 (1991).   It found that the record supported the conclusion of the superior court, affirmed by the Supreme Judicial Court, "that Petitioner did not satisfy his burden of establishing that the plea agreement, or an agreement collateral to the plea agreement, bound the state to provide Petitioner with a specific number of credited days."  Id. at 23.   We agree.

13
The district court, however, parted company with the Maine court on the direct versus collateral consequences of a guilty plea.   It found that this distinction has little relevance "when the state has provided a defendant with inaccurate information."  Id.  The district court pointed out that misinformation "rising to the level of a misrepresentation may be a constitutional infirmity even when it relates to a collateral consequence of the defendant's guilty plea."  Id.  The district court found that "this case involves misinformation provided by the state rather than the absence of collateral information."  Id. at 23-24.   The court then went on to rule that petitioner, in order to prevail, had to show that he had suffered prejudice as a result of the state's providing incorrect information but had failed to do so.  Id. at 24.   The district court, for the same reason--lack of prejudice--dismissed petitioner's second claim based on the state's failure to inform him of the details of Bedard's plea agreement.

III. ANALYSIS

14
A plea is immune from collateral attack in an action for habeas corpus if it is both counseled and voluntary.  Mabry v. Johnson, 467 U.S. 504, 508, 104 S.Ct. 2543, 2546, 81 L.Ed.2d 437 (1984) (footnote omitted).   Petitioner makes no claim that he was without counsel or that he was not counseled competently before deciding to plead guilty.   Instead, petitioner rests his case entirely upon the contention that his plea was rendered involuntary by the retraction of the previously awarded 546 days of credit against his sentence.

15
The voluntariness of a guilty plea "for purposes of the Federal Constitution is a question of federal law."  Marshall v. Lonberger, 459 U.S. 422, 431, 103 S.Ct. 843, 849, 74 L.Ed.2d 646 (1983).   A state court's factual findings enjoy a presumption of correctness.  Id. at 431-32, 103 S.Ct. at 849;  Nelson v. Callahan, 721 F.2d 397, 399 (1st Cir.1983) (citing Sumner v. Mata, 455 U.S. 591, 591-92, 102 S.Ct. 1303, 1303-04, 71 L.Ed.2d 480 (1982)).   A mixed question of fact and law, like a question of law, is given de novo review on appeal.  Sumner, 455 U.S. at 597, 102 S.Ct. at 1306 ("Federal court may give different weight to the facts as found by the state court and may reach a different conclusion in light of the legal standard").

16
It is beyond cavil that the plea agreement did not contain or embody petitioner's expectation that he would be given credit for the entire pretrial detention period from his return to Maine through final disposition of the Maine charges.   This case, therefore, does not implicate the holding of Santobello v. New York, 404 U.S. 257, 262, 92 S.Ct. 495, 499, 30 L.Ed.2d 427 (1971), that "when a plea rests in any significant degree on a promise or agreement of the prosecutor, so that it can be said to be part of the inducement or consideration, such promise must be fulfilled."

17
In the absence of an explicit plea agreement, a court must distinguish between the situation where a prosecutor omits information, and where he provides inaccurate or misleading information, in securing guilty pleas.   See United States v. Bouthot, 878 F.2d 1506, 1512 (1st Cir.1989);  Cepulonis v. Ponte, 699 F.2d 573, 577 (1st Cir.1983).   We think this is a situation where a prosecutor inadvertently omitted information.   The prosecutor correctly informed the sentencing judge that petitioner had been held in pretrial detention for 686 days.   He failed, as did both defense counsel and the sentencing judge, to take into account that under Maine law 546 of those days could not be credited against petitioner's sentence.   There was no deliberate misrepresentation made by the prosecutor.   Ignorance of the law may not be an excuse but it does not amount to misrepresentation.

18
But even if we view the failure to take the statute into consideration as misinformation, which is more vulnerable to constitutional challenge than lack of information, Cepulonis, 699 F.2d at 577, petitioner must show that, but for the misinformation or omission, he would not have accepted the offer by pleading guilty, and instead would have chosen to go to trial.   As we said in Cepulonis:  "[A] defendant seeking to set aside a guilty plea must at the very least show that correct information would have made a difference in his decision to plead guilty."  699 F.2d at 577 (footnote omitted);  see also McAleney v. United States, 539 F.2d 282, 284 (1st Cir.1976) ("if his guilty plea was in fact induced by such representation, we agree ... that relief is in order" (emphasis added));  United States v. Pallotta, 433 F.2d 594, 595 (1st Cir.1970) ("Even if no 'working agreement' existed in fact, the voluntariness of defendant's guilty plea would be seriously in question if it was induced by representations...."  (Emphasis added)).

19
Thus, to prevail petitioner must allege and prove that he was prejudiced by the belief that he would be awarded the full 684 days of credit.   As noted by the district court, "[p]etitioner's only argument in support of his claim of prejudice was:  'What could be more prejudicial than entering into a plea agreement, receiving what one expects to receive, and then having a significant part of what one received taken away unilaterally five months after sentencing.  [sic]' " Wellman, 769 F.Supp. at 24.   Petitioner's statement is barely an allegation of prejudice, let alone proof of it.   Assuming arguendo that petitioner has sufficiently alleged prejudice, he has certainly made no attempt to prove it.

20
Petitioner was charged with thirty-four separate counts of burglary, theft, and robbery, for which the total maximum sentences could have exceeded 225 years.   Petitioner pled guilty to all thirty-four counts and received a twenty year sentence, with all but nine years suspended, plus three years of probation.   We need not speculate as to whether petitioner's actual sentence, if he had been found guilty on all counts, would have approached 225 years.   We only observe that it is difficult to see how, if the plea bargain as described above was acceptable to petitioner, that the same bargain, with the addition of 546 days, approximately eighteen months, would have been unacceptable and would have deterred him from pleading guilty.

21
Petitioner also claims that the state withheld the details of, provided inaccurate details of, or failed to provide details of the most recent version of the plea agreement between the State and John Bedard, another defendant, who had been indicted on essentially the same charges as petitioner.   Petitioner again fails to demonstrate how the unavailability of such information prejudiced him.   In Bouthot, we held that information regarding an ongoing federal investigation of the defendant, which was not disclosed to him while he was considering whether to accept a state plea offer, could not, without more, have rendered the defendant's guilty plea involuntary.  878 F.2d at 1512.   Accordingly, we fail to see how withholding the plea arrangements of another, without more, can do so.

22
And, as with the retracted pretrial detention time, petitioner has made no attempt to show how he was prejudiced.   The Maine Supreme Judicial Court addressed directly petitioner's claim as to the plea agreement of the co-defendant.   It held:  "Wellman has not alleged a sufficient nexus between his plea and that of the co-defendant to make the co-defendant's case relevant to Wellman's."  Wellman, 588 A.2d at 1179 n. 5.   We agree.

CONCLUSION

23
The judgment of the district court is affirmed.

1
 Petitioner had joined pending actions by other inmates seeking to determine whether inmates were entitled to good time credits for pretrial detention time


before i start this video i just want to
say this
you should never go to the dark web
without having a vpn
what is a vpn why do i need one? so in
this video i'll be telling you that
and many other things so make sure you
watch this video upto the end
music playing
hello guys and welcome to my youtube
channel and if you're interested in
youtube tips davinci tutorials and also
some tech related stuff
make sure you subscribe for more videos
like this every thursday so
without further ado let's get straight
to the video so what are the three
levels of the internet or
what are the three levels of the world
wide web so
they are the surface web the deep web
the dark web
so after stating all those levels of the
web
let us now go deep into them and
understand
more so what is the surface web in
detail it's a portion of the world wide
web
which is controlled by a server and also
it has a search engine it
accumulates to 10 percent of the
internet which is readily available
if we can give an example google, chrome,
youtube, facebook, blog posts
wikipedia and every so google is a
search engine
youtube is a search engine facebook is a
search engine
and yeah so it's a readily available to
anyone else in this world
the deep web or the invisible web is
actually the opposite
of the surface web because this is where
the contents are not indexed by a
standard
web search engine
music playing
so the last one which is the dark web
and
in the beginning of this video i told
you you should
never go to the dark web without having
a vpn a vpn is a virtual private network
which extends
to a private network across a public
network and enables users
to send and receive data across any
shared network or public network
in short a vpn makes you anonymous
anonymous means
no one will know you yeah you'll be
anonymous to everyone because
a vpn gives you another ip address
and when you don't have your own rp
address no one
i mean no one can trace you anyone will
know that you're from this country
no one will know that you are online at
this particular time so
that's the best thing about a vpn the
dark web
this is something everyone has been
waiting for so the dark web
is not like other levels of the web dark
web
is just like the deep web but the dark
web
is illegal you cannot such the dark web
you cannot you need to have the tor
browser
you can access the dark web when you
have the to tor browser
so as i said it's just the same as the
deep web
but the dark web is illegal so
having a vpn is great because you'll not
leave traces
two the dark web is illegal what are you
doing in the dark web
the dark web is not like the surface web it
operates by having
links to specific websites that is how
you can get access to the dark web i am
going to give some really creepy
examples of what the dark web really holds
music playing
so in the comments section you can tell
me your views and your thoughts about
this video also make sure you give this
video a thumbs up and
subscribe to my channel for more videos
like this every thursday
music playing
in the comment section you an tell me if you have ever been in the dark web (giggles)
uhmm...ya!
music playing


Q:

Saving Multiple Data Entries into CoreData

I'm trying to populate my entity in CoreData for a new app.  I made a new function named initializeDB() which sets up new values for the entity and then calls the save() function (within a do try block of course).  However it turns out that only the last entity is actually saved. I'm curious as to know why this is the case.  I know that only the last one is saved since I do a fetch and only see that the last one is returned.
        date = myTimeZoneDateFormatter1.dateFromString("2016-02-03")!
        entity.setValue("3.1", forKey: "distanceOfRun")
        entity.setValue(date, forKey: "dateOfRun")
        do{
            try moc.save()
            print("save was successful")
        }
        catch{

            print("Entry was not saved")        }

        date = myTimeZoneDateFormatter1.dateFromString("2016-02-05")!
        entity.setValue("3.1", forKey: "distanceOfRun")
        entity.setValue(date, forKey: "dateOfRun")
        do{
            try moc.save()
            print("save was successful")
        }
        catch{

            print("Entry was not saved")        }

        date = myTimeZoneDateFormatter1.dateFromString("2016-02-07")!
        entity.setValue("3", forKey: "distanceOfRun")
        entity.setValue(date, forKey: "dateOfRun")
        do{
            try moc.save()
            print("save was successful")
        }
        catch{

            print("Entry was not saved")        }

Any help in trying to understand this would make me very appreciative.

A:

That's because you are re-saving the same object attributes each time you make save(). You should create a new entity for each object with this method:
let newobject = NSEntityDescription.entityForName("my_entity", inManagedObjectContext: context)
date = myTimeZoneDateFormatter1.dateFromString("2016-02-03")!
newobject.setValue("3.1", forKey: "distanceOfRun")
newobject.setValue(date, forKey: "dateOfRun")

And then save the context again.


Nature Cure eBook

(19) Is Nature Cure in Conformity with the Constructive
Principle in Nature?

Nature Cure is in conformity with the constructive
principle in Nature because:

It teaches that the primary cause of weakness and
disease is disobedience to the laws of Nature.
It arouses the individual to the study of natural
laws and demonstrates the necessity of strict compliance
with these laws. It strengthens the consciousness
of personal responsibility of the individual for his
own status of health and for the hereditary conditions,
traits and tendencies of his off-spring. It encourages
personal effort and self-help. It adapts surroundings
and habits of life to natural laws. It assists
Nature’s cleansing and healing efforts by simple
natural means and methods of treatment which are in
no wise harmful or destructive to health and life,
and which are within the reach of everyone.

Chapter III

What Is Life?

In our study of the cause and character of disease
we must endeavor to begin at the beginning, and that
is with life itself, for the processes of health,
disease and cure are manifestations of that which
we call life, vitality, life elements, etc.

While endeavoring to fathom the mystery of life we
soon realize, however, that we are dealing with an
ultimate which no human mind is capable of solving
or explaining. We can study and understand life
only in its manifestations, not in its origin and real
essence.

There are two prevalent, but widely differing, conceptions
of the nature of life or vital force: the material
and the vital.

The former looks upon life or vital force with all
its physical, mental and psychical phenomena as manifestations
of the electric, magnetic and chemical activities
of the physical-material elements composing the human
organism. From this viewpoint, life is a sort
of spontaneous combustion, or, as one scientist expressed
it, a succession of fermentations.

This materialistic conception of life, however, has
already become obsolete among the more advanced biologists
as a result of the wonderful discoveries of modern
science, which are fast bridging the chasm between
the material and the spiritual realms of being.


How to add a dark mode to your React web app

We are currently living in a dark mode in everything era. Most apps nowadays come with a switch either at the navbar or just somewhere around its settings, that you just click and the screen goes dark. Some apps even come with dark mode as default, example Mixer, even Netflix has a dark mode by default.

Having a dark mode will really help in reducing the tiring of eyes caused by light modes and by the end of this article, you should be able to add dark mode to your Reactjs app in a few minutes.

Prerequisites

You should have a basic understanding of:

React concepts(life cycles)

CSS concepts, especially css variables

Javascript Document Object Model

Setup

Create a new directory that will house our React app.

$ mkdir simple_dark_theme_react_app && cd simple_dark_theme_react_app

Next, we will need the create-react-app CLI that will help set up a simple React app faster with zero webpack configs.

$ npx create-react-app .

Run our app

$ yarn start or npm start

It should automatically launch your browser, if not visit http://localhost:3000.

If you happen to face a fsevents is not a constructor visit this Github issues raised about it link

If that does not help, all I did was delete the lock file and the node_module folder and reinstalled the packages.


What can salad dressing tell us about cancer? Think oil and vinegar — ScienceDaily

Researchers led by St. Jude Children’s Research Hospital scientists have identified another way the process that causes oil to form droplets in water may contribute to solid tumors, such as prostate and breast cancer. The findings appear today in the journal Molecular Cell.

Researchers found evidence that mutations in the tumor suppressor gene SPOP contribute to cancer by disrupting a process called liquid-liquid phase separation. Liquid-liquid phase separation is seen often in nature and is the reason why oil and vinegar separate in salad dressing.

SPOP is the most frequently mutated gene in prostate cancer and is altered in other solid tumors. The SPOP protein is part of the cell’s protein-recycling machinery. SPOP binds unneeded or unwanted proteins so they can be chemically tagged for destruction. Mutations in SPOP were known to disrupt binding and lead to a buildup of cancer-promoting proteins in sensitive cells. St. Jude research suggests that is not the whole story.

“This study shows for the first time that tumor-suppressor function can be influenced by phase separation and that mutations in the tumor suppressor, in this case SPOP, disrupt phase separation,” said corresponding author Tanja Mittag, Ph.D., an associate member of the St. Jude Department of Structural Biology.

New chapter

The research comes amid growing interest among cell biologists in liquid-liquid phase separation and its role in cellular function, aging and disease, including cancer and neurodegenerative disorders.

Research published in the past five years indicates that cells rely on liquid-liquid phase separation to maintain their equilibrium under changing conditions. Evidence suggests the process works by concentrating or sequestering molecules in borderless compartments. The compartments, called membraneless organelles, are found throughout the cell. While many such compartments have been known for decades, Mittag said recent advances have expanded our understanding of their role in cellular organization and launched a new era in cell biology. “Some have called it biology 2.0,” she said.

Complicated story

Mittag and her colleagues were studying SPOP initially to better understand its role in the mechanism of protein degradation. “The story turned out to be more complicated,” she said. That’s because SPOP can recognize and bind molecules with multiple binding sites rather than one, a quality known as multi-valency. Those molecules included cancer-promoting proteins like DAXX and androgen receptor, which researchers used in this study.

Researchers showed that when the proteins were expressed together in cells in a laboratory dish, DAXX could trigger liquid-liquid phase separation with SPOP. That caused SPOP and DAXX to move from their location in separate membraneless organelles in the nucleus and rendezvous to form their own border-less compartment.

Enzyme activity

Investigators also reported that enzymatic activity occurred inside the newly formed membraneless organelle. The activity was an indication SPOP was fulfilling its role as a tumor suppressor and tagging DAXX for destruction. “The big question for the field has been what is going on inside these compartments,” said co-first author Joel Otero, Ph.D., of the St. Jude Structural Biology department. “This research showed the membraneless organelles are actually promoting a reaction by bringing together SPOP and its substrate, in this case DAXX, so the reaction can take place.”

Liquid-liquid phase separation did not occur when DAXX and mutant SPOP were expressed together in the laboratory. Instead of a shared membraneless organelle, mutant SPOP and DAXX remained isolated in separate compartments. Researchers also found fewer DAXX molecules were chemically tagged (ubiquitinated) for destruction. /p> The results were similar when mutant and normal SPOP were expressed with androgen receptor, another SPOP binding partner that is associated with cancer promotion./p>

Activity not just storage

“A lot of previous research has shown cells use membraneless organelles to sequester molecules until they are needed,” said first author Jill Bouchard, Ph.D., a St. Jude postdoctoral fellow in the Structural Biology department. “This study showed that activity also occurs inside membraneless organelles.” Bouchard explained that without phase separation the process for maintaining protein balance is disrupted. That allows substrate levels, in this case DAXX levels, to increase with potentially catastrophic results.


The Association of Consulting Engineers Malaysia (ACEM) invites qualified applicants for education sponsorship to pursue an undergraduate course in engineering at a local university recognized by the Board of Engineers, Malaysia.

Malaysia’s Green Building Index was introduced on 3 January 2009, at the Green Design Forum organized by the Pertubuhan Akitek Malaysia (PAM). A preview of the Green Building Index for Non-residential and Residential buildings were presented by Ir. Chen Thiam Leong and Ar. Chan Seong Aun respectively. These presentations are available for download at www.greenbuildingindex.org.

The ACEM Gold Award is a special award to recognise, honour and celebrate a member of ACEM, whether past or present, who has made significant contributions to the advancement and development of the engineering consultancy industry in the country. It is the highest Award that the Association can bestow upon an Engineer.


German Energy Storage Market to Reach £768m by 2021

According to a new report from GTM Research, The German Energy Storage Market: 2016-2021, Germany’s energy storage market will grow elevenfold in megawatt terms between 2015 and 2021 to reach an annual value of $1.03 billion.

Germany is already one of the world’s leading energy storage markets. At the end of 2015, Germany was home to 67 megawatts of energy storage (128 megawatt-hours) with a value of $169 million. Factors including the nation’s declining feed-in tariffs, high retail electricity rates and abundance of installed renewables make it an attractive market for the energy storage value proposition.

According to the report, retail electricity prices for residential customers in Germany have increased 47 percent since 2006 and are unlikely to decrease in the near future. However, Germany offers homeowners an incentive known as KfW 275 for energy storage systems paired with a new or existing solar installations; the incentive covered up to 30 percent of the system costs between 2013 and 2015, currently covers 22 percent, and steps down by 3 percent every half-year. GTM Research anticipates that these factors will continue to help the residential segment maintain its top position in Germany, constituting 49 percent of all megawatts installed in 2021.

“Germany already possesses one of the world’s largest residential energy storage markets,” said Brett Simon, GTM Research energy storage analyst and author of the report. “A number of variables, including declining feed-in tariffs, high electricity prices, and the KfW 275 program, are fueling substantial interest in residential energy storage for self-consumption.”

The report identifies three opportunities for utility-scale energy storage, Germany’s second-largest storage segment. In the near term, the primary reserve market offers significant opportunity, with six systems totaling 90 megawatts (140 megawatt-hours) expected to come on-line in 2016 and 2017. “Utility-scale systems have been deployed for primary reserve for the past few years, though significant deployments did not begin until 2016,” notes Simon. “However, the market will saturate by the end of 2017, and thus utility-scale systems will need to pursue other value streams.” Beginning in 2018, Germany’s secondary reserve market will pick up steam, and distribution deferral will become increasingly attractive.


INTRODUCTION {#sec1-1}
============

The burden of HIV remains high for patients and their families especially in resource-limited settings. It is estimated that 40 million people with human immunodeficiency virus (HIV) reside in resource-limited settings. Among them it is reported that 6 million require highly active anti retroviral therapy (HAART).\[[@ref1]\] In India alone, there are 2-3 million people infected with HIV.\[[@ref2]\] Ideally the WHO recommends regular combined immunological and virological monitoring for all HIV-infected patients.\[[@ref3]\] Analysis for viral loads and CD4 counts require not only sophisticated equipment, but in addition, highly skilled laboratory personnel,\[[@ref4]\] the overall cost being reported to be more than \$1,000 per person per year.\[[@ref5]\] This produces a colossal financial burden especially in a country like India. As a consequence, there are irregular follow-ups, delay in therapy, increased disease burden and a resultant alarming multi-drug resistance. To overcome these problems, in April 2002 WHO recommended the usage of total lymphocyte count (TLC) less than 1000 to 1200 cells/mm^3^ as indication to start HAART in resource-limited settings.\[[@ref6]\] There are however conflicting reports as to whether TLC is a reliable substitution for CD4 count. In 2013, WHO revised its guidelines and recommended therapy to patients with severe or advanced HIV clinical disease (WHO clinical stage 3 or 4) with a CD4 count ≤350 cells/mm^3^ regardless of the clinical stage in patients with CD4 count \>350 cells/mm^3^ and ≤500 cell/mm^3^.\[[@ref7]\] WHO also recommends the serial CD4 measurements to be more informative than individual value. This potentially raises a number of issues regarding affordability, availability and the technical expertise to perform the test.

In view of the high costs and limited availability of resources to estimate absolute CD4 counts, a study was initiated to assess the adequacy of using TLC as a suitable replacement for CD4 counts. In addition, we also studied the various values of TLC in an attempt to find the cutoff with the maximum sensitivity and specificity to predict a CD4 \<350 cells/mm^3^. The effect of addition of hemoglobin to the TLC cutoff was also studied.

MATERIALS AND METHODS {#sec1-2}
=====================

Patients {#sec2-1}
--------

This study was conducted in Kasturba Hospital, Manipal, Karnataka, which is a 2500 bedded tertiary care centre. Two hundred consenting HIV positive patients were recruited over a one year period. The patients were recruited consecutively from our Integrated Counselling and Testing Center (ICTC). All HIV positive cases at all stages of illness, above 18 yrs were included. Patients on HAART therapy, pregnant women, and pediatric age group were excluded. No other medications were being received by the patient. Patients with opportunistic infections or any inter-current infection likely to alter the lab parameters were excluded. Ethical approval was obtained from the institutional ethical board.

Blood of 5 ml was collected in a vacutainer with ethylenediaminetetraacetic acid (EDTA) using the standard precautions. Samples were collected between 9 am to 12 noon to prevent circadian variation and were analyzed simultaneously. Serum hemoglobin, total leucocyte count, and differential counts were obtained. CD4 counts were estimated using flow cytometry techniques. Total leukocyte count was measured using flow cytometry (EPICS × L, Beckman-Coulter, Fullerton, California, USA). Using the total and differential leucocyte counts, total lymphocyte count (TLC) was calculated.

Statistical analysis {#sec2-2}
--------------------

Percentages were used to describe categorical variables. Continuous variables were described using median and interquartile range. Statistical Package for the Social Sciences software (SPSS statistics version 17, Chicago IL, USA) was used to analyze the data. Both linear and logistic regressions were performed to determine whether TLC was a predictor of CD4 count. For the logistic regression analysis CD4 count was analyzed as a categorical variable (\<350 cells/mm^3^ and \>350 cells/mm^3^). Step-wise multiple regression with hemoglobin as an independent predictor of CD4 count was also performed. Pearson correlation coefficient was determined for age, hemoglobin, total leucocyte count and TLC against CD4 count.

Receiver operating characteristics (ROC) was used to determine the cut off for TLC representing the best sensitivity, specificity, positive predictive value (PPV) and negative predictive value (NPV) to predict CD4 count \<350cells/mm^3^. Cutoffs ranging between 1200 to 1800 cells/mm^3^ were calibrated and the area under the curve (AUC) was used to compare the sensitivity and specificity of each category.

RESULTS {#sec1-3}
=======

A total of 200 HIV positive individuals were included with a mean age of 39.5 ± 9 yrs. Out of the total, 162 (81%) of the patients recruited were males. CD4 counts \<350 cell/mm^3^ were seen in 80% of the subjects. The median CD4 count was 165.2 cells/mm^3^ { Interquantile range IQR = (87, 260)}; Median total leucocyte count was 5700 cells/mm^3^ {IQR = (3600, 7300)}; Median total lymphocyte count was 1138 cells/mm^3^ {IQR = (726, 1857)} as depicted in [Table 1](#T1){ref-type="table"}. [Table 2](#T2){ref-type="table"} shows correlation coefficient r between CD4 cell count and parameters TLC (r = 0.682, *P* \< 0.001) and hemoglobin (r = 0.369, *P* \< 0.001) to be significant. However, correlations with age (r = −0.157, *P* \< 0.154) and total leucocyte count (r = 0.166, *P* \< 0.146) were not statistically significant.

######

Median and Interquantile range for CD4, total leucocyte count and TLC

![](AJM-4-1-g001)

######

Correlation of CD4 count with other parameters

![](AJM-4-1-g002)

[Table 3](#T3){ref-type="table"} depicts the sensitivity, specificity, NPV and PPV of various TLC cutoff values to predict a CD4 count \<350 cells/mm^3^. TLC cutoff values from 1200 to 1800 cells/mm^3^ were compared to search for the value with highest sensitivity and specificity. With a cut off of 1200, the sensitivity was lower (73%) with a specificity of 100%, PPV of 100% and NPV of 51.4%. However, with a TLC of 1500 cells/mm^3^ the sensitivity was higher (82.1%) with 88.2% specificity, a 96.5% PPV and 44.4% NPV. Thus a TLC cutoff value of 1500 cells/mm^3^ best predicted CD4 count \<350 cells/mm^3^. The ROC curve for TLC of 1500 as a predictor for CD4 \<350 cells/mm^3^ showed the highest AUC of 0.8 \[[Figure 1](#F1){ref-type="fig"}\] as compared to the other cutoff values for TLC. The addition of hemoglobin to TLC of 1500 cells/mm^3^ did not increase either the sensitivity or specificity for predicting CD4 \<350 cells/mm.

######

Sensitivity and specificity of different cutoff values of TLC in predicting CD4 \<350 cells/mm^3^

![](AJM-4-1-g003)

![ROC curve with sensitivity and 1-specificity of TLC cutoff of 1500 cells/mm^3^ identifying a CD4 count of \<350 cells/mm^3^ (AUC = 0.8)](AJM-4-1-g004){#F1}

DISCUSSION {#sec1-4}
==========

In a resource-constrained setting like India with 2.4 million HIV-infected individuals, it becomes imperative to look for alternative diagnostic techniques, as the cost for CD4 count and plasma viral load is \$25 and \$100, respectively.\[[@ref5]\] This prohibits not only the timely initiation of HAART, but the serial monitoring of progression of disease and risk for opportunistic infection. As TLC is calculated from a much cheaper complete blood picture, it proves to be cost-effective in areas where the sophisticated and labour intensive flow-cytometry techniques for CD4 count are unavailable.

There have many conflicting reports regarding whether TLC is a suitable substitute for CD4 count with a quest for a better predictor. A study performed by Akinola *et al*.,\[[@ref8]\] in Nigeria using a WHO recommended cutoff for TLC \<1200 cells/mm^3^ did not find it to be a significant predictor for CD4 \<200 cells/mm^3^. With TLC \<1200 cells/mm^3^, 1 in 3 patients were deprived of the required treatment. However, study by Myamburi *et al*., reported the effectiveness of TLC as an inexpensive tool to monitor the progress of patients on HAART therapy.\[[@ref9]\] Studies by Spacek *et al*., and Lee *et al*., showed that the WHO recommended TLC \<1200 cells/mm^3^ with hemoglobin \<12gm/dL was in fact an effective predictor for CD4 \<200 cells/mm^3^.\[[@ref1][@ref10][@ref11][@ref12]\]

In our study, median levels for CD4 count and TLC were lower than similar studies conducted by Akanmu *et al*., and Akinola *et al*.,\[[@ref8][@ref13]\] \[[Table 1](#T1){ref-type="table"}\]. The correlation coefficient between CD4 count and TLC (r = 0.682, *P* \< 0.001) showed a significant positive correlation while correlation with age (r = −0.157, *P* \< 0.154) and total leucocyte count (r = 0.166, *P* \< 0.146) was poor. Similar results were obtained in other studies.\[[@ref7][@ref13]\] We also found a strong correlation between CD4 count and hemoglobin (r = 0.369, *P* \< 0.001), also seen in studies done by Spacek and his colleagues.\[[@ref10]\]

Various studies indicate different TLC cutoff to predict a CD4 \<200 cells/mm^3^. In our study, in contrast to studies done by Spacek *et al*., Lee *et al*., and Badri *et al*.,\[[@ref10][@ref11][@ref14]\] failed to demonstrate a strong sensitivity between the WHO recommended TLC \<1200 cells/mm^3^ and CD4 count \<200 cells/mm^3^. As CD4 count \<350 cells/mm^3^ is used as a cut off for anti-retroviral therapy, we further evaluated for a correlation between TLC and CD4 count \<350 cell/mm^3^. With a TLC cutoff of 1200 cells/mm^3^, while the specificity approached 100%, the sensitivity was a mere 73% \[[Table 3](#T3){ref-type="table"}\]. With TLC \<1200 cells/mm^3^ taken as the cutoff, there existed a high chance of patients being misdiagnosed and not receiving therapy. An increased cut off for TLC improved the sensitivity with marginal lowering of specificity. With a TLC cutoff of 1500 cells/mm^3^, the sensitivity improved to 83.1% with a specificity of 88.2%, PPV of 96.5% and NPV of 44.4%. As compared to the remaining TLC cutoff shown in [Table 3](#T3){ref-type="table"}, cut off of 1500 also yielded the best sensitivity and specificity. With this cut-off, 83% of the patients with CD4 count \<350 cells/mm^3^ were identified. More individuals requiring therapy were identified with this raised cutoff value. The ROC curve was plotted with TLC cut off of 1500 cells/mm^3^ and area under the curve was 0.8, which was more significant than the remaining cutoffs used. Similar higher TLC cutoff values have been used in studies by Jacobson *et al*.,\[[@ref15]\] where he used a TLC \<1900 cells/mm^3^ as cutoff to predict CD4 count \<350cells/mm^3^. Kumaraswamy and his colleagues\[[@ref16]\] observed that with a TLC, \<1400 cells/mm^3^, 73% of patients with CD4 cell counts \<200 cells/mm^3^ (sensitivity: 73%, specificity: 88%, PPV: 76%, NPV: 86%) were identified. With a TLC \<1700 cells/mm^3^, 70% of patients with a CD4 cell count of \<350 cells/mm^3^, requiring initiation of therapy for opportunistic infection, were identified. In contrast, some studies have shown TLC to be an imperfect predictor of CD4 count.\[[@ref7][@ref17]\] Nonetheless, the authors have recommended TLC be used in areas with limited access to CD4 count until a cheaper alternative is found. We did not find a statistically significant correlation for TLC as a predictor for CD4 \<500 cells/mm^3^. We hypothesized this to be due to majority of our patients having a CD4 count \<350 cells/mm^3^. Our study helps to identify majority of patients with a CD4 count \<350 cells/mm^3^ who require anti-retroviral therapy as per current WHO guidelines using a TLC cutoff of 1500 cell/mm^3^. Larger studies with patients with a wider range of CD4 counts are required. The utility of TLC as a predictor for CD4 count still holds good in resource-limited settings.

CONCLUSION {#sec1-5}
==========

We conclude that TLC is a useful and suitable surrogate for predicting CD4 count \<350 cells/mm^3^. However, as opposed to the WHO cut off for TLC, we recommend TLC \<1500 cells/mm^3^. With TLC \<1500 cells/mm^3^ more number of individuals requiring anti-retroviral therapy were identified. Though hemoglobin levels correlated with CD4 count, its addition to TLC did not provide surplus information. Other hematological parameters were not useful predictors of CD4 count. Larger study population along with independent studies for pregnant women are required which were the limitations in our study.

Authors contributions {#sec2-3}
---------------------

SSK and AG conceived the study, carried out the study and drafted the manuscript. VS and PC helped in its coordination. AK performed the statistical analysis of the data. SSK and AG are the guarantors of the paper. All authors read and approved the final manuscript.

Ethical approval {#sec2-4}
----------------

Ethical approval was obtained from Kasturba Hospital, Manipal University-Institutional Ethical Review board.

**Source of Support:** Nil

**Conflict of Interest:** None declared.


1. Field of the Invention
The present invention relates to an image formation device such as a printer, a facsimile, a photocopier or the like which creates images using an electronic photographic technique, and, more particularly, relates to such an image formation device which can change startup mode in a simple and easy manner.
2. Description of the Related Art
Generally, with an image formation device such as a printer, a facsimile, a photocopier or the like which creates images using an electronic photographic technique, image formation is performed by creating an electrostatic latent image according to image data, supplying a toner (which is a developer) to this electrostatic latent image so as to develop a toner image, and transferring this toner image to the medium which is to be the object of transfer. With this type of device, the toner cartridge which contains the above described toner is made so as to be installed in a removable manner; and, normally, a toner cartridge containing black toner is installed to a device which performs image formation in monochrome, while toner cartridges containing toners of a plurality of colors (for example a four color toner cartridge containing yellow Y, magenta M, cyan C, and black K) are installed to a device which performs image formation in color.
As such an image formation device, there is one (for example, the device described in Japanese Patent Laid-Open Publication 2004-233850, and the like) which can be used both as a device which performs image formation in monochrome as described above, and also as a device which performs image formation in color; and normally, based upon the contents of the toner cartridge or cartridges installed upon startup, such a device is started up as the appropriate device.
In more concrete terms, in the case of a device which has a monochrome mode in which it performs monochrome printing in a state in which a single toner cartridge of K (black) toner is installed, and a color mode in which it performs color printing in a state in which four toner cartridges are installed, one each for YMCK (yellow, magenta, cyan, and black) toner, the user decides by himself what toner cartridge or cartridges are appropriate for the mode in which he desires to start up the device and installs this appropriate toner cartridge or cartridges; and thereafter, according to requirements, he performs startup of the device by pushing a switch upon the device. It should be understood that, here, this mode which depends in this manner upon the toner cartridge or cartridges installed will be termed the startup mode.
In the same manner, when he desires to change over between these startup modes, the user performs the job of changing over to a toner cartridge or cartridges upon which he has decided by himself, so as to establish the state in which that toner cartridge or cartridges are installed which is required for that startup mode to which he desires to switch, and thereafter he performs a re-startup of the device, thus putting it into the desired startup mode.
However, with an image formation device like the one described above, there is a current tendency for the freedom in the colors and numbers of the toner cartridges which can be installed to increase, so that it may be expected that the number of startup modes of which a single image formation device is capable also will increase. Due to this, with a method such as one in which, as in the prior art, when changing over between startup modes, the user decides by himself upon the required toner cartridge or cartridges and performs the changeover, the burden upon the user becomes high, and moreover it also becomes easy for mistakes to occur. Accordingly, recently, improvement of such a device is desired in relation to changeover of the startup mode.


Fred Wilpon, the omnipresent owner of the New York Mets, has declared that 2019 will not be a rebuilding year for his team. But if it’s not that, then what is it?

Fred Wilpon couldn’t stop himself from boasting that not one of the candidates interviewed for the Mets GM job called for a rebuild. What escaped Wilpon, though, is that word splashes down quickly from interviewee to interviewee about the nature of the questions asked, along with projections about what those “right” answers to questions might be.

It becomes a game in which you or I am interviewing for a job, and we are asked something like, “Are you big on PowerPoint presentations?” So we answer with vim and vigor, “You bet I am, sir,” knowing that based our research before the interview, this is what the man wants to hear.

Presumably, Brodie Van Wagenen has either settled for or bought into Fred Wilpon’s desire to see his Mets going full bore to a spot in the playoffs. The plan is to engineer this with a top-flight rotation headed by Jacob deGrom, winning back-to-back Cy Young awards, together with Noah Syndergaard and Zack Wheeler duplicating their second-half of the season and remaining healthy over the long haul.

This alone could require a miracle, but nothing reaches the depths of reality more than how the Mets are going to support their pitching with run production, the lack of which was the bane of the Mets last season.

Consider this. DeGrom made 32 starts in 2018 with only 19 decisions. Syndergaard, 25 starts but only 17 decisions, and Wheeler 29 made starts with only 19 decisions. This means the Mets sent their best pitchers in to start a game, and on 30 occasions they came away with a game decided by the bullpen.

A bullpen that ranked 28th out of 30 major league teams in 2018 with a 4.96 ERA. So much for starting pitching if there is nothing to back it up, especially given how the game is played today with bullpentis in its veins.

The obvious next question then is, if there’s no rebuild in store by trading away one or two of the Big Three for a boatload of prospects, and the pocketbook of Fred Wilpon remains closed for significant participation in the free agent market, where is the help coming from to improve the run production of their position players?

The Mets need a major league catcher and a right-handed power bat. J.T. Realmuto, the All-Star catcher from Derek Jeter‘s Florida Marlins, fits both those needs. But as soon as you go there, you are out of Wilpon’s “no rebuild” and into trading off a package of players that most surely will include starting pitching. Would Steven Matz and Robert Gsellman satisfy Jeter?

Maybe. But the Mets will never know if they don’t ask. And therein lies the tightrope Van Wagenen must walk in trying to satisfy a frustrated fan base against a dogmatic owner. Daniel Murphy, just as an example, is an unrestricted free agent coming off a year in which he made $17.5 million. A return to where it all began with the Mets might be appealing, but will Van Wagenen even consider bringing a two-year $20 million deal for Murphy to Wilpon? Not likely.

All of which flies in the face of the Mets recovering as much as $33 million this season in insurance money for the now-retired David Wright, and Yoenis Cespedes if his double-surgery keeps him off the field for the entire 2019 season, a prospect by the way the Mets should do everything they can to ensure because of the money involved.

So, if the Mets are honestly “going for it,” how far can $33 million take them this year? Take a peek at Spotrac’s pool of 2019 MLB free agents and have fun playing GM with all that money to spend with no “new money” on the table. But know the Wilpons are already licking their chops at the prospect of lining their pockets with this money.

We always end up here with the Mets, don’t we? All dressed up and nowhere to go with a team of appealing players like Brandon Nimmo, Michael Conforto, Jeff McNeil, and of course, the Big Three. We need more boots on the ground if the Mets are (really) going to compete with the Braves and Phillies in the NL East, along with a host of teams in the NL West who will be vying once again for those coveted Wild Card spots.

The genuine wild card, though, is Brodie Van Wagenen. Is he a cream-puff or a maverick? Or (please no), will he play in-between as Sandy Alderson did in his later years as GM, accomplishing nothing but spinning the Mets wheels?

More than anything, Van Wagenen’s action or inaction will decide the fate of the 2019 Mets. As much as you, I’m looking forward to how this plays out for the Mets

Written by Steve Contursi, Editor

Share this: Tweet

Like this: Like Loading...


(function() {
  if (!this.require) {
    var modules = {}, cache = {};

    var require = function(name, root) {
      var path = expand(root, name), indexPath = expand(path, './index'), module, fn;
      module   = cache[path] || cache[indexPath];
      if (module) {
        return module;
      } else if (fn = modules[path] || modules[path = indexPath]) {
        module = {id: path, exports: {}};
        cache[path] = module.exports;
        fn(module.exports, function(name) {
          return require(name, dirname(path));
        }, module);
        return cache[path] = module.exports;
      } else {
        throw 'module ' + name + ' not found';
      }
    };

    var expand = function(root, name) {
      var results = [], parts, part;
      // If path is relative
      if (/^\.\.?(\/|$)/.test(name)) {
        parts = [root, name].join('/').split('/');
      } else {
        parts = name.split('/');
      }
      for (var i = 0, length = parts.length; i < length; i++) {
        part = parts[i];
        if (part == '..') {
          results.pop();
        } else if (part != '.' && part != '') {
          results.push(part);
        }
      }
      return results.join('/');
    };

    var dirname = function(path) {
      return path.split('/').slice(0, -1).join('/');
    };

    this.require = function(name) {
      return require(name, '');
    };

    this.require.define = function(bundle) {
      for (var key in bundle) {
        modules[key] = bundle[key];
      }
    };

    this.require.modules = modules;
    this.require.cache   = cache;
  }

  return this.require;
}).call(this);
this.require.define({"app/controllers/elements/input":function(exports, require, module){(function() {
  var CheckBox, Color, Element, Shadow, Text,
    __hasProp = {}.hasOwnProperty,
    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child; };

  Element = require('../element');

  Color = require('app/models/properties/color');

  Shadow = require('app/models/properties/shadow');

  Text = (function(_super) {

    __extends(Text, _super);

    Text.name = 'Text';

    function Text() {
      return Text.__super__.constructor.apply(this, arguments);
    }

    Text.prototype.className = 'textInput';

    Text.prototype.id = module.id + '.Text';

    Text.prototype.defaults = function() {
      var result;
      return result = {
        width: 125,
        height: 20,
        padding: 3,
        borderWidth: 1,
        borderStyle: 'solid',
        borderColor: new Color(155, 155, 155),
        boxShadow: [
          new Shadow({
            inset: true,
            x: 0,
            y: 1,
            blur: 2,
            color: new Color(0, 0, 0, 0.12)
          })
        ],
        backgroundColor: new Color.White
      };
    };

    return Text;

  })(Element);

  CheckBox = (function(_super) {

    __extends(CheckBox, _super);

    CheckBox.name = 'CheckBox';

    function CheckBox() {
      return CheckBox.__super__.constructor.apply(this, arguments);
    }

    return CheckBox;

  })(Element);

  module.exports = {
    Text: Text,
    CheckBox: CheckBox
  };

}).call(this);
;}});


Login and you can see it set up at St. Lucie COE in Stuart Florida. Since it is meant for mainly indoor use we either bungee it to the ground or tie it to a poll as shown in this picture. It works great and folds up so that it can fit in either the drawer under the couch or the bottom of the closet.


Q:

Get time between two dates in months only in PHP?

I wrote this script to tell the time in-between two dates
$term_start   = date_create("2018-01-01");
$now          = date_create(date("2019-02-01"));
$diff         = date_diff($term_start,$now);
$amount_spent = $diff->format("%y %m");
echo $amount_spent;

But I want it only in months how do I force it to output 25 instead of 1 1?

A:

If the purpose is to get the months difference between two dates then you may try the following:
<?php
$term_start   = date_create("2017-01-01");
$now          = date_create(date("2019-02-01"));
$diff         = date_diff($term_start,$now);
$amount_spent = $diff->format("%y")*12 + $diff->format("%m");
echo $amount_spent;
?>

Output:

25


Online advertising has been a hot topic for the past week or so, with Ars Technica trying out an interesting, somewhat desperate experiment wherein they blocked access to their content for people using Adblock. Of course, if this were to become some kind of movement among publishers, it would probably just spark a technological cat-and-mouse game that would surely be reminiscent of DRM cracking or iPhone jailbreaking. But in their post-mortem, Ars states that it was a worthwhile awareness campaign, and I hope that's true. But I thought it would be a good idea to try to bring the collective OSNews brainpower together and crowdsource the idea of how to raise money for a web site in an age where advertising is increasingly un-viable.

I don't think it's really relevant for society that a few websites don't profit from advertising.
The best things in life and on the internet are free. If there was no way to profit from advertising the internet would still rock. There would be less duplicated content, too.

Advertising produces no improvement at all for people's lives and it end up being a tax on consumption.
The little it does, it does it very inefficiently: for one interested person there is one thousand bothered users. It wastes bandwidth and resources too. It also messes up our subconscious.

Closing public access is however even worse: the content is there and easily deliverable to the entire world, people should not be cut out.

We haver to remember we live in a system that has defects and shortcomings and should be continually improved. This economy made perfect sense one hundred years ago, but it does not now. It's only good for physical products and services.
We are very close to have the technology needed for automatizing most of the production. People could have anything they want for free. Check out what a resource based economy would be.

I personally am an adblock user. I would not click ads if I saw them. I would not blow my money on things I don't need, so I don't want to be bothered.

As of now the only solution I see is to limit advertising by law or some technical mean to be less invasive. If everybody did it, nobody would lose money.
That or getting a real job :-)


Sizing up lung stem cells.
Mammalian lungs are comprised of conducting airways and alveoli. How the distinct epithelial linings of these two zones are differentially specified and maintained is not fully understood. In this issue of Developmental Cell, two groups find critical roles for the Hippo pathway in regulation of lung progenitor cell differentiation.


My crush and I are on the indoor swim team together. The other day I mentioned that this other guy gave me his number and said I was really pretty. My crush changed the subject really fast and got kind of huffy. Does this mean he is into me? He also mentions working out a lot.

His Answer: According to Adam T., “This could be a sign that he is jealous, usually meaning he likes you. And when a guy talks about working out, it’s often to impress a girl.”

Decoded: Bringing up other guys in front of your crush obviously pushes his buttons a little bit. It’s clear that he feels something for you or he wouldn’t get so uncomfortable when you tell him other guys are interested.

Your Move: Tell your crush how you feel. Make sure he knows that you’re not bringing up other guys with him just to make him jealous, but that he is the one you’re interested in. His actions indicate his feelings for you so use that to your benefit and find the confidence to ask him out!


<?php
/**
 * WPSEO plugin file.
 *
 * @package WPSEO\Admin\Import
 */

/**
 * Class WPSEO_Import_Settings.
 *
 * Class with functionality to import the Yoast SEO settings.
 */
class WPSEO_Import_Settings {

	/**
	 * Nonce action key.
	 *
	 * @var string
	 */
	const NONCE_ACTION = 'wpseo-import-settings';

	/**
	 * Holds the import status instance.
	 *
	 * @var WPSEO_Import_Status
	 */
	public $status;

	/**
	 * Holds the old WPSEO version.
	 *
	 * @var string
	 */
	private $old_wpseo_version;

	/**
	 * Class constructor.
	 */
	public function __construct() {
		$this->status = new WPSEO_Import_Status( 'import', false );
	}

	/**
	 * Imports the data submitted by the user.
	 *
	 * @return void
	 */
	public function import() {
		check_admin_referer( self::NONCE_ACTION );

		if ( ! WPSEO_Capability_Utils::current_user_can( 'wpseo_manage_options' ) ) {
			return;
		}

		$content = filter_input( INPUT_POST, 'settings_import' );
		if ( empty( $content ) ) {
			return;
		}

		$this->parse_options( $content );
	}

	/**
	 * Parse the options.
	 *
	 * @param string $raw_options The content to parse.
	 *
	 * @return void
	 */
	protected function parse_options( $raw_options ) {
		$options = parse_ini_string( $raw_options, true, INI_SCANNER_RAW );

		if ( is_array( $options ) && $options !== [] ) {
			$this->import_options( $options );

			return;
		}

		$this->status->set_msg( __( 'Settings could not be imported:', 'wordpress-seo' ) . ' ' . __( 'No settings found.', 'wordpress-seo' ) );
	}

	/**
	 * Parse the option group and import it.
	 *
	 * @param string $name         Name string.
	 * @param array  $option_group Option group data.
	 * @param array  $options      Options data.
	 */
	protected function parse_option_group( $name, $option_group, $options ) {
		// Make sure that the imported options are cleaned/converted on import.
		$option_instance = WPSEO_Options::get_option_instance( $name );
		if ( is_object( $option_instance ) && method_exists( $option_instance, 'import' ) ) {
			$option_instance->import( $option_group, $this->old_wpseo_version, $options );
		}
	}

	/**
	 * Imports the options if found.
	 *
	 * @param array $options The options parsed from the provided settings.
	 */
	protected function import_options( $options ) {
		if ( isset( $options['wpseo']['version'] ) && $options['wpseo']['version'] !== '' ) {
			$this->old_wpseo_version = $options['wpseo']['version'];
		}

		foreach ( $options as $name => $option_group ) {
			$this->parse_option_group( $name, $option_group, $options );
		}

		$this->status->set_msg( __( 'Settings successfully imported.', 'wordpress-seo' ) );
		$this->status->set_status( true );

		// Reset the cached option values.
		WPSEO_Options::clear_cache();
	}
}


package com.mapbox.api.matrix.v1;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.google.auto.value.AutoValue;
import com.google.gson.GsonBuilder;
import com.mapbox.api.directions.v5.DirectionsAdapterFactory;
import com.mapbox.api.directions.v5.DirectionsCriteria;
import com.mapbox.api.directions.v5.utils.FormatUtils;
import com.mapbox.api.matrix.v1.models.MatrixResponse;
import com.mapbox.core.MapboxService;
import com.mapbox.core.constants.Constants;
import com.mapbox.core.exceptions.ServicesException;
import com.mapbox.core.utils.ApiCallHelper;
import com.mapbox.core.utils.MapboxUtils;
import com.mapbox.core.utils.TextUtils;
import com.mapbox.geojson.Point;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import retrofit2.Call;

/**
 * the Matrix API returns all travel times between many points. The Matrix API will always return
 * the duration on the fastest route. Durations between points may not be symmetric (for example A
 * to B may have a different duration than B to A), as the routes may differ by direction due to
 * one-way streets or turn restrictions. The Matrix API returns durations in seconds. It does not
 * return route geometries or distances.
 *

 * This API allows you to build tools that efficiently check the reachability of coordinates from
 * each other, filter points by travel time, or run your own algorithms for solving optimization
 * problems.
 *

 * The standard limit for request are a maximum 60 requests per minute and maximum 25 input
 * coordinates. For example you can request a symmetric 25x25 matrix, an asymmetric 1x24 matrix with
 * distinct coordinates or a 12x24 where sources and destinations share some coordinates. For higher
 * volumes contact us.
 *

 *
 * @see API documentation
 * @since 2.1.0
 */
@AutoValue
public abstract class MapboxMatrix extends MapboxService<MatrixResponse, MatrixService> {

  protected MapboxMatrix() {
    super(MatrixService.class);
  }

  @Override
  protected GsonBuilder getGsonBuilder() {
    return new GsonBuilder()
      .registerTypeAdapterFactory(MatrixAdapterFactory.create())
      .registerTypeAdapterFactory(DirectionsAdapterFactory.create());
  }

  @Override
  protected Call<MatrixResponse> initializeCall() {
    return getService().getCall(
      ApiCallHelper.getHeaderUserAgent(clientAppName()),
      user(),
      profile(),
      coordinates(),
      accessToken(),
      annotations(),
      approaches(),
      destinations(),
      sources());
  }

  @Nullable
  abstract String clientAppName();

  @NonNull
  abstract String user();

  @NonNull
  abstract String coordinates();

  @NonNull
  abstract String accessToken();

  @NonNull
  abstract String profile();

  @Nullable
  abstract String sources();

  @Nullable
  abstract String annotations();

  @Nullable
  abstract String approaches();

  @Nullable
  abstract String destinations();

  @NonNull
  @Override
  protected abstract String baseUrl();

  /**
   * Build a new {@link MapboxMatrix} object with the initial values set for {@link #baseUrl()},
   * {@link #profile()}, and {@link #user()}.
   *
   * @return a {@link Builder} object for creating this object
   * @since 3.0.0
   */
  public static Builder builder() {
    return new AutoValue_MapboxMatrix.Builder()
      .baseUrl(Constants.BASE_API_URL)
      .profile(DirectionsCriteria.PROFILE_DRIVING)
      .user(DirectionsCriteria.PROFILE_DEFAULT_USER);
  }

  /**
   * This builder is used to create a new request to the Mapbox Matrix API. At a bare minimum,
   * your request must include an access token, and a list of coordinates. All other fields can
   * be left alone inorder to use the default behaviour of the API.
   *

   * By default, the directions profile is set to driving (without traffic) but can be changed to
   * reflect your users use-case.
   *

   * Note to contributors: All optional booleans in this builder use the object {@code Boolean}
   * rather than the primitive to allow for unset (null) values.
   *

   *
   * @since 1.0.0
   */
  @AutoValue.Builder
  public abstract static class Builder {

    private List<Point> coordinates = new ArrayList<>();
    private String[] annotations;
    private String[] approaches;
    private Integer[] destinations;
    private Integer[] sources;
    private Integer coordinateListSizeLimit;

    /**
     * The username for the account that the directions engine runs on. In most cases, this should
     * always remain the default value of {@link DirectionsCriteria#PROFILE_DEFAULT_USER}.
     *
     * @param user a non-null string which will replace the default user used in the directions
     *             request
     * @return this builder for chaining options together
     * @since 2.1.0
     */
    public abstract Builder user(String user);

    /**
     * Add a list of {@link Point}'s which define the points to perform the matrix on. The minimum
     * points is 2 and the maximum points allowed in totals 25. You can use this method in
     * conjunction with {@link #coordinate(Point)}.
     *
     * @param coordinates a List full of {@link Point}s which define the points to perform the
     *                    matrix on
     * @return this builder for chaining options together
     * @since 2.1.0
     */
    public Builder coordinates(List<Point> coordinates) {
      this.coordinates.addAll(coordinates);
      return this;
    }

    // Required for matching with MapboxMatrix coordinates() method.
    abstract Builder coordinates(@NonNull String coordinates);

    /**
     * This will add a single {@link Point} to the coordinate list which is used to determine the
     * duration between points. This can be called up to 25 times until you hit the maximum allowed
     * points. You can use this method in conjunction with {@link #coordinates(List)}.
     *
     * @param coordinate a {@link Point} which you'd like the duration between all other points
     * @return this builder for chaining options together
     * @since 3.0.0
     */
    public Builder coordinate(@NonNull Point coordinate) {
      this.coordinates.add(coordinate);
      return this;
    }

    /**
     * This selects which mode of transportation the user will be using to accurately give the
     * matrix durations. The options include driving, driving considering traffic, walking, and
     * cycling. Using each of these profiles will result in different durations.
     *
     * @param profile required to be one of the String values found in the
     *                {@link DirectionsCriteria.ProfileCriteria}
     * @return this builder for chaining options together
     * @since 2.1.0
     */
    public abstract Builder profile(@NonNull @DirectionsCriteria.ProfileCriteria String profile);

    /**
     * Required to call when this is being built. If no access token provided,
     * {@link ServicesException} will be thrown.
     *
     * @param accessToken Mapbox access token, You must have a Mapbox account inorder to use
     *                    the Optimization API
     * @return this builder for chaining options together
     * @since 2.1.0
     */
    public abstract Builder accessToken(@NonNull String accessToken);

    /**
     * Optionally pass in annotations to control to change which data to return.
     *
     * @param annotations 1 or more annotations
     * @return this builder for chaining options together
     * @since 4.1.0
     */
    public Builder addAnnotations(
            @Nullable @DirectionsCriteria.AnnotationCriteria String... annotations) {
      this.annotations = annotations;
      return this;
    }

    // Required for matching with MapboxMatrix annotations() method.
    abstract Builder annotations(@Nullable String annotations);

    /**
     * A semicolon-separated list indicating the side of the road from
     * which to approach waypoints in a requested route.
     * Accepts  unrestricted (default, route can arrive at the waypoint from either
     * side of the road) or  curb (route will arrive at the waypoint on
     * the  driving_side of the region).
     * If provided, the number of approaches must be the same as the number of waypoints.
     * However, you can skip a coordinate and show its position in the list with the ; separator.
     *
     * @param approaches null if you'd like the default approaches,
     *                   else one of the options found in
     *                   {@link DirectionsCriteria.ApproachesCriteria}.
     * @return this builder for chaining options together
     * @since 4.1.0
     */
    public Builder addApproaches(@Nullable String... approaches) {
      this.approaches = approaches;
      return this;
    }

    abstract Builder approaches(
            @Nullable @DirectionsCriteria.ApproachesCriteria String approaches);

    /**
     * Optionally pass in indexes to generate an asymmetric matrix.
     *
     * @param destinations 1 or more indexes as a integer, if more then one, separate with a comma
     * @return this builder for chaining options together
     * @since 2.1.0
     */
    public Builder destinations(@Nullable Integer... destinations) {
      this.destinations = destinations;
      return this;
    }

    // Required for matching with MapboxMatrix destinations() method.
    abstract Builder destinations(@Nullable String destinations);

    /**
     * Optionally pass in indexes to generate an asymmetric matrix.
     *
     * @param sources 1 or more indexes as a integer, if more then one, separate with a comma
     * @return Builder
     * @since 2.1.0
     */
    public Builder sources(@Nullable Integer... sources) {
      this.sources = sources;
      return this;
    }

    // Required for matching with MapboxMatrix sources() method.
    abstract Builder sources(@Nullable String sources);

    /**
     * Base package name or other simple string identifier. Used inside the calls user agent header.
     *
     * @param clientAppName base package name or other simple string identifier
     * @return this builder for chaining options together
     * @since 2.1.0
     */
    public abstract Builder clientAppName(@NonNull String clientAppName);

    /**
     * Optionally change the APIs base URL to something other then the default Mapbox one.
     *
     * @param baseUrl base url used as end point
     * @return this builder for chaining options together
     * @since 2.1.0
     */
    public abstract Builder baseUrl(@NonNull String baseUrl);

    /**
     * Override the standard maximum coordinate list size of 25 so that you can
     * make a Matrix API call with a list of coordinates as large as the value you give to
     * this method.
     *
     * You should only use this method if the Mapbox team has enabled your Mapbox
     * account to be able to request Matrix API information with a list of more than 25
     * coordinates.
     *
     * @param coordinateListSizeLimit the max limit of coordinates used by a single call
     *
     * @return this builder for chaining options together
     * @since 5.1.0
     */
    public Builder coordinateListSizeLimit(@NonNull Integer coordinateListSizeLimit) {
      this.coordinateListSizeLimit = coordinateListSizeLimit;
      return this;
    }

    abstract MapboxMatrix autoBuild();

    /**
     * This uses the provided parameters set using the {@link Builder} and first checks that all
     * values are valid, formats the values as strings for easier consumption by the API, and lastly
     * creates a new {@link MapboxMatrix} object with the values provided.
     *
     * @return a new instance of Mapbox Matrix
     * @since 2.1.0
     */
    public MapboxMatrix build() {
      if (coordinates == null || coordinates.size() < 2) {
        throw new ServicesException("At least two coordinates must be provided with your API"
          + " request.");
      } else if (coordinateListSizeLimit != null && coordinateListSizeLimit < 0) {
        throw new ServicesException("If you're going to use the coordinateListSizeLimit() method, "
          + "please pass through a number that's greater than zero.");
      } else if (coordinateListSizeLimit == null && coordinates.size() > 25) {
        throw new ServicesException("A maximum of 25 coordinates is the default "
          + " allowed for this API. If your Mapbox account has been enabled by the"
          + " Mapbox team to make a request with more than 25 coordinates, please use"
          + " the builder's coordinateListSizeLimit() method and pass through your account"
          + "-specific maximum.");
      } else if (coordinateListSizeLimit != null && coordinateListSizeLimit < coordinates.size()) {
        throw new ServicesException("If you're going to use the coordinateListSizeLimit() method,"
          + " please pass through a number that's equal to or greater than the size of"
          + " your coordinate list.");
      }

      coordinates(formatCoordinates(coordinates));

      sources(TextUtils.join(";", sources));
      destinations(TextUtils.join(";", destinations));
      annotations(TextUtils.join(",", annotations));
      approaches(TextUtils.join(";", approaches));

      // Generate build so that we can check that values are valid.
      MapboxMatrix matrix = autoBuild();

      if (!MapboxUtils.isAccessTokenValid(matrix.accessToken())) {
        throw new ServicesException("Using Mapbox Services requires setting a valid access token.");
      }
      return matrix;
    }

    private static String formatCoordinates(List<Point> coordinates) {
      List<String> coordinatesFormatted = new ArrayList<>();
      for (Point point : coordinates) {
        coordinatesFormatted.add(String.format(Locale.US, "%s,%s",
          FormatUtils.formatCoordinate(point.longitude()),
          FormatUtils.formatCoordinate(point.latitude())));
      }
      return TextUtils.join(";", coordinatesFormatted.toArray());
    }
  }
}


Changelog

Jan 15, 2019: I've uploaded new linux versions. Some people couldn't run the previous versions. These new versions should work.

v.1.2.9

Added: new Object Mode Constraint option in the settings. When editing an instance of an object, this will prevent selecting/editing of tiles that are not part of the object.

Changed: The Active selection key binding is now Shift+Enter. There is also a new key binding for the Object Edit mode (Enter). When you select an object instance, you can now simply press Enter to begin editing the object, or Enter to stop editing the object. You may also have to delete your keyconfig.ini file to prevent your old key bindings carrying over to the new version.

Fixed: It would not select tiles, vertices, objects that were positioned behind invisible objects.

Fixed: Deleting several hundred tiles at once would freeze the application for a while.

Fixed: Due to a nw.js bug, the Debug.log file would grow in size everytime the application is closed- Implemented workaround that removes file when starting app.

Changed: Importing prefab objects will now use the filename as their default name instead of a random number.

Fixed: Exporting the scene wouldn't work when using only imported prefabs in the scene.

Fixed: Importing a file that isn't an image for a tileset would break various tileset functionality. Files are now validated to check that they are images.

Fixed: Clicking off the input boxes in the sub-divide dialog would prevent refocusing the input boxes.

Fixed: Key bindings should now be disabled during some dialog boxes to prevent key issues.

Added: Eye icons for objects and layers in the Scene window. These can be clicked to hide/show objects.

Changed: Context menu will disable menu items for actions that are currently inaccessible. For instance, if no tiles are selected then the Faces menu item will be disabled.

Fixed: Centering camera now includes selected objects/instances.

Added: Objects now become highlighted in Scene tab when an Instance is being edited.

v.1.2.8

Added: New crocotile themed Viewcube for rotating/panning/zooming the scene. Click and drag the crocotile to rotate/pan/zoom. It can also be positioned by dragging the small white transparent circle. Also can hide/show it by right clicking the circle.

Added: New tile swapping feature. You can swap tiles by selecting tiles in the tileset window and then right-click and dragging them to the desired location. UVs of tiles in the 3d scene will get updated to the new UV locations if their UVs were inside the tile area you are repositioning.

Added: New UV Padding input boxes in the Tileset window. When you select from the tiles the corresponding UVs that get generated will be padded inwards by the amount set in the input boxes (x,y). This may be useful to prevent pixels bleeding across the edges of tiles.

Added: Tileset window now has a dropdown list for tilesets. This will allow you to pick your tilesets without having to cycle through them.

Added: Shortcut keys for cycling through Tilesets (ctrl+[ , ctrl+])

Added: Middle mouse button for toggling Active Selection mode.

Added: Mouselocking while rotating/panning/zooming.

Fix: Copying a tile's UVs to the brush (alt+rightclick in 3d scene in draw mode) would trigger a keyup for the modifier keys. This would potentially cause it to erase tiles instead of copying UVs.

Fix: Dragging onto tileset canvas would inadvertently select tiles.

v.1.2.7b

Fix: Exporting wasn't working. The updated version of nwjs that crocotile3d uses in v1.2.7 has a bug, but a workaround has been implemented now to solve the problems when exporting.

v.1.2.7

Change: nwjs version has been updated to improve compatibility on newer operating systems. Please report if you experience issues running the program.

Fix: alt-tabbing would cause keys to stop triggering due to window losing focus while keys are down. This has been fixed.

Fix: notifications for new versions of the program weren't working correctly due to caching.

Fix: Toggling double-sided mode wouldn't work for tiles that were deconstructed from an object.

Fix: Clicking Crosshair Arrows without dragging them after dragging once would add the drag again to the undo stack causing undo to be inaccurate.

v.1.2.6Change: Unregistered users can now save if the scene has 100 tiles or less (including tiles in objects). This will allow users to test the program more freely before registering.Added: Tile spacing texture option on export.Added: Power of two texture option on export.Added: Tile count info at bottom of scene window.Added: Export multiple objects (objects listed in the scene tab). To export, go to File > Export Objects.Fix: brush/eraser tool not drawing with single clicks is now fixed.

v.1.2.5

Fixed: Zooming in and out could cause the panning to move too slow or stop completely.Added: Ctrl+A will now select all faces in the scene if no faces or verts are selected.Added: Ctrl+shift+A,D to select/deselect all object instances in the scene.Changed: Pressing delete key will now also delete any object instances that are selected.Added: If a new version is available, it will notify you when you start the program.

v.1.2.4bFixed: Exporting a scene that consists only of objects would misplace the first tile of the first object.

v.1.2.4Fixed: Adjusting UVs in Active Edit mode would adjust UVs of unselected faces if their verts were selected.Added: Merge vertices option on export.Added: Save/Save As in File menu (moved other buttons into menu as well); File path is now stored so it will save to current document when saving, or open save as dialog box if you choose the Save As menu item.Added: Save As key binding; ctrl+shift+sAdded: When saving, it will show brief message when save is successful. That way if you press ctrl+s to save, you will know if it has saved.Fixed: Saving/Loading/Exporting now remembers the current directory.Fixed: Exporting scene to .obj would fail if consisted of only instances of objects.Change: Exported scenes with many objects will include each object as a separate group in the .obj file. This is useful if you are importing the .obj into another program and need to keep everything separated.Added: New export option for .MTL files. This will allow you to import .obj files into other programs and have all the textures applied correctly. This will export every texture too, and the .mtl file will reference these.

v.1.2.3Fixed: Program would become unresponsive and crash when quitting if new scene was created previously.Fixed: Selecting vertices with the marquee would sometimes not work.Fixed: Moving tiles that are a part of an object at the same time with tiles that are not a part of an object would move them in different directions.Added: Crosshair arrows can now move Objects.Added: Textures can now be double-sided by pressing number 9 on keyboard. This toggles double-sided mode on/off for the currently selected tileset. This is more of a temporary solution for those requesting the feature.

v.1.2.2Fixed: Mouse wheel wasn't working for zooming.Fixed: Resizing tileset would mess up UVs for objects.Fixed: Object points would appear larger when using a lower resolution.Added: Options to select/deselect all objects in the scene regardless of type. Accessed in the context-menu by right-clicking the 3d scene.

v.1.2.1Added: New keybinding system. Read help file for more information and also be sure to report any bugs or issues if you find any.Added: Ability to rotate selection clockwise/counter-clockwise when holding Shift key and pressing Q,E.Added: Hold space in tileset tab now allows panning of the tileset if zoomed in.Added. Option to move crosshair to an object's origin point found in an object's menu when right-clicking an instance.Added: Rename object points except for the origin.Added: Subdivide tiles into columns and rows.Added: Pixel resolution and window size can be configured in the settings.Fixed: Sometimes applying a UV to an existing tile or copying the UV from a tile would accidentally draw or erase tiles if the mouse was dragged in the process.Fixed: Moving the origin point of a prefab object would cause issues when rotating tiles immediately afterwards.Added: Experimental normal map and height map image generation of prefab objects, accessed by right-clicking objects in the Scene tab.

v.1.2.0bFixed: Scenes would fail to load prefab objects if the scene had no single tiles placed. This would prevent the scene from loading everything.

v.1.2.0Added: Objects/prefabs can be constructed from tiles in the scene. This allows a greater control over how you can build your scene/model. You can edit one instance and see those changes occur in every other instance of the object. See the documentation for a full list of features related to Objects/prefabs, and to understand how to use them.Added: Layers have been added as a way to organize your objects. These can be added/removed in the Scene tab of the tileset window, and objects listed can be dragged into them. You can show/hide a layer, effectively hiding/showing the objects within them as well.Added: Combine Tilesets option in the tileset menu. Allows combining duplicate images.Added: Skybox images are now saved and loaded with projects.Added: Hide/show Skybox setting now gets saved in the configuration.Fixed: Paint bucket tool would not handle contiguous mode around edge of a selection.Fixed: Redoing the Removal of a tileset now doesn't clear the redo states.Fixed: Issue related to undoing/redoing the loading of a tileset and copy/pasting tiles that use that tileset is now fixed.

v.1.1.0Added: Paint tab with full set of paint tools for editing tilesets. Check documentation for details on how to use these new features.Added: Documentation howto.html fileChange: version number to 1.1.0 due to the significant additions.Fix: Tile uvs wouldn't be updated in tileset window when tileset was resized, or when resize was undone/redone.Fix: Selecting a face wouldn't register if the mouse was hovering over a hidden vertex.Fix: Hidden vertices could be dragged accidentally.Change: Tileset images have their modified time cached. When refreshing, it checks if file has been modified after the cached time.Added: Auto-refresh Tilesets option in the settings. Tilesets will refresh every couple of minutes if changes have been made to the image files outside of Crocotile 3d.

v.1.0.22cFix: Replacing a tileset, switching to another tileset and then undoing would update the wrong tiles in the scene. Same case with redoing. This is now fixed.

v.1.0.22bFix: Gizmo would reposition tiles that were larger than 1 by 1 size.Fix: Moving a highlighted tile via the gizmo and then adding verts from another tile and moving via the gizmo wouldn't create separate undo states.

v.1.0.22Added: Refresh tilesets button in tileset window will refresh any tileset that was modified outside of crocotile3d program. This assumes a path to the tileset file has been located (saved scenes from previous versions of crocotile3d will need their tilesets replaced so that the paths to those files are recorded).Fix: Selecting tiles in first column of tileset wouldn't display the correct selection in the tileset window.Fix: Minimizing and then restoring tileset window would change window size.Change: Minimizing main window now also minimizes tileset window.Added: A button on main panel to toggle camera-based selection on/off and also act as a visual indicator.Fix: Undo/redo of remove tileset action wouldn't work correctly.

v.1.0.21Added: Arrows on 3d crosshair to move vertices/tiles while in edit mode. Can hold shift to move just the 3d crosshair.Added: Option in settings to turn off/on the crosshair arrows.Change: Rotating a tile UVs now readjusts size of tile if tile isn't square.Added: A message pops up if you are attempting to export with a tileset that hasn't been used in the scene.Changed: Tileset button and settings button now show an arrow to help indicate there is a menu.Fix: Sometimes the tileset window would not have the correct name in the title bar.

v.1.0.20b

Fix: Selecting multiple vertices or faces with lasso would not work.

Linux version now available!

v.1.0.20Fix: Camera far frustum plane wasn't being accounted for after orthographic projection feature was implemented. Now zooming takes into account this value, and it can be set in the settings.Fix: Sometimes every vertex would become selected if lasso selection was very small. This would happen inadvertently with occassional clicks.Fix: Copying UV(eyedropping a tile) would copy incorrectly if the tile were reversed/flipped/mirrored.Fix: Copying/applying UVs that were not square would copy/apply incorrectly.Changed: Adjusted speed camera pans when zoomed in.

v.1.0.19Fix: Some keys weren't working in the tileset input boxes.Fix: Tileset now remains pixelated when zoomed.Fix: Applying uv to reversed tile would sometimes apply incorrectly depending upon whether the edge was flipped.Added: UVs now show in the tileset window when faces are highlighted, and they can be adjusted by right clicking and dragging the corners of the UVs inside the tileset. Adjust the UV precision value to control the UV grid size that they snap to.


Microvascular changes associated with high salt intake and hypertension in Dahl rats.
This study was undertaken to determine if an active reduction in small arteriole diameters or functional closure of these vessels contributes to increased vascular resistance in inbred hypertensive Dahl salt-sensitive (SS/Jr) rats. Fluorescence microscopy was used to study the spinotrapezius muscle arteriolar network in SS/Jr fed high (7%) or low (0.45%) salt diets for 4 weeks. Dahl salt-resistant (SR/Jr) rats fed high or low salt diets were also studied to evaluate the exclusive effect of dietary salt on the microvasculature. High salt intake did not alter arterial pressure in SR/Jr, but caused marked hypertension (mean arterial pressure = 168 mm Hg) in SS/Jr. The diameter of large (arcade bridge) arterioles was significantly smaller in SS/Jr than SR/Jr, regardless of diet. The establishment of hypertension in SS/Jr was accompanied by an active diameter reduction in the intermediate (arcade) arterioles. However, there were no differences among groups in the density of perfused small arterioles or their diameters, and arteriolar density did not change with abolition of vascular tone in any group. In both strains, high salt intake reduced the passive diameter of large arterioles by 20%. Therefore, the establishment of hypertension in SS/Jr rats is associated with increased tone of proximal, but not distal, arterioles. In addition, distal arteriole rarefaction (functional or structural) does not contribute to increased spinotrapezius muscle resistance at this stage of salt-induced hypertension. The salt-induced reduction in passive arteriolar diameters suggests that high salt intake alone can alter the structural and/or mechanical properties of the arteriolar wall.


Q:

Rails Heroku Issue: status=500 for path=/

I am trying to deploy a more or less blank Rails app to Heroku, but I keep getting the "We're sorry but something went wrong" message..
The only error-ish line in the Heroku logs is this:
2013-01-11T19:30:59+00:00 heroku[router]: at=info method=GET path=/ host=murmuring-sierra-7952.herokuapp.com fwd=2.111.66.39 dyno=web.1 queue=0 wait=0ms connect=3ms service=718ms status=500 bytes=643

I understand this as heroku not being able to fetch the root path..
The only thing I have done apart from creating the app is to generate a controller, blogs, with index, show, new etc. and replace the root in my routes.rb as such:
resources :blogs
root :to => "blogs#index"

and i even added
match '/' => "blogs#index"

to make sure that "/" actually points to blogs#index
It all works fine on localhost, btw
Thanks, Viggo

A:

Heroku doesn't work with sqlite3, it works with postgresql.
You should have the following inside your gemfile:
group :development, :test do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

Then run
$ bundle install
$ git push heroku master

You will find more information in heroku's own section on how to get started.